Professional Documents
Culture Documents
Chương 2. Cau Truc Điều Khiển - k63
Chương 2. Cau Truc Điều Khiển - k63
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
2
NỘI DUNG MÔN HỌC
Chương 1: Giới thiệu về C/C++
3
CHƯƠNG 2: CÁC LỆNH LỰA CHỌN VÀ LẶP
4
BÀI 1: CÁC CÂU LỆNH LỰA CHỌN
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
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 (>, <, <=, >=, ==, !=)
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;
17
ĐOẠN LỆNH SAU ĐÚNG HAY SAI? VÌ SAO?
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
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
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:
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
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:
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:
#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
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
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.”
#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?
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; 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