ch ng 3 c u tr c l p v r nh nh n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Chương 3: Cấu trúc lặp và rẽ nhánh PowerPoint Presentation
Download Presentation
Chương 3: Cấu trúc lặp và rẽ nhánh

Loading in 2 Seconds...

play fullscreen
1 / 46

Chương 3: Cấu trúc lặp và rẽ nhánh - PowerPoint PPT Presentation


  • 212 Views
  • Uploaded on

Chương 3: Cấu trúc lặp và rẽ nhánh. Nội chung chính. Bài 9: Cấu trúc rẽ nhánh Rẽ nhánh là gì? Câu lệnh IF-THEN Câu lệnh ghép Một số ví dụ Bài 10: Cấu trúc lặp Lặp Lặp với số lần biết trước với câu lệnh FOR-DO Lặp với số lần chưa biết trước với câu lệnh WHILE-DO. Từ khóa. Bài 9.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Chương 3: Cấu trúc lặp và rẽ nhánh' - tana-booker


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
n i chung ch nh
Nội chung chính
  • Bài 9: Cấu trúc rẽ nhánh
    • Rẽ nhánh là gì?
    • Câu lệnh IF-THEN
    • Câu lệnh ghép
    • Một số ví dụ
  • Bài 10: Cấu trúc lặp
    • Lặp
    • Lặp với số lần biết trước với câu lệnh FOR-DO
    • Lặp với số lần chưa biết trước với câu lệnh WHILE-DO
slide4

Bài 9

CẤU TRÚC RẼ NHÁNH

slide5

1. RẼ NHÁNH

“Nếu chăm học thì các bạn sẽ đạt kết quả tốt.”

slide6

Hihi...Nếu trời có tuyết rơi thì tụi mình sẽ đi, nếu không thì đi khu vui chơi

Ê..ê, maitụimìnhđitrượttuyếtngen…

slide7

Nếu...thì...

Nếu không...thì.

Nếu...thì...

Cấu trúc dùng để mô tả các mệnh đề có dạng như trên gọi là :

Cấu trúc rẽ nhánh.

slide8

Hãy nêu các bước giải phương trình bậc hai?

Ví dụ: Giải phương trình bậc hai ax2+bx+c=0 (a0)

  • Nhập hệ số a,b,c
  • Tính Delta=b2 - 4ac
  • Nếu Delta<0 thì thông báo PT vô nghiệm, ngược lại tính và đưa ra nghiệm
slide9

Các em hãy vẽ sơ đồ thuật toán giải phương trình bậc 2 (với a0)

Nhập a, b, c

Tính Delta = b2 – 4ac

Kiểm tra

Delta <0

Sai

Đúng

Sau khi tính Delta, tuỳ thuộc vào giá trị Delta, một trong hai thao tác sẽ thực hiện.

Tính và đưa ra nghiệm

Thông báo vô nghiệm

Kết thúc

slide10

2. Câu lệnh IF - THEN

a. Dạng thiếu:

IF<Điều kiện>THEN<Câu lệnh>;

Trong đó:

- Điều kiện là biểu thức logic.

- Câu lệnh là một câu lệnh của Pascal.

ĐIỀU KIỆN

CÂU LỆNH

Đúng

Sai

  • Nếu<điều kiện>đúngthì<câu lệnh> được thực hiện, sai <câu lệnh> bị bỏ qua.

IF a mod 2=0 THEN Writeln(‘ a la so chan’);

Ví dụ:

slide11

2. Câu lệnh IF - THEN

b. Dạng đủ:

IF<Điều kiện> THEN <Câu lệnh 1>ELSE <câu lệnh 2>;

ĐIỀU KIỆN

Đúng

Sai

Câu lệnh 2

Câu lệnh 1

IF a mod 2=0 THEN Writeln(‘a la so chan’)

ELSE Writeln(‘a la so le’);

Nếu <Điều kiện> đúng thì <Câu lệnh 1> được thực hiện,

ngược lại thì <Câu lệnh 2> được thực hiện.

Ví dụ:

slide12

