bài 18 tin hoc 11
Post on 18-Jul-2015
508 Views
Preview:
TRANSCRIPT
Viết chương trình xuất ra màn
hình hình chữ nhật có dạng:
**********
* *
**********
1
procedure Ve_HCN;
begin
Writeln(‘**********’);
Writeln(‘* *’);
Writeln(‘**********’);
end;
2
function LT(x,y: integer): integer
var t, i: integer;
begin
t:= 1;
for i:= 1 to n do
t:= t*x;
LT:= t;
end.
3
1. Các viết và sử dụng thủ tục
procedure Ve_HCN;
begin
Writeln(‘**********’);
Writeln(‘* *’);
Writeln(‘**********’);
end;
Program VD_thutuc1;
procedure Ve_HCN;
begin
Writeln(‘**********’);
Writeln(‘* *’);
Writeln(‘**********’);
end;
Begin
Ve_HCN;
Writeln;
Ve_HCN;
Writeln;
Ve_HCN;
End.
4
1. Cách viết và sử dụng thủ tục
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ệnh>]
end;
Trong đó:
Phần đầu thủ tục: gồm tên procedure và tên thủ tục, danh sách
tham số (nếu có).
Phần khai báo: xác định các hằng, kiểu, biến và 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: viết giữa cặp tên dành riêng begin và end.
Trong phần khai báo
gồm những khai báo
gì?
5
Quan sát VD_thuctuc1/96 +
VD_thutuc2/98 cho biết:
Input và Output của 2 chương
trình.
Tên thủ tục, danh sách tham
số, phần khai báo, các dãy
lệnh.
Vị trí và cách gọi thủ tục trong
chương trình chính.
6
Program VD_thutuc2;Uses crt;var a,b: byte;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
beginwrite(‘ * ’);for i:=1 to chdai-2 do write(‘ ‘);writeln(‘ * ’);
end;For i:=1 to chdai Do write(‘ * ’);
writeln;
End;BEGIN
clrscr; Ve_HCN(25,10);Writeln; a:=5 ; b:=10; Ve_HCN(a,b);readln;
END.
Khi cần gọi đến thủ tục ta cần gọi tên
của nó kèm theo danh sách tham số
(nếu có)
Vị trí của chương trình
con: nằm sau phần khai
báo và trước phần thân
chương trình chính
Vị trí và cách gọi thủ tục
7
2. Tham số và cách truyền tham số
Tham số tại nơi gọi: tham số thực
Tham số tại nơi được gọi: tham số hình thức.
Kiểu tham số
hình thức
Khai báo Giá trị của tham số thực tương ứng
sau khi thực thi chương trình con
Tham số giá trị
(Tham trị)
Không có
VAR
Giữ nguyên giá trị ban đầu như trước
khi gọi chương trình con.
Tham số biến
(Tham biến)
Có VAR Lấy giá trị kết quả của chương trình
con.
Procedure Ve_HCN( chdai,chrong:integer)
Procedure Hoan_Doi( var x, y:integer)
8
Nhóm quan sát 2 chương trình Gv demo
và đọc tham khảo SGK (VD_thambien1
và VD_thambien2 /99,100) cho biết:
-Hai chương trình trên có sử dụng
chương trình con hay không? Và cho
biết chương trình con đó thực hiện
nhiệm vụ gì?(nếu có).
-Xác định tham số giá trị và tham biến
trong hai chương trình vừa demo? (nếu
có).
-Phân biệt tham số giá trị và tham số
biến?
7 phút
9
3. Cách viết và sử dụng hàm
Cấu trúc của hàm:
Function <tên hàm>[(<danh sách tham số>)]:<kiểu dữ liệu >;
[<phần khai báo>]
begin
[<dãy các lệnh>]
<tên hàm>:= <biểu thức>
end;
Kiểu dữ liệu trả về có thể gồm những
kiểu nào?
Kiểu dữ liệu chỉ có thể là kiểu dữ liệu chuẩn: integer, real,
char, boolean, string.
<tên hàm>:= <biểu thức> câu lệnh gán giá trị cho
tên hàm10
VD: Viết chương trình rút gọn phân số
Ví dụ: Nhập: 6/10 => ra 3/5
* INPUT : Nhập phân số a/b;
* OUTPUT : Phân số T/M- Trong đó: T = a/UCLN(a,b);
M = b/UCLN(a,b);
Viết chương trình con thực hiện tìm UCLN(a,b) và gọi nó khi tính T, M
trong chương trình chính.
11
Program tgps;
Uses crt;
Var tu,mau,T,M : integer;
Function UCLN( a,b :integer) : integer;
Begin
While a<> b do
if a>b then a := a-b else b:=b-a;
UCLN := a;
end;
BEGIN
Write(‘ Nhap vao tu so vµ mau so:’); readln(tu,mau);
T:= tu div UCLN(tu,mau) ; M := mau div UCLN(tu,mau);
Writeln(‘ Phan so toi gian = ’, T, ‘ / ’, M);
Readln;
END.
Write(‘Nhap vao tu so va mau so:’);
T := 6 div M := 10 divUCLN(6,10) UCLN(6,10);
Writeln(‘ Phan so toi gian = ’, 3, ‘ / ’, 5);
Readln;
END.
BEGIN
Readln(tu,mau);
USCLN=2;USCLN=2;
Nhap vao tu so va mau so: 6 10
Phan so toi gian = 3/5
2 2
12
So sánh sự giống và khác nhau
của thủ tục và hàm
13
14
Giống nhau:
Đều là chương trình con, có cấu
trúc giống một chương trình.
Đều có thể chứa các tham số,
cùng tuân theo các quy định về
khai báo và sử dụng các loại
tham số này. (Có thể không có
tham số).
15
Thủ tục Hàm
Thủ tục bắt đầu bằng
procedure.
Đầu hàm bắt đầu bằng từ khóa function
HGàm luôn trả về một giá trị thuộc kiểu
xác định thông qua tên hàm. (các kiểu
dữ liệu đơn giản: integer, real, boolean,
char, string).
Phải chỉ ra kết quả của hàm thuộc kiểu
dữ liệu nào.
Trong thân hàm thường có câu lệnh gán
giá trị cho tên hàm.
Khác nhau:
Các nhóm xem ví dụ 2: Minbaso
(SGK/102) xác định:
• Tên hàm, danh sách tham số, kiểu dữ
liệu của hàm?
• Biến toàn cục và biến cục bộ (nếu
có)?
• Hs giải thích: Min(Min(a,b),c) ?
• Cho biết hàm trên trả về kết quả gì?
Cho ví dụ?
16
17
Mời bạn nhấp vào
hình
Trắc nghiệm
Câu 1: Nói về cấu trúc của một chương trình con,
khẳng định nào sau đây là không đúng?
A. Phần đầu và phần thân nhất thiết phải có,phần
khai báo có thể có hoặc không;
B. Phần khai báo có thể có hoặc không tùy thuộc
vào từng chương trình cụ thể;
C. Phần đầu có thể có hoặc không có;
D. Phần đầu nhất thiết phải có để khai báo tên
chương trình con;
Câu 2: Để khai báo hàm trong Pascal bắt đầu bằng từ khóa:
A. Function B. Var C. Procedure D. Program
Câu 3: Sự khác biệt cơ bản giữa hàm và thủ tục:
A. Hàm có sử dụng biến số còn thủ tục thì không có biếnsố;
B. Xây dựng hàm khó hơn thủ tục;
C. Hàm sẽ trả về một giá trị thông qua tên của hàm còn
thủ tục thì không;
D. Thủ tục khai báo trước phần thân chương trinh còn
hàm thì sau phần thân chương trình;
Trắc nghiệm
Câu 4: Có một hàm được định nghĩa như sau:
Function ABC(m, n: byte): byte;
Var x, y, z: byte;
Begin
…….
ABC:= z;
End;
Hãy chọn lời gọi hàm hợp lệ:
A. k:= ABC(2,5) + ABC(3,7) + ABC(4);
B. k:= ABC(7);
C. k:= ABC(5) + ABC(9);
D. writeln(ABC(ABC(5,4),9));
Trắc nghiệm
Câu 5: Giả sử ta có phần đầu thủ tục:
Procedure VD(var N, M: integer; E: real);
Thì nhận định nào sau đây là đúng:
A. N, M và E là các tham trị;
B. N, M là tham trị, E là tham biến;
C. N, M là tham biến, E là tham trị;
D. N, M và E là các tham biến;
Trắc nghiệm
top related