SKKN Rèn luyện kĩ năng cho học sinh khi viết chương trình con bằng ngôn ngữ lập trình pasal

SKKN Rèn luyện kĩ năng cho học sinh khi viết chương trình con bằng ngôn ngữ lập trình pasal

Trong bối cảnh toàn ngành Giáo dục và Đào tạo đang nỗ lực đổi mới phương pháp dạy học theo hướng phát huy tính tích cực chủ động của học sinh trong hoạt động học tập. Chúng ta có thể thấy định hướng đổi mới phương pháp dạy học đã được khẳng định, không còn là vấn đề tranh luận. Cốt lõi của việc đổi mới phương pháp dạy học ở trường phổ thông là giúp học sinh hướng tới việc học tập chủ động, chống lại thói quen học tập thụ động.

Tuy nhiên với bất kỳ một phương pháp nào thì giáo viên vẫn phải có một yêu cầu chung là phải hiểu rõ về bản chất của vấn đề thì từ đó mới có khả năng sử dụng một hoặc nhiều phương pháp thích hợp để truyền đạt hay gợi mở vấn đề cho học sinh.

Trong suốt quá trình giảng dạy từ khi môn Tin học được đưa vào trường phổ thông đến nay, tôi nhận thấy rằng khi giảng dạy về nội dung của Chương 6 "Chương trình con và lập trình có cấu trúc" phần lớn học sinh đều không hiểu được cách sử dụng chương trình con như thế nào khi viết chương trình mà lý do chính là có một số giáo viên cũng chỉ dạy những gì mình biết chứ cũng chưa hiểu rõ bản chất của vấn đề.

Từ những lý do trên, qua quá trình giảng dạy trên lớp bản thân tôi đã chọn đề tài “ Rèn luyện kĩ năng cho học sinh khi viết chương trình con bằng ngôn ngữ lập trình Pascal” là đề tài Sáng kiến kinh nghiệm của mình để có thể giúp cho giáo viên, học sinh hiểu rõ được vấn đề tương đối phức tạp này.

 

doc 19 trang thuychi01 12212
Bạn đang xem tài liệu "SKKN Rèn luyện kĩ năng cho học sinh khi viết chương trình con bằng ngôn ngữ lập trình pasal", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
 SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HÓA
TRƯỜNG THPT TRẦN PHÚ NGA SƠN
-----š›š›-----
SÁNG KIẾN KINH NGHIỆM
RÈN LUYỆN KĨ NĂNG CHO HỌC SINH KHI VIẾT CHƯƠNG TRÌNH CON BẰNG NGÔN NGỮ 
LẬP TRÌNH PASAL
Người thực hiện: Nghiêm Thị Nhung
Chức vụ: Giáo viên
Đơn vị công tác: Trường THPT Trần Phú 
SKKN thuộc môn: Tin học
THANH HÓA NĂM 2017MỤC LỤC
 Nội dung Trang