2. Câu lệnh IF - THEN

Hãy dùng câu lệnh IF – THEN viết lệnh để xét các trường hợp của DELTA

IF Delta<0 THEN Writeln(‘Phuong trinh vo nghiem.’’)

ELSE

X1:= (-B + SQRT(Delta))/(2*A);

X2:= (-B - SQRT(Delta))/(2*A);

Writeln(‘ Nghiem X1= ’, X1:5:1);

Writeln(‘ Nghiem X2= ’, X2:5:1);

slide13

3. CÂU LỆNH GHÉP

Trong TP cho phép gộp nhiều câu lệnh thành một câu lệnh gọi là câu lệnh ghép, có dạng:

BEGIN

< Các câu lệnh>;

END;

Ví dụ:

IF Delta<0 THEN Writeln(‘Phuong trinh vo nghiem.’)

ELSE

BEGIN

X1:= (-B + SQRT(Delta))/(2*A);

X2:= (-B - SQRT(Delta))/(2*A);

Writeln(‘ Nghiem X1= ’, X1:5:1);

Writeln(‘ Nghiem X2= ’, X2:5:1);

END;

slide14

4. MỘT SỐ VÍ DỤ

Emhãyhoànthiệnchươngtrìnhgiảiphươngtrìnhbậc 2 (a0) theodàn ý sau:

Ví dụ 1:

Program GPTB2;

Uses crt;

Var . . . ;

BEGIN

. . . Nhập vào 3 hệ số a,b,c .. .

Delta :=. . .;

  • Nếu Delta<0 thì Writeln(‘PTVN’)

ngược lại Tính và in nghiệm;

Readln;

END.

slide16

Ví dụ 2: Tìm số ngày của năm N, biết rằng năm nhuận là năm chia hết

cho 400 hoặc chia hết cho 4 nhưng không chia hết cho 100. Ví dụ, các

năm 2000, 2004 là năm nhuận và có số ngày là 366, các năm như 1900,

1945 không phải là năm nhuận và có số ngày 365.

  • Input: N được nhập từ bàn phím.
  • Output: Đưa ra số ngày của năm N ra màn hình.

Hãyxácđịnh Input và Output củabài?

Nếu N chia hết cho 400 hoặc N chia hết cho 4 nhưng không chia hết cho 100

ThìIn ra số ngày của năm nhuận là 366,

ngược lạiIn ra số ngày là 365

slide17

Viết điều kiện:

Nếu N chia hết cho 400 hoặc chia hết cho 4 nhưng không chia hết cho 100

Khai báo biến cho bài toán trên

thì nhận số ngày của năm nhuận, ngược lại nhận số ngày của năm thường

Nhập vào Năm cần tính số lượng ngày

In ra kết quả

slide18

GHI NHỚ

  • Cấu trúc mô tả các mệnh đề:

“Nếu … thì…”

“Nếu … thì …, nếu không… thì…”

gọi là Cấu trúc rẽ nhánh.

 Lệnh rẽ nhánh dạng thiếu:

IF<Điều kiện>THEN <câulệnh>;

IF<Điều kiện>THEN <Câu lệnh 1>

ELSE <Câu lệnh 2>;

 Lệnh rẽ nhánh dạng đủ:

  • Câu lệnh ghép:

BEGIN

<Các câu lệnh>;

END;

slide19

Bài 10

CẤU TRÚC LẶP

t nh t ng c c s t 1 n n v i n 10

Tính tổng các số từ 1 đến N (với N=10)

Với N = 10 ta có S gồm:

S = 1 + 2 + 3 + … + 9 + 10 = ???

Kết quả bao nhiêu

Tính giai thừa của N! với (N=10)

Kết quả bao nhiêu

Với S = N! thì ta có:

S = 1 x 2 x 3 x … x 8 x 9 x 10 = ???

20

