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ử.

b. Khai báo mảng một chiều

– Cách 1: Khai báo trực tiếp:

                    VAR <tên biến mảng>ARRAY [kiểu chỉ số] OF <kiểu phần tử>;

– Cách 2: Khai báo gián tiếp

                     TYPE <tên kiểu mảng> = ARRAY [kiểu chỉ số] OF <kiểu phần tử>;

                     VAR <tên biến mảng> : <tên kiểu mảng>;

– Trong đó:

  • Kiểu chỉ số thường là một đoạn số nguyên liên tục có dạng n1…n2 (n1<n2; n1, n2 là các hằng hoặc biểu thức)
  • Kiểu phần tử là kiểu dl của các phần tử của mảng.

– Ví dụ 1: Var Nhietdo: array [1..Max] Of real;

– Ví dụ 2: Khai báo mảng tối đa 100 số nguyên (chỉ số đầu tiên là 1)

=> Ta có các cách sau:

  • Cách 1: Var a: Array[1..100] Of Integer;
  • Cách 2:

               Const Nmax = 100;

               Var a: Array[1..Nmax] Of integer;

c. Tham chiếu tới phần tử của mảng

– Để tham chiếu tới phần tử của mảng ta gọi theo cấu trúc: Tên_biến[chỉ số]

VD: Tham chiếu đến phần tử thứ 20 trong mảng A ta viết A[20].

d. Một số ví dụ

– Bài 1: Viết CT tạo mảng A gồm N (N\le≤100) số nguyên. Tính tổng các phần tử của mảng là bội của một số nguyên dương k cho trước.

Var  S, n, k, i: integer;
A: array[1..100] of integer;
Write(‘Nhap n = ’);
{tao mang}
For i:=1 To n Do
write(‘phan tu thu ’,i,’ =’);
write(‘Nhap k = ’);
S:= 0; {khoi tao S ban dau}
{tinh tong}
For i:=1 To n Do
If A[i] mod k = 0 Then S:= S + A[i];
Writeln(‘Tong can tinh la ’, S);

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

a. Khái niệm mảng 2 chiều

Xét bài toán: Bảng nhân: Hãy viết chương trình in ra bảng nhân như sau

1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
8 16 24 32 40 48 56 64 72 80
9 18 27 36 45 54 63 72 81 90

=> Các bước cần thực hiện khi sử dụng mảng 1 chiều để thực hiện bài toán trên:

– Cần sử dụng 9 mảng 1 chiều, mỗi mảng lưu 1 hàng của bảng nhân => Khai báo 9 biến mảng

=> Nhược điểm: Phải khai báo nhiều biến, chương trình phải viết nhiều lệnh để tạo và in giá trị của mảng.

=> Giải pháp: Coi mỗi mảng một chiều là 1 phần tử và ghép 9 mảng 1 chiều trên thành 1 mảng 2 chiều.

* Khái niệm mảng hai chiều:

– Mảng hai chiều là mảng một chiều mà mỗi phần tử của nó lại là mảng một chiều.

– Mảng hai chiều là bảng các phần tử cùng kiểu

* Các yếu tố xác định mảng hai chiều:

  • Tên 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ử.

b. Cách Khai báo:

– Có hai cách khai báo biến mảng 2 chiều:

  • Cách 1: Khai báo trực tiếp:

                     VAR <tênbiếnmảng>ARRAY [kiểu chỉ số hàng, kiểu chỉ số cột] OF <kiểu phần tử>;

  • Cách 2: Khai báo gián tiếp:

                     TYPE <tên kiểu mảng> = ARRAY [kiểu chỉ số hàng, kiểu chỉ số cột] OF <kiểu phần tử>;

                     VAR <tên biến mảng> <tên kiểu mảng>;

c. Tham chiếu đến một phần tử của mảng hai chiều:

                     TÊN_BIẾN[chỉ số hàng, chỉ số cột]

d. Các ví dụ:

– Ví dụ 1: Viết chương trình tạo và in mảng hai chiều gồm m hàng, n cột.

program Tao_in_mang;
var i, j, m, n: integer;
A: array[1..100,1..100] of integer;
write(‘Nhap so hang m = ‘); readln(m);
write(‘Nhap so cot n = ‘); readln(n);
{Tạo mảng}
for i:= 1 to m do for j:= 1 to n do
write(‘Nhap A[‘,i, ‘,’,j,’]=’);
readln(A[i, j]);
{In mảng}
for i:= 1 to m do
for j:= 1 to n do write(A[i, j]:4);


  1. each time i used to read smaller articles or reviews that as
    well clear their motive, and that is also happening with this piece of writing which I am reading now.

  2. Does your site have a contact page? I’m having trouble locating it but, I’d like to shoot you an e-mail.
    I’ve got some creative ideas for your blog you might be interested in hearing.
    Either way, great website and I look forward to seeing
    it develop over time.

  3. Its like you read my mind! You seem to know so much about this, like you wrote the book in it or something.
    I think that you could do with some pics to drive the message
    home a little bit, but instead of that, this is fantastic blog.
    An excellent read. I’ll definitely be back.

  4. I really like what you guys are up too. This sort of clever
    work and coverage! Keep up the superb works guys I’ve incorporated you
    guys to my personal blogroll.

  5. I’ll immediately grab your rss feed as I can’t in finding
    your e-mail subscription link or newsletter service.
    Do you’ve any? Please allow me recognize so that I
    could subscribe. Thanks.

  6. Hello there! This article couldn’t be written any better!
    Reading through this article reminds me of my previous roommate!
    He always kept preaching about this. I will forward this
    article to him. Pretty sure he’s going to have a great read.
    Thank you for sharing!

  7. Spot on with this write-up, I absolutely feel this site needs a lot more attention.
    I’ll probably be returning to read through more, thanks for the advice!

  8. hey there and thank you for your info – I have definitely picked up anything
    new from right here. I did however expertise several technical issues using
    this site, since I experienced to reload the site many times previous
    to I could get it to load correctly. I had been wondering if your hosting is
    OK? Not that I’m complaining, but sluggish loading instances times will very frequently affect your placement in google and
    can damage your high-quality score if advertising and marketing with Adwords.
    Well I am adding this RSS to my e-mail and can look out for much
    more of your respective exciting content. Make sure you update this again very soon.


Please enter your comment!
Please enter your name here