MỤC LỤC...
1
1. MỞ ĐẦU..
2
1.1. Lý do chọn đề tài...
2
1.2. Mục đích nghiên cứu.
2
1.3. Đối tượng nghiên cứu
2
1.4. Phương pháp nghiên cứu...
2
2. NỘI DUNG SÁNG KIẾN KINH NGHIỆM.
2
2.1. Cơ sở lý luận của sáng kiến kinh nghiệm..
2
2.2.Thực trạng của vấn đề trước khi áp dụng sáng kiến kinh nghiệm..
4
2.3. Các giải pháp đã sử dụng để giải quyết vấn đề.
4
A. Tóm tắt lí thuyết..
4
1. Khái niệm chung về chương trình con.
4
2. Cấu trúc và vị trí của chương trình con trong chương trình chính...
4
3. Biến toàn cục và biến cục bộ
6
4. Cách truyền tham số trong chương trình con...
6
5. Phân biệt cách sử dụng hàm và thủ tục
7
6. Tính đệ qui của chương trình con.
7
7. Nguyên tắc viết một chương trình con.
8
8. Phương pháp chung khi lập trình chương trình con.
8
B. Bài tập áp dụng
9
1. Một số bài tập về thủ tục..
9
2. Một số bài tập về hàm..
12
3. Một số bài tập liên quan đến thủ tục và hàm
16
2.4. Hiệu quả của sáng kiến kinh nghiệm.
16
3. KẾT LUẬN VÀ KIẾN NGHỊ
17
3.1. Kết luận.
17
3.2. Kiến nghị...
17
Tài liệu tham khảo
18
1. MỞ ĐẦU
1.1/ Lí do chọn đề tài
Trong bối cảnh toàn ngành Giáo dục và Đào tạo đang nỗ lực đổi mới phương pháp dạy học theo hướng phát huy tính tích cực chủ động của học sinh trong hoạt động học tập. Chúng ta có thể thấy định hướng đổi mới phương pháp dạy học đã được khẳng định, không còn là vấn đề tranh luận. Cốt lõi của việc đổi mới phương pháp dạy học ở trường phổ thông là giúp học sinh hướng tới việc học tập chủ động, chống lại thói quen học tập thụ động.
Tuy nhiên với bất kỳ một phương pháp nào thì giáo viên vẫn phải có một yêu cầu chung là phải hiểu rõ về bản chất của vấn đề thì từ đó mới có khả năng sử dụng một hoặc nhiều phương pháp thích hợp để truyền đạt hay gợi mở vấn đề cho học sinh.
Trong suốt quá trình giảng dạy từ khi môn Tin học được đưa vào trường phổ thông đến nay, tôi nhận thấy rằng khi giảng dạy về nội dung của Chương 6 "Chương trình con và lập trình có cấu trúc" phần lớn học sinh đều không hiểu được cách sử dụng chương trình con như thế nào khi viết chương trình mà lý do chính là có một số giáo viên cũng chỉ dạy những gì mình biết chứ cũng chưa hiểu rõ bản chất của vấn đề.
Từ những lý do trên, qua quá trình giảng dạy trên lớp bản thân tôi đã chọn đề tài “ Rèn luyện kĩ năng cho học sinh khi viết chương trình con bằng ngôn ngữ lập trình Pascal” là đề tài Sáng kiến kinh nghiệm của mình để có thể giúp cho giáo viên, học sinh hiểu rõ được vấn đề tương đối phức tạp này.
1.2/ Mục đích nghiên cứu
Góp phần thúc đẩy quá trình đổi mới phương pháp dạy học theo hướng phát huy tính tích cực, chủ động của học sinh.
Góp phần nâng cao kiến thức và khả năng thực hành cho giáo viên.
Giúp học sinh có khả năng nhận thức kiến thức và tự hoàn thiện kiến thức.
1.3/ Đối tượng nghiên cứu
Là những học sinh có lực học từ khá trở xuống trong chương trình THPT áp dụng cho khối lớp 11.
1.4/ Phương pháp nghiên cứu
Tổng hợp nghiên cứu các tài liệu liên quan đến chương trình con và các bài tập có sử dụng chương trình con.
2. NỘI DUNG 
2.1/ Cơ sở lí luận
Bản thân là một giáo viên giảng dạy môn Tin học tại trường THPT Trần Phú. Với chất lượng học sinh đầu vào thấp, bản thân tôi được phân công dạy các lớp đại trà nên học sinh có học lực khá trở xuống chiếm khoảng ¾ lớp. Vì vậy, khi dạy về “Cách viết và sử dụng chương trình con” tôi thấy rằng phần đông các em chưa hiểu rõ được bản chất của chương trình con cũng như cách xây dựng chương trình con để viết chương trình. Đa số các em chỉ hiểu một cách thụ động và không có tính tư duy, sáng tạo trong việc sử dụng chương trình con cho từng bài toán cụ thể. Các em chỉ nhớ được các chương trình con mẫu trong SGK, với những chương trình con khác hầu như các em không biết xây dựng hoặc số ít các em cũng chỉ đưa ra được những thao tác tương tự như bài mẫu. 
Khi giảng dạy về phần chương trình con (CTC) – Tin học 11 tôi nhận thấy hầu hết học sinh rất bỡ ngỡ với các khái niệm hoàn toàn mới mẻ mang tính trừu tượng như: Hàm (Function), thủ tục (Procedure), danh sách tham số, tham số giá trị (tham trị), tham số biến (tham biến), tham số hình thức, tham số thực sự, lời gọi chương trình con,
Điều làm tôi không khỏi băn khoăn đó là làm thế nào để học sinh hiểu và nắm bắt được các khái niệm này một cách hiệu quả nhất, nhằm tránh những sự hiểu lầm giữa hàm và thủ tục, giữa tham trị và tham biến, giữa tham số thực sự và tham số hình thức, giữa biến chung (biến toàn cục) và biến riêng (biến cục bộ).
Khi trình bày vấn đề này cho học sinh, tôi đã thực hiện như sau:
+ Trước hết, đặt câu hỏi chương trình con là Thủ tục (Procedure) hay Hàm (Function)? Giải quyết chương trình con là Function khi và chỉ khi thỏa mãn đồng thời các yêu cầu sau: 
– Nếu ta muốn nhận lại một và chỉ một kết quả mà thôi. 
– Kết quả phải là kiểu xác định ( kiểu vô hướng). 
– Có cần dùng tên của Hàm để viết trong các biểu thức hay không ? 
– Nếu không thỏa mãn các tính chất trên thì chương trình con là Procedure. 
Ví dụ :
Function BinhPhuong( x: real) : real; 
Begin
 	BinhPhuong := x * x; 
