………………………………………………………………………………………………………
BÀI ÔN TẬP NGÔN NGỮ LẬP TRÌNH PASCAL.
PHẦN CƠ SỞ.
I. PHẦN LÝ THUYẾT
1. Các danh hiệu pascal nào dưới đây là hợp lệ ?
Xray X-Ray Jeremiah R2D2 3M
PDQ123 PS:175 X 4 N/4
SM ZZZZZZ night ng to day
2. Cho biết hằng nào dưới đây là nguyên, thực hoặc không phải nguyên/thực:
12 12. 12.0 ‘12’ 8+4
-3.7 3.7 -1.024 +1 $3.98
0.357E4 24E0 E3 five 3E.5
.000001 1.2 x 10 -(-1) 0E0 ½
3. Các hằng chuỗi nào dưới đây hợp lệ ?
‘X’ ‘123’ YS’ ‘tooyet’ ‘DO’’ESNT’
‘isnt’ ‘t’ ‘constant’ ‘S1.98’ ‘DON’T’ ‘12+34’
’’’twas’ ‘A’‘B’‘C’
4. Hãy viết các đoạn biến để khai báo biến:
a. Item, Number và Job kiểu real.
b. ShoeSize kiểu integer.
c. Mileage kiểu real, Cost và Distance kiểu integer.
d. Alpha và Beta kiểu integer, Code kiểu char,
e. Root kiểu real, và RootExists kiểu boolean.
5. Hãy viết các đoạn hằng đặt tên cho các hằng với tên tương ứng:
a. 1.25 với tên Coefficient.
b. 40.0 với tên RegHours và 1.5 với tên OvertimeFactor.
c. 1776 với tên Year, ‘F’ với Female và ký tự trắng với Blank.
d. True với tên Exists, 0 với Zero, * với Asterisk, dấu nháy đơn với Apostrophe và chuỗi
CPSC151A với Course.
6. Tìm trị các biểu thức sau và giải thích tại sao biểu thức không hợp lệ:
a. 9-5-3
e. I3 div I2 * 5.1
f. Sqr(I1) / sqr(R1)
g. Sqr(I2) / sqr(R1)
h. Sqrt(R1 + R2 + I1)
8. Viết biểu thức Pascal để tính:
a. 10 + 5B - 4AC
b. Ba lần của hiệu 4-n chia cho 2 lần m
2
+n
2
c. Căn bậc hai của a+3b
2
d. Căn bậc hai của trung bình cộng của m và n
e. |A / (m+n)| ( |x| là trị tuyệt đối của x)
f. Lượng thực Amount làm tròn đến phần trăm gần nhất.
9. Giả định Number thuộc kiểu integer, xValue và yValue kiểu Real, Grade kiểu char, Found kiểu
boolean. Hãy xác định mệnh đề gán Pascal nào dưới đây hợp lệ. Nếu không hợp lệ hãy giải
thích tại sao.
a. xValue := 2.71828
b. 3 := Number
c. Grade := ’B+’
d. Number := Number+1
e. xValue := 1
f. Greade := A
g. Number+1 := Number
2
h. Xvalue := ’1’
i. Found := Grade
j. yValue := yValue
k. xValue := A
tương ứng. Giả định tất cả các biến thuộc kiểu real, trừ trường hợp có ghi rõ.
a. Distance bằng Rate lần Time
b. X được tăng lên một lượng DeltaX
c. Resistance bằng1/(1/R1 + 1/R2 + 1/R3)
d. TArea là diện tích hình tam giác có cạnh đáy là b, chiều cao là h.
e. Price bằng ba ký số cuối cùng của số nguyên StockNumber với dấu chấm thập phân ở
trước hai ký số cuối (ví dụ nếu StockNumber là 1758316 thì Price được gán trị 3.16)
f. Tax được làm tròn tới trị nguyên gần nhất.
3
13. Với mỗi trường hợp dưới đây, hãy xác định trị của các biến nguyên a, b và c sao cho hai biểu
thức có trị khác nhau:
a. A * (b div c) và a * b div c
b. a div b và a * (1/b)
c. (a + b) div c và a div c + b div c
14. Giả sử Alpha và Beta là biến thực có trị là -567.392 và 0.004, Rho là biến nguyên có trị 436.
Hãy cho biết chính xác kết xuất trong các trường hợp sau và giải thích tại sao bị lỗi (nếu có):
a. writeln(Rho); writeln(Rho+1); writeln(Rho+2);
b. write(Rho); write(Rho+1); writeln(Rho+2);
c. write(‘Alpha=’); write(Alpha:9:3); write(‘Beta=’:7); writeln(Beta:7:4);
d. writeln(Rho:5, 2*Rho:5); writeln ;writeln(Beta:10:5);
e. writeln(Alpha:8:1,Rho:5); writeln(‘Tolerance:’ Beta:8:5);
f. writeln(‘Alpha=’,Alpha:12:5); writeln(‘Beta=’,Beta:6:2,’:4,’Rho=’,Rho:6);
writeln(Alpha+4.0+Rho:15:3);
g. write (‘Tolerance =’ :8 ) ; writeln (Beta : 5 : 3 ) ; writeln ; writeln;
writeln (Rho : 2 , Alpha : 4 : 2) ;
h. writeln ( 10 * Alpha : 8 : 1 , trunc (10 * Alpha) : 8 , round ( 10 * Alpha ) :8 ) ;
writeln ( sqr ( Rho div 100 ) : 5 , sqrt ( Rho div 100 ) : 5 ) ;
i. writeln ( ‘ Rho =’ : 7 , Rho : 8 : 2 ) ;writeln ( ‘ * * * * * ‘ ) ;
j. write (Alpha : 10 ) ; write ; writeln ( Beta : 10 );
15. Giả sử I, J là biến nguyên với I = 15 , J = 8, C và D là biến ký tự với C = ‘C’ và D = ‘ – ‘ , X
readln (X, Y, Z) ; 3 4.4
5 6.6
e. read (A); nhập: 1 2 3
readln (B, C); 4 5.5 6.6
read (X, Y) ;
readln (Z);
f. readln (A); nhập: 1 2 3
read (B, C) ; 4 5.5 6.6
readln (X, Y);
read (Z);
g. read (A, B); nhập: 1 2 3
readln ; 4 5.5 6.6
read (C); 7 8.8 9.9
readln(X); 10 11.11 12.12
readln ; 13 14.14 15.15
readln (Y);
readln ;
readln (Z);
II. PHẦN THỰC HÀNH
• Gõ vào máy và thực hiện chương trình BT1_1 . PAS sau:
{ = = = = = = = = = = = = = = = = = = = = = = = = = = = }
{ Program : BT1_1. PAS }
{ Date : dd/mm/yyyy }
{ Notes : hien thi hang chuoi , nguyen va thuc }
{ = = = = = = = = = = = = = = = = = = = = = = = = = = = }
Begin
writeln( ‘ Day la chuong trinh dau tien cua toi ‘) ;
writeln ;
writeln( ‘ Day la mot chuoi ‘ );
writeln( ‘ Day la mot so nguyen : ‘ , 12345);
Begin
Clrscr;
Write(‘Hay go vao mot so nguyen’); Readln(i);
Writeln(‘so cua ban la’,i);
Write(;’Hay go vao mot chuoi:’); Readln(s);
Write(‘chuoi cua ban la’,s); Writeln;
Write(‘xem xong bam Enter’):readln;
End.
• Gõ vào máy và thực hịện chương trình BT1_3.PAS sau:
Program: BT1_3;
(*
Date :dd/mm/yyyy
Notes : Nhap 2 so thuc , cong, tru, nhan, chia 2 so roi hien thi ( so thu hai khac 0)
6
*)
Uses crt;
Var so1, so2, cong, tru, nhan , chia:real;
Begin
Clrscr;
Write(‘cho so thu nhat :’); readln(so1);
Write(‘cho so thu hai :’); readln(so2);
Cong:=so1+so2; Tru:=so1-so2; Nhan:=so1*so2; Chia:=so1/so2;
Writeln;
Writeln(‘so1+so2=’,cong);
Writeln(‘so1-so2=’,tru);
Writeln(‘so1*so2=’,nhan);
Writeln(‘so1/so2=’,chia);
Writeln;
Writeln(‘so1+so2=’,cong:10:3);
Writeln(‘so1-so2=’,tru:10:3);
Nhập: Dai ,Rong
Xuất : Dien tich
Giải thuật
1. Nhap Dai va Rong
2. Tính Dien tich = Dai * Rong
3. Xuất Dien Tich
• Viết chương trình BT_6.PAS tính diện tích và chu vi hình tròn khi biết bán kính, kết quả trên
màn hình có dạng.
= = = = = = = = = = = = = = = = = = = = = = =
TINH DIEN TICH & CHU VI HINH TRON
= = = = = = = = = = = = = = = = = = = = = = =
Xin cho biet ban kinh:xxx.x
Chu vi :xxxxxx.x
Dien tich :xxxxxx.x
Hướng dẫn:
Nhập:Ban kinh
Xuất: Chu vi Dien tich
Giải thuật:
1. Nhập bán kính
2. Tính chu vi =2*ban kinh*pi
3. Dien tich =ban kinh*chu vi*pi (pi là hằng trị được định nghĩa sẳn của Unit CRT)
4. Xuất Chu vi,Dien tich
• Viết chương trình BT1_7.PAS tính tổng, hiệu, tích, thương và dư của hai số nguyên, kết quả
trên màn hình có dạng:
= = = = = = = = = = = = = == = == = = = == = = = = = = = = = = = =
TINH TONG, HIEU, TICH, THUONG, DU CUA HAI SO NGUYEN
= = = = = == = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Cho biet so thu nhat: xx
Cho biet so thu hai: xx
Tong = XXXX
f. -5 < x < 5
g. a nhỏ hơn 6 hay lớn hơn 5
h. p = q = r
i. Chỉ một trong hai trường hợp: x nhỏ hơn 3 hoặc y nhỏ hơn 3
19. Cho 3 biến Bool a, b và c, hãy viết biểu thức Bool để
a. Đúng nếu và chỉ nếu a và b đúng, c sai
b. Đúng nếu và chỉ nếu a đúng v à ít nhất b hay c đúng
c. Đúng nếu chỉ nếu hoặc a hoặc b đúng
20. Viết lệnh đọc ba số thực và gán trị True hoặc false cho các biến Bool sau:
a. Triangle: True nếu ba số thực có thể biểu thị chiều dài các cạnh của một tam giác và false
nếu không . (Tổng của hai số phải lớn hơn số thứ ba )
b. Equilateral: True nếu Triangle là True và tam giác là đều (ba cạnh bằng nhau )
c. Isoceles : True nếu Triangle là True và tam giác là cân (ít nhất có hai cạnh bằng nhau )
d. Scalene: True nếu Triangle là True và tam giác là lệch ( không có hai cạnh bằng nhau )
21. Viết mệnh đề Pascal cho mỗi trường hợp sau:
a. Nếu TaxCode là ‘T’ tăng Price bằng cách cộng TaxRate vào nó.
b. Nếu Code là 1, đọc trị vào x và y , tính và in tổng của x và y .
c. Nếu A ở giữa 0 và 5 ,cho B bằng 1/ A
2
, nếu không cho B bằng A
2
.
d. Gán trị True cho biến Bool LeapYear nếu biến nguyên Year có trị là năm nhuần . (Năm
nhuần là bội số của 4 , nếu là bội số của 100 thì phải là bội số của 400 ) .
e. Gán trị cho Cost tương ứng với trị của Distance theo bảng sau :
Distance Cost
0 đến 100
Lớn hơn 100 nhưng không lớn hơn 500
Lớn hơn 500 nhưng nhỏ hơn 1000
1000 hoặc hơn
Progam BT2_1;
(*
Date: dd/mm/yyyy
Notes: Nhap hai so nguyen va cho biet so nao nho hon
*)
Uses crt;
Var num1,num2:real; C:char;
Begin
Clrscr;
{ -------- Nhap hai so -----}
Write(‘Cho biet so thu nhat:’);readln(num1);
Write(‘Cho so thu hai:’)readln; readln(num2);
Writeln;
{ ----- Kiem tra -------- }
If (num1<num2) then
Writeln(‘so thu nhat nho hon so thu hai’);
11
{ ----- Ket thuc --------}
Gotoxy(28,25); { đưa điểm nháy trên màn hình đến vị trí cột 28, dòng 25}
Write(‘ xem xong nhấn nút bất kỳ”);
C:=readkey; {hàm readkey chờ nhấn một phím và có trị là kí tự đã nhấn}
End.
• Gõ vào máy và thực hiện chương trình BT2_2.PAS sau:
Program BT2_2;
(*
Date:dd/mm/yyyy
Notes:Nhap hai so nguyen va cho biet so nao nho hon
Tuong tu nhu BT2_1 nhung co cai tien
*)
Uses Crt;
(*_ _ _Nhap hai so_ _ _*)
12
Write(‘Cho so thu nhat:’); readln(Num1);
Write(‘Cho so thu hai:’); readln(Num2);
Writeln;
(*_ _ _Kiem tra_ _ _ *)
If (Num1<Num2) then
Writeln(‘So thu nhat nho hon so thu hai’)
Else
If (Num1> Num2) then
Writeln(‘So thu nhat lon hon so thu hai’)
Else
Writeln(‘So thu nhat bang so thu hai’);
(* _ _ _Ket thuc_ _ _ *)
Gotoxy(28,25); (* đưa điểm nháy trên màn hình đến vị trí cột 28, dong 25 *)
Write(‘xem xong nhan nut bat ky’);
C :=readkey;
(* hàm readkey chờ nhấn một phím và có trị là kí tự đã nhấn *)
End.
• Viết chương trinh BT2_4.PAS nhập vào một số nguyên và cho biết đó là chẵn hay lẻ. Kết
quả trên màn hình có dạng:
= = = = = = = = = = = = = = = = = = = = = =
KIEM TRA MOT SO LA CHAN HAY LE
= = = = = = = = = = = = = = = = = = = = = =
Cho mot so nguyen: 1234
Do la so chan
Hướng dẫn
Nhập:So
Xuất: Thông báo
Giải thuật:
Cho so thứ nhất:1234
Cho số thứ hai :56
Cho số thứ ba :78
Số lớn nhất là 1234 và nhỏ nhất là 56
Hướng dẫn
Nhập:số(là 1 trong 3 số)
Xuất: SoMax (số lớn nhất), SoMin (số nhỏ nhất)
Giải thuật:
Gán 1.7E+38 cho số min và -1.7E+38 cho số max
Nhập So (thứ nhất)
Nếu So > SoMax thì gán So cho SoMax
Nếu So < SoMin thì gán So cho SoMin
Nhập Số (thứ hai)
Nếu So > SoMax thì gán So cho SoMax
Nếu So < SoMin thì gán So cho SoMin
Nhập số (thứ ba)
Nếu So > SoMax thì gán So cho SoMax
Nếu So < SoMin thì gán So cho SoMin
Hiển thị SoMax và SoMin
• Viết chương trình BT2_7.PAS nhập vào 3 số và cho biết đó là 3 cạnh của một tam giác
không? Kết quả trên màn hình có dạng:
= = = = = = = = = = = = = = = = = =
XAC DINH 3 CANH TAM GIAC
= = = = = = = = = = = = = = = = = =
Cho số thu nhat: xx
Cho số thứ hai : xx
Cho số thứ ba: xx
Ba số trên không phải là 3 cạnh của tam giac
Hướng dẫn
14
Cho biet ma nhan vien : 1234
So gio lam viec: 42
Muc luong gio: 10
Tienluong = 440
Hướng dẫn
Nhập : MaNV, GioLV, MLGio
Xuất : TienLuong
Giải thuật :
1. Nhập MaNV, GioLV, MLGio
2. Nếu GioLV<=40
TienLuong = GioLV x MLGio
Nếu không
15