Tải bản đầy đủ (.pdf) (32 trang)

Bài giảng Tin học đại cương Chương 6: Cấu trúc rẽ nhánh

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.63 MB, 32 trang )

Nội dung
Câu lệnh điều kiện if
1
Câu lệnh rẽ nhánh switch
2
Các câu lệnh điều kiện cho phép thay đổi
luồng chương trình. Dựa trên một điều kiện
nào đó, một công việc có thể được thực hiện
hoặc không.
Giới thiệu
Câu lệnh if (Dạng không đầy đủ )
if ( biểu thức điều kiện )
<Công việc>
Công việc
Đ
S
Biểu thức
điều kiện
Câu lệnh đơn hoặc
Câu lệnh phức (kẹp
giữa { và })
Trong ( ), cho kết quả
(sai = 0, đúng ≠ 0)
Lệnh if
Ví dụ 1: Nhập vào số nguyên n. Kiểm tra nếu n là
số chẵn thì xuất ra màn hình “n là số chẵn”,
ngược lại xuất “n là số lẻ”.
Chia n cho 2, lấy phần dư:
- Nếu phần dư=0 Xuất: n là số chẵn
- Nếu phần dư=1 Xuất: n là số lẻ


if (n%2==0)
printf(“n la so chan");
if (n%2==1)
printf(“n la so le");
Câu lệnh if (Dạng không đầy đủ )
Thuật toán
Ví dụ2: Tìm số lớn nhất, số bé nhất trong hai số a và b
if (a>=b)
{
max=a;
min=b;
}
if(a<b)
{
max=b;
min=a;
}
Nếu ab thì a là số lớn nhất, b là số nhỏ nhất.
Nếu a<b thì b là số lớn nhất, a là số nhỏ nhất.
Thuật toán
Khối lệnh phải đặt trong dấu { }
Khối lệnh phải đặt trong dấu { }
Câu lệnh if (Dạng không đầy đủ )
Câu lệnh if (dạng đầy đủ)
<Công việc 1>
<Công việc 2>
Đ
S
Biểu thức điều kiện
if (<Biểu thức điều kiện>)

<Công việc 1>
else
<Công việc 2>
Câu lệnh đơn hoặc
Câu lệnh phức (kẹp
giữa { và })
Trong ( ), cho kết quả
(sai = 0, đúng ≠ 0)
Câu lệnh if (dạng đầy đủ)
Ví dụ 3: Tìm số lớn nhất trong hai số a và b
Thuật toán
Nếu a>b thì max là a. Ngược lai thì max là b
if( a > b)
max = a;
else
max = b;
Câu lệnh if (dạng đầy đủ)
Ví dụ 4: Tìm số lớn nhất, số bé nhất trong hai số
a và b
if (a>=b)
{
max=a;
min=b;
}
else
{
max=b;
min=a;
}
Câu lệnh if - Một số lưu ý

Câu lệnh if có thể lồng vào nhau và else
sẽ tương ứng với if gần nó nhất.
if (a != 0)
if (b > 0)
printf(“a != 0 va b > 0”);
else
printf(“a != 0 va b <= 0”);
if (a !=0)
{
if (b > 0)
printf(“a != 0 va b > 0”);
else
printf(“a != 0 va b <= 0”);
}
Câu lệnh if - Một số lưu ý
Nên dùng else để loại trừ trường hợp.
Câu lệnh if - Một số lưu ý
Câu lệnh if - Một số lưu ý
Nên dùng else để loại trừ trường hợp.
if (delta < 0)
printf(“PT vo nghiem”);
if (delta == 0)
printf(“PT co nghiem kep”);
if (delta > 0)
printf(“PT co 2 nghiem”);
if (delta < 0)
printf(“PT vo nghiem”);
else // delta >= 0
if (delta == 0)
printf(“PT co nghiem kep”);

else
printf(“PT co 2 nghiem”);
Câu lệnh if - Một số lưu ý
Không được thêm ; sau điều kiện của if.
if (a != 0)
printf(“a khac 0.”);
if (a != 0);
printf(“a khac 0.”);
switch (<biểu thức>)
{
case <Giá trị 1>: Công việc 1;
break;
case <Giá trị 2>: Công việc 2;
break;
. . . . . . . . . .
case <Giá trị n>: Công việc n;
break ;
default : Công việc n+1;
}
Câu lệnh switch
Cú pháp
Câu lệnh switch
Lưu đồ
Giải thích:
Tính giá trị của biểu thức.
+ Nếu giá trị của biểu thức bằng <giá trị 1> thì
thực hiện <công việc 1> rồi thoát.
+ Nếu giá trị của biểu thức khác <giá trị 1> thì so
sánh với <giá trị 2>, nếu bằng thì thực hiện <công
việc 2> rồi thoát.

+ Cứ như thế, so sánh tới giá trị n.
+ Nếu tất cả các phép so sánh trên đều sai thì
thực hiện công việc của trường hợp default.
Câu lệnh switch
Ví dụ: Nhập một số nguyên a. Hãy đọc giá trị của
số nguyên đó nếu nó có giá trị từ 1 đến 5, ngược
lại thông báo: số nằm ngoài phạm vi đọc .
a là biểu thức cần xét điều kiện
switch(a)
{
case 1:……
case 2:……
case 3:……
case 4:……
case 5:……
default:……
}
Câu lệnh switch
Ví dụ:
switch (a)
{
case 1:printf("Mot");
break;
case 2:printf("Hai");
break;
case 3:printf("Ba");
break;
case 4:printf("Bon");
break;
case 5:printf("Nam");

break;
default:
printf(“So nam ngoai pham vi doc");
}
Câu lệnh switch
- Trong lệnh switch có thể không có default
Ví dụ: Nhập vào một số nguyên n. Hãy cho
biết n chẵn hay lẻ
switch(n % 2)
{
case 0:printf("%d la so chan ",n);
break;
case 1:printf("%d la so le ",n);
break;
}
Câu lệnh switch
Chú ý: Lệnh switch sẽ nhảy đến case tương ứng
và thực hiện đến khi nào gặp break hoặc cuối
switch sẽ kết thúc.
switch(x)
{
case 0:printf(" x = 0 ");
break;
case 1:
case 2:printf("x = 1 hoac x = 2 ");
break;
case 3:
case 4:printf("x = 3 hoac x = 4 ");
break;
default:printf("Cac truong hop khac ");

}
Câu lệnh switch
void main()
{
char ch;
printf("Nhap mot ki tu chu:");
scanf("%c",&ch);
switch(ch)
{
case 'a':
case 'o':
case 'e':
case 'u':
case 'y':
case 'i':
printf("Day la nguyen am") ;
break ;
default:printf("Khong phai la nguyen am");
}
}
Câu lệnh switch
So sánh lệnh switch với lệnh if
− Đều là các câu lệnh rẽ nhánh
− Lệnh if tổng quát và mạnh hơn lệnh switch vì
lệnh if không hạn chế gì cả, còn lệnh switch
yêu cầu kết quả của biểu thức phải là giá trị
hằng nguyên
− Lệnh switch nào cũng có thể thay thế tương
đương bằng các lệnh if
Câu lệnh switch

So sánh lệnh switch với lệnh if
Sử dụng IF
if (a == 1)
printf("Mot");
if (a == 2)
printf("Hai");
if (a == 3)
printf("Ba");
if (a == 4)
printf("Bon");
if (a == 5)
printf("Nam");
if (a<1 || a>5)
printf(“Ngoai pham vi
doc");
Sử dụng câu lệnh switch
switch (a)
{
case 1:printf("Mot");
break;
case 2:printf("Hai");
break;
case 3:printf("Ba");
break;
case 4:printf("Bon");
break;
case 5:printf("Nam");
break;
default:
printf("Ngoai pham

vi doc");
}
CÂU TRẮC NGHIỆM
Câu 13. Lệnh nào sau đây in ra màn hình số lớn nhất giữa A và
B?
a. if (A > B) printf("%d",B); else printf("%d",A);
b. if (A > B) printf("%d",A); else printf("%d",B);
c. if (A > B) scanf("%d",&A); else scanf("%d",&B);
d. if (A < B) printf("%d",A); else printf("%d",B);
Câu 14. Kiểm tra nếu ba số a, b, c đều lớn hơn 1 thì in số 1, chọn
lệnh nào?
a. if ((a>1)&&(b>1)&&(c>1))printf("%d",1);
b. if ((a>1)||(b>1)||(c>1))printf("%d",1);
c. if (a>1)&&(b>1)&&(c>1) printf("%d",1);
d. if a,b,c> 1 printf("%d",1);

×