Ôn tập Pascal
Trang 1(Trích dẫn có hiệu đính và bổ sung từ bộ bài tập Pascal của
Trường Đại học Khoa học tự nhiên Thành Phố Hồ Chí Minh)
Vương Đức BìnhBÀ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
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
b 2 div 3+3/5
c 9 div 2/5
Trang 2b Ba lần của hiệu 4-n chia cho 2 lần m2+n2
c Căn bậc hai của a+3b2
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
Trang 3p I3 := round(sqr(I1 mod I2)/R3)
11 Viết lệnh gán thay đổi trị của biến nguyên Number với các trường hợp sau:
a Tăng Number lên 77
b Giảm Number bớt 3
c Tăng Number lên gấp hai lần
d Cộng ký số cực phải của Number vào Number
e Giảm Number bớt một trị là phần nguyên của số thực x
12 Viết mệnh đề gán Pascal cho các trường hợp sau để tính trị của biểu thức và gán trị cho biến 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)
Trang 4d 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
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
và Y là biến thực với X = 2559.50 và Y = 8.015 Hãy cho biết chính xác kết xuất trong các trường hợp sau :
a writeln( ‘ Newbalance = ‘ : I , X : J : 2 ) ; writeln( C : I mod 10 , Y : J : J – 6 ) ;
b write( ‘ I = ‘ , I ) ; write( I : I ) ; writeln( ‘ J = ‘ : J , J : J ) ;writeln ; writeln( I : J , J : I ) ; writeln( trunc ( X / J ) : J , J – Y : I : J , D : J div 7 )
16 Giả sử N1 và N2 là biến nguyên có giá trị là 39 và –5117, R1, R2 là biến thực có giá trị là 56
7173 và –0.00247 , C là biến ký tự có giá trị là ‘F’ Hãy viết lệnh để được các kết xuất trong từng trường hợp sau :
Trang 6writeln ;
writeln( ‘ Day la mot chuoi ‘ );
writeln( ‘ Day la mot so nguyen : ‘ , 12345);
writeln( ‘ Day la mot so thuc ( dang dong ) : ‘ ,123.45 );
writeln( ‘ Day la mot so thuc ( dang tinh ) : ‘ ,123.45:7:3);
writeln ;
write( ‘ xem xong bam Enter ; ) ; readln ;
End
Hướng dẫn (Trong môi trường Windows)
1 Kích hoạt chương trình Windows Explorer để tạo một folder sẽ dùng lưu trữ các file chương trình của Pascal (Ví dụ: C:\BT_PAS)
2 Kích hoạt chương trình Borland Pascal (Thực hiện Run: \\BP\BIN\BP.EXE)
3 Thông qua menu [Options] -> [Directories] xác lập giá trị C:\BT_PAS cho mục [EXE and TPU directories] -> [OK]
4 Thông qua menu [File]-> [Change Dir] chọn thư mục làm việc mới là C:\BT_PAS
5 Thông qua menu [Options] -> [SAVE BP.TP] để lưu lại các xác lập trên
6 Mở cửa sổ soạn thảo mới ([File]-> [New])
7 Gõ chương trình với nội dung trên vào cửa sổ soạn thảo Gõ xong nhấn F2 (để lưu lên đĩa với tên BT1_1.PAS)
8 Nhấn phím F9 để biên dịch chương trình trên Nếu có lỗi thì sửa lỗi (nhớ nhấn F2 để Save lại mỗi khi có thay đổi văn bản chương trình) Thực hiện cho đến khi nào việc biên dịch thành công
9 Nhấn Ctrl_F9 (giữ phím Ctrl và nhấn F9) để chạy chương trình
•Gõ vào máy và thực hiện chương trình BT1_2.PAS sau:
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:
Trang 7Write(‘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;
Trang 8TINH DIEN TICH HINH CHU NHAT
= = = = = = == = == = = = = = = = = =
Xin cho biet chieu dai : xxxx
Xin cho biet chieu rong : xxxx
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.
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
Trang 9Xuất: Tong, Hieu, Tich, Thuong,Du
Giải thuật:
1 Nhập: So1, So2
2 Tính Tong = So1+So2
Hieu = So1-So2Tich = So1*So2Thuong = So1/So2
Du = So1 MOD So2
3 Xuất Tong, Hieu, Tich, Thuong, Du
Trang 10LỆNH RẺ NHÁNH
I PHẦN LÝ THUYẾT
1 Giả sử a,b,c là các biến Bool, dùng bảng sự thật (chân trị) để tính trị các biểu thức Bool sau với mọi trị của a,b,c
a a or not b b not (a and b)
e a and (b or c) f (a and b) or (a and c)
18 Viết biểu thức Bool biểu thị các điều kiện sau:
a x lớn hơn 3
b y giữa 2 và 5
c R âm và Z dương
d Alpha và Beta đều dương
e Alpha và Beta cùng dấu (dương hoặc âm)
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/ A2 , nếu không cho B bằng A2
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 :
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
5.008.0010.00
Trang 1123 Một sinh viên dùng lệnh if sau trong chương trình:
If Honors = True then
If Awards = True then
GoodStudent:=False
Else if Honors = false then
GoodStudent:=False;
a Hãy viết một mệnh đề if tương đương với lệnh trên
b Viết một mệnh đề gán tương đương với mệnh đề if trên
24 Viết mệnh đề case trong các trường hợp sau:
a Nếu trị biến ký tự TransCode là ‘D’, tăng.Balance lên một trị Amount ,nếu TransCode là ‘W’ giảm bớt Balance một trị là Amount; Nếu TransCode là ‘P’, hiển thị trị Balance
b Hiển thị tên tháng hoặc thông báo sai tương ứng với trị tháng của biến Month
c Hiển thị số ngày tương ứng của số Month
Write(‘Cho biet so thu nhat:’);readln(num1);
Write(‘Cho so thu hai:’)readln; readln(num2);
Trang 12Gotoxy(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ỳ”);
Notes:Nhap hai so nguyen va cho biet so nao nho hon
Tuong tu nhu BT2_1 nhung co cai tien
{Nhap hai so}
write(‘cho so thu nhat:’); readln(num1);
write(‘cho so thu hai:’); readln(num2);
gotoxy(28,25); {dưa diểm nháy trên màn hình đến vị trí cột 28,dòng 25}
write(‘Xem xong nhan nut bat ky.’);
Notes:nhap hai so nguyen va cho biet so nao nho hon
Tuong tu nhu BT2_2 nhung co cai tien
*)
Uses CRT;
Trang 13Var Num1,Num2: real;
C :char;
Begin
Clrscr;
(*_ _ _Nhap hai so_ _ _*)
Write(‘Cho so thu nhat:’); readln(Num1);
Write(‘Cho so thu hai:’); readln(Num2);
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’);
3 Hiển thi thông báo ” Đó là số chẳn”
4 Nếu không hiển thị thông báo ”Đó là số lẻ”
•Viết chương trìng BT2_5.PAS nhập vào họ tên và tuổi của 2 học viên, so sánh biết ai lớn tuổi hơn (hoặc bằng ) Kết quả trên màn hình có dạng:
Trang 14Hoc vien 2-> Ho ten: YYYYYYYY Tuoi : YY
Hoc vien XXXXXXXX lon tuoi hon YYYYYYY
Hướng dẫn
Nhập : Ho Ten 1,Tuoi1, Ho Ten2 ,Tuoi2
Xuất : Thông báo
Giải thuật:
1 Nhập HoTen1, Tuoi1, HoTen2, Tuoi2
2 Nếu Tuoi1>Tuoi2 hiển thị thông báo “Hoc vien”, HoTen1, “lon tuoi hon”, HoTen2
3 Nếu không
4 Nếu Tuoi2>Tuoi1 hiển thị thông báo “Hoc vien”, HoTen2, “lon tuoi hon” HoTen1
5 Nếu không
6 Hiển thị thông báo “Hoc vien” , HoTen1 “bang tuoi”, HoTen2
•Viết chương trình BT2_6.PAS nhập vào 3 số và cho biết số lớn nhất và nhỏ nhất là bao nhiêu Kết quả trên màn hình có dạng:
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
= = = = = = = = = = = = = = = = = =
Trang 15Cho số thu nhat: xx
1 Nhập so1, so2, so3
2 Nếu so1+so2>so3 và so2+so3>so1 và so3+so1>so2
3 Hiển thị “Đó là tam giác”
4 Nếu không
5 Hiển thị” Đó không phải là tam giác”
•Viết chương trình BT2_8.PAS nhập vào trị năm dương lịch và cho biết đó có phải là năm nhuần hay không Kết quả in ra màn hinh có dạng:
•Viết chương trình BT2_9.PAS đọc mã số nhân viên, giờ làm việc, mức lương giờ và tính lương Nếu giờ làm việc trên 40 thì tính mức lương bằng 1.5 mức bình thường Kết quả trên màn hình có dạng:
= = = = = = = = = = = = = = = = = = =
CHUONG TRINH TINH LUONG
= = = = = = = = = = = = = = = = = = =
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
Trang 16CHUONG TRINH TINH LUONG
Cho biet ma nhan vien : 1234
Nhap luong nam : 52000Luong tuan = 1000Cho biet ma nhan vien : 999
So gio lam viec : 42Muc luong gio : 10Luong tuan = 440
Trang 17‘A’ ’Z’,’a’ ’z’ :writeln(‘Ban vua nhan mot chu!’);
‘0’ ’9’ :writeln(‘Ban vua nhan mot sô!’);
else :writeln(‘ Ban vua nhan mot dau!’);
end;
(* - kết thúc - *)
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 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 trình BT2_12.PAS nhập tháng, năm rồi in ra số ngày của tháng đó Kết quả trên màn hình có dạng:
Xin cho biết tháng: 2
Xin cho biết năm: 1960
SoNgay = 29 Nếu không
SoNgay = 28
d Hiển thị SoNgay
Trang 18I := I+2;
K := K-1;
Writeln(I+K:2)End; (* while *)
b Number:=4;
While (Number>=0) doBegin
a In trị x và giảm x bớt 0.5 chừng nào x vẫn còn dương
b Đọc trị a,b và c và in tổng của chúng, lặp lại khi không có a,b hoặc c âm
c In bình phương 100 số nguyên dương đầu tiên theo thứ tự tăng
d In lập phương 50 số nguyên dương đầu tiên theo thứ tự giảm
e In căn bật hai 25 số nguyên dương lẻ đầu tiên
f Tính và in bình phưong các số nguyên dương liên tiếp cho đến khi hiệu của bình phương với số bình phương trước đó lớn hơn 50
g In danh sách các điểm (x,y) trên đồ thị của y = x3-3x+1 với x biến thiên từ -2 đến +2 bước nhảy là 0.1
3 Hãy cho biết kết xuất đoạn chương trình sau:
4 Cho biết kết xuất khi thực hiện đoạn chương trình sau:
a For I:= -2 to 3 do Writeln(I:1,’Binh phuong = ‘,sqr(I):1);
Trang 19For I:=1 to 10 do writeln(‘So thu ’,I:2,’ la ’,1+random(100):3);
Gotoxy(28,25); write(‘Xem xong nhan phim bat ky!’);
Repeat Until Keypressed; (* Hàm Keypressed co tri True phim bat ky duoc nhan *)
End
Trang 20•Gõ chương trình BT3_2.PAS sau vào máy và thi hành:
For I :=9 downto 0 do Writeln(‘So thu’,10-I:2,’la’,I:3);
Gotoxy(28,25); write(‘Xem xong nhan phim bat ky!’);
Repeat Until Keypressed;
End
•Viết chương trình BT3_3.PAS tính tổng các số nguyên từ 1 đến n nhập từ bàn phím Kết quả
trên màn hình có dạng:
Tinh tong cac so nguyen tu 1 den n
Trang 21Giải thuật:
1 Đặt Cot = 35, Dong = 10
2 Cho I chạy từ 1 đến 6
a Nhảy đến vị trí Cot, Dong + I
b Cho J chạy từ 1 đến 7 –I : Hiển thị dấu’*’
•Viết chương trình BT3-5.PAS in thành tam giác cân với chiều cao (1 đến 24) nhập từ bàn phím
Kết quả trên màn hình có dạng:
*Cho chiều cao tam giác (1-24):5 * * *
3 Cho I chạy từ 1 đến Cao
a Nhảy đến vị trí (Cot –I,Dong + I)
b Cho J chạy từ 1 đến 2I-1: Hiển thị dấu ‘*’
•Viết chương trình BT3_6.PAS Nhập từ bàn phím N số Xác định số lớn nhất và nhỏ nhất trong các số đã nhập.Kết quả trên màn hình có dạng:
b Nếu X>SoLon thì đưa X vào SoLon
c Nếu X <SoNho thì đưa X vào SoNho
4 Xuất SoNho, SoLon
•Viết chương trình BT3_7 tương tự như BT3_6 nhưng N số được lấy ngẫu nhiên và có trị nhỏ hơn hay bằng 100 Kết quả trên màn hình có dạng:
Tim so lon nhat va nho nhat trong N so ngau nhien
Cho biet N: 5
Cac so ngau nhien: 12 67 56 76 32