Tài liệu Ngôn ngữ lập trình C và C++ - Bài 3: Dòng điều khiển - Đỗ Đăng Khoa: 4/21/2015
1
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
Ngôn ngữ lập trình C và C++
Bài 3: Dòng Điều Khiển
TS. Đỗ Đăng Khoa
Bộ môn Cơ học Ứng dụng
Viện Cơ khí
4/21/2015
2
Điều khiển Tuần Tự: Lệnh Đơn & Lệnh Phức
Các câu lệnh được xử lý
tuần tự theo thứ tự từ trên
xuống dưới
Lệnh đơn: là một câu lệnh
riêng lẻ được kết thúc bằng
dấu chấm phẩy “ ; ”.
{
int min, i, j;
Ví dụ:
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
Lệnh phức: Nhóm nhiều
lệnh đơn thành một lệnh
phức bằng cách rào chúng
bên trong các dấu ngoặc
nhọn {...}.
min = (i < j ? i : j);
cout << min << '\n';
}
4/21/2015
3
Dòng điều khiển
Điều khiển rẽ nhánh
Câu lệnh điều kiện if
Câu lệnh lựa chọn switch
Điều khiển chu trình
Chu trình while
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
Chu trình do while
Chu trình for
Lệnh continue: bắt đầu chu trình tiếp theo
Lệnh break: kết thúc chu trình
4/21/2015
4
Điều khiển Rẽ Nhánh
Cho phép thay đổi hướng thực hiện của chương
trình
Biểu thức ...
41 trang |
Chia sẻ: putihuynh11 | Lượt xem: 456 | Lượt tải: 0
Bạn đang xem trước 20 trang mẫu tài liệu Ngôn ngữ lập trình C và C++ - Bài 3: Dòng điều khiển - Đỗ Đăng Khoa, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
4/21/2015
1
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
Ngôn ngữ lập trình C và C++
Bài 3: Dòng Điều Khiển
TS. Đỗ Đăng Khoa
Bộ môn Cơ học Ứng dụng
Viện Cơ khí
4/21/2015
2
Điều khiển Tuần Tự: Lệnh Đơn & Lệnh Phức
Các câu lệnh được xử lý
tuần tự theo thứ tự từ trên
xuống dưới
Lệnh đơn: là một câu lệnh
riêng lẻ được kết thúc bằng
dấu chấm phẩy “ ; ”.
{
int min, i, j;
Ví dụ:
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
Lệnh phức: Nhóm nhiều
lệnh đơn thành một lệnh
phức bằng cách rào chúng
bên trong các dấu ngoặc
nhọn {...}.
min = (i < j ? i : j);
cout << min << '\n';
}
4/21/2015
3
Dòng điều khiển
Điều khiển rẽ nhánh
Câu lệnh điều kiện if
Câu lệnh lựa chọn switch
Điều khiển chu trình
Chu trình while
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
Chu trình do while
Chu trình for
Lệnh continue: bắt đầu chu trình tiếp theo
Lệnh break: kết thúc chu trình
4/21/2015
4
Điều khiển Rẽ Nhánh
Cho phép thay đổi hướng thực hiện của chương
trình
Biểu thức điều kiện trả về giá trị đúng hoặc sai
Ví dụ: Xác định một số là số chẵn hay số lẻ:
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
1) Nhập vào một số
2) Chia số đó cho 2 để xác định số dư
3) Nếu số dư là 0, số đó là “SỐ CHẴN”
4) Ngược lại số dư không bằng 0, số đó là
“SỐ LẺ”
4/21/2015
5
Điều khiển Rẽ Nhánh: If
Cú pháp:
if (điều kiện)
lệnh đơn / lệnh phức;
Ý nghĩa:
Nếu biểu thức điều kiện có giá trị
đúng (true), khối lệnh theo sau
Điều kiện
Đúng Sai
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
lệnh if được thực thi.
Điều kiện: biến, hằng, biểu
thức, hàm
Chú ý: “đúng” là một giá trị
khác 0
“sai” là giá trị 0
Lệnh Đơn/ Lệnh Phức
4/21/2015
6
Điều khiển Rẽ Nhánh: If
•Ví dụ 1: lấy trị tuyệt đối
if(value < 0)
value = -value;
•Ví dụ 2: xếp 2 số từ nhỏ đến lớn
if(value1 > value2)
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
{
temp = value1;
value1 = value2;
value2 = temp;
}
4/21/2015
7
Điều khiển Rẽ Nhánh: If - Else
Cú pháp:
if (điều kiện)
lệnh đơn 1 / lệnh phức 1;
else
lệnh đơn 2 / lệnh phức 2;
Ý nghĩa:
Biểu thức
điều kiện
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
Nếu biểu thức điều kiện trả về
giá trị đúng, lệnh đơn 1/ lệnh phức
1 được thực hiện.
Nếu biểu thức của if không trả về
giá trị đúng thì lệnh đơn 2/ lệnh
phức 2 được thực hiện.
Lệnh đơn 1/
Lệnh phức 1
Đúng Sai
Lệnh đơn 2/
Lệnh phức 2
4/21/2015
8
Điều khiển Rẽ Nhánh: If - Else
•Ví dụ 1: tìm số lớn hơn
trong 2 số
if(value1 > value2)
larger = value1;
else
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
larger = value2;
4/21/2015
9
Điều khiển Rẽ Nhánh: If - Else
Ví dụ 2: Kiểm tra một số là chẵn hay lẻ
#include
int main ()
{
int n;
printf(L"Nhập một số nguyên:");
#include
using namespace std;
int main ()
{
int n;
cout << "Nhập một số nguyên:";
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
scanf("%d", &n);
if(n%2 == 0)
printf("n là số chẵn");
else
printf("n là số lẻ");
return 0;
}
cin >> n;
if(n%2 == 0)
cout << "n là số chẵn";
else
cout << "n là số lẻ";
return 0;
}
4/21/2015
10
Điều khiển Rẽ Nhánh: If – Else - If
Cú pháp:
if (điều kiện 1)
lệnh đơn 1 / lệnh phức 1;
else if (điều kiện 2)
lệnh đơn 2 / lệnh phức 2;
.......
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
else if (điều kiện n-1)
lệnh đơn n-1 / lệnh phức n-1;
else
lệnh đơn n / lệnh phức n;
4/21/2015
11
Điều khiển Rẽ Nhánh: If – Else - If
Ý nghĩa:
Khi biểu thức điều kiện mang
nhiều giá trị
Các biểu thức được kiểm tra theo
thứ tự đã viết
Nếu một biểu thức nào đó đúng
if Ngày =={
học Toán;
}
else if Ngày=={
học C++;
}
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
thì câu lệnh tương ứng sẽ được
thực hiện và rồi kết thúc toàn bộ
kết cấu
Phần else xử lý khi không có điêu
kiện nào được thỏa mãn. Phần này
có thể được bỏ đi
else if Ngày=={
chơi;
}
else{
ngủ;
}
4/21/2015
12
Điều khiển Rẽ Nhánh: If – Else - If
•Ví dụ 1:
if(diem_so >= 90)
cout << “Diem = A" << endl;
else if(diem_so >= 80)
cout << “Diem = B" << endl;
else if(diem_so >= 70)
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
cout << “Diem = C" << endl;
else if(diem_so >= 60)
cout << “Diem = D" << endl;
else
cout << “Diem = F" << endl;
4/21/2015
13
Điều khiển Rẽ Nhánh: If – Else - If
#include
#include
using namespace std;
int main ()
{
{
cout << “Nghiệm kép: ";
cout << -b/(2*a) << endl;
}
else
{
Tệp chứa các hàm toán
học: sin, cos, tan, ln,
log, fabs.(trị tuyệt đối),
pow (mũ), sqrt(căn)...
Ví dụ 2: Giải phương trình ax2+bx+c=0
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
double a, b, c;
cout << "Nhập a, b, c:";
cin >> a >> b >> c;
double delta = b*b – 4*a*c;
if(delta < 0.0)
cout << "Nghiệm phức";
else if (fabs(delta) < 1.0E-5)
double x1, x2;
x1 = (-b + sqrt(delta))/(2*a);
x2 = (-b - sqrt(delta))/(2*a);
cout << “x1 = “<< x1 << endl;
cout << “x2 = “<< x2 << endl;
}
return 0;
}
4/21/2015
14
Điều khiển Rẽ Nhánh: If lồng nhau
Lệnh if lồng nhau là một
lệnh if được đặt trong một
lệnh if hoặc else khác
Sự nhập nhằng khi dẫy if
lồng nhau (else luôn được
gắn với if không có else
int a=-1, b=1,c=1;
if(a>0)
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
gần nhất trước đó)
Nên sử dụng móc nhọn
{..} để làm rõ các khối lệnh
trong mọi trường hợp
if(b>0)
c = 2;
else
c = 3;
4/21/2015
15
Điều khiển Rẽ Nhánh: Switch
Cú pháp:
Switch (Biểu thức)
{
case giá trị hằng 1:
khối lệnh 1;
case giá trị hằng 2:
Điều kiện
Khối lệnh 1
Case 1
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
khối lệnh 2;
......
default:
khối lệnh n;
}
Khối lệnh 2
Case 2
Khối lệnh n
default
4/21/2015
16
Câu lệnh lựa chọn switch
Cú pháp
switch (expression)
{
case value1:
Statement-1;
break;
case value2:
Biến, hằng, biểu thức,
hàm (kiểu trả về) có kiểu
kí tự hoặc số nguyên
Hằng kí tự hoặc nguyên
- Tùy chọn
- Không có lệnh break, tất cả các
case sẽ được thực hiện sau khi
so khớp giá trị
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
Statement-2;
break;
......
default:
Statement;
}
- Dùng break để thoát ngay khỏi
switch (không phải tiếp tục
chuyển sang các case còn lại).
- Tùy chọn
- Các lệnh trong default sẽ được
thực hiện nếu tất cả các case
đều không khớp giá trị
4/21/2015
17
Câu lệnh lựa chọn switch
Cú pháp
Thứ tự của các case và default tùy ý
switch (expression)
{
case value2:
Statement-2;
break;
default:
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
Statement;
case value1:
Statement-1;
break;
......
}
4/21/2015
18
Câu lệnh lựa chọn switch
Cú pháp
Gộp lại các case để thực hiện cùng
các lệnh
switch (expression)
{
case value1:
case value2:
Statement-x;
break;
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
......
default:
Statement;
}
4/21/2015
19
Điều khiển Rẽ Nhánh: Switch
Ý nghĩa:
•Tạo quyết định nhiều nhánh đặc biệt (Nếu dùng if
rẽ nhiều nhánh khiến chương trình khó đọc )
• Kiểm tra xem một biểu thức có ứng với một trong
số giá trị hằng hay không (từ đầu) và nhảy đến lệnh
tương ứng khi so trúng
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
• Dùng câu lệnh break để thoát ra ngay khỏi switch
khi không muốn kiểm tra tiếp các trường hợp còn
lại
•Không cần bao dãy lệnh bởi cặp dấu {}
•Nhánh default có thể nằm bất cứ đâu, không cần ở
cuối cùng
4/21/2015
20
Điều khiển Rẽ Nhánh: Switch
Minh họa switch và case
int x,y,z;
char a,b;
float f;
hàm func() có giá trị trả về là số nguyên.
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
switch đúng switch sai case đúng case sai
switch(x) switch(f) case 3: case 2.5:
switch(x>y) switch(x+2.5) case 'a‘: case x:
switch(a+b-2) case 1+2: case x+2:
switch(func(x,y)) case 'x'>'y‘: case 1,2,3:
4/21/2015
21
Điều khiển Rẽ Nhánh: Switch
•Ví dụ:
int th;
cout > th ;
switch (th) {
case 1: case 3: case 5: case 7: case 8: case 10:
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
case 12: cout << “thang nay co 31 ngay" ; break ;
case 2: cout << “thang nay co 28 ngay" ; break;
case 4: case 6: case 9:
case 11: cout << “thang nay co 30 ngay" ; break;
default: cout << “Nhap sai thang" ;
}
4/21/2015
22
Điều khiển Vòng Lặp
Vòng lặp: Một đoạn mã 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
Ba điều khiển vòng lặp:
• Vòng lặp For
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
• Vòng lặp While
• Vòng lặp Do.. While
4/21/2015
23
Điều khiển Vòng Lặp- For
Cú pháp:
for (khởi gán biến lặp ;
điều kiện lặp ; thay đổi
biến lặp)
{ khối lệnh lặp; }
•Ví dụ:
Điều kiện lặp
Khởi gán biến lặp
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
int i;
for(i=1; i<=20;
i++)
cout << "i is
" << i << endl;
Khối lệnh lặp
Đúng Sai
Thay đổi biến lặp
4/21/2015
24
Điều khiển Vòng Lặp- For
Thực hiện khởi tạo. Lặp quá trình kiểm tra điều kiện đúng thì
thực hiện khối lệnh và cập nhật, sai thì dừng.
Cú pháp
for(initialization;condition;incr/decr)
{
Statement
}
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
- Thực hiện đầu tiên
- Các lệnh khai báo hoặc
khởi tạo biến
for(i = 0; Khởi tạo
for(i = 0, j = 5;
for(int i = 0; Khai báo
for(int i = 0, j = 0; và khởi tạo
4/21/2015
25
Điều khiển Vòng Lặp- For
Thực hiện khởi tạo. Lặp quá trình kiểm tra điều kiện đúng thì
thực hiện khối lệnh và cập nhật, sai thì dừng.
Cú pháp
for(initialization;condition;incr/decr)
{
Statement
}
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
- hằng, biến, biểu thức và
hàm
- Nếu đúng, thực hiện các
lệnh trong chu trình
- Nếu sai thì kết thúc chu
trình
4/21/2015
26
Điều khiển Vòng Lặp- For
Thực hiện khởi tạo. Lặp quá trình kiểm tra điều kiện đúng thì
thực hiện khối lệnh và cập nhật, sai thì dừng.
Cú pháp
for(initialization;condition;incr/decr)
{
Statement
}
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
- Thực hiện ngay sau các
lệnh trong chu trình
- Các lệnh cập nhật các
biến đã khởi tạo (thường
là tăng/giảm các biến
đếm)
for(...; ....; i++)
for(...; ....; i ++, j ++)
4/21/2015
27
Điều khiển Vòng Lặp- For
Thực hiện khởi tạo. Lặp quá trình kiểm tra điều kiện đúng thì
thực hiện khối lệnh và cập nhật, sai thì dừng.
Cú pháp
for(initialization;condition;incr/decr)
{
Statement
}
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
4/21/2015
28
Điều khiển Vòng Lặp- For
Ý nghĩa:
Khởi gán biến lặp: là một lệnh gán để khởi tạo biến điều
khiển của vòng lặp
Điều kiện lặp: là một biểu thức quan hệ qui định khi nào
vòng lặp sẽ kết thúc
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
Thay đổi biến lặp: định nghĩa cách thức thay đổi của biến
điều khiển vòng lặp mỗi khi vòng lặp được thực thi
Ba phần của vòng lặp for phải được phân cách bởi dấu
chấm phẩy(;)
4/21/2015
29
Điều khiển Vòng Lặp- For
Ý nghĩa:
Ba phần này có thể để trống nhưng vẫn phải phân cách bởi
dấu chấm phẩy ;
Phần lệnh tạo nên thân vòng lặp có thể là một lệnh đơn
hoặc một lệnh phức (một tập nhiều lệnh)
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
Vòng lặp for tiếp tục được thực thi khi biểu thức kiểm tra
điều kiện vẫn có giá trị đúng(true). Khi điều kiện trở thành
sai(false), chương trình thực hiện lệnh theo sau vòng lặp for
4/21/2015
30
Điều khiển Vòng Lặp- For
•Ví dụ: tính n!
int n, giai_thua, i;
cout << “Nhap so tinh giai thua: ";
cin >> n;
giai_thua= 1;
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
for(i=1; i<=n; i++)
giai_thua *= i;
cout << “Giai thua cua" << n
<< " la " << giai_thua<< endl;
4/21/2015
31
Điều khiển Vòng Lặp- For
Một số trường hợp đặc biệt:
•Vòng lặp for có thể được mở rộng bằng cách chứa nhiều
giá trị khởi tạo và nhiều biểu thức tăng trị trong đặc tả của
vòng lặp for
#include
using namespace std;
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
void main()
{
int i, j , max;
cout<<“Nhap gia tri lơn nhat\n”);
cin>>max;
for(i = 0 , j = max ; i <=max ; i++, j--)
cout<<i + j;
}
4/21/2015
32
Điều khiển Vòng Lặp- For
•Vòng lặp for có thể để trống các biểu thức
Chu trình sau là một chu trình vô hạn:
for ( ; ; ) {
...
}
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
4/21/2015
33
Điều khiển Vòng Lặp- For
Vòng lặp for có thể lồng nhau:
for (i = 1; i<=max1; i++) {
for (j = 0; j < = max2; j++){
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
}
}
4/21/2015
34
Điều khiển Vòng Lặp- doawhile
Cú pháp:
do{
khối lệnh;
} while (điều kiện);
Ý nghĩa:
Thân của vòng lặp được thực thi
Khối lệnh
đúng
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
trước khi biểu thức điều kiện được
kiểm tra
Khi điều kiện mang giá trị sai
(False), vòng lặp do while sẽ được kết
thúc, và điều khiển chuyển đến lệnh
xuất hiện ngay sau lệnh while
sai
Điều kiện
4/21/2015
35
Điều khiển Vòng Lặp- do..while
•Ví dụ: tính n!
int n, giai_thua, i;
cout << “Nhap so tinh giai thua: ";
cin >> n;
giai_thua= 1;
i = 1;
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
do{
giai_thua*= i;
i++;
}while(i <= n);
cout << “Giai thua cua" << n
<< " la " << giai_thua<< endl;
4/21/2015
36
Điều khiển Vòng Lặp- while
Cú pháp:
while (điều kiện){
khối lệnh;
}
Ý nghĩa:
•Vòng lặp while lặp lại các lệnh
Điều kiện
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
trong khi một biểu thức điều
kiện mang giá trị đúng (True) Khối lệnh
đúng sai
4/21/2015
37
Điều khiển Vòng Lặp- while
•Ví dụ: tính n!
int n, giai_thua, i;
cout << “Nhap so tinh giai thua: ";
cin >> n;
giai_thua= 1;
i = 1;
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
while(i <= n){
giai_thua*= n;
i++;
}
cout << “Giai thua cua " << n
<< " la " << giai_thua<< endl;
4/21/2015
38
Cách chọn vòng lặp?
Vòng lặp For
Dùng khi số lần lặp biết trước
Vòng lặp while
•Dùng khi số lần lặp chưa biết trước
•Điều kiện lặp hay dừng phụ thuộc biểu thức logic
•Sử dụng khi khả năng thực hiện khối lặp không xảy
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
ra lần nào
Vòng lặp do-while
Giống với vòng lặp while, khác biệt duy nhất là sử
dụng khi ta biết chắc chắn khối lệnh lặp phải được
thực hiện ít nhất một lần
4/21/2015
39
Một số lệnh chuyển điều khiển
Lệnh Break:
Lệnh break được sử dụng để kết thúc một mệnh đề
case trong câu lệnh switch
Nó cũng có thể được sử dụng để kết thúc ngang
giữa vòng lặp
Khi gặp lệnh break, vòng lặp sẽ kết thúc ngay và
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
điều khiển được chuyển đến lệnh kế tiếp bên ngoài
vòng lặp
4/21/2015
40
Một số lệnh chuyển điều khiển
Lệnh Continue:
Lệnh continue dùng để bắt đầu thực hiện lần lặp kế
tiếp của vòng lặp
Khi gặp lệnh continue, các câu lệnh còn lại trong
thân vòng lặp bị bỏ qua và điều khiển được chuyển
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
đến lần lặp kế tiếp
4/21/2015
41
Một số lệnh chuyển điều khiển
Lệnh Continue:
Đoạn mã sau xử lý các phần tử dương trong bảng a,
bỏ qua các giá trị âm.
for (i = 0; i < n; i++)
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
if (a[i] < 0) /* nhảy qua các
phần tử âm */
continue;
... /* xử lý phần tử dương*/
Các file đính kèm theo tài liệu này:
- ngon_ngu_lap_trinh_c_va_c_bai_3_dong_dieu_khien_2633_1993519.pdf