Chương 3
1
Nội dung trình bày
1.
2.
3.
Cấu trúc tuần tự
Cấu trúc lựa chọn
Cấu trúc lặp
2
1. Cấu trúc tuần tự
(sequence structure)
Thực
hiện các lệnh theo thứ tự từ trên
xuống
Lệnh (GT 34)
Khối lệnh (GT 34)
Ví dụ: các bài tập chương 1, 2
3
2. Cấu trúc lựa chọn
(selection structure)
Dựa
vào kết quả của biểu thức điều kiện
mà những lệnh tương ứng sẽ được thực
hiện
Các cấu trúc lựa chọn gồm:
◦ if
◦ switch
4
Cú
pháp:
Lưu đồ cú pháp
if (expression)
statement;
◦ expression: biểu thức
◦ statement: câu lệnh
◦ nếu expression là true thì
thực thi statement, ngược lại (là
false) thì khơng làm gì cả
◦ nếu statement có nhiều lệnh thì phải
bao các lệnh bởi cặp dấu { }
5
Viết chương trình nhập vào một số nguyên a. In ra màn hình
kết quả a có phải là số dương không.
#include <iostream.h>
#include <conio.h>
void main()
{
int a;
cout << "Input a = ";
cin>>a;
if (a>=0)
cout << a << " la so duong.”;
getch();
}
6
Cú
pháp:
Lưu đồ cú pháp
if (expression)
statement1;
else
statement2;
◦ expression: biểu thức
◦ statement: câu lệnh
◦ nếu expression là true thì thực thi
statement1, ngược lại, thực thi
statement2
◦ nếu statement1, statement2 có nhiều
lệnh thì phải bao các lệnh bởi cặp dấu { }
7
Viết chương trình nhập vào một số nguyên a. In ra
màn hình kết quả kiểm tra a là số âm hay dương.
#include <iostream.h>
#include <conio.h>
void main()
{
int a;
cout << “Nhap a = "; cin>> a;
if (a>=0)
cout<< a<< " la so duong.”;
else
cout<< a<< " la so am.”;
getch();
}
8
Có
thể sử dụng các câu lệnh if…else lồng
nhau
Khi dùng if…else lồng nhau thì else sẽ kết
hợp với if gần nhất chưa có else
Nếu câu lệnh if “bên trong” khơng có else thì
phải đặt trong cặp dấu {}
Tham khảo thêm ví dụ GT 38
int a;
cout << “Nhap a = "; cin>> a;
if (a>0)
cout<< a<< " la so duong.”;
else if (a<0)
cout<< a<< " la so am.”;
else
cout<< a<< “ khong duong, khong am.”;
9
Cấu
trúc switch là một cấu trúc lựa chọn
có nhiều nhánh
Được sử dụng khi có các lựa chọn là các
số nguyên
Cú pháp: switch (expression)
{
case value_1: statement_1;
[break;]
…
case value_n: statement_n;
[break;]
[default : statement;]
}
10
Xem
giải thích
GT 41
11
Lưu
ý:
◦ expression trong switch() phải có
kết quả là giá trị kiểu số nguyên
(int, char, long)
◦ Các giá trị sau case phải là hằng
ngun
◦ Khơng bắt buộc phải có default
◦ Thơng thường, cuối mỗi case có một
lệnh break để thốt khỏi cấu trúc
switch
12
Nhập vào một số nguyên, chia số nguyên này cho 2 lấy phần
dư. Kiểm tra nếu phần dư bằng 0 thì in ra thơng báo “là số
chẵn”, nếu số dư bằng 1 thì in thơng báo “là số lẻ”.
#include <iostream.h>
#include <conio.h>
void main () {
int n, sodu;
cout<<”Nhap vao mot so nguyen: ";
cin>>n;
sodu = n%2;
switch (sodu)
{
case 0: cout << n << ” la so chan."; break;
case 1:
cout<< n<< ” la so le."; break;
}
getch();
}
13
3. Cấu trúc lặp
(loop structure)
Lặp
lại 1 hay nhiều lệnh cho đến khi biểu
thức điều kiện có giá trị sai
Các cấu trúc lặp gồm:
◦ for
◦ while
◦ do ... while
Tuy
nhiên, thứ tự thực hiện các lệnh của
chương trình cịn bị chi phối bởi các lệnh
nhảy như continue, break, goto
14
for ([Exp1]; [Exp2];
[Exp3])
statement;
◦ Exp1:
là biểu thức khởi tạo
◦ Exp2: là biểu thức điều kiện
◦ Exp3: biểu thức điều khiển lặp
◦ nếu statement có nhiều lệnh
thì phải bao các lệnh bởi cặp
dấu { }
Xem
giải thích GT 48
15
Viết chương trình tính tổng các số ngun từ 1
đến n.
#include <iostream.h>
#include <conio.h>
void main()
{
int i, n, sum;
cout<<”Nhap vao 1 so:”; cin>> n;
sum=0;
for (i=1 ; i<=n ; i++)
sum += i;
cout<<”Tong tu 1 den “<< n<< ” la: ”<< sum;
getch();
}
16
C/C++
cho phép Exp1 là một định nghĩa
biến
Ví dụ: for (int i=1; i<=10; ++i)
Bất
kỳ biểu thức nào trong 3 biểu thức
của vịng lặp for đều có thể bỏ qua
Ví dụ: for(; i != 0;) statement;
Xóa
tất cả các biểu thức trong vịng lặp
for sẽ cho một vịng lặp vơ tận
Ví dụ: for (;;) statement;
17
while (expression)
statement;
◦ Bước 1: xác định giá trị
expression
◦ Bước 2: Nếu kết quả là
true thì thực thi statement
và quay lại Bước 1
◦ Bước 3: Nếu kết quả là
false thì thốt khỏi vịng
lặp while
statement
có thể khơng được
thực hiện lần nào
nếu statement có nhiều lệnh
thì phải bao các lệnh bởi cặp
dấu { }
18
Viết chương trình tính tổng các số ngun từ 1 tới n.
#include<iostream.h>
#include<conio.h>
void main ()
{
int i, n, sum=0;
cout<<”Nhap n= ”; cin>> n;
i=1;
while (i<=n)
{
sum += i;
i++;
}
Cout<<“tong la:”<
getch();
}
19
Vịng
lặp phải kết thúc ở một điểm nào
đó
Bên
trong vịng lặp phải cung cấp một
cách thức nào đó buộc expression trở
thành false, nếu khơng thì sẽ lặp vơ tận
Trong
ví dụ trước thì lệnh i++; là cách
thức tăng biến i để đến khi i>n thì vịng
lặp kết thúc
Khơng
được đặt dấu ; sau biểu thức
while
20
do {
statement;
} while (expression);
◦ Bước 1: thực hiện
statement
◦ Bước 2: xác định giá trị
expression
◦ Bước 3: nếu expression là
true thì quay lại Bước 1
nếu expression là false thì
thốt khỏi vịng lặp
statement
ln được
thực hiện ít nhất 1 lần
21
Viết chương trình in dãy số nguyên từ 1 đến 10.
#include <iostream.h>
#include <conio.h>
void main ()
{
int i;
cout<<“Day so tu 1 den 10: ";
i=1;
do {
cout<< setw(3)<< i;
i+=1;
} while(i<=10);
getch();
}
22
Lệnh
break dùng để thoát khỏi một cấu
trúc điều khiển: while, do...while, for,
switch
Khơng
sử dụng lệnh break bên ngồi các
cấu trúc while, do...while, for, switch
23
Lệnh
continue dùng để kết thúc vòng lặp
hiện tại và bắt đầu vòng lặp tiếp theo
Lệnh
continue chỉ được dùng trong thân
các cấu trúc lặp như for, while, do...while
Câu
lệnh continue thường đi kèm với câu
lệnh if
25
Viết một vòng lặp cho nhập vào từng số,
xử lý nó nhưng bỏ qua những số âm,
chương trình dừng khi số nhập vào là số 0.
do {
cin >> num;
if (num < 0) continue;
// process num here
} while (num != 0);
26