Professional Documents
Culture Documents
11. Cấu trúc vòng lặp - Đọc ở nhà
11. Cấu trúc vòng lặp - Đọc ở nhà
Mục tiêu
Nội dung
I. Giới thiệu
Xem xét một số vấn đề sau: Tính tổng các số từ 1 đến 1000, tính trung bình cộng
điểm môn tin học của học sinh toàn trường, in bảng cửu chương, … Các vấn đề này
thực hiện các bước tương tự nhau nhiều lần.
Ví dụ 1: Tính tổng các số nguyên từ 1 đến 1000 sử dụng vòng lặp for
#include <iostream>
using namespace std;
int main()
{
int n = 1000;
int sum = 0;
for (int i = 1; i <= n; i++)
{
sum = sum + i;
}
cout<<"Tổng các số nguyên từ 1 đến 1000 = " << sum;
return 0;
}
Thuật toán: Chúng ta tạo 1 biến lặp i từ 1 đến 1000. Sau đó tạo 1 biến sum để cộng
dồn các giá trị từ 1 đến 1000. Ở mỗi lần lặp biến sum sẽ bằng chính nó cộng dồn thêm
1
1 giá trị i, sau đó biến i sẽ tăng lên 1 đơn vị. cứ tiếp tục cho đến khi i lớn hơn 1000 thì
kết thúc vòng lặp.
for (int i = 1; i <= n; i++) Tạo vòng lặp với biến i từ 1 đến n, mỗi lần
lặp i sẽ tăng 1 đơn vị
sum = sum + i; Thực hiện cộng dồn: sum bằng sum trước
đó cộng thêm i
To-Do 1: Thực hiện biên dịch chương trình và chụp hình kết quả vào Class Notebook.
Ví dụ 2: In ra bảng cửu chương của 1 số n, n được được nhập vào từ bàn phím. Hiển thị
kết quả như sau
Nhập vào n: 5
Bảng cửu chương 5
5 * 1 = 5
5 * 2 = 10
5 * 3 = 15
5 * 4 = 20
5 * 5 = 25
5 * 6 = 30
5 * 7 = 35
5 * 8 = 40
5 * 9 = 45
5 * 10 = 50
#include <iostream>
using namespace std;
int main()
{
int n;
cout << "Nhập vào n: ";
cin >> n;
2
cout<<"Bảng cửu chương "<< n<< endl;
for (int i = 1; i <= 10; i++)
{
cout << n <<" * " << i << " = " << n * i <<endl;
}
return 0;
}
Trong bài toán này. Chúng ta tạo 1 biến i lặp lại 10 lần (từ 1 đến 10). Trong mỗi lần lặp ta
hiển thị kết quả tính toán của n*i lên màn hình.
for (int i = 1; i <= 10; i++) Tạo vòng lặp với biến i từ 0
đến 10, mỗi lần lặp i sẽ tăng 1
đơn vị
cout << n <<" * " << i << " = " << n * i <<endl; Hiển thị lên màn hình với cấu
trúc n * i = kết quả n * i
To-Do 2: Thực hiện biên dịch chương trình và chụp hình kết quả vào Class Notebook
Thành phần Mô tả Ví dụ
3
float m
Ví dụ Mô tả
4
Bước lặp là 0.01. Sau mỗi lần lặp m sẽ
tăng 0.01 đơn vị
#include <iostream>
using namespace std;
int main()
{
for (int i = 1; i <= 5; i++)
{
cout << i << " ";
}
return 0;
}
int i = 1: Khởi tạo biến i với giá trị khởi tạo bằng 1
i <= 5: Điều kiện lặp. Nếu biến i <= 5 thì vòng lặp sẽ được thực hiện. Chương trình sẽ
thoát khỏi vòng lặp khi i > 5.
i++: Biến i sẽ tăng lên 1 sau mỗi lần lặp
cout << i << “ ”; Câu lệnh này sẽ được lặp lại 5 lần
5
3 i = 3 true In ra giá trị i (i=3) sau đó
tăng biến i lên 4
To-Do 3: Chỉnh sửa chương trình trên để in ra các số từ 5 đến 1. Biên dịch chương
trình và chụp hình kết quả vào Class Notebook
Chương trình in ra phần tử lớn nhất của mảng và chỉ số của phần tử đó.
#include <iostream>
using namespace std;
int main()
{
int numbers[10] = {10, 100, 235, 356, 3, 675, 117, 8, 19, 100};
int soLonNhat = 0; //Biến để lưu số lớn nhất
int viTriSoLonNhat = 0; //Biến để lưu chỉ số
for(int i=0; i <10; i++)
{
if(numbers[i] > soLonNhat) //Kiểm tra phần tử hiện tại có lớn hơn
soLonNhat
{
soLonNhat = numbers[i]; //Gán số lớn nhất bằng phần tử hiện tại
viTriSoLonNhat = i; //Gán vị trí số lớn nhất bằng vị trí hiện tại
}
}
cout<<"Phần tử lớn nhất của mảng = " << soLonNhat << endl;
cout<<"Chỉ số của phần tử lớn nhất của mảng = " << viTriSoLonNhat;
return 0;
6
}
Biến i dùng để duyệt các phần tử của mảng, i biểu thị chỉ số của mảng. Giá trị khởi tạo
của i=0, điều kiện lặp i<10, bước lặp là 1. Chương trình gồm 1 biến dùng để lưu số lớn
nhất, so sánh biến này lần lượt với các phần tử của mảng. Nếu phần tử mảng lớn hơn số
lớn nhất hiện tại thì gán phần tử đó cho số lớn nhất. Sau khi kết thúc vòng lặp thì in ra số
lớn nhất và vị trí tương ứng.
To-Do 4: Chỉnh sửa lại chương trình để tìm số nhỏ nhất trong mảng. Biên dịch và
chụp hình kết quả vào Class Notebook
Tính tổng các giá trị (0, 0.1, 0.2, 0.3, …, 499.8, 499.9, 500.0)
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
float sum = 0;
for(float k = 0.0; k <= 500.0; k = k + 0.1 )
{
sum += k;
}
cout <<fixed <<setprecision(2)<< "Tổng bằng = " << sum << endl;
}
To-Do 5:
7
Diện toàn phần của của hình trụ được tính bằng công thức
Stp =S xq +2 S đáy
Trong đó
S xq=2 πrh
2
Sđáy =π r
V
Biết h= 2 . V là thể tích của hình trụ. Hãy tìm công thức liên hệ giữa diện tích toàn
πr
phần với thể tích và bán kính đáy (Công thức không chứa đường cao)
V. Bài tập
Bài 1.
8
Nhập số tự nhiên n rồi tính tổng:
S = 1 + 1/2 + 1/3 + 1/4 +... 1/n ( n > 0)
Bài 2.
E. coli là vi khuẩn đường ruột gây tiêu chảy, đau bụng dữ dội. Cứ sau 20 phút thì
số lượng vi khuẩn E. coli tăng gấp đôi. Ban đầu, chỉ có 40 vi khuẩn E. coli trong đường
ruột. Hỏi sau bao lâu, số lượng vi khuẩn E. coli là 671088640 con?
Bài 3.
Huyện A có 100 000 người. Với mức tăng dân số bình quân 1,5% năm thì sau n
năm dân số sẽ vượt lên 130 000 người. Hỏi n nhỏ nhất là bao nhiêu?
Bài 4.
Một công ty nước giải khát muốn sản xuất ra những lon nước ngọt bằng nhôm
hình trụ có thể tích 330 ml. Chi phí cho vật liệu làm nhôm ảnh hưởng đến lợi nhuận. Với
vai trò người cố vấn cho công ty, em hãy tìm kích thước của lon nước ngọt (bán kính đáy
và chiều cao) để vật liệu làm lon đạt chi phí thấp nhất. (Giả sử lon nước ngọt là hình trụ
lý tưởng, độ mỏng của vật liệu là như nhau)
Biết:
V 2
Stp =S xq +2. S day =2 +2 π R
R
V
h= 2
πR
π=3.14