End; 
(*---------------------------------------------*) 
Procedure BinhPhuong( x : real; var x2: real);
 Begin 
x2:=x*x; 
End;
 Xem cách tính c= a2 + b2 
- Nếu dùng Function : c: = BinhPhuong(a) + BinhPhuong(b);
- Nếu dùng Procedure với một biến trung gian tg: 
BinhPhuong(a,tg); c:=tg; {c:=a2}
 	BinhPhuong(b,tg); c:= c+tg; {c:= a2 + b2}
+ Sau cùng, giải quyết vấn đề tham số của chương trình con. 
Giải quyết : 
– Chương trình con có cần tham số không? 
– Nếu đối tượng của chương trình con là biến toàn cục thì biến này không cần đưa vào làm tham số.
Làm như vậy tôi thấy có hiệu quả. Học sinh hiểu rõ được về bản chất của từng bài toán cụ thể, các em dễ dàng tiếp cận được những yêu cầu khó khăn hơn trong các bài toán khác nhau. Đó chính là những căn cứ để tôi viết đề tài này.
2.2/ Thực trạng vấn đề 
Chương trình con là một nội dung khó, kiến thức rộng, phương pháp nhiều đối với học sinh mà đặc biệt là kiến thức về tham số, đòi hỏi học sinh phải có khả năng tư duy, óc phán đoán để định hướng tìm phương pháp thích hợp, tuy nhiên mức độ học sinh trường THPT không đồng đều, học sinh khá giỏi chiếm tỉ lệ ít. Với học sinh có mức học khá trở xuống các em thường bỏ qua hoặc có làm thì làm không đúng, không định hình được nên viết như thế nào. Bên cạnh đó, thời lượng một tiết học sẽ không đủ để giáo viên vừa viết chương trình , vừa giảng giải và tổ chức hoạt động trong lớp học.
Như ví dụ tính bình phương ở trên, tôi đã cho lớp 11B làm thử kết quả 30/39 học sinh không làm được, 5/39 học sinh làm nhưng kết quả sai, có 4/39 em học giỏi trong lớp viết được chương trình và cho kết quả đúng.
2.3/ Giải pháp thực hiện
	Nêu ra cách chương trình giải quyết một số bài toán thường gặp trong toán học và các bài tập liên quan để học sinh hiểu rõ hơn cách viết chương trình con trong pascal từ đó có thể tự mình giải quyết các bài toán tương tự.
