Đang tải... (xem toàn văn)
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]
(1)Chương 3
Chương 3
LẬP TRÌNH CƠ BẢN
LẬP TRÌNH CƠ BẢN
(2)Chương 3
Chương 3
LẬP TRÌNH CƠ BẢN
LẬP TRÌNH CƠ BẢN 3.1 Thuật tốn
3.2 Giới thiệu ngơn ngữ lập trình Pascal 3.3 Các thành phần ngôn ngữ
3.4 Các kiểu liệu
3.5 Các cấu trúc điều khiển Pascal 3.8 Chương trình con
(3)(4)3.2 Giới thiệu ngơn ngữ lập trình Pascal
3.2 Giới thiệu ngơn ngữ lập trình Pascal
3.2.1 Đặc điểm ngôn ngữ Pascal
Pascal 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 ngôn ngữ đưa thể
được khái niệm lập trình có cấu trúc.
Pascal ngôn ngữ không chặt chẽ mặt
(5)3.2 Giới thiệu ngôn ngữ lập trình Pascal
3.2 Giới thiệu ngơn ngữ lập trình Pascal
3.2.2 Mơi trường TP
TURBO PASCAL sản phẩm hãng Borland
được dùng phổ biến vì: tốc độ nhanh, 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 TP
Turbo.exe: Chương trình dịch soạn thảo, liên kết CT Turbo.tpl: Tập tin thư viện lưu đơn vị chuẩn để chạy
Turbo.exe
(6)3.2 Giới thiệu ngơn ngữ lập trình Pascal
3.2 Giới thiệu ngơn ngữ lập trình Pascal
Khởi động TP
Chạy tập tin Tubor.exe BP.exe
Các phím chức TP
F2: Lưu chương trình soạn thảo F3: Tạo file mở file cũ F9: Dịch thử chương trình để kiểm tra lỗi Ctrl - F9: Chạy chương trình
(7)3.2 Giới thiệu ngơn ngữ lập trình Pascal
3.2 Giới thiệu ngơn ngữ lập trình Pascal
3.2.3 Các vấn đề bản
Các bước viết chương trình
B1: Soạn thảo chương trình
B2: Dịch kết nối chương trình Biên dịch (Compiler)
Thơng dịch (Interpreter)
B3: Chạy thử sửa lỗi chương trình
Cấu trúc chương trình Pascal đơn giản phải
có hai từ khố Begin End sau:
(8)Begin
Dùng ch ơng trình soạn thảo văn
(EDITOR) vit v sa li ch ng trỡnh
Gọi ch ơng trình dịch COMPILER 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ã
(9)3.2 Giới thiệu ngôn ngữ lập trình Pascal
3.2 Giới thiệu ngơn ngữ lập trình Pascal
Phương pháp khai báo tổ chức cấu trúc
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 chương trình }
(10)3.2 Giới thiệu ngơn ngữ lập trình Pascal
3.2 Giới thiệu ngơn ngữ lập trình Pascal Program: Từ khố khai báo tên chương trình
ProgName: Tên chương trình, tn theo quy tắc Khơng có ký tự trống xen
Không đặt số ký tự
Trong phần tên không chứa ký tự đặt biệt như: ‘!’, ‘@’,
‘#’, ‘$’, ‘%’, ‘^’,‘&’, ‘* ’, ‘(‘, ‘)’, ‘-‘, ‘+’, ‘/’, ‘\’, ‘.’, ’,’,.v.v.
Kết thúc phải có dấu ‘;’ Phần khơng có
Ví dụ: Program TimUSCLN;
(11)3.2 Giới thiệu ngôn ngữ lập trình Pascal
3.2 Giới thiệu ngơn ngữ lập trình Pascal
Uses: Từ khố 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 nhãn cho chương trình
Ex: Label TH1, N2;
Const: Khai báo số sử dụng
chương trình
Ex: Const k = 5, Max = 500, Ten = ‘Nam’;
Type: Khai báo kiểu liệu sử dụng
cho chương trình
(12)3.2 Giới thiệu ngơn ngữ lập trình Pascal
3.2 Giới thiệu ngơn ngữ lập trình Pascal
Var: Từ khố dùng để khai báo biến số
sử dụng chương trình.
Ex: Var HoDem, Ten : String; N : Integer ;
Chú ý:
Thứ tự khai báo điều bắt buộc
Trong chương trình Pascal, để tạo lời thích,
ta sử dụng cặp dấu { } (* *) lồng câu thích vào bên
Trên dịng viết nhiều câu
lệnh
(13)3.2 Giới thiệu ngôn ngữ lập trình Pascal
3.2 Giới thiệu ngơn ngữ lập trình Pascal
Program DonXinPhep; Uses CRT;
Begin
ClrScr;
Writeln ( ‘ ********************************** ’ ); Writeln ( ‘ * Cong hoa Xa hoi Chu nghia Viet Nam * ‘ ); Writeln ( ‘ * Doc Lap - Tu Do - Hanh Phuc * ‘ ); Writeln ( ‘ * DON XIN PHEP NGHI HOC * ‘ ); Writeln ( ‘ ********************************** ’ ); Writeln ( ‘ ‘ );
(14)3.3 Các thành phần ngôn n
3.3 Các thành phần ngôn ngữgữ 3.3.1 Các ký hiệu từ khoá
Tập ký tự
Các chữ la tinh: A, B, C, ,Z, a, b, c, , z Các chữ số :0, 1, 2, 3, 4, 5, 6, 7, 8,
Các ký hiệu đặc biệt: +, -, *, /, =, <, {, }, [, ], %, $, &,
#,
Ký tự gạch nối ‘_’ ký tự trắng ‘ ‘ ( space) Từ khóa (key word)
Các từ khoá từ dùng để khai báo, đặt tên cho đối
tượng Pascal, ta đặt tên cho đối tượng đó, khơng đặt trùng tên với từ khố
(15)3.3.1
3.3.1 Các ký hiệu từ khoáCác ký hiệu từ khoá
Tên – định danh (Identfier)
Định danh tên biến, hằng, hàm, thủ tục,
được sử dụng 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 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ó số tên đặt sẵn gọi
(16)3.3 Các thành phần ngôn n
3.3 Các thành phần ngôn ngữgữ
3.3.2 Biến biểu thức
Hằng số
Hằng số giá trị không thay đổi trình chạy chương trình
Khai báo hằng: Const
Tên_hằng = giá_trị_hằng;
Ex: Const Pi = 3.1416, Max = 500; Chú ý:
(17)3.3.2 Biến biểu thức 3.3.2 Biến biểu thức
Biến số:
Là đại lượng mà giá trị thay đổi trình thực chương trình
Biến tên vùng nhớ lưu trữ liệu
Biến truy xuất chương trình thơng qua tên biến Biến cấu trúc ghi nhớ liệu phải quy
định theo kiểu liệu Khai báo:
VAR Tên_biến_1, Tên_biến_2, Tên_biến_n :
Kiểu_dữ_liệu_của_biến;
(18)3.3.2 Biến biểu thức 3.3.2 Biến biểu thức
Biểu thức
Một biểu thức tạo toán tử (phép toán)
và tốn hạng dùng để thể cơng thức
tốn học Tốn hạng hằng, hàm
biến.
Ex: Sau khai có báo:
Const Max = 120; Var x: Integer;
Ta có biểu thức sau: + Max * Exp(x);
Trong đó: + * hai toán tử, số 5, Max
(19)3.3.2 Biến biểu thức 3.3.2 Biến biểu thức
Thứ tự thực phép toán
Ex: (4+5)*2 div + sin(pi/6) = * div + 0.5
= 18 div + 0.5 = + 0.5 = 2.5 Cấp ưu tiên Phép toán
1 Biểu thức ngoặc đơn ( )
2 Các hàm
3 NOT, - (phép lấy dấu âm) * , /, DIV, MOD, AND
5 Shl, Shr
6 +, - (trừ), OR, XOR
(20)3.3.2 Biến biểu thức
3.3.2 Biến biểu thức
Các phép toán so sánh
Ex: 5*2=10 :TRUE
div > 10 div : FALSE
Ký hiệu Ý nghĩa Ví dụ
= x=y
<> khác x<>y
< nhỏ x<y
<= nhỏ x<=y
> lớn x>y
(21)3.3 Các thành phần ngôn n
3.3 Các thành phần ngôn ngữgữ
3.3.3 Kiểu liệu bản
Một kiểu liệu xác định yếu tố
Một tập hợp giá trị mà biến thuộc kiểu nhận đc
Định nghĩa phép tốn tập giá trị
Các kiểu liệu Pascal chia làm loại
Các kiểu 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ê kiểu đoạn
(22)3.3.3 Kiểu liệu bản
3.3.3 Kiểu liệu bản
Kiểu logic (Boolean)
Có hai giá trị True (1), False (0)
Các phép toán: AND, OR, XOR, NOT
X Y A AND Y X OR Y X XOR Y FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE TRUE TRUE
(23)Tên kiểu Phạm vi giá giá trị Số byte Ví dụ
ShortInt -128 127 112, -34
Byte 255 23, 255
Integer -32768 32767 -32767, 432
Word 65535 672
LongInt -2147483648
2147483647
4 2222222222
3.3.3 Kiểu liệu bản
3.3.3 Kiểu liệu bản
Kiểu nguyên
(24)Kiểu nguyên Kiểu nguyên
Các phép toán số học số nguyên
Phép cộng trừ : ký hiệu +
-Phép nhân : ký hiệu dấu *
Ex: 4*2 =
Phép chia : ký hiệu dấu /
Ex: 6/4 = 1.5
Phép chia lấy phần nguyên : ký hiệu DIV
21 DIV =
Phép chia lấy phần dư: ký hiệu MOD
(25)Kiểu nguyên Kiểu nguyên
Chú ý:
Chú ý: kết phép chia phải kiểu thực
Các số nguyên hệ thập lục phân (hệ 16)
biểu diễn cách viết thêm dấu $ trước
Ex : $A , $FF $10 (10, 255, 16)
Số nguyên N chẵn N mod = 0, lẻ
nếu N mod <> (dấu <>: Khác)
(26)Kiểu nguyên Kiểu nguyên
Một số phép toán hàm với số nguyên
N SHR k :dịch phải k bit.
120 shr = (120 shr = 120 div 24 = 120 div 16 = 7)
N SHL k : dịch trái k bit.
120 shl = 960 (120 shl = 120 * 23 = 120 * = 960)
Hàm PRED(k) :đối số k nguyên, trả số nguyên
đứng trước k, tức k-1
Pred (5) = 4, Pred (-6) = -7
Hàm SUCC(k) : đối số k nguyên, trả số nguyên
đứng sau k, tức k+1
(27)Kiểu nguyên Kiểu nguyên
Hàm ODD(k) : đối số k nguyên, trả giá trị
logic TRUE k lẻ, FALSE k chẵn
Odd(15) = True , Odd(4) = False
Thủ tục INC(k) : tăng k lên đơn vị
Inc(5) = 6;
Thủ tục DEC(k) : giảm k đơn vị
Dec(7) = 6;
Ví dụ:
Bài toán đổi tiền
(28)3.3.3 Kiểu liệu bản
3.3.3 Kiểu liệu bản
Kiểu số thực
Khai báo: Var a, b: Real;
Tên kiểu Phạm vi giá trị Số byte
Real 2.9*10-39 1.7*1038
Single 1.5*10-45 3.4*1038
Double 5.0*10-324 1.7*10308
Extended 3.4*10-4932 1.1*104932 10
(29)Số thực
Số thực
Có cách viết
Cách 1: Viết bình thường, dấu phẩy thập phân thay dấu chấm thập phân (dấu chấm thập phân cố định)
Ex: 45.0 -256.45 122.08
Cách 2: Viết số dạng khoa học, gồm phần: trước E 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*101 = 12.57 )
1257.0E-02 (có giá trị = 1257*10-2 = 12.57 )
Các phép tốn số thực
Khơng sử dụng phép MOD, DIV phép toán logic
Chú ý: Một số hạng phép toán số thực kết
(30)Số thực
Số thực
Các hàm có đối số nguyên thực
Hàm ABS(x): tính trị tuyệt đối x :|x| Kiểu liệu kết kiểu với đối số
Abs(5 - 8) =
Hàm SQR(x): tính bình phương x: x2 Kiểu liệu
của kết kiểu với đối số Sqr(4.0) = 16.0
Sqr(7 div 3) =
Các hàm giá trị trả ln ln kiểu thực: Hàm SQRT(x): tính , (x > 0)
Hàm EXP(x) : tính en
Hàm LN(x): tính lnx, (x > 0)
xx
(31)Số thực
Số thực
Các hàm SIN(x), COS(x), ARCTAN(x): tính sinx, cosx arctgx
Hàm INT(x) : cho số thực phần nguyên x Int(12.55) = 12.0
Hàm FRAC(x) : cho số thực phần lẻ X Frac(12.55) = 0.55
Hàm TRUNC(x): cho số nguyên phần nguyên x Trunc(12.55) = 12
(32)3.3.3 Kiểu liệu bản
3.3.3 Kiểu liệu bản
Kiểu ký tự (Char)
KT
ASCII KT ASCII KT ASCII KT ASCI
I
KT
ASCII
32 A 65 a 97 N 78 n 110
0 48 B 66 b 98 O 79 o 111
1 49 C 67 c 99 P 80 p 112
2 50 D 68 d 100 Q 81 q 113
3 51 E 69 f 101 R 82 r 114
4 52 F 70 e 102 S 83 s 115
5 53 G 71 g 103 T 84 t 116
6 54 H 72 h 104 U 85 u 117
7 55 I 73 i 105 V 86 v 118
8 56 J 74 j 106 W 87 w 119
9 57 K 75 k 107 X 88 x 120
L 76 l 108 Y 89 y 121
(33)Kiểu Char
Kiểu Char
Khai báo
Var ch, ch1: Char
Các hàm liên quan đến ký tự
Hàm PRED(ch): cho ký tự đứng trước ký tự ch bảng mã
Pred(‘B’)=‘A’
Hàm SUCC(ch): cho ký tự đứng sau ký tự ch bảng mã
Succ(‘A’)=‘B’
Hà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ã ký tự ch
(34)Kiểu Char
Kiểu Char
Hàm CHR(k) : đối số k nguyên, 0 k 255, cho
ký tự có mã k
Chr (65)= ‘A’ ,
Chr(32) ký tự trắng
Có số ký tự khơng có bàn phím, để viết
chúng lên hình ta phải dùng lệnh Write hàm CHR
Lệnh Writeln(Chr(201)) ; in ký tự : +
Ký tự có mã gọi ký tự BEL (chuông), lệnh: Write( Chr(7) ) ; hay Write(#7) ; {có tác dụng phát tiếng
(35)Kiểu Char
Kiểu Char
Ví dụ: Nhập ký tự, chữ hoa đổi chữ
thường, chữ thường đổi chữ hoa
PROGRAM VIDU;
{ Ðổi chữ hoa thường ngược lại} Var ch, ch1 : Char;
Begin
Write(‘ Nhập ký tự :’); Readln(ch);
If (ch>=‘A’) and ( ch<=‘Z’) then ch1:=Chr( Ord (ch)
+32)
Else ch1:= Upcase(ch);
Writeln(ch, ‘ đổi ra: ‘ , ch1); Readln
(36)Chương 3
Chương 3
LẬP TRÌNH CƠ BẢN
LẬP TRÌNH CƠ BẢN 3.4 Lệnh cấu tạo lệnh
3.4.1 Phân loại câu lệnh
Câu lệnh dãy ký tự xây dựng
theo quy tắc định (gọi cú pháp) nhằm thị cho máy thực công việc xác định Các câu lệnh chia hai loại:
Câu lệnh đơn giản: Lệnh gán, lời gọi thủ tục
(37)3.4 Lệnh cấu tạo lệnh
3.4 Lệnh cấu tạo lệnh
Lệnh gán
Cú pháp: TênBiến := Biểuthức ;
Ý nghĩa : Tính tốn biểu thức bên phải,
lưu kết qủa tính vào tên biến vế trái.
Ví dụ, cho khai báo :
Var A, B : Real; K : Integer;
Lệnh: K := 10 ; B := K* K+5.5; ? K:= 3.5 ; ?
Chú ý:
Sự tương thích kiểu, số ngun gán cho biến thực
nhưng ngược lại không
(38)3.4 Lệnh cấu tạo lệnh
3.4 Lệnh cấu tạo lệnh
3.4.2 Nhập liệu, thủ tục Readln
Nhập liệu kiểu số
Cú pháp: Readln(biến1, biến2, , biếnk);
Trong biến1, biến2, , biếnk khai báo có kiểu liệu 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 kết thúc Enter, gán lần
(39)3.4 Lệnh cấu tạo lệnh
3.4 Lệnh cấu tạo lệnh
Var
I, J: integer; XX, ZZZ: Real; Begin
Readln(I, XX, ZZZ, J);
. End.
Begin
Readln(I); Readln(XX); Readln(ZZZ); Readln(J);
(40)3.4 Lệnh cấu tạo lệnh
3.4 Lệnh cấu tạo lệnh
Nhập liệu kiểu ký tự hay kiểu chuỗi
Cú pháp: Readln( biến );
Chú ý:
Sự tương thích kiểu
Lệnh Readln; lệnh dừng hình để xem kết
quả
Kiểu logic không nhập từ bàn phím
Lệnh Read, có cơng dụng lệnh Readln,
(41)3.4 Lệnh cấu tạo lệnh
3.4 Lệnh cấu tạo lệnh Ví dụ, cho khai báo :
Var
Ho_ten: String[18]; Phai: String[3];
Khoi_thi : Char;
Muốn nhập liệu ta phải dùng ba lệnh Readln(Ho_ten);
Readln(Phai);
Readln(Khoi_thi); Khi nhập, ta gõ:
Tran Van Thanh nam
A
(42)3.4 Lệnh cấu tạo lệnh
3.4 Lệnh cấu tạo lệnh Xuất liệu, thủ tục Write Writeln
Cú pháp: Writeln( bt1, bt2 , , btk );
Write( bt1, bt2 , , btk );
bt1, bt2, , btk biểu thức cần phải in giá trị
lên hình, biến, hằng, hàm…
Các biểu thức in liên thứ tự.
Sự khác lệnh Writeln Write sau in
xong giá trị biểu thức:
(43)3.4 Lệnh cấu tạo lệnh 3.4 Lệnh cấu tạo lệnh
Ví dụ:
Writeln(‘Lập trình ‘); Writeln(‘Pascal’);
Kết qủa hình hai dịng :
Lập trình Pascal
Nếu dùng lệnh:
Write(‘Lập trình ‘);Writeln(‘Pascal’);
thì kết qủa hình
(44)3.4 Lệnh cấu tạo lệnh 3.4 Lệnh cấu tạo lệnh
In không định dạng
Ðối với biểu thức kiểu nguyên, kiểu ký tự, kiểu
logic hay kiểu chuỗi, lệnh :
Writeln( biểuthức ) ;
sẽ in nguyên văn giá trị biểu thức
Ví dụ:
Lệnh Writen(‘ket qủa x=‘ , 4+15); in ra: ket qua
x=19
Lệnh Writeln(‘A’ , ‘=‘ , 2*3<5); in ra: A=FALSE
biểu thức 2*3< có kết qủa FALSE.
(45)3.4 Lệnh cấu tạo lệnh 3.4 Lệnh cấu tạo lệnh
Ðối với biểu thức kiểu số thực lệnh:
Writeln( biểuthức );
sẽ in giá trị biểu thức dạng dấu chấm thập phân di động có thảy 17 ký
(46)3.4 Lệnh cấu tạo lệnh 3.4 Lệnh cấu tạo lệnh
In số thực có định dạng:
Writeln( biểuthức : n : k );
n k số tự nhiên, ấn định dùng n cột để in
giá trị biểu thức, có k cột dành cho phần thập phân
Nếu số cần in có n chữ số in
(47)3.4 Lệnh cấu tạo lệnh 3.4 Lệnh cấu tạo lệnh
Ví dụ:
Cho x, y 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); in lên hình: x= 25.00 ( trước số có ký tự trắng)
y= -123.482 (trước dấu - có ký tự trắng)
Nếu n nhỏ chiều dài số cần in số
được in với đầy đủ chữ số phần nguyên.
(48)3.4 Lệnh cấu tạo lệnh 3.4 Lệnh cấu tạo lệnh
In kiểu nguyên, ký tự, chuỗi lơgic có định dạng :
Writeln(biểuthức : n);
Ví dụ
Lệnh Write(5+40:4); in ra: 45 (có ký tự trắng trước số 45)
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ó ký tự trắng trước chữ Pascal)
Lệnh Write(‘Pascal’ :2); in ra:Pascal (in nguyên văn)
(49)3.4 Lệnh cấu tạo lệnh 3.4 Lệnh cấu tạo lệnh
Chú ý
Nhóm ba lệnh: Write(x); Write(y); Write(j); có tác dụng
một lệnh: Write(x,y,j); (writeln tương tự)
Lệnh: Writeln; khơng in cả, đưa trỏ xuống dòng Muốn in liệu máy in ta dùng lệnh Write Writeln với
tham số LST vào trước Biến LST khai báo thư viện
Printer
Ví dụ:
Uses Printer;
Begin
Writeln(Lst,’ Welcome to Turbo Pascal Language ! ‘ ); End
(50)3.4 Lệnh cấu tạo lệnh 3.4 Lệnh cấu tạo lệnh
Ví dụ: Viết chương trình tính diện tích S hình thang với đáy dài a, đáy ngắn b, chiều cao h, nhập từ bàn phím.
Program DienTichHinhThang; Uses CRT;
Var a, b, h, s : Real; Begin
ClrScr;
Write( ‘ Nhap gia tri cua a, b, h :‘ ); Readln(a, b, h);
S := (a + b) * h / 2;
Write( ‘ Dien tich S = ‘,S:1:5); Readln;