Tin học 11 bài 11: Kiểu mảng
Nhằm giúp các em có thêm nhiều tài liệu tham khảo hữu ích, eLib xin gửi tới các em học sinh lớp 11 nội dung bài Kiểu mảng dưới đây, với nội dung được trình bày chi tiết, rõ ràng eLib hy vọng tài liệu này sẽ giúp các em đạt kết quả cao trong học tập. Chúc các em học tốt!
Mục lục nội dung
1. Tóm tắt lý thuyết
1.1. Kiểu mảng một chiều
a. Khái niệm
- Mảng một chiều là một dãy hữu hạn các phần tử có cùng kiểu. Mảng được đặt tên và mỗi phần tử mang một chỉ số. Để mô tả mảng một chiều cần xác định kiểu của các phần tử và cách đánh chỉ số các phần tử.
- Với mảng một chiều ta quan tâm đến:
+ Tên kiểu mảng một chiều.
+ Số lượng phần tử trong mảng.
+ Kiểu dữ liệu của phần tử.
+ Cách khai báo biến mảng.
+ Cách tham chiếu đến phần tử.
Tại sao ta lại phải sử dụng mảng?
b. Khai báo
Cách 1: Khai báo trực tiếp biến mảng một chiều
Var
Cách 2: Khai báo gián tiếp biến mảng qua kiểu mảng một chiều
Type
Var
Trong đó:
+ Kiểu chỉ số thường là đoạn số nguyên liên tục có dạng n1..n2, với n1 là chỉ số đầu và n2 là chỉ số cuối (n1≤n2).
+ Kiểu phần tử là kiểu dữ liệu của các phần tử mảng.
+ Tham chiếu đến phần tử mảng ta viết:
2. Kiểu mảnh hai chiều
a. Khái niệm
- Mảng hai chiều là bảng các phần tử cùng kiểu là mảng một chiều mà mọi phần tử của nó lại là một mảng một chiều.
- Với kiểu mảng hai chiều, các ngôn ngữ lập trình có các quy tắc, cách thức cho phép xác định:
+ Tên kiều mảng hai chiều
+ Số lượng phần tử của mỗi chiều
+ Kiểu dữ liệu cùa phần tử
+ Cách khai báo biến
+ Cách tham chiếu đến phần tử
Ví dụ: Bảng cửu chương có thể được khai báo bằng 11 Pascal như sau:
var B: array[1..9] of array[1..10] of integer;
hoặc có thể khai báo ngắn gọn hơn như sau:
var B: array[1..9,1.. 10] of integer;
b. Khai báo
- Cách 1: Khai báo trực tiếp biến mảng hai chiều như sau:
var
- Cách 2: Khai báo gián tiếp biến mảng qua kiểu máng hai chiều:
type
var
- Lưu ý:
- Giống như khi khai báo kiểu dữ liệu mảng một chiều, người lập trình cần phải xác định kiểu của các phần tử tạo nên mảng và kiểu chỉ số. Cách xác định kiểu chỉ số vẫn như đã biết ở kiểu mảng một chiều, chỉ khác là ở mảng hai chiều cần xác định hai chỉ số, hai chỉ số đó độc lập với nhau.
- Giống như ở mảng một chiều, các thao tác nhập, xuất hay xử lí mỗi phần tử của mảng phải tuân theo quy định kiểu phần tử của mảng.
- Việc thực hiện các tao tác nào đó (nhập, xuất hay xử lí) lần lượt trên các phần tử của mảng hai chiều thường gần với hai câu lệnh for-do lồng nhau.
- Ngoài mảng một chiều và hai chiều ta có thể có các mảng nhiều chiều.
2. Bài tập minh họa
Bài 1. Sắp xếp dãy số nguyên bằng thuật toán tráo đổi
Hướng dẫn giải
Xác định bài toán:
- Input: Số nguyên dương N (N\(\leq\)250) và dãy A gồm N số nguyên dương a1, a2,..., aN, mỗi số đều không vượt quá 500.
- Output: Dãy số A đã được sắp xếp thành dãy không giảm.
Chương trình cài đặt:
program sapxep;
uses CRT;
const Nmax = 250;
type
ArrInt = array[1..Nmax] of integer;
var
N,i,j,t: integer;
A: ArrInt;
begin
clrscr;
write('Nhap so luong phan tu cua day so, N = ');readln(N);
for i:=1 to N do
begin
write('Phan tu thu ',i,' = ');
readln(A[i]);
end;
for j:=N downto 2 do
begin
for i:=1 to j-1 do
if A[i]> A[i+1] then
begin (*Trao doi A[i] va A[i+1]*)
t:= A[i];
A[i]:= A[i+1];
A[i+1]:= t
end;
end;
writeln('Day so duoc sap xep la: ');
for i:=1 to N do write(A[i]: 4);
readln
end.
3. Luyện tập
3.1. Bài tập tự luận
Câu 1: Thế nào là khai báo biến mảng gián tiếp?
Câu 2: Cho khai báo mảng và đoạn chương trình như sau:
Var a : array[0..50] of real ;
k := 0 ;
for i := 1 to 50 do
if a[i] > a[k] then k := i ;
Đoạn chương trình trên thực hiện công việc gì?
Câu 3: Cho khai báo mảng như sau: Var a : array[0..10] of integer ;
Khai báo chỉ phần tử thứ 10 của mảng là gì?
3.2. Bài tập trắc nghiệm
Câu 1: Phát biểu nào dưới đây về kiểu mảng một chiều là phù hợp?
A. Là một tập hợp các số nguyên
B. Độ dài tối đa của mảng là 255
C. Là một dãy hữu hạn các phần tử cùng kiểu
D. Mảng không thể chứa kí tự
Câu 2: Để khai báo số phần tử của mảng trong PASCAL, người lập trình cần:
A. khai báo một hằng số là số phần tử của mảng
B. khai báo chỉ số bắt đầu và kết thúc của mảng
C. khai báo chỉ số kết thúc của mảng
D. không cần khai báo gì, hệ thống sẽ tự xác định
Câu 3: Phát biểu nào dưới đây về chỉ số của mảng là phù hợp nhất?
A. Dùng để truy cập đến một phần tử bất kì trong mảng
B. Dùng để quản lí kích thước của mảng
C. Dùng trong vòng lặp với mảng
D. Dùng trong vòng lặp với mảng để quản lí kích thước của mảng
Câu 4: Phát biểu nào sau đây về mảng là không chính xác?
A. Chỉ số của mảng không nhất thiết bắt đầu từ 1
B. Có thể xây dựng mảng nhiều chiều
C. Xâu kí tự cũng có thể xem như là một loại mảng
D. Độ dài tối đa của mảng là 255
Câu 5: Phương án nào dưới đây là khai báo mảng hợp lệ?
A. Var mang : ARRAY[0..10] OF INTEGER;
B. Var mang : ARRAY[0..10] : INTEGER;
C. Var mang : INTEGER OF ARRAY[0..10];
D. Var mang : ARRAY(0..10) : INTEGER;
3.3. Trắc nghiệm Online
Các em hãy luyện tập bài trắc nghiệm Kiểu mảng Tin học 11 sau để nắm rõ thêm kiến thức bài học.
4. Kết luận
Sau khi học xong nội dung bài 11 SGK Tin học lớp 11 các em nắm được các nội dung chính sau:
- Biết được một kiểu dữ liệu mới là kiểu mảng 1 chiều. Biết một loại biến có chỉ số
- Hiểu khái niệm mảng một chiều,
- Biết cấu trúc tạo kiểu mảng một chiều
- Hiểu cách khai báo và truy cập đến các phần tử của mảng
- Cài đặt được thuật toán của một số bài toán đơn giản với kiểu dữ liệu mảng một chiều.
- Thực hiện được khai báo mảng, truy cập, tính toán các phần tử của mảng.
- Tạo được kiểu mảng một chiều và sử dụng biến mảng một chiều trong ngôn ngữ lập trình Pascal để giả quyết 1 số bài toán cụ thể.