Bài giảng Tin học đại cương - Chương 5: Lập trình với Pascal - Trần Phước Tuấn

1. Một vài ví dụ làm quen 2. Giải thích chương trình 3. Cấu trúc chương trình 4. Các lệnh cơ bản 5. Kiểu dữ liệu, biến 6. Nhập xuất dữ liệu 7. Câu lệnh, khối lệnh 8. Câu lệnh rẽ nhánh 9. Câu lệnh lặp 10. Thủ tục, hàm 11. Kỹ thuật đệ quy 12. Kiểu bảng ghi, tập hợp, miền con 13. Mảng, chuỗi 14. Làm việc với tập tin 15. Thư viện đồ họa trong pascal

pdf32 trang | Chia sẻ: candy98 | Lượt xem: 570 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài giảng Tin học đại cương - Chương 5: Lập trình với Pascal - Trần Phước Tuấn, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
1LẬP TRÌNH VỚI PASCAL Trần Phước Tuấn tranphuoctuan.khoatoan.dhsp@gmail.com Nội dung 1. Một vài ví dụ làm quen 2. Giải thích chương trình 3. Cấu trúc chương trình 4. Các lệnh cơ bản 5. Kiểu dữ liệu, biến 6. Nhập xuất dữ liệu 7. Câu lệnh, khối lệnh 8. Câu lệnh rẽ nhánh 9. Câu lệnh lặp 10. Thủ tục, hàm 11. Kỹ thuật đệ quy 12. Kiểu bảng ghi, tập hợp, miền con 13. Mảng, chuỗi 14. Làm việc với tập tin 15. Thư viện đồ họa trong pascal 2Chương trình Borland Pascal 7.0 Ấn Alt+F để vào menu File - Mở tập tin có sẵn: F3 - Đóng tập tin hiện tại: Alt+F3 - Mở tệp mới: Alt+F New (File  New) - Lưu tệp vào đĩa: F2 -Lưu tập tin với một tên khác: Save as -Lưu tất cả các tập tin đang mở: Save all - Đổi thư mục mặc định: Change dir - Về DOS tạm thời: DOS shell - Thoát khỏi Borland Pascal 7.0: Alt+X (Exit) Chương trình Borland Pascal 7.0 Ctrl + F9: Biên dịch và thực thi chương trình. Alt + F5: Xem màn hình kết quả. Alt + F9: Biên dịch chương trình Tập tin cùng tên, có đuôi exe được tạo ra cùng thư mục 3Ví dụ mở đầu 1. Ví dụ 1: * Source code ( mã nguồn) (Ctr + F9: biên dịch và thực thi chương trình) * Kết xuất màn hình: Hello world! (Alt + F5 để xem màn hình kết xuất) * Thêm vào lệnh: Readln; sau writeln(‘ Hello world’); * Biên dịch và chạy là để xem kết quả. Begin Writeln(‘Hello world’); End. Ví dụ mở đầu 2. Ví dụ 2: * Source code * Kết xuất màn hình 7 + 5 = 12 Var a,b,c :integer; begin a:=7; b:=5; c:= a + b; writeln(a,’ + ‘,b,’ = ‘,c); readln; end. 4Ví dụ mở đầu 3. Ví dụ 3: * Source code * Kết xuất màn hình Day la chuong trinh tinh tong hai so Nhap a: 15  {Người dùng nhập} Nhap b: 17 {Người dùng nhập} Tong cua 15 va 17 la 32 Uses crt; Var a,b,c:integer; Begin Clrscr; {lệnh xóa màn hình} Writeln(‘Day la chuong trinh tinh tong hai so’); Write(‘Nhap a: ‘); Readln(a); Write(‘Nhap b: ‘): Readln(b); c:= a + b; writeln(‘tong cua ‘,a,’ va ‘,b,’ la ‘,c); readln; end. Cấu trúc một chương trình pascal  Tiêu đề của chương trình (Program vidu;)  Phần khai báo  Khai báo thư viện (Uses crt;)  Hằng, biến (Const, Var),  Mô tả kiểu dữ liệu mới (Type)  Khai báo chương trình con (Procedure, Function)  Phần thân chương trình  Chứa các lệnh để máy tính thực hiện  Các câu lệnh nằm giữa: begin ; end. 5Kiểu dữ liệu  Kiểu dữ liệu là một bộ T trong đó  Tập A: tập tất các các giá trị mà kiểu dữ liệu T có thể lưu trữ được.  Tập B: tập tất cả các phép toán có thể thao tác trên kiểu T.  Ví dụ: kiểu integer  Tập A: các giá trị nguyên [-32768,32767]  Tập B: các phép toán: +, -, *, /, div, mod, >, =, , Kiểu dữ liệu – Kiểu số nguyên 4-2147483648 .. 2147483647LongInt 20 .. 65535Word 2-32768 .. 32767 Integer 10..255Byte 1-128 .. 127 ShortInt Số bytePhạm vi gía trịTên kiểu 6Kiểu dữ liệu – Kiểu số nguyên y=y div 2; y=y mod 2; Chia lấy thương, chia lấy dưdiv,mod y=x*z;Nhân, chia*,/ y=x+z;Cộng, trừ+,- x>=ylớn hơn hoặc bằng>= x>ylớn hơn> x<=ynhỏ hơn hoặc bằng<= x<ynhỏ hơn< xykhác nhau x=ybằng nhau = Ví dụÝ nghĩaKý hiệu Kiểu dữ liệu – Kiểu số nguyên 0 XOR 0=00 OR 0=00 AND 0=0 0 XOR 1=10 OR 1=10 AND 1=0 1 XOR 0=11 OR 0=11 AND 0=0NOT 0 = 1 1 XOR 1=0 1 OR 1=11 AND 1=1NOT 1 = 0 7Kiểu dữ liệu – Kiểu số nguyên  N SHR k : dịch các bít của số nguyên N sang phải đi k bít.  N SHL k : dịch các bít của số nguyên N sang trái đi k bít.  Có thể chứng minh được : N SHR k = N div 2k N SHL k = N * 2k  Ví dụ: 120 shr 4 = 7, vì : 120 shr 4 = 120 div 24 = 120 div 16 = 7. 120 shl 3 = 960, vì : 120 shl 3 = 120 * 23 = 120 * 8 = 960.  Hai phép toán SHR và SHL được dùng khi muốn tăng tốc độ tính toán trên các số nguyên. Kiểu dữ liệu – char M L K J I H G F E D C B A KT 77 76 75 74 73 72 71 70 69 68 67 66 65 MÃ m l k j i h g e f d c b a KT 109 108 107 106 105 104 103 102 101 100 99 98 97 MÃ MÃKTMÃKT 122z90Z 121y89Y 120x88X 119w87W 118v86V 117u85U 116t84T 115s83S 114r82R 113q81Q 112p80P 111o79O 110n78N Mã chữ thường = Mã chữ hoa tương ứng + 32 Thường :=Chr(Ord(Hoa)+32) 8Kiểu dữ liệu – char 57‘9’ 56‘8’ 55‘7’ 54‘6’ 53‘5’ 52‘4’ 51‘3’ 50‘2’ 49‘1’ 48‘0’ 32‘ ’ MÃKT Mã của ký tự số i = số i + 48 (với 0<=i<=9) Khoảng trắng Kiểu dữ liệu – char  Hàm PRED(ch): cho ký tự đứng ngay trước ch trong bảng mã. Ví dụ: Pred(‘B’) = ‘A’  Hàm SUCC(ch): cho ký tự đứng ngay sau ch trong bảng mã. Ví dụ: Succ(‘A’) có giá trị là ‘B’.  Hàm UpCase(ch): đổi ký tự ch thành chữ hoa. Ví dụ: Upcase( ‘a’ ) = ‘A’, Upcase( ‘b’ ) = ‘B’, Upcase( ‘A’ ) = ‘A’ .  Hàm ORD(ch) : cho mã của ký tự ch. Ví dụ: Ord (‘A’) = 65, Ord (‘a’) = 97 .  Hàm CHR(k): k nguyên, 0<=k<=255, cho ký tự có mã bằng k. Ví dụ: Chr (65)= ‘A’ Chr (97)= ‘a’ Chr(32) là ký tự trắng. 9Kiểu dữ liệu – boolean TrueFalse FalseTrue not AA FalseFalseFalseFalseFalse TrueTrueFalseTrueFalse TrueTrueFalseFalseTrue FalseTrueTrueTrueTrue A xor BA or BA and BBA 1. A and B là đúng khi và chỉ khi A và B đồng thời đúng. (Do đó chỉ cần một trong hai biến A hoặc B sai thì A and B sẽ sai). 2. A or B là sai khi và chỉ khi A và B đồng thời sai. (Do đó chỉ cần một trong hai biến A hoặc B đúng thì A or B sẽ đúng). 3. A xor B là đúng khi và chỉ khi A khác B. Kiểu dữ liệu – string Hàm cho biết độ dài của chuỗi Giá trị trả về là số nguyên. length() Thủ tục đổi một số sang một chuỗi. VD: str(10.2,chuoi); Trong đó chuoi là biến kiểu string str(,) ‘Anh’ < ‘an’ là đúng vì ‘A’ < ‘a’ ‘Thong’ > ‘Tha’ là đúng vì ‘o’ > ‘a’>,=, Phép cộng (nối 2 chuỗi) kq:=‘Borland ’ + ‘Pascal.’ Thì kq nhận giá trị: ‘Borland Pascal.’ + Giải thíchPhép toán Xem thêm tài liệu về các hàm, thủ tục liên quan đến chuỗi: delete, insert, strcat, strcopy, 10 Kiểu dữ liệu – string  Biến nhận giá trị là các hằng chuỗi gọi là biến kiểu chuỗi.  Có thể khai báo hai biến chuỗi như sau: Var Ho_ten : string[20]; st : string;  Khi đó Ho_ten là biến chuỗi có thể chứa tối đa 20 ký tự, còn biến chuỗi st có thể chứa tối đa 255 ký tự, và ta có thể gán : Ho_ten := ‘Nguyen Van An’; st :=‘Viet chuong trinh bang ngon ngu Pascal’; Xem thêm phần khai báo biến Biến  Biến dùng để lưu trữ dữ liệu đưa từ bên ngoài vào bên trong chương trình để có thể truy xuất, xử lý và xuất ra lại. Một biến bất kỳ phải thuộc một kiểu dữ liệu nào đó điều này giúp cho ngôn ngữ biết các phép toán có thể thực hiện trên biến này. Được thể hiện ở việc khai báo biến. 11 Biến – Khai báo  Cú pháp var : ;  Danh sách biến: gồm một hoặc nhiều tên biến cách nhau bởi dấu phẩy (,)  Kiểu dữ liệu: là một trong các kiểu dữ liệu chuẩn của TP  Sau từ khóa VAR, có thể khai báo nhiều danh sách biến khác nhau với cấu trúc: : ;  Ví dụ var a,b,c:real; x,y,z:integer; hoten: string; Biến – Nguyên tắc đặt tên  Không đặt tên biến trùng với các từ khóa  Tên biến không chứa khoảng trống và các ký tự đặt biệt như: +,-,,(,),?,.,  Tên biến không bắt đầu bằng số, tên biến phải được bắt đầu bằng ký tự chữ hoặc dấu gạch chân.  Theo sau ký tự đầu tiên có thể là các ký tự chữ, số hoặc dấu gạch chân. 12 Biến - Lời khuyên về cách đặt tên  Không nên viết hoa tất cả các ký tự.  Không nên bắt đầu bằng dấu gạch chân.  Tránh viết tắt quá nhiều dẫn đến tên biến tối nghĩa.  Nên đặt tên biến có tên gợi nhớ đến kiểu dữ liệu và ý nghĩa lưu trữ của nó. Ví dụ var s_nameStudent: string;r_markEnglish: real; Ví dụ về tên biến không hợp lệ  3a_1 (ký tự đầu là số)  num-odd (sử dụng dấu gạch ngang-dấu trừ)  Real (đặt tên trùng với từ khóa)  del ta (có khoảng trắng)  f(x) (có dấu ngoặc tròn) Ví dụ về tên biến hợp lệ  iNumber  Ho_Ten Biến – ví dụ về đặt tên biến 13 Nhập xuất dữ liệu  write: lệnh xuất ra màn hình  writeln: lệnh xuất ra màn hình đồng thời xuống dòng  write (); (các biến cách nhau bởi dấu ,)  writeln();  Ví dụ:  Writeln(‘Hello World!’);  Writeln(a,’+’,b,’=‘,a+b); Nhập xuất dữ liệu  readln: dừng chương trình lại đợi cho đến khi người dùng bấm enter   readln () : nhập giá trị cho các biến.  Ví dụ:  Readln(a,b,c);  Readln(z); 14 Câu lệnh gán  Khái niệm: Là một trong những câu lệnh cơ bản nhất của một ngôn ngữ lập trình bất kì nói chung  Cú pháp: :=;  Chức năng: tính giá trị của và ghi giá trị đó vào vùng nhớ của biến có tên ở vế trái dấu :=, nghĩa là gán giá trị cho biến.  Ví dụ: x1 := (-b+sqrt(b*b-4*a*c))/(2*a); x2 := -b/a-x1; i := i+1; Phép toán 15 Biểu thức Thứ tự ưu tiên 16 Thứ tự ưu tiên – Quy tắc  Quy tắc 1: các phép toán nào có ưu tiên cao hơn sẽ được tính trước.  Quy tắc 2: trong các phép toán có cùng thứ tự ưu tiên thì sự tính toán sẽ được thực hiện từ trái sang phải.  Quy tắc 3: phần trong ngoặc từ trong ra ngoài được tính toán để trở thành một giá trị đơn. Câu lệnh, khối lệnh  Câu lệnh  Câu lệnh là một tác vụ có nhiệm vụ xác định một công việc mà máy tính phải thực hiện để xử lý các dữ liệu đã được mô tả và khai báo.  Có hai loại câu lệnh:  Lệnh đơn giản: Read(a);Readln(b);Write, Writeln; RESET, REWRITE, ASSIGN; gọi hàm, thủ tục,  Lệnh có cấu trúc:If then else ;While do , for to/downto do ;repeat until ,  Khối lệnh  Là câu một hay nhiều câu lệnh đặt giữa begin và end.  Ví dụ: Begin x:=x+2; i:=i+1; End; 17 Câu lệnh rẽ nhánh  Câu lệnh if  Công dụng  Cú pháp  Bài tập  Câu lệnh case of [else ] end;  Công dụng  Cú pháp  Bài tập Câu lệnh rẽ nhánh - if  Công dụng: Sử dụng giải quyết những trường hợp liên quan đến việc giải bài toán có sự biện luận, phân chia trường hợp.  Cú pháp  Lưu ý: Trước else không có dấu chấm phẩy (;) if () then [else ] //thực hiện khi đúng // thực hiện khi sai 18 Biểu thức Logic (true/false) Câu lệnh Khối lệnh Câu lệnh Khối lệnh true false Câu lệnh rẽ nhánh - if 1. Nhập a, b, c. Tìm max. Phát triển nhiều số 2. Giải phương trình ax+b=0 3. Giải phương trình ax2+bx+c=0 4. Giải hệ phương trình: a1x+b1y=c1 a2x+b2y=c2 5. Nhập vào điểm trung bình, hãy xếp loại học tập 6. Tính tiền điện (nhập vào số kw) 7. Dạng tam giác (nhập a, b,c ) 8. Nhập vào 1 tháng, cho biết tháng này thuộc quý mấy? Một số bài tập Câu lệnh rẽ nhánh - if 19 Câu lệnh rẽ nhánh – case of Câu lệnh rẽ nhánh – case of  Công dụng: Sử dụng giải quyết những trường hợp liên quan đến việc giải bài toán có sự biện luận, phân chia nhiều trường hợp.  Cú pháp CASE OF : ; : ; ........... : ; ELSE ; END; Diễn giải So sánh giá trị của với từng giá trị trong : • Nếu có một giá trị nào bằng thì thực hiện: • Ngược lại thì thực hiện: Hãy so sánh if với case of 20 Một số bài tập 1. Viết chương trình nhập vào tháng, in ra tháng đó có bao nhiêu ngày 2. Viết chương trình nhập vào 2 số x, y và 1 trong 4 toán tử +, -, *, /. Sau đó thực hiện phép tính (nếu y = 0 thì thông báo không chia được) Câu lệnh rẽ nhánh – case of Câu lệnh lặp – Tổng quan : ; if () then goto ; FOR := TO DO ; Hoặc: FOR := DOWNTO DO ; while() do ; repeat ; until(); 21 Câu lệnh lặp – Diễn giải : ; Nếu () thì nhảyđến ; cho := lên đến làm ; Hoặc: cho := xuống làm ; TrongKhi() làm ; LặpLại ; Cho đến khi(); Hãy phân biệt – so sánh các loại vòng lặp Hãy tính S = 1+2++n i:=1;s:=0; moc: {Phải khai báo nhãn} s:=s+i; i:=i+1; if (i<=n) then goto moc; s=0; for i:=1 to n do s:=s+i; i:=1;s:=0; while (i<=n) do begin s:=s+i; i:=i+1; end; i:=1;s:=0; repeat s:=s+i; i:=i+1; until(i>n); Câu lệnh lặp – Ví dụ 22 1. Viết hàm, thủ tục: 1. Truyền vào ký tự và số n. In ra n ký tự đó 2. In hcn các dấu * có kích thước m*n 3. In hcn rỗng các dấu * có kích thước m*n 4. In tam giác cân các dấu * có chiều cao h 5. In tam giác rỗng các dấu * có chiều cao h 2. Tính các tổng sau: 1. S = 1 + 2 + + n 2. S = 2 + 4 + + 2.n (tổng các số chẵn <=n) 3. S = 12+22+ + n2 4. S = 1.2+2.3+ + n.(n+1) 5. S = 1/2 + 2/3 + n/(n+1) 3. Viết hàm, thủ tục: 1. Nhập n số, tính tổng. 2. Nhập n số, tìm max 4. Tính số hạng thứ n của dãy fibonaci (f0=f1=1, fn=fn-1+fn-2) 5. Tìm UCLN, BCNN của hai số a,b ( Bảng ghi Phân số) 6. Rút gọn phân số 7. In ra các ước số dương thực sự của n (n=6 thì các ước số là 1,2,3) 8. Tổng các ước số dương thực sự của n 9. Tổng các số chẵn <=n 10. T = n! 11. Kiểm tra n có phải là số nguyên tố hay không 12. Kiểm tra n có phải là số chính phương hay không 13. Phân tích n thành tích các thừa số nguyên tố Câu lệnh lặp Bài tập Hàm – Tổng quan  Hàm sqrt(x) cho căn hai của x.  Tên hàm là sqrt  Tham số x là số nguyên hay số thực (tập nguồn)  Giá trị hàm kiểu thực (tập đích)  Ví dụ sqrt(4)=2.0  Nhớ lại các hàm trong toán học để có sự liên hệ với môn học  Khi nói đến hàm ta quan tâm đến 3 yếu tố  Tập nguồn  Tập xác định, miền xác định.  Đối với tin học thì đây là thông tin đầu vào  Tập đích  Tập giá trị, miền giá trị.  Đối với tin học thì đây là thông tin đầu ra  Quy tắc của hàm  Để xác định 1 phần tử thuộc Tập nguồn  1 phần tử thuộc Tập đích  Trong tin học thì đó là những câu lệnh nhằm xác định thông tin đầu ra từ thông tin đầu vào Người sử dụng hàm quan tâm Người viết hàm quan tâm 23 Hàm – Ví dụ hàm có sẵn  Hàm sqrt(x): cho căn hai của x. Tên hàm là sqrt, tham số x là nguyên hay thực còn gía trị hàm kiểu thực, ví dụ sqrt(4)=2.0.  Hàm chr(k): cho ký tự có mã là k. Tên hàm là chr, tham số k kiểu nguyên còn gía trị hàm kiểu ký tự, ví dụ chr(65)=‘A’.  Hàm odd(k): cho True hay False tùy theo k là lẻ hay chẵn. Tên hàm là odd, tham số k kiểu nguyên và gía trị hàm kiểu lôgic, ví dụ odd(4)=False.  Hàm copy( st, k, n): cho chuỗi con gồm n ký tự của st tính từ vị trí k. Tên hàm là copy, có ba tham số là st kiểu chuỗi, k và n kiểu nguyên, và gía trị hàm kiểu chuỗi, ví dụ copy(‘ABCD’, 2, 3) = ‘BCD’.  Hàm readkey: không có tham số, gía trị hàm kiểu ký tự, hàm nhận một ký tự được gõ từ bàn phím. Hàm – Ví dụ hàm có sẵn 24 Hàm – Hàm tự viết Hàm – Cú pháp function (ds tham số) : kiểu_giá_trị; const ... type ... var ... begin {Các lệnh của hàm} :=; end; Kiểu dữ liệu của kết qủa của hàm không thể là mảng (array), bản ghi (record), tập hợp (set) hay tập tin (file). 25 Thủ tục  Giống như hàm, thủ tục cũng là một chương trình con, song thủ tục khác hàm ở chỗ: nếu như hàm luôn trả về một gía trị duy nhất thông qua tên hàm thì thủ tục lại không trả về một giá trị nào.  Ví dụ:  Thủ tục readln(x, y, z) có nhiệm vụ nhập các gía trị từ bàn phím cho các biến x, y, z.  Thủ tục write(x, y, z) in gía trị của x, y, z .  Thủ tục gotoxy(x, y) định vị con trỏ vào toạ độ cột x, dòng y trên màn hình.  Thủ tục clrscr thì chỉ đơn giản là xóa màn hình .v.v. .  Như vậy thủ tục có thể không có tham số hoặc có từ một đến nhiều tham số. Thủ tục – Cú pháp procedure (); {khai báo const, type, var dùng trong thủ tục } begin {Các lệnh của thủ tục } end; Hãy so sánh cú pháp của thủ tục và hàm 26 Thủ tục Thủ tục, hàm - Truyền tham số  Truyền tham số trị  Khái niệm  Tác dụng của nó đến biến sau khi ra khỏi chương trình con.  Truyền tham số biến  Khái niệm  Tác dụng của nó đến biến sau khi ra khỏi chương trình con Thủ tục và hàm có một tên gọi chung là chương trình con 27 Thủ tục, hàm – Truyền tham số  Truyền tham số trị - khái niệm  Trong phần khai báo tham số hình thức của chương trình con, các tham số không có từ khóa var phía trước được gọi là tham số trị  Trong lời gọi chương trình con các tham số trị thực sự có thể là biến, hằng hay biểu thức.  Ví dụ:  x:=max(a,b,5); y:=max(a+1,4,5);  Xem lại các ví dụ về thủ tục và hàm trong các phần trước. Thủ tục, hàm – Truyền tham số  Truyền tham số trị - tác dụng  Tham số trị hình thức được cấp một ô nhớ riêng khi chương trình con được gọi và bị xóa bỏ khi chương trình con chạy xong.  Giá trị của biến, hằng, biểu thức được copy cho tham số của chương trình con (tham số này có thể xem như là biến cục bộ trong chương trình con).  Không làm thay đổi giá trị của tham số thực sự  Ví dụ: var m,y:integer; begin m:=4; y:=add(m); writeln(‘m = ‘,m,’, y = ‘,y); end. function add(x:integer):integer; Begin x=x+5; add:=x; End; m = 4, y = 9 Kết xuất màn hình m: tham số thực sự x: tham số hình thức 28 Thủ tục, hàm – Truyền tham số  Truyền tham số biến – Khái niệm  Trong khai báo ở đầu của chương trình con, các tham số hình thức có từ khóa Var đứng trước gọi là tham số biến.  Trong lời gọi chương trình con các tham số biến thực sự chỉ có thể là biến, không thể là hằng hay biểu thức.  Ví dụ: HoanVi(3, 4); {Sai vì 3 và 4 là các hằng} HoanVi(a+1, b);{Sai vì a+1 là một biểu thức} HoanVi(a,b); {Đúng} Thủ tục, hàm – Truyền tham số  Truyền tham số biến – Tác dụng  Tham số hình thức theo kiểu truyền tham số này không được cấp phát vùng nhớ.  Khi gọi chương trình con thì tham số hình thức sẽ là một alias (biệt danh) khác của biến là tham số thực.  Trong hàm nếu có sự tác động làm thay đổi giá trị của biến là tham số hình thức thì cũng chính là thay đổi biến là tham số thực.  Ví dụ: var m,y:integer; begin m:=4; y:=add(m); writeln(‘m = ‘,m,’, y = ‘,y); end. function add(var x:integer):integer; Begin x=x+5; add:=x; End; m = 9, y = 9 Kết xuất màn hình m: tham số thực sự x: tham số hình thức 29 Thủ tục, hàm – Lưu ý  Kiểu dữ liệu của tham số trong hàm và thủ tục thì không hạn chế. Nhưng nếu là kiểu tự xây dựng thì phải được định nghĩa trước bằng từ khóa type.  Kiểu dữ liệu của kết qủa của hàm có thể là các kiểu đơn giản, chuỗi, hay con trỏ. Nếu là kiểu liệt kê, đoạn con thì phải định nghĩa trước thông qua từ khóa type  Kiểu dữ liệu của kết qủa của hàm không thể là mảng (array), bản ghi (record), tập hợp (set) hay tập tin (file). Phạm vi của biến 1. Phạm vi tác dụng hay tầm tác dụng của biến (hay hằng, kiểu dữ liệu, chương trình con) là khu vực mà trong đó nó có thể sử dụng được. 2. Ngoài khu vực đó nó bị xem là chưa khai báo 30 Kiểu bảng ghi (record)  Giải lại bài HPT  Phân số  Quản lý học sinh  Đơn thức, đa thức một biết (mảng đơn thức)  Điểm, đoạn thẳng, tam giác  Số phức Mảng  Mảng một chiều  Nhập, Xuất  Sắp Xếp  Đảo ngược  Mảng hai chiều  Nhập, Xuất  Sắp xếp  Ma trận  tổng, hiệu, tích,  tính định thức,  chuyển vị 31 Kiểu miền con Tập hợp (set of) 32 Nhập xuất với tập tin văn bản