s 1 2 3 9 10
S = 1 + 2 + 3 + … + 9 + 10 = ???
  • Ban đầu: Cho tổng S = 0.
  • Thực hiện: Cho 1 biến i chạy từ 1 đến 10, với mỗi biến i:
  • + i = 1: thì S = S + i (S = 0 + 1 = 1).
  • + i = 2: thì S = S + i (S = 1 + 2 = 3).
  • + i = 3: thì S = S + i (S = 3 + 3 = 6)
  • + i = 4: thì S = S + i (S = 6 + 4 = 10)
  • + i = 5: thì S = S + i (S = 10 + 5 = 15)
  • + i = 6: thì S = S + i (S = 15 + 6 = 21)
  • + i = 7: thì S = S + i (S = 21 + 7 = 28)
  • + i = 8: thì S = S + i (S = 28 + 8 = 36)
  • + i = 9: thì S = S + i (S = 36 + 9 = 45)
  • + i = 10: thì S = S + i (S = 45 + 10 = 55)
  • - Cuối cùng xuất ra S = 55.
s 1 x 2 x 3 x x 9 x 10
S = 1 x 2 x 3 x … x 9 x 10 = ???
  • Ban đầu: Cho S = 1.
  • Thực hiện: Cho 1 biến i chạy từ 1 đến 10, với mỗi biến i:
  • + i = 1: thì S = S x i (S = 1 x 1 = 1).
  • + i = 2: thì S = S x i (S = 1 x 2 = 2).
  • + i = 3: thì S = S x i (S = 2 x 3 = 6)
  • + i = 4: thì S = S x i (S = 6 x 4 = 24)
  • + i = 5: thì S = S x i (S = 24 x 5 = 120)
  • + i = 6: thì S = S x i (S = 120 x 6 = 720)
  • + i = 7: thì S = S x i (S = 720 x 7 = 5040)
  • + i = 8: thì S = S x i (S = 5040 x 8 = 40320)
  • + i = 9: thì S = S x i (S = 40320 x 9 = 362880)
  • + i = 10: thì S = S x i (S = 362880 x 10 = 3628800)
  • - Cuối cùng xuất ra S = 3628800.
s 1 x 2 x 3 x x 9 x 101
S = 1 x 2 x 3 x … x 9 x 10 = ???

S = 1 + 2 + 3 + … + 9 + 10 = ???

  • Ban đầu: Cho S = 1.
  • Thực hiện: Cho 1 biến i chạy từ 1 đến 10, với mỗi biến i:
  • + i = 1: thì S = S x i (S = 1 x 1 = 1).
  • + i = 2: thì S = S x i (S = 1 x 2 = 2).
  • + i = 3: thì S = S x i (S = 2 x 3 = 6)
  • + i = 4: thì S = S x i (S = 6 x 4 = 24)
  • + i = 5: thì
  • S = S x i (S = 24 x 5 = 120)
  • + i = 6: thì
  • S = S x i (S = 120 x 6 = 720)
  • + i = 7: thì
  • S = S x i (S = 720 x 7 = 5040)
  • + i = 8: thì
  • S = S x i (S = 5040 x 8 = 40320)
  • + i = 9: thì
  • S = S x i (S = 40320 x 9 = 362880)
  • + i = 10: thì
  • S = S x i (S = 362880 x 10 = 3628800)
  • - Cuối cùng xuất ra S = 3628800.
  • Ban đầu: Cho tổng S = 0.
  • Thực hiện: Cho 1 biến i chạy từ 1 đến 10, với mỗi biến i:
  • + i = 1: thì S = S + i (S = 0 + 1 = 1).
  • + i = 2: thì S = S + i (S = 1 + 2 = 3).
  • + i = 3: thì S = S + i (S = 3 + 3 = 6)
  • + i = 4: thì S = S + i (S = 6 + 4 = 10)
  • + i = 5: thì S = S + i (S = 10 + 5 = 15)
  • + i = 6: thì S = S + i (S = 15 + 6 = 21)
  • + i = 7: thì S = S + i (S = 21 + 7 = 28)
  • + i = 8: thì S = S + i (S = 28 + 8 = 36)
  • + i = 9: thì S = S + i (S = 36 + 9 = 45)
  • + i = 10: thì
  • S = S + i (S = 45 + 10 = 55)
  • - Cuối cùng xuất ra S = 55.
