Giáo trình nhập môn tin học - Phần III Pascal - Pdf 13


TRƯỜNG ĐẠI HỌC XÂY DỰNG
KHOA CÔNG NGHỆ THÔNG TIN
  
GIÁO TRÌNH

MÔN HỌC: NHẬP MÔN TIN HỌC

PHẦN III – NGÔN NGỮ LẬP TRÌNH PASCAL -2
Giảng viên: ĐÀO TĂNG KIỆM
Bộ môn : TIN HỌC XÂY DỰNG
Trong những năm đầu khi bắt đầu xuất hiện ngôn ngữ lập trình, người ta chưa thiết lập được
cấu trúc Chương trình con. Trong quá trình phát triển các ngôn ngữ đã có, cùng với nhu cầu
của người sử dụng, những tiện lợi mà chương trình con mang lại, sự phát triển các ngôn ngữ
đã có và khi xây dựng ngôn ngữ lạp trình mới đều hướng đến việc tổ chức chương trình con.
Ưu điểm khi sử dụng cấu trúc chương trình con:
- Cấu trúc chương trình chính trở nên gọn, mạch lạc, dễ hiểu.
- Không lặp lại các phần tương tự.
- Vì là một mô đun độc lập, chương trình con có thể sử dụng nhiều lần trong một
chương trình hoặc ở các chương trình khác nhau.
- Dễ kiểm tra, theo dõi trong quá trình thử nghiệm.
2. Đặc điểm của Chương trình con:
- Là một đơn vị chương trình độc lập, hoàn chỉnh, cũng bao gồm 3 phần: tên chương trình,
phần khai báo và phần thân. Chương trình con có thể giải quyết một vấn đề trọn vẹn và
được sử dụng nhiều lần qua lời gọi nó trong chương trình chính.
- Toàn bộ các Chương trình con đặt ở cuối phần khai báo trong chương trình chính.
- Các biến trong chương trình con chỉ có tính chất cục bộ (chỉ có tác dụng trong bản thân
chương trình đó). Trong chương trình con có thể sử dụng tất cả các lệnh như chương trình
chính.
- Thứ tự khai báo các chương trình con không quan trọng nếu các chương trình độc lập với
nhau. Khi các chương trình con gọi đến nhau thì phải xếp theo một trật tự nào đó nếu. Ví dụ
chương trình con A gọi đến chương trình con B thì B phải khai báo trước A.
- Trong Pascal có 2 loại chương trình con: chương trình con dạng hàm (Function) và
chương trình con dạng thủ tục (Procedurre).
- Chương trình con chỉ được tham chiếu đến nếu nó được gọi từ chương trình chính.

Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal -2 GVC: Đào Tăng Kiệm

Bộ môn Tin học Xây dựng
3


Khai báo
các
Chương
trình con
-
Nội dung
các
chương
trình con
Phần khai báo
của chương
trình chính

BEGIN
Các lệnh ;
Lời gọi chương trình con;
……
END.

Phần thân
của

F2 = (7.a-c).x + b
2
. x
2
+ (a-b). xy
F3 = c.x + (a+c). x
2
– (a
2
+b
2
). xy
F4 = (a/2).x + 5b. x
2
– 120.b. xy
- Chúng ta nhận thấy các hàm có 1 cấu trúc giống nhau có thể tổng quát hóa qua công thức :
F= a1.x + a2. x
2
+a3. xy
Trong đó a1, a2, a3 có các giá trị khác nhau trong các hàm F1, F4. Chúng ta thiết lập một
chương trình con dạng Function để tính cho một hàm “đại diện”, và sau đó gọi chúng ra tính
cho các hàm F1 F4 như sau:
- Chương tình con tính cho một hàm F bất kỳ:
Nội dung Giải thích
Function F ( a1, a2, a3 : real) : real;
a1,a2, Ten : các tham số hình
thức
Var x,y : real ;
Khai báo 2 biến x,y lấy tên
trùng với tên trong CT chính

