Các giá trị nhập thừa của lệnh Read sẽ được tự động gán cho các biến trong lệnh nhập tiếp theo..[r]
Trang 1Chương 3
LẬP TRÌNH CƠ BẢN
(DÙNG NGÔN NGỮ PASCAL MINH HỌA)
Trang 23.4 Các kiểu dữ liệu cơ bản
3.5 Các cấu trúc điều khiển trong Pascal
3.8 Chương trình con
3.10 Các cấu trúc dữ liệu phức hợp
Trang 33.1 Thuật toán
Trang 43.2 Giới thiệu ngôn ngữ lập trình Pascal
3.2.1 Đặc điểm của ngôn ngữ Pascal
Pascal là ngôn ngữ lập trình có ngữ pháp, ngữ
nghĩa đơn giản có tính logic, cấu trúc chương trình
rõ ràng, dễ hiểu, dễ sửa chữa cải tiến
Pascal là ngôn ngữ đầu tiên đưa ra và thể hiện
được khái niệm lập trình có cấu trúc.
Pascal là một ngôn ngữ không chỉ chặt chẽ về mặt
cú pháp mà còn chặt chẽ về mặt dữ liệu
Trang 53.2 Giới thiệu ngôn ngữ lập trình Pascal
3.2.2 Môi trường TP
được dùng rất phổ biến vì: tốc độ nhanh, các cải tiến so với Pascal chẩn phù hợp với yêu cầu người dùng.
Các tập tin chính của TP
Turbo.exe: Chương trình dịch và soạn thảo, liên kết CT
Turbo.tpl: Tập tin thư viện lưu các đơn vị chuẩn để chạy Turbo.exe
Muốn sử dụng đồ họa phải có tập tin
Graph.tpu: Đơn vị chứa các lệnh đồ họa
Trang 63.2 Giới thiệu ngôn ngữ lập trình Pascal
Chạy tập tin Tubor.exe hoặc BP.exe
F2: Lưu chương trình trong khi soạn thảo.
F3: Tạo một file mới hoặc mở một file cũ.
F9: Dịch thử chương trình để kiểm tra lỗi.
Ctrl - F9: Chạy chương trình.
Alt - F5: Xem kết quả chạy chương trình.
Alt - X: Thoát khỏi màn hình soạn thảo
Trang 73.2 Giới thiệu ngôn ngữ lập trình Pascal
3.2.3 Các vấn đề cơ bản
Các bước cơ bản khi viết chương trình
B1: Soạn thảo chương trình
B2: Dịch và kết nối chương trình
Biên dịch (Compiler)
Thông dịch (Interpreter)
B3: Chạy thử và sửa lỗi chương trình
Cấu trúc chương trình Pascal đơn giản nhất phải
có hai từ khoá Begin và End như sau:
Begin End.
Trang 8Dùng ch ơng trình soạn thảo văn bản (EDITOR)
để viết và sửa lỗi
ch ơng trình
Gọi ch ơng trình dịch COMPILER
và ch ơng trình kết nối LINKER
Có lỗi cú pháp
Chạy thử ch ơng trình vừa đ ợc dịch xong
Có lỗi thuật giải ?
Có muốn sửa lại cho đẹp ?
End
Có Có
Không
Lưu đồ lập trỡnh
Trang 93.2 Giới thiệu ngôn ngữ lập trình Pascal
Phương pháp khai báo và tổ chức cấu trúc một chương trình Pascal
Program ProgName;
Uses UnitName1, UnitName2, UnitNameN;
Label LabelName1, LabelName2, LabelNameN; Const Const1 = n, Const2 = m, ConstN = k;
Type Type1 = AnyType;
Var Var1, Var2, VarN : Type;
Begin
{ Các lệnh của chương trình }
End.
Trang 103.2 Giới thiệu ngôn ngữ lập trình Pascal
ProgName: Tên chương trình, tuân theo quy tắc
Không có ký tự trống xen giữa
Không đặt số ở ký tự đầu tiên.
Trong phần tên không chứa các ký tự đặt biệt như: ‘!’, ‘@’,
Trang 113.2 Giới thiệu ngôn ngữ lập trình Pascal
Uses: Từ khoá khai báo việc sử dụng Unit (thư
viện) cho chương trình.
Ex: Uses CRT, GRAPH;
Label: Khai báo các nhãn cho chương trình
Ex: Label TH1, N2;
Const: Khai báo các hằng số sử dụng trong
chương trình
Ex: Const k = 5, Max = 500, Ten = ‘Nam’;
Type: Khai báo các kiểu hằng dữ liệu sử dụng cho chương trình
Ex: Type Day = Array [1 7] of String[8];
Trang 123.2 Giới thiệu ngôn ngữ lập trình Pascal
Var: Từ khoá dùng để khai báo các biến số được
sử dụng trong chương trình.
Ex: Var HoDem, Ten : String;
N : Integer ;
Chú ý:
Thứ tự các khai báo trên là điều bắt buộc
Trong chương trình Pascal, để tạo lời chú thích,
ta sử dụng cặp dấu { } hoặc (* *) lồng các câu chú thích vào bên trong nó
Trên một dòng có thể viết một hoặc nhiều câu lệnh
Ví dụ làm quen
Trang 133.2 Giới thiệu ngôn ngữ lập trình Pascal
Readln;
End
Trang 14Từ khóa (key word)
Các từ khoá là các từ dùng để khai báo, đặt tên cho đối tượng trong Pascal, khi ta đặt tên cho đối tượng nào đó, không được đặt trùng tên với các từ khoá
Ex: Program, Var, For, To, IF
Trang 153.3.1 Các ký hiệu và từ khoá
Tên – định danh (Identfier)
Định danh là tên các biến, hằng, hàm, thủ tục, được sử dụng trong chương trình, không phân biệt chữ hoa hay thường, không trùng với từ khóa, độ dài lớn nhất 127 ký tự.
Ex1: Delta, X1, X2, i, j , Chuc_vu, Luong, So_luong, Don_gia
Ex2: 3ABC, In, Chu vi, Ma-so ???
Trong Pascal có một số tên đã được đặt sẵn gọi là tên chuẩn: Abs, Arctan, Boolean, Byte, Char, Cos,…
Trang 16 Tránh viết: z := Exp(1.23) + Sin(2.34) * Sin(2.34);
Trang 173.3.2 Biến hằng và biểu thức
Biến số:
Là đại lượng mà giá trị của nó có thể thay đổi trong quá trình thực hiện chương trình
Biến là tên của một vùng bộ nhớ lưu trữ dữ liệu
Biến được truy xuất trong chương trình thông qua tên biến
Biến là một cấu trúc ghi nhớ dữ liệu vì vậy phải được quy định theo một kiểu dữ liệu nào đó
Trang 183.3.2 Biến hằng và biểu thức
Biểu thức
Một biểu thức được tạo bởi các toán tử (phép toán)
và các toán hạng dùng để thể hiện một công thức toán học Toán hạng có thể là hằng, hàm hoặc
biến
Ex: Sau khi khai có báo:
Const Max = 120;
Var x: Integer;
Ta có biểu thức sau: 5 + Max * Exp(x);
Trong đó: + và * là hai toán tử, các hằng số 5 , Max
và hàm Exp(x) là các toán hạng.
Trang 193.3.2 Biến hằng và biểu thức
Thứ tự thực hiện các phép toán
Ex: (4+5)*2 div 7 + sin(pi/6) = 9 * 2 div 7 + 0.5
= 18 div 7 + 0.5 = 2 + 0.5 = 2.5
Cấp ưu tiên Phép toán
1 Biểu thức trong ngoặc đơn ( )
3 NOT, - (phép lấy dấu âm)
4 * , /, DIV, MOD, AND
6 +, - (trừ), OR, XOR
7 =, <>, <, <=, >, >=, IN
Trang 213.3 Các thành phần của ngôn ngữ
3.3.3 Kiểu dữ liệu cơ bản
Một kiểu dữ liệu được xác định bởi 2 yếu tố
Một tập hợp các giá trị mà một biến thuộc kiểu đó có thể nhận đc
Định nghĩa các phép toán trên tập giá trị đó
Các kiểu dữ liệu trong Pascal chia làm 2 loại
Các kiểu dữ liệu đơn giản : kiểu nguyên, kiểu thực, kiểu
lôgic, kiểu ký tự, kiểu liệt kê và kiểu đoạn con
Các kiểu dữ liệu có cấu trúc :kiểu mảng, kiểu bản ghi,
kiểu tập hợp và kiểu tập tin
Trang 223.3.3 Kiểu dữ liệu cơ bản
Kiểu logic (Boolean)
Có hai giá trị True (1), False (0)
Các phép toán: AND, OR, XOR, NOT
Trang 23Tên kiểu Phạm vi giá giá trị Số byte Ví dụ
Trang 25Kiểu nguyên
Chú ý:
biểu diễn bằng cách viết thêm dấu $ ở trước
Ex : $A , $FF và $10 (10, 255, 16)
nếu N mod 2 <> 0 (dấu <>: Khác)
Trang 27Kiểu nguyên
logic là TRUE nếu k lẻ, là FALSE nếu k chẵn
Odd(15) = True , Odd(4) = False.
Inc(5) = 6;
Dec(7) = 6;
Ví dụ:
Bài toán đổi tiền
Kiểm tra 1 số là chẵn hay lẻ?
Trang 283.3.3 Kiểu dữ liệu cơ bản
Kiểu số thực
Trang 29Cách 2: Viết số dưới dạng khoa học, gồm 2 phần: trước E
là phần định trị, sau E phần bậc ( dấu chấm thập phân di động)
1.257E+01 (có giá trị = 1.257*10 1 = 12.57 )
1257.0E-02 (có giá trị = 1257*10 -2 = 12.57 )
Các phép toán trên số thực
Không sử dụng phép MOD, DIV và phép toán logic
Trang 30Số thực
Hàm ABS(x): tính trị tuyệt đối của x :|x| Kiểu dữ liệu
của kết quả cùng kiểu với đối số
Trang 323.3.3 Kiểu dữ liệu cơ bản
Trang 33Hàm UpCase(ch): đổi ký tự ch thành chữ hoa
Upcase( ‘a’ ) = ‘A’, Upcase( ‘b’ ) = ‘B’, Upcase( ‘A’ ) = ‘A’
Hàm ORD(ch) : cho mã của ký tự ch
Ord (‘A’) = 65, Ord (‘a’) = 97
Trang 34Có một số ký tự không có trên bàn phím, để viết
chúng lên màn hình ta phải dùng lệnh Write và hàm CHR
Lệnh Writeln(Chr(201)) ; in ra ký tự : +
Ký tự có mã là 7 gọi là ký tự BEL (chuông), và lệnh:
Write( Chr(7) ) ; hay Write(#7) ; {có tác dụng phát ra một tiếng kêu bip}
Trang 35Kiểu Char
Ví dụ: Nhập một ký tự, nếu là chữ hoa thì đổi ra chữ
thường, nếu là chữ thường thì đổi ra chữ hoa
Trang 36Chương 3
LẬP TRÌNH CƠ BẢN
3.4 Lệnh và cấu tạo lệnh
3.4.1 Phân loại câu lệnh
Câu lệnh là một dãy các ký tự cơ bản được xây dựng theo một quy tắc nhất định (gọi là cú pháp) nhằm chỉ thị cho máy thực hiện một công việc xác định Các câu lệnh được chia ra hai loại:
Câu lệnh đơn giản: Lệnh gán, lời gọi thủ tục
Câu lệnh có cấu trúc: Lệnh rẽ nhánh, lệnh lặp…
Trang 37 Ví dụ, cho khai báo :
Var A, B : Real; K : Integer;
Trang 383.4 Lệnh và cấu tạo lệnh
3.4.2 Nhập dữ liệu, thủ tục Readln
Nhập dữ liệu kiểu số
Cú pháp: Readln(biến1, biến2, , biếnk);
Trong đó biến1, biến2, , biếnk đã được khai báo và có kiểu dữ liệu là nguyên hay thực
Khi gặp lệnh này, chương trình tạm dừng, chờ ta gõ đủ
k số từ bàn phím và kết thúc bằng Enter, rồi gán lần lượt k số đó cho biến1, biến2, , biếnk
Trang 39Readln(XX); Readln(ZZZ); Readln(J);
End
Trang 40Kiểu logic không nhập được từ bàn phím
Lệnh Read, có công dụng như lệnh Readln,
nhưng ít dùng Readln sau khi đã nhận đủ các giá trị cho các biến cần nhập, sẽ xóa sạch các giá trị nhập thừa, còn lệnh Read thì không Các giá trị nhập thừa của lệnh Read sẽ được tự động gán cho các biến trong lệnh nhập tiếp theo
Trang 42Các biểu thức được in liên tiếp theo thứ tự.
Sự khác nhau giữa lệnh Writeln và Write sau khi in xong giá trị của các biểu thức:
Lệnh Writeln sẽ đưa con trỏ xuống đầu dòng dưới
Lệnh Write giữ nguyên vị trí
Trang 443.4 Lệnh và cấu tạo lệnh
In không định dạng
Ðối với các biểu thức kiểu nguyên , kiểu ký tự , kiểu
logic h ay kiểu chuỗi , thì lệnh :
Trang 463.4 Lệnh và cấu tạo lệnh
In số thực có định dạng:
Writeln( biểuthức : n : k );
n và k là các số tự nhiên, ấn định dùng n cột để in giá trị của biểu thức, trong đó có k cột dành cho phần thập phân
Nếu số cần in có ít hơn n chữ số thì nó sẽ được in dồn về bên phải và thêm các ký tự trắng ở bên trái cho đủ n cột.
Trang 473.4 Lệnh và cấu tạo lệnh
Ví dụ:
Cho x, y là các biến kiểu thực và: x:=100/4;
y:=-123.4824;
Hai lệnh sau : Writeln(‘ x=‘, x:6:2);
Writeln(‘ y=‘, y:10:3); sẽ in lên màn hình:
Trang 48 Lệnh Write(5+40:1); in ra:45 (in nguyên văn giá trị 45)
Lệnh Write(‘Pascal’ :9); in ra: Pascal (có 3 ký tự trắng trước chữ Pascal)
Lệnh Write(‘Pascal’ :2); in ra:Pascal (in nguyên văn)
Lệnh Write(‘*’:3); in ra: * (có 2 ký tự trắng trước dấu *)
Trang 493.4 Lệnh và cấu tạo lệnh
một lệnh: Write(x,y,j); (writeln tương tự)
Trang 503.4 Lệnh và cấu tạo lệnh
Ví dụ: Viết chương trình tính diện tích S của hình thang với
đáy dài a, đáy ngắn b, chiều cao h, được nhập từ bàn phím.