Tin học cơ sở 4
Cac
́ Câu
́ Truc
́ Điêu
̀ Khiên
̉
Trong Bài Giảng 02
• Biến:
– 03 thuộc tính: kiểu, tên giá trị hiện tại
– Phải khai báo trướ c khi sử dụng
• Hằng:
– Giống biến như ng giá trị không đượ c phép thay đổ i
– Khở i tạo giá trị ngay khi khai báo hằng
– 02 cách khai báo hằng: #define & const (chú ý sự khác biệt)
• Quy tắc đặt tên:
–
–
–
–
–
Bắt đầu bằng chữ cái, tiếp chữ cái, chữ số, gạch chân
C phân biệt chữ thườ ng và chữ hoa
Không được trùng vớ i từ khóa của C/C++.
Tên biến nên gợ i nghĩa và ngắn gọn
Hằng nên viết hoa
Lê Nguyên Khôi
2
Trong Bài Giảng 02
• Kiểu dữ liệu cơ bản:
–
–
–
–
Số nguyên: char, int (miền giá trị trong limits.h)
Số thự c: double (miền giá trị trong float.h)
Logic & void
Chuyển đổi kiểu dữ liệu có thể mất độ chính xác. Cẩn thận !!!
• Các phép toán:
–
–
–
–
–
Đối vớ i DL số (nguyên/thự c): + - * / %
Đối vớ i DL logic: && || !
Toán tử so sánh: == != > < >= <=
Toán tử gán: = += -= *= /= %= ++ -Mứ c độ ư u tiên:
• ngoặc () cao nhất: thực hiện đầu tiên
• gán thấp nhất: thự c hiện cuối cùng
Lê Nguyên Khôi
3
Nôị Dung
• Các cấu trúc lự a chon:
̣
– if / if-else
– switch
• Các cấu trúc lặp
– while / do-while
– for
• Chuyên
̉ điêu
̀ khiên
̉
– break/continue
Lê Nguyên Khôi
4
Toán Tử So Sánh
Toán tử
Sử dụng
Trả về true (đúng) nếu
>
TH1 > TH2
TH1 lớ n hơ n TH2
>=
TH1 >= TH2 TH1 lớ n hơ n hoặc bằng TH2
<
TH1 < TH2
<=
TH1 <= TH2 TH1 nhỏ hơ n hoặc bằng TH2
==
TH1 == TH2 TH1 và TH2 bằng nhau
!=
TH1 != TH2 TH1 và TH2 khác nhau
Lê Nguyên Khôi
TH1 nhỏ hơ n TH2
5
Biêu
̉ thưc
́ logic
• Cać phep
́ toan
́ logic
– Phep
́ AND logic (&&)
– Phep
́ OR logic (||)
– Phép NOT logic (!)
Lê Nguyên Khôi
6
Các phép toán logic
Toán tử
Sử dụng
Trả về true (đúng) nếu
&&
TH1 &&
TH2
TH1 và TH2 cùng đúng, đánh
giá TH2 có điều kiện
||
TH1 || TH2
TH1 hoặc TH2 đúng, đánh giá
TH2 có điều kiện
!
!TH
TH sai
Lê Nguyên Khôi
7
Lê Nguyên Khôi
8
Cấu trúc if
if (<biểu thức logic>) {
<cụm câu lệnh>
}
Kiêm
̉
tra điêu
̀
kiên
̣
đúng
• Nếu <biểu thức logic> (hay <biểu thức điều kiện>)
ĐÚNG thì thự c hiện <cụm câu lệnh>
• Nếu <biểu thức logic> (hay <biểu thức điều kiện>)
SAI thì KHÔNG thực hiện <cụm câu lệnh>
Lê Nguyên Khôi
9
Cấu trúc if …
if (<biểu thức logic>) {
<cụm câu lệnh>
}
•
Kiêm
̉
tra điêu
̀
kiên
̣
đúng
<cụm câu lệnh> có thể là:
– một câu lệnh đơn
– hoặc một cụm câu lệnh
– nên luôn sử dụng {} để gói đóng <cụm câu lệnh> do
•Dễ quên đóng gói {} khi chỉnh sử a, thêm/bớ t câu lệnh vào
câu lệnh>
•Dễ đọc & phân biệt <cụm câu lệnh> nào thuộc if
Lê Nguyên Khôi
10
Cấu trúc if …
if (<biểu thức logic>) {
<cụm câu lệnh>
}
Kiêm
̉
tra điêu
̀
kiên
̣
đúng
• Chú ý không có kiểu boolean trong C
– Trong C: 0 được hiểu như là sai false
tất cả các giá trị khác là đúng true
• Nếu <biểu thức logic> sai thì chươ ng trình sẽ tiếp tục
chạy như thế nào?
Lê Nguyên Khôi
11
Ví dụ về cấu trúc if
• Mã giả - pseudocode
if (nghỉ học thường xuyên) {
Không được đi thi
}
•Mã nguồn (C)
if (diemDanh < 8) {
printf(“Ban khong duoc phep di thi\n”);
}
Lê Nguyên Khôi
12
Câu
́ truc
́ lựa chon
̣ if…else
if (<biểu thức logic>) {
<cụm câu lệnh đk ĐÚNG>
}
else {
<cụm câu lệnh đk SAI>
}
• Chon
̣ giư a
̃ cać tuyên
́ if hoặc else
Lê Nguyên Khôi
Kiêm
̉
tra điêu
̀
kiên
̣
sai
đúng
13
Câu
́ truc
́ lựa chon
̣ if…else …
Kiêm
̉
if (<biểu thức logic>) {
tra điêu
̀
kiên
̣
<cụm câu lệnh đk ĐÚNG>
đúng
}
else {
<cụm câu lệnh đk SAI>
}
• Nêu
́ điêu
̀ kiên
̣ thoa
̉ man
̃ (<biểu thức logic> đúng)
sai
– Thự c hiên
̣ khôí lênh
̣
<cụm câu lệnh đk ĐÚNG>
• Nêu
́ điêu
̀ kiên
̣ không thoa
̉ mãn (<biểu thức logic> sai)
– Thự c hiên
̣ khôí lênh
̣
<cụm câu lệnh đk SAI>
Lê Nguyên Khôi
14
Câu
́ truc
́ lựa chon
̣ if…else …
if (<biểu thức logic>) {
<cụm câu lệnh đk ĐÚNG>
}
else {
<cụm câu lệnh đk SAI>
}
• Lư u ý: Nhanh
́ else không băt́ buôc̣
Kiêm
̉
tra điêu
̀
kiên
̣
sai
đúng
– Không có else, trở thành if như trướ c
Lê Nguyên Khôi
15
Ví dụ về cấu trúc if…else
• Mã giả - pseudocode
if (nghỉ học thường xuyên) {
Không được đi thi
}
else {
Có thể qua môn THCS 4
}
• Mã nguồn (C)
if (diemDanh < 8) {
printf(“Ban khong duoc phep di thi\n”);
}
else {
printf(“Ban co the qua mon THCS\n”);
} Lê Nguyên Khôi
16
Câu
́ truc
́ if…else lông
̀ nhau
• Câu
́ truć if…else naỳ trong câu
́ truć if…else kia:
– Để kiêm
̉ tra nhiêu
̀ trươ ng
̀ hợ p
• Môṭ khi điêu
̀ kiên
̣ thoa
̉ man,
̃ cać cụm lênh
̣ khać bỏ qua
if (<biểu thức logic 1>)
<cụm câu lệnh 1>
else if (<biểu thức logic 2>)
<cụm câu lệnh 2>
else
<cụm câu lệnh 3>
Lê Nguyên Khôi
17
Câu
́ truc
́ if…else lông
̀ nhau
• Quy luật: else của if gần nhất mà chưa có else
if (<biểu thức logic 1>)
<cụm câu lệnh 1>
else {
if (<biểu thức logic 2>)
<cụm câu lệnh 2>
else
<cụm câu lệnh 3>
}
Lê Nguyên Khôi
18
Ví dụ về cấu trúc if…else
………
if (tuoi_khac >= 0) {
if (tuoi_khac >= 150) {
printf(“ban co the da chet vao nam %i”, nam_khac);
}
else {
printf(“tuoi cua ban vao nam %i la %i”, nam_khac,
tuoi_khac);
}
}
else
{
printf(“ban chua sinh ra vao nam %i”, nam_khac);
}
Lê Nguyên Khôi
19
Câu
́ truc
́ if…else lông
̀ nhau
• Có rất nhiều cách lồng cấu trúc if…else:
– Đơ n giản: coi từ ng cấu trúc if…else như một cụm
câu lệnh (hay câu lệnh đơn)
• Lư u ý: việc sử dụng {} là rất cần thiết khi làm
việc vớ i cấu trúc if…else lồng do rất dễ mắc lỗi:
– Lỗi: else của if nào?
• Không nên quá 3 lệnh if…else lồng. Tại sao?
Lê Nguyên Khôi
20
Môṭ vaì lưu ý
• Nhâm
̀ lân
̃ giưa
̃ gan
́ (=) và so sanh
́ băng
̀ (==)
– Không lôĩ khi dich
̣ và chaỵ
– Kêt́ quả khać nhau
if (a = 10) … luôn đúng
if (a = 0) … luôn sai
if (a = b) … tương đương
if ( (a=b) != 0) …
– Thự c hiện phép gán xong rồi kiểm tra điều kiện
•Giá trị 0 luôn sai
•Giá trị khác 0 luôn đúng
Lê Nguyên Khôi
21
Môṭ vaì lưu ý
• Biểu thứ c logic trong toán học:
(0 ≤ tuoi ≤ 150)
Chuyển sang ngôn ngữ lập trình
(0 <= tuoi <= 150)
Dịch & chạy không báo lỗi như ng chạy sai !!!
• Biểu thứ c logic trong ngôn ngữ lập trình:
–Phải sử dụng các phép toán logic
(0 <= tuoi && tuoi <= 150)
–Lỗi thườ ng gặp: biểu thức logic luôn sai/đúng
(0 >= tuoi && tuoi >= 150)
Lê Nguyên Khôi
22
Câu
́ truc
́ if…else – Bài tập
• Tìm số lớ n nhất trong 3 số nhập vào từ bàn phím
Lê Nguyên Khôi
23
Câu
́ truc
́ switch
• Cấu trúc điêu
̀ khiên
̉ rẽnhanh
́ khác
switch (<biểu thức>) {
case <hằng số 1>:
<cụm câu lệnh 1>; break;
case <hằng số 2>:
<cụm câu lệnh 2>; break;
default:
<cụm câu lệnh mặc định>; break;
}
• Sau mỗi case phải là một hằng số
• Trườ ng hợ p default có thể có hoặc không
Lê Nguyên Khôi
24
Câu
́ truc
́ switch …
switch (<biểu thức>) {
case <hằng số 1>:
<cụm câu lệnh 1>; break;
default:
<cụm câu lệnh mặc định>; break;
}
• Giá trị của <biểu thức> tươ ng ứ ng (bằng) vớ i <hằng số i>
của case nào thì thực hiện <cụm câu lệnh i> tươ ng ứng
– break: kết thúc câu lệnh switch
–Nếu không có break?
• Tiếp tục thự c hiện các case tiếp theo cho tớ i khi:
– Gặp break
– Hoặc kết thúc cấu trúc switch
Lê Nguyên Khôi
25