Ví dụ: Luyện tập: Ôn tập
Bài 4: Ôn tập – Ví dụ luyện tập các thao tác với mảng một chiều Giới thiệu Trong chương trình Tin học lớp 8, chúng ta đã làm quen với rất nhiều kiến thức bổ ích, đặc biệt là cách làm việc với mảng một chiều trong ngôn ngữ lập trình Pascal. Bài ôn tập này sẽ giúp các em củng cố lạ
Bài 4: Ôn tập – Ví dụ luyện tập các thao tác với mảng một chiều
Giới thiệu
Trong chương trình Tin học lớp 8, chúng ta đã làm quen với rất nhiều kiến thức bổ ích, đặc biệt là cách làm việc với mảng một chiều trong ngôn ngữ lập trình Pascal. Bài ôn tập này sẽ giúp các em củng cố lại kiến thức thông qua một ví dụ luyện tập cụ thể, từng bước một. Chúng ta sẽ cùng nhau giải quyết một bài toán thực tế, vừa ôn lại lý thuyết vừa rèn luyện kỹ năng viết chương trình.
Lý thuyết cần nhớ trước khi làm ví dụ
Trước khi bắt đầu ví dụ, các em hãy ghi nhớ một số khái niệm và thao tác cơ bản với mảng một chiều:
- Khai báo mảng:
Var A: Array[1..n] Of Integer;(n là số phần tử tối đa). - Nhập dữ liệu cho mảng: Sử dụng vòng lặp
For i:=1 To n Do Readln(A[i]);. - Xuất dữ liệu của mảng: Sử dụng vòng lặp
For i:=1 To n Do Write(A[i]:4);. - Duyệt mảng: Dùng vòng lặp
Forđể kiểm tra từng phần tử (ví dụ: tìm số lớn nhất, tính tổng, đếm số lượng...). - Thay đổi giá trị phần tử: Gán trực tiếp:
A[i] := giá_trị_mới;.
Ví dụ minh họa từng bước
Đề bài: Viết chương trình nhập vào một mảng gồm N số nguyên (N≤100). Sau đó, thực hiện các yêu cầu sau:
- In mảng vừa nhập ra màn hình.
- Tính tổng các số âm trong mảng.
- Đếm xem có bao nhiêu số chia hết cho 3. Thay thế mỗi số đó bằng số 0.
- In mảng sau khi đã thay thế.
Bước 1: Xác định dữ liệu và khai báo
Chúng ta cần một mảng số nguyên A, một biến N để lưu số lượng phần tử, và các biến trung gian như i, tổng (Sum), đếm (Count).
Khai báo:
Var A: Array[1..100] Of Integer;
N, i, Sum, Count: Integer;
Bước 2: Nhập dữ liệu cho mảng
Đầu tiên, nhập số phần tử N. Sau đó, dùng vòng lặp để nhập từng giá trị.
Write('Nhap so phan tu N: '); Readln(N);
For i:=1 To N Do
Begin
Write('Nhap phan tu thu ',i,': ');
Readln(A[i]);
End;
Bước 3: In mảng vừa nhập ra màn hình
Dùng vòng lặp để in các giá trị, mỗi giá trị cách nhau một khoảng trắng.
Writeln('Mang vua nhap la:');
For i:=1 To N Do Write(A[i]:4);
Giải thích: A[i]:4 có nghĩa là in giá trị A[i] với độ rộng 4 ký tự, giúp các số được căn đều.
Bước 4: Tính tổng các số âm
Khởi tạo biến Sum:=0. Duyệt từ phần tử đầu đến cuối, nếu A[i] < 0 thì cộng dồn vào Sum.
Sum:=0;
For i:=1 To N Do
If A[i] < 0 Then Sum:=Sum + A[i];
Writeln('Tong cac so am la: ', Sum);
Bước 5: Đếm số chia hết cho 3 và thay thế bằng 0
Khởi tạo Count:=0. Duyệt mảng, nếu A[i] chia hết cho 3 (kiểm tra bằng A[i] mod 3 = 0) thì tăng Count lên 1 và gán A[i] := 0.
Count:=0;
For i:=1 To N Do
If A[i] mod 3 = 0 Then
Begin
Count:=Count + 1;
A[i]:=0;
End;
Writeln('So luong phan tu chia het cho 3 la: ', Count);
Lưu ý quan trọng: Việc thay thế diễn ra ngay trong quá trình duyệt mảng, vì vậy sau lệnh này, mảng A đã bị thay đổi.
Bước 6: In mảng sau khi thay thế
Chúng ta in mảng A một lần nữa để thấy kết quả sau khi thay thế.
Writeln('Mang sau khi thay the cac phan tu chia het cho 3 bang 0:');
For i:=1 To N Do Write(A[i]:4);
Chương trình hoàn chỉnh (để các em tham khảo)
Program LuyenTapMang;
Var A: Array[1..100] Of Integer;
N, i, Sum, Count: Integer;
Begin
Write('Nhap so phan tu N: '); Readln(N);
For i:=1 To N Do
Begin
Write('Nhap phan tu thu ',i,': ');
Readln(A[i]);
End;
Writeln('Mang vua nhap la:');
For i:=1 To N Do Write(A[i]:4);
Writeln;
Sum:=0;
For i:=1 To N Do
If A[i] < 0 Then Sum:=Sum + A[i];
Writeln('Tong cac so am la: ', Sum);
Count:=0;
For i:=1 To N Do
If A[i] mod 3 = 0 Then
Begin
Count:=Count + 1;
A[i]:=0;
End;
Writeln('So luong phan tu chia het cho 3 la: ', Count);
Writeln('Mang sau khi thay the:');
For i:=1 To N Do Write(A[i]:4);
Readln;
End.
Ghi nhớ
- Thứ tự thực hiện: Khi giải một bài toán với mảng, cần làm lần lượt: khai báo → nhập dữ liệu → xử lý (tính toán, thay đổi) → xuất kết quả.
- Duyệt mảng: Hầu hết các thao tác đều cần duyệt qua các phần tử. Hãy luôn nhớ sử dụng vòng lặp
For i:=1 To N Do. - Thay đổi mảng: Khi thay đổi giá trị của một phần tử trong mảng (ví dụ A[i] := 0), mảng sẽ bị thay đổi vĩnh viễn cho các lần xử lý sau.
- Kiểm tra tính chia hết: Dùng phép toán
mod. Ví dụ:A[i] mod 3 = 0có nghĩa là A[i] chia hết cho 3.
Bài tập gợi ý
Hãy tự luyện tập với bài toán sau để thành thạo hơn:
- Bài 1: Viết chương trình nhập vào mảng A gồm N số nguyên. In ra màn hình các số dương và tính tích của các số dương đó.
- Bài 2: Nhập mảng A gồm N số nguyên. Tìm và in ra số lớn nhất trong mảng. Nếu có nhiều số lớn nhất, hãy in ra vị trí (chỉ số) của số lớn nhất đầu tiên.
- Bài 3: Nhập mảng A gồm N số nguyên. Hãy thay thế tất cả các số lẻ bằng giá trị 1 và in mảng kết quả ra màn hình.
A[i] mod 2 <> 0) thì gán A[i] := 1.