Gọi 4 lần CTcon tính hàm,
mỗi lời gọi tính cho một hàm,
ví dụ để tính F1 thay các tham
số hình thức bằng các tham số
thực sự như sau: a1= a;
a2=5*b ;a3=a+b;
Readln ;
END.
Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal -2 GVC: Đào Tăng Kiệm

Bộ môn Tin học Xây dựng
5

2. Thủ tục - Procedure:
 Đặc điểm của thủ tục: có thể dùng để tính cho bài toán bất kỳ.
- Tên của chương trình con là một tên bất kỳ, theo cách đặt tên của Pascal.
- Thủ tục có thể tính và xuất cho nhiều kết quả.
 Cấu trúc chương trình con dạng thủ tục:
Procedure Tên_thủ_tục ( Danh_sách_tham_số_hình thức) ;
{ Phần khai báo các biến cục bộ của thủ tục}
Begin
Các câu lệnh;
. . . .
End;
 Ví dụ: Viết chương trình con nhập dữ liệu cho ma trận X bất kỳ có kích thước m
hàng, n cột.
Procedure Nhap_ma_tran ( Var m,n: integer; Var X :MT) ;

6

Khi sử dụng và tạo ra tham số chúng ta cần phải xác định:
- Các dữ liệu nào từ bên ngoài cần truyền đến chương trình con hoặc các dữ liệu mà chương
trình con sau khi tính toán cần lấy ra sử dụng tiếp.
- Đặt tên cho tham số
- Những dữ liệu nào sẽ bị chương trình con thay đổi
- Loại tham số trong danh sách (tham trị hay tham biến)
 Tham số hình thức là các tham số được khai báo ngay sau tên của hàm và thủ tục, đặt
trong cặp ngoặc tròn. Nó là các tên giả định đại diện cho các đại lượng nào đó của
các biến/trị đưa vào hoặc các trị cần đưa ra trong chương trình, nó là các biến cục bộ
của CT Con.
Danh sách tham số hình thức là tập hợp của nhiều nhóm, mỗi nhóm phải cùng loại và kiểu,
các nhóm ngăn cách nhau bởi dấu chấm phẩy; còn trong một nhóm có thể có nhiều tên ngăn
cách nhau bằng dấu phẩy.
Dạng : (Nhóm 1 :kiểu; Nhóm 2: kiểu …);
 Ví dụ: Procedure Tong_MT ( m,n: interger; A,B: VT2; var C: VT2);
Trong ví dụ trên, danh sách tham số hình thức có 3 nhóm, nhóm 1 và 2 là tham trị, nhóm 3
là tham biến. Nhóm 1 có kiểu nguyên, nhóm 2 và nhóm 3 có kiểu VT2, là một kiểu loại
mảng đã khai báo trước đó.
Trong danh sách tham số hình thức chỉ có 2 loại : Tham biến và tham trị.
 Tham biến: là các tên trong phần khai báo của tham số hình thức có chữ Var ở
trước, đó là các tham số truyền theo kiểu biến. Với kiểu truyền này, địa chỉ chứa các
biến trước khi truyền vào CTCon và sau khi ra khỏi CTCon chung một vùng, do vậy
nếu trong chương trình con làm thay đổi giá trị của nó thì ra khỏi CTC nó vẫn giữ
nguyên giá trị đã bị thay đổi.
Thông thường, tham biến dùng khai báo cho các dữ liệu cần chương trình con thay đổi và
giữ lại sự thay đổi đó, ví dụ các dữ liệu, kết quả cần tính toán. Sử dụng tham biến sẽ tiết
kiệm bộ nhớ.
 Tham trị: là các tên trong phần khai báo của tham số hình thức không có chữ Var ở

