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 ; Uses Crt; • USES [,]; Var SoNguyen: Integer; • LABEL [,]; Begin • CONST        CLRSCR; {Xóa màn hình}  • TYPE • VAR

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 [<, Tên biến>]: ;

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.9E­39..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.5E­45..3.4E+38

10.  Double  8 byte 5.0E­324..1.7E+308

11.  Extended  10 byte  3.4E­4932..1.1E+4932

12.  Comp 8 byte ­9.2E­18..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

; vVí du: 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

ậ 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 OF

ằ ằ ệ ệ

ệ H ng 1a, 1b,…, 1x: ;  H ng 2a, 2b,…, 2x: ;  .................................  H ng na, nb,…, nx: ;

ằ 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 :=<đầu> TO DO

ặ v L nh L p V i S  L n Xác Đ nh  Cú pháp1:

§ FOR :=<đầu> DOWNTO DO

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.

Câu l nh REPEAT

v L nh L p V i S  L n L p Không Xác

ớ ố ầ ặ

ặ ệ ị Đ nh Cú pháp:  § REPEAT

CV

§ UNTIL <Điều kiện>

Sai

DK

Đúng

7/5/18

33

Ví dụ

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

v Program Nhap_diem; Var tin,tong,dtb:Real; hs:Byte; tiep:Char; Begin

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:=hs­1;

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  de ket

thuc');

Readln

End.

Bài t pậ

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).

Thank You !

7/5/18

36