You are on page 1of 81

TRƯỜNG ĐẠI HỌC THỦY LỢI

KHOA ĐIỆN - ĐIỆN TỬ


BỘ MÔN ĐIỆN TỬ VIỄN THÔNG

BÀI GIẢNG
LẬP TRÌNH ỨNG DỤNG TRONG ĐIỆN
TỬ VIỄN THÔNG

Hà Nội – 11/2023
1
KHOA ĐIỆN - ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ VIỄN THÔNG

BÀI GIẢNG
LẬP TRÌNH ỨNG DỤNG TRONG ĐIỆN TỬ
VIỄN THÔNG

Biên soạn: TS. Trần Văn Hội


Giảng viên: TS. Đoàn Hữu Chức
Mobile: 0904513379

2
NỘI DUNG MÔN HỌC
Chương 1: Giới thiệu về C/C++

Chương 2: Cấu trúc điều khiển

Chương 3: Dữ liệu mảng

Chương 4: Hàm và con trỏ

Chương 5: Lập trình ứng dụng trong ĐTVT

Ôn tập, test thử, kiểm tra

3
CHƯƠNG 2: CÁC LỆNH LỰA CHỌN VÀ LẶP

Bài 1: Các câu lệnh lựa chọn


Bài 2: Các câu lệnh lặp

4
BÀI 1: CÁC CÂU LỆNH LỰA CHỌN

Câu lệnh if

Câu lệnh switch


CÂU LỆNH if

if (dieukien) if (dieukien1)
caulenh1
caulenh
else if (dieukien2)
Caulenh2
if (dieukien)
.......................
caulenh1
else
else
caulenh3
caulenh2
CÂU LỆNH if
“Nếu trời mưa thì tôi ở nhà” Điều kiện
 Cú Biểu thức đúng
pháp: điều kiện
if (dieukien)
caulenh
Điều kiện sai
Câu lệnh

 dieukien: là biểu thức logic, trả về giá trị


True hoặc False

 caulenh: là câu lệnh xử lý


 Một câu lệnh, kết thúc bằng dấu chấm phẩy ;
 Khối lệnh, đặt trong hai dấu ngoặc {}
CÂU LỆNH if
 Minh họa:
CÂU LỆNH if
 Ví dụ:

if( b != 0 )
s = a/b;

if( b != 0)
{
s = a/b;
cout<<s;
}
CÂU LỆNH if

 Ví dụ: Nhập vào một số nguyên, đưa dòng thông báo số chẵn hay lẻ?

#include <iostream>
using namespace std; int
main()
{ int a;
cout<<"Nhap vao mot so: "; cin>>a;
if (a%2==0)
cout<<a<<" la so chan";
else
cout<<a<<" la so le";
return 0;
}
CÂU LỆNH if
 Điều kiện đơn:
 Sử dụng các phép toán so sánh (>, <, <=, >=, ==, !=)

if(a>0) ... if(ch=='Y')...

if(a+b>0)... if(a != b)...

if(a==0)... if(a%2 == 0)...


ĐIỀU KIỆN
 Điều kiện kết hợp:
 Sử dụng các toán tử quan hệ (>, <, <=, >=, ==, !=)
 Kết hợp với các toán tử logic (&&, ||, !)
 0<𝑥 ≤ 12

if( x>0 && x<=12 )...

 Điều kiện a, b, c là cạnh tam giác

if((a+b>c) && (a+c>b) && (b+c>a) && (a>0)&&(b>0)&&(c>0))


CÂU LỆNH if
 Ví dụ Nhập vào 2 số a, b. Tìm giá trị lớn nhất trong 2 số đó.
#include <iostream>
using namespace std;
int main()
{
int a, b, max;
cout<<"Nhap vao 2 so a, b: ";
cin>>a>>b; max=a;
if(b>max)
max = b;
cout<<"Gia tri lon
nhat la:"<<max;
return 0;
}
CÂU LỆNH if…else
“Nếu trời mưa thì tôi ở nhà
ngược lại thì tôi đi đá bóng” Biểu thức Điều kiện sai
điều kiện
 Cú