và kiểu.
- Với tham trị : có thể truyền theo hằng, biến,biểu thức.
- Với tham biến: chỉ truyền dữ liệu theo kiểu biến.
- Tên của tham số hình thức và tham số thực sự có thể giống nhau
Ví dụ:
Tham số hình thức Truyền -Tham số thực sự
( m,n: interger; A,B: VT2; var C: VT2); ( m, n, A, B, C);
(10, 5, X, Y, Z)

III. Lời gọi chương trình con
Chương trình con được dùng (tham chiếu đến) qua lời gọi của chương trình chính tại những
chỗ cần thực hiện chương trình con. Số lần gọi là tùy ý, và mỗi lần gọi, danh sách tham số
thực sự truyền vào danh sách tham số hình thức có thể khác nhau. Lời gọi CTC là một câu
lệnh độc lập.
 Dạng : Tên_chương trình_con ( Danh_sách_tham_số_thực_sự);
Chú ý : Lời gọi hàm có thể đứng độc lập hoặc tham gia trong một vế của biểu thức gán ( lời
gọi hàm).
Khi gặp lời gọi chương trình con, chương trình chính sẽ chuyển đến thực hiện CTCon, thay
tham số thực sự tương ứng với tham số hình thức và thực hiện CTCon, sau khi thực hiện
xong, kết quả trả về chương trình chính thông qua các tham số và trở về chương trình chính
tại câu lệnh ngay sau lời gọi chương trình con.
 Ví dụ: Minh họa cho tham biến, tham trị và thực hiện lời gọi chương trình con
Program Tham_bien;
Var X,Y : integer ;
{ Chương trinh con}

Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal -2 GVC: Đào Tăng Kiệm

Bộ môn Tin học Xây dựng
8

trình con, sự khác nhau duy nhất là hai tham số hình thức A,B mà sau này được truyền vào
bằng X,Y, ở chương trình con 1 khai báo dạng tham biến, còn ở chương trình con 2 khai
báo là tham trị.
Kết quả sau khi chạy 2 chương trình trên:
Chương trình Tham biến Chương trình Tham trị
Gia tri cua X,Y truoc khi goi chuong trinh con 1 1 1 1
Gia tri cua X,Y trong chuong trinh con 2 3 2 3
Gia tri cua X,Y truoc khi goi chuong trinh con 2 3 1 1
Từ đó có thể thấy việc khai báo tham biến hay tham trị là rất quan trọng và ảnh hưởng đến
kết quả tính toán.

Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal -2 GVC: Đào Tăng Kiệm

Bộ môn Tin học Xây dựng
9

Sơ đồ điều khiển giữa chương trình chính và chương trình con
Cấu trúc chương trình Điều khiển Giải thích
Program Chuong_trinh_chinh;
….
Chương trình chính
Phần khai báo chương trình chính
Procudere CTC1 ( Danh_sach);
. . . . thực hiện
End;

Khai báo- Toàn bộ CT con 1
Procedure CTC2 (Danh_sach);
… thực hiện
End;

- Tính số lượng những hộ phải trả tiền điện trong cả năm > X đồng

Viết 2 chương trình con: một chương trình con nhập dữ liệu và một chương trình con tính
tiền điện cho từng hộ. Chương 5 TỆP VĂN BẢN

Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal -2 GVC: Đào Tăng Kiệm