Bằng những kiến thức về Tin học và những kinh nghiệm của bản thân trong công tác giảng dạy bộ môn Tin học, để phát triển khả năng tư duy sáng tạo cho học sinh trong quá trình hình thành kỹ năng viết chương trình tôi đã sử dụng phương pháp gợi động cơ kích thích tính tích cực, sự sáng tạo, say mê, tìm tòi, học hỏi của học sinh qua cách xây dựng chương trình con được trình bày qua các giải pháp dưới đây:
A. Tóm tắt lý thuyết
1. Khái niệm chung về chương trình con (CTC)
	Trong khi lập trình chúng ta thường gặp những đoạn chương trình được lặp đi lặp lại nhiều lần ở những chỗ khác nhau. Để tránh rườm rà, những đoạn chương trình này được thay thế bởi các đoạn CTC tương ứng và khi cần, ta chỉ việc gọi đoạn CTC đó ra mà không phải viết lại cả đoạn chương trình đó.
	Đối với những bài toán lớn và phức tạp sẽ tương ứng với một chương trình có thể rất lớn và dài. Do đó, việc gỡ rối và hiệu chỉnh sẽ rất khó khăn. Ta có thể phân tách vấn đề phức tạp đó ra thành các vấn đề nhỏ hơn để dễ kiểm tra, gỡ rối từng khối một và sau đó ghép thành một chương trình lớn. Mỗi CTC có thể phần công cho một lập trình viên hoặc một nhóm cán bộ lập trình đảm nhiệm. Đó là ý tưởng cơ bản của lập trình có cấu trúc.
	Chương trình con là một dãy lệnh mô tả một số thao tác nhất định và có thể được thực hiện ở nhiều vị trí trong chương trình.
2. Cấu trúc và vị trí của chương trình con trong chương trình chính:
Progam Tên_chương_trình_chính; 
	Uses Khai báo thư viện sử dụng;
	Const Khai báo hằng;
	Type Khai báo kiểu dữ liệu;
	Var Khai báo biến;
Khai báo chương trình con
BEGIN {Chương trình chính}
    	Các lệnh của chương trình chính;
	Lời gọi thực hiện hàm và thủ tục;
END.
Như vậy, phần khai báo chương trình con nằm ở phần cuối phần khai báo của chương trình chính.
a. Khai báo và lời gọi thủ tục
– Khai báo:
PROCEDURE (Danh sách các tham số hình thức);{không có giá trị trả về}
{Khai báo các biến riêng của thủ tục (nếu cần)}
BEGIN 
    ;
END;
Ví dụ:
Procedure inso(n:integer);
Var i:integer;
Begin
    For i:=1 to n do
        write(i:5);
End;
– Lời gọi thủ tục
Cấu trúc: (danh sách các tham số thực);
Ví dụ: inso(6);
b. Khai báo và lời gọi hàm
– Khai báo:
FUNCTION (danh sách các tham số hình thức):;
{Khai báo các biến riêng của hàm (nếu cấn)}
BEGIN
    ;
    :=;
END;
Chú ý: Luôn có phép gán tên hàm cho giá trị để hàm trả về giá trị khi được gọi
Ví dụ: Tính tổng của 2 số nguyên x và y
Function tong(x,y:integer):integer; {Do có giá trị trả về}
var s:integer;
begin
    s:=x+y;
    tong:=s;
end;
– Lời gọi hàm:
Cấu trúc: (danh sách các tham số thực);
* Lưu ý: Lời gọi hàm khác lời gọi thủ tục ở chỗ: Lời gọi hàm phải được đặt trong một lệnh hoặc trong một lời gọi chương trình con khác còn lời gọi thủ tục thì không.
Ví dụ về lời gọi hàm: kq:=tong(4,5);
3. Biến toàn cục và biến cục bộ
Biến toàn cục là biến được khai báo trong chương trình chính. Các biến này có thể được dùng ở mọi nơi trong chương trình và tồn tại trong suốt thời gian làm việc của chương trình.
	Biến cục bộ (biến địa phương) là các biến được khai báo trong chương trình con. Các biến này chỉ được sử dụng trong phạm vi chương trình con mà nó được khai báo. Sau khi kết thúc chương trình con các biến này sẽ không tồn tại.
Ví dụ:
PROGRAM vidu;
Var a,b,c:integer; {a,b,c là 3 biến toàn cục}
PROCEDURE thutuc(n:integer);{n là tham số hình thức}
Var i:integer; {i là biến cục bộ}
Begin
    For i:=1 to 10 do write(i);
