
- Home
- Lớp 1,2,3
- Lớp 1
- Giải Toán Lớp 1
- Tiếng Việt Lớp 1
- Lớp 2
- Giải Toán Lớp 2
- Tiếng Việt Lớp 2
- Văn Mẫu Lớp 2
- Lớp 3
- Giải Toán Lớp 3
- Tiếng Việt Lớp 3
- Văn Mẫu Lớp 3
- Giải Tiếng Anh Lớp 3
- Lớp 4
- Giải Toán Lớp 4
- Tiếng Việt Lớp 4
- Văn Mẫu Lớp 4
- Giải Tiếng Anh Lớp 4
- Lớp 5
- Giải Toán Lớp 5
- Tiếng Việt Lớp 5
- Văn Mẫu Lớp 5
- Giải Tiếng Anh Lớp 5
- Lớp 6
- Soạn Văn 6
- Giải Toán Lớp 6
- Giải Vật Lý 6
- Giải Sinh Học 6
- Giải Tiếng Anh Lớp 6
- Giải Lịch Sử 6
- Giải Địa Lý Lớp 6
- Giải GDCD Lớp 6
- Lớp 7
- Soạn Văn 7
- Giải Bài Tập Toán Lớp 7
- Giải Vật Lý 7
- Giải Sinh Học 7
- Giải Tiếng Anh Lớp 7
- Giải Lịch Sử 7
- Giải Địa Lý Lớp 7
- Giải GDCD Lớp 7
- Lớp 8
- Soạn Văn 8
- Giải Bài Tập Toán 8
- Giải Vật Lý 8
- Giải Bài Tập Hóa 8
- Giải Sinh Học 8
- Giải Tiếng Anh Lớp 8
- Giải Lịch Sử 8
- Giải Địa Lý Lớp 8
- Lớp 9
- Soạn Văn 9
- Giải Bài Tập Toán 9
- Giải Vật Lý 9
- Giải Bài Tập Hóa 9
- Giải Sinh Học 9
- Giải Tiếng Anh Lớp 9
- Giải Lịch Sử 9
- Giải Địa Lý Lớp 9
- Lớp 10
- Soạn Văn 10
- Giải Bài Tập Toán 10
- Giải Vật Lý 10
- Giải Bài Tập Hóa 10
- Giải Sinh Học 10
- Giải Tiếng Anh Lớp 10
- Giải Lịch Sử 10
- Giải Địa Lý Lớp 10
- Lớp 11
- Soạn Văn 11
- Giải Bài Tập Toán 11
- Giải Vật Lý 11
- Giải Bài Tập Hóa 11
- Giải Sinh Học 11
- Giải Tiếng Anh Lớp 11
- Giải Lịch Sử 11
- Giải Địa Lý Lớp 11
- Lớp 12
- Soạn Văn 12
- Giải Bài Tập Toán 12
- Giải Vật Lý 12
- Giải Bài Tập Hóa 12
- Giải Sinh Học 12
- Giải Tiếng Anh Lớp 12
- Giải Lịch Sử 12
- Giải Địa Lý Lớp 12
Trang Chủ ›
Lớp 11›
Giải Bài Tập Tin Học 11›
SGK Tin Học 11›
Bài 18. Ví dụ về cách viết và sử dụng chương trình con SGK Tin Học 11 - Bài 18. Ví dụ về cách viết và sử dụng chương trình con
ví Dự VỂ CÁCH VIẾT VÀ SỬ DỤNG §18. CHƯỚNG TRÌNH CON Các ngôn ngữ lập trình đều có các quy tắc viết và sử dụng chương trình con. Trong mục này, ta xét cách viết và sử dụng chương trình con trong Pascal. 1. 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: ‘ * * ■k * * * * * * Ta có thể vẽ hình chữ nhật trên với ba câu lệnh: writelnC* ******<); writeln(' * * ') ; jwritelnC* ******»); Như vậy, trong một chương trình, mỗi khi cần vẽ một hình chữ nhật như trên, ta cần phải đưa vào ba câu lệnh này. Trong chương trình sau, ta đưa ba câu lệnh trên vào một thủ tục có tên là Ve_Hcn (vẽ hình chữ nhật). Mỗi khi cần vẽ một hình chữ nhật ta đưa vào một câu lệnh gọi thủ tục đó. Chương trình VDthutucl gọi thủ tục Ve_Hcn ba lần để vẽ ba hình chữ nhật. program VD_thutucl; procedure Ve_Hcn; {Bat dau thu tuc} begin writelnC* ******.). writeIn('* *'); writeln('* * * * * * *'); end; {Ket thuc thu tuc} begin Ve Hen; {goi thu tuc Ve_Hcn} writeln;writeln; {de each 2 -dong} Ve_Hcn; {goi thu tuc Ve_Hcn} ‘writeln;writeln; Ve_Hcn; {goi thu tuc Ve_Hcn} end. Cấu trúc của thủ tục Thủ tục có cấu trúc như sau: procedure [()]; [] begin [] end; Phần đầu thủ tục gồm tên dành riêng procedure, tiếp theo là tên thủ tục. Danh sách tham số có thể có hoặc không có. Phần khai báo dùng để xác định các hằng, kiểu, biến và cững có thể xác định các chương trình con khác được sử dụng trong thủ tục. Thủ tục Ve_Hcn ở trên không khai báo hằng, biến hay chương trình con nào. Dãy câu lệnh được viết giữa cặp tên dành riêng begin và end tạo thành thân của thủ tục. Chú ý: Sau tên dành riêng end kết thúc chương trình chính là dấu chấm (.) còn sau end kết thúc thủ tục là dấu chấm phẩy (:). Các thủ tục, nếu có, phải được khai báo và mô tả trong phần khai báo của chương trình chính, ngay sau phần khai báo các biến. Khi cần thực hiện, ta phải viết lệnh gọi thủ tục tương tự như các thủ tục chuẩn. Ví dụ về thủ tục Thủ tục Ve_Hcn trong ví dụ trên chỉ vẽ được hình chữ nhật với kích thước cố định là 7x3. Giả sử chương trình cần vẽ nhiều hình chữ nhật với kích thước khác nhau. Để thủ tục Ve_Hcn có thể thực hiện được điều đó, cần có hai tham số cho dữ liệu vào là chiều dài và chiều rông. Khi đó phần đầu của thủ tục được viết như sau: procedure Ve_Hcn(chdai,chrong:integer); Khai báo này có nghĩa thủ tục Ve_Hcn sẽ được thực hiện để vẽ hình chữ nhật có kích thước tuỳ theo giá trị của các tham số chdai, chrong và giá trị của các tham số chdai và chrong là nguyên (integer). Chương trình, sau đây mô tả đầy đủ thủ tục Ve_Hcn với các tham số chdai, chrong và sử dụng thủ tục này để vẽ các hình chữ nhật có kích thước khác nhau. program VD_thutuc2; uses crt; var a, b, i: integer; procedure Ve_Hcn(chdai, chrong: integer); var i, j: integer'; ■ begin {ve canh tren cua hinh chu nhat} for i:= 1 to chdai do write ('*') ; writeln; for j:=l to chrong-2 do {ve 2 canh ben} begin write ('*') ; for i:=l to chdai-2 do write (' ') ; writeln ('*') ; end; {ve canh duoi} for i:=l to chdai do write ('*'); writeln; end; begin {bat dau chuông trinh chinh} clrscr; {ve hinh chu nhat kích thuoc 25x10} Ve_Hcn (25,10) ; writeln; writeln; {de each 2 dong} {ve hinh chu nhat kích thuoc 5x10} Ve_Hcn(5,10); readln; clrscr;, {Ve 4 hinh chu nhat: hinh dau tien co kích thuoc 4x2, moi hinh sau co kích thuoc gap doi hình truoc } a:=4; b:=2; for i:=1 to 4 do begin Ve_Hcn (a,'b) ; readln; clrscr; a:=a*2; b:= b*2; end; readln; end. Trong lệnh gọi thủ tục, các tham số hình thức được thay bằng các tham số thực sự tương ứng là các giá trị cụ thể được gọi là các tham số giá trị (gọi tắt là tham trị). Các tham số chdai, chrong của thủ tục Ve_Hcn là tham trị. Trong lệnh gọi thủ tục Ve_Hcn{5, 3) (vẽ hình chữ nhật kích thước 5x3) tham số chdai được thay bởi số nguyên 5, tham số chrong được thay bởi số nguyên 3. Còn trong lời gọi thủ tục Ve_Hcn(ạ, b) vẽ hình chữ nhật kích thước axb, tham số chdai được thay bởi giá trị hiện thời của biến a, tham số chrong được thay bởi giá trị hiện thời của biến b. Trong lệnh gọi thủ tục, các tham số hình thức được thay bằng các tham số thực sự tương ứng là tên các biến chứa dữ liệu ra được gọi là các tham số biên (gọi tắt là tham biến). Để phân biệt tham biến và tham trị, Pascal sử dụng từ khoá var để khai báo những tham số biến. Ví dụ, thủ tục Hoan_doi trong chương trình sau đổi giá trị của hai biến. Vì cả hai biến đều chứa dữ liệu ra nên cần sử dụng từ khoá var để khai báo cho cả hai biến. program VD_thambienl; uses crt; var a,b: integer; procedure Hoan_doi(var x,ỵ: integer); var TG: integer; begin TG:= x; X: = y ; y: = TG; end; begin clrscr; a:=5; b:=10; writeln(a:6,b:6); Hoan_doi(a, b); writeIn(a:6,b:6); end. Khai báo sau xác định X và y là hai tham biến kiểu nguyên: var x,y: integer; Trong lệnh gọi Hoan_doi(a, b) các tham biến X và y được thay thế bởi các biến nguyên tương ứng a và b. Giá trị của các biến này bị thay đổi khi thực hiện các lệnh: TG : —3 Â 3 ĩ =k) 7 ồ * =TG ĩ Do vậy, sau khi thực hiện thủ tục Hoandoi, biến a sẽ nhận giá trị của biến b và biến b nhận giá trị của biến a. Nếu giá trị của a là 5 còn giá trị của b là 10 thì trên màn hình có hai dòng: 5 10 10 5 Chương trình sau cho thấy sự khác nhau khi chương trình con dùng tham số giá trị và tham số biến (có và không khai báo với từ khoá varỴ. program VD_thambien2; uses crt; var a, b: integer; procedure Hoan_doi(x: integer; var y: integer); var TG: integer; begin TG:=x; x:=y; y:=TG; end; begin c 1 r s c r; a:=5; b:=10; writeln(a:6, b:6); Hoan_doi(a,b); writeln(a:6, b:6); end. Khi chương trình thực hiện, sẽ nhận được kết quả: 5 10 5 5 2. Cách viết và sử dụng hàm Điểm khác nhau cơ bản giữa thủ tục và hàm là việc thực hiện hàm luôn trả về giá trị kết quả thuộc kiểu xác định và giá trị đó được gán cho tên hàm. Hàm có cấu trúc tương tự như thủ tục, tuy nhiên có khác nhau phần đầu. Khai báo phần đầu một hàm như sau: function [ () ]: ; trong đó, kiểu dữ liệu là kiểu dữ liệu của giá trị mà hàm trả về và chỉ có thể là các kiểu integer, real, char, boolean, string. Cũng giống như thủ tục, nếu hàm không có tham số hình thức thì không cần danh sách tham số. Khác với thủ tục, trong thân hàm cần có lệnh gán giá trị cho tên hàm: : = ‘, Ví dụ 1 Xét chương trình thực hiện việc rút gọn một phân số, trong đó có sử dụng hàm tính ước chung lớn nhất (ƯCLN) của hai số nguyên. program Rutgon_Phanso; uses crt; var TuSo, MauSo, a: integer; function UCLN(x, ỵ; integer): integer; {bat dau ham UCLN} var sodu: integer; begin while yO0 do begin sodu:= X mod y; x:= y; y:= sodu; end; UCLN:=x; end; {het ham UCLN} begin clrscr; write('Nhap tu so, mau so vao! '); readln(TuSo, MauSo); a:=UCLN(TuSo, MauSo); if a>l then begin TuSo:= TuSo div a; MauSo:= MauSo div a; end; writeln(TuSo:5, MauSo:5); end. Ghi chú: Trong chương trình này, các biến TuSo, MauSo và a là các biến toàn cục, còn biến sodu là biến cục bộ. Sử dụng hàm Việc sử dụng hàm hoàn toàn tương tự với việc sử dụng các hàm chuẩn, khi viết lệnh gọi gồm tên hàm và tham số thực sự tương ứng với các tham số hình thức. Lệnh gọi hàm có thể tham gia vào biểu thức như một toán hạng và thậm chí là tham số của lời gọi hàm, thủ tục khác, ví dụ: A: = 6*Ucln(TuSo,MauSo)+1; Ví dụ 2 Chương trình sau cho biết giá trị nhỏ nhất trong ba số nhập từ bàn phím, trong đó có sử dụng hàm tìm số nhỏ nhất trong hai số. program Minbaso; var a, b, c: real; {Ham tim so nho nhat trong hai so a va b} function Min(a,b:real):real; begin if a<b then Min:=a else Min:=b; end; begin write('Nhap vao ba so: '); readln(a,b,c); writeln('So nho nhat trong ba so la: Min(Min(a,b), c) ) ; readln end.
Các bài học tiếp theo
- Bài tập và thực hành 6
- Bài tập và thực hành 7
- Bài đọc thêm 3. Ai là lập trình viên đầu tiên?
- Bài 19. Thư viện chương trình con chuẩn
- Bài tập và thực hành 8
- Bài đọc thêm 4. Âm thanh
- 1. Một số phép toán thường dùng
- 2. Giá trị phép toán lôgic
- 1. Môi trường Turbo Pascal
- 2. Một số tên dành riêng
Các bài học trước
- Bài 17. Chương trình con và phân loại
- Bài 16. Ví dụ làm việc với tệp
- Bài 15. Thao tác với tệp
- Bài 14. Kiểu dữ liệu tệp
- Bài 13. Kiểu bản ghi
- Bài tập và thực hành 5
- Bài 12. Kiểu xâu
- Bài tập và thực hành 4
- Bài tập và thực hành 3
- Bài 11. Kiểu mảng
SGK Tin Học 11
- CHƯƠNG I. MỘT SỐ KHÁI NIỆM VỀ LẬP TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH
- Bài 1. Khái niệm lập trình và ngôn ngữ lập trình
- Bài đọc thêm 1. Bạn biết gì về các ngôn ngữ lập trình?
- Bài 2. Các thành phần của ngôn ngữ lập trình
- Bài đọc thêm 2. Ngôn ngữ Pascal
- CHƯƠNG II. CHƯƠNG TRÌNH ĐƠN GIẢN
- Bài 3. Cấu trúc chương trình
- Bài 4. Một số kiểu dữ liệu chuẩn
- Bài 5. Khai báo biến
- Bài 6. Phép toán, biểu thức, câu lệnh gán
- Bài 7. Các thủ tục chuẩn vào/ra đơn giản
- Bài 8. Soạn thảo, dịch, thực hiện và hiệu chỉnh chương trình
- Bài tập và thực hành 1
- CHƯƠNG III. CẤU TRÚC RẼ NHÁNH VÀ LẶP
- Bài 9. Cấu trúc rẽ nhánh
- Bài 10. Cấu trúc lặp
- Bài tập và thực hành 2
- CHƯƠNG IV. KIỂU DỮ LIỆU CÓ CẤU TRÚC
- Bài 11. Kiểu mảng
- Bài tập và thực hành 3
- Bài tập và thực hành 4
- Bài 12. Kiểu xâu
- Bài tập và thực hành 5
- Bài 13. Kiểu bản ghi
- CHƯƠNG V. TỆP VÀ THAO TÁC VỚI TỆP
- Bài 14. Kiểu dữ liệu tệp
- Bài 15. Thao tác với tệp
- Bài 16. Ví dụ làm việc với tệp
- CHƯƠNG VI. CHƯƠNG TRÌNH CON VÀ LẬP TRÌNH CÓ CẤU TRÚC
- Bài 17. Chương trình con và phân loại
- Bài 18. Ví dụ về cách viết và sử dụng chương trình con(Đang xem)
- Bài tập và thực hành 6
- Bài tập và thực hành 7
- Bài đọc thêm 3. Ai là lập trình viên đầu tiên?
- Bài 19. Thư viện chương trình con chuẩn
- Bài tập và thực hành 8
- Bài đọc thêm 4. Âm thanh
- PHỤ LỤC A
- 1. Một số phép toán thường dùng
- 2. Giá trị phép toán lôgic
- PHỤ LỤC B
- 1. Môi trường Turbo Pascal
- 2. Một số tên dành riêng
- 3. Một số kiểu dữ liệu chuẩn
- 4. Một số thủ tục và hàm chuẩn
- 5. Câu lệnh rẽ nhánh và lặp
- 6. Câu lệnh with
- 7. Một số thông báo lỗi
- PHỤ LỤC C
- Câu lệnh rẽ nhánh và lặp trong C++