Cấu Trúc Rẽ Nhánh - VOER
- Trang chủ
- Tra cứu tài liệu
- Đóng góp
- Giới thiệu
-
- Đăng ký
- Đăng nhập
Đăng nhập
- Ghi nhớ
- Quên mật khẩu?
- Lệnh
Là một tác vụ, biểu thức, hàm, cấu trúc điều khiển…
Ví dụ 1:
x = x + 2;
printf("Day la mot lenh\n");
- Khối lệnh
Là một dãy các câu lệnh được bọc bởi cặp dấu { }, các lệnh trong khối lệnh phải viết thụt vô 1 tab so với cặp dấu { }
Ví dụ 2:
{ //dau khoi
a = 5;
b = 6; // viết thụt vô 1 tab so với cặp { }
printf("Tong %d + %d = %d", a, b, a+b);
} //cuoi khoi
Quên dùng cặp dấu { } bao bọc khi sử dụng khối lệnh, hoặc mở dấu { và quên đóng dấu }
Cấu trúc rẽ nhánh if
Toán tử if cho phép lựa chọn chạy theo một trong hai nhánh tuỳ thuộc vào sự bằng không và khác không của biểu thức. Nó có hai cách viết sau:
if ( biểu thức )khối lệnh 1;/* Dạng một */ | if ( biểu thức )khối lệnh 1;elsekhối lệnh 2 ;/* Dạng hai */ |
Hoạt động của biểu thức dạng 1 :
Máy tính giá trị của biểu thức. Nếu biểu thức đúng ( biểu thức có giá trị khác 0 ) máy sẽ thực hiện khối lệnh 1 và sau đó sẽ thực hiện các lệnh tiếp sau lệnh if trong chương trình. Nếu biểu thức sai ( biểu thức có giá trị bằng 0 ) thì máy bỏ qua khối lệnh 1 mà thực hiện ngay các lệnh tiếp sau lệnh if trong chương trình.
Hoạt động của biểu thức dạng 2 :
Máy tính giá trị của biểu thức. Nếu biểu thức đúng ( biểu thức có giá trị khác 0 ) máy sẽ thực hiện khối lệnh 1 và sau đó sẽ thực hiện các lệnh tiếp sau khối lệnh 2 trong chương trình. Nếu biểu thức sai ( biểu thức có giá trị bằng 0 ) thì máy bỏ qua khối lệnh 1 mà thực hiện khối lệnh 2 sau đó thực hiện tiếp các lệnh tiếp sau khối lệnh 2 trong chương trình.
Ví dụ :
Chương trình nhập vào hai số a và b, tìm max của hai số rồi in kết quả lên màn hình. Chương trình có thể viết bằng cả hai cách trên như sau:
#include "stdio.h"
main()
{
float a,b,max;
printf("\n Cho a=");
scanf("%f",&a);
printf("\n Cho b=");
scanf("%f",&b);
max=a;
if (b>max) max=b;
printf(" \n Max cua hai so a=%8.2f va b=%8.2f la Max=%8.2f",a,b,max);
}
#include "stdio.h"
main()
{
float a,b,max;
printf("\n Cho a=");
scanf("%f",&a);
printf("\n Cho b=");
scanf("%f",&b);
if (a>b) max=a;
else max=b;
printf(" \n Max cua hai so a=%8.2f va b=%8.2f la Max=%8.2f",a,b,max);
}
nếu biểu thức luận lý đúng thì
thực hiện khối lệnh và thoát khỏi if,
ngược lại
không làm gì cả và thoát khỏi if.
Nếu khối lệnh bao gồm từ 2 lệnh trở lên thì phải đặt trong dấu { }
Diễn giải:
+ Khối lệnh là một lệnh ta viết lệnh if như sau:
if (biểu thức luận lý)
lệnh;
+ Khối lệnh bao gồm nhiều lệnh: lệnh 1, lệnh 2..., ta viết lệnh if như sau:
if (biểu thức luận lý)
{
lệnh 1;
lệnh 2;
...
}
Không đặt dấu chấm phẩy sau câu lệnh if.
Ví dụ: if(biểu thức luận lý);
→ trình biên dịch không báo lỗi nhưng khối lệnh không được thực hiện cho dù
điều kiện đúng hay sai.
- Sự lồng nhau của các toán tử if
Ngôn ngữ C cho phép sử dụng các toán tử if lồng nhau có nghĩa là trong các khối lệnh (1 và 2) ở trên có thể chứa các toán tử if - else khác. Trong trường hợp này, nếu không sử dụng các dấu đóng mở ngoặc cho các khối thì sẽ có thể nhầm lẫn giữa các if-else.
Chú ý là máy sẽ gắn toán tử else với toán tử if không có else gần nhất. Chẳng hạn như đoạn chương trình ví dụ sau:
if ( n>0 ) /* if thứ nhất*/
if ( a>b ) /* if thứ hai*/
z=a;
else
z=b;
thì else ở đây sẽ đi với if thứ hai.
Đoạn chương trình trên tương đương với :
if ( n>0 ) /* if thứ nhất*/
{
if ( a>b ) /* if thứ hai*/
z=a;
else
z=b;
}
Trường hợp ta muốn else đi với if thứ nhất ta viết như sau:
if ( n>0 ) /* if thứ nhất*/
{
if ( a>b ) /* if thứ hai*/
z=a;
}
else
z=b;
- Lệnh else-if:
Khi muốn thực hiện một trong n quyết định ta có thể sử dụng cấu trúc sau:
if ( biểu thức 1 )
khối lệnh 1;
else if ( biểu thức 2 )
khối lệnh 2;
......
else if ( biểu thức n-1 )
khối lệnh n-1;
else
khối lệnh n;
Trong cấu trúc này, máy sẽ đi kiểm tra từ biểu thức 1 trở đi đến khi gặp biểu thức nào có giá trị khác 0.
Nếu biểu thức thứ i (1,2, ...n-1) có giá trị khác 0, máy sẽ thực hiện khối lệnh i, rồi sau đó đi thực hiện lệnh nằm tiếp theo khối lệnh n trong chương trình.
Nếu trong cả n-1 biểu thức không có biểu thức nào khác 0, thì máy sẽ thực hiện khối lệnh n rồi sau đó đi thực hiện lệnh nằm tiếp theo khối lệnh n trong chương trình.
Ví dụ :
Chương trình giải phương trình bậc hai.
#include "stdio.h"
main()
{
float a,b,c,d,x1,x2;
printf("\n Nhap a, b, c:");
scanf("%f%f%f,&a&b&c);
d=b*b-4*a*c;
if (d<0.0)
printf("\n Phuong trinh vo nghiem ");
else if (d==0.0)
printf("\n Phuong trinh co nghiem kep x1,2=%8.2f",-b/(2*a));
else
{
printf("\n Phuong trinh co hai nghiem ");
printf("\n x1=%8.2f",(-b+sqrt(d))/(2*a));
printf("\n x2=%8.2f",(-b-sqrt(d))/(2*a));
}
- Lệnh nhảy không điều kiện - toán tử goto:
Nhãn có cùng dạng như tên biến và có dấu: đứng ở phía sau. Nhãn có thể được gán cho bất kỳ câu lệnh nào trong chương trình.
Ví dụ :
ts: s=s++;
thì ở đây ts là nhãn của câu lệnh gán s=s++.
Toán tử goto có dạng:
goto nhãn;
Khi gặp toán tử này máy sẽ nhảy tới câu lệnh có nhãn viết sau từ khoá goto.
Khi dùng toán tử goto cần chú ý :
Câu lệnh goto và nhãn cần nằm trong một hàm, có nghĩa là toán tử goto chỉ cho phép nhảy từ vị trí này đến vị trí khác trong thân một hàm và không thể dùng để nhảy từ một hàm này sang một hàm khác.
Không cho phép dùng toán tử goto để nhảy từ ngoài vào trong một khối lệnh. Tuy nhiên việc nhảy từ trong một khối lệnh ra ngoài là hoàn toàn hợp lệ. Ví dụ như đoạn chương trình sau là sai.
goto n1;
.......
{ .....
n1: printf("\n Gia tri cua N la: ");
.....
}
Ví dụ :
Tính tổng s=1+2+3+....+10
#include "stdio.h"
main()
{
int s,i;
i=s=0;
tong:
++i;
s=s+i;
if (i<10) goto tong;
printf("\n tong s=%d",s);
}
Cấu trúc rẽ nhánh switch
Là cấu trúc tạo nhiều nhánh đặc biệt. Nó căn cứ vào giá trị một biểu thức nguyên để để chọn một trong nhiều cách nhảy.
Cấu trúc tổng quát của nó là:
switch ( biểu thức nguyên )
{
case n1
khối lệnh 1
case n2
khối lệnh 2
.......
case nk
khối lệnh k
[ default
khối lệnh k+1 ]
}
Với ni là các số nguyên, hằng ký tự hoặc biểu thức hằng. Các ni cần có giá trị khác nhau. Đoạn chương trình nằm giữa các dấu { } gọi là thân của toán tử switch.
default là một thành phần không bắt buộc phải có trong thân của switch.
Sự hoạt động của toán tử switch phụ thuộc vào giá trị của biểu thức viết trong dấu ngoặc ( ) như sau:
Khi giá trị của biểu thức này bằng ni, máy sẽ nhảy tới các câu lệnh có nhãn là case ni.
Khi giá trị biểu thức khác tất cả các ni thì cách làm việc của máy lại phụ thuộc vào sự có mặt hay không của lệnh default như sau:
Khi có default máy sẽ nhảy tới câu lệnh sau nhãn default.
Khi không có default máy sẽ nhảy ra khỏi cấu trúc switch.
Chú ý :
Máy sẽ nhảy ra khỏi toán tử switch khi nó gặp câu lệnh break hoặc dấu ngoặc nhọn đóng cuối cùng của thân switch. Ta cũng có thể dùng câu lệnh goto trong thân của toán tử switch để nhảy tới một câu lệnh bất kỳ bên ngoài switch.
Khi toán tử switch nằm trong thân một hàm nào đó thì ta có thể sử dụng câu lệnh return trong thân của switch để ra khỏi hàm này ( lệnh return sẽ đề cập sau ).
Khi máy nhảy tới một câu lệnh nào đó thì sự hoạt động tiếp theo của nó sẽ phụ thuộc vào các câu lệnh đứng sau câu lệnh này. Như vậy nếu máy nhảy tới câu lệnh có nhãn case ni thì nó có thể thực hiện tất cả các câu lệnh sau đó cho tới khi nào gặp câu lệnh break, goto hoặc return. Nói cách khác, máy có thể đi từ nhóm lệnh thuộc case ni sang nhóm lệnh thuộc case thứ ni+1. Nếu mỗi nhóm lệnh được kết thúc bằng break thì toán tử switch sẽ thực hiện chỉ một trong các nhóm lệnh này.
Ví dụ:
Lập chương trình phân loại học sinh theo điểm sử dụng cấu trúc switch:
#include "stdio.h"
main()
{
int diem;
tt: printf("\nVao du lieu:");
printf("\n Diem =");
scanf("%d",&diem);
switch (diem)
{
case 0:
case 1:
case 2:
case 3:printf("Kem\n");break;
case 4:printf("Yeu\n");break;
case 5:
case 6:printf("Trung binh\n");break;
case 7:
case 8:printf("Kha\n");break;
case 9:
case 10:printf("Gioi\n");break;
default:printf(Vao sai\n);
}
printf("Tiep tuc 1, dung 0:")
scanf("%d",&diem);
if (diem==1) goto tt;
getch();
return;
}
0 TẢI VỀ TÁI SỬ DỤNG- Tài liệu PDF
- Tài liệu EPUB
- Khoa CNTT ĐHSP KT Hưng Yên
- 47 GIÁO TRÌNH | 1411 TÀI LIỆU
- Tư tưởng chủ đạo và ảnh hưởng cuả phong trào nguồn mở
- Các mô hình kinh doanh B2B
- Tổng quan về kiến trúc máy tính
- Giới thiệu một số giải pháp thương mại điện tử điển hình
- Những điều chủ chốt của một website kinh doanh thành công
- Một số dự án mã nguồn mở
- Tổng quan môn học toán rời rac 1
- Quảng cáo trong thương mại điện tử
- Định lý và thuật toán liệt kê tất cả các chu trình Hamilton
- Sử dụng thư điện tử trong giao dịch điện tử
VOER message
×VOER message
Thư viện Học liệu Mở Việt Nam (VOER) được tài trợ bởi Vietnam Foundation và vận hành trên nền tảng Hanoi Spring. Các tài liệu đều tuân thủ giấy phép Creative Commons Attribution 3.0 trừ khi ghi chú rõ ngoại lệ.
Từ khóa » Khối Rẽ Nhánh Là
-
Hãy Trình Bày Sơ đồ Khối Cấu Trúc Rẽ Nhánh Dạng Thiếu Và Dạng đủ?
-
Tin Học 11 Bài 9: Cấu Trúc Rẽ Nhánh - HOC247
-
Trình Bày Sơ đồ Khối Cấu Trúc Rẽ Nhánh đang Thiếu, Dạng đủ - Hoc24
-
Bài 9: Cấu Trúc Rẽ Nhánh - Hoc24
-
Có Mấy Loại Cấu Trúc Rẽ Nhánh? Kể Tên Và Vẽ Sơ đồ Khối Của Các Loại ...
-
Vẽ Sơ đồ Câu Lệnh điều Kiện Có Cấu Trúc Rẽ Nhánh Dạng Thiếu Và Viết ...
-
Bài 4. Cấu Trúc Rẽ Nhánh (IF) - Tự Học Tin
-
Bài 9: Cấu Trúc Rẽ Nhánh - Tìm đáp án, Giải Bài Tập, để Học Tốt
-
Em Hãy Trình Bày Các Câu Sau đây Dưới Dạng Sơ đồ Khối Cấu Trúc Rẽ ...
-
Em Hãy Trình Bày Các Cậu Sau đây Dưới Dạng Sơ đồ Khối Cấu Trúc Rẽ ...
-
Giải Bài Tập Tin Học 11 - Bài 9: Cấu Trúc Rẽ Nhánh