rẽ nhánh VD1: Châu và Ngọc thường cùng nhau chuẩn bị các bài thực hành môn Tin học - Một lần Châu hẹn với Ngọc: “ Chiều mai nếu trời không mưa thì Châu sẽ đến nhà Ngọc ”.. - Một lần khác[r]
(1)Chươg III: cấu trúc rẽ nhánh và lặp $ 9: cấu trúc rẽ nhánh rẽ nhánh VD1: Châu và Ngọc thường cùng chuẩn bị các bài thực hành môn Tin học - Một lần Châu hẹn với Ngọc: “ Chiều mai trời không mưa thì Châu đến nhà Ngọc ” - Một lần khác, Ngọc nói với Châu: “ Chiều mai trời không mưa thì Ngọc đến nhà Châu, mưa thì gọi điện cho Châu để trao đổi” {Như cách diễn đạt Châu nói với Ngọc thuộc dạng thiếu: Nếu thì Như cách diễn đạt Ngọc nói với Châu thuộc dạng đủ : Nếu thì , không thì… Khái niệm: Cấu trúc dùng để mô tả các mệnh đề có dạng trên gọi là cấu trúc rẽ nhánh thiếu và đủ } (2) Ví dụ 2: Để giải phương trình giải ptb2: ax2 + bx + c = (a ≠ 0) {- Tính = b2- 4ac; - Nếu <0 thì phương trình vô nghiệm - Nếu ≥0 thì phương trình có nghiệm Như tuỳ thuộc vào giá trị mà ta đưa nghiệm hay vô nghiệm } (3) Sơ đồ thể cấu trúc rẽ nhánh PTB2 Nhập a,b,c Sa i Thông báo vô nghiệm, kết thúc b2 – 4ac Đúng ≥0 Tính và đưa nghiệm thực, kết thúc (4) Tính chất: Mọi ngôn ngữ lập trình có các câu lệnh để mô tả cấu trúc rẽ nhánh {2 C©u lÖnh If - Then Trong Pascal dùng câu lệnh If - Then để mô tả việc rẽ nhánh t ương ứng với loại mệnh đề rẽ nhánh sau:} a D¹ng thiÕu: If < ®iÒu kiÖn> Then < c©u lÖnh>; b Dạng đầy đủ: If < ®iÒu kiÖn> Then < c©u lÖnh 1> Else < c©u lÖnh 2>; Trong đó: - §iÒu kiÖn: Lµ biÓu thøc logic - C©u lÖnh, c©u lÖnh 1, c©u lÖnh lµ c©u lÖnh cña Pascal (5) Sơ đồ cấu trúc thể dạng thiếu và đủ sau: Dạng thiếu IF Hình Điều kiện Đúng Câu lệnh Sai IF Hình Câu lệnh Sa i Điều kiện Dạng đủ Đúng Câu lệnh (6) {* ý nghÜa c¸c c©u lÖnh: - Dạng thiếu: Nếu điều kiện đúng thì câu lệnh đợc thực hiÖn, nÕu ®iÒu kiÖn sai th× kh«ng thùc hiÖn g× - Dạng đủ: Nếu điều kiện đúng thì thực câu lệnh 1, nÕu ®iÒu kiÖn sai th× thùc hiÖn c©u lÖnh } VÝ dô1: If( X mod = 0) then Write(x,' la so chan'); VD 2: If d < then Write (' phuong trinh vo nghiem') Else Write (' Phuong trinh co nghiem'); (7) câu lệnh ghép {- ngôn ngữ lập trình cho phép gộp dãy câu lệnh thành câu lệnh ghép có dạng: begin <các câu lệnh>; end; } (8) Ví dụ: Đoạn chương trình sau ngôn ngữ Pascal có sử dụng câu lệnh ghép If d < then Writeln(' phuong trinh vo nghiem') Else Begin X1:= (-b-sqrt(d))/(2*a); X2:= -b/a – x1; end; {chú ý: - sau end phải là dấu chấm phẩy ‘;’ ,trước else không chứa dấu chấm phẩy ‘;’ - từ nói đến câu lệnh thì đó có thể là câu lệnh đơn là câu lệnh ghép } (9) Một số ví dụ {Quan sát các chương trình sau ngôn ngữ lập trình Pascal VD1: Tìm nghiệm thực phương trình bậc hai ax2 + bx + c = với a ≠ Input: Các hệ số a, b, c nhập từ bàn phím Output: Đưa màn hình các nghiệm thực thông báo " Phương trình vô nghiệm" (10) Program Giai_PTB2; uses crt; var a, b, c: real; d, x1,x2: real; Begin clrscr; write( 'nhap cac he so a, b, c : '); readln( a, b, c); d := b*b - 4*a*c; if d < then Writeln( ' phuong trinh vo nghiem.') else Begin X1:= (-b-sqrt(d))/(2*a); X2:= -b/a - X1; Writeln(' X1=', X1:8:3,'X2=',X2:8:3); end; readln end (11) VD2: Tìm số ngày năm: năm nhuận là năm chia hết cho 400 chia hết cho không chia hết cho 100 Input: N nhập từ bàn phím Output: Đưa số ngày năm N màn hình Program nam_nhuan; uses crt; var N, SN: integer; Begin clrscr; write( ' nam : '); readln( N); if (N mod 400 = 0) or (( N mod = 0) and ( N mod 100 <> 0)) then SN:= 366 else SN:= 365; Writeln( ' so cua nam ', n , ' la ' , SN ); readln end } (12) C củng cố Các ngôn ngữ lập trình có câu lệnh thể cấu trúc rẽ nhánh Câu lệnh rẽ nhánh có hai dạng: - Dạng thiếu: If < điều kiện> Then < câu lệnh>; - Dạng đủ: If < điều kiện> Then < câu lệnh 1> Else < câu lệnh 2>; - Có thể gộp dãy câu lệnh thành câu lệnh ghép có dạng: Begin <các câu lệnh>; End; D Bài tập nhà Làm bài tập 1,2, SGK- Trang 50, 51 (13)