Ọ
Ậ
NH P MÔN TIN H C
NGÔ QUANG TH CHẠ
ngoquangthach@yahoo.com
7/5/18
1
Ụ
M C TIÊU
v Số đơn vị học trình § Lý thuyết : 20 tiết § Bài tập + thực hành môn học: 10 tiết
v Mục tiêu của học phần:
§ Sinh viên nắm vững cấu trúc của các lệnh trong Pascal để vận dụng vào các bài tập cụ thể.
§ Sinh viên hiểu và nắm vững các thuật ngữ,
: 02 (30 tiết)
7/5/18
2
quy trình sử dụng trong Internet.
Ể
KI M TRA
v Đ thi k t thúc h c ph n g m 03 câu thu c
ộ ồ
ế ươ ầ ọ ng khác nhau:
v Cách tính Đi m:ể
§ Điểm chuyên cần § Điểm kiểm tra giữa kỳ § Điểm kiểm tra cuối kỳ
7/5/18
3
ề các ch § 01 câu lý thuyết (2 điểm) § 02 câu bài tập (8 điểm)
Ộ
N I DUNG
1
ệ
ấ
Các l nh có c u trúc trong Pascal
2
ươ
Ch
ng trình con
ữ ệ
ể
ấ
ả
3
D li u có c u trúc ki u m ng
ữ ệ
ể
ấ
4
ỗ D li u có c u trúc ki u chu i
ớ
ệ
5
Gi
i thi u Internet
ự
ế
6
Th c hành tìm ki m
7/5/18
4
ƯƠ
CH
NG 1
Ớ
Gi
Ữ I THI U NGÔN NG
Ệ Ậ
L P TRÌNH
Ộ Ố Ấ
M T S C U TRÚC CÂU L NHỆ
7/5/18
5
Ớ
Ệ
GI
I THI U
ệ ậ
ươ v Ch ề ợ ng trình là t p h p dãy các l nh ự ể ệ đi u khi n máy tính th c hi n.
v Có th nói m t ch
ộ ươ ộ ng trình là m t cách
ữ thu t toán trong m t ngôn ng
ộ ể ể ậ ể ượ ể ễ ả di n t chính xác đ máy có th hi u đ c.
v Các b
ướ ơ ả ộ ậ ươ c c b n khi l p m t ch ng
7/5/18
trình Pascal § Bước 1: Soạn thảo chương trình. § Bước 2: Dịch chương trình (nhấn phím
6 F9), nếu có lỗi thì phải sửa lỗi.
§ Bước 3: Chạy chương trình (nhấn phím
Ctrl-F9).
Ộ Ố Ư
Ồ Ơ Ả
M T S L U Đ C B N
A
Thực hiện công việc A
Ra vào dữ liệu
Sai
Begin
B
Đúng
End
Bắt đầu hay kết thúc một thuật toán
Một phép kiểm tra B, tùy thuộc vào trạng thái của B là đúng hay sai để rẻ nhánh thích hợp
7/5/18
7
ư
ồ
ẫ
ậ L u đ thu t toán m u
v Gi
ả ươ ấ ậ i ph ng trình b c nh t ax + b = 0.
Begin
Nh p ậ a,b
Sai
a=0
Đúng
Sai
b=0
Đúng
Vô nghi mệ
Nghi m: ệ b/a
Vô s ố nghi mệ
End
7/5/18
8
Bài t pậ
ậ ả ố ớ ấ ồ t l u đ thu t gi i tìm s l n nh t trong ba
§ Nếu a>b đúng
• Nếu a>c đúng ->Max =a • Ngược lại Max=c
§ Sai (b>=a)
• Nếu b>c đúng ->Max=b • Ngược lại Max=c
7/5/18
9
ế ư v Vi ố s a, b, c. v G i ý:ợ
Ớ
Ệ
GI
I THI U
ệ
Writeln(‘Nhap vao day mot so nguyen:’); {Thông ậ báo nh p li u}
ệ
ậ
ươ ươ
Readln(SoNguyen); {Ch nh p li u}
ờ § Phần thân chương trình
ế
ấ
Writeln(‘Binh phuong cua no la:’, SoNguyen*SoNguyen); {K t xu t}
ộ
ủ
ấ
v C u Trúc C a M t Ch
ng Trình Pascal
§ Phần khai báo
ụ ộ
Ví d m t ch
ng trình:
Program CT_dau_tien;
• PROGRAM
End.
• BEGIN • END. (end và dấu chấm).
7/5/18
10
Ớ
Ệ
GI
I THI U
v Các thành ph n c b n c a Pascal:
§ Khai báo Hằng:
• CONST
ơ ả ủ ầ
Ví dụ: CONST pi = 3.14;
§ Khai báo Kiểu:
• TYPE
Ví dụ: TYPE NguyenDuong = 1..MaxInt;
§ Khai báo Biến:
• VAR
Ví dụ: VAR x,y: Integer;
X, Y: Real;
7/5/18
11
I, J: NguyenDuong; {Đã định nghĩa trước}
ơ ả
ể
ữ ệ Các ki u d li u c b n
v Stt Ki u ể Kích th
ề ị c ướ Mi n xác đ nh
1 byte FALSE..TRUE
ự 256 ký t 128..127 0..255 32768..32767 0..65535 2 byte
2147483648..2147483647 2.9E39..1.7E+38 12
1. Boolean 1 byte 2. Char 3. Shortint 1 byte 1 byte 4. Byte 5. Integer 2 byte 6. Word 7. Longint 4 byte 8. Real 6 byte 7/5/18 9. Single 4 byte 1.5E45..3.4E+38
10. Double 8 byte 5.0E324..1.7E+308
11. Extended 10 byte 3.4E4932..1.1E+4932
12. Comp 8 byte 9.2E18..9.2E+18
ộ ố ệ
ơ
M t s l nh đ n
ệ
ứ ể
v L nh gán
ế
v Cú pháp: :=
Program LenhGan;
Var x, y, z: Integer;
x := 1;
y := 2;
y:=y+x;
z := x + y;
7/5/18
13
Begin
End.
v L nh vi
ệ ế ữ ệ t d li u ra màn hình
Write(‘How are you!’ );
Writeln(x);
Write(y);
v L nh đ c d li u t
ữ ệ ừ ọ ệ bàn phím
ế ế ế Read(Bi n1, Bi n2,…, Bi nN);
ế ế ế Readln(Bi n1, Bi n2,…, Bi nN);
Readln;
ộ ố
M t s phép tính
ộ
ự ế ể ừ v + (c ng) – (tr ) * (nhân) ả v / (chia, k t qu có ki u th c)
Ví d : ụ § 5 / 2 = 2.50 § 10 / 2 = 5.00
v DIV (chia l y ph n nguyên)
ầ ấ
7/5/18
14
Ví d : ụ § 5 DIV 2 = 2 § 3 DIV 4 = 0 ấ ầ ư v MOD (chia l y ph n d )
§ 10 MOD 4 = 2
Ví d : ụ § 5 MOD 2 = 1
v Phép toán s h c: + * / DIV MOD
v Phép toán logic: AND OR NOT XOR
ố ọ
v Phép toán quan h : = <> >= <= > <
v Phép toán ghép dãy ký t
ệ
7/5/18
15
: +ự
CẤU TRÚC LỰA CHỌN
ệ Câu l nh IF
ệ
Câu l nh CASE
CẤU TRÚC LỰA CHỌN
7/5/18
16
CẤU TRÚC LỰA CHỌN
Sai
DK
Đúng
ệ v Câu l nh IF Dạng Không Đầy Đủ
IF <Điều kiện> THEN
CV
ậ ậ
ươ Write( ‘Nh p a: ’); Readln(a); Write( ‘Nh p b: ‘); Readln(b); If b <> 0 then Write( ‘Th ố ừ ng hai s v a nh p:
7/5/18
ậ 17 ’,a/b:5:2);
Readln;
End.
CẤU TRÚC LỰA CHỌN
Sai
DK
ầ
Đúng
ủ ạ v D ng Đ y Đ § Cú pháp: ệ
ề IF <Đi u ki n>
THEN
CV1
CV2
ệ
ệ
ELSE ;
vVí d :ụ
Program vidu1;
Var a,b: Integer;
Begin
ậ ậ
ươ Write( ‘Nh p a: ’); Readln(a); Write( ‘Nh p b: ‘); Readln(b); If b <> 0 then Write( ‘Th ố ừ ng hai s v a nh p:
7/5/18
ậ 18
ể
Write( ‘Không th chia cho 0’ );
’,a/b:5:2); Else
Readln;
End.
Kí hi uệ
Phép so sánh
=
b ngằ
<
ỏ ơ nh h n
>
ớ ơ l n h n
≠
khác
ặ ằ
ỏ ơ
≤
nh h n ho c b ng
ặ ằ
≥
ớ ơ l n h n ho c b ng
7/5/18
19
Ố Ọ Ơ Ả
CÁC HÀM S H C C B N
Bình ph
ngươ
SQR(x)
ị
ệ ố Tr tuy t đ i
ABS(x)
ậ Căn b c hai
SQRT(x)
ấ
ầ
L y ph n nguyên (nguyên)
TRUNC(x)
Làm tròn
ROUND(x)
ẻ
, cho
ODD(x)
ế ẵ
Cho giá True n u x l ế False n u x ch n
…
7/5/18
20
Bài t pậ
v Vi
ế ả ươ ấ ậ ng trình Gi i ph ng trình b c nh t
ươ t ch ax + b = 0
Begin
Nh p ậ a,b
Sai
a=0
Đúng
Sai
b=0
Đúng
Vô nghi mệ
Nghi m: ệ b/a
Vô s ố nghi mệ
7/5/18
21
End
CẤU TRÚC LỰA CHỌN
OF
ọ
ị Giá tr ch n
CASE
Có th ể là m t ộ ho c ặ nhi u ề giá trị
GT1
GTi
GTn
GT2
ị ể Giá tr ki u nguyên, ki u ể ể logic, hay ki u kí ư ự , nh ng không t ế N u không có ố ể ể th là ki u s ị giá tr nào th cự ự ỏ th a thì th c ELSE hi nệ
CôngVi c1ệ
CôngVi c2ệ
CôngVi ciệ
CôngVi cnệ
CôngVi c0ệ
END
7/5/18
22
CẤU TRÚC LỰA CHỌN
Cú pháp:
CASE
ằ ằ ệ ệ
ệ H ng 1a, 1b,…, 1x:
ằ ELSE
ệ
7/5/18
23
END;
v Ví d :ụ
ộ ậ
24
7/5/18
: Write( ‘Tháng có 30 ngày.’);
ầ Program Case_day_du; Var Thang: Integer; Begin Write( ‘Nh p vào m t tháng: ’); Readln(Thang); CASE Thang OF 1, 3, 5, 7, 8, 10, 12 : Write( ‘Tháng có 31 ngày.’); 4, 6, 9, 11 2 : Write( ‘Tháng có 28 (nhu n 29)
ngày.’);
ELSE
ả ậ ừ Write( ‘Tháng sai, ph i nh p tháng t 1
ớ t i 12.’);
End;
Readln;
End.
Bài t pậ
v Vi
ế ươ t ch ng trình nh p vào s ngày thuê
ạ ố ạ
ấ
7/5/18
25
ậ ậ phòng khách s n, nh p vào lo i phòng (A, B, ề C). Tính ti n và xu t ra § phòng loại A : 300000/ngày § phòng loại B : 250000/ngày § phòng loại C : 200000/ngày
Ặ
Ấ
C U TRÚC L P
Ấ
Ặ
C U TRÚC L P
Câu lệnh FOR
Câu lệnh WHILE
Câu lệnh REPEAT
7/5/18
26
ệ
Câu l nh FOR
v C u trúc FOR cho phép l p l
ặ ạ ấ ộ ề ầ i nhi u l n m t
công vi c: ệ
ệ ớ ố ầ ị
§ FOR
ặ v L nh L p V i S L n Xác Đ nh Cú pháp1:
§ FOR
v
7/5/18
27
Cú pháp2:
Sai
Tr ị ị ầ đ u<=Tr cu iố
Đú ng
ế
ị ế Bi n đ m:=Tr đ uầ
Công vi cệ
{Lặp }
Sai
ế
ế
ị ố Bi n đ m<=Tr cu i
Đúng
ế
K t thúc
ế
ế
Tăng bi n đ m lên 1
7/5/18
28
v Ví dụ: Đ in lên màn hình dãy s t
ố ừ ể 1, 2, 3,
ư ể …, n ta có th làm nh sau:
ộ ố
ậ ướ ố ừ ố ạ ế 1 đ n s b n
29
7/5/18
ậ
Program LenhFOR; Var i, n: Integer; Begin Write( ‘Nh p vào m t s : ’); Readln(n); Wrtieln( ‘D i đây là dãy s t ừ v a nh p’ ); For i := 1 To n Do Write(‘ ’ , i); Readln;
v Bài t p:ậ
End.
ế ươ ổ ố Vi t ch ng trình tính t ng n s nguyên (n
ậ ừ nh p t bàn phím)
S=1+2+…+n
ế ươ ố ẻ ổ Vi t ch ng trình tính t ng n s l
S=1+3+5+…+(2*n+1)
ệ
Câu l nh WHILE
v L nh L p V i S L n L p Không Xác
ớ ố ầ ặ
v
ặ
ệ
ị
Đ nh Cú pháp:
§ WHILE <điều kiện> DO
DK
Sai
Đúng
CV
7/5/18
30
ấ ề ụ
ố
ở ệ
ượ ố ở
ỏ
7/5/18
31
ỷ ồ ượ ở v Ví d : Tính ti n g i ngân hàng. Lãi su t hàng ườ i đó g i vào ngân hàng v n tháng là 2%, ng ứ ỗ ầ ban đ u là 1000000 (1 tri u), c sau m i ề ộ tháng ti n lãi đ c g p vào v n và tr thành ớ ể ố v n m i đ tính cho tháng sau. H i sau bao ườ lâu ng đ ng? i đó đ c 1 t
Program TinhTienlai; var Ls, Vn, Mm, tien: real; sothang, i: integer;
Begin
Writeln('CHUONG TINH TINH TIEN GOI
ầ
ố ề ệ ố NGAN HANG'); Ls := 2/100; ố ố Vn := 1000000; {S v n ban đ u 1 tri u} Mm := 1000000000; {S ti n mong mu n 1
7/5/18
32
t } ỷ
sothang := 0; tien := Vn;
While (tien begin tien := tien + Ls*tam; sothang := sothang + 1; end; Writeln('So thang = ' ,sothang); Writeln('Tien von cong lai la: ',tien:12:2); readln; End. v L nh L p V i S L n L p Không Xác ớ ố ầ ặ ặ
ệ
ị
Đ nh Cú pháp:
§ REPEAT • § UNTIL <Điều kiện> Sai Đúng 7/5/18 33 v Vi ế ọ ậ t ch ể
ng trình nh p đi m môn tin h c
ủ ả ớ ươ
ể và in đi m trung bình c a c l p Writeln('NHAP DIEM MON TIN VA TINH DIEM TRUNG BINH CUA LOP'); 7/5/18 34 Writeln('
'); hs:=1;
tong:=0; tiep:='C'; Repeat Writeln('Hoc sinh thu: ',hs); Write('Diem mon Tin : '); Readln(tin); tong:=tong+tin; hs:=hs+1; Write(' Nhap nua khong (C/K) '); Readln(tiep); Until Upcase(tiep)='K'; hs:=hs1; tb:=tong/hs; Writeln('+Tong so diem = ',tong:5:2,' diem'); Writeln('+Tong so ca lop co = ',hs,' hoc sinh'); Writeln('+Diem trung binh cua mon Tin= ',tb:5:2,' diem'); Writeln; Writeln(' Bam phim thuc'); Readln End. v Vi ế ươ ươ ậ t ch ng trình gi i ph ng trình b c hai: v G i ý:ợ § Tính Delta=b*b-4*a*c.
§ Biện luận:
§ Delta<0: Phương trình vô nghiệm.
§ Delta=0: Phương trình có nghiệm kép: x = ả
ax2 + bx + c = 0, a≠0. § Delta>0: Phương trình có 2 nghiệm phân -b/(2*a). 7/5/18 35 biệt: x1,2 = (-b±SQRT(Delta))/(2*a). 7/5/18 36ệ
Câu l nh REPEAT
CV
DK
Ví dụ
v Program Nhap_diem;
Var tin,tong,dtb:Real;
hs:Byte;
tiep:Char;
Begin
Bài t pậ
Thank You !