Bộ môn Tin học Xây dựng
10I. Khái niệm về tệp (File)
1. Lý do dùng tệp
Trong quá trình tạo lập biến và các dữ liệu đưa vào theo danh sách biến cũng như quá trình
lưu trữ các kết quả tính được trong chương trình Pascal ở các chương trước gặp nhiều tổn
thất, đó là khi mất điện hoặc tắt máy, chuyển chương trình… các dữ liệu đã nhập và kết quả
đang hiện trên màn hình sẽ mất hết. Bên cạnh đó khi làm các bài toán lớn, khối lượng dữ
liệu nhiều, quá trình nhập dữ liệu mất nhiều thời gian và dữ liệu cần lưu lại hoặc có thể sử
dụng cho những mục đích khác thì cách nhập-xuất trực tiếp không hiệu quả.
Vấn đề là cần một phương pháp để lưu trữ các dữ liệu đã nhập và có thể thêm – xóa - sửa
chúng một cách dễ dàng, đó là mục đích sử dụng cấu trúc tệp dữu liệu.
2. Cấu trúc tệp:
Tệp là một kiểu dữ liệu có cấu trúc, tập hợp các dữ liệu có liên quan đến nhau được chứa
trong một thiết bị nhớ ngoài (băng, đĩa,…) với một tên nào đó, do vậy dữ liệu trong tệp
được lưu trữ và sử dụng nhiều lần. Khác với các tệp chương trình, tệp văn bản,… tệp dữ
liệu trong Pascal có thể tạo ra từ các câu lệnh của chương trình Pascal hoặc từ một phần
mềm soạn thảo văn bản.

ra tên tệp mà chúng ta muốn làm việc. Điều này làm cho chương trình rườm rà và khó “tổng
quát” trong câu lệnh. Để tránh phiền toái và đơn giản cho câu lệnh, trong Pascal người ta
đưa ra khái niệm biến tệp. Biến tệp như một bí danh cho mỗi tên tệp, nó thay cho tên tệp
trong các câu lệnh. Bởi vậy, trước khi sử dụng, ta phải gán tên tệp cho biến tệp qua việc sử
dụng thủ tục Assign.
5. Các bước làm việc với tệp văn bản:
- Khai báo (Tạo (nhập) tên tệp và gán Tên-> biến tệp)
- Mở tệp
- Truy nhập dữ liệu trong tệp (nhập dữ liệu vào tệp hoặc lấy dữ liệu ra từ tệp)
- Đóng tệp
II. Khai báo
1. Tạo Tên tệp: tên tệp chứa dữ liệu có thể được đưa vào trực tiếp trong câu lệnh gán
cho biến tệp, hoặc đưa vào trong mỗi lần thực hiện chương trình qua lệnh Read qua một
biến có kiểu xâu ký tự. Các tên tệp phải khác nhau, nếu trùng tên, khi tạo tệp mới, dữ liệu
trong tệp cũ sẽ bị xóa hết.
2. Gán biến tệp cho tên tệp:
ASSIGN ( Biến tệp, Tên tệp );
Biến tệp có kiểu text, ngắn, thường sử dụng các ký hiệu f, f1, f2 …
Tên tệp có thể có dạng hằng xâu kí tự (tên cụ thể) hoặc dạng biến.
 Ví dụ:
- Gán trực tiếp : Assign ( f, ’D:\Bai_tap\ DL1.dat’ );
Theo cách này, tên tệp là hằng xâu sẽ cố định trong các lần thực hiện chương trình hoặc
muốn thay tên phải thay trực tiếp trong câu lệnh Assign.
- Gán gián tiếp tên qua một biến trung gian:
Write ( ’ Hay nhap ten tep chua du lieu’); Readln (Ten_tep);
Assign ( f, Ten_tep );
Theo cách này, tên tệp sẽ thay đổi trong mỗi lần thực hiện chương trình, do người sử dụng
nhập vào khi gặp lệnh Read.

III. Mở tệp

V. Nhập dữ liệu vào tệp
Để nhập các dữ liệu vào tệp chúng ta sử dụng lệnh Write và có thể kết hợp với các lệnh
khác của Pascal.
 Cấu trúc lệnh:
