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!

Tin học 11 bài 11: Kiểu mảng

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 :array[kiểu chỉ số] of ;

Cách 2: Khai báo gián tiếp biến mảng qua kiểu mảng một chiều

Type=array[kiểu chỉ số] of ;

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:  [chỉ số];

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 : array [kiểu chỉ số dòng, kiểu chỉ số cột] of ;

- Cách 2: Khai báo gián tiếp biến mảng qua kiểu máng hai chiều:

type =array[kiểu chỉ số dòng, kiểu chỉ số cột] of ;

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.

Trắc Nghiệm

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ể.
Ngày:11/09/2020 Chia sẻ bởi:Minh Ngoan

CÓ THỂ BẠN QUAN TÂM