1. Kiểm tra bài cũ
Câu 1: Hãy nêu các bước để đọc tệp?
Câu 2: Hãy nêu các bước để ghi tệp?
2. BÀI TOÁN TÍNH TỔNG GIAI THỪA TGiaithua = n! + m! + p! + q!
program tong_giai_thua;
var TGiaithua, Giaithua1, Giaithua2, Giaithua3, Giaithua4: real;
n, m, p, q, i: integer;
begin
writeln(‘nhap vao cac so nguyen n, m, p, q’);
readln(n, m, p, q);
Giaithua1:=1.0;
for i:=n downto 1 do Giaithua1:=Giaithua1*i;
Giaithua2:=1.0;
for i:=m downto 1 do Giaithua2:=Giaithua2*i;
Giaithua3:=1.0;
for i:=p downto 1 do Giaithua3:=Giaithua3*i;
Giaithua4:=1.0;
for i:=q downto 1 do Giaithua4:=Giaithua4*i;
TGiaithua:= Giaithua1 + Giaithua2 + Giaithua3 + Giaithua4;
Writeln(‘tong giai thua =’, Tgiaithua:10:4’);
readln;
end.
Quan sát chương
trình này ta có
nhận xét gì???
4. 1. Khái niệm chƣơng trình con
Xét bài toán tính tổng bốn lũy thừa:
TLuythua = an + bm + cp + dq
5. Xét bài toán tính tổng bốn lũy thừa:
TLuythua = an + bm + cp + dq
program tong_luy_thua;
var TLuythua, Luythua1, Luythua2, Luythua3, Luythua4:
real;
a, b, c, d: real; n, m, p, q, i: integer;
begin
writeln(‘hay nhap du lieu theo thu tu a, b, c, d, n, m, p, q’);
readln(a, b, c, d, n, m, p, q);
Luythua1:=1.0;
Luythua1:=1.0;
for i:=1 to n do Luythua1:=Luythua1*a;
for i:=1 to n do Luythua1:=Luythua1*a;
Luythua2:=1.0;
Luythua2:=1.0;
for i:=1 to m do Luythua2:=Luythua2*b;
for i:=1 to m do Luythua2:=Luythua2*b;
Luythua3:=1.0;
Luythua3:=1.0;
for i:=1 to p do Luythua3:=Luythua3*c;
for i:=1 to p do Luythua3:=Luythua3*c;
Luythua4:=1.0;
for i:=1 to q do Luythua4:=Luythua4*d;
Luythua4:=1.0;
for i:=1 to q do Luythua4:=Luythua4*d;
TLuythua:=Luythua1 + Luythua2 + Luythua3 + Luythua4;
writeln(‘Tong luy thua =’, TLuythua:8:4); readln;
end.
program tong_luy_thua;
var TLuythua: real;
a, b, c, d: real;
n, m, p, q: integer;
function Luythua(x:real; integer):real;
function Luythua(x:real; k: k: integer):real;
var j:integer;
var j:integer;
Tich: real;
Tich: real;
begin
begin
Tich:=1.0;
Tich:=1.0;
for j:=1 to k do Tich:=Tich*x;
for j:=1 to k do Tich:=Tich*x;
Luythua:=Tich;
Luythua:=Tich;
end;
end;
begin
writeln(‘hay nhap du lieu theo thu tu
a, b, c, d, n, m, p, q’);
readln(a, b, c, d, n, m, p, q);
TLuythua:=Luythua(a, n) + Luythua(b, m) +
Luythua(c, p) + Luythua(d, q);
writeln(‘Tong luy thua =’, TLuythua:8:4);
readln;
end.
6. 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.
Lưu ý: Chương trình con chỉ cần viết một lần
nhưng có thể thực hiện nhiều lần trong chương
trình.
7. 2. Phân loại và cấu trúc của chƣơng trình con:
a. Phân loại:
Chương trình con
Hàm (function) là
chương trình con
thực hiện một số
thao tác nào đó và
trả về một giá trị qua
tên của nó
Ví dụ: Hàm sin(x) nhận giá
trị thực x và trả về giá trị
sinx.
Thủ tục (procedure) là
chương trình con thực
hiện các thao 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 xử lý xâu:
Writeln, readln, delete, insert,…
8. 2. Phân loại và cấu trúc của chƣơng trình con:
b. Cấu trúc chƣơng trình con
<phần đầu>
[<phần khai báo>]
<phần thân>
Trong đó:Phần đầu gồm có tên chương trình con, các tham
số.
Phần khai báo: khai báo biến cho dữ liệu vào, ra, các
hằng và biến cho chương trình con
Phần thân: dãy câu lệnh được viết giữa cặp begin end;
9. 2. Phân loại và cấu trúc của chƣơng trình con:
b. Cấu trúc chƣơng trình con
Lưu ý:
Tham số hình thức: là các biến được khai báo cho dữ liệu
Tham số hình
vào/ra của chương trình con.
program tong_luy_thua;
thức
Ví dụ:
var TLuythua: real;
a, b, c, d: real; n, m, p, q: integer;
function Luythua(x:real; k: integer):real;
var j:integer;
Tich: real;
begin
Tich:=1.0;
for j:=1 to k do Tich:=Tich*x;
Luythua:=Tich;
end;
begin
writeln(‘hay nhap du lieu theo thu tu a, b, c, d, n, m, p, q’);
readln(a, b, c, d, n, m, p, q);
TLuythua:=Luythua(a, n) + Luythua(b, m) + Luythua(c, p) + Luythua(d, q);
Tham số thực sự: là các hằng Tham sốchứa dữ liệu vào và
và biến thực sự
ứng với đặt trong
ra tương ứng với các tham số hình thức tham số cặp ngoặc
hình thức (x, k).
(và) khi gọi một chương trình con.
Ví dụ:
10. 2. Phân loại và cấu trúc của chƣơng trình con:
b. Cấu trúc chƣơng trình con:
Biến cục bộ là các biến được khai báo để dùng riêng cho
chương trình con.
Biến toàn cục.
Ví dụ:
program tong_luy_thua;
var TLuythua: real;
a, b, c, d: real; n, m, p, q: integer;
function Luythua(x:real; k: integer):real;
var j:integer;
Tich: real;
begin
Tich:=1.0;
for j:=1 to k do Tich:=Tich*x;
Luythua:=Tich;
end;
begin
writeln(‘hay nhap du lieu theo thu tu a, b, c, d, n, m, p, q’);
readln(a, b, c, d, n, m, p, q);
TLuythua:=Luythua(a, n) + Luythua(b, m) + Luythua(c, p) + Luythua(d, q);
Biến toàn cục là biến được khai Biếntrong chương trình
báo cục bộ.
chính.
Ví dụ:
11. 2. Phân loại và cấu trúc của chƣơng trình con:
c. Thực hiện chƣơng trình con
-Viết trong phần
Chương trình con được viết trong phầnbáo của của
khai khai báo
program tong_luy_thua;
chương trình chính.
chương trình chính
var TLuythua: real;
-Kết thúc bằng dấu ;
a, b, c, d: real; n, m, p, q: integer;
Kết thúc chương trình con là dấu chấm phẩy;
function Luythua(x:real; k: integer):real;
function Luythua(x:real; k: integer):real;
var j:integer;
var j:integer;
Tich: real; real;
Tich:
begin begin
-Lệnh gọi chương trình
Tich:=1.0;
Tich:=1.0;
con:
for j:=1 to j:=1 to k do Tich:=Tich*x;
for k do Tich:=Tich*x;
<tên chương trình
Luythua:=Tich;
Luythua:=Tich;
end; end;
con>[(<tham số thực sự>)]
begin
writeln(‘hay nhap du lieu theo thu tu a, b, c, d, n, m, p, q’);
readln(a, b, c, d, n, m, p, q);
TLuythua:=Luythua(a, n) ++ Luythua(b, m) + Luythua(c, p) + Luythua(d, q);
TLuythua:=Luythua(a, n) Luythua(b, m) + Luythua(c, p) + Luythua(d, q);
writeln(‘Tong luy thua =’, TLuythua:8:4);
Để gọi 1 chương trình con ta phải có lệnh gọi nó.
Cú pháp: <tên chương trình con>(<tham số thực sự>).
12. Ghi nhớ!
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.
Phân loại chương trình con:
+ Hàm (Function).
+ Thủ tục (Procedure).
Cấu trúc chương trình con:
<phần đầu>
[<phần khai báo>]
<phần thân>
Tham số hình thức, tham số thực số, biến
cục bộ, biến toàn cục, lệnh gọi chương
trình con.
13. Củng cố
Câu 1: Hãy chọn câu trả lời đúng nhất cho khái niệm của
chương trình con?
A. Chương trình con là một dãy lệnh mô tả một số thao tác
nhất định được thực hiện ( được gọi) từ một vị trí trong
chương trình.
B. Chương trình con là những dãy lệnh mô tả một số thao
tác nhất định được thực hiện ( được gọi) từ nhiều vị trí trong
chương trình.
C. Chương trình con là một dãy lệnh mô tả một số thao tác
nhất định được thực hiện ( được gọi) từ nhiều vị trí trong
chương trình.
D. Chương trình con là những dãy lệnh mô tả một số thao tác
nhất định được thực hiện ( được gọi) từ một vị trí trong
chương trình.
14. Củng cố
Câu 2:
Điểm khác nhau cở bản của hàm và thủ tục là
gì? Chọn câu trả lời đúng.
A. Hàm có sử dụng biến số còn thủ tục thì không có sử
dụng biến số.
B. Thủ tục khai báo trước phần thân chương trình còn
hàm thì sau phần thân chương trình.
C. Hàm sẽ trả về một giá trị thông qua tên hàm còn thủ
tục thì không.
D. Xây dựng hàm khó hơn thủ tục.
15. Củng cố
Câu 3: Cho biết điểm khác nhau giữa biến toàn cục và
biến cục bộ?