CHƯƠNG 6: CHƯƠNG TRÌNH CON VÀ LẬP TRÌNH CÓ CẤU TRÚC
THỦ TỤC HÀM
Bài 1:Viết thủ tục để nhập 1 xâu từ bàn phím rồi xuất
xâu ra n lần:
Program Loichao;
var s:string[50]; n:byte;
Procedure Xuatxau(xau:string;m:byte);
Var i:byte;
{******************}
Begin
for i:=1 to m do
Writeln(xau);
End;
{******************}
BEGIN
Write('Nhap xau: ');readln(s);
Write('Nhap so lan xuat ra:');readln(n);
{Goi thu tuc}
xuatxau(s,n);
readln
END.
Bài 2: Viết thủ tục vẽ 1 hình chữ nhậtcó dạng:
* * * * * *
* *
* * * * * *
Bài 3a: Viết thủ tục tính tổng của 2 số được nhập từ
bàn phím.
Áp dụng: Tính giá trị biểu thức (a+b)
2
Program TT_cong;
Var x,y,z : integer;
A : Longint;
{****************}
Procedure Cong(a,b:integer; var tong:integer);
Begin
tong := a + b;
End;
{****************}
BEGIN
Write('x='); Readln(x);
Write('y='); Readln(y);
cong(x,y,z);
A:= z*z;
Writeln('Ket qua A =',A:2);
Readln;
END.
Bài 3b: Viết hàm tính tổng của 2 số được nhập từ
bàn phím.
Áp dụng: Tính giá trị biểu thức (a+b)
2
Program Hamcong;
Var x,y : integer;
A : Longint;
{****************}
Function Cong(a,b:integer):integer;
Begin
cong := a + b;
End;
{****************}
BEGIN
Write('x='); Readln(x);
Write('y='); Readln(y);
A := cong(x,y)* cong(x,y);
Writeln('Ket qua A =',A:2);
Readln;
END.
Bài 4a: Viết thủ tục tính hiệu của 2 số được nhập từ
bàn phím.
Áp dụng: Tính giá trị biểu thức (a-b)
3
Bài 5a: Viết thủ tục tính tích của 2 số được nhập từ
bàn phím.
Bài 6a: Viết thủ tục tính thương của 2 số được nhập
từ bàn phím.
Bài 7a: Viết thủ tục chuvi và thủ tục dientich để xuất
ra màn hình chu vi và diện tích hình chữ nhật có
chiều dài và chiều rộng nhập từ bàn phím.
Bài 8a: Nhập vào giá trị của a
1
, công sai d và n (vị trí
thứ n), viết thủ tục xuất ra màn hình giá trị a
n
và tổng
của dãy từ a
1
đến a
n
Program Cap_so_cong;
Var a1,an,d,n: integer;
Procedure So_n(a1,d,n: integer);
var tam, i: integer;
Begin
tam:=a1;
for i:=1 to n-1 do
tam:=tam + d;
Writeln('Gia tri cua so thu ',n,' la: ',tam)
End;
Procedure Tong(a1,d, n: integer);
var tam1, tam2, i: integer;
Begin
tam1:= a1;
tam2:= a1;
for i:=1 to n-1 do
begin
tam1:= tam1 + d;
tam2:= tam2 + tam1;
end;
Writeln('Tong cua day so la: ',tam2);
End;
BEGIN
Write('-Nhap so hang thu 1: '); readln(a1);
Write('-Nhap cong sai : '); readln(d);
Write('-Nhap n: '); readln(n);
So_n(a1,d,n);
Tong(a1,d,n);
Readln;
END.
Bài 9a: Viết thủ tục giải phương trình bậc 1 ax+b=0.
Bài 10a : Viết thủ tục giải phương trình bậc 2
ax
2
+bx+c=0.
Bài 11a: Viết thủ tục luythua để tính a
n
, áp dụng: tính
a
m
+b
n
(a, b, m, n) được nhập từ bàn phím.
Bài 4a: Viết hàm tính hiệu của 2 số được nhập từ bàn
phím.
Áp dụng: Tính giá trị biểu thức (a-b)
3
Bài 5b: Viết hàm tính tích của 2 số được nhập từ bàn
phím.
Bài 6b: Viết hàm tính thương của 2 số được nhập từ
bàn phím.
Bài 7b: Viết hàm chuvi và hàm dientich để tính chu vi
và diện tích hình chữ nhật có chiều dài và chiều rộng
nhập từ bàn phím.
8b: Nhập vào giá trị của a
1
, công sai d và n (vị trí thứ
n), viết hàm giá trị a
n
và tổng của dãy từ a
1
đến a
n
,
Xuất kết quả ra màn hình.
Bài 11b: Viết hàm luythua để tính a
n
, áp dụng: tính
a
m
+b
n
(a, b, m, n) được nhập từ bàn phím.
Bài 12: Viết thủ tục vẽ hình chữ nhật rỗng ruột (bằng
dấu *) có chiều dài và chiều rộng nhập từ bàn phím.
Bài 13: Viết thủ tục vẽ hình chữ nhật đặc ruột (bằng
dấu *) có chiều dài và chiều rộng nhập từ bàn phím.
Bài 14a: Viết thủ tục Uper để chuyển đổi các ký tự
trong 1 xâu thành chữ hoa
14b. Viết hàm Uper để chuyển đổi 1 xâu thành chữ
hoa.
CHƯƠNG 7: TỆP VÀ THAO TÁC VỚI TỆP
Bài 1:
a. Cho 1 mảng 1 chiều A (kiểu số nguyên) gồm 10 phần tử - được nhập từ bàn phím, viết chương trình
Ghitep1 để ghi các phần tử của mảng A vào tệp C:\data1.txt. Các phần tử được ghi trên 1 dòng, mỗi phần tử
cách nhau ít nhất một khoảng trắng.
b. Từ tệp C:\data1.txt ở trên, hãy viết chương trình Doctep1 để đọc các giá trị trong tệp vào mảng B (kiểu số
nguyên). Xuất mảng B ra màn hình.
Giải:
1a:
Program Ghitep1;
Var f1:text;
a: array[1..10] of integer;
i:byte;
Begin
for i:=1 to 10 do
Begin
Write('Nhap so ',i,' : '); readln(a[i]);
End;
assign(f1,'c:\data1.txt');
rewrite(f1);
for i:=1 to 10 do
write(f1,a[i]:4);
close(f1);
End.
1b:
Program Doctep1;
Var f1:text;
a: array[1..10] of integer;
i:byte;
Begin
assign(f1,'c:\data1.txt');
reset(f1);
i:=1;
while not eof(f1) do
Begin
read(f1,a[i]);
write(a[i]:4);
i:=i+1;
end;
close(f1);
readln
End.
Bài 2:
Cho 1 mảng một chiều A(kiểu số thực) chứa tối đa 10 phần tử.
a. Viết chương trình nhập bán kính 5 hình tròn vào mảng trên, ghi dữ liệu vào tệp bankinh.txt
b. Viết chương trình đọc bán kính của 5 hình tròn từ tệp bankinh.txt. Tạo mảng 1 chiều B (kiểu số
thực) chứa thông tin là diện tích của 5 hình tròn trên. Ghi kết quả vào tệp C:\dientich.txt
Bài 3*:
Cho 2 mảng 1 chiều (kiểu số nguyên) A và B, mỗi mảng gồm 5 phần tử - chứa thông tin về độ dài 2 cạnh
của 5 hình chữ nhật. Phần tử A[i], B[i] là độ dài 2 cạnh của hình chữ nhật thứ i.
a. Viết chương trình ghitep2 để nhập độ dài các cạnh của 5 hinh chữ nhật trên và ghi dữ liệu vào têp
C:\data3.txt.
b. Viết chương trình dọc dữ liệu cuả 5 hình chữ nhật từ tệp c:\data3.txt, tính chu vi, diện tích của 5 hcn
vủa đọc. ghi kết quả vừa tính vào tệp data03.txt.
Bài 4:
Viết chương trình tạo 1 tệp chứa các số nguyên từ 1 đến 100.
Bài 5:
A. Viết chương trình tạo 1 tệp chứa các số chẵn trong khảng từ 1 đến 100.
B. Viết chương trình tạo 1 tệp chứa các số lẽ trong khảng từ 1 đến 100.
Bài 5:
Viết chương trình tạo 1 tệp chứa các số chia hết cho 2 và 5 trong khoảng từ 1 đến 100.
Dạng tệp có cấu trúc:
Bài 6:
a. Viết chương trình tạo 1 bản ghi tối đa 10 mẩu tin ghi các thông tin sau: Hoten: string[30], tuoi:byte,
thông tin được nhập từ bàn phím. Ghi bản ghi trên vào tệp C:\data10.txt.
b. Viết chương trình tạo 1 bản ghi tối đa 10 mẩu tin ghi các thông tin sau: Hoten: string[30], tuoi:byte,
thông tin của bản ghi được đọc từ tệp C:\data10.txt
Giải:
Câu a:
Program Ghitep;
Uses Crt;
Type Hocsinh=Record
Ten : String[30];
Tuoi: Byte;
End;
var F : file of Hocsinh;
Hs: array[1..10] of Hocsinh;
i,n: byte;
BEGIN
Assign(F,'C:\DATA10.txt');
Rewrite(f);
Write('Danh sach co bao nhieu hoc sinh? ');
readln(n);
For i:=1 to n do
Begin
Write('Ho va ten: '); Readln(Hs[i].Ten);
Write('Tuoi : '); Readln(Hs[i].Tuoi);
End;
for i:=1 to n do
Write(f,Hs[i]);
Close(f);
END.
Câu b:
Program Doctep;
Uses Crt;
Type Hocsinh=Record
Ten : String[30];
Tuoi: Byte;
End;
var F : file of Hocsinh;
Hs: array[1..10] of Hocsinh;
i,n: byte;
BEGIN
Assign(F,'C:\DATA10.txt');
Reset(f);
n:=0;
While not eof(f) do
Begin
n:=n+1;
read(f,Hs[n]);
end;
Close(f);
for i:=1 to 2 do
with hs[i] do
Writeln(ten,tuoi:25-length(ten));
readln;
END.