WRITE[LN] ( Biến_tệp, Danh sach biểu thức) ;
WRITE[LN] ( Biến_tệp) ;
- Cách sử dụng lệnh cũng như lệnh Write thông thường, chỉ khác là có thêm biến tệp
để chương trình nhận biết dữ liệu sẽ được ghi vào tệp nào (địa chỉ).
- Trước khi nhập dữ liệu vào tệp, thì các dữ liệu này phải đã có ở bộ nhớ trong.
- Có thể kết hợp vừa nhập dữ liệu vào máy, vừa cất vào tệp hoặc làm độc lập với nhau.
- Lệnh Writeln (f) dùng để in một dòng trống trong tệp hoặc chuyển con trỏ xuống
dòng dưới.
- Khi cất dữ liệu vào tệp nên dùng cấu trúc có định dạng, như vậy có thể tạo ra các ô
trống giữa các giá trị và chúng có thể được Pascal nhận dạng khác nhau.
 Ví dụ: Nhập các dữ liệu của véc tơ A có n phần tử vào tệp có tên là Bai1.txt đặt tại ổ
đĩa D.
Assign ( f, ’D:Bai1,txt’);
Rewrite ( f ); Writeln ( ’ Nhap cac phan tu cua A vao tep);

Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal -2 GVC: Đào Tăng Kiệm

Bộ môn Tin học Xây dựng
13

Write ( ’ n= ’ ); Readln (n);
For i:= 1 to n Do
Begin
Write ( ‘ A[ ’ , i , ’ ] ’ ); Readln ( A[i] ) {Nhap du lieu vao bo nho trong}
Write (f, a[i] :6:1 ); {Nhap du lieu vao tệp}
End; Close (f)

n1, m1:integer;
a, b: array[1 10,1 15] of real;
f: text; Ttep, ten2: string[20];
BEGIN
Write( ' Nhap ten tep cat du lieu ');
Readln ( Ttep);

Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal -2 GVC: Đào Tăng Kiệm

Bộ môn Tin học Xây dựng
14

Assign (f, Ttep);
Rewrite (f);
Write ('Nhap kich thuoc ma tran A n,m=? ');
Readln (n,m);
Writeln (f, n:5,m:5);
for i:=1 to n do
for j:=1 to m do
begin
write ( 'a[',i,',',j,']=?' );
readln ( a[i,j] )
end;
{ In ma tran A len man hinh va cat vao tep }
Writeln;
Writeln ( ' Ma tran A truoc khi cat vao tep ' );
for i:=1 to n do
begin
for j:=1 to m do write ( a[i,j]:10:2 );
writeln;
Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal -2 GVC: Đào Tăng Kiệm

Bộ môn Tin học Xây dựng
15

Chương 6. MỘT SỐ VÍ DỤ TỔNG HỢP
Bài 1 : Cho một lớp học sinh, biết mã số SV, tên và điểm thi 3 môn của mỗi sinh viên. Viết
chương trình (cấu trúc dữ liệu kiểu bản ghi) tính điểm trung bình của từng người và sắp xếp
lại danh sách theo điểm trung bình tăng dần

Program Vi_du_Ban_ghi_Sapxep;
type sinhvien = record
masv:string[10];
tensv: string[30];
dt,dl,dh,dtb:real;
end;
var
temp:sinhvien;
sv:array[1 100] of sinhvien;
n, i, j: integer;
BEGIN
{Nhap du lieu n sinh vien}
write('Nhap so sinh vien:');
readln(n);
for i:=1 to n do
begin
writeln('Nhap thong tin cua sv thu ' , i);
write('Ma sv:'); readln(sv[i].masv);

writeln;
writeln(' Danh sach sinh vien sap theo thu tu dtb tang dan');
writeln(' STT ','Masv':5,'Tensv':10,' DT DL DH DTB');
for i:=1 to n do
writeln(i:4, sv[i].masv:5, sv[i].tensv:10, sv[i].dt:6:1, sv[i].dl:6:1, sv[i].dh:6:1,
sv[i].dtb:6:1);
readln;
END.

Bài 2 : Cho một véc tơ A có n phần tử,tính tổng các phần tử của mảng, tạo tệp để cất các
dữ liệu .

