Giáo trình Nhập môn tin học - Phần 3: Ngôn ngữ lập trình Pascal -1

1.Giới thiệu chung về ngôn ngữ lập trình:

Từtrướctớinay đãcóhàngnghìnngôn ngữlập trình khácnhau đượcthiếtkếvàsửdụng.

Hàngnăm lạicónhiềungôn ngữmớira đời. Cácngôn ngữ đượcdùngphổbiếncóthểkể

đến : Ngôn gữ Ada, Angol, APL, Asembly Basic, C, C++,Cobol, Fortran, Delphi, Java,

Lisp,Pascal,Perl,PHP,Prolog, Python, Ruby Sựpháttriểncủangôn ngữgắnliềnvớisự

pháttriểncủatin học vàphầncứng. Mỗiloạingôn ngữth íchhợp vớimột lĩnhvựcvàmột

sốdạngbàitoánnhất định. Vídụ, trong khốikỹthuật, cácngôn ngữ đượcsửdụngnhiềulà

Algol, Fortran, C++, Basic, Visual Basic, Java, Pascal

Cácngôn ngữlập trình cóthểxây dựngdựatrên “ Lập trình tuy ến tính”, “ Lập trình có cấu

trúc” : Pascal; “Lập trìnhhướng đốitượng” : Java, Delphi,Visual Basic; “Lập trình trên nền

Web”: HTML.

2. Các ưu điểm của Pascal và yêu cầu hệ thống:

- Pascal làdo Niklaus Wirth phát triểndựatrên Algolnăm 1970, nó làngôn ngữlập trìnhcó

cấutrúc. P ascal phùhợp vớicácdạngbàito ánkỹ thuật vàdễdiễntảcácsơ đồthuật toán,

phùhợp cho việcgiảngdạy trong cáctrườngphổthông và đạihọc.

- Vớicác phi ên bảnkhácnhau củaPascal nócó th ểdùng trong cáchệ điềuhành DOS,

Windowcàcũngcómột sốhệ điềuhànhdùngPascal đểviết(nhưMacintosh).

- Pascal làngôn ngữlập trình định kiểu vàcótrìnhbiên dịchmạnh,cóthểgiải đượccácbài

toán đệqui.

-Tuỳ theo từngphiên bảncủaPascal màcóthểchạy trên môi trườngDOShoặc Window

pdf36 trang | Chuyên mục: Pascal | Chia sẻ: dkS00TYs | Lượt xem: 4020 | Lượt tải: 1download
Tóm tắt nội dung Giáo trình Nhập môn tin học - Phần 3: Ngôn ngữ lập trình Pascal -1, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
ai báo dữ liệu kiểu bản ghi: 
Khai báo trực tiếp Khai báo gián tiếp 
Var 
 Tên_bản_ghi : Record 
 Tên_trường_1: Kiểu; 
 Tên_trường_2: Kiểu; 
 . . . . . . 
 Tên_trường_n: Kiểu; 
 End; 
Type 
 Tên_bản_ghi = Record 
 Tên_trường_1: Kiểu; 
 Tên_trường_2: Kiểu; 
 . . . . . 
 Tên_trường_n: Kiểu; 
 End; 
Var Danh_sách_biến_BG : Kiểu_bản_ghi; 
 Trong đó: tên của bản ghi và tên trường tuân theo qui định đặt tên của Pascal. Kiểu phải 
là một trong các kiểu vô hướng, mảng hoặc một kiểu mới đã khai báo trước đó. 
 - Minh họa: + Tạo và khai báo 1 bản ghi để lưu trữ dữ liệu cho từng cán bộ trong một 
cơ quan bao gồm các thông tin: Họ tên, Địa chỉ, năm sinh, lương, giới tính, tình trạng gia 
đình: 
Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal - 1 GVC: Đào Tăng Kiệm 
Bộ môn Tin học Xây dựng 31 
Type 
 TTHS = Record 
 Ho_ten : string [ 25]; 
 D_chi : string [ 40 ]; 
 N_sinh: integer; 
 Luong : real ; 
 G_tinh : Char ; 
 TTGD : integer 
 End ; 
+ Để lưu trữ dữ liệu cho cả cơ quan có m người, dùng một mảng Ho_so, trong đó mỗi 
phần tử của mảng là một record có cấu trúc TTHS và khai báo mảng qua Var như sau: 
 Var Ho_so : Array [1.. m] of TTHS ; ( m là hằng số) 
3. Truy nhập dữ liệu bản ghi: 
Để truy nhập bản ghi cũng sử dụng các lệnh Read, Write và các lệnh chu trình. Muốn 
nhập hoặc xuất dữ liệu bản ghi, phải làm việc với từng trường thông qua các biến bản 
ghi. Cấu trúc lệnh như sau: 
 Read[ln] ( Biến_bản_ghi. Trường1. trường1_1…); 
 Write[ln] ( Biến_bản_ghi. Trường1. trường1_1…); 
