Var X: Array 0 100 of integer biến mảng X có thể nhập tối đa bao nhiêu phần tử

Giải Bài Tập Tin Học 11 – Bài 11: Kiểu mảng giúp HS giải bài tập, giúp cho các em hình thành và phát triển năng lực sử dụng công nghệ thông tin và truyền thông:

  • Sách Giáo Viên Tin Học Lớp 11

Chúng ta chỉ xét hai kiểu mảng thông dụng với nhiều ngôn ngữ lập trình là kiểu mảng một chiều và kiểu mảng hai chiều.

1. Kiểu mảng một chiều

-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?

Giả sử ta muốn đo nhiệt độ trung bình trong 1 tháng và đưa ra những ngày nào cao hơn nhiệt độ trung bình. Nếu chỉ sử dụng kiến thức ta biết từ đầu chương trình đến giờ. Ta sẽ phải khai báo 30 biến để lưu giữ giá trị nhiệt độ các ngày trong tháng. Sau đó phải gõ lại rất nhiều lệnh if gây ra sự nhàm chán.

a) 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ố];

Ví dụ:

Var nhietdo:array[1..30] of integer;

Muốn tham chiếu tới phần tử thứ 20 ta sẽ viết là nhietdo[20].

b) Một số ví dụ

Ví dụ 1. Tìm phần tử lớn nhất của dãy số nguyên

Input: Số nguyên dương N (N<=250) và dãy N số nguyên dương A1,A2,..,An,mỗi số đều không vượt quá 500.

