Biểu Biểu thức thức trong trong C:C:
 LàLà một một dãy dãy hữu hữu hạn hạn các các toán toán hạng hạng vàvà toán toán tửtử.
(x >> (p + 1 -- n)) & ~(~0 << n) (x >> (p + 1 -- n)) & ~(~0 << n)
 Toán Toán hạng hạng: : biến biến, , hằng hằng.
 Toán Toán tửtử::
 Toán Toán tửtử một một ngôi ngôi: : <<phép phép toán toán> a> a  ~a, !b, ++c.
 Toán Toán tửtử hai hai ngôi ngôi: : a <a <phép phép toán toán> b> b  a + b, x / y.
 Toán Toán tửtử baba ngôi ngôi: : toán toán tửtử điều điều kiện kiện ( ) ? : ( ) ? :
Kết quả biểu thức: : một giágiá trịtrị sốsố.
              
                                            
                                
            
 
            
                 31 trang
31 trang | 
Chia sẻ: oanh_nt | Lượt xem: 1629 | Lượt tải: 1 
              
            Bạn đang xem trước 20 trang nội dung tài liệu Bài giảng Nhập môn lập trình: Cấu trúc điều điều khiển, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
GV. Nguyễn Minh Huy
Cấu trúc điều khiển
1Nhập môn lập trình - Nguyễn Minh Huy
Nội dung
 Biểu thức và toán tử trong C.
 Cấu trúc rẽ nhánh.
 Cấu trúc lặp.
2Nhập môn lập trình - Nguyễn Minh Huy
Nội dung
 Biểu thức và toán tử trong C.
 Cấu trúc rẽ nhánh.
 Cấu trúc lặp.
3Nhập môn lập trình - Nguyễn Minh Huy
Biểu thức và toán tử trong C
 Biểu thức trong C:
 Là một dãy hữu hạn các toán hạng và toán tử.
(x >> (p + 1 - n)) & ~(~0 << n)
 Toán hạng: biến, hằng.
 Toán tử:
 Toán tử một ngôi: a  ~a, !b, ++c.
 Toán tử hai ngôi: a b a + b, x / y.
 Toán tử ba ngôi: toán tử điều kiện ( ) ? :
Kết quả biểu thức: một giá trị số.
4Nhập môn lập trình - Nguyễn Minh Huy
Biểu thức và toán tử trong C
 Toán tử số học:
 Ký hiệu: +, -, *, /, %.
% chỉ dùng với số nguyên.
int a = 5 % 3; // Đúng
float x = 5 % 3.0; // Sai
 / kết quả phụ thuộc toán hạng.
 Toán tử so sánh:
 Ký hiệu: >, =, <=, ==, !=.
 Kết quả: 1 (true), 0 (false).
int b = 5 / 3; // Chia nguyên
float y = 5.0 / 3; // Chia thực
int a = 5 > 3; // 1 (true)
int b = 5 == 3; // 0 (false)
int c = 5 != 3; // 1 (true)
5Nhập môn lập trình - Nguyễn Minh Huy
Biểu thức và toán tử trong C
 Toán tử logic:
 Ký hiệu:
 ! (not), && (and), || (or).
int a = (5 > 3) && (4 > 7); // 1 (true)
int b = (5 > 3) || (4 > 7); // 0 (false)
 Kết nối biểu thức so sánh.
 Kết quả: 1 (true), 0 (false).
 Toán tử trên bit:
 Ký hiệu: 
 & (and), | (or), ^ (xor).
int c = !(5 == 3); // 1 (true)
short a = 5 & 6; // 0101 and 0110
short b = 5 | 6; // 0101 or 0110
unsigned short c = ~1; // not 0001
 ~ (bù).
 >> (dịch phải), << (dịch trái).
 Thao tác trên bit dữ liệu.
6Nhập môn lập trình - Nguyễn Minh Huy
short d = a >> 1;
Biểu thức và toán tử trong C
 Toán tử tăng, giảm:
 Ký hiệu: ++, --.
Tăng/giảm 1 đơn vị trên biến.
int a = 5++; // Sai
int a = 5;
 Tiền tố: tính trước biểu thức.
 Hậu tố: tính sau biểu thức.
 Toán tử gán:
 Ký hiệu: =, =
a = b;
int b = ++a * 4; // b = 24
int c = a++ * 4; // b = 20
int a = 5;
int b, c, d;
d = c = b = a; // b = a
 a = a b;
 :
 +, -, *, /, %, 
 &, |, ^, >>, <<.
7Nhập môn lập trình - Nguyễn Minh Huy
// c = b
// d = c
int e += a; // e = e + a
int f *= a + 1; // f = f * (a + 1)
Biểu thức và toán tử trong C
 Độ ưu tiên toán tử:
8Nhập môn lập trình - Nguyễn Minh Huy
Nội dung
 Biểu thức và toán tử trong C.
 Cấu trúc rẽ nhánh.
 Cấu trúc lặp.
9Nhập môn lập trình - Nguyễn Minh Huy
Cấu trúc rẽ nhánh
 Câu lệnh if-else:
 Cú pháp:
