Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 28 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
28
Dung lượng
283,69 KB
Nội dung
Lập trình bằng Turbo Pascal 3- Điểm khác nhau căn bản hơn giữa While v Repeat - Until cần nắm vững để vận dụng đúng tình huống l nh sau. Trong cấu trúc Repeat - Until, phần câu lệnh đựơc thực hiện trớc rồi mới kiểm tra điều kiện sau. Trái lại trong cấu trúc While, điều kiện đợc kiểm tra trớc, nếu đúng mới thực hiện lệnh. Do đó nếu dùng Repeat - Until thì phần câu lệnh đợc thực hiện ít nhất l một lần, còn với While có thể câu lệnh không đợc thực hiện lần no. 6.2 Ví dụ minh hoạ Ví dụ 1: Tổng n số hạng đầu tiên của chuỗi điều ho l S = 1+1/2 +1/3 + + 1/n. Hỏi n nhỏ nhất phải l bao nhiêu để S vợt quá một ng- ỡng l số A cho trớc. Uses crt; Var i, A: integer; S: real; Begin Clrscr; Write(' cho so A:' ) ; Readln(A) ; I:=1; S:=1; While S < A do Begin I:=i+1; S:=S+ 1/i ; End; Write(' Can it nhat ' , i , 'so hang' ); End. Ví dụ 2: Tính giá trị của hm sin(x) theo công thức xấp xỉ sinx = x- x 3 /3! + x 5 /5! + x 7 / 7! cho đến khi đạt độ chính xác epsilon cho trớc. So sánh với kết quả nhận đợc khi dùng hm chuẩn sin(x) của Turbo Pascal. uses crt; var eps,x,y,s: real; i, sign: integer; BEGIN clrscr; write(' Cho do chinh xac eps= '); readln(eps); write(' Cho x= '); readln(x); y:=x;s:=x;i:=3;sign:=-1; While (s >= eps) do Begin s:= s*x*x / ((i-1)*i); y:=y+ sign * s; Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 49 Lập trình bằng Turbo Pascal sign:= -sign; i:=i+2; end; writeln(' Sin(x) = ',y:1:5); write(' Sai khac voi ham chuan sin(x) cua TurboPascal la = ', y-sin(x):0:5); readln; END. 7. Xây dựng cấu trúc lặp. Phần ny sẽ trình by một số mẫu hình xây dựng các cấu trúc lặp để xử lí các tình huống hay gặp nhất. 7.1 Điều khiển vòng lặp bằng giá trị canh chừng. Ví dụ: Viết chơng trình để nhập vo v cộng tích luỹ để tính tổng số tiền bán hng từng ngy của một cửa hng. Số lần bán hng nói chung thay đổi từng ngy, không biết trớc. Vì số tiền bán hng l một số dơng nên giá trị 0 không phải l một giá trị hợp lệ. Ta có thể lấy giá trị ny lm dấu hiệu chấm hết dãy số liệu cần nhập. Số 0 l giá trị canh chừng để kết thúc công việc. 1- dữ liệu vo := giá trị đầu tiên ; 2- While dữ liệu vo <> giá trị canh chừng do begin dữ liệu vo:= giá trị tiếp theo ; end; Cụ thể vòng lặp đợc xây dựng nh sau Write(' cho so tien, 0 ket thuc '); Readln(SoTien); WHILE SoTien <> 0 DO Begin TongSo:= TongSo + SoTien; Write(' cho so tien '); Readln(SoTien); End; Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 50 Lập trình bằng Turbo Pascal 7.2 Điều khiển vòng lặp bằng cờ báo Một bi toán thờng hay gặp trong xử lí thông tin l tìm kiếm. Thực chất của việc tìm kiếm l lặp lại nhiều lần phép kiểm tra một điều kiện no đó cho đến khi thoả mãn điều kiện tức l tìm thấy. Khuôn mẫu chung để thực hiện việc tìm kiếm l xây dựng một cấu trúc lặp điều khiển bằng cờ báo nh sau. Một biến kiểu boolean đợc dùng để đánh dấu sự kiện tìm thấy. Nó đợc gọi l cờ báo. Trớc khi vo cấu trúc lặp, cờ báo đợc đặt l False. Khi tìm thấy, cờ báo đợc thiết lập l True v vòng lặp kết thúc. 1- cờ báo:= false; 2- While not cờ báo do begin if tìm thấy then cờ báo:= true; end; Ví dụ: Tìm số chính phơng nhỏ nhất lớn hơn x, số x nhập từ bn phím. Ta duyệt từng số, bắt đầu từ x, để tìm số chính phơng. Khi tìm thấy số đầu tiên thì kết thúc. Cấu trúc lặp đợc xây dựng nh sau. TimThay:= False; So:= x; WHILE not TimThay DO If Trunc(sqrt(So)) = sqrt(So) then TimThay:= True Else So:=So+1; Writeln(' So chinh phuong = ', So); 8. Các lệnh kết thúc sớm vòng lặp hoặc chơng trình. 8.1 Lệnh nhảy không điều kiện - goto Goto nhãn ; Goto l lệnh nhảy không điều kiện, cho phép nhảy từ bất kì nơi no bên trong chơng trình hay chơng trình con đến vị trí đã đánh dấu bằng nhãn. Nhãn l một tên, nh tên biến hoặc l một số nguyên. Cách thực hiện nh sau. Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 51 Lập trình bằng Turbo Pascal 1- Khai báo nhãn: Phải khai báo nhãn tại đầu phần khai báo, trớc khi khai báo các hằng. Cú pháp khai báo nhãn: từ khoá Label, danh sách nhãn, dấu chấm phẩy. Danh sách nhãn l dãy các tên nhãn, cách nhau dấu phẩy. 2- Đánh đấu đích: Trong thân chơng trình vị trí đích sẽ nhảy đến bằng lệnh Goto cần đánh dấu trớc. Cú pháp đánh dấu đích bằng tên nhãn: tên nhãn, dấu hai chấm, câu lệnh đích. 3- Viết câu lệnh Goto nhãn; Lu ý, với lệnh nhảy không điều kiện Goto - Có thể nhảy từ trong vòng lặp ra ngoi. - Không cho phép nhảy từ ngoi vo trong vòng lặp, từ ngoi vo trong chơng trình con. Nói chung nên tránh dùng câu lệnh nhảy không điều kiện Goto khi có thể đợc vì nó phá vỡ cấu trúc của các lệnh điều khiển, khó theo dõi. 8.2 Lệnh chấm dứt sớm vòng lặp. Break; Lệnh Break có tác dụng chấm dứt giữa chừng một vòng lặp dù cha kết thúc. Ví dụ: Kiểm tra một số nguyên q nhập từ bn phím có phải l số nguyên tố hay không. Ta duyệt phép chia q MOD i với i từ 2 đến căn bậc hai của q. Nếu chỉ một phép chia chẵn thì q không phải l số nguyên tố v có thể kết thúc ngay vòng lặp. var i,q: integer; NguyenTo: boolean; begin write('cho so q: '); readln(q); NguyenTo:= True; for i:=2 to trunc(sqrt(q))+1 do if q mod i = 0 then begin NguyenTo:= False; break; end; if NguyenTo then Write(q,' la so nguyen to ') else write(q,' khong nguyen to'); end. Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 52 Lập trình bằng Turbo Pascal Để giải bi toán tìm số nguyên tố lớn nhất nhỏ hơn một số nguyên n nhập vo từ bn phím, có thể lm tơng tự. Ta lại dùng vòng lặp For để duyệt từ n trở xuống v dừng khi tìm thấy số nguyên tố đầu tiên. For q:= n downto 1 do If q l số nguyên tố then break; Chú ý: - Lệnh Break cho phép thoát khỏi mọi kiểu vòng lặp For, While hay Repeat- Unitl. - Nếu có nhiều vòng lặp lồng nhau thì câu lệnh Break cho phép thoát ra khỏi một vòng lặp bên trong nhất chứa nó. Các vòng lặp bên ngoi vẫn hoạt động bình thờng. 8.3 Lệnh thoát khỏi chơng trình con. Exit; Lệnh kết thúc v thoát khỏi chơng trình con. - Nếu ở bên trong chơng trình con thì lệnh ny lm chấm dứt chơng trình con (mặc dù cha đến câu lệnh cuối) v trở về chơng trình bên ngoi đã gọi chơng trình con. - Nếu ở chơng trình chính thì lệnh ny chấm dứt chơng trình chính v dừng. 8.4 Lệnh dừng chơng trình bất thờng. Halt; L lệnh dừng chơng trình chính. Lệnh ny đợc sử dụng khi xảy ra những lỗi, sai sót nghiêm trọng, việc tiếp tục thực hiện chơng trình l nguy hiểm hoặc không có ý nghĩa nữa. Câu hỏi v bi tập 1. Các lỗi hay mắc phải khi viết câu lệnh If, câu lệnh Case l gì. 2. Nêu các điểm khác nhau giữa câu lệnh If v câu lệnh Case. Điểm no l cơ bản. Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 53 Lập trình bằng Turbo Pascal 3. Khi no thì dùng vòng lặp For ? 4. Số lần lặp ít nhất có thể của các vòng lặp For, While, Repeat l bao nhiêu. 5. Vòng lặp no dùng để thực hiện một bảng chọn. 6. Vòng lặp no thờng dùng để kiểm tra việc nhập dữ liệu hợp lệ. Thực hnh. 1. Viết các chơng trình giải phơng trình bậc nhất, phơng trình bậc hai, hệ phơng trình tuyên tính 2 ẩn. Xét đủ các trờng hợp. 2. Viết chơng trình in ra thông báo gõ phím loại no: dấu phép toán + - * / < > , dấu chính tả . ,: ; ! ? chữ số 0,1 9 chữ cái A Z, a z hay các kí hiệu khác. 3. Lm bi 2 nhng dùng câu lệnh If lồng nhau. 4. Nhập một số nguyên N gồm 3 chữ số, in ra mn hình cách đọc số ny bằng lời. 5. Lập chơng trình để tính số ngaỳ trôi qua kể từ đầu năm khi gõ vo một ngy bất kì trong năm. 6. Biết ngy hôm nay l ngy thứ mấy. Viết chơng trình in ra thứ trong tuần của một ngy bất kì D, M, Y. (1<=D<=31, 1<=M<=12, Y= 2001). 7. Viết chơng trình in ra thứ trong tuần của ngy bất kì d,m,y. Thuật toán: thứ = {d+2m+3(m+1) div 5 + y + y div 4 + 1} div 7, với quy ớc tháng 1=tháng 13 năm trớc, tháng 2= tháng 14 năm trớc, các tháng khác giữ nguyên, 0=thứ 7, 1= chủ nhật, 2=thứ hai,v.v 8. Viết chơng tình tính cớc điện thoại, đầu vo l thời gian bắt đầu cuộc gọi v độ di (theo phút). Có giảm giá 1/3 nếu ngoi giờ lm việc, giảm giá một nửa nếu từ 21.00 đến 6.00. Giá chuẩn l x đ/1 phút. 9. Lập chơng trình in ra bảng nhân (bảng cửu chơng). 10. Tìm tất cả các nghiệm nguyên dơng của phơng trình vô định 2x+4y = 100. 11. Giải bi toán cổ:"vừa g vừa chó " v "trăm trâu trăm cỏ " bằng cách thử hết các trờng hợp có thể. 12. Tìm tất cả các số nguyên dơng a,b trong khoảng [1 100] sao cho a 2 + b 2 l số chính phơng. 13. Tính tổng sinx/cosx + (sinx + sin2x/cox+ cos2x) + + (sinx + + sinnx/cox+ + cosnx), số n nhập từ bn phím. 14.Tính giá trị đa thức (theo phơng pháp Horne) P(x) = x + 2x 2 + 3x 3 + + 10x 10 15. Kiểm tra xem số đã cho có phải l số nguyên tố không. 16. Tìm v in ra các số nguyên tố <1000. 17. In ra mn hình các hình tam giác vuông, tam giác cân bằng các dấu *, chiều cao 10 dòng mn hình. 18. In ra chính giữa mn hình một hình tam giác cân bằng các dấu sao * , chiều cao của tam giác nhập từ bn phím. Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 54 Lập trình bằng Turbo Pascal 19. In ra mã ASCII của kí tự gõ từ phím. Chơng trình dừng khi gõ phím số 0. 20. Kiểm tra việc nhập từ bn phím một ngy tháng hợp lệ. Yêu cầu gõ lại cho đến khi đúng. 21. Tìm ớc chung lớn nhất của 2 số nguyên dơng a,b nhập từ bn phím. Tìm ớc chung lớn nhất của 4 số a,b,c,d. 22. Tạo một bảng chọn đơn giản gồm các mục sau: 1- giải phơng trình bậc nhất; 2-giải phơng trình bậc hai; 3-giải hệ phơng trình tuyến tính 2 ẩn; 4- Kết thúc. Gõ các số 1,2,3,4 để chọn công việc tơng ứng. 23. Tìm số n nhỏ nhất để Sn= 1+1/2 +1/3 + + 1/n > a. Số a nhập từ bn phím. 24. Tính gần đúng số theo công thức /4 = 1-1/3 + 1/5 - 1/7 + + (-1) n .1/(2n+1) a-) Khi cho trớc số n b-) Khi cho trớc độ chính xác Epsilon = 10 -5 . (chuỗi đan dấu nên sai số < số hạng cuối cùng). 25. Tính gần đúng sin x = x - x 3 /3 + x 5 /5 - x 7 /7 + với sai số Epsilon cho trớc. So sánh kết quả vơi hm chuẩn sin x của Turbo Pascal. 26. Cho các phơng trình a) y = e x + sinx - 2 = 0, b) y= x.2 x - 1 = 0. Dùng phơng pháp chia đôi dần, tìm nghiệm trong khoảng [0,1] với sai số không vợt quá 10 -5 . Đếm số lần lặp cn thiết. Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 55 Lập trình bằng Turbo Pascal Chơng 5 Định nghĩa Các kiểu dữ liệu đơn giản 1. Khai báo kiểu dữ liệu mới. Các kiểu chuẩn có sẵn nh integer, real, char, boolean l các kiểu thông dụng nhất. Vì thế chúng đã đợc định nghĩa sẵn v ta có thể sử dụng ngay để khai báo các biến nh đã thấy. Các kiểu chuẩn có sẵn không thể đáp ứng đầy đủ nhu cầu xử lí các bi toán thực tế hết sức phong phú v đa dạng. Các ngôn ngữ lập trình nói chung v Turbo Pascal nói riêng, đều cho phép ngời sử dụng có thể định nghĩa các kiểu dữ liệu mới phù hợp với bi toán của mình. 1.1 Cú pháp chung. Khung cú pháp chung để khai báo kiểu dữ liệu mới l: Type tên kiểu = mô tả kiểu dữ liệu mới ; Diễn giải: Từ khoá TYPE, tên kiểu dữ liệu mới, dấu bằng, mô tả kiểu dữ liệu mới, dấu chấm phẩy. Chỉ sau khi khai báo kiểu dữ liệu mới thì mới đợc sử dụng nó trong chơng trình. Nghĩa l có thể khai báo các biến có kiểu đó hoặc xây dựng những kiểu khác dựa trên nó. 1.2 Ví dụ Ví dụ 1: Ta có thể "Việt hoá" một số tên kiểu tiếng Anh bằng cách sau. TYPE SoNguyen = integer; SoThuc = real; KiTu = char; Sau đó có thể sử dụng những tên kiểu Việt hoá ny trong các khai báo biến: VAR TongSo, Dem: SoNguyen; Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 56 Lập trình bằng Turbo Pascal a,b,c: SoThuc; GoPhim, Chon: KiTu; Ví dụ 2: Xét bi toán giải một hệ phơng trình đại số tuyến tính gồm 10 phơng trình, 10 ẩn. Rõ rng l ta sẽ phải lm việc với các véc tơ v ma trận. Cần phải định nghĩa các "kiểu véc tơ gồm 10 thnh phần" v "kiểu ma trận 10 x 10" vì chúng không phải l một kiểu chuẩn, đã có sẵn. TYPE Vecto10 = array [1 10] of real ; Matran10 = array [1 10,1 10] of real ; Bên trái dấu bằng l các tên kiểu mới. Bên phải dấu bằng l mô tả xây dựng kiểu đó. Kiểu Vecto10 sẽ l một dãy 10 số thực liền nhau, kiểu Matran10 sẽ l bộ 100 số thực đợc xếp thnh 10 hng, 10 cột. Y nghĩa của từ khoá Array v cách sử dụng nó sẽ đợc trình by chi tiết trong chơng nói về mảng. Sau khi đã định nghĩa các kiểu Vecto10, Matran10 ta khai báo các biến thuộc kiểu đó nh quy định chung: VAR X,Y: Vecto10; A,B,C: Matran10; Ta sẽ còn gặp nhiều ví dụ về khai báo kiểu dữ liệu mới trong các phần tiếp theo. 2. Kiểu liệt kê. 2.1 Định nghĩa và cú pháp Kiểu liệt kê - Enumerated Scalar Type - l kiểu dữ liệu thô sơ nhất, xác định bằng cách liệt kê tất cả các "giá trị" có thể có của dữ liệu, mỗi giá trị đợc đại diện bằng một tên gọi do ngời lập trình đặt ra. 2.1.1 Cú pháp Phần mô tả kiểu dữ liệu mới trong khai báo kiểu liệt kê có cú pháp nh sau: dấu mở ngoặc, danh sách các tên giá trị, dấu đóng ngoặc. Type tên kiểu = ( danh sách các tên giá trị ) ; Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 57 Lập trình bằng Turbo Pascal ở đây, mỗi tên giá trị l một tên theo đúng quy định đặt tên của Pascal. Danh sách gồm các tên giá trị, cách nhau dấu phẩy. Lu ý cặp dấu ngoặc đơn bao quanh danh sách các giá trị. Sau khi đã khai báo kiểu liệt kê, ta khai báo biến theo đúng quy tắc thông thờng. Var tên biến: tên kiểu ; 2.1.2 2.2.1 Ví dụ. TYPE NgayTrongTuan = (CN, Thu2, Thu3, Thu4, Thu5, Thu6,Thu7); MauCoBan = (Do, Xanh, Vang); XeMoTo = (Honda, Yamaha, Suzuki, Vespa); VAR NgayHocToan, NgayHocTin: NgayTrongTuan ; Xe1, Xe2: XeMoTo ; Mau1, Mau2: MauCoBan ; - Có thể kết hợp khai báo biến kiểu liệt kê kèm với mô tả xác định kiểu cùng một lúc nh sau: VAR NgayHocToan, NgayHocTin: (CN, Thu2, Thu3, Thu4, Thu5, Thu6, Thu7); Mau1, Mau2: (Do,Xanh,Vang); Các biến NgayHocToan, NgayHocTin v Mau1, Mau2 cũng vẫn l những biến kiểu liệt kê, nhng ta không đặt tên cho kiểu m thôi. Việc đặt thêm một tên kiểu mới, dùng từ khoá Type sẽ tiện hơn trong sử dụng v lm chơng trình dễ hiểu hơn. 2.2 Tính chất và các phép toán. Thứ tự trong kiểu liệt kê. Kiểu liệt kê l kiểu có thứ tự. Thứ tự của các giá trị chính l thứ tự liệt kê chúng trong danh sách. Giá trị đứng trớc trong danh sách thì nhỏ hơn giá trị đứng sau. Ví dụ: Thu2 < Thu3 cho kết quả l True, Xanh < Do cho kết quả False. Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 58 [...]... A[1,1] A[1,2] A[1 ,3] A[1,4] A[2,1] A[2,2] A[2 ,3] A[2,4] A [3, 1] A [3, 2] A [3, 3] A [3, 4] A[4,1] A[4,2] A[4 ,3] A[4,4] 2.1.2 Cấu trúc Các phần tử của mảng hai chiều đợc sắp xếổctng bộ nhớ theo thứ tự u tiên hng, nghĩa l lần lợt hết hng 1 đến hng 2 , hng 3, v.v Ví dụ đối với mảng A ở trên, các phần tử sẽ đợc xếp tuần tự trong bộ nhớ nh sau: A[1,1] A[1,2] A[1 ,3] A[1,4] A[2,1] A[2,2] A[2 ,3] A[2,4] A [3, 1] Để truy... trình có những câu lệnh vi phạm hiển điềù ny thì trình biên dịch sẽ báo lỗi Mặt khác, kiểu đoạn con lm chơng trình chặt chẽ hơn, dễ đọc hơn Lu ý rằng kiểu đoạn con không ngăn cản đợc lỗi dữ liệu không hợp lệ, vợt ra ngoi miền giá trị cho phép khi chạy chơng trình Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 61 Lập trình bằng Turbo Pascal 3. 2 Ví dụ minh hoạ Chơng trình sau đây sẽ báo lỗi khi biên dịch do giá... quan hệ - Hai toán hạng phải cùng kiểu So sánh bằng nhau: A = B l True nếu A v B hon ton nh nhau So sánh khác nhau: A B chỉ cho kết quả False khi A v B hon ton nh nhau So sánh nhỏ hơn hay bằng: A = B l True nếu B l tập con của A Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 63 Lập trình bằng Turbo Pascal Chú ý: Không có so sánh nhỏ hơn, lớn hơn... vô hớng đếm đợc bất kì, kể cả kiểu liệt kê, kiểu đoạn con Tuy nhiên, Turbo Pascal hạn chế số phần tử có thể của mỗi giá trị kiểu tập hợp l 256 Nhiều biến thể khác của Pascal cũng hạn chế số phần tử có thể của mỗi giá trị của kiểu tập hợp bằng số giá trị của kiểu Char Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 62 Lập trình bằng Turbo Pascal Sau khi đã khai báo kiểu tập hợp, ta khai báo biến có kiểu tập... nhau dấu phẩy, trong cặp dấu ngoặc vuông Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 69 Lập trình bằng Turbo Pascal Type tên kiểu mảng = Array [ tập chỉ số 1 , tập chỉ số 2 ] of kiểu phần tử; Var biến mảng: tên kiểu mảng ; Ví dụ: TYPE MaTran3x4 = ARRAY [1 3 ,1 4 ] OF real; ÔChữ = ARRAY [1 10, 1 10] OF char ; VAR A,B: MaTran3x4 ; LờiGiải1, LờiGiải2: ÔChữ ; - Chỉ số thứ nhất thờng gọi l chỉ số hng, chỉ số... tuan'); END 3 Kiểu đoạn con 3. 1 Định nghĩa và cú pháp Nếu ta hạn chế bớt miền giá trị của một kiểu vô hớng đếm đợc (nguyên, ký tự, liệt kê) vo trong một đoạn con no đó của miền giá trị của kiểu đó thì sẽ nhận đợc kiểu dữ liệu mới l kiểu đoạn con Mỗi kiểu đoạn con đợc xây dựng dựa trên một kiểu vô hớng đếm đợc lm cơ sở Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 60 Lập trình bằng Turbo Pascal 3. 1.1 Cú pháp... xong Dãy đích Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội Dãy nguồn rỗng 75 Lập trình bằng Turbo Pascal 4.2.2 Minh hoạ Bảng dới đây trình by diễn biến của quá trình sắp xếp mảng gồm 8 số theo thuật giải chèn trực tiếp nh mô tả ở trên Dấu vạch chéo l vách ngăn giữa dãy đích ở bên trái v dãy nguồn ở bên phải Xuất phát: Bớc 1: Bớc 2: Bớc 3: Bớc 4: Bớc 5: Bớc 6: Bớc 7: Bớc 8: 44 44 / 44 12 12 12 12 06 06 55.. .Lập trình bằng Turbo Pascal 2.2.2 Gán giá trị Phép gán với vế phải l một tên giá trị trong danh sách Ví dụ: HomNay:= Thu2; XeMoiNhap:= Honda; Mau1:= Xanh; 2.2 .3 - Các hm chuẩn Ord : cho thứ tự của giá trị đối số trong danh sách liệt kê Thứ tự bắt đầu tính từ 0 Ord (CN) = 0; Ord (Thu2) = 1, v.v Pred: cho giá trị đứng trớc trong danh sách, Pred (Thu2) = CN; Pred (Thu3) = Thu2, v.v Hm... HomNay có gía trị l Thu2 thì không thể viết trực tiếp chữ Thu2 bằng câu lệnh Write(HomNay) Để lm việc ny cần phải xử lí gián tiếp, dùng câu lệnh Case nh sau Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 59 Lập trình bằng Turbo Pascal CASE HomNay OF CN: Write(' Chu Nhat '); Thu2: Write(' Thu hai '); END; Chú ý: 1-Về thực chất, máy sẽ xử lí kiểu liệt kê bằng cách đặt tơng ứng dãy các giá trị đã liệt kê với dãy... TongHang2, TongCot3, TongDuongCheo: Real; BEGIN Clrscr; Writeln(' nhap cac phan tu ma tran theo tung hang '); Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 70 Lập trình bằng Turbo Pascal For i:=1 to 5 do begin Write('cho 5 pt hang thu ',i, ': '); for j:=1 to 5 do read(a[i,j]); end; TongHang2:=0; For j:=1 to 5 do TongHang2:= TongHang2 + a[2,j]; Writeln('Tong hang 2 cua ma tran la:', TongHang2:10:4); TongCot3:=0; For . vô hớng đếm đợc lm cơ sở. Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 60 Lập trình bằng Turbo Pascal 3. 1.1 3. 1.2 3. 1 .3 Cú pháp Phần mô tả kiểu dữ liệu mới trong khai báo kiểu đoạn con có. hay bằng: A <= B l True nếu A l tập con của B. So sánh lớn hơn hay bằng: A >= B l True nếu B l tập con của A. Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 63 Lập trình bằng Turbo Pascal. CNTT - ĐHQG H nội 56 Lập trình bằng Turbo Pascal a,b,c: SoThuc; GoPhim, Chon: KiTu; Ví dụ 2: Xét bi toán giải một hệ phơng trình đại số tuyến tính gồm 10 phơng trình, 10 ẩn. Rõ rng l