End;
BEGIN
    a:=5; b:=6; c:=8;
    thutuc( a);{a là tham số thực sự}
    thutuc( b); {b là tham số thực sự}
    thutuc( c); {c là tham số thực sự}
    readln;
END.
Trong trường hợp biến cục bộ trùng tên với biến toàn cục thì máy không bị nhầm lẫn mà sẽ thực hiện trên biến cục bộ. Biến toàn cục không bị ảnh hưởng.
4. Cách truyền tham số cho chương trình con (CTC)
CTC không cần có tham số (sau tên CTC) nếu không dùng đến chúng hoặc dùng trực tiếp biến toàn cục.
 	Khi truyền tham số các tham số trong lời gọi CTC phải đúng thứ tự và kiểu tương ứng với khi khai báo chương trình con.
Trong khi thực hiện CTC, các biến cục bộ và các tham số giá trị có thể bị thay đổi nhưng không ảnh hưởng đến các biến ở bên ngoài. Trái lại, mọi thay đổi của tham biến ở trong CTC sẽ kéo theo sự thay đổi giá trị của các tham số thực sự tương ứng ở ngoài chương trình chính. 
Khi kết thúc CTC, máy sẽ giải phóng bộ nhớ của các biến cục bộ và các đối số.
Ví dụ:
Procedure inso(a:integer; ch:char);
begin
    {các lệnh của chương trình con}
end;
{lời gọi}
inso(13,’a’); {lời gọi đúng}
inso(‘a’,13); {loi gọi sai}
inso(13);{lời gọi sai}
– Tham số hình thức (đối) là các tham số sau tên hàm và thủ tục trong khai báo.
– Tham số thực sự là các tham số sau tên hàm và thủ tục trong lời gọi.
– Tham số biến (tham biến): Là các tham số được khai báo sau từ khóa Var. Các tham số thực phải là các biến chứ không được là giá trị. Tham biến có thể được thay đổi trong chương trình con và sau khi ra khỏi chương trình con nó vẫn giữ giá trị thay đổi đó.
– Tham số giá trị (tham trị): Là các tham số được khai báo mà không đứng sau từ khóa Var. Các tham số thực có thể là các giá trị, hằng, biến. Tham trị có thể thay đổi trong chương trình con nhưng sau khi kết thúc chương trình con giá trị của nó trở về như ban đầu.
– Các tham số trong hàm luôn là các tham trị, các tham số trong thủ tục có thể là tham trị hoặc tham biến.
5. Phân biệt cách sử dụng hàm và thủ tục
Hàm khác thủ tục ở chỗ hàm trả về một giá trị cho lệnh gọi thông qua tên hàm còn thủ tục thì không.
*Dùng hàm
– Kết quả của bài toán trả về 1 giá trị duy nhất (kiểu vô hướng, kiểu string hoặc kiểu con trỏ).
– Lời gọi chương trình con cần nằm trong các biểu thức tính toán.
*Dùng thủ tục
– Kết quả của bài toán không trả về giá trị nào hoặc trả về nhiều giá trị hoặc trả về kiểu dữ liệu có cấu trúc (Array, Record, File)
– Lời gọi chương trình con không nằm trong các biểu thức tính toán.
6. Tính đệ quy của chương trình con
Một chương trình con mà trong chương trình con này lại dùng chính nó để tính toán gọi là chương trình đệ qui.
Ta xét ví dụ sau: Nhập vào một số n và tính n!
Ta đã biết n! = 1 nếu n =0 trong trường hợp n>=1 ta có n!=n*(n-1)!
Hàm tính n! như sau:
Function Giaithua(n:integer):longint;
Begin
    if n=0 then giai_thua:=1
    else Giaithua:=n*Giaithua(n-1);
