Giải Tin học 11 Chương 6: Chương trình con và lập trình có cấu trúc
Giải Tin học 11 Chương 6: Chương trình con và lập trình có cấu trúc
Haylamdo biên soạn và sưu tầm lời giải Tin học 11 Chương 6: Chương trình con và lập trình có cấu trúc hay, chi tiết được biên soạn bám sát nội dung sách giáo khoa Tin học lớp 11 giúp bạn dễ dàng trả lời câu hỏi từ đó đạt điểm cao trong các bài thi môn Tin học 11.
- 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
- Bài tập và thực hành 6
- Bài tập và thực hành 7
- Bài 19: Thư viện chương trình con chuẩn
- Bài tập và thực hành 8
- Giải bài tập Tin học 11 trang 117
Tin học 11 Bài 17: Chương trình con và phân loại
1. Khái niệm chương trình con
- 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 (được gọi ) từ nhiều vị trí trong chương trình.
- Giả sử ta có bài toán sau đây:
Hãy tính S=ab+cd+ef
Nếu như với những kiến thức chúng ta đã học trước đây. Chúng ta có thể làm như sau:
+ Sử dụng các biến để lưu kết quả của ab, cd,ef.
Tác hại: Như vậy ta sẽ phải sử dụng 3 đoạn chương trình tương đồng với nhau. Nếu không phải tính 3 lũy thừa mà là tính 1000 lũy thừa thì số lượng code sẽ rất lớn và dễ gây rối và nếu ta phát hiện có lỗi sai trong đoạn code này ta sẽ phải sửa lần lượt tất cả các đoạn code này.
Cách khắc phục: Ta sẽ viết một chương trình con để tính lũy thừa. Với x là giá trị kiểu thực còn k là thuộc kiểu nguyên.
Var j:integer; Tich:=1.0; For j:=1 to k do Tich:=Tich*x;
Khi cần tính lũy thừa thì ta chỉ cần viết tên gọi chương trình con rồi thay thế (x,k) bằng các giá trị cụ thể.
Những hàm mà chúng ta thường sử dụng trước đây như : sqrt(), upcase(), delete(),… đều là những chương trình con.
Lợi ích của việc sử dụng chương trình con:
+ Tránh được việc phải viết lặp đi lặp lại cùng một dãy lệnh nào đó.
+ Hộ trợ việc thực hiện các chương trình lớn.
+ Phục vụ cho quá trình trừu tượng hóa.
+ Mở rộng khả năng ngôn ngữ.
+ Thuận thiện cho phát triển, nâng cấp chương trình.
2. Phân loại và cấu trúc của chương trình con
a) Phân loại
Trong nhiều ngôn ngữ lập trình, chương trình con thường gồm hai loại”.
+ Hàm (function) là chương trình con thực hiện một số thoa tác nào đó và trả về một giá trị qua tên của nó. Ví dụ hàm toán học hay hàm xử lí xâu:
Sin(x) nhận giá trị thực x và trả về giá trị sin(x);
Sqrt(x) nhận giá trị x và trả về giá trị căn bậc hai của x;
+ Thủ tuc (procedure) là chưng trình con thực hiện thoa tác nhất định nhưng không trả về giá trị nào qua tên của nó. Ví dụ các thủ tục vào /ra chuẩn hay thủ tục xử lý xâu:
Write, writeln, readln, read,…
b) Cấu trúc chương trình con
Chương trình con có cấu trúc tương tự chương trình, nhưng nhất thiết phải có tên và phần đầu dùng để khai báo tên, nếu là hàm phải khai báo kiểu dữ liệu cho giá trị trả về của hàm:
<phần đầu> [<phần khai báo>] <phần thân>
Phần khai báo
Phần khai báo có thể có khai báo biến cho dữ liệu vào và ra, các hằng và biến dùng trong chương trình con.
Phần thân
Phần thân của chương trình con là dãy câu lệnh thực hiện để từ những dữ liệu vào ta nhận được dữ liệu ra hay kết quả mong muốn.
Tham số hình thức:
Các biến được khia bó cho dữ liệu vào/ra được gọi là tham số hình thức của chương trình con. Các biến được khia báo để dùng riêng tron chương trình con được gọi là biến cục bộ.
Ví dụ, trong chương trình con Luythua(x,k) ở phần 1 thì x, k là các tham số hình thức và j là biến cục bộ.
Chương trình chính và các chương trình con khác không thể sử dụng được các biến cục bộ của chương trình con, những mọi chương trình con đều sử dụng được các biến cảu chương trình chính.
c) Thực hiện chương trình con
Tham số thực sự
Để thực hiện một chương trình con, ta cần phải có lệnh gọi nó tương tự lệnh gọi hàm hay thủ tục chuẩn, bao gồm tên chương trình con với tham số là các hằng và biến chứa dữ liệu vào và ra tương ứng với các tham số hình thức đặt trong cặp ngoặc ( và ). Các hằng và biến này gọi là tham số thực sự.
Ví dụ:
Sqr(225)
Thì sqr là tên chương trình con.
225 là tham số thực hiện.
Khi thực hiện chương tình con, các tham số hình thức dùng để nhập dữ liệu vào sẽ nhận gái trị cảu tham số thực sự tương ứng, còn các tham số hình thức dùng để lưu trữ dữ liệu ra sẽ trả giá trị đó cho tham số thực sự tương ứng.
..............................................
..............................................
..............................................
Tin học 11 Bài 18: Ví dụ về cách viết và sử dụng chương trình con
1. Cách viết và sử dụng thủ tục
a) Cấu trúc của thủ tục
procedure <tên thủ tục> [(danh sách tham số)]; [<phần khai báo>] Begin [<dãy các lệh>] 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.
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.
b) Ví dụ về thủ tục
Ví dụ 1: Viết thủ tục vẽ hình chữ nhật có dạng như sau
******* * * *******
Chiều dài là 7 chiều rộng là 3.
Procedure Ve_Hcn; Begin Writeln(‘*******’); Writeln(‘* *’); Writeln(‘*******’); End;
Để sử dụng thủ tục này ta gọi Ve_Hcn;
Ví dụ 2: Viết thủ tục vẻ hình chữ nhật với chiều dài và chiều rộng được tùy chỉnh.
Procedure Ve_Hcn(chdai,chrong:integer); Var I,j:integer; Begin For i:=1 to chdai do write(‘*’); Writeln; For j:=1 to chrong-2 do Begin Write(‘*’); For i:=1 to chdai-2 do write(‘ ’); Writeln(‘*’); End; For i:=1 to chdai do write(‘*’); End;
Để sử dụng thủ tục này ta gọi Ve_Hcn(a,b);
Khi 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ể gọi là các tham số giá trị (tham trị) (Ví dụ: chdai,chrong được gọi là tham trị).
Khi gọi thủ tục Ve_Hcn(a,b) tham số chdai được thay bằng 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 biến chứa dữ liệu ra được gọi là tham số biến (hay tham biến).
Để phân biệt tham biến và tham trị, Pascal sử dụng từ khóa var để khai báo những tham biến.
Ví dụ :
Nếu không sử dụng tham biến:
program dientro; uses crt; var a,b:integer; procedure hoandoi(x,y:integer); var TG:integer; begin TG:=x; x:=y; y:=TG; end; begin clrscr; a:=5; b:=10; writeln(a:6,b:6); hoandoi(a,b); writeln(a:6,b:6); readkey; end.
Kết quả:
Hai số không hề hoán đổi cho nhau
Sử dụng tham biến :
program dientro; uses crt; var a,b:integer; procedure hoandoi(var x,y:integer); var TG:integer; begin TG:=x; x:=y; y:=TG; end; begin clrscr; a:=5; b:=10; writeln(a:6,b:6); hoandoi(a,b); writeln(a:6,b:6); readkey; end.
Kết quả:
Khi nào dùng tham biến: Khi ta muốn thay đổi giá trị các tham số truyền vào thì tra sẽ sử dụng tham biến.
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 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 chỉ khác nhau phần đầu.
Function <tên hàm>[<danh sách tham số>]:<kiểu dữ liệu>;
Trong đó kiểu dữ liệu chỉ có thể là integer, real, char, Boolean, string.
Khác với thủ tục, trong thân hàm phải có lệnh gán giá trị cho tên hàm:
<tên hàm>:=<biểu thức>;
Ví dụ 1:
Viết chưng tì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 của hai số nguyên.
program rutgon; uses crt; var TuSo,MauSo,a:integer; function UCLN(x,y:integer):integer; var sodu:integer; begin while y<>0 do begin sodu:=x mod y; x:=y; y:=sodu; end; UCLN:=x; end; begin clrscr; write('Nhap vao tu so va mau so '); readln(TuSo,MauSo); a:=UCLN(TuSo,MauSo); if a>1 then begin TuSo:=TuSo div a; MauSo:=MauSo div a; end; writeln(TuSo:5,MauSo:5); readkey; end.
Kết quả:
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 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. Viết chương trình tìm giá trị nhỏ nhất trong ba số có sử dụng hàm tìm số nhỏ nhất trong hai số.
Phân tích:
Do chỉ được sử dụng hàm tìm giá trị nhỏ nhất trong hai số. Nên ta sẽ làm như sau:
Đầu tiên sẽ tìm giá trị nhỏ nhất trong 2 số, Sau đó dùng kết quả này làm tham số cho hàm tìm giá trị nhỏ nhất với giá trị này và số còn lại.
program vdu2; uses crt; var a,b,c:real; function Min(a,b:real):real; begin if a<b then Min:=a else Min:=b; end; begin write('Nhap vao 3 so '); readln(a,b,c); writeln('So nho nhat trong ba so la ', Min(Min(a,b),c)); readln end.
..............................................
..............................................
..............................................