Các cấu trúc lệnh Cấu trúc tuần tự: Thực hiện các câu lệnh một cách tuần tự từ trên xuống dưới Cấu trúc lựa chọn: Chọn thực hiện một nhóm lệnh Cấu trúc lựa chọn: Chọn thực hiện một nhó
Trang 1Môn học Tin đại cương
Bộ môn Khoa học máy tính, Khoa Công nghệ
thông tin, Trường đại học Thủy Lợi
Trang 4Các cấu trúc lệnh
Cấu trúc tuần tự: Thực hiện các câu lệnh một cách tuần tự từ trên xuống dưới
Cấu trúc lựa chọn: Chọn thực hiện một nhóm lệnh
Cấu trúc lựa chọn: Chọn thực hiện một nhóm lệnh dựa trên một điều kiện nào đó
- câu lệnh if, câu lệnh switch
Cấu trúc lặp: Thực hiện lặp đi lặp lại một nhóm
lệnh cho đến khi một điều kiện nào đó được thỏa mãn
- vòng lặp for ,vòng lặp while, vòng do-while
Trang 5Cấu trúc lặp
Khi giải quyết một vấn đề đôi khi ta cần làm đi làm lại một công việc nhiều lần, trong ngôn ngữ lập trình người ta gọi đó là “lặp”
Số lần lặp có thể biết trước hoặc không biết trước.Số lần lặp có thể biết trước hoặc không biết trước
VD: In ra 10 số tự nhiên từ 1->10, mỗi số in trên 1 dòng
C++ cung cấp ba cấu trúc lặp:
Vòng lặp for (lặp biết trước số lần lặp)
Vòng lặp while (kiểm tra điều kiện trước)
Vòng lặp do-while (kiểm tra điều kiện sau)
Trang 6- Khởitạo: Gán giá trị ban đầu cho biến điều khiển
- Điềukiện: Là một biểu thức logic, trả về giá trị true hoặc false
- Lệnhlặp: Tăng hoặc giảm giá trị của biến điều khiển
- Côngviệc: có thể là một lệnh đơn hoặc một lệnh
ghép (khối lệnh)
Trang 7Vòng lặp for
Lưu đồ:
Trang 8Vòng lặp for
Bước 1: Gán giá trị ban đầu cho một biến điều
khiển, việc này chỉ được thực hiện 1 lần
Bước 2: Kiểm tra Điềukiện Nếu Điềukiện là đúng
Bước 2: Kiểm tra Điềukiện Nếu Điềukiện là đúng tiếp tục lặp, ngược lại kết thúc việc lặp
Bước 3: Thực hiện Côngviệc
Bước 4: Tăng hoặc giảm giá trị của biến điều
khiển và quay lại bước 2
Trang 9Vòng lặp for
Ví dụ:
Trang 10Lệnh break
Được sử dụng để thoát khỏi vòng lặp khi điều kiện dừng chưa được thỏa mãn
Trang 11Vòng lặp lồng nhau
Vòng lặp lồng nhau: một vòng lặp nằm trong thân một vòng lặp khác
Ví dụ:
Trang 13Vòng lặp while
Lưu đồ:
Sự thực hiện: Khi Điềukiện còn đúng thì Côngviệc còn được thực hiện
Trang 14Vòng lặp while
− Kiểm tra Điềukiện rồi mới thực hiện Côngviệc, nên Côngviệc có thể không được thực hiện lần nào
nếu Điềukiện sai ngay từ đầu
nếu Điềukiện sai ngay từ đầu
− Trong Côngviệc thường có ít nhất một lệnh gây ảnh hưởng đến giá trị của biểu thức Điềukiện, làm cho biểu thức Điềukiện đang đúng trở thành sai
− Nếu Điềukiện luôn luôn nhận giá trị đúng thì trong Côngviệc phải có lệnh kiểm tra điều kiện dừng và lệnh break
Trang 15Vòng lặp while
Ví dụ:
Trang 17Vòng lặp do-while
Lưu đồ:
Sự thực hiện: Côngviệc còn được thực hiện khi
Trang 18Vòng lặp do-while
− Thực hiện Côngviệc rồi mới kiểm tra Điềukiện, do
đó Côngviệc sẽ được thực hiện ít nhất một lần
− Các đặc điểm khác của vòng lặp do-while cũng
− Các đặc điểm khác của vòng lặp do-while cũng giống với vòng lặp while
Trang 19Vòng lặp do-while
Ví dụ:
Trang 20Bài tập
1,Tính tổng S=1+1/2+1/3+ +1/n Biết rằng n là một
số nguyên dương được nhập từ bàn phím
2,Tính tổng các số nhập vào từ bàn phím khi tổng còn nhỏ hơn 100
nhỏ hơn 100
3,Bài toán cổ: Vừa gà vừa chó, bó lại cho tròn, ba
mươi sáu con, một trăm chân chẵn Hỏi có bao nhiêu
gà và bao nhiêu chó?
Trang 21Môn học Tin đại cương
Bộ môn Khoa học máy tính, Khoa Công nghệ
thông tin, Trường đại học Thủy Lợi
Trang 22Chữa các bài tập kết hợp cấu trúc rẽ nhánh, lặp
Bài 1.Viết một chương trình chuyển từ điểm chữ học tập về loại kết quả học tập Đầu vào là một kí tự (char) và đầu
tập Đầu vào là một kí tự (char) và đầu
ra là kết quả học tập tương ứng:
A: loại giỏi, B: loại khá, C: loại trung bình, D: loại trung bình yếu, F: loại yếu Các chữ cái khác thì trả về điểm chữ không hợp lệ
Trang 23Bài 2 Cho một số nguyên dương n
Tính n!
trị của biểu thức sau:
Trang 24Bài 4 Viết hàm lachinhphuong(x) kiểm tra x có phải là số chính phương không (số chính phương là bình phương của một số tự nhiên)
Sử dụng hàm lachinhphuong để xác định có bao nhiêu số chính phương trong n số tự nhiên.
Trang 25Bài 6 viết chương trinh tìm tất cả các số
kì diệu la số có ba chữ số abc thoả mãn:
a2+ b2+c2=abc
Bài 7 Viết hàm timMax có đầu vào là số nguyên n cho phép nhập vào n số thực
và đưa ra số lớn nhất.
Trang 26Bài 8 Viết hàm timMin có đầu vào là số nguyên n cho phép nhập vào n số thực
và đưa ra số nhỏ nhất.
các trường hợp sau, nếu chọn 0 thì thoát, nếu chọn 1 thì ta gọi hàm timMax, nếu chọn 2 thì ta gọi hàm timMin.
Trang 27Môn học Tin đại cương
Bộ môn Khoa học máy tính, Khoa Công nghệ
thông tin, Trường đại học Thủy Lợi
Trang 29Mảng là tập hữu hạn các phần tử có cùng kiểu dữ liệu và chiếm một vùng liên tục trong bộ nhớ
Vị trí tương đối giữa các phần tử trong mảng được xác định bởi chỉ số
xác định bởi chỉ số
Ví dụ: Mảng a chứa 5 giá trị nguyên kiểu int có thể được biểu diễn như sau:
Trang 31Khai báo mảng
giá trị ban đầu cho các phần tử của mảng
bằng cách đặt các giá trị trong cặp dấu {}
Trang 32Sử dụng mảng
như thao tác với một biến thông thường
cách sau:
cách sau:
Tênmảng[chỉ_số]
Trang 34In các giá trị của mảng ra màn hình
cout << "Day da nhap la:" << endl;
Trang 35vị trí xuất hiện của nó
dần)
Trang 36for (i=0; i<n; i++) s = s + a[i];
cout << "Day da nhap la:" << endl;
for (i=0; i<n; i++) cout << a[i] << " ";
cout << "Tong cac phan tu cua day la " << s << endl;
return 0;
Trang 37// Đếm số phần tử dương trong dãy
for (i=0; i<n; i++) if (a[i]>0) dem++;
cout << "Day da nhap la:" << endl;
for (i=0; i<n; i++) cout << a[i] << " ";
cout << "So phan tu duong trong day la " << dem << endl;
return 0;
Trang 38// Tìm phần tử bé nhất trong dãy, và vị trí xuất hiện của nó
Trang 39// Sắp xếp dãy theo chiều tăng dần
Trang 40Mảng hai chiều
rộng của mảng một chiều
cùng kiểu dữ liệu có thể biểu diễn như sau
cùng kiểu dữ liệu có thể biểu diễn như sau
Trang 41Khai báo mảng hai chiều
kiểu_dữ_liệu tên_mảng[m][n];
m,n là số hàng, số cột của mảng hai chiều
m,n là số hàng, số cột của mảng hai chiều
ví dụ: int a[3][5]; //khai báo mảng gồm 3*5
phần tử kiểu nguyên từ a[0][0] đến a[2][4]
định theo cách sau:
Tênmảng[chỉ_số_hàng][chỉ_số_cột]
Trang 42Sử dụng mảng hai chiều
cout << "Nhap so hang, so cot cua ma tran:" ; cin >> m >> n;
cin >> m >> n;
for (i=0; i<m; i++)
for (j=0; j<n; j++) {cout << "a[" << i << "][" << j << "] = " ; cin >> a[i][j];
}
Trang 43Sử dụng mảng hai chiều
hình
cout << "Ma tran da nhap la:" << endl;
for (i=0; i<m; i++)
for (i=0; i<m; i++)
{
for (j=0; j<n; j++) cout << a[i][j] << " ";
cout << endl;
}
Trang 44Một số bài toán
hiện trên mảng một chiều
Thực hiện các tính toán trên một hàng, một cột hoặc trên đường chéo chính của mảng hai chiềuhoặc trên đường chéo chính của mảng hai chiều
mảng hai chiều Ví dụ:
Tính tổng tất cả các phần tử của mảng hai chiều
Đếm số phần tử dương trong mảng hai chiều
Tìm giá trị lớn nhất (bé nhất), và vị trí xuất hiện của nó trong mảng hai chiều
Trang 45//Tính trung bình cộng các phần tử trên đường chéo chính của ma trận vuông
cout << "Nhap bac cua ma tran vuong:"; cin >> n;
for (i=0; i<n; i++)
for (j=0; j<n; j++) {
cout << "a[" << i << "][" << j << "] = " ; cin >> a[i][j];
}
s=0;
for (i=0; i<n; i++) s=s+a[i][i];
cout << "Ma tran vuong da nhap la:" << endl;
for (i=0; i<n; i++)
{
for (j=0; j<n; j++) cout << a[i][j] << " ";
cout << endl;
}