Bài ôn tập ngôn ngữ Lập trình Pascal

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.

 

doc38 trang | Chuyên mục: Pascal | Chia sẻ: dkS00TYs | Lượt xem: 2857 | Lượt tải: 1download
Tóm tắt nội dung Bài ôn tập ngôn ngữ Lập trình Pascal, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
Adigit có trị kiểu Boolean xác định một ký tự có là một kí số từ 0 đến 9 không. Dùng IsADigit để viết chương trinh nhập vào một ký tự và cho biết đó có phải là ký số không, kết quả có dạng:
XAC DINH MOT KY TU LA KY SO 0-9
Nhap mot ky tu bat ky (hoac ESC): B
Ky tu da nhap khong phai la ky so
Nhap mot ky tu bat ky(hoac ESC):0
Ky tu da nhap la so 0
Nhap mot ky tu bat ky(hoac ESC):
	Cham dut.
Hướng dẫn
Nhập: KyTu
Xuất: Thông báo
Giải thuật
Giải thuật (*chương trình chính*)
Lặp
a. Nhap ky tu (KyTu:=ReadKey)
b. Nếu IsADigit (KyTu)
 Thông báo ký tự là số
 Nếu không
 Thông báo ký tự không là số
Cho đến khi KyTu = #27 (*mã ASCII của ESC *) 
Giải thuật (*IsADigit(KyTu:Char):boolean *)
 IsADigit = (‘0’ < = KyTu) AND (KyTu<= ‘9’)
