VÒNG LẶP FOR ttBước 1: Khởi gán Bước 2: Kiểm tra điều kiện Nếu đúng: Thực hiện lệnh/khối lệnh Cập nhật vòng lặp.. Quay lại bước 2 Nếu sai: Thoát vòng lặp Khởi gán Đúng Cập nhật v
Trang 1LẬP TRÌNH C CHO NGƯỜI MỚI HỌC
Giảng viên: Thạc sĩ Trần Thanh Sơn Trường Đại Học Khoa Học Tự Nhiên
Trang 2BÀI 4: CẤU TRÚC MẢNG VÀ VÒNG LẶP
I. CẤU TRÚC MẢNG
II. VÒNG LẶP FOR
III.VÒNG LẶP WHILE
IV.VÒNG LẶP DO…WHILE
Trang 3I CẤU TRÚC MẢNG
1. Định nghĩa: Mảng là dãy các biến có cùng kiểu dữ liệu Các biến này cùng tên
và phân biệt bởi chỉ số của chúng trong dãy
2. Ví dụ:
• int a[5]: khai báo mảng a gồm 5 phần tử, mỗi phần tử là biến nguyên (kiểu integer);
• float x[4]= {3.0, 2.5, 1.2, 4.5}: khai báo mảng x có 4 phần tử, mỗi phần tử kiểu số thực và có khai báo trước:
x[0] = 3.0; x[1]=2,5; x[2]=1.2; x[3]= 4.5;
Trang 4II VÒNG LẶP FOR
For (<khởi gán>; <điều kiện lặp>; <cập nhật>)
{
<Khối lệnh>;
}
• Khởi gán: Dùng để khởi gán giá trị ban đầu cho vòng lặp
• Điều kiện lặp: Dùng để kiểm tra điều kiện trước khi thực hiện vòng lặp
• Cập nhật: Dùng để cập nhật vòng lặp (tăng hoặc giảm chỉ số lặp) để dừng
• Bất kỳ biểu thức nào trong 3 biểu thức nói trên đều có thể vắng nhưng
phải giữ dấu chấm phẩy (;)
Trang 5II VÒNG LẶP FOR (tt)
Bước 1: Khởi gán
Bước 2: Kiểm tra điều kiện
Nếu đúng:
Thực hiện lệnh/khối lệnh
Cập nhật vòng lặp
Quay lại bước 2
Nếu sai: Thoát vòng lặp
Khởi gán
Đúng
Cập nhật vòng lặp Lệnh / Khối lệnh
kiện lặp
Trang 6II VÒNG LẶP FOR (tt)
Ví dụ: Cho người dùng nhập n phần tử của mảng
int i, n;
int a[100];// khai báo mảng a gồm 100 phần tử số nguyên
printf (“Nhap vao so phan tu cua mang”);
scanf_s(“%d”,&n);
for (i = 0;i<n; i++)
{
printf(“\nNhap phan tu a[%d]: ”, i+1):
scanf_s(“%d”, &a[i]);
}
Trang 7III VÒNG LẶP WHILE
<khởi gán>;
while <điều kiện lặp>)
{
Lệnh/ Khối lệnh;
<cập nhật>
}
• Ý nghĩa: Nếu giá trị của điều kiện lặp còn đúng thì còn thực hiện lệnh/
khối lệnh
• Trong vòng lặp lệnh / khối lệnh lặp ít nhất là 0 lần
• Lưu ý: Cách hoạt động của while giống for
Trang 8III VÒNG LẶP WHILE (tt)
Bước 1: Khởi gán
Bước 2: Kiểm tra điều kiện
Nếu đúng:
Thực hiện lệnh/khối lệnh
Cập nhật vòng lặp
Quay lại bước 2
Nếu sai: Thoát vòng lặp
Khởi gán
Đúng
Cập nhật vòng lặp Lệnh / Khối lệnh
kiện lặp
Trang 9III VÒNG LẶP WHILE (tt)
Ví dụ: Cho người dùng nhập n phần tử của mảng
int i, n;
int a[100];// khai báo mảng a gồm 100 phần tử số nguyên
printf (“Nhap vao so phan tu cua mang”);
scanf_s(“%d”,&n);
i = 0;// bước khởi gán
while (i<n)
{
printf(“\nNhap phan tu a[%d]: ”, i):
scanf_s(“”, &a[i]);
i++;
}
Trang 10III VÒNG LẶP DO … WHILE
<Khởi gán>
Do
{
<Lệnh/ Khối lệnh>;
<Cập nhật>;
}while (điều kiện);
Ý nghĩa:
Thực hiện khối lệnh cho đến khi điều kiện sai thì dừng
Khối lệnh trong vòng lặp thực hiện ít nhất 1 lần
Khởi gán
Đúng Cập nhật vòng lặp
Lệnh / Khối lệnh
Sai
Điều kiện lặp
Trang 11IV VÒNG LẶP DO … WHILE (tt)
Ví dụ: Nhập số nguyên dương n Tính tổng từ 1 đến n
int n, i, tong=0;
printf (“Nhap vao so nguyên n”);
scanf_s(“%d”,&n);
i = n;// bước khởi gán
do
{
Tong = tong + i;
i ;
} while (i>0);
Trang 12SO SÁNH CÁC VÒNG LẶP
Vòng lặp for/while
• Kiểm tra điều kiện trước thực hiện công việc sau.
• Công việc có thể không được thực hiện lần nào.
• Vòng lặp kết thúc khi nào điều kiện sai.
Vòng lặp do-while
• Thực hiện công việc trước kiểm tra điều kiện sau.
• Công việc được thực hiện ít nhất 1 lần.
• Vòng lặp kết thúc khi nào điều kiện sai.
Trang 13BÀI TẬP
Bài 1: Cho người dùng nhập vào n số nguyên và tính tổng, tích các số
vừa nhập
Giải pháp:
• Các số nhập vào lưu vào trong 1 mảng số nguyên
• Khởi tạo biến: tổng = 0;tích = 1;
• Lặp lại: với mỗi phần tử của mảng, lấy cộng với tổng rồi gán cho biến tổng Lặp lại n lần
• tổng = tổng + a[i];
• Tương tự làm tích
• Xuất kết quả tổng, tích.
Trang 14BÀI TẬP (tt)
Bài 2: Tìm số lớn nhất trong mảng Cho người dùng nhập vào
n số nguyên In ra số lớn nhất, nhỏ nhất trong mảng.
Giải pháp:
• Các số nhập vào lưu vào trong 1 mảng số nguyên
• Khởi tạo min = max = a[0]; phần tử đầu mảng;
• Lặp lại: từ phần tử thứ a[1] đến cuối mảng a[n-1], phần tử a[i] nào lớn hơn max, gán max = a[i] đó.
• Tương tự a[j] nào nhỏ hơn min, gán min = a[j] đó
• Xuất max, min ra màn hình