if () Mã giả:
;
[else
;]
 Ví dụ:
// Câu lệnh if-else đủ
Nếu 
Lệnh 1
[Ngược lại
Lệnh 2]
Lệnh 1
sai
đúng
Lệnh 2
// Bỏ mệnh đề else // Dùng khối lệnh
if (n > 0)
a = a * 2;
else
a = a / 2;
10Nhập môn lập trình - Nguyễn Minh Huy
if (n > 0)
a = a * 2;
if (n > 0)
{
a = a * 2;
b = b + 1;
}
Cấu trúc rẽ nhánh
 Câu lệnh if-else:
 Lưu ý:
 Biểu thức logic phải đặt giữa ( ).
if n > 0 // Sai
a = a * 2;
 Giá trị 1: true.
 Giá trị 0: false.
 if-else là câu lệnh phức.
 Không có ; sau if hoặc else.
 if-else có thể lồng nhau.
 else tương ứng if gần nhất.
if (1) // Luôn đúng
a = a * 2;
if (n > 0) ; // Sai
a = a * 2;
else ;
a = a / 2;
11Nhập môn lập trình - Nguyễn Minh Huy
if (n > 0) // if-else lồng
if (a > b)
c = c + 1;
else
c = c – 1;
Cấu trúc rẽ nhánh
 Câu lệnh if-else:
 if-else lồng nhau, kiểm tra điều kiện trên cùng 1 biến:
if (dtb >= 8)
loai = “Gioi”;
else
if (dtb >= 6.5)
loai = “Kha”;
else
if (dtb >= 5)
loai = “Trung binh”;
if (dtb >= 8)
loai = “Gioi”;
else if (dtb >= 6.5)
loai = “Kha”;
else if (dtb >= 5)
loai = “Trung binh”;
else
loai = “Yeu”; 
else
loai = “Yeu”;
12Nhập môn lập trình - Nguyễn Minh Huy
Cấu trúc rẽ nhánh
 Câu lệnh switch-case:
 Cú pháp:
switch () // Câu lệnh if-else tương đương
{
[case :
;
break;
case :
;
break;
....]
if ( == )
;
else if ( == ) 
;
B
else
; 
[default:
;]
}
13Nhập môn lập trình - Nguyễn Minh Huy
Cấu trúc rẽ nhánh
 Câu lệnh switch-case:
switch (thu)
{
case 1:
printf(“Chu nhat”); break;
case 2:
printf(“Thu hai”); break;
case 3:
printf(“Thu ba”); break;
case 4:
printf(“Thu tu”); break;
case 5:
printf(“Thu nam”); break;
case 6:
printf(“Thu sau”); break;
case 7:
printf(“Thu bay”); break;
}
14Nhập môn lập trình - Nguyễn Minh Huy
Cấu trúc rẽ nhánh
 Câu lệnh switch-case:
 Lưu ý:
 Biểu thức phải đặt giữa ( ). switch a + b // Sai
 Giá trị ở mệnh đề case:
 Giá trị đơn.
 Không là miền giá trị.
 Câu lệnh break:
 Ngắt giữa các case.
 Có thể bỏ để ghép các case.
{
z
}
switch (a + b)
{
case > 5: // Sai
z
15Nhập môn lập trình - Nguyễn Minh Huy
}
Cấu trúc rẽ nhánh
 Câu lệnh switch-case:
switch (thu)
{
case 2:
case 3:
case 4:
case 5:
case 6:
printf(“Ngay lam viec”); break;
case 1:
case 7:
printf(“Ngay nghi”); break;
default:
printf(“Ngay khong ton tai”);
}
16Nhập môn lập trình - Nguyễn Minh Huy
Nội dung
 Biểu thức và toán tử trong C.
 Cấu trúc rẽ nhánh.
 Cấu trúc lặp.
17Nhập môn lập trình - Nguyễn Minh Huy
Cấu trúc lặp
 Xét chương trình xuất số:
 Xuất các số nguyên từ 1 đến 10.
 Thực hiện 10 lần lệnh xuất.
 Xuất các số nguyên từ 1 đến 100.
 Thực hiện 100 lần lệnh xuất!!
 Dùng lệnh lặp.
18Nhập môn lập trình - Nguyễn Minh Huy
Cấu trúc lặp
 Câu lệnh while và do-while
 Cú pháp:
// Câu lệnh while // Câu lệnh do-while
while ()
;
// Câu lệnh while tương đương
;
while ()
; Lệnh 1
do
{
;
} while ();
19Nhập môn lập trình - Nguyễn Minh Huy
 Lệnh 1
đúng
sai
đúng
sai
Cấu trúc lặp
 Câu lệnh while và do-while:
 Ví dụ:
