пользователей: 21244
предметов: 10456
вопросов: 177505
Конспект-online
зарегистрируйся или войди через vk.com чтобы оставить конспект.
РЕГИСТРАЦИЯ ЭКСКУРСИЯ


Сложные типы данных. Массивы. Ввод и вывод элементов массива

Сложные типы данных языка Паскаль

Рассмотренные нами ранее типы данных называются простыми или
скалярными. Основными свойствами данных этих типов являются неде-
лимость и упорядоченность. Сложные типы данных образуются из про-
стых объединением их некоторую группу, которой присваивается одно
имя и при этом определяется, каким образом можно обратиться к от-
дельному элементу группы. В свою очередь сложные типы данных так-
же могут объединяться в группы.
В языке Паскаль к основным сложным типам данных относятся:
1.Регулярный тип – массив
2.Комбинированный тип – запись
3.Множественный тип – множество
4.Файловый тип – файлы
Таким образом, структуру типов данных языка Паскаль схематиче-
ски можно представить следующим образом:

kvrLmt32amo.jpg

Массивы

В программировании под массивом понимается упорядоченная по-
следовательность однотипных величин, обозначаемых одним именем.
Упорядочение производится по номеру элементов в массиве - индексу.
Индекс записывается в квадратных скобках сразу после имени массива.
Само имя образуется по тем же правилам языка Паскаль, что и для про-
стых типов. В зависимости от количества индексов, однозначно опреде-
ляющих элементы массива, различают одномерные (1 индекс), двумер-
ные (2 индекса), трехмерные и т.д. массивы.
Например.
A – имя массива
A[5] - пятый элемент одномерного массива
A[5,8] – элемент двумерного массива
Одномерные и двумерные массивы имеют наглядное практическое
представление. Примером одномерного массива может служить линей-
ная таблица или вектор:
Таблица-одномернвый массив с именем А:

 

52F1GXiOWfE.jpg

При этом 1-й индекс показывает номер строки, а 2-й индекс - столб-
ца. Например, значение элемента В[2,3] равно -5, а значение Элемента
В[3,2] равно 45.
Таким образом, массив имеет следующие основные характеристи-
ки:
1.Размер – число элементов в массиве;
2.Имя массива.
3.Индексы элементов.
4.Значение элемента.
Характеристики 3 и 4 связаны с конкретным элементом массива
(определяют его). Имя массива и размерность характеризуют массив в
целом. Размерность массива задается при его описании, и при этом в
памяти компьютера резервируется непрерывная область, в которую в
дальнейшем заносятся значения элементов. В языке Паскаль при описа-
нии массива указывается максимально возможное значение элементов,
88
причем это число первоначально определяется в разделе констант, или
непосредственно указывается в диапазоне индексов. При этом память
компьютера расходуется неэффективно в тех случаях, когда при непо-
средственной обработке массива фактически используются массивы, для
многих из которых размерность значительно меньше указанного в опи-
сании числа. Для устранения указанного недостатка и более эффектив-
ного использования памяти нужно использовать динамическую память.
Массив можно описать, либо введя в разделе type соответствующий
тип, либо непосредственно в разделе переменных var:
Общий формат описания:
Type
<имя типа>=array[<диапазон индексов >] of
< тип элементов массива >;
или
var
< имя массива >: [<диапазон индексов >] of
< тип элементов массива >;
Тип индексов может быть любым скалярным, кроме вещественного.
Обычно тип индексов - это ограниченный тип, например.
type
mas1=array[1. . . 30] of integer;
mas2=array[1. . 10,1. . 15] of real;
var
a:mas1;
b:mas2;
или
var
a:array [1 . .30] of integer;
b:array [1. .10,1 . .15] of real;
В любых программах, связанных с обработкой массивов, всегда
присутствует фрагмент ввода элементов массива в память компьютера и
часто фрагмент вывода массива на экран.
Рассмотрим их более подробно, оформив в виде процедур.

а) ввод элементов массива

Ввод элементов массива можно осуществлять двумя способами:
ввод с клавиатуры или с помощью функции случайных чисел. При вводе
с клавиатуры основным повторяющимся оператором будет оператор
read (a [i]) – для одномерного массива
read (b[i,j])- для двумерного массива,
где a , b - имена массивов, i,j – индексы элементов.
89
При этом индексы i,j должны пробегать все свои значения, поэтому
для ввода необходимо организовать цикл с параметром, в качестве кото-
рого будет выступать индекс(ы) переменных. Для двумерного массива
это будут вложенные циклы, причем обычно внешний – по индексу
строки i, а внутренний - по индексу столбца j.Так как мы хотим офор-
мить эти фрагменты в виде процедуры, то входным параметром для нее
будет число элементов массива, а параметром-переменной (результатом)
- сам полученный массив. Описания массивов будут заданы в основной
программе (Считаем, что описаны как выше массивы a , b ).
Процедура ввода:
procedure vvod_odn_mas (n:byte; var a:mas1);
var i: byte;
begin
writeln (‘введите элементы массива через пробел ’)
for i:=1 to n do read (a[i]);
readln;
end;
В некоторых задачах можно не набирать на клавиатуре значения
элементов массива (особенно если их много, а конкретные величины
могут быть произвольными числами из заданного диапазона). Для этого
в любом языке программирования есть возможность получать случай-
ные числа из заданного интервала. В Турбо Паскале случайное число
получается с помощью функции random (m), которая выдает случайное
число от 0 до m-1. Функция random без аргументов генерирует веще-
ственное случайное число из интервала (0,1). Для получения случайного
целого числа из отрезка [a,b] нужно использовать следующее выраже-
ние:
random (b-a+1)+a
Например, если нужно получить число из отрезка [-30,40], то ис-
пользуем выражение random (71)-30. или trunc ((b-a+1)*random + a).
Перед первым обращением к функции случайных чисел необходимо
инициализировать датчик случайных чисел с помощью процедуры ran-
domize. Обычно эта процедура выполняется один раз в начале програм-
мы. Рассмотрим процедуру формирования элементов двумерного масси-
ва b с помощью случайных чисел (считаем, что тип массива описан в
программе, как выше):
procedure vvod_dvum_sluch (n,m:byte; var b:mas2)
var i,j:byte;
begin
for i:=1 to n do
for j:=1 to m do
90
b [i,j]:=random (101);
end;
Массив, сформированный с помощью функции случайных чи-
сел, обычно надо вывести на экран, чтобы видеть значения элементов, с
которыми программа работает дальше. Вывод получившихся значений
можно осуществлять в той же процедуре, либо оформить отдельно:
procedure print_dvum_mas (n,m:byte; var b:mas2);
var i,j : byte;
begin
for i:=1 to n do
begin
for j:=1 to m do
write (b[i,j]:5); {вывод одной строки – внутр цикл}
writeln {перевод строки}
end; {конец внешнего цикла}
end; {конец процедуры}
Замечание 1: Так как в описаниях массивов должно быть указано
количество элементов в массиве (в диапазоне индексов), то это значение
можно указать в разделе констант, либо непосредственно задавать при
описании. В обоих случаях необходимо брать число «с запасом», а кон-
кретное количество элементов в массиве вводить с клавиатуры при каж-
дом запуске программы. Очевидно, что последнее значение не должно
превышать зарезервированное в константе.

 

 

 


29.06.2016; 22:30
хиты: 4
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2016. All Rights Reserved. помощь