End;
– Lưu ý:
+ Khi sử dụng đệ quy phải có điều kiện kết thúc đệ quy (trường hợp suy biến). Trong ví dụ ta xét điều kiện kết thúc đệ quy chính là n=0. Nếu không có điều kiện kết thúc này chương trình của ta sẽ lặp vô hạn.
+ Luôn có lời gọi đệ quy, trong trường hợp trên là lời gọi giai_thua(n-1);
7. Nguyên tắc viết một chương trình con
Một chương trình con phải viết như là modul độc lập không phụ thuộc chương trình chính.Muốn vậy phải viết theo nguyên tắc sau:
7.1. Dùng danh sách biến hình thức để nhận các dữ liệu truyền vào
CTC sử dụng dữ liệu hoặc biến của chương trình chính thông qua biến hình thức, không dùng trực tiếp các dữ liệu của chương trình chính
7.2.Biến của chương trình con
Các tên biến dùng trong chương trình con phải khai báo ở chương trình con (biến riêng), không dùng biến của chương trình chính trong chương trình con.
8. Phương pháp chung khi lập trình chương trình con là:
8.1.Trước hết hãy tạo chương trình chính cùng với các tên chương trình con
Thí dụ khi giải phương trình bậc hai, trước tiên hãy viết như sau:
PROGRAM Giai_PT_Bac2;
Begin
	DocvaTinhDelta;
	If Delta=0 then DeltaKhong
	Else
	If Delta>0 then DeltaDuong
	Else DeltaAm;
End.
 Trong đó DeltaKhong, DeltaDuong, DeltaAm là 3 tên chương trình con mà bạn sẽ hình thành tiếp theo với các khung gồm tên chương trình con cùng với hai từ khóa Begin và End; vừa đủ để khi dịch thì chương trình dịch không báo lỗi về các chương trình con này.
PROGRAM Giai_PT_Bac2;
{--------------------------------------------------------------------------}
Procedure DeltaKhong;
Begin
End;
{-------------------------------------------------------------------------}
Procedure DeltaDuong;
Begin
End;
{-------------------------------------------------------------------------}
Procedure DeltaAm;
Begin
End;
{------------------------------chương trình chính---------------------}
Begin
DocvaTinhDelta;
	If Delta=0 then DeltaKhong
	Else If Delta>0 then DeltaDuong
	Else DeltaAm;
End.
8.2. Tiếp theo mới là đến việc hoàn thiện từng chương trình con một cách riêng rẽ.
Bắt đầu cho chạy chương trình thì tôi hướng dẫn học sinh cho chạy thử dần với từng chương trình con một. Nên làm dứt điểm, làm xong từng chương trình con một. Mỗi chương trình con như vậy nên thử một vài giá trị đặc biệt để xem có lỗi về mặt thuật toán, về mặt tính toán hay không.
B. Bài tập áp dụng
Vì sáng kiến kinh nghiệm này chỉ dùng cho đối tượng là những học sinh có học lực khá trở xuống (đa số là những học sinh có lực học trung bình), cho nên những bài tập tôi đưa ra sau đây là tương đối cơ bản.
1. Một số bài tập về thủ tục
Bài tập 1. Giải và biện luận phương trình bậc nhất: ax+b=0 với a=4.5, b=13.5 và với các cặp a,b tạo bởi a=-1, a=0, a=1, b=0, b=1, b=2
Ta viết một thủ tục có nhiệm vụ giải và biện luận phương trình ax+b=0 với hai tham số a,b tùy ý và gọi thực hiện thủ tục này 10 lần ứng với các giá trị cụ thể của a,b cho trong giả thiết.
Phân tích: 
Khi gọi Giaipt(4.5,13.5); là ta yêu cầu máy thực hiện thủ tục Giaipt với tham số a=4.5 và b=13.5. Hai vòng lặp for xác định 9 cặp giá trị i,j cụ thể và cứ mỗi lần như vậy lại gọi thực hiện thủ tục Giaipt với tham số a=i, b=j tương ứng.
	For i:=-1 to 1 do
	For j:=0 to 2 do Giaipt(i,j);
Do tách riêng biệt việc giải phương trình ax+b=0 thành một thủ tục nên số lệnh trong thân chương trình chính giảm đi, nổi bật được thuật toán chính của chương trình.
Ở đây, ta chọn chương trình con Giaipt là thủ tục chứ không phải là hàm vì phương trình ax+b=0 có thể vô nghiệm hoặc vô số nghiệm (khi a=0). Thành ra ta không tìm được một giá trị thích hợp để gán cho tên hàm. Vậy kết quả giải phương trình phải xuất ra ngay trong chương trình con, đó là công việc của thủ tục.
Chương trình:
Program Bai1;{giải phương trình bậc nhất ax+b=0 bằng thủ tục}
Uses crt;
Var i,j: integer;
Procedure Giaipt (a,b:real);
Begin
	Writeln(‘giai phuong trinh:’,a:4:1,’x+’,b:4:1,’=0’);
	If a0 then writeln(‘nghiem x=’,-b/a:4:2)
	else
	If b0 then writeln(‘phuong trinh vo nghiem’)
	else writeln(‘phuong trinh vo so nghiem’);