// Câu lệnh while // Câu lệnh do-while
printf(“Nhap vao n = “);
scanf(“%d”, &n);
i = 1;
while (i <= n)
{
printf(“%d”, i);
i++;
printf(“Nhap vao n = “);
scanf(“%d”, &n); 
i = 1;
do
{
printf(“%d”, i);
i++;
}
20Nhập môn lập trình - Nguyễn Minh Huy
} while (i <= n);
Cấu trúc lặp
 Câu lệnh while và do-while:
 Lưu ý:
 Điều kiện lặp phải đặt giữa ( ). while n > 0 // Sai
 Một lệnh lặp thường có:
 B1: Khởi tạo biến đếm.
 B2: Kiểm tra điều kiện lặp.
 B3: Thực hiện lệnh.
 B4: Thay đổi biến đếm.
{
z
}
k = 0; // B1
while (k < n) // B2
{
S = S * k; // B3
21Nhập môn lập trình - Nguyễn Minh Huy
k = k + 2; // B4
}
Cấu trúc lặp
 Câu lệnh for:
 Cú pháp:
for ([] ; [] ; [])
;
// Câu lệnh while tương đương
;
while ()
{
;
;
 Lệnh 1
đúng
}
22Nhập môn lập trình - Nguyễn Minh Huy
sai
Cấu trúc lặp
 Câu lệnh for:
 Ví dụ:
printf(“Nhap vao n = “); printf(“Nhap vao n = “); printf(“Nhap vao n = “);
scanf(“%d”, &n);
// Đầy đủ.
for (i = 1; i <= n; i++)
printf(“%d”, i);
scanf(“%d”, &n);
// Bỏ khởi tạo.
i = 1;
for ( ; i <= n; i++)
printf(“%d”, i);
scanf(“%d”, &n);
// Bỏ luôn bước nhảy.
i = 1;
for ( ; i <= n; )
{
printf(“%d”, i);
i++;
23Nhập môn lập trình - Nguyễn Minh Huy
}
Cấu trúc lặp
 Lệnh break và continue:
 Lệnh break:
 Thoát khỏi vòng lặp.
printf(“Nhap vao n = “);
scanf(“%d”, &n);
 Dùng kết hợp với if-else.
 Lệnh continue:
 Bỏ qua một lần lặp.
 Dùng kết hợp với if-else.
for (i = 1; ; i++)
{
if (i > n)
break;
if (i % 2 == 0)
continue;
printf(“%d”, i);
24Nhập môn lập trình - Nguyễn Minh Huy
}
Tóm tắt
 Biểu thức và toán tử trong C:
 Biểu thức: một dãy hữu hạn toán tử và toán hạng.
Toán tử số học: +, -, *, /, %.
 Toán tử so sánh: >, =, <=, ==, !=.
 Toán tử logic: !, &&, ||.
 Toán tử trên bit: ~, &, |, ^, >>, <<.
 Toán tử tăng, giảm: ++, --.
 Toán tử gán: +, =.
25Nhập môn lập trình - Nguyễn Minh Huy
Tóm tắt
 Cấu trúc rẽ nhánh:
 Câu lệnh if-else.
Câu lệnh switch-case.
 Cấu trúc lặp:
 Câu lệnh while: kiểm tra điều kiện lặp trước.
 Câu lệnh do-while: kiểm tra điều kiện lặp sau.
 Câu lệnh for:
Khởi tạo biến đếm.
 Kiểm tra điều kiện lặp.
 Thực hiện lệnh.
 Thay đổi biến đếm.
26Nhập môn lập trình - Nguyễn Minh Huy
Bài tập
 Bài tập 4.1:
Viết chương trình C cho phép:
- Nhập vào số nguyên a, b.
- Nhập vào phép tính (+, -, *, /, %).
- Thực hiện phép tính vừa nhập trên 2 số nguyên và xuất kết quả.
27Nhập môn lập trình - Nguyễn Minh Huy
Bài tập
 Bài tập 4.2:
Viết chương trình C giải phương trình bậc hai: ax2 + bx + c = 0.
28Nhập môn lập trình - Nguyễn Minh Huy
Bài tập
 Bài tập 4.3:
Viết chương trình C cho phép:
- Nhập vào tháng và năm.
- Tính số ngày trong tháng và xuất kết quả như sau:
Thang nam co ngay.
29Nhập môn lập trình - Nguyễn Minh Huy
Bài tập
 Bài tập 4.4:
Viết chương trình C cho phép:
- Nhập vào số nguyên dương N.
- Tính và xuất kết quả:
a) S = 1 - 1/2 + 1/3 + z 1/N
b) S = 1 * 2 * z * N = N!
c) S = 1! + 2! + zN!
d) S = a1 + a2 + z ak ( { ai } là tập số chính phương <= N)
30Nhập môn lập trình - Nguyễn Minh Huy
Bài tập
 Bài tập 4.5:
Viết chương trình C cho phép:
- Tìm và xuất các số nguyên có 3 chữ số thỏa điều kiện:
Chữ số hàng chục = chữ số hàng trăm + chữ số hàng đơn vị.
- Xuất số lượng những số tìm được.
31Nhập môn lập trình - Nguyễn Minh Huy
            Các file đính kèm theo tài liệu này:
 ip_4_control_flow_in_c.pdf ip_4_control_flow_in_c.pdf