Bài 9: Cấu trúc rẽ nhánh

Nội dung lý thuyết

BÀI 9. CẤU TRÚC RẼ NHÁNH

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

- Xét các ví dụ sau:

  • VD1: Chiều mai nếu trời không mưa thì Hùng đến nhà Tâm để học nhóm.
  • VD2: Chiều mai nếu trời không mưa thì Hùng đến nhà Tâm để học nhóm, nếu trời mưa thì Hùng gọi điện cho Tâm trao đổi.

- Nhận xét: Các mênh đề rẽ nhánh thường có dạng:

  • Nếu.....Thì....... → Đây là cách diễn đạt dạng thiếu
  • Nếu......Thì......Nếu không thì...... → cách diễn đạt dạng đủ

=> Cấu trúc dùng để mô tả các mệnh đề có dạng như trên được gọi là cấu trúc rẽ nhánh dạng thiếu và đủ.

- Ví dụ: Thuật toán giải và biện luận phương trình bậc nhất ax + b = 0

Bước 1: Nhập a, b

Bước 2: Nếu a<>0 thì x:=-b/a → bước 4

              Ngược lại → bước 3

Bước 3: Nếu b<>0 thì thông báo phương trình vô nghiệm

              Ngược lại thông báo phương trình vô số nghiệm.

Bước 4: Đưa x ra màn hình.

2. Cấu trúc if..... then..... (dạng thiếu)

- Cấu trúc:

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

- Sơ đồ khối:

        

- Hoạt động:

  • Bước 1: Tính giá trị của biểu thức điều kiện.
  • Bước 2: Kiểm tra giá trị của biểu thức điều kiện
    • Nếu biểu thức điều kiện có giá trị đúng thì thực hiện câu lệnh sau từ khoá THEN, rồi thoát ra khỏi câu lệnh IF, chuyển sang câu lệnh tiếp theo.
    • Nếu biểu thức điều kiện có giá trị sai thì thoát ra khỏi câu lệnh IF và chuyển đến thực hiện lệnh tiếp theo.

3. Cấu trúc if..... then..... else..... (dạng đủ)

- Cấu trúc: 

 

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

- Trong đó:

  • IF, THEN, ELSE là từ khoá
  • Điều kiện: Là biểu thức Logic hoặc biểu thức quan hệ.

- Sơ đồ khối:

- Hoạt động: 

  • Bước 1: Tính giá trị của biểu thức điều kiện.
  • Bước 2: Kiểm tra giá trị của biểu thức điều kiện
    • Nếu biểu thức điều kiện có giá trị đúng thì thực hiện câu lệnh sau từ khoá THEN, rồi thoát ra khỏi câu lệnh IF, chuyển đến thực hiện lệnh tiếp theo.
    • Nếu biểu thức điều kiện có giá trị sai thì thực hiện câu lệnh 2 sau từ khóa ELSE, rồi thoát ra khỏi câu lệnh IF, chuyển đến thực hiện lệnh tiếp theo.

4. Câu lệnh ghép

a. Định nghĩa

- Khi sau THEN và sau ELSE có từ 2 câu lệnh trở lên ta phải ghép chúng lại thành một nhóm nằm giữa 2 từ khoá BEGIN và END.

=> Định nghĩa: Một nhóm câu lệnh đơn được đặt giữa 2 từ khóa BEGIN và END sẽ tạo thành một câu lệnh ghép. 

b. Cú pháp:

BEGIN
     câu lệnh 1;
     câu lệnh 2;
     .....
     câu lệnh n;
END;

- Trong đó: 

  • BEGIN, END là từ khoá
  • câu lệnh 1, câu lệnh 2, ... câu lệnh n là các câu lệnh đơn bất kỳ.

c. Ví dụ

- Ví dụ 1: Tìm nghiệm của phương trình bậc 2: ax2 + bx + c = 0 với a\(\ne\)0

PROGRAM vidu1;
VAR a,b,c,x,x1,x2,delta:real;
BEGIN
     Write(‘nhap a,b,a’); readln(a,b,c);
     Delta:=b*b-4*a*c;
     IF delta <0 THEN

          writeln(‘phuong trinh vo nghiem’)
     ELSE IF delta=0 THEN
     Begin
          X:=-b/2*a;
          Writeln(‘phuong trinh co 1 nghiem la:’,x:8:2);
     End; 
     ELSE
     Begin  
          X1:=(-b-sqrt(delta))/2*a;  
          X2:=(-b+sqrt(delta))/2*a;
     End;
     Readln; 
END.

- Ví dụ 2: Chương trình tìm nghiệm của phương trình bậc nhất ax + b = 0

PROGRAM vidu2;
VAR a,b,x:real;
BEGIN

     Write(‘nhap a,b’); readln(a,b);
     IF a<>0 THEN
     Begin
          X:=-b/a;
          writeln(‘phuongtrinh co nghiem  la:’,x:8:2);
     End;
     ELSE IF b=0 THEN  
          writeln(‘phuong trinh vo so nghiem’);
     Else
          writeln(‘phuong trinh vo nghiem’);
     Readln;
END.

* Lưu ý: 

- Trong Pascal ta có thể đặt các lệnh ghép con trong các lệnh ghép lớn hơn bao ngoài của nó và có thể hiểu tương tự như cấu trúc ngoặc đơn ( ) trong các biểu thức toán học.