TIN HỌC ĐẠI CƯƠNG
Ngôn ngữ lập trình: C
Lý thuyết: 6 buổi
Thực hành: 8 buổi
GVHD: Dương Khai Phong
Email:
NỘI DUNG CÁC BUỔI HỌC
1.
2.
3.
4.
5.
6.
Tổng quan về C (chương 1,2)
Các cấu trúc điều khiển trong C (chương 3)
Hàm và cấu trúc chương trình (chương 4)
Mảng, chuỗi và con trỏ (chương 5)
Kiểu cấu trúc, đệ qui, tập tin (chương 6,7,8)
Ôn tập
CHƯƠNG 3: CÁC CẤU TRÚC ĐIỀU KHIỂN
1.
2.
3.
4.
5.
6.
b. Phân loại:
Cấu trúc điều khiển
ĐIỀU KIỆN
IF
ELSE
SWITCH
CASE
LẶP
FOR
KẾT HỢP: GOTO
WHILE
DO
WHILE
3. CẤU TRÚC ĐIỀU KIỆN: IF.. ELSE
a. Cấu trúc 1:
if (<Biểu_thức_điều_kiện>)
{
<Khối lệnh>;
}
Ý nghĩa:
printf(“Cho biet tuoi:”);
scanf (“%d”,&tuoi);
if (tuoi>=18)
{
printf(“Ban la thanh nien”);
}
int tuoi;
printf(“Cho biet tuoi:”);
scanf (“%d”,&tuoi);
if (tuoi>=18)
printf(“Ban la thanh nien”);
Nếu khối lệnh sau if chỉ có 1 lệnh thì ta có thể không
cần dùng cặp dấu ngoặc nhọn {…}
3. CẤU TRÚC ĐIỀU KIỆN: IF.. ELSE
Một số ví dụ về if:
Ví dụ 2: Nếu tuổi của người nào đó trên 18 tuổi thì xuất thông báo
“Bạn là thanh niên”, ngược lại “Bạn chưa đủ tuổi”?
int tuoi;
printf(“Cho biet tuoi:”);
scanf (“%d”,&tuoi);
if (tuoi>=18)
{
printf(“Ban la thanh nien”);
}
else
{
4. CẤU TRÚC RẼ NHÁNH: SWITCH..CASE
Cấu trúc chung:
switch (<Biểu_thức>)
{
case giá_trị_1:
<Khối_lệnh_1>;
[break;]
case giá_trị_2:
<Khối_lệnh_2>; [break;]
case giá_trị_k:
<Khối_lệnh_k>; [break;]
[default:
<Khối_lệnh_2>;]
}
* Lưu ý:
- Kết quả của biểu thức tính toán
phải là giá trị nguyên, ký tự.
- Các giá trị 1,2,..,k: phải là hằng
nguyên, ký tự.
- Khi giá trị biểu thức khác tất cả
các giá trị 1,2,..,k thì câu lệnh sau
default được thực hiện.
- Câu lệnh break dùng để thoát khỏi
lệnh switch sau khi thực hiện xong
1 trường hợp case (nếu không có
…
case 9:
printf(“chin”);break;
default:
printf(“Khong biet”);
}
5. CẤU TRÚC LẶP: FOR, WHILE, DO..WHILE
Nhận xét: khi một lệnh / khối lệnh phải thực hiện nhiều
lần thì ta dùng cấu trúc lặp để tránh viết lại lệnh / khối
lệnh nhiều lần. Ta có các cấu trúc lặp sau:
a/ FOR:
Công dụng: cấu trúc lặp for cho biết trước số lần sẽ
được lặp.
Cú pháp chung:
for (giá_trị_bắt_đầu;biểu_thức_đk_dừng;bước_lặp)
{
<Khối_lệnh>;
}
5. CẤU TRÚC LẶP:
for
Ví dụ 1: xuất các số nguyên từ 1..100
* Cách 1:
printf(“1“);
printf(“2“);
int i;
for (i=0;i
printf(“dem = %d”,dem);
break;
printf(“Thu nghiem break”);
}
}
=> KQ chỉ xuất dòng : dem = 1
for
Ví du: continue
Viết CT xuất các số lẻ nhỏ hơn 20 trừ các
số 5,11
void main()
{
int dem;
for (dem=0;dem
Nhận xét:
Nếu biểu thức còn khác 0 (hay biểu thức có giá trị
true) thì còn thực hiện khối lệnh của vòng lặp.
Vòng lặp while thường được sử dụng khi số lần lặp
không xác định trước.
Số lần lặp tối thiểu là 0 lần
5. CẤU TRÚC LẶP:
do..while
Ví dụ: viết lại CT cho phép nhập một số nguyên trong
khoảng 0..9, nếu nhập ngoài khoảng này thì bắt nhập lại.
int main()
{
int so;
do
{
printf(“Nhap mot so trong khoang 0..9: ”);
scanf(“%d”,&so);
} while (so>=0 && so
continue: dùng để bắt đầu thực hiện một vòng lặp
mới của chu trình bên trong nhất chứa nó (không thực
hiện những lệnh sau nó)
Ví du: xem thêm trang 75,76
5. CẤU TRÚC ĐIỀU KHIỂN:
goto
Cấu trúc điều khiển goto: là sự thể hiện giữa cấu trúc
điều kiện và cấu trúc lặp, được sử dụng kết hợp với nhãn
lệnh theo cú pháp sau:
goto <Tên_nhãn>;
Lưu ý:
Các lệnh goto và nhãn phải nằm trong cùng 1 hàm
Không cho phép dùng goto nhảy từ ngoài vào trong
Bài 1/ trang 77: cho biết kết quả thực thi CT
#include “stdio.h”
#include “conio.h”
main()
{
int a,b=4;
switch ((a=2)?5:2)
{
case 5: b+=2;
default: a-b--;
case 2: a--;
}
printf (“%d %d”,a,--b);
}
Kết quả in ra:
1 4
a = giá trị rác (-8599…)
Dòng này có 3 phép toán:
Phép toán: ()
Phép toán điều kiện: ?
Phép toán gán: =
=> Thứ tự ưu tiên các phép toán (tr34)
( ) => = => gán a=2
? => đây là một biểu thức hợp lệ => giá trị
của biểu thức là true => nhận giá trị 5
b+=2 => b=b+2 => b=6
Do không có break nên các lệnh sau nó
được thực hiện tiếp: