Chương trình pascal kiểu mảng

1. 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ố.

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:

+ Khai báo trực tiếp:

Var: array[]of ;

+ Khai báo gián tiếp:

Type =array[]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). Nên đánh chỉ số từ 1;

+ 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ố]

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

2. Các thao tác với kiểu mảng một chiều.

a. Cách nhập mảng A:

write(‘Nhap so phan tu cua mang: ’);readln(n);

write(‘Nhap gia tri cho tung phan tu: ’);

for i:=1 to n do

    begin   

        write(‘Phan tu thu ’ , i , ‘ la: ’); {write(‘A[‘,I,’]=’);}

        readln(A[i]);

    end;

b. Cách in mảng A ra màn hình:

writeln(‘Mang vua nhap la: ’);

for i:=1 to n do write(A[i]:4);

3. Ví dụ về mảng một chiều

Bài 1: Nhập vào một dãy số nguyên, tìm số nhỏ nhất trong dãy?

Ý tưởng: Min:=A[1]; Duyệt từ đầu dãy đến cuối dãy, so sánh các phần tử với Min, nếu A[i]

Giải quyết bài toán:

Var A:array[1..200] of integer;

          I, n: byte; min:integer;

Begin

write(‘Nhap so phan tu cua mang: ’);readln(n);

write(‘Nhap gia tri cho tung phan tu: ’);

for i:=1 to n do

    begin   

        write(‘Phan tu thu ’ , i , ‘ la: ’); {write(‘A[‘,I,’]=’);}

        readln(A[i]);

    end;

min:=A[1]; For i:=2 to n do

                   if A[i]

write(‘So nho nhat trong mang :’,min);

readln;

END.

Bài 1: Nhập vào một dãy số nguyên, sắp xếp dãy thành dãy không giảm (tăng dần) theo phương pháp nổi bọt (Bubble sort)

Ý tưởng: Để sắp dãy có n phần tử, thực hiện qua n-1 lượt. Ở mỗi lượt, duyệt từ đầu dãy đến cuối dãy (cần xét ở lượt đó), cứ so sánh 2 phần tử kề nhau, nếu phần tử đứng trước lớn hơn phần tử đứng sau thì đổi chỗ chúng.

Giải quyết bài toán.

Var A:array[1..200] of integer;

          J,I, n: byte; tg:integer;

Begin

write(‘Nhap so phan tu cua mang: ’); readln(n);

write(‘Nhap gia tri cho tung phan tu: ’);

for i:=1 to n do

    begin   

        write(‘Phan tu thu ’ , i , ‘ la: ’); {write(‘A[‘,I,’]=’);}

        readln(A[i]);

    end;

For i:=n downto 2 do

For j:=1 to  to i-1 do

                   if A[j]>Ạ[j+1] then

begin tg:=A[j];A[j]:=A[j+1];A[j+1]:=tg;end;

writeln(‘Mang sau khi sap xep la: ’);

for i:=1 to n do write(A[i],’ ‘);

readln;

END.