Суббота, 12.07.2025, 00:09
KORCHEMINFOO
Приветствую Вас Гость | RSS
Меню сайта
ВАЖНО!!!
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Традиционно к структурированным типам данных в языке Pascal относят массивы, множества и записи. Иногда структурированным считают строковый тип. На самом деле строки занимают промежуточное положение между простыми и структурированными типами, но т.к. большинство их свойств реализуются как свойства сложных данных, то строки рассматриваются как структурированный тип.

Массивы. 

Объявление переменной массива происходит в разделе var. При этом используется зарезервированное слово array, указывается тип массива и его размерность перечислением индексов, а также объявляется тип данных в массиве.
 
Пример 1:

Ввод и вывод одномерных массивов 

Массивы нужно вводить (и выводить) поэлементно. Почему? Да потому, что оператор readln способен прочитать только значения типов integer, real и char и их простых производных. А массив - это несколько переменных, и их нужно читать по одной.
Массивы вводят и выводят с помощью цикла (понятно, почему ввод массива - циклическое действие?). Для любых одномерных массивов эти циклы очень похожи. Их общий вид:

for <переменная цикла> := <нижний индекс> to <верхний индекс> do
begin
write('Введите <имя массива>[', <переменная цикла>, ']=');
readln(<имя массива>[<переменная цикла>]);
end; {ввод}

for <переменная цикла> := <нижний индекс> to <верхний индекс> do
writeln('<имя массива>[', <переменная цикла>, ']=',<имя массива>[<переменная цикла>]);
{вывод}

Здесь: <переменная цикла> должна иметь тип индекса или базовый для него (например, для индекса ограниченного целого типа <переменная цикла> может быть целой).
Замените названия в <> на названия и значения Вашей задачи - и получите нужные циклы ввода и вывода массива.
Например, для массива

var A: array [1..50] of integer;
var i: integer;
они выглядят так:

for i := 1 to 50 do
begin
write('Введите A[', i, ']=');
readln(A[i]);
end; {ввод}

for i := 1 to 50 do
begin
writeln('A[', i, ']=', A[i]);
end; {вывод, begin и end в данном случае необязательны, так как в цикле один оператор.}
 


Ввод и вывод двумерного массива 

Ввод двумерного массива 
Для последовательного ввода элементов одномерного массива мы использовали цикл for, в котором изменяли значение индекса с 1-го до последнего. Но положение элемента в двумерном массиве Паскаля определяется двумя индексами: номером строки и номером столбца. Это значит, что нам нужно будет последовательно изменять номер строки с 1-й до последней и в каждой строке перебирать элементы столбцов с 1-го до последнего. Значит, нам потребуется два цикла for , причем один из них будет вложен в другой. 

Пример программы ввода двумерного массива 
var 
a: Array [1..5, 1..10] of integer;
i, j: integer; { индексы массива } 
begin 
for i :=1 to 5 do {цикл для перебора всех строк} 
for j :=1 to 10 do {перебор всех элементов строки по столбцам} 
readln (a [ i , j ]); {ввод с клавиатуры элемента, стоящего в i -й строке и j -м столбце} 

Двумерный массив Паскаля можно заполнить случайным образом, т.е. использовать функцию random (N), а также присвоить каждому элементу матрицы значение некоторого выражения. Способ заполнения двумерного массива Паскаля выбирается в зависимости от поставленной задачи, но в любом случае должен быть определен каждый элемент в каждой строке и каждом столбце. 

Вывод двумерного массива  на экран.
Вывод элементов двумерного массива Паскаля также осуществляется последовательно, необходимо напечатать элементы каждой строки и каждого столбца. При этом хотелось бы, чтобы элементы, стоящие в одной строке, печатались рядом, т.е. в строку, а элементы столбца располагались один под другим. Для этого необходимо выполнить следующую последовательность действий (рассмотрим фрагмент программы для массива, описанного в предыдущем примере): 


 Пример программы вывода двумерного массива 
for i :=1 to 5 do {цикл для перебора всех строк} 
begin 
for j :=1 to 10 do {перебор всех элементов строки по столбцам} 
write (a [ i , j ]:4); {печать элементов, стоящих в i -й строке матрицы в одной экранной строке, при этом для вывода каждого элемента отводится 4 позиции} 
writeln; {прежде, чем сменить номер строки в матрице, нужно перевести курсор на начало новой экранной строки} 
end ; 

Copyright MyCorp © 2025Сайт создан в системе uCoz