cau truc re nhanh

Bài 9: CẤU TRÚC RẼ NHÁNH

 

1. Khái niệm rẽ nhánh

 Ví dụ : Để viết chương trình giải phương trình bậc 2, ta phải:
Tính r = b2 – 4ac;
Sau đó tùy thuộc vào giá trị của r mà ta có tính nghiệm hay không.
Trong thực tế :
–  Nếu r <0 thì phương trình vô nghiệm
–  Nếu r >=0 thì phương trình có nghiệm
–  Như vậy tùy thuộc vào giá trị của r mà ta đưa ra vô nghiệm hay có nghiệm.
–  Hoặc có thể nói : Nếu r< 0 thì phương trình vô nghiệm, ngược lại thì phương trình có nghiệm.
=> Như vậy ta thấy một số mệnh đề có dạng
+    Nếu …..thì…..
+    Nếu …..thì….. ngược lại thì
     Cấu trúc này được gọi là cấu trúc rẽ nhánh .
     Các NNLT thường cung cấp các câu lệnh để mô tả các cấu trúc rẽ nhánh như trên .
  

2. Câu lệnh If – Then

       Pascal dùng câu lệnh If – then để mô tả việc rẽ nhánh tương ứng với hai loại mệnh đề rẽ nhánh như nhau
– Dạng thiếu :
       If <điều kiện> Then <câu lệnh>;
– 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 quan hệ Logic.
Câu lệnh, câu lệnh 1, câu lệnh 2 là 1 câu lệnh của Pascal
Ý nghĩa củ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 hiện câu lệnh 1, nếu điều kiện sai thì thực hiện câu lệnh 2.
VD 1 : If (X Mod 2 = 0) Then
                      WRITE(x,’La so chan’);
VD 2: If DELTA <0 Then
                    WRITE(‘PT Vo Nghiem’)
          Else WRITE(‘PT co nghiem’);
VD 3: Tìm giá trị lớn nhất (max) của 2 số a và b
Cách  1 :
        Max :=a;    If    b >a    Then     max :=b;
Cách 2 :
        If    a >b    Then    max :=a    Else    max :=b;

3. Câu lệnh ghép

 – Trong ngôn ngữ Pascal, Câu lệnh ghép có dạng:
Begin
      <các câu lệnh>
End ;
Chú ý :
– Sau End phải là dấu; và trước Else không chứa dấu ;
– Từ nay nói đến câu lệnh thì đó có thể là câu lệnh đơn hoặc là câu lệnh ghép.
Ví dụ :  Đoạn chương trình sau trong ngôn ngữ Pascal có sử dụng chương trình ghép.
IF DELTA <0 THEN
         WRITELN(‘Phuong trinh vo nghiem’)
ELSE
     BEGIN
          X1 :=(-B-SQRT(DELTA))/(2*A);
          X2 := – B/A – X1;
          WRITELN(‘X1=’,X1:6:3,’X2=’,X2:6:3);
     END;

4. Một số ví dụ

 Quan sát các chương trình sau trong ngôn ngữ lập trình Pascal .
 Ví dụ 1 :
Tìm nghiệm thực của phương trình bậc hai
AX2+ BX + C= 0
Ví dụ 2 :

Tìm số ngày của một năm: 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 .