Output: Chỉ số và giá trị của phần từ lớn nhất trong dãy số đã cho (nếu có nhiều phần tử lớn nhất thì chỉ cần đưa ra một trong số chúng.

program vidu1; uses crt; var arrayint:array[1..250] of integer; n,i,mi:integer; begin clrscr; writeln('nhap vao so phan tu '); readln(n); for i:=1 to n do begin writeln('phan tu thu ',i,'='); readln(arrayint[i]); end; mi:=1; for i:=2 to n do begin if arrayint[i]>arrayint[mi] then mi:=i; end; writeln('gia tri lon nhat la ',arrayint[mi],' chi so la ',mi); readln; end.

Ví dụ 2: Sắp xếp dãy số nguyên bằng thuật toán tráo đổi.

program sapxep; uses crt; const Nmax=250; var N,i,j,t:integer; A:array[1..Nmax] of integer; begin clrscr; write('nhap so luong phan tu cua day 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 for i:=1 to j-1 do if A[i]>A[i+1] then begin t:=A[i]; A[i]:=A[i+1]; A[i+1]:=t; end; writeln('day da duoc sap xep la '); for i:=1 to N do write(A[i]:4); readln; end.

Kết quả:

Var X: Array 0 100 of integer biến mảng X có thể nhập tối đa bao nhiêu phần tử

Ví dụ 3: Tìm kiếm nhị phân.

Bước 1: Nhập N, các số hạng a1, a2… aN và khóa k.

Bước 2: Dau <— 1, Cuoi <-N;

Bước 3: Giua <—[ Dau + Cuoi]/2

Bước 4: Nếu Agiữa = k thì thông báo chỉ số Giua rồi kết thúc;

Bước 5: Nếu Agiữa> k thì đặt Cuối= Giữa-1 rồi chuyển đến bước 7;

Bước 6: Nếu Nếu Agiữa ≤ k Dau;

Bước 7: Nếu Dau > Cuoi thì thông báo dãy A không có số hạng có giá trị bằng k rồi kết thúc;

Bước 8: Ọuay lại bước 3.

Từ thuật toán của bài toán, chúng ta rút ra được một số điều cơ bản cần phải lưu ý, đó là:

– Mảng đã dược sắp xếp tăng dần.

– Trong thuật toán, việc tìm kiếm thực chất là lặp một số lần (chưa xác định được trước) các thao tác sau: chọn số hạng ở “giữa” dãy, so sánh số hạng đó với k, căn cứ vào kết quả so sánh này để hoặc kết luận đã tìm thấy (trường hợp xảy ra bằng) hoặc thu hẹp phạm vi tìm kiếm(trường hợp không bằng).

– Khi nào quá trình lặp nói trên dừng lại? Quá trình lặp đó cần dừng lại với một trong hai sự kiện sau xảy ra gồm đã tìm thấy hoặc không gian tìm kiếm đã trở nên bằng rỗng (nghĩa là không còn đoạn nào của dãy cho ta hy vọng chứa phân tử cần tìm).

– Phạm vi tìm kiếm trên dãy là một đoạn được xác định bởi các biến nguyên Dau và Cuoi, tương ứng cho biết bắt đầu từ phần tử có chỉ số Dau của dãy cho đến phần tử có chỉ số Cuoi của dãy. Từ đó, ta đưa ra được công thức xác định phân tử ở “giữa” phạm vi tìm kiếm và công thức xác định lại giá trị cho biến Dau hay Cuoi trong mỗi trường hợp thu hẹp phạm vi tìm kiếm.

Var X: Array 0 100 of integer biến mảng X có thể nhập tối đa bao nhiêu phần tử

2. Kiểu mảng hai chiều

Mảng hai chiều: Là bảng các phần tử cùng kiểu.

Ta có thể coi mảng hai chiều là mảng một chiều mà mỗi phần tử của mảng một chiều lại là một mảng khác.

Ví dụ:

Var b:array[1..9] of array[1..10] of integer;

Khai báo b là một mảng một chiều gồm 9 phần tử. Mỗi phần tử của mảng b là một mảng một chiều gồm 10 phần tử.

Cách khai báo:

Ngoài khai báo theo cách trên. Ta có thêm 2 cách nữa để khai báo mảng 2 chiều.

Cách 1:

Var:array[kiểu chỉ số hang,kiểu chỉ số cột] of ;

Cách 2:

Type=array[kiểu chỉ số hang,kiểu chỉ số cột] of ; Var:;

Ví dụ:

Var b:array[1..9,1..10] of integer;

Hoặc

Type mang2chieu=array[1..9,1..10] of integer; Var B:mang2chieu;

Muốn tham chiếu đến phần tử trong mảng 2 chiều ta sử dụng 2 chỉ số là chỉ số hàng và chỉ số cột.

Ví dụ:

Mang2chieu[5,6]

b) Một số ví dụ:

Ví dụ 1: Tính và in ra bảng nhân.

program bangnhan; uses crt; var bnhan: array[1..9,1..9] of integer; i,j:integer; begin clrscr; for i:=1 to 9 do for j:=1 to 9 do bnhan[i,j]:=i*j; for i:=1 to 9 do begin for j:=1 to 9 do write(bnhan[i,j]:4); writeln(); end; readln end.

Kết quả:

Var X: Array 0 100 of integer biến mảng X có thể nhập tối đa bao nhiêu phần tử

Ví dụ 2. Chương trình sau nhập vào từ bàn phím các phần tử của mảng hai chiều B gồm 5 hàng, 7 cột với các phần tử là các số nguyên và một số nguyên k. Sau đó, đưa ra màn hình các phần tử có giá trị nhỏ hơn k.

program vidu2; uses crt; var arr: array[1..5,1..7] of integer; i,j,k:integer; begin clrscr; for i:=1 to 5 do for j:=1 to 7 do begin write('a[',i,']','[',j,']='); readln(arr[i,j]); end; write('k='); readln(k); write('cac phan tu nho hon k la:'); for i:=1 to 5 do for j:=1 to 7 do if arr[i,j]Lưu ý: Ngoài mảng một chiều và hai chiều ta có thể có các mảng nhiều chiều.

Tổng hợp các bài Trắc nghiệm Tin học 8 Bài 9 (có đáp án) Làm việc với dãy số hay nhất, chi tiết bám sát nội dung chương trình Tin học 8

Trắc nghiệm Tin học 8 Bài 9 (có đáp án)

Câu 1:Số phần tử trong khai báo dưới đây là bao nhiêu?

Var hocsinh : array[12..80] of integer;

A. 80

B. 70

C. 69

D. 68

Đáp án: C

Số phần tử trong mảng là: 80 -12 +1 =69

Câu 2:Khai báo mảng nào là đúng trong các khai báo sau đây:

A. var tuoi : array[1..15] of integer;

B. var tuoi : array[1.5..10.5] of integer;

C. var tuoi : aray[1..15] of real;

D. var tuoi : array[1 … 15 ] of integer;

Đáp án: A

Cú pháp khai báo mảng:

Var : array[..] of;

Trong đó: chỉ số đầu <= chỉ số cuối và kiểu dữ liệu chỉ có thể là integer hoặc real

Câu 3:Cú pháp khai báo dãy số nào sau đây đúng nhất?

A. Var < tên dãy số > : array [ < chỉ số cuối > .. < chỉ số đầu >] of < kiểu dữ liệu >;

B. Var < tên dãy số > : array [ < chỉ số đầu > .. < chỉ số cuối > ] of < kiểu dữ liệu >;

C. Var < tên dãy số > : array [ < chỉ số cuối > : < chỉ số đầu > ] of < kiểu dữ liệu >;

D. Var < tên dãy số > : array [ < chỉ số đầu > .. < chỉ số cuối >] for < kiểu dữ liệu >;

Đáp án: B

Cú pháp khai báo mảng:

Var : array[..] of;

Câu 4:Để nhập dữ liệu từ bàn phím cho mảng A có 10 phần tử là số nguyên ta dùng lệnh nào sau đây?

A. For i:=1 to 10 do Readln(A[i]);

B. For i:= 1 to 10 do Writeln(A[i]);

C. Dùng 10 lệnh Readln(A);

D. Cả (A), (B), (C) đều sai.

Đáp án: A

Để nhập dữ liệu từ bàn phím cho mảng A có 10 phần tử là số nguyên ta dùng lệnh lặp với số lần biết trước là For..do, câu Readln (A[i]) là nhập dữ liệu từ bàn phím cho từng phần tử.

Câu 5:Các cách nhập dữ liệu cho biến mảng sau, cách nhập nào không hợp lệ?

A. readln(B[1]);

B. readln(dientich[i]);

C. readln(B5);

D. read(dayso[9]);

Đáp án: C

Cú pháp nhập dữ liệu cho biến mảng là: Read ([chỉ số]);

Hoặc Readln([chỉ số]);

Câu 6:Em hãy chọn phát biểu đúng khi nói về dữ liệu kiểu mảng:

A. Dữ liệu kiểu mảng là tập hợp các phần tử không có thứ tự và mọi phần tử có cùng một kiểu dữ liệu

B. Dữ liệu kiểu mảng là tập hợp các phần tử có thứ tự và mỗi một phần tử trong mảng có thể có các kiểu dữ liệu khác nhau

C. Dữ liệu kiểu mảng là tập hợp các phần tử có thứ tự và mọi phần tử có cùng một kiểu dữ liệu

D. Tất cả ý trên đều sai

Đáp án: C

Dữ liệu kiểu mảng là tập hợp các phần tử có thứ tự và mọi phần tử có cùng một kiểu dữ liệu.

Câu 7:Cách khai báo biến mảng sau đây là đúng?

A. Var X: Array[3.. 4.8] of Integer;

B. Var X: Array[10 .. 1] of Integer;

C. Var X: Array[4 .. 10] of Real;

D. Var X: Array[10 , 13] of Real;

Đáp án: C

Cú pháp khai báo mảng:

Var : array[..] of;

Trong đó: chỉ số đầu <= chỉ số cuối và kiểu dữ liệu chỉ có thểlà integer hoặc real.

Câu 8: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

Đáp án: A

Chỉ số của mảng dùng để tham chiếu (truy cập) đến một phần tử bất kì trong mảng. Cú pháp: [chỉ số];

Câu 9:Chọn câu phát biểu đúng về kiểu dữ liệu của mảng?

A. Có thể dùng tất cả các kiểu dữ liệu để làm kiểu dữ liệu của mảng

B. Kiểu dữ liệu của mảng chỉ có thể là kiểu số nguyên, số thực, kiểu logic, kiểu ký tự

C. Kiểu dữ liệu của mảng là kiểu của các phần tử của mảng, là Integer hoặc Real

D. Kiểu dữ liệu của mảng phải được định nghĩa trước thông qua từ khóa VAR

Đáp án: C

Trong đó khai báo mảng: chỉ số đầu <= chỉ số cuối và kiểu dữ liệu chỉ có thể là integer hoặc real

Câu 10:Cho khai báo mảng như sau: Var a : array[0..30] of integer ;

Để in giá trị phần tử thứ 20 của mảng một chiều A ra màn hình ta viết:

A. Write(A[20]);

B. Write(A(20));

C. Readln(A[20]);

D. Write([20]);

Đáp án: A

Để in giá trị phần tử của mảng một chiều A ra màn hình ta sử dụng lệnh Write/ writeln. Để tham chiếu đến phần tử trong mảng sử dụng cú pháp [chỉ số];

Hệ thống kiến thức Tin học 8 Bài 9

1. Dãy số và biến mảng

- Dữ liệu kiểu mảng:

Là dãy hữu hạn các phần tử có cùng kiểu dữ liệu, được sắp xếp thứ tự bằng cách gán cho mỗi phần tử một chỉ số.

Var X: Array 0 100 of integer biến mảng X có thể nhập tối đa bao nhiêu phần tử
Hình 1. Minh họa dữ liệu kiểu mảng​

Trong đó:

+ Tên mảng: A

+ Chỉ số: i

+ Số phần tử của mảng: 6

+ Kiểu dữ liệu của các phần tử: Kiểu số nguyên

+ Khi tham chiếu đến phần tử thứ i, ta viết A. Ví dụ: A[5]=17

- Biến mảng:

+ Là biến có kiểu dữ liệu là kiểu mảng

+ Giá trị của biến mảng là một mảng, tức là một dãy số (số nguyên hoặc số thực)

+ Mỗi số là giá trị của các phần tử tương ứng

Var X: Array 0 100 of integer biến mảng X có thể nhập tối đa bao nhiêu phần tử
Hình 2. Minh họa biến mảng và giá trị của biến mảng​

2. Ví dụ về biến mảng

a. Cách khai báo mảng trong Pascal

Cách khai báo mảng trong Pascal như sau:

Tên mảng: array [ < Chỉ số đầu > .. < Chỉ số cuối > ] of < Kiểu dữ liệu >;

Trong đó:

+ Tên mảng: Do người lập trình đặt

+ array, of: Là từ khóa của chương trình

+ Chỉ số đầu, chỉ số cuối: Là 2 số nguyên, thỏa mãn: chỉ số đầu ≤ chỉ số cuối giữa hai chỉ số là dấu ..

+ Kiểu dữ liệu: Là kiểu của các phần tử, là Integer hoặc Real

+ Số phần tử = chỉ số cuối - chỉ số đầu + 1

Ví dụ 1:Khai báo mảng sau:

Var X: Array 0 100 of integer biến mảng X có thể nhập tối đa bao nhiêu phần tử
Hình 3. Mảng Tuoi​

PHP:

Var X: Array 0 100 of integer biến mảng X có thể nhập tối đa bao nhiêu phần tử

Trong đó:

+ Tên mảng: Tuoi

+ Chỉ số đầu: 1

+ chỉ số cuối: 40

+ Kiểu dữ liệu: Integer

+ Số phần tử: 40

Lưu ý:

Kích thước của mảng phải được khai báo bằng một con số cụ thể.

b. Truy cập đến giá trị phần tử trong mảng

Cú pháp:Tên mảng [ Chỉ số ]

Ví dụ 2:Tuoi[4]=9

Tham chiếu tới phần tử thứ tư của mảng Tuoi

c. Nhập giá trị cho mảng

Sử dụng lệnh Read (hoặc Readln) kết hợp với For ... do để nhập giá trị cho mảng.

Các bước nhập giá trị cho mảng:

+ Bước 1. Nhập số phần tử của mảng;

+ Bước 2. Nhập vào giá trị từng phần tử của mảng (A).

Ví dụ 3:Thể hiện bằng pascal

PHP:

Var X: Array 0 100 of integer biến mảng X có thể nhập tối đa bao nhiêu phần tử

d. In giá trị các phần tử của mảng

Sử dụng lệnh Write (hoặc Writeln) kết hợp với For ... do để in giá trị các phần tử của mảng.

Các bước in giá trị của mảng:

+ Bước 1. Thông báo;

+ Bước 2. In giá trị của từng phần tử.

Ví dụ 4:Thể hiện bằng pascal

PHP:

Var X: Array 0 100 of integer biến mảng X có thể nhập tối đa bao nhiêu phần tử

e. Xử lí dữ liệu (tính toán, so sánh, tìm giá trị lớn nhất, nhỏ nhất …)

Ví dụ 5:Tìm những học sinh có điểm Tin đạt loại giỏi

PHP:

Var X: Array 0 100 of integer biến mảng X có thể nhập tối đa bao nhiêu phần tử

Sử dụng biến mảng và câu lệnh lặp (thường là For…do) giúp cho việc viết chương trình được ngắn ngọn và dễ dàng hơn.

3. Tìm giá trị lớn nhất và giá trị nhỏ nhất của dãy số

Ví dụ 6:Viết chương trình nhập N số nguyên từ bàn phím và in ra màn hình số nhỏ nhất và số lớn nhất. N cũng được nhập từ bàn phím.

Ý tưởng: Trước hết ta khai báo biến N để nhập số các số nguyên sẽ được nhập vào. Sau đó khai báo N biến lưu các số được nhập vào như là các phần tử của một biến mảng A. Ngoài ra, cần khai báo một biến i làm biến đếm cho các lệnh lặp và biến Max để lưu số lớn nhất, Min để lưu số nhỏ nhất.

Chương trình mẫu:

PHP:

Var X: Array 0 100 of integer biến mảng X có thể nhập tối đa bao nhiêu phần tử

Trong chương trình này, chúng ta hãy lưu ý một số điểm sau: Số tối đa các phần tử của mảng phải được khai báo bằng một số cụ thể (Ở đây là 100).