pháp: Điều kiện đúng Câu lệnh
if (dieukien) 2
caulenh1 Câu lệnh
1
else
caulenh2

 Nếu biếu thức dieukien có giá trị True thì caulenh1 được thực hiện
 Nếu biểu thức dieukien có giá trị False thì caulenh2 được thực hiện
CÂU LỆNH if…else
 Minh họa
CÂU LỆNH if…else

 Ví dụ:

if(a>b)
max = a;
else max = (a>b) ? a : b;
max =
b;

Bài tập: Nhập vào 3 số a, b, c. Tính và in ra số lớn nhất, số nhỏ


nhất trong 3 số:
if (a>b) if (a<b)
if (a>c) if (a<c)
max=a; min=a;
else else
max=c; min=c;
else // a<b else
if (b>c) if (b<c)
max=b; min=b;
else else
max=c; min=c;

17
ĐOẠN LỆNH SAU ĐÚNG HAY SAI? VÌ SAO?

if(count<=100 && count != 50)


cout<< count;

if( (a+b+c>0) && sqrt(a + b +c ) > 0.005) cout<< "Thoa


man dieu kien ";

bool c = a>b && a>0 && b<200;


if(c)
cout<<a+b;
if( b>0)
int s = pow(a,3)/b; cout<<s;
else
cout<<"Khong thuc hien
duoc!";
ĐOẠN LỆNH SAU HIỂN THỊ GÌ RA MÀN HÌNH
Khi a có các giá trị sau: 3, 0, -5
if(a>0)
b = 2*a+1;
else
b= -2*a+1;
cout<<"gia tri
b="<<b;
Khi ch có các giá trị sau: a, A, b

if(ch == 'a' || ch == 'b')