slide24

Ví dụ:Chương trình tính điểm cho HS một lớp (50HS). Sẽ phải lặp lại một số thao tác như sau:+ Nhập họ tên HS (hoặc SBD).+ Nhập điểm (các môn).+ Tính tổng điểm hoặc tính điểm trung bình.

Cấu trúc lặp

24

c i m

Đặc điểm:

Có một biến điều khiển (biến đếm), dùng để điều khiển việc lặp đi lặp lại.

Số lần lặp ta có thể biết trước.

Phải xác định được giá trị đầu và giá trị cuối của vòng lặp.

Lặp với số lần biết trước

26

x t b i to n t nh t ng s 1 2 3 98 99 100

Xét bài toán tính tổng:S = 1 + 2 + 3 + … + 98 + 99 + 100.

Các bước chính:

Lặp với số lần biết trước

Bước 1:

Gán S : = 0; i := 0

Bước 2:

Cho biến điều khiển i chạy từ 1  100

Bước 3:

Kiểm tra biến đ.khiển > 100 thì dừng.

Bước 4:

Với mỗi biến điều khiển ta thực hiện:

Cộng dồn biến điều khiển vào S

Bước 5:

Bước 5:

Xuất ra tổng S

27

slide28

Giá trị đầu tiên biến i tham gia vòng lặp là bao nhiêu?

S  0

i  0

Vòng lặp diễn ra ở chỗ nào?

Begin

{Bước 1}

i  i + 1

{Bước 2}

Sơ đồ 1

i > 100

sai

S S + i

{Bước 3}

Giá trị cuối biến i tham gia vòng lặp là bao nhiêu?

Khi nào thì quá trình lặp chấm dứt?

{Bước 4}

đúng

Xuất S

End

{Bước 5}

28

slide29

Giá trị đầu tiên biến i tham gia vòng lặp là bao nhiêu?

S  0

i  101

Begin

{Bước 1}

i  i – 1

{Bước 2}

Sơ đồ 2

i < 1

sai

S S + i

{Bước 3}

Giá trị cuối biến i tham gia vòng lặp là bao nhiêu?

Khi nào thì quá trình lặp chấm dứt?

{Bước 4}

đúng

Xuất S

End

{Bước 5}

29

slide30

Sơ đồ 1

Sơ đồ 2

Dạng lùi

Dạng tiến

S  0

i  101

Begin

S  0

i  0

Begin

i  i – 1

i  i + 1

i < 1

i > 100

sai

sai

S S + i

S S + i

đúng

đúng

Xuất S

End

Xuất S

End

30

nh n x t v 2 s kh i

Nhận xét về 2 Sơ đồ khối?

- Giống nhau:

+ Đều có 5 bước thực hiện.

+ Đều thực hiện quá trình lặp lại cộng dồn vào S.

+ Đều cho ra màn hình tổng S như nhau.

+ Biến i tham gia vòng lặp 100 lần.

- Khác nhau:

+ Bước 1 biến i được gán khác nhau.

+ Bước 3 kiểm tra điều kiện của biến i cũng khác.

+ Giá trị đầu và giá trị cuối biến i tham gia vòng lặp khác nhau.

+ Bước 2 biến i thay đổi khác nhau.

31

d ng l p ti n for bi n m gi tr u to gi tr cu i do c u l nh

- Dạng lặp tiến:for <biến đếm> := <giá trị đầu> to <giá trị cuối> do <câu lệnh>;

Câu lệnh for - do trong Pascal:

- Dạng lặp lùi:for <biến đếm> := <giá trị cuối> downto <giá trị đầu> do <câu lệnh>;

32

t nh t ng s 1 2 99 100

Tính tổng S = 1 + 2 + … + 99 + 100

+ Dạng lặp tiến:

for i:=1 to 100 do

S:=S+i;

+ Dạng lặp lùi:

for i:=100 downto 1 do

S:=S+i;

Câu lệnh for - do trong Pascal:

33

m t s l u

