Professional Documents
Culture Documents
Tin Hoc Co So 2 Nguyen Ngoc Duy Chuong 2 Io Va Dieu Khien (Cuuduongthancong - Com)
Tin Hoc Co So 2 Nguyen Ngoc Duy Chuong 2 Io Va Dieu Khien (Cuuduongthancong - Com)
.c
Chương 2
ng
co
CÁC LỆNH VÀO RA
an
VÀ CÁC LỆNH ĐIỀU KHIỂN th
o ng
du
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt 1
Nội dung
om
1. Các lệnh vào ra
.c
ng
2. Các lệnh điều khiển
co
2.1. Lệnh điều kiện,
an
th
2.2. Lệnh điều kiện rẽ nhánh,
ng
2.3. Lệnh lặp với số lần xác định,
o
du
om
Thư viện hàm: iostream.h
.c
Hàm nhập giá trị từ bàn phím: cin>>tên biến;
ng
Ví dụ: int a;
co
an
cin>>a;//Lưu giá trị nhập từ phím vào biến a
th
Hàm xuất giá trị ra màn hình: cout<<tên biến hoặc
o ng
chuỗi ký tự;
du
Ví dụ: int a = 5;
u
cu
om
Thư viện hàm: cout<<setw(n)<<tên biến;
.c
ng
Chừa một khoảng n ký tự để xuất giá trị
co
Ví dụ:
an
int a=7, b=9; th
o ng
cout<<a<<setw(5)<<b;//dùng 5 vị trí để xuất giá trị
du
u
cu
b.
Kết quả: 7 9
CuuDuongThanCong.com https://fb.com/tailieudientucntt 4
Lệnh vào/ra
om
cout<<setprecision(n);
.c
Xuất số gồm n-1 chữ số thập phân
ng
co
đã làm tròn.
Kết quả:
an
Ví dụ:
th 7.56745
ng
float a=7.56745, b=5.339;
o
7.57
du
cout<<a<<endl;
5.3
u
cu
cout<<setprecision(3)<<a<<endl;
5.339
cout<<setprecision(2)<<b<<endl;
cout<<setprecision(5)<<b;
CuuDuongThanCong.com https://fb.com/tailieudientucntt 5
Lệnh vào/ra
om
Xuất ký tự đặc biệt
.c
ng
co
an
th
o ng
du
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt 6
Lệnh vào/ra
om
Xuất ký tự đặc biệt
.c
ng
co
an
th
o ng
du
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt 7
Lệnh điều kiện
om
Dạng 1:
.c
– Cú pháp:
ng
co
if(expression)
an
statement;
th
ng
● Ý nghĩa:
o
du
CuuDuongThanCong.com https://fb.com/tailieudientucntt 8
Lệnh điều kiện
om
Ví dụ: Viết chương trình nhập vào một số nguyên a. In ra màn
.c
hình kết quả a có phải là số dương không.
ng
co
#include <iostream.h>
an
#include <conio.h>
th
int main() ng
{
o
int a;
du
if(a>=0)
cout << a << " is a positive.”;
getch();
return 0;
}
CuuDuongThanCong.com https://fb.com/tailieudientucntt 9
Lệnh điều kiện
Lưu đồ cú pháp
om
Dạng 2:
.c
– Cú pháp:
ng
if (expression)
co
an
statement1;
th
else ng
statement2;
o
du
● Ý nghĩa:
u
cu
om
Ví dụ: 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.
.c
#include <iostream.h>
ng
#include <conio.h>
co
int main()
an
{
int a;
th
ng
cout << "Input a = "; cin >> a;
o
du
if(a>=0)
u
else
cout << a << " is a negative.”;
getch(); return 0;
}
CuuDuongThanCong.com https://fb.com/tailieudientucntt 11
Lệnh điều kiện
om
Lưu ý:
.c
Ta có thể sử dụng các câu lệnh if…else lồng
ng
co
nhau. Khi dùng if…else lồng nhau thì else sẽ
an
th
kết hợp với if gần nhất chưa có else.
o ng
Nếu câu lệnh if “bên trong” không có else thì
du
u
CuuDuongThanCong.com https://fb.com/tailieudientucntt 12
Cấu trúc switch
om
Cấu trúc switch là một cấu trúc lựa chọn có nhiều
.c
nhánh, được sử dụng khi có nhiều lựa chọn.
ng
Cú pháp:
co
an
switch(expression)
th
{
ng
case value_1: statement_1; [break;]
o
du
…
u
cu
om
.c
ng
co
an
th
o ng
du
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt 14
Cấu trúc switch
om
Giải thích:
.c
− Expression sẽ được định trị.
ng
co
− Nếu giá trị của expression bằng value_1 thì
an
thực hiện statement_1 và thoát.
th
− Nếu giá trị của expression khác value_1 thì so
o ng
sánh với value_2, nếu bằng value_2 thì thực
du
value_n.
− Nếu tất cả các phép so sánh đều sai thì thực
hiện statement của default.
CuuDuongThanCong.com https://fb.com/tailieudientucntt 15
Cấu trúc switch
om
Lưu ý:
.c
−Expression trong switch() phải có kết quả là
ng
co
giá trị kiểu số nguyên (int, char, long).
an
−Các giá trị sau case phải là hằng nguyên.
th
ng
−Không bắt buộc phải có default.
o
du
CuuDuongThanCong.com https://fb.com/tailieudientucntt 16
Cấu trúc switch
om
Ví dụ: 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ư
.c
bằng 1 thì in thông báo “là số lẽ”.
ng
#include <iostream.h>
co
#include <conio.h>
an
void main () {
th
int n, remainder; ng
cout<<”Input an number: "; cin>>n; remainder = (n % 2);
o
du
switch(remainder)
{
u
cu
om
Cú pháp:
.c
for (Exp1; Exp2; Exp3)
ng
statement;
co
Ý nghĩa:
an
th
− Exp1: là biểu thức khởi tạo
ng
được thực hiện.
o
du
CuuDuongThanCong.com https://fb.com/tailieudientucntt 18
Cấu trúc for
om
Ví dụ: Viết chương trình tính tổng các số nguyên từ 1 đến n.
.c
#include <iostream.h>
ng
#include <conio.h>
co
void main()
an
{
th
int i, n, sum; ng
cout<<”Input a number:”; cin >> n;
o
du
sum = 0;
u
sum += i;
cout<<”Sum from 1 to “ << n << ” is: ” << sum;
getch();
} CuuDuongThanCong.com https://fb.com/tailieudientucntt 19
Cấu trúc for
om
C/C++ cho phép Exp1 là một định nghĩa biến
.c
Ví dụ: for(int i=1; i<=n; ++i)
ng
co
Bất kỳ biểu thức nào trong 3 biểu thức của
an
vòng lặp for đều có thể rỗng
th
Ví dụ: for(; i != 0;) statement;
o ng
du
Ví dụ:
for (;;) statement;
CuuDuongThanCong.com https://fb.com/tailieudientucntt 20
Cấu trúc while
om
Cú pháp:
.c
while(expression)
ng
statement;
co
Ý nghĩa:
an
th
● B1: Expression được định trị ng
● B2: Nếu kết quả là true thì
o
du
B1
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt 21
Cấu trúc while
om
Ví dụ: Viết chương trình tính tổng các số nguyên từ 1 tới n.
.c
#include<iostream.h>
ng
#include<conio.h>
co
void main ()
an
{
int i, n, sum;
th
ng
cout<<”Input n= ”; cin >> n;
o
du
i = 1; sum = 0;
u
cu
while(i<=n) {
sum += i; i++; }
getch();
} CuuDuongThanCong.com 22
https://fb.com/tailieudientucntt
Cấu trúc do … while
om
Cú pháp:
.c
do {
ng
statement;
co
}while(expression);
an
● Ý nghĩa:
th
ng
− Statement được thực hiện
o
du
om
Ví dụ 1: Viết chương #include <conio.h>
.c
trình in dãy số nguyên void main ()
ng
từ 1 đến 10. {
co
int i=1;
an
clrscr();
{
u
i+=1;
} while(i<=10);
getch();
CuuDuongThanCong.com
} https://fb.com/tailieudientucntt 24
Vòng lặp while và do …. While
om
while(điều kiện ) do
.c
{ {
ng
//thân vòng lặp //thân vòng lặp
co
} }while(điều kiện);
- Nếu điều kiện đúng thì
an
- Thân vòng ít nhất
thân vòng lặp đc thực
th
được thực thi 1 lần
hiện, nếu đk sai thì kết
ng
- Hàm do while sẽ thực
thúc vòng lặp
o
thi xong rồi mới kiểm
du
om
Lệnh break dùng để thoát khỏi một cấu trúc điều
.c
khiển mà không chờ đến biểu thức điều kiện
ng
co
được định trị.
an
Khi break được thực hiện bên trong 1 cấu trúc
th
lặp, điều khiển (control flow) tự động nhảy đến
o ng
lệnh đầu tiên ngay sau cấu trúc lặp đó.
du
om
Ví dụ: Đọc vào một mật khẩu người dùng tối đa
.c
attempts lần
ng
for (i=0; i<attempts ; ++i)
co
{
an
th
cout<<“Input a password:”; ng
cin >> passWord;
o
du
om
.c
Lệnh continue dùng để kết thúc vòng lặp hiện tại
ng
và bắt đầu vòng lặp tiếp theo.
co
an
Lệnh continue chỉ được dùng trong thân các cấu
th
ng
trúc lặp như for, while, do...while.
o
du
CuuDuongThanCong.com https://fb.com/tailieudientucntt 28
Lệnh continue
om
Ví dụ: Một vòng lặp thực hiện đọc một số, bỏ qua
.c
những số âm, và dừng khi số nhập vào là số 0.
ng
do
co
an
{
th
cin >> num;
ng
if (num < 0)
o
du
} while(num != 0);
CuuDuongThanCong.com https://fb.com/tailieudientucntt 29
Mảng (array)
om
Mảng là một tập hợp các giá trị có cùng kiểu dữ
.c
liệu nằm liên tiếp nhau trong bộ nhớ và được
ng
tham chiếu bởi một tên chung chính là tên mảng.
co
Mỗi phần tử của mảng được tham chiếu thông
an
qua chỉ mục (index).
th
o ng
du
Giá trị
1 0 5 3 6 4 7 9 2 4
u
cu
0 1 2 3 4 5 6 7 8 9
Vị trí
Vị trí được tính từ 0
CuuDuongThanCong.com https://fb.com/tailieudientucntt 30
Mảng (array)
om
Nếu mảng có n phần tử thì phần tử đầu tiên có
.c
chỉ mục là 0 và phần tử cuối có chỉ mục là n-1.
ng
Để tham chiếu đến một phần tử ta dùng tên
co
mảng và chỉ mục của phần tử được đặt trong
an
cặp dấu [].
th
ng
Ví dụ: a[0]
o
du
om
Mảng là 1 đối tượng dùng để lưu trữ các phần tử có cùng
.c
một kiểu dữ liệu
ng
Chỉ số mảng bắt đầu được tính từ 0
co
an
i=0 i=1 i=2 i=3 i=4 i=5
th
ng
Mảng M có 6 phần tử
o
du
9 0 8 7 10 50 N=6
u
cu
Là phần tử
M[i] tại vị trí thứ i
M[0] M[4]
Đối với duyệt mảng, người ta thường dùng vòng for, ít khi dùng
vòng while, do.. while
CuuDuongThanCong.com https://fb.com/tailieudientucntt 32
Mảng một chiều
om
Khai báo một mảng một chiều
.c
Cú pháp:
ng
co
type arrayName[elements];
an
−type: kiểu dữ liệu của mỗi phần tử mảng.
−arrayName: tên mảng
th
ng
−elements: số phần tử có trong mảng
o
du
a 3 5 2 7 9
a[0] a[1] a[2] a[3] a[4]
CuuDuongThanCong.com https://fb.com/tailieudientucntt 33
Mảng một chiều
om
Ví dụ:
.c
ng
int a[100]; //Khai báo mảng số nguyên a gồm 100
co
phần tử
an
th
float b[50]; //Khai báo mảng số thực b gồm 50
o ng
du
phần tử
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt 34
Mảng một chiều
om
Mảng phải được khai báo tường minh
.c
Kích thước (tính bằng byte) của mảng được tính
ng
theo công thức:
co
an
Total_size = sizeof(type) * elements
th
Ví dụ:
ng
int num[100];
o
du
CuuDuongThanCong.com https://fb.com/tailieudientucntt 35
Mảng một chiều
om
Mỗi phần tử mảng là một biến thông thường.
.c
Ví dụ:
ng
co
int num[3];
an
num[0] = 2; //gán 2 cho phần tử num[0]
th
num[1] = num[0] + 3 //num[1] có giá trị 5
o ng
num[2] = num[0] + num[1]; //num[2] có giá trị 7
du
CuuDuongThanCong.com https://fb.com/tailieudientucntt 36
Mảng một chiều
om
Khai báo và khởi tạo mảng một chiều
.c
Cú pháp:
ng
co
type arrayName[]= {value1, value2, ..., valuen};
an
Lưu ý:
th
ng
− Không khai báo kích thước mảng.
o
du
CuuDuongThanCong.com https://fb.com/tailieudientucntt 37
Mảng một chiều
om
.c
Ví dụ:
ng
int soChan[] = {2,4,6,8,10};
co
an
Mảng soChan có 5 phần tử lần lượt là:
th
ng
soChan[0] có giá trị là 2
o
du
...
soChan[4] có giá trị là 10
CuuDuongThanCong.com https://fb.com/tailieudientucntt 38
Mảng một chiều
om
Khai báo và gán giá trị ban đầu cho mảng một chiều:
.c
Gán từng phần tử
ng
int a[5] = {3, 6, 8, 1, 12};
co
an
Giá trị 3 6 8 1 12
th
Vị trí 0 ng 1 2 3 4
Giá trị 3 5 2 0 0 0 0 0
Vị trí 0 1 2 3 4 5 6 7
CuuDuongThanCong.com https://fb.com/tailieudientucntt 39
Mảng một chiều
om
Truy xuất giá trị
.c
Tên mảng [ vị trí cần truy xuất ]
ng
co
void main()
an
{
th
ng
int a[5] = {3, 6, 8, 11, 12};
o
du
}
Kết quả: Giá trị mảng tại vị trí 3 = 11
CuuDuongThanCong.com https://fb.com/tailieudientucntt 40
Mảng một chiều
om
Các thao tác trên mảng:
.c
Nhập dữ liệu
ng
co
Xuất dữ liệu
an
Tìm kiếm
th
ng
Đếm
o
du
Sắp xếp
u
cu
om
Nhập dữ liệu
.c
Có 2 cách nhập dữ liệu cho từng phần tử trong
ng
co
mảng:
an
th
- Cách 1: nhập bằng tay từ bàn phím
ng
o
- Cách 2: cho máy tự động nhập
du
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt 42
Mảng một chiều
om
Ví dụ: Tạo một mảng nguyên a có N phần tử. Mỗi phần
.c
tử có giá trị là chỉ mục của nó. In mảng ra màn hình.
ng
co
an
th
o ng
du
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt 43
Mảng một chiều
om
.c
ng
co
an
th
o ng
du
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt 44
Mảng một chiều
om
Nhập mảng tự động bằng máy:
.c
Để khởi tạo xuất ra các số ngẫu nhiên, ta phải viết hàm
ng
này trước:
co
srand(time(NULL));
an
th
Hàm trên có ý nghĩa là yêu cầu máy tính khởi động để
ng
tạo các số ngẫu nhiên : Tức là mỗi lần chạy chương
o
du
khác nhau.
cu
**** nếu như không có dòng này thì mỗi lần chạy
chương trình sẽ cho ra có số ngẫu nhiên GIỐNG NHAU.
CuuDuongThanCong.com https://fb.com/tailieudientucntt 45
Mảng một chiều
om
Để lấy giá trị ngẫu nhiên , ta dùng công thức bên dưới:
.c
ng
co
rand()%n: Tức lấy lấy các giá trị ngẫu nhiên từ 0 cho tới n-1
an
Như vậy nếu ta gọi rand()%100: tức là lấy giá trị
th
ng
ngẫu nhiên từ 0 đến 99
o
Đề bài : Hãy xuất các số ngẫu nhiên từ -55 cho tới 150
du
om
.c
ng
co
an
th
o ng
du
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt 47
Mảng một chiều
om
Ví dụ: Chương trình nhập vào mảng một chiều số nguyên a,
.c
kích thước n. In ra các phần tử có giá trị lớn hơn x có trong
mảng
ng
co
an
th
o ng
du
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt 48
Mảng một chiều
om
.c
ng
co
an
th
o ng
du
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt 49
Mảng một chiều
Sắp xếp:
om
.c
void SapTang(int a[], int n)
ng
{
co
for (int i = 0; i < n-1; i ++)
an
for(int j = i+1; j < n; j ++)
th
if (a[i] > a[j])
ng
HoanVi(a[i], a[j]);
o
du
}
void HoanVi(int &a, int &b)
u
cu
{
int tam = a;
a = b;
b = tam;
} CuuDuongThanCong.com https://fb.com/tailieudientucntt 50
Mảng nhiều chiều
om
C/C++ hỗ trợ mảng nhiều chiều. Dạng đơn giản
.c
nhất của mảng nhiều chiều là mảng hai chiều.
ng
co
Mảng hai chiều thực chất là mảng của những
an
mảng một chiều. Ta có thể xem mảng hai chiều là
th
một ma trận gồm các hàng và các cột
o ng
Khai báo mảng hai chiều:
du
type arrayName[rows][columns];
u
cu
− rows: số hàng
− columns: số cột
CuuDuongThanCong.com https://fb.com/tailieudientucntt 51
Mảng nhiều chiều
om
Ví dụ: Khai báo mảng số nguyên 3 hàng 4 cột
.c
int a[3][4]
ng
co
an
th
o ng
du
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt 52
Mảng nhiều chiều
om
Ví dụ: int M[5][3];
.c
Khai báo 1 mảng 2 chiều tên là M, có 5 dòng, 3 cột.
ng
Tổng số phần tử trong mảng = 5*3 =15 phần tử
co
an
Ví dụ: float K[3][4];
th
Khai báo 1 mảng 2 chiều tên là K có kiểu số thực,
o ng
số dòng là 3, số cột là 4 tổng số phần tử là
du
4*3=12;
u
cu
om
Chiều duyệt theo cột, thường đặt tên là j
.c
Chiều duyệt theo dòng, thường đặt tên là i
j =1
j =2
j =3
ng
j =0
j =4
co
an
M[0][0] M[0][1] M[0][2] M[0][3] M[0][4] Tức là để truy
i =0
th
9 2 0 12 3
suất 1 phần tử tại
dòng thứ ivà tại
ng
M[1][0] M[1][1] M[1][2] M[1][3] M[1][4]
i =1 2 8 15 7 5 cột thứ j thì ta viết:
o
du
M[i][j]
M[2][0] M[2][1] M[2][2] M[2][3] M[2][4] - Ví dụ, muốn lấy
i =2
u
10 8 19 13 18
phần tử tại dòng
cu
om
int M[dòng][cột];
.c
Ví dụ:
ng
co
int M[3][2];
an
Dòng =3, cột =2 tổng số phần tử = 2*3 =6 phần
tử th
o ng
Để duyệt mảng, ta kết hợp 2 vòng for lồng nhau,
du
i), vòng for trong chạy theo chỉ số cột (giả sử đặt
là j).
55
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Mảng nhiều chiều
om
.c
ng
co
an
th
o ng
du
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt 56
Mảng nhiều chiều
om
.c
ng
co
an
th
o ng
du
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt 57
Mảng nhiều chiều
om
.c
ng
co
an
th
o ng
du
u
cu
58
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Mảng nhiều chiều
om
.c
ng
co
an
th
o ng
du
u
cu
59
CuuDuongThanCong.com https://fb.com/tailieudientucntt