Số nguyên tố là số nguyên n>1 mà các ước số dương của nó chỉ là 1 và n. Hãy viết hàm có trị Boolean để xét một số n có phải là số nguyên tố không. Viết chương trình đọc vào các số và hiển thị thông báo “số nguyên tố” hoặc “không phải là số nguyên tố” tương ứng với số nhập vào. Kết quả có dạng:
XAC DINH MOT SO NGUYEN TO
--------------------------------------------
Nhap mot so nguyen (lon hon hoac bang 0):105
So 105 khong phai la so nguyen to
Nhap một so nguyen (lon hon hoac bang 0):13
So 13 la so nguyen to
Nhap mot so nguyen (lon hon hoac bang 0):0
Hướng dẫn
Nhập :So
Xuất: Thông báo.
Giải thuật
Giải thuật (*chuong trinh chinh*)
Lặp
a. Nhập So
b. 	Nếu So>0
Nếu LaSoNTo(So)
Thông báo là số nguyên tố
Nếu không
Thông báo không là số nguyên tố
Cho đến khi So=0
Giải thuật (*LaSoNTo(N:LongInt):boolean*)
Đặt N=abs (N); M=trunc(sqrt(N))
Đặt I=2
Khi (N MOD I0) AND (I<=M) tăng I
LaSoNTO:=(I>M)
KIỂU DỮ LIỆU THỨ TỰ
PHẦN LÍ THUYẾT
Bài tập 1
(a) Viết định nghĩa kiểu liệt kê MonthAbbrev có trị là các tên tắt của các tháng trong năm gồm ba chữ đầu của tên tháng. Tương tự, định nghĩa kiểu miền con MonthNumber gồm các số nguyên từ 1 đến 12.
(b) Viết hàm có tham đối là số của một tháng và có trị thuộc kiểu MonthAbbrev.
Bài tập 2
(a) Viết định nghĩa kiểu miền con Numeral là các kí tự ‘0’, ’1’,……, ’9’ và kiểu Number là miền con các số nguyên từ 0 đến 9.
(b) Viết hàm có tham đối là biến kiểu Numeral và trị là trị số tương ứng. (Hướng dẫn: dùng hàm ord).
(c) Viết hàm khác có tham đối là số nguyên trong phạm vi 0 đến 9, có trị tương ứng kiểu Numeral.( Hướng dẫn: dùng hàm ord và chr).
Bài tập 3
Cho kiểu MonthAbbrev ở bài tập 1, tìm trị của các biểu thức sau:(a) Jan<Aug	(b) Sep<=Sep(c) succ(Sep)	(d) pred(apr)(e) succ(succ(Aug))	(f) pred(pred(Aug))(g) succ(pred(Mar))	(h) succ(pred(Jan))(i) ord(Jun)	(j) ord(Sep)-ord(Jan)(k) ord(succ(May))-ord(May)(l) chr(ord(Sep)+ord(‘0’))
Bài tập 4
Viết hàm hoặc thủ tục có các tham đối là số nguyên không âm n và tên tắt của tháng Abbrev như ở bài tập 1 và tìm hậu tử thứ n của Abbrev. Hậu tử thứ 0 của Abbrev chính là Abbrev; với n>0, hậu tử thứ n của Abbrev là thánh thứ n sau Abbrev. Ví dụ hậu tử thứ tư của Aug là Dec và thứ sáu của Aug là Feb.
Bài tập 5
Như bài tập 4 nhưng với hàm hoặc thủ tục đệ qui.
Bài tập 6
Viết hàm có các tham đối là một tháng kiểu MonthAbbrev (xem như bài tập 1) và năm trong khỏang từ 1538 đến 1999 có trị là số ngày của tháng.Nhắc lại tháng February có 28 ngày,trừ năm nhuần có 29 ngày.Năm nhuần là năm chia chẵn cho 4 trừ các năm chia chẵn cho 100 phải chia chẵn cho 400 mới là năm nhuần. (như vậy 1950 và 1900 không là năm nhuần,nhưng 1960và1600 là nhuần).
PHẦN THỰC HÀNH
Dùng các hàm ở bài tập 6 (phần lý thuyết) để viết chương trình đọc hai ngày có dạng dd mm yyyy (ví dụ 4 7 1776 và 1 1 1990) và tính số ngày giữa hai ngày.
MẢNG MỘT CHIỀU
PHẦN LÝ THUYẾT
Cho các khai báo sau:
TYPE
Color = (red, yellow, blue, green, white, black);
ColorArray = ARRAY[Color] OF real;
LittleArray = ARRAY[1..10] OF integer;
CharCountArray = ARRAY[‘A’. . ’F’] OF integer;
VAR
Price : ColorArray; Number : LittleArray;
LetterCount : CharCountArray;
i : integer; Ch : char; Col : color;
Trong mỗi trường hợp sau, cho biết trị nào sẽ gán (nếu có) cho các phần tử mảng hoặc giải thích tại sao bị lỗi :
FOR i := 1 TO 10 DO Number[i] := i DIV 2;
FOR i := 1 TO 6 DO Number[i] := i*i;
FOR i := 1 TO 10 DO Number[i] := Number[i – 5];
i := 0;
WHILE (i 10) DO 
BEGIN
IF ( i MOD 3) = 0 THEN Number[i]:=0 ELSE Number[i] := i;
i := i + 1;
END;
Number[i] := 1;
i := 2;
REPEAT
Number[i] := 2 * Number[i – 1]; i := i + 1;
UNTIL (i = 10);
FOR Ch :=’A’ TO ‘F’ DO
IF (Ch =’A’) THEN LetterCount[Ch] :=1
ELSE LetterCount[Ch] :=LetterCount[pred(Ch )] + 1;
FOR Col := yellow TO white DO Price[Col] :=13.95;
FOR Col := red TO black DO 
CASE Col OF
red,blue 	: Price[Col] := 19.95;
yellow 	: Price[Col] :=12.75;
green,black 	: Price[Col] := 14.50;
white 	:
END;
Trong bảy trường hợp sau, viết các khai báo và mệnh đề thích hợp để tạo mảng :
Mảng có chỉ mục là số nguyên đi từ 0 đến 5 và mỗi phần tử cũng giống như chỉ mục.
Mảng có chỉ mục là số nguyên đi từ -5 đến 5 và mỗi phần tử cũng giống như chỉ mục nhưng theo thứ tự ngược lại.
Mảng có chỉ mục là các chử HOA, và mỗi phần tử cũng giống như chỉ mục.
Mảng chỉ có chỉ mục là những số nguyên đi từ 1 đến 20 và mỗi phần tử có trị TRUE nếu chỉ mục tương ứng là chẵn và FALSE trong trường hợp ngược lại .
Mảng có chỉ mục là những chữ HOA và mỗi phần tử là chữ đứng ngay trước chỉ mục tương ứng trừ phần tử tương ứng với chỉ mục ‘A’ là ‘Z’.
Mảng có chỉ mục là những chữ HOA và mỗi phần tử là vị trí chỉ mục tương ứng trong dãy ‘A’ .. ‘Z’.
Mảng có chỉ mục là các chữ thường, và mỗi phần tử là TRUE nếu chỉ mục là nguyên âm, và FALSE trong trường hợp ngược lại.
PHẦN THỰC HÀNH
Viết chương trình tạo n số ngẫu nhiên có trị từ 1 đến 100 và chứa vào mảng A, sau đó sắp thứ tự A theo trị tăng dần. Kết quả trên màn hình có dạng :
Cho biết số phần tử mảng ( tối đa là 20): 7
Tạo mảng có trị ngẫu nhiên : 12, 23, 2, 53, 78, 91, 23
Mảng sắp theo thứ tự : 2, 12,23, 53, 78, 91
Viết chương trình tạo n số ngẫu nhiên khác nhau có trị từ 1 đến n và chứa vào mảng A. Kết quả trên màn hình có dạng:
Cho biết số phần tử mảng ( tối đa là 20) : 4
Tạo mảng gồm 4 trị ngẫu nhiên khác nhau : 53, 78, 91, 23
Hướng dẫn: 
Dùng kỹ thuật đánh dấu: Tạo mảng B gồm n phần tử có trị ban đầu là FALSE. Sau đó, khi lấy số ngẫu nhiên n cho A[i], nếu B[n] là FALSE thì gán n cho A[i] và TRUE cho B[n], nếu B[n] là TRUE thì lấy trị ngẫu nhiên khác .
Viết chương trình tạo n số ngẫu nhiên có trị từ 1 đến 100 và chứa vào mảng A. Sau đó kiểm tra và cho biết A có được sắp theo thứ tự tăng không. Kết quả trên màn hình có dạng :
Cho biết số phần tử mảng (tối đa là 20 ) : 7
Tạo mảng có trị ngẫu nhiên: 12,23,2,53,78,91,23
Mảng trên không theo thứ tự tăng.
Hướng dẫn : 
Sau khi tạo mảng, đặt biến CoThuTu bằng TRUE. Sau đó kiểm tra liên tiếp các phần tử A[i] và A[i + 1] có đúng thứ tự không (tức là A[i] <= A[i + 1], nếu có một cặp nào đó không đúng thứ tự thì gán CoThuTu bằng FALSE và kết thúc việc kiểm tra .
Viết chương trình tạo 2 mảng A và B có n phần tử là các số ngẫu nhiên từ 1 đến 100. Trộn A và B và đưa vào mảng C có 2n phần tử theo thứ tự luân phiên (một phần tử của A rồi một phần tử của B). Kết quả trên màn hình có dạng :
Cho biết số phần tử mảng (tối đa là 20) : 4
Mảng A có trị ngẫu nhiên : 	12, 23, 29, 53
Mảng B có trị ngẫu nhiên : 	21, 32, 92, 35
Mảng C : 	12, 21, 23, 32, 29, 92, 53, 35
CHUỔI KÝ TỰ 
PHẦN THỰC HÀNH
Viết chương trình nhập vào 1 chuỗi và in ra theo thứ tự ngược lại. Kết quả trên màng hình có dạng :
Hay nhap 1 chuoi : DAY LA MOT CHUOI
Chuoi nguoc : IOUHC TOM AL YAD
Viết chương trình nhập vào 1 chuỗi và in ra các kí tự của chuỗi theo cột dọc. Kết quả trên màn hình có dạng :
Hay nhap mot chuoi : XUAN
Cac ky tu cua chuoi :
X
UAN
Nhập từ bàn phím một câu tiếng anh và in ra số nguyên âm A,E,I,O,U có trong câu. Kết quả trên màn hình có dạng:
Hay nhap mot cau tieng anh : Forget Me Not
So nguyen am(A,E,I,O,U) : 4
Đọc từ bàn phím một chuỗi ký tự, biến mỗi ký tự trong chuỗi thành ký tự tiếp theo trong bản mã ASCII. Kết quả trên màn hình có dạng :
Hay nhap mot chuoi : XUAN
Chuoi da bien doi : YVBO
Viết chương trình nhập vào một chuỗi, sau đó biến đổi tất cả các chữ thường thành chữ HOA. Kết quả có dạng :
Nhap vao mot chuoi : Tram Nam Co Don
Doi thanh chu hoa : TRAM NAM CO DON
Viết chương trình nhập vào một chuỗi. Sau đó biến đổi tất cả các chữ hoa thành chữ thường . Kết quả có dạng :
Nhap vao mot chuoi : Tram Nam Co Don
Doi thanh chu thuong : tram nam co don
Viết chương trình nhập vào một chuỗi. Biến đổi chuỗi này thành chuỗi khác bằng cách chuyển kí tự đầu tiên ra phía sau và thêm chữ ‘A’. Kết quả có dạng :
Nhap vao mot chuoi : Xuan Ha
Chuoi bien thanh : uan HaXA
Viết chương trình nhập vào một chuỗi và in ra chuỗi đó thành nhiều dòng, mỗi dòng bỏ bớt một ký tự ở bên trái. Kết quả có dạng :
Nhap vao mot chuoi : Thu Dong
Ket qua : 	
Thu Dong
hu Dong
u Dong
 Dong
Dong
ong
ng
g
Một xí nghiệp sản xuất xà bông chọn tên cho các sản phẩm của mình theo yêu cầu sau :
Tên sản phẩm dài năm mẫu tự .
Ký tự thứ 2 và 4 chọn một trong các chữ A, E, I, O, U.
Ký tự thứ 1, thứ 3 và thứ 5 chọn một trong các ký tự còn lại (B đến Z).
Hãy viết chương trình tạo ngẫu nhiên N tên xà bông theo yêu cầu trên.
Viết chương trình đếm số ký tự kép trong một chuỗi nhập vào (ví dụ chuỗi ‘12AAB33CD‘ có 2 ký tự kép AA và 33, chuỗi ‘12345’ không có ký tự kép nào).
Viết chương trình nhập vào một chuỗi. Biến đổi chuỗi này thành chuỗi khác (mã hóa) bằng cách thay thế mỗi ký tự thành một ký tự khác định trước. Ví dụ :
Ký tự : 	A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Thay bằng : 	Q W E R T Y U I O P A S D F G H J K L Z X C V B N M
Chuoi nhap 	: PASCAL
Ma hoa thanh 	: HQLEQS
Một chuỗi được gọi là ‘xuôi ngược‘ nếu nó không đổi khi thứ tự các ký tự trong chuỗi bị đảo lại. Ví dụ MADAM, 463364 là các chuỗi xuôi ngược. Hãy viết chương trình nhập vào một chuỗi và cho biết nó có phải là một chuỗi xuôi ngược không.
Viết lại bài tập trên dưới dạng một thủ tục đệ qui.
MỤC LỤC

File đính kèm:

  • docBài ôn tập ngôn ngữ Lập trình Pascal.doc
Tài liệu liên quan