cout<<"Hello!";
else
cout<<"Goodbye!";
CHƯƠNG TRÌNH SAU LÀM GÌ?
#include <iostream> using
namespace std;
int main()
{ int gio;
float luong;
const float tienGio=20;
cout<<"nhap vao so
gio=";
cin>>gio;
if(gio>40){
luong = tienGio * 40 +
1.5*tienGio*(gio-40);
cout<<"So gio vuot dinh
muc="<<gio-40<<endl;
}
else
CẤU TRÚC if VỚI NHIỀU LỰA CHỌN

 Cú
pháp: Điều kiện đúng
if (dieukien1) Điều
kiện 1
caulenh1
Điều kiện sai Câu lệnh 1
else if
(dieukien2) Điều Điều kiện đúng
caulenh2 kiện 2
Câu lệnh 2
else Điều kiện sai
caulenh3
Câu lệnh
………. 3
CẤU TRÚC if VỚI NHIỀU LỰA CHỌN

 Minh họa
CẤU TRÚC if VỚI NHIỀU LỰA CHỌN
if(a==1)
 Ví dụ: cout<<"One";
else if (a==2)
cout<<"Two";
else if (a==3)
cout<<"Three";
else if (a==4)
cout<<"Four";
else if (a==5)
cout<<"Five";
else if (a==6)
cout<<"Six";
else if (a==7)
cout<<"Seven";
else if (a==8)
cout<<"Eight";
else if (a==9)
cout<<"Nine";
else
cout<<"";
CẤU TRÚC if LỒNG NHAU
 Cú
pháp:
if (dieukien1)
Điều Điều kiện đúng
{ kiện 1
if (dieukien2) Điều kiện sai Điều
Điều kiện 2 Điều
caulenh1 kiện kiện
else đúng sai
caulen Câu lệnh 1 Câu lệnh
h2 2
}
Câu lệnh
else 3
caulenh3
CẤU TRÚC if VỚI NHIỀU LỰA CHỌN
 Ví dụ: Giải phương trình bậc nhất ax+b=0
#include <iostream>
using namespace std;
int main()
{ double a, b;
cout<<"Nhap vao a, b"; cin>>a>>b;
if (a==0)
{
if (b == 0)
cout<<"Phuong trinh vo so
nghiem";
else
cout<<"Phuong trinh vo
nghiem";
}
else
cout<<"Nghiem cua phuong trinh
la: "<<-b/a;
BÀI TẬP

Bài 1: Giải phương trình bậc hai 𝒂𝒙𝟐 + 𝒃𝒙 + 𝒄 = 0


a = 1, b = 2 ; c = 3
a = 1, b = 2, c =1
a=1; b = -1; c = -2

Bài 2: Nhập 3 số a, b, c. Hãy cho biết 3 số trên có thể là độ dài 3


cạnh của một tam giác ? Đưa ra thông báo 3 số là 3 cạnh của
tam giác thường, đều, cân, vuông hoặc không phải là 3 cạnh của
tam giác.
#include <iostream>
#include <cmath>
using namespace std;
int main()
{ float a, b, c, x1, x2, delta;
cout<<"Nhap vao a = "; cin>>a;
cout<<"Nhap vao b = "; cin>>b;
cout<<"Nhap vao c = "; cin>>c;
if (a==0)
{ if (b==0)
{ if (c==0)
cout<<"PT vo so nghiem "<<endl;
else
cout<<"PT vo nghiem "<<endl;
}
else cout<<"PT co nghiem x = "<<-c/b<<endl;
}

27
else
{delta = b*b - 4*a*c;
if (delta<0)
cout<<"PT vo nghiem"<<endl;
else
if (delta==0)
cout<<"PT co nghiem kep"<<-b/(2*a)<<endl;
else
{ cout<<"PT co nghiem x1 = "<<(-b+sqrt(delta))/(2*a)<<endl;
cout<<"PT co nghiem x2 = "<<(-b-sqrt(delta))/(2*a)<<endl;
}
}
return 0;
}

28
BÀI TẬP

Bài 3 : Viết chương trình nhập vào chữ cái chuyển từ điểm chữ
về loại kết quả học tập tương ứng :
 Điểm A tương ứng với loại giỏi,
 Điểm B tương ứng với loại khá,
 Điểm C tương ứng với loại trung bình,
 Điểm D tương ứng với loại trung bình yếu,
 Điểm F tương ứng với loại yếu,
 Các chữ cái khác thì trả về thông báo lỗi.

29
CÂU LỆNH switch
 Chọn một trong nhiều phương án
 Chọn một (hoặc khối) câu lệnh thực hiện dựa trên giá trị dữ liệu ở
một thời điểm

switch

case 1: case 2: case 3:


break break break
CÂU LỆNH switch

Biểu thức
Hằng 1 câu lệnh/khối
lệnh 1
Hằng 2 câu lệnh/khối
lệnh 2
Hằng N câu lệnh/khối
lệnh N
default câu lệnh/khối lệnh
mặc định
CÂU LỆNH switch
CÂU LỆNH switch
 Cú pháp:

switch(bieuthuc)  bieuthuc: là biểu thức trả về kiểu


{ nguyên
case HANG_1:  hoặc kí tự hoặc bool.
cau_lenh_1;
break;  HANG_1, HANG_2: là các giá trị của
case HANG_2: biểu thức
cau_lenh_2;
break;  cau_lenh_1,… cau_lenhN: là câu
case HANG_N:
cau_lenh_N; lệnh (khối lệnh) thực hiện
break;  cau_lenh_mac_dinh: câu lệnh được
default:
cau_lenh_m thực hiện
ac_dinh;  nếu không có case nào thỏa mãn
}

Lệnh default là tùy chọn, có thể không có Chú ý với từ khóa break
BÀI TOÁN
if (day == 2) switch(day)
tv = "Thu hai"; {
else if (day == 3) case 2: tv = "Thu hai";break;
tv = "Thu ba"; case 3: tv = "Thu ba";break;
else if (day==4) case 4: tv = "Thu tu";break;
tv = "Thu tu"; case 5: tv = "Thu nam";break;
else if (day==5) case 6: tv = "Thu sau";break;
tv = "Thu nam"; case 7: tv = "Thu bay";break;
else if (day==6) default:tv = "Chu nhat";
tv = "Thu sau"; }
else if (day==7)
tv = "Thu bay";
else
tv= "Chu nhat";
CÂU LỆNH switch
 Ví dụ 1: Nhập vào 2 số nguyên a, b sau đó nhập vào phép toán cần tính (+; -;
* ; /). In kết quả phép toán tương ứng.
#include <iostream>
using namespace std;
int main()
{ int a, b;
cout<<"Nhap vao 2 so a va b:";
cin>>a>>b;
char c;
cout<<"Chon phep tinh +,-,*,/:"; cin>>c;
switch(c)
{ case '+':
cout<<“Tong hai so la:“<<a+b; break;
case '-':
cout<<“Hiệu hai so la:“<<a-b; break;
case '*':
cout<<“Tich hai so la:“<< a*b; break;
case '/':
cout<<“Thuong hai so la:“<<(float)a/b;
break;
default:
cout<<"Ban da chon khong dung yeu
cau!";
CÂU LỆNH switch
 Ví dụ 2: Nhập một chữ cái thường từ bàn phím. Xác định và in ra
chữ cái đó là nguyên âm hay phụ âm. Nếu nhập không đúng thì in ra
thông báo nhập không đúng yêu cầu.
#include <iostream> using
namespace std; int main()
{ char c;
cout<<"Nhap mot chu cai thuong:"; cin>>c;
if(c<'a' || c>'z')
cout<<"Ban da khong nhap dung yeu
cau!";
else
switch(c)
{ case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
cout<<"Chu cai vua nhap la nguyen am."; break;
default:
cout<<"Chu cai vua nhap la phu am." ;
}
}
BÀI TẬP
Bài 1: Nhập một chữ cái thường từ bàn phím. Xác định và in ra chữ
cái đó là nguyên âm hay phụ âm. Nếu nhập không đúng thì in ra
thông báo nhập không đúng yêu cầu.
Bài 2: Lập trình nhập vào tháng và năm từ bàn phím và đưa ra số
ngày của tháng đó ra màn hình. Nếu nhập không đúng thì thông
báo ra màn hình.
Bài 3: Lập trình đọc vào 2 số x, y và một lựa chọn trong ba giá trị
1,2,3 để tính các hàm tương ứng sau đây ra màn hình:
𝒙+𝒚
- Nếu chọn 1: tính hàm 𝒙𝟐 +𝒚𝟐 +𝟏
- Nếu chọn 2: tính hàm 𝒆𝒙 + 𝟓 ∗ 𝒚
- Nếu chọn 3: tính hàm 𝟏 + ( 𝒙𝟐 ∗ 𝒚 )
BÀI 2: CÁC CÂU LỆNH LẶP

 Vòng lặp xác định for


 Vòng lặp không xác định while

38
VÒNG LẶP XÁC ĐỊNH for
 Bài toán: Hãy in ra màn hình các số từ 0 đến 9
#include <iostream> #include <iostream>
using namespace std; using namespace std;
int main(){
cout<<0<<endl; int main()
cout<<1<<endl; {
cout<<2<<endl; for(int i=0; i<=9; i++)
cout<<3<<endl; cout<<i<<endl;
cout<<4<<endl; return 0;
cout<<5<<endl;
cout<<6<<endl; }
cout<<7<<endl;
cout<<8<<endl;
cout<<9<<endl; Thực hiện Sử dụng
return 0 bằng nhiều vòng lặp.
}
câu lệnh.
VÒNG LẶP XÁC ĐỊNH for

 Cú pháp:

for ( biểu thức 1 ; biểu thức 2 ; biểu thức 3)


câu lệnh

for (biểu thức 1 ; biểu thức 2 ; biểu thức 3)


{
khối lệnh
}
VÒNG LẶP XÁC ĐỊNH for
Bắt đầu
for ( biểu thức 1 ; biểu thức 2 ; biểu thức
3)
Tính giá trị câu lệnh
Biểu thức  biểu thức 1: thường là biểu
1
Điều kiện thức khởi tạo giá trị ban đầu
Biểu thức 2 sai
Điều kiện đúng
 biểu thức 2: là biểu thức
logic, trả về giá trị true hoặc
Câu lệnh/khối
lệnh false (Điều kiện lặp)
Kết
Tính giá trị
Biểu thức
thúc  biểu thức 3: thường là biểu
3
thức tăng/giảm giá trị
Cả 3 biểu thức có thể trống
VÒNG LẶP XÁC ĐỊNH for
for ( biểu thức 1 ; biểu thức 2 ; biểu thức 3)
câu lệnh
VÒNG LẶP XÁC ĐỊNH for

“Tính tổng 10 số nguyên dương đầu tiên”


 Lớp 2 tính:

1+ 2 + 3 + 4 + 5 + …+ 8 + 9 + 10
3 + 3 + 4 + 5 + …+ 8 + 9 + 10
6 + 4 + 5 + …+ 8 + 9 +
10
… 45 + 10
55
VÒNG LẶP XÁC ĐỊNH for
 Máy tính tính:

int sum = 0; int sum = 0, i=1;


sum = sum + 1; sum = sum + i; i++
sum = sum + 2; sum = sum + i; i++
sum = sum + 3; sum = sum + i; i++
… …
sum = sum + 8; sum = sum + i; i++
sum = sum + 9; sum = sum + i; i++
sum = sum + 10; sum = sum + i; i++
VÒNG LẶP XÁC ĐỊNH for
 Sử dụng vòng lặp:

#include <iostream>
using namespace std;
int main()
{ int n, sum = 0;
cout<<“Nhap gia tri N = “; cin>>n;
for(int i=1; i<=n; i++)
sum = sum + i;
cout<<“Tong cac so nho hon
hoac bang “<<n<<“ là “<<sum;
return 0;
}
VÒNG LẶP XÁC ĐỊNH for
 Ví dụ: Chương trình sau làm gì?
#include <iostream>
using namespace std; int main()
{
char ch;
for(ch='A'; ch<='Z'; ch++) cout<<ch<<" ";
cout<<endl;
for(ch='Z'; ch>='A'; ch--) cout<<ch<<" ";
return 0;
}
MÀN HÌNH SẼ HIỂN THỊ GÌ?
int s=0;
for(int i=0; i<3;i++)
s+=2;
cout<<"gia tri="<<s;

int t=0;
for(int i=0; i<6;i+=2)
t+=i;
cout<<"tong ="<<t;
CÁC ĐOẠN LỆNH SAU ĐÚNG HAY SAI? VÌ SAO

for(int i=0, i<100, i++);


cout<<i;

for(int i=0; i<-10;i++)


cout<<"****"<<endl;

int main()
{
int n; double s=1;
cout<<"Nhap vao so nguyen N=";cin>>n;
for(i=1; i<=n;i++)
Sửa lỗi và cout<<i<<" ";s= s*i;
cho biết cout<<endl<<n<<"!="<<s;
chương trình
return 0;
làm gì?
}
MÀN HÌNH SẼ HIỂN THỊ GÌ?
int s=0, a=0;
for(int i=0; i<4;i++)
{
a=a+2;
s+=2*a;
}
cout<<"a="<<a<
<"s="<<s;
int s=0;
for(int i=1; i<5;i++)
{
cout<<i<<" ";
s+=2*i;
}
cout<<"\n S="<<s;
BÀI TẬP
Bài 1: Nhập một số nguyên dương N từ bàn phím
Tính tổng và trung bình cộng các số chẵn <=N
Tính tổng và trung bình cộng các số lẻ từ <=N
VÒNG LẶP XÁC ĐỊNH for
Tính trung bình cộng của n số nhập vào từ bàn phím. In kết quả ra
màn hình.
 Xác định bài toán:
 Đầu vào:
 số các số cần nhập (n)
 kiểu dữ liệu?
 Nhập giá trị cho n số
 kiểu dữ liệu?
 Số lần lặp: ?
 Mỗi lần lặp thực hiện công việc gì?
 Đầu ra:
 Trung bình cộng của n số
VÒNG LẶP XÁC ĐỊNH for
#include <iostream>
using namespace std;
int main()
{ int n;
double x, tong=0;
cout<<"Bao nhieu so can nhap
vao? n=";cin>>n;
for(int i=0; i<n;i++)
{ cout<<"Nhap so thu "<<i+1<<"
=";cin>>x;
tong +=x;
}
cout<<endl<<"Trung binh cong cua "<<n<<" so la:"<<tong/n;
return 0;
VÒNG LẶP for LỒNG NHAU
 Cú pháp:

for ( khởi tạo biến 1; điều kiện; thay đổi giá trị biến 1)
{
[câu lệnh]

for (khởi tạo biến 2; điều kiện; thay đổi giá trị biến 2)

câu lệnh

}
VÒNG LẶP for LỒNG NHAU
 Ví dụ: Chương trình sau làm gì?

#include <iostream>
using namespace std;
int main()
{ int n;
cout<<“Nhap so nguyen N”;
cin>>n;
for(int i=1; i<=n;i++)
{
for(int j=1; j<=n; j++)
cout<<j<<" ";
cout<<endl;
}
return 0;
BÀI TẬP
 Bài 1: Viết chương trình đếm và in ra số lượng các số nguyên
chia hết cho 3 và cho 7 nằm trong đoạn từ 1 đến 100.
 Bài 2: Viết chương trình cho phép người dùng nhập một số
nguyên dương N và in ra màn hình các số chính phương < N.
Gợi ý: Số chính phương là bình phương của một số tự nhiên. Ví
dụ số 4 là một số chính phương vì nó là bình phương của 2; các
số chính phương trong 40 số tự nhiên đầu tiên là 1, 4, 9, 25 và 36.

55
int n, dem=0;
cout<<"Nhap mot so nguyen N: "; cin>>n;
cout<<"Cac so chia het cho 3 va 7 trong doan tu 1 den "<<n<<" là ";
for(int i=1; i<=n; i++)
if (i%3==0 && i%7==0)
{ cout<<i<<", ";
dem++;
}
cout<<"\nTong cac so chia het cho 3 va 7 là "<<dem<<endl;
return 0;

56
int n, dem = 0;
cout<<"Nhap mot so nguyen N: ";
cin>>n;
cout<<"Cac so chinh phuong nho hon "<<n<<" la: ";
for(int i=1; i<n;i++)
{
if (i*i <n)
{
cout<<i*i<<" ";
++dem;
}
}
cout<<"\nCo "<<dem<<" so chinh phuong";
return 0;
}
57
BÀI TẬP
𝟏
 Bài 3: Dùng vòng for để viết các số từ 0 đến 99 theo cách sau
0 1 2 3 4 5 6 7 8 9

10 11 12 13 14 15 16 17 18 19

.. 90 91 92 93 94 95 96 97 98 99

 Bài 4: Lập trình đọc x, n từ bàn phím rồi tính:


𝒙 𝟐 𝒙𝒏
𝑺=𝟏 + + 𝒙 + …
𝟐 𝟑 𝒏+1
+
BÀI TẬP

 Bài toán cổ 1: Vừa gà vừa chó, bó lại cho tròn, 36


con, 100 chân chẵn. Hãy tìm số gà và số chó?

 Bài toán cổ 2: Trăm trâu trăm cỏ, Trâu đứng ăn 5,


trăm nằm ăn 3, ba con trâu già ăn 1 bó? Hỏi số trâu
mỗi loại?
#include <iostream>
using namespace std;
int main()
{ int n;
cout<<"Nhap mot so nguyen N: ";
cin>>n;
for(int i=0; i<n;i++)
{
for(int j=0; j<n; j++)
cout<<10*i+j<<"\t";
cout<<endl;
}
return 0;
}

60
VÒNG LẶP KHÔNG XÁC ĐỊNH while

“Tính tổng các số cho đến khi tổng >20. Đưa ra tổng và số
các số đã cộng.”

 Lặp lại công việc gì?


 Lặp bao nhiêu lần?
 Nếu dùng vòng lặp for thì sao?
VÒNG LẶP KHÔNG XÁC ĐỊNH while
 Cú pháp:
while ( điều kiện)
Biểu thức
câu lệnh
điều kiện
Điều kiện Điều kiện
while ( điều kiện) đúng sai
{
khối lệnh
Câu lệnh/khối
}
lệnh
Kết thúc

 điều kiện: là biểu thức logic, vòng lặp sẽ thực


hiện câu lệnh khi điều kiện còn đúng (True)
VÒNG LẶP KHÔNG XÁC ĐỊNH while
 Cú pháp:
while ( điều kiện)
Biểu thức
câu lệnh
điều kiện
Điều kiện Điều kiện
while ( điều kiện) đúng sai
{
khối lệnh
Câu lệnh/khối
}
lệnh
Kết thúc

 điều kiện: là biểu thức logic, vòng lặp sẽ thực


hiện câu lệnh khi điều kiện còn đúng (True)
VÒNG LẶP KHÔNG XÁC ĐỊNH while
 Ví dụ: Tính tổng các số nhập vào từ bàn phím khi tổng còn <100

#include <iostream>
using namespace std;
int main()
{ int n, tong=0;
while (tong<100)
{ cout<<"Nhap mot so n="; cin>>n;
tong += n;
}
cout<<"Tong cac so vua nhap la:"<<tong;
return 0;
}
VÒNG LẶP KHÔNG XÁC ĐỊNH while
 Ví dụ: Tính tổng các số nhập vào từ bàn phím khi tổng còn <100

#include <iostream>
using namespace std;
int main()
{ int n, tong=0;
while (tong<100)
{cout<<"Nhap mot so n=";
cin>>n;
tong += n;
}
cout<<"Tong cac so vua nhap la:"<<tong; return 0;
}
VÒNG LẶP do… while
 Cú pháp:

do
câu lệnh
câu lệnh/khối
while (điều kiện) ; lệnh

do
Biểu thức
{ điều kiện Điều kiện
đúng
khối lệnh
Điều kiện
} sai
while (điều kiện) ;

Vòng lặp được thực hiện ít nhất 1 lần, ngay cả khi điều kiện là sai ở
lần đầu tiên
VÒNG LẶP do… while
“Xem đoạn chương trình sau làm gì?”
#include <iostream> #include <iostream>
using namespace std; using namespace std;
int main() int main()
{ {
double x, s=0; double x, s=0;
cout<<"nhap mot so khac 0"; do
cin>>x; {
while(x!=0) cout<<"nhap mot so khac 0";
{ cin>>x;
s+=x; s+=x;
cout<<"nhap mot so khac 0"; }
cin>>x; while(x!=0);
} cout<<"Tong cac so la:"<<s;
cout<<"Tong cac so la:"<<s; return 0;
return 0;
} }
VÒNG LẶP do… while
Ví dụ: Tính tổng các số nhập vào từ bàn phím khi tổng còn <100.
#include <iostream>
using namespace std; int
main()
{
int n, tong=0;
do
{
cout<<"Nhap mot so n=";
cin>>n; tong += n;
} while (tong<100);
cout<<"Tong cac so vua nhap
la:"<<tong;
return 0;
}
VÒNG LẶP do… while
 Ví dụ: Nhập một số cho đến khi số đó bằng 0. Tính tổng các số
vừa nhập.
#include
<iostream>
using namespace
std; int main()
{
int n,
tong=0; do
{
cout<<"Nhap mot so
n="; cin>>n; tong += n;
} while (n!=0);
cout<<"Tong cac so vua
nhap la:"<<tong;
return 0;
}
TÌM LỖI SAI TRONG CÁC ĐOẠN
CHƯƠNG TRÌNH SAU
int i=0, j=100; int count;
While(i<100) while(count<100)
{ {
j-=2; cout<<count;
} }

char x='Y';
while(x='Y')
{
//...
cout<<"Con
tinue?
(Y/N)";
cin>>x;
BÀI TẬP
 Bài 1: Đoạn chương trình sau hiển thị gì trên màn hình?

int a=24, b=9,t;


while(b!=0)
{
t= b;b= a%b;
a= t;
}
cout<<a;

3
BÀI TẬP
 Bài 2: Đoạn chương trình sau hiển thị gì trên màn hình?
int n=23, x=0;
do
{
x = x*10;
x = x + n%10;
n=n/10;
}
while(n!=0);
cout<<x;

3
2
BÀI TẬP
 Bài 3: Đoạn chương trình sau hiển thị gì trên màn hình?

int i=0; while(+


+i<4)
cout<<"Hello!"<<
endl;
 Bài 4: Đoạn chương trình sau hiển thị gì trên màn
hình?

int i=0; do
cout<<"hello! "<<endl;
while (i++<4);
CÁC LỆNH RẼ NHÁNH VÔ ĐIỀU KIỆN

 Lệnh break:
 Sử dụng để kết thúc một case trong câu lệnh switch
 Dừng vòng lặp để thực hiện câu lệnh tiếp theo ngoài vòng lặp
 Ví dụ:
#include <iostream>
using namespace std;
int main()
{
for(int i=0; i<10;i++)
{
if(i==5)
break; cout<<i<<" ";
}
return 0;
}
CÁC LỆNH RẼ NHÁNH VÔ ĐIỀU KIỆN

 Lệnh continue:
Kết thúc lần lặp hiện hành, chuyển sang vòng lặp tiếp theo
mà không cần thực hiện phần còn lại.
 Ví dụ:
#include <iostream> 0 2 4 6 8 10 12 14
using namespace std; 16 1 20
8
int main()
{
for(int i=0; i<=20;i++)
{if(i%2!=0)
continue;
cout<<i<<" "; //In ra cac so
chan
}
return 0;
}
BÀI TẬP
 Bài 1: Nhập một số nguyên từ bàn phím, kiểm tra xem số đó
có phải là số nguyên tố không.
 Bài 2: Tìm ước chung lớn nhất của 2 số a, b.
 Bài 3: Tìm bội chung nhỏ nhất của 2 số a, b.
 Bài 4: Nhập vào một số nguyên dương, in ra mọi ước số theo
thứ tự giảm dần.
 Bài 5: Nhập vào 1 số gồm 3 chữ số, yêu cầu xuất số đó theo
thứ tự ngược lại.
 Bài 6: Nhập vào 1 số nguyên ở hệ thập phân, yêu cầu xuất ra 1
số ở hệ nhị phân.

76
77
BÀI TẬP
 Bài 6: Đọc vào một dãy số nguyên cho đến khi gặp số 0.
Tìm giá trị bé nhất, lớn nhất, không tính số 0 và in kết quả
ra màn hình.
 Bài 7: Đọc vào một dãy kí tự cho đến khi gặp kí tự *. Đếm
xem có bao nhiêu chữ a (thường). Đưa kết quả ra màn hình.
 Bài 1. Nhập vào một số nguyên từ bàn phím, kiểm tra
xem số đó có phải là số nguyên tố không.
int n, i = 2;
do { if (n%i == 0)
{ cout<<n<<“ la hop so”;
return 0;
}
i++;
}
while (i<=n/2);
cout<<n<<“ la so nguyen to”;
79
 Bài 2. Nhập vào 2 số nguyên n, m. Tìm ước số chung lớn nhất
của 2 số nguyên đó. (thuật toán Euclide, liên tiếp lấy số lớn
hơn trừ số bé khi nào 2 số bằng nhau thì đó là UCLN)
int a, b, r ;
if (b<a) //coi b lớn hơn a nên đảo giá trị a và b
{ int t =b; b=a; a=t;
}
while (b!=a)
{ r =b-a;
if (r>a)
b=r;
else {b=a; a=r;)
}
80
BÀI TẬP 3
int a, b, i;
cout<<"Nhap vao so nguyen a = "; cin>>a;
cout<<"Nhap vao so nguyen b = "; cin>>b;
i = a;
if (b>i)
i=b;
do { if (i%a == 0&&i%b==0)
{ cout<<i<<" la BCNN cua so"<<a<<" va "<<b;
return 0;
}
i++;
}
while (i<=a*b);
return 0;

81

You might also like