Bài giảng Lập trình C - Bài 3: Cấu trúc điều khiển trong C - Võ Đức Hoàng
Lập trì nh C
Bài 3. Cấu trúc điều khiển trong C
Võ Đức Hoàng
Email: [email protected]n
Cập nhật: 8/2018
1
Mục tiêu
Trình bày các cấu trúc lệnh, sinh viên hiểu và cài đặt được
các cấu trúc điều khiển trong viết chương trình, bao gồm:
1. Cấu trúc rẽ nhánh: if…else
2. Cấu trúc lựa chọn: switch…case
3. Cấu trúc lặp: while, for, do…while
4. Lệnh điều khiển: break, return, continue
2
Cấu trúc điều khiển
• Mục đích: điều khiển thứ tự thực thi các lệnh của chương
trình theo nhu cầu
• Lệnh (statement): một biểu thức kết thúc bởi 1 dấu chấm
phẩy
• Khối lệnh (block): tập các lệnh được bao quanh bởi cặp
dấu { }
3
Cá c loại cấu trúc điều khiển
Lệnh 1;
Lệnh 2;
Lệnh 3;
TUẦN TỰ
….
RẼ NHÁNH CÓ ĐIỀU
if
if … else
KIỆN
switch … case
LỰA CHỌN
for
while
do … while
LẶP
4
Cấu trúc tuần tự (sequence)
• Tuần tư
thực thi theo một chuꢁi tư
• Thực hiện xong lệnh này rồi chuyển
xuống lệnh kê tiếp
̣
thực thi tiến trꢀnh, mꢁi lệnh được
Lệnh 1
Lệnh 2
Lệnh 3
̀
trên xuống
́
• Mꢁi lệnh đều được thực hiện và duy nhất
một lần
5
#include <stdio.h>
#include <conio.h>
int main()
{
int a, b, tong, hieu, tich;
float thuong;
printf("Nhap vao so nguyen a: ");
scanf("%d", &a);
printf("Nhap vao so nguyen b: ");
scanf("%d", &b);
tong = a + b;
hieu = a - b;
tich = a * b;
thuong = (float)a / b; //Ép kiểu
printf("Tong: %d\n", tong);
printf("Hieu: %d\n", hieu);
printf("Tich: %d\n", tich);
printf("Thuong: %f", thuong);
getch();
return 0;
}
6
Cấu trúc rẽ nhá nh
Cấu trúc rẽ nhánh chỉ cho phép thực hiện một dãy lệnh nào
đó tuỳ thuộc vào biểu thức điều kiện
Dạng 1: chỉ xét trường hợp đúng
if (biꢀu thꢁc điꢂu kiꢃn)
{
<khꢄi lꢃnh>;
}
→ Nꢅu biꢀu thꢁc điꢂu kiꢃn cho kꢅt quꢆ true thì thꢇc hiꢃn khꢄi
lꢃnh bên trong if
7
Ví dụ: Viết chương trꢀnh nhập vào một số nguyên n, in ra
giá trị tuyệt đối của n
#include <stdio.h>
#include <conio.h>
int main()
{
n
int n;
printf("Nhap mot so nguyen: " );
scanf("%d", &n);
n<0
Yes
n=-n
if (n<0)
{
n = -n;
}
Gia tri
tuyet
printf("Gia tri tuyet doi = %d", n);
doi= +n
getch();
return 0;
}
8
Dạng 2: xét cả hai trường hợp đúng và sai
if (biꢀu thꢁc điꢂu kiꢃn)
{
<khꢄi lꢃnh 1>;
}
else
{
<khꢄi lꢃnh 2>;
}
→Nꢅu biꢀu thꢁc điꢂu kiꢃn cho kꢅt quꢆ true thi
̀ thꢇc
hiꢃn khꢄi lꢃnh 1, ngưꢈc lꢉi thꢇc hiꢃn khꢄi lꢃnh thư
́
2
9
VD: Nhập vào 2 số nguyên a và b, nếu a là bội số của b thꢀ
in “a là bội số của b”, ngược lại in “a khong la boi so cua b”
printf("Nhap vao a: ");
scanf("%d", &a);
printf("Nhap vao b : ");
scanf("%d", &b);
if (a%b == 0)
else
{
printf("a la boi so cua b");
printf("a khong la boi so cua b");
10
}
VD: Nhập vào 2 số nguyên a và b, nếu a là bội số của b thì
in “a là bội số của b”, ngược lại in “a khong la boi so cua b”
#include <stdio.h>
#include <conio.h>
int main()
{
int a, b;
printf("Nhap vao a: ");
scanf("%d", &a);
printf("Nhap vao b : ");
scanf("%d", &b);
if (a%b == 0)
{
printf("a la boi so cua b");
}
else
{
printf("a khong la boi so cua b");
}
getch();
return 0;
11
}
Cấu trúc if…else lồng nhau
• Cần xét từ 3 trường hợp trở lên
• Có thể lồng if…else vào bên trong của if hoặc else
• Phải đảm bảo trước else phải có if (cùng cấp)
• Nếu lồng if…else vào trong if thì phải đặt if…else trong
cặp dấu {}
if (bt điꢂu kiꢃn1)
{
if (bt điꢂu kiꢃn1)
if (bt điꢂu kiꢃn 2)
….
if (bt điꢂu kiꢃn 2)
….
}
12
Cấu trúc if…else lồng nhau
if (bt điều kiện 1){ //Nếu điều kiện 1 đúng
khối lệnh 1;
}
else if (bt điều kiện 2){ //Ngược lại, nếu điều kiện 2 đúng
khối lệnh 2;
}
…
else if (bt điều kiện N){ //Ngược lại, nếu điều kiện N đúng
khối lệnh N;
}
else{ //Không điều kiện nào thoả
khối lệnh cho trường hợp còn lại;
}
13
Cấu trúc if…else lồng nhau
if (bt điều kiện 1){
if (bt điều kiện 2){
khối lệnh 1_2;
}
else{
khối lệnh 1;
}
…
}
else …
14
VD: Giải và biện luận phương trꢀnh: ax+b=0
15
#include <stdio.h>
#include <conio.h>
int main()
{
int a, b;
printf("Nhap vao a: ");
scanf("%d", &a);
printf("Nhap vao b : ");
scanf("%d", &b);
if (a == 0)
{
if (b == 0)
printf("PT co vo so nghiem");
else
printf("PT vo nghiem");
}
else
printf("PT co 1 nghiem: x = %f", (float)-b / a);
getch();
return 0;
}
16
Bài tập – cho biết kết quả
int main()
{
int a = 9, b = 6;
a++;
a = a + b--;
if (a % 2 == 0)
printf("Gia tri cua a la chan");
printf("\nTong cua a va b la : %d", a + b);
getch();
return 0;
}
17
Bài tập viết chương trì nh
1. Cho 3 số nguyên a, b và c, hãy tꢀm giá trị lớn nhất của ba
sô trên và in ra kết quả.
́
2. Nhập vào số nguyên dương n, hãy cho biết n có phải là số
chính phương không? (n được gọi là số chính phương khi
căn bậc 2 của n là nguyên)
18
Bài tập viết chương trình
3. Viết chương trꢀnh nhập vào một sô
chữ sô. Xuất ra màn hꢀnh chữ sô lớn nhất ở vị trí nào? (nếu
trùng nhau thꢀ lấy chữ số ở hàng trăm)
VD: n=291 → Chữ sô lꢊn nhất là 9 ở hàng chꢋc
4. Nhập vào sô nguyên n gồm 3 chữ sô. Tạo lại số n sao cho các
́ nguyên dương n gồm 3
́
́
́
́
́
chữ số có thứ tự tăng dần
Ví dụ: n=291 → n = 129
5. Nhập vào giơ
̀, phút, giây. Kiểm tra xem giờ, phút, giây đó có
hợp lê hay không? In kết quả ra màn hꢀnh.
̣
19
Bài tập về nhà – Viết các chương trình sau
sau
1. Tính tiền cước TAXI. Biết rꢂng:
• km đꢌu tiên là 13.000đ
• mỗi km tiꢅp theo là 12.000đ
• từ km 30 trở lên thi
Hãy nhập sô km sau đó in ra sô
2. Nhập vào 3 sô nguyên dương. Kiểm tra xem 3 số đó có
̀
mỗi km thêm sꢍ là 11.000đ
́
́
tiền phải trả
́
lập thành 3 cạnh của tam giác không? Nếu có hãy cho
biết tam giác đó thuộc loại nào? (Vuông cân, cân,
vuông, đều hay thường)
3. Nhập vào một năm (>0). Cho biết năm này có phải là
năm nhuận hay không? In kết quả ra màn hꢀnh
20
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình C - Bài 3: Cấu trúc điều khiển trong C - Võ Đức Hoàng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
bai_giang_lap_trinh_c_bai_3_cau_truc_dieu_khien_trong_c_vo_d.pptx