Biến bản ghi có thể là biến đơn hoặc biến mảng. 
- Nhập dữ liệu cho từng cán bộ vào mảng hồ sơ của cơ quan khai báo ở trên như sau: 
 For i:= 1 to m Do 
 Begin 
 Writeln ( ’ Dua vao Ho ten, Dia chi … cua can bo thu’ , i , ’: ’ ); 
 Readln (Ho_so [i] . Ho_ten, Ho_so[i] . D_chi… ); 
 End; 
- In lên màn hình danh sách cán bộ gồm Họ tên, Năm sinh, Lương của cả cơ quan : 
 For i:= 1 to m Do 
 Writeln(Ho_so [i].Ho_ten :25, Ho_so[i].N_sinh :6, Ho_so[i].Luong :8:2); 
4. Tính toán, xử lý dữ liệu bản ghi: 
Để tính toán, xử lý các dữ liệu bản ghi, có thể dùng tất cả các lệnh của Pascal như các 
lệnh điều khiển, lệnh chu trình, lệnh gán … 
Tuy nhiên trong các câu lệnh với kiểu bản ghi thường xuyên phải nhắc lại tên của biến, 
tên trường làm câu lệnh dài, rườm rà… Trong Pascal có thể dùng câu lệnh With để khắc 
phục điều này. Khi sử dụng With thì các tham số không cần xuất hiện 
trong các câu lệnh đựoc phủ trong miền With. 
Cấu trúc của lệnh With 
 WITH Tên_biến_bản_ghi . Tên_trường . [tên_trường . . .] DO 
Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal - 1 GVC: Đào Tăng Kiệm 
Bộ môn Tin học Xây dựng 32 
Viết lại các câu lệnh trên dùng With 
For i:= 1 to m Do With Ho_so[i] Do 
 Writeln (Ho_ten: 25,N_sinh: 6, Luong: 8:2); 
5. Ví dụ: 
 Các ví dụ minh hoạ cho câu lệnh: 
 Khai báo gián tiếp bản ghi đơn Khai báo bản ghi kép 
Type 
 SV = Record 
 HT : string [15]; 
 D : array [ 1.. 50 ] of real ; 
 TB : real; 
 PL : Char; 
 End ; 
 VT = array [1..60] of SV ; 
Var 
 DS1,DS2 : VT ; 
Type 
 HT = Record 
 Ho : String [15] ; 
 Dem : String [10] ; 
 Ten : String [15] ; 
 End; 
 SV = Record 
 Hoten : HT; 
 D : array [ 1.. 50 ] of real ; 
 TB : real; 
 PL : Char; 
 End ; 
Var DS : array [1..60] of SV; 
 Các bài tập ví dụ: 
- Bài tập 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); 
Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal - 1 GVC: Đào Tăng Kiệm 
Bộ môn Tin học Xây dựng 33 
 write('Ma sv:'); readln(sv[i].masv); 
 write('Ten sv:'); readln(sv[i].tensv); 
 write('Diem toan:'); readln(sv[i].dt); 
 write('Diem ly:'); readln(sv[i].dl); 
 write('Diem hoa:'); readln(sv[i].dh); 
 sv[i].dtb := (sv[i].dt+sv[i].dl+sv[i].dh)/3; 
 end; 
 {in ra danh sach sinh vien vua nhap} 
 writeln; 
 writeln(' Danh sach sinh vien vua nhap'); 
 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); 
 {sap xep danh sach sinh vien theo diem trung binh tang dan} 
 for i:= 1 to n do 
 for j:=i+1 to n do 
 if (sv[i].dtb >sv[j].dtb) then 
 begin 
 temp:=sv[i]; 
 sv[i]:=sv[j]; 
 sv[j]:=temp; 
 end; 
 {in ket qua sau danh sach sinh vien sau khi sap xep} 
 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 tập 2 : Cho một lớp học sinh có n người, biết mã số SV, tên và điểm thi m 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à tách danh sách lớp thành 3 danh sách: những SV có DTB nhỏ hơn 5 từ 5-
7,và DTB >8. 
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; 
Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal - 1 GVC: Đào Tăng Kiệm 
Bộ môn Tin học Xây dựng 34 
 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; 
 { Tinh diem trung binh cho tung nguoi } 
 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; 
 { Lap cac danh sach } 
 n1:=0; n2:=0; n3:=0; 
 for i:=1 to n do if ds[i].dtb<5 then 
 begin 
 n1:=n1+1; 
 ds1[n1]:=ds[i] 
 end else if ds[i].dtb<8 then 
 begin 
 n2:=n2+1; 
 ds2[n2]:=ds[i] 
 end else 
 begin 
 n3:=n3+1; 
 ds3[n3]:=ds[i] 
 end; 
 writeln; 
 { In ket qua ra man hinh } 
 If n1 0 then 
 begin 
 writeln('1. DS SINH VIEN CO DTB<5:'); 
 for i:=1 to n1 do writeln(ds1[i].ms:5,ds1[i].ht:15,ds1[i].dtb:10:1); 
 end; 
 writeln; 
 if n20 then 
 begin 
 writeln('2. DS SINH VIEN CO DTB: 5-7:'); 
 for i:=1 to n2 do writeln(ds2[i].ms:5,ds2[i].ht:15,ds2[i].dtb:10:1); 
 end; 
 writeln; 
Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal - 1 GVC: Đào Tăng Kiệm 
Bộ môn Tin học Xây dựng 35 
 if n30 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. 
