3.1. Cấu trúc rẽ nhánh
3.1.1. Lệnh if – else (Dạng đầy đủ)
Cú pháp:
if (<Biểu thức điều
kiện>)
{
<Khối lệnh 1>
}
else
{
<Khối lệnh 2>
}
Giải thích:
+
Khối lệnh 1, Khối lệnh 2 được thể hiện là một câu lệnh đơn, một khối lệnh hay một
câu lệnh phức.
+
Đầu tiên Biểu thức điều kiện được kiểm tra trước.
+
Nếu điều kiện đúng thì thực hiện Khối lệnh 1.
+
Nếu điều kiện sai thì thực hiện Khối lệnh 2.
+
Các lệnh phía sau Khối lệnh 2 không phụ thuộc vào điều kiện.
Ví dụ 3.1: Thực hiện chương trình
nhập vào một số thực a. In ra màn hình kết quả nghịch đảo của a khi a ≠0, khi a
=0 in ra thông báo “Khong the tim duoc nghich dao cua a”
#include
<stdio.h>
#include
<conio.h>
int
main()
{
float
a;
printf("Nhap
a = ");
scanf("%f",&a);
if
(a !=0 )
printf("Nghich dao cua %f la %f",a,1/a);
else
printf(“Khong the tim duoc nghich dao”);
getch();
}
3.1.2. Lệnh if (Dạng
không đầy đủ)
Cú pháp:
if (<Biểu thức điều
kiện>)
{
<Khối lệnh>
}
Giải thích:
+
<Khối lệnh> có thể là một câu lệnh đơn, một khối lệnh hay một câu lệnh phức.
+
Kiểm tra Biểu thức điều kiện trước.
+
Nếu điều kiện đúng (True) thì thực hiện Khối lệnh theo sau biểu thức điều kiện.
+
Nếu điều kiện sai (False) thì bỏ qua Khối lệnh
Ví dụ 3.2: Thực hiện chương trình
nhập vào một số thực a. In ra màn hình kết quả nghịch đảo của a khi a ≠ 0.
#include
<stdio.h>
#include
<conio.h>
int
main ()
{
float a;
printf("Nhap a = ");
scanf("%f",&a);
if (a !=0 )
printf("Nghich dao cua %f la %f",a,1/a);
getch();
return 0;
}
v
Trình tự thực hiện:
B1: Trình bày nội dung cấu
trúc lệnh if-else (dạng đầy đủ)
B2: Cho ví dụ minh họa.
B3: Trình bày nội dung cấu
trúc lệnh if (dạng không đầy đủ)
B4: Cho ví dụ minh họa
v
Thực
hành:
Bài
1. Viết chương trình nhập vào số nguyên, kiểm tra số đã
nhập là số âm hay số dương
Bài
2. Viết chương trình nhập vào 2 số a, b. Tìm số lớn nhất
giữa 2 số.
Bài
3. Viết chương trình nhập vào 1 số nguyên, kiểm tra số
vừa nhập là số chẵn hay lẽ.
Bài
4. Viết chương trình nhập vào 2 số a,b. Kiểm tra a có
là bội số của a không.
Bài
5. Viết chương trình hỗ trợ cách giải phương trình bậc
1 (ax + b = 0).
v
Bài tập:
Viết chương trình tìm số lớn nhất, số nhỏ nhất của 3 số a, b, c nhật từ bàn phím.
=================================
3.2. Lệnh switch case (Cấu trúc lựa chọn)
Câu
lệnh rẽ nhánh switch-case cho phép lựa chọn một trong các lựa chọn đã đưa ra.
Cú pháp:
switch (<biểu thức>)
{
case <hằng 1> : lệnh 1 ;
break;
case <hằng 2> : lệnh 2 ;
break;
. . . . . . . . . . . . .
case <hằng n> : lệnh n ;
break ;
default : lệnh n+1;
}
Giải thích:
-
Tính giá trị của biểu thức trước.
-
Nếu giá trị của biểu thức bằng hằng 1 thì thực hiện lệnh 1 rồi thoát.
-
Nếu giá trị của biểu thức khác hằng 1 thì so sánh với hằng 2, nếu bằng hằng 2
thì thực hiện lệnh 2 rồi thoát.
-
Cứ như thế, so sánh tới hằng n.
-
Nếu tất cả các phép so sánh trên đều sai thì thực hiện lệnh n+1 mặc định của
trường hợp default.
Ví dụ 3.3: Nhập vào giá trị tháng
của năm, xuất số ngày trong tháng.
#include
<stdio.h>
#include<conio.h>
int
main ()
{
int thang;
printf("\n Nhap vao thang trong nam ");
scanf("%d",&thang);
switch(thang)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
printf("\n Thang %d co 31 ngay ",thang);
break;
case 4:
case 6:
case 9:
case 11:
printf("\n Thang %d co 30 ngay ",thang);
break;
case 2:
printf ("\n Thang 2 co 28 hoac 29 ngay");
break;
default :
printf("\n Khong co thang %d", thang);
break;
}
getch();
}
Ví dụ 3.4: Nhập vào 1 kí tự, cho biết
kí tự đó là nguyên âm hay phụ âm
#include
<stdio.h>
#include<conio.h>
int main ()
{
char ch;
printf("\n Nhap vao
1 ki tu: ");
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("Day la phu am");
}
getch();
}
v
Trình tự thực hiện:
B1: Giới thiệu lệnh switch case;
B2: Nêu cú pháp;
B3: Giải thích
các thành phần trong câu lệnh;
B4: Đưa ra một số ví dụ.
v
Thực
hành:
Bài 1. Viết code cho Ví dụ 3.3
Bài 2. Viết code cho Ví dụ 3.4
v
Bài tập:
Ôn lại code của 2 bài thực
hành trên.
3.3. Cấu trúc lặp
Lệnh
lặp là một câu lệnh, một đoạn lệnh trong chương trình thực hiện lặp đi lặp lại
cho đến khi một điều kiện xác định được thỏa mãn. Có thể nói, một lệnh lặp cho
phép lặp lại các câu lệnh nhiều lần.
3.3.1. Cấu trúc lặp for
Lệnh
for thực thi việc lặp lại một câu lệnh, một khối lệnh nhiều lần với số lần lặp
xác định trước.
Cú pháp :
for ( [ <biểu thức
1>]; [ <biểu thức 2>] ; [ <biểu thức 3>])
{
<Khối lệnh>;
}
Quá trình thực hiện câu
lệnh for :
-
Bước 1: Xác định giá trị của biểu thức 1
-
Bước 2: Xác định giá trị của biểu thức 2
-
Bước 3: Nếu biểu thức 2 sai thì sẽ thoát vòng lặp for. Nếu biểu thức 2 đúng thì
máy sẽ thực hiện Khối lệnh.
-
Bước 4: Tính giá trị của biểu thức 3 và quay lại Bước 2
Chú ý:
-
Biểu thức 1 là biểu thức gán trị khởi động cho biến lặp.
-
Biểu thức 2 là biểu thức điều kiện. Nếu biểu thức 2 vắng mặt, điều kiện luôn
đúng .
-
Biểu thức 3 thông thường là biểu thức thay đổi điều kiện.
-
Biểu thức 1, 3 có thể gồm nhiều biểu thức cách nhau bởi dấu phẩy.
-
Biểu thức thứ 2 có thể bao gồm nhiều biểu thức, nhưng tính đúng sai của nó được
xem là tính đúng sai của biểu thức cuối cùng.
Ví dụ 3.5: Viết chương trình xuất
ra màn hình 10 lần câu “Xin chào!”
#include
<stdio.h>
#include<conio.h>
int
main()
{
for(int i=0;i<n;i++)
printf("\nXin
chao!");
getch() 0;
}
Ví dụ 3. 6: Viết chương trình tính
số lần chạy của xe máy khi chạy xe quang vòng tròn, với số lần chạy n nhập từ
bàn phím.
#include
<stdio.h>
#include<conio.h>
int
main()
{
int n; //n la so vong chay
printf("Nhap so vong can chay:");
scanf("%d",&n);
for(int i=0;i<n;i++)
{
printf("\nChay
lan %d",i+1);
}
getch() 0;
}
Ví dụ 3.7: Viết chương trình nhập
vào một số nguyên n. Tính tổng của các số nguyên từ 1 đến n.
#include
<stdio.h>
#include<conio.h>
int
main ()
{
int n,i,tong;
printf("\n Nhap vao so nguyen duong n:");
scanf("%d",&n);
tong=0;
for
(i=1; i<=n; i++)
tong+=i;
printf("\n Tong tu 1 den %d =%d ",n,tong);
getch();
}
3.3.2. Cấu trúc lặp
while
Lệnh
while thực thi việc lặp lại một khối lệnh khi điều kiện kiểm tra là đúng.
Cú pháp :
while(<biểu thức điều
kiện>)
{
< Khối lệnh >
}
Quá trình thực hiện của
vòng lặp while:
-
Bước 1: Tính giá trị của biểu thức điều kiện.
-
Bước 2: Nếu biểu thức điều kiện là sai (FALSE), thì máy sẽ thoát ra khỏi vòng lặp.
Nếu biểu thức điều kiện là đúng (TRUE) thì máy sẽ thực hiện Khối
lệnh
và quay lại bước 1.
Chú ý: Trong biểu thức điều kiện
của vòng while có thể gồm nhiều biểu thức cách nhau bởi dấu phẩy “,” nhưng tính
đúng sai của của nó là tính đúng sai của biểu thức sau cùng.
Ví dụ 3.8: In các số nguyên từ 1 đến
n, trong đó n nhập từ phím
#include
<stdio.h>
#include<conio.h>
int main ()
{
int
i,n;
printf("\n
Nhap n:"); scanf("%d", &n);
printf("\n Day so tu 1 den %d :",n);
i=1;
while (i<=n)
printf("%d ",i++);
getch();
}
3.3.3. Cấu trúc lặp
do..while
Lệnh
do...while thực thi việc lặp lại một khối lệnh nhiều lần. Nó thực hiện khối lệnh
ít nhất một lần. Sau đó sẽ kiểm tra điều kiện nếu điều kiện là đúng thì tiếp tục
thực thi khối lệnh cần lặp. Nếu điều kiện là sai thì kết thúc vòng lặp.
Cú
pháp :
do
{
<
câu lệnh>
}
while(<biểu thức>)
Quy
trình thực hiện:
- Bước 1: Câu lệnh được thực hiện trước tiên.
- Bước 2: Tính giá trị của biểu thức, nếu biểu thức là
đúng thì quay lại bước, nếu giá trị biểu thức là sai thì ngừng vòng lập.
Ví
dụ 3.9: Viết chương trình bắc buột nhập vào một số dương, nếu
nhập số âm yêu cầu nhập lại.
#include
<stdio.h>
#include
<conio.h>
int
main ()
{
int value;
do{
printf( "Nhap vao mot so duong");
scanf("%d",&value);
} while(value <=0);
getch();
}
v
Trình tự thực hiện:
B1: Nêu cấu trúc lặp;
B2: Cấu trúc lặp for – Ví dụ;
B3: Cấu trúc lặp
while – Ví dụ;
B4: Cấu trúc lặp
do-while – Ví dụ;
v
Thực
hành:
Bài 1. Viết code cho Ví dụ 3.5
Bài 2. Viết code cho Ví dụ 3.6
Bài 3. Viết code cho Ví dụ 3.7
Bài 4. Viết code cho Ví dụ 3.8
Bài 5. Viết code cho Ví dụ 3.9
Bài
6. Viết chương trình in trên màn hình các số từ đến
100, các số ngăn cách nhau bởi 1 đoạn khoảng trắng.
Bài
7. Viết chương trình tính tổng: 1 + 2 + 3 + 4 + 5 +….+
20
Bài
8. Viết chương trình tính tích:
T = 1*2*3*4*5*….*n, trong đó n nhập từ hím.
Bài
9. Viết chương trình tính tổng: S = 2 + 4 + 6 + 8 +….+
n, trong đó n nhập từ hím.
Bài
10. Viết chương trình nhập vào 1 kí tự, cho biết kí tự
này là nguyên âm hay phụ âm
Bài
11. Nhập vào thứ tự của tháng, cho biết tháng đó có bao
nhiêu ngày.
Bài
12. Viết chương trình nhập vào 2 số nguyên và lựa chọn
phép toán (cộng, trừ, nhân, chia) để tính kết quả.
Bài
13. Viết chương trình tính tổng các số chẵn nhỏ hơn n,
trong đó n nhập từ bàn phím
v
Bài tập:
Bài
1. Viết chương trình đếm số lượng số chẵn trong [n,m], trong đó n, m nhập
từ phím.
Bài
2. Viết chương trình tính tổng các số tự nhiên nhỏ hơn n
(sử dụng vòng lặp While)
3.4.
Các lệnh đặc biệt
3.4.1.
Lệnh Break
Từ khóa break được dùng để kết thúc vòng lặp, hoặc
cấu trúc switch.
3.4.2.
Lệnh Continue
Từ khóa continue thường được sử dụng trong vòng
lặp for để chuyển đến bước cuối cùng trong 1 lần lặp.
Ví
dụ 3.10: Viết chương trình nhập vào các số nguyên dương
và tính tổng chúng, khi nhập vào 0 thì dừng và in ra kết quả.
#include <stdio.h>
#include <conio.h>
int main()
{
int n;
int tong=0;
for(;;)
{
printf("\nNhap vao 1 so nguyen duong: ");
scanf("%d", &n);
if(n<0)
continue;
if(n==0)
break;
tong +=
n;
}
printf("\n=>Tong la: %d",
tong);
getch();
}
v
Trình tự thực hiện:
B1: Tìm hiểu lệnh Break;
B2: Tìm hiểu lệnh Continue;
B3: Cho ví dụ.
v
Thực
hành:
Viết code cho Ví dụ 3.10
v
Bài tập:
Xem lại code của các bài thực hành ở trên.
====================================