Một số lưu ý:

Giá trị đầu < giá trị cuối.

Biến đếm là một biến đơn, thường kiểu nguyên.

Không được sử dụng giá trị của biến đếm sau khi kết thúc vòng lặp.

Không được thay đổi giá trị biến đếm trong câu lệnh sau “do”.

34

slide35

3. Vídụ

Tính tổng S (với a là số nguyên nhập vào từ bàn phím và a>2).

Hãy xác định giá trị khởi đầu của S, quy luật thay đổi giá trị của S và số lần lặp.

Viết chương trình để giải bài toán trên.

?

  • S:=1/a;- S:= S + 1/(a+i);- i chạy từ 1 đến 100 => Số lần lặp là 100 lần.
slide36

II. LẶP VỚI SỐ LẦN LẶP KHÔNG BIẾT TRƯỚC

1. Bài toán

Tính giá trị tổng S, với a là số nguyên và a>2.

Cho đến khi

thì dừng lại.

Dữ liệu vào (Input) : Nhập a

Hãy xác định INPUT, OUTPUT và nêu thuật toán giải bài toán trên?

Dữ liệu ra (Output) : Tổng S

slide37

Nhập a

S:=1/a ; N:=1

1/(a+N) >= 0.0001

S:= S+1/(a+N);

N:= N+1;

THUẬT TOÁN

Bước 1: Nhập a.

Bước 2: S:=1/a; N:=1; {Khởi tạo S và N}

Bước 3: Nếu 1/(a+N) < 0.0001 => Bước 5

S

Đưa ra S

=> Kết thúc

Bước 4: S:=S+1/(a+N); N:=N+1; => quay lại bước 3

§

Bước 5: In S => Kết thúc.

 Vònglặpchỉdừngkhi 1/(a+N)<0.0001

slide38

2. Lặp với số lần lặp không biết trước

WHILE <Điềukiện> DO <Câulệnh>;

Trong đó:

Điều kiện

Sai

Điều kiện: Là biểu thức

quan hệ hoặc lôgic.

Câu lệnh: Là một câu lệnh của Pascal.

Đúng

Câu lệnh

Chừng nào điều kiện còn đúng thì câu lệnh còn được thực hiện.

slide39

3. Một số ví dụ

a

Bài toán đặt vấn đề:

Tính giá trị tổng S, với a là số nguyên và a>2

Cho đến khi

thì dừng lại.

WHILE 1/(a+N) >= 0.0001 DO

BEGIN

S:=S+1/(a+N);

N:=N+1;

END;

Nhận xét:

Chừng nào 1/(a+N)>=0.0001 thì còn thực hiện:

+ Tăng giá trị của tổng S thêm 1/(a+N).

+ Tăng N thêm 1 đơn vị.

slide40

Chương trình

Program Bai_toan;

Uses Crt;

Var a,N:Integer;

S:Real;

BEGIN

Clrscr;

Write(‘Nhap gia tri cua a= ‘);Readln(a);

S:=1/a;N:=1;

WHILE 1/(a+N)>=0.0001 DO

BEGIN

S:=S+1/(a+N);

N:=N+1;

END;

Writeln(‘Gia tri cua tong S = ‘,S:8:3);

Readln;

END.

slide41

II. LẶP VỚI SỐ LẦN LẶP KHÔNG BIẾT TRƯỚC

1. Bài toán

Lập chương trình nhập vào hai số nguyên dương M,N. Tìm ƯCLN của hai số đó.

Hãy xác định INPUT, OUTPUT và nêu thuật toán giải bài toán trên?

Dữ liệu vào (Input) : Nhập M,N

Dữ liệu ra (Output) : ƯCLN(M,N)

slide44

d. Phân tích bài toán

+ Dữ liệu:

  • M, N : Integer (M>0, N>0) (Input)

+ Xử lý:

  • Nhập vào số nguyên dương M,N.
  • Trong khi M<>N thì
  • Nếu M >N thực hiện phép tính
  • M = M-N;
  • Ngược lại N = N – M;
  • Xuất ra M.