4. Bài tập tự làm - Viết chương trình Pascal cho các bài tập sau: 
 4.1. Nhập từ bàn phím 3 số nguyên a, b, c. Tìm giá trị Max - Min của chúng. 
 4.2. Viết chương trình tính tổng của dãy số: 1+2+...+n (Với n được nhập vào từ 
bàn phím, n>=1). Viết bằng 3 lệnh chu trình khác nhau – So sánh – Nhận xét . 
 4.3. Viết chương trình tính tổng các số chẵn trong khoảng từ 1- n . 
 4.4. Viết chương trình tính tổng các số chẵn và chia hết cho 3 trong khoảng từ 1->n, 
với n được nhập từ bàn phím. 
 4.5. Viết chương trình tính tổng S = 1 + 1/2 + 1/3 + 1/4 +.....+1/n. Với n là số nguyên 
và chẵn. 
 4.6. Viết chương trình tính tổng S = 1 + 1/x + 1/x2 + 1/x3 +.....+1/xn. Với n được nhập 
từ bàn phím. 
 4.7. Cho một mảng X (nguyên) có m phần tử. Hãy tách mảng X thành 2 mảng Y chứa 
các phần tử chẵn của X và mảng Z chứa các phần tử chia hết cho 2. 
 4.8. Cho dữ liệu của một lớp học sinh có m người. Biết các thông tin Họ tên, Mã số 
sinh viên, điểm trung bình cả năm của mỗi người. Tìm số người có điểm trung bình >B. Lập 
2 danh sách cho những người có điểm trung bình từ 5..7 và từ 8..10. 
 4.9. Cho một dãy số (mảng 1 chiều) các số thực. Tìm số lớn nhất, bé nhất trong dãy số 
đó. Sắp xếp dãy số theo chiều tăng dần của các giá trị. 
 4.10. Cho một mảng X có m phần tử, một mảng Y có n phần tử. Hãy tạo ra mảng Z có 
m+n phần tử được ghép từ 2 mảng X, Y. Tính tổng các phần tử >A của mảng Z và tích các 
phần tử<B của Z. So sánh tổng và tích. 
 4.11. Cho dữ liệu của một lớp học sinh có m người. Biết các thông tin Họ tên, Mã số 
sinh viên, điểm các môn của n môn mỗi người. 
- Tìm điểm trung bình n môn của mỗi người. In lên màn hình Tên, Mã số, Điểm trung bình 
từng người cả lớp. 
- Lập danh sách những người có điểm trung bình các môn >8 . 
Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal - 1 GVC: Đào Tăng Kiệm 
Bộ môn Tin học Xây dựng 36 
- Sắp xếp lại danh sách lớp theo điểm trung bình giảm dần. 
 4.12. Cho một ma trận A vuông (mảng 2 chiều) có m hàng, m cột. 
- Tính trung bình cộng của cả ma trận. 
- Tính tổng các phần tử nằm phía trên đường chéo chính. 
- Tìm giá trị lớn nhất của các phần tử nằm phía dưới đường chéo chính. 
 4.13. Cho dữ liệu của một phường dân cư có m người. Biết các thông tin Tên chủ hộ, 
Địa chỉ, Tổng số nước tiêu thụ (m3) mỗi tháng của mỗi nhà trong 12 tháng. 
- Nhập các thông tin của từng hộ và In lên màn hình (Tên CH., Địa chỉ ,Tháng 1 ..Tháng 12) 
- Tìm số lượng nước tiêu thụ trung bình cả phường trong năm. 
- Tìm tổng số nước tiêu thụ traong 12 tháng của từng hộ. 
- Lập danh sách những hộ có lượng tiêu thu nước > X m3 
 4.14. Cho một ma trận B (mảng 2 chiều) có m hàng, n cột. 
- Tìm giá trị nhỏ nhất của B 
- Xoá đi hàng và cột chứa giá trị nhỏ nhất đầu tiên (Xét theo hàng) của ma trận (Ma trận chỉ 
còn m-1 hàng và n-1 cột). 

File đính kèm:

  • pdfGiáo trình Nhập môn tin học - Phần 3_Ngôn ngữ lập trình Pascal -1.pdf