End;
BEGIN{thân chương trình chính}
Clrscr;
Writeln(‘ket qua giai phuong trinh’);
Giaipt(4.5,13.5);
For i:=-1 to 1 do
For j:=0 to 2 do Giaipt(i,j);
Readln;
END.
Bài tập 2. Nhập vào một mảng một chiều A1,A2,,AN chứa các số nguyên sau đó sắp xếp dãy tăng rồi in ra màn hình.
Phân tích:
Có thể chia bài toán ra thành 3 công việc lớn sau:
Nhập dãy số A1,A2,,AN.
Sắp xếp dãy A1,A2,,AN tăng
In dãy A1,A2,,AN ra màn hình
Mỗi việc a,b,c thuộc về một lĩnh vực riêng nên có thể xây dựng thành các thủ tục độc lập với nhau. Để liên kết chúng lại, trong chương trình chính ta chỉ cần gọi tên các thủ tục này theo thứ tự a,b,c với các tham số thích hợp.
– Các chương trình con trên không cần trả về một giá trị cụ thể nào nên dùng thủ tục. 
– Đối với thủ tục nhập mảng cần phải giữ lại các thay đổi bên trong nên sử dụng tham số biến.
 – Đối với thủ tục sắp xếp cần giữ lại các giá trị sau khi sắp xếp nên khai báo mảng là tham số biến, số lượng phần tử không thay đổi nên dùng tham trị.
Hướng dẫn:
Khai báo một mảng chứa các số nguyên.
Nhập phần tử vào cho mảng.
Duyệt mảng và so sánh các phần tử theo giải thuật sau:
For i:=1 to N-1 do
For j:=i+1 to N do
 	If A[i] > A[j] then
	Begin
	tg:=A[i];
	A[i]:=A[j]
	A[j]:=tg;
End;
Chương trình:
Program sx_dayso;
Uses crt;
Const Nmax = 250;
Type ArrInt = Array[1..Nmax] of integer;
Var 
A: ArrInt; N: integer;
Procedure Nhap_Mang(var A: ArrInt; var N: integer; ten:char);{Nhập N giá trị vào mảng A với tên mảng là ten}
Var i: integer;
Begin
Write(‘Nhap day’,ten,’.’);
For i:=1 to N do
Begin
Write(ten,’[‘,i,’]=’); 
Readln(A[i]);
End;
End;
Procedure Sap_tang(var A: ArrInt; N: integer);
Var i, j,tg: integer;
Begin
For i:=1 to N-1 do
For j:=i+1 to N do
 	If A[i] > A[j] then
	Begin
	tg:=A[i];
	A[i]:=A[j]
	A[j]:=tg;
End;
Procedure Xuat_mang(A: ArrInt; N: integer; ten:char);{Hiện N giá trị của mảng A ra màn hình}
Var i: integer;
Begin
Writeln(‘Day’,ten,’nhu sau:’);
For i:=1 to N do Write(A[i]: 10:1);Writeln
End;
BEGIN
Clrscr;
Write(‘so luong so cua day A,N=’); readln(N);
Nhap_mang(A,N,’A’);
Sap_tang(A,N);
Xuat_mang(A,N,’A’)
Readln
END.
Thủ tục Nhap_mang có 3 tham số hình thức là A, N và ten. Nhiệm vụ của nó là nhập dữ liệu cho mảng A gồm N phần tử. Tương tự, thủ tục Sap_tang có nhiệm vụ sắp xếp N phần tử của dãy A thành 

Tài liệu đính kèm:

  • docskkn_ren_luyen_ki_nang_cho_hoc_sinh_khi_viet_chuong_trinh_co.doc