Bài 17. Chương trình con và phân loại

Chia sẻ bởi Võ Ngọc Lương | Ngày 10/05/2019 | 105

Chia sẻ tài liệu: Bài 17. Chương trình con và phân loại thuộc Tin học 11

Nội dung tài liệu:
















Hãy viết chương trình để tính biểu thức:
z= a/b*c/d (với a, b, c, d nhập từ bàn phím);
Sau đó đưa ra màn hình có dạng như sau:
**************************************************
* CHAO MUNG CAC BAN DEN VOI TURBO PASCAL*
**************************************************
- Nhap tu so :
- Nhap mau so :

- Nhap tu so :
- Nhap mau so :

- Ket qua (a/b)*(c/d) là:
**************************************************
* CHAO MUNG CAC BAN DEN VOI TURBO PASCAL*
**************************************************
Kiểm tra bài cũ
SGK TIN HỌC 11















Program Vi_du;
Var a,b,c,d:Integer;
z:Real;
Begin
Writeln(`****************************************************************’);
Writeln(`* CHAO MUNG CAC BAN DEN VOI TURBO PASCAL *`);
Writeln(`****************************************************************`);
Write(`- Nhap tu so : `); Readln(a);
Write(`- Nhap mau so:`); Readln(b);
Writeln;
Write(`- Nhap tu so : `); Readln(c);
Write(`- Nhap mau so:`); Readln(d);
Writeln;
If (b<>0) and (d<>0) then
Begin
z:=a/b*c/d;
Writeln(‘ - Ket qua (a/b)*(c/d) la:`,z:10:1);
End;
Else
Writeln(` - Ket qua (a/b)*(c/d) la: Khong chia duoc vi mau so = 0`);
Writeln(`****************************************************************`);
Writeln(`* CHAO MUNG CAC BAN DEN VOI TURBO PASCAL *`);
Writeln(`****************************************************************‘);
Readln;
End.
3 Câu lệnh này có sự lặp lại
3 Câu lệnh Writeln(…) có sự lặp lại
Kiểm tra bài cũ
SGK TIN HỌC 11
















?


Giả sử ngoài tính biểu thúc trên ta tính thêm 2 biểu thức:
X=(e/f)*(g/h); y:= (k/l)*(n/m); Và sau khi tính thì hiển thị lên màn hình hai biểu thức này giống biểu thức ban đầu Thì chương trình sẽ viết lại như thế nào?
Có cách nào để tránh sự lặp đi lặp lại các đoạn lệnh đó không ?
Chia bài toán trên thành các bài toán con (CTC). Sau đó tùy vào yêu cầu của bài toán mà ghép các bài toán con đó lại
Cụ thể ta chia bài toán trên như sau:
Chương trình con: thực hiện tiêu đề
Chương trình con: Thực hiện nhập tử số và mẫu số của các phân thức.
Chương trình con: Thực hiện việc chia các phân thức.
Kiểm tra bài cũ
SGK TIN HỌC 11
----------
KHÁI NIỆM
CHƯƠNG TRÌNH CON VÀ PHÂN LOẠI
LỢI ÍCH
PHÂN LOẠI
CÁC THAM SỐ
CÁCH VIẾT VÀ SỬ DỤNG THỦ TỤC
CẤU TRÚC THỦ TỤC
VÍ DỤ
VÍ DỤ
CÁCH VIẾT VÀ SỬ DỤNG HÀM
SỬ DỤNG HÀM
CẤU TRÚC HÀM
VÍ DỤ
BIẾN CỤC BỘ VÀ BiẾN TOÀN BỘ
BIẾN CỤC BỘ &
BIẾN TOÀN BỘ
SVTH: TRẦN THỊ HỒNG
GV: Trần Thị Hồng
2. Lợi ích
3. Phân loại
1. Khái niệm















1. Khái niệm
2. Lợi ích
3. Phân loại
1. Khái niệm về chương trình con:
CTC thực chất là một khối lệnh (tập các lệnh) nhằm giải quyết một bài toán con để góp phần giải quyết một bài toán lớn hơn bằng một chương trình.
.
.
.
Một bài toán lớn, phức tạp, khó giải quyết
Bài toán con 1
Bài toán con 2
Bài toán con n















1. Khái niệm
2. Lợi ích
2. Lợi ích của chương trình con:
 Chương trình dễ đọc, dễ hiểu và dễ kiểm tra phát hiện ra lỗi và sửa sai.
 Có thể giao cho nhiều người cùng viết một chương trình, mỗi người viết một CTC.
 Tránh được việc lặp đi lặp lại một nhóm lệnh nào đó.
 Thuận tiện cho việc phát triển và nâng cấp chương trình.
Việc sử dụng chương trình con có các lợi ích sau:















1. Khái niệm
2. Lợi ích
3. Phân loại
Giả sử có xâu s:=‘xin chao cac ban’. Để Hiển thị ra màn hình xâu nhận kết quả là ‘chao cac ban’ ?

CÁCH 1:
CÁCH 2 :
Var S:string;
begin
s:=`xin chao cac ban`;
delete(s,1,4);
writeln(s);
readln;
end.
Var S:string;
Begin
s:=`xin chao cac ban`;
s:=copy (s, 5, 12);
Writeln (s);
readln;
end.
3. Phân loại chương trình con:
Có 2 loại:
@ Thủ tục (Procedure):
@ Hàm (Function):















1. Khái niệm
2. Lợi ích
3. Phân loại
@ Thủ tục (Procedure): Là một CTC dùng để thực hiện một số thao tác xử lí nào đó để giải quyết một công việc cụ thể nào đó đã được chia nhỏ
@ Hàm (Function): là một chương trình con dùng để xác định một giá trị của đại lượng nào đó có kiểu dữ liệu đơn giản (Integer, real, char, boolean, string). Giá trị của đại lượng ra này được gọi là giá trị trả về của hàm
Thủ tục và hàm về cơ bản chỉ khác nhau cơ bản ở chổ hàm trả ra một giá trị đơn giản thông qua tên của hàm còn thủ tục không trả kết quả thông qua tên của nó.















1. Khái niệm
2. Lợi ích
3. Phân loại
?
Chọn chương trình con là function hay procedure
Là function khi và chỉ khi ta muốn nhận lai kết quả trả về thông qua tên hàm và đặc biệt nếu người sử dụng dùng CTC trong các biểu thức tính toán
PROGRAM tinh_tong;
Var a, b, c, d: real; m,n,p,q: integer;
TLT: real;

Function LT(x: real; k: integer) : real;
Var j: integer; tich: real;
Begin
Tich:= 1;
For i:= 1 to k do tich:= tich*x;
LT:=tich;
End;

BEGIN
Write (‘Nhap a, b, c, d, m, n, p, q ‘);
Readln(a, b, c, d, m, n, p, q);
TLT:=LT(a,n)+LT(b,m)+LT(c,p)+LT(d,q);
Writeln(‘Tong la: ‘, TLT: 8:4);
Readln
END.
PROGRAM tinh_tong;
Var a, b, c, d: real;
LT1, LT2, LT3, LT4, TLT: real;
i, m, n, p, q: integer;
BEGIN
Write (‘Nhap a, b, c, d, m, n, p, q ‘);
Readln(a, b, c, d, m, n, p, q);










LT:= LT1+ LT2 + LT3 + LT4;
Writeln(‘Tong la: ‘, TLT: 8:4); Readln
END.
LT1:=1;
For i:= 1 to n do LT1:= LT1*a;
LT2:=1;
For i:= 1 to m do LT2:= LT2*b;
LT3:=1;
For i:= 1 to p do LT3:= LT3*c;
LT4:=1;
For i:= 1 to q do LT4:= LT4*d;
GV: Trần Thị Hồng
1. Ví dụ:
2. Thủ tục
3.Tham số
Củng cố















1. Ví dụ:
2. Thủ tục
2. Thủ tục:
PROCEDURE [];
[];
BEGIN
{dãy các lệnh (thân của thủ tục) };
END;
1. Ví dụ
a. Cấu trúc
Trong đó:
PROCEDURE: Là từ khóa bắt đầu của một thủ tục.
Tên thủ tục là một định danh do người sử dụng đặt theo nguyên tắc đặt tên của TP. Bắt buộc phải có
Danh sách các tham số hình thức: có thể có hoặc không
a. Cấu trúc















1. Ví dụ:
2. Thủ tục
2. Thủ tục (tt):
b. Lời gọi thủ tục:
[];
Vd1: Có một thủ tục mà dòng đầu được viết như sau:
Procedure hoandoi (a,b:integer);
Trong chương trình lời gọi sẽ là:
hoandoi (c, f);

c, f các tham số(TS) thực sự.
Các TS này thay thế các TS hình thức
Thay thế phải đảm bảo tương ứng về vị trí và kiểu dữ liệu

a, b các tham số hình thức.
có kiểu nguyên


a. Cấu trúc
b. Lời gọi thủ tục
Vd2: Có một thủ tục mà dòng đầu được viết như sau:
Procedure ve_hcn;
Lời gọi thủ tục sẽ là: ve_hcn ;















1. Ví dụ:
2. Thủ tục
2. Thủ tục (tt):
c. Ví dụ minh họa:
Hãy viết chương trình để đưa ra màn hình 3 hình vẽ như mẫu sau:
**************************************************
* CHAO MUNG CAC BAN DEN VOI TURBO PASCAL*
**************************************************
Program Vi_du;
Procedure Tieu_de;
Begin
Writeln(`************************************************`);
Writeln(`* CHAO MUNG CAC BAN DEN VOI TURBO PASCAL *`);
Writeln(`************************************************`);
End;
Begin
Tieu_de;
Writeln(‘Chuc cac ban luon thanh cong’);
Tieu_de;
Readln;
End.
a. Cấu trúc
b. Lời gọi thủ tục
c. Ví dụ
















1. Ví dụ:
2. Thủ tục
a. Cấu trúc
b. Lời gọi thủ tục
c. Ví dụ

Kết quả
************************************************
* CHAO MUNG CAC BAN DEN VOI TURBO PASCAl *
************************************************
Chuc cac ban luon thanh cong !
Procedure Tieu_de;
Begin
Writeln(`************************************************`);
Writeln(`* CHAO MUNG CAC BAN DEN VOI TURBO PASCAL *`);
Writeln(`************************************************`);
End;
BEGIN
Tieu_de;
Writeln (‘Chuc cac ban luon thanh cong !’);
Tieu_de;
Readln;
END.
************************************************
* CHAO MUNG CAC BAN DEN VOI TURBO PASCAl *
************************************************
Hãy phân tích bài toán lớn giải n phương trình bậc 2 thành các CTC để giải bài toán đó .Xác định các CTC đó là thủ tục hay hàm.
Nhập các hệ số của ptb2
CTC: Nhập hệ số
Thủ tục
Tính Delta
CTC: Tính delta
Hàm
Kiểm tra delta
Nếu delta>0 thì PT có 2 nghiệm phân biêt:x1,x2
Nếu delta=0 thì PT có nghiệm kép x1=x2
Nếu delta<0 thì phương trình vô nghiệm
CTC: PT vô gnhiệm
Thủ tục
CTC: Tính nghiệm kép
thủ tục
CTC: Tính 2nghiệm pb
Thủ tục
B1
B2
B3















1. Ví dụ:
2. Thủ tục
PROGRAM CT3;
VAR a,b:Integer;
PROCEDURE hoan_doi (VAR x; y: Integer);
VAR tg: Integer;
BEGIN
tg:=x;
x:=y;
y:=tg;
END;
BEGIN
a:=5;
b:=10;
Writeln (a,b); {Kq trên màn hình:a=5, b=10}
hoan_doi(a,b);
Writeln(a,b); {Kq trên màn hình:a=10,b=5}
END.

Minh họa giải thuật
3.Tham số
3.Tham số















5
10
X
Y
TG
TG:=X;
X:=Y;
Giá trị các biến ban đầu: X=5, Y=10;
Sau khi hoán đổi: X=10, Y=5;
Thực hiện HĐ:
5
10
5
Minh họa giải thuật hoán đổi giá trị 2 biến:
1. Ví dụ:
b. Tham biến
a. Tham trị
3.Tham số















1. Ví dụ:
2. Thủ tục
3.Tham số
3.Tham số: Có hai loại
@ Tham số giá trị
@ Tham số biến
Khai báo tham số là tham số giá trị hay tham số biến
Tham biến khi cần ghi lại dữ liệu kết quả của việc thực hiện thủ tục.
Tham số giá trị chỉ để đưa dữ liệu vào cho thủ tục khi bắt đầu thực hiện thủ tục
?















1. Ví dụ:
2. Thủ tục
3.Tham số
a. Tham số giá trị:
* Cách khai báo tham số giá trị:
a. Tham trị
b. Tham số biến:
* Cách khai báo tham số biến:
a. Tham biến:
* Ở vị trí một tham số thực sự tương ứng với tham số biến chỉ có thể là một tên biến
* Có ghi lại kết quả của dữ liệu của việc thực hiện thủ tục

(Var danh sách tham số hình thức: tên kiểu dữ liệu)
* Một hằng hay một tên biến hay một biểu thức có thể xuất hiện ở vị trí một tham số thực sự tương ứng với tham số giá trị.
* Không ghi lại kết quả dữ liệu của việc thực hiện thủ tục
(danh sách tham số hình thức: tên kiểu dữ liệu)















1. Ví dụ:
2. Thủ tục
3.Tham số
a. Tham trị
@ Cách khai báo tham số:
 Nếu là tên kiểu dữ liệu chuẩn thì:
(danh sách tham trị : tên kiểu dữ liệu );
VD1: Procedure Giatri (a,b:integer);
VD2: Procedure Giatri1(a,b:integer; x: real);
 Nếu là tên kiểu dữ liệu do người sử dụng lập trình:
Thì phải định nghĩa kiểu dữ liệu này trước trước khi khai báo tham trị trong thủ tục .
VD: Khai báo sau là không đúng
Procedure VD (D:array[1..10] of byte; S: string[30]);
Khai báo đúng:
Type mang= array[1..10] of byte;
Xau= string[30];
Procedure VD (A:mang; S: xau);















Phân biệt sự khác nhau giữa tham số biến và tham số giá trị:
1. Ví dụ:
b. Tham biến
b. Tham biến (tt):
a. Tham trị
3.Tham số
Tham số biến
Khai báo sau từ khóa VAR trong danh sách tham số
Khi gọi thủ tục các tham số hình thức là tham biến chỉ được phép thay thế bằng các tham số thực sự cũng là biến.
Giá trị của biến có thể bị thay đổi sau khi thực hiện xong thủ tục.

Tham trị
Không khai báo sau từ khóa VAR

Khi gọi thủ tục các tham số hình thức là tham trị thì tham số thực sự có thể là một hằng hay một tên biến hay một biểu thức
Giá trị tham biến không thay đổi khi thực hiện xong thủ tục.

2. Thủ tục















1. Ví dụ:
2. Thủ tục
3.Tham số
Câu 1: Dòng đầu của thủ tục được viết:
a. Procedure , [()];
b. Procdure [()];
c. Procedure ;
d Procedure [()];
Câu hỏi trắc nghiệm:
Chọn câu đúng nhất
Củng cố















1. Ví dụ:
2. Thủ tục
3.Tham số
Câu 2: Dòng cuối của thủ tục được viết:
End
b. End.
c. End;
d. Một đáp án khác
Chọn câu đúng nhất
Củng cố















1. Ví dụ:
2. Thủ tục
3.Tham số
Câu 3: Giả sử dòng đầu của thủ tục được viêt
Procedure giatri;
Thì trong chương trình chính lời gọi thủ tục sẽ là:
a. giatri;
b. gia tri;
c. a:=giatri;
d. procedure giatri;
Chọn câu đúng nhất
Củng cố















Chọn câu đúng nhất
Câu 4 : Giá sử ta có dòng đầu thủ tục là
procedure P (Var A, B: Integer; C:integer);
Thì các tham số hình thức được hiểu như sau:
a. A, B, C đều là các tham biến
b. A, B là tham biến, C là tham trị
c. A, B, C đều là tham trị
d. Một đáp án khác.
1. Ví dụ:
2. Thủ tục
3.Tham số
Củng cố















Chọn câu đúng nhất
Câu 5: Giả sử thủ tục P ở câu 4 đã được viết và có chương trình chính như sau:
BEGIN
X:=5, Y:=9; Z:=7
{lời gọi thủ tục}
End.
Lời gọi thủ tục sẽ là
P(X, 9, X*Y);
P (2*X,Y, 10);
c. P (X, Y, Z);
d. P (X, Y; Z);
1. Ví dụ:
2. Thủ tục
3.Tham số
Củng cố















Câu 6: Có chương trình sau:
program vd;
var x,y,z:integer;
procedure hoandoi3gt ( var a,b: integer; c: integer);
Begin
a:=b;
b:=a+b;
c:=c+b;
End;
BEGIN
x:=1; Y:=3; Z: =5;
Hoandoi3gt (x, y, z);
writeln (x:5, y:5, z:5);
writeln;
END.
Kết quả hiển thị màn hình sẽ là:
a. 3 4 5
b. 3 6 5
c. 3 6 11
1. Ví dụ:
2. Thủ tục
3.Tham số
Củng cố















Câu 7: Cũng với chương trình ở câu 6 ta thêm vào chương trình chính

Thì kết quả hiển thị ra màn hình sau đúng hay sai?
3 6 5
6 9 17
program vd;
var x,y,z:integer;
procedure gt ( var a,b: integer; c: integer);
Begin
a:=b;
b:=a+b;
c:=c+b;
End;
BEGIN
x:=1; Y:=3; Z: =5;
gt (x, y, z);
writeln (x:5, y:5, z:5);
writeln;
gt (x, y, z);
writeln (x:5, y:5, z:5);
END.
1. Ví dụ:
2. Thủ tục
3.Tham số
Củng cố















1. Ví dụ:
2. Thủ tục
3.Tham số
Củng cố
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...

Người chia sẻ: Võ Ngọc Lương
Dung lượng: | Lượt tài: 0
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)