Buổi 5 Chơng trình con và phân loại 1. Khi viết chơng trình giải các bài toán lớn, phức tạp, chơng rtình thờng rất dài, gồm hàng trăm, hàng nghìn lệnh. Đọc các trơng trình dài rất khó nhận biết đợc chơng trình thực hiện đợc các công việc gì. Vì vậy, vấn đề đặt ra là phải cấu tạo chơng trình nh thế nào để cho chơng trình dễ đọc, dễ hiểu. Cách viết và sử dụng thủ tục Xét ví dụ vẽ hình chữ nhật có dạng sau: *********** * * *********** Hình chữ nhật này dễ dàng nhận đợc nhờ 3 lệnh: Writeln(***********); Writeln(* *); Writeln(***********); Nh vậy, trong một chơng trình, mỗi lần cần in ra một hình chữ nhật trên cần phải in ra 3 lênh đó. Trong chơng trình sâu đây ta đa 3 câu lênh trên vào một thủ tục cóa tên là: Ve-HCN( Vẽ hình chữ nhật ) . Mỗi lần gọi thủ tục này, một hình chữ nhật nh trên đ- ợc in ra. Có 3 lần gopị thủ tục vẽ hình chữ nhật. Program Chuongtrinh1; Procedure Ve_HCN; { Bắt đầu thủ tục } Begin Writeln(***********); Writeln(* *); Writeln(***********); End; { Kết thúc thủ tục } Begin Ve_HCN; { Gọi thủ tục Ve_HCN } Writeln; Writeln; Ve_HCN; { Gọi thủ tục Ve_HCN } Writeln; Writeln; Ve_HCN; { Gọi thủ tục Ve_HCN } End. 1. Thủ thục: Thủ tục có cấu trúc hoàn toàn giống nh một chơng trình, trừ dòng đầu tiên và dòng cuối: Phn u th tc vi t khúa: Procedure tip theo l tờn t tc nu th tc cú cha tham s thỡ sau phn tờn l dóy lnh khai bỏo cỏc tham số c vit trong dấu ( ) PROCEDURE < Tên thủ tục >[ (< Danh sách tham số >)]; [< Phần khai báo >]; BEGIN { Dãy các lệnh ( Thân thủ tục )} END; Giải thích: - PROCEDURE, BEGIN, END: là các thừ khóa. - Thủ tục bao giờ cũng bắt đầu bằng PROCEDURE kết thúc là END; Ví dụ: Procedure thutuc1; Var n:integer; Begin End; Procedure thutuc2( I , j: integer ); Begin End; Procedure thutuc3( var j: integer ); Begin End; Ví dụ chơng trìnhcon nhập vào 1 dãy số. * Program vidu1; Var a: array[1 10] of integer; n:integer; Procedure nhap; Var i:integer; Begin Write(nhap vao so phan tu); readln(n); For i:=1 to n Do readln(a[i]); End; BEGIN Nhap; END. 2. Tham sè: a. Tham sè gi¸ trÞ ( Gäi t¾t lµ tham sè ). 1 3. Biến địa phương và toàn cục Xét chươngtrình sau Program bien; Var I,j: integer; Function ham(n:integer):boolean; Var ok:boolean; i:integer; Begin End; Begin Writeln(ham(j)); End. • Những biến khai báo ở chươngtrình chính được gọi là biến toàn cục • Những biến khai báo ở trong chươngtrình chính gọi là biến địa phương -Biến toàn cục được phép sử dụng ở mọi chỗ trong chươngtrình kể cả trong các chươngtrìnhcon - Biến địa phương thì chỉ được sử dụng trong các chương trình khai báo biến đó - Biến địa phương và biến toàn cục có thể trùng tên nhau . sử dụng ở mọi chỗ trong chương trình kể cả trong các chương trình con - Biến địa phương thì chỉ được sử dụng trong các chương trình khai báo biến đó -. Writeln(ham(j)); End. • Những biến khai báo ở chương trình chính được gọi là biến toàn cục • Những biến khai báo ở trong chương trình chính gọi là biến địa phương