Program Mang_1_chieu;
var
i,n : Byte;
A : Array[1 50] of Real;
s : Real; tentep: string[10];
f : Text;

BEGIN
{Nhap mang}
Write('n = ');
ReadLn(n);
For i:=1 To n Do
Begin
Write('A[',i,']= ');
ReadLn(A[i]);
End;
{Tinh Tong Mang}
s:=0;


Program Ban_ghi_Tao_danh_sach;
type sv=record
ms:integer;
ht:string[25];
d:array[1 20] of real;
dtb:real
end;
var n,m,n1,n2,n3,i,j,k:integer;
ds,ds1,ds2,ds3:array[1 30] of sv;
ttsv:sv;
t:real;
BEGIN
write('Nhap so nguoi n, somon m= '); readln(n,m);
for i:=1 to n do
begin
write('ms[',i,']=? '); readln(ds[i].ms);
write('ht[',i,']=? '); readln(ds[i].ht);
for j:=1 to m do
begin
write('d[',j,']=? '); readln(ds[i].d[j]);
end
end;
for i:=1 to n do
begin
t:=0;
for j:=1 to m do t:=t+(ds[i].d[j]);
ds[i].dtb:=t/m
end;
n1:=0; n2:=0; n3:=0;

end;
writeln;
if n3<>0 then
begin
writeln('3. DS SINH VIEN CO DTB: 8-10:');
for i:=1 to n3 do writeln(ds3[i].ms:5,ds3[i].ht:15,ds3[i].dtb:10:1);
end;
writeln;
readln
END. Bài 4 : Cho một ma trận A (nxm). Sắp xếp lại ma trận sao cho các phần tử trong từng hàng
tăng dần. Viết 3 chương trình con:một chương trình con nhập dữ liệu, 1 chương trình con
sắp xếp và 1 chương trình con in kết quả.

Program Chuong_trinh_con_sap_xep_ma_tran;
type k1=array[1 15,1 15] of real;
var n,m,i,j,k:integer;
a:k1;
c:real;
Procedure nhap;
begin
write('n,m=?');
readln(n,m);
for i:=1 to n do
for j:=1 to m do
begin
write('A[',i,',',j,']=?');
readln(a[i,j]);

xl;
ikq;
readln
END.

Bài 5 :

Bài 6 : Cho trước 2 tệp dữ liệu chứa các thông tin của sinh viên: tệp thứ nhất chứa các dữ liệu về
số thứ tự và tên của từng sinh viên; tệp thứ hai gồm các thông tin về số thứ tự, mã số sinh viên, năm
sinh và điểm tốt nghiệp của từng sinh viên. Viết chương trình Pascal để lấy các dữ liệu từ tệp sau
đó lập danh sách sinh viên giỏi ( có điểm tốt nghiệp >8) in trên màn hình.

Program Lay_du_lieu_ra_tu_tep_da_co_va_Xu_ly;

Type
sv=record
tt:integer;
ht:string[15];
ms,ns,dtn:real;
end;

Var
i,n:integer;
tentep1,tentep2:string[10];
f1,f2:text;
ds:array[1 10] of sv;{ Mang chua cac du lieu cua hoc sinh}

Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal -2 GVC: Đào Tăng Kiệm

Bộ môn Tin học Xây dựng

readln(f2,tt,ms,ns,dtn);
i:=i+1;
End;
close(f2);
Writeln;
Writeln(' Danh sach day du ');
For i:=1 to n do with ds[i] do
writeln(tt:3,ht:15,' ',ms:6:0,' ',ns:6:0,' ',dtn:5:1);
Writeln;
Writeln ( ' DANH SACH SINH VIEN GIOI ');
For i:= 1 to n do
with ds[i] do
If dtn>=8 then
Writeln (tt:3,' ',ht:15,' ',ms:5:0,' ',ns:5:0,' ',dtn:5:1);
Readln
END.


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status