Практическая работа № 13 &quot

advertisement
Практикум по программированию на Pascal
МОУ СОШ № 3 ОИ и ВТ
Практическая работа № 11
«Массивы»
Мы подошли к одной из самых сложных для начинающих тем в программировании. И раскрыть ее
постараемся как можно более доходчиво, пусть не совсем научными терминами, но понятно, поскольку без
понимания массивов дорога в программирование закрыта.
Но и без умных определений не обойтись.
Итак, массив — это набор однородных данных (чисел, символов, слов), имеющий имя и
последовательную нумерацию его элементов.
Например, список фамилий учеников вашего класса — массив, численные данные о среднесуточной
температуре за месяц — массив, буквы русского алфавита — массив.
Формат описания массива:
<имя массива>: array [<кол-во >] of <тип комп>;
где:
<имя массива> - идентификатор массива
array
- массив
<кол-во> - количество элементов в массиве
of
- для
<тип > - описание типа переменных в массиве (real, integer и т.д.),
Например, в группе 4 человека, массив — это фамилии учеников. Мы тогда должны в разделе описания
переменных после слова var объявить массив:
Fam : array [1..4] of String;
В этом случае компьютер в памяти отводит некую область из 4 ячеек, которую всю и называет Fam. Кроме
того, эти ячейки нумеруются натуральными числами, начиная с 1. Подобную процедуру, да и сам массив,
можно сравнить с одноэтажной улицей в деревне или маленьком городке. Построили на улице 4 дома,
назвали улицу Fam (имя массива дается по тем же правилам, что и имя переменной), пронумеровали дома
и заселили туда жильцов (рис. 4.74).
Рис. 1. Массив Fam из четырех элементов.
Из этого следует, что:
 у массива есть имя, которое дает программист;
 у массива есть тип, который определяет тип содержащихся
в массиве переменных;
 у массива есть размерность, т. е. количество составляющих его элементов;
 у массива есть сквозная последовательная индексация составляющих его элементов;
 у каждого элемента массива есть значение (в нашем случае это фамилия).
Необходимость в массивах возникает всякий раз, когда при решении задачи приходится иметь дело
с большим, но конечным количеством однотипных упорядоченных данных.
Индекс определяет положение элемента в массиве. Например, обратиться к третьему элементу
массива Fam можно написав имя массива и его индекс: Fam[3].
Каждый элемент массива описывается в общем виде как <имя массива>[i] ( Пример: Fam[i]).
Пример:
 Описание массива, состоящего из 100
 Описание массива годов до н.э.
элементов.
god: array [-553 .. -1] of integer;
а, с: array [1..100] of real;
 Описание символьного массива, состоящего
b : array [1..100] of integer;
из 5 элементов, каждый элемент имеет длину
 Описание массива по годам с 1901 по
строки, содержащую 10 символов.
2000.
name: array [1..5] of string (10);
vek: array [1901..2000] of integer; .
Каждому массиву можно дать имя с помощью описания типа, так что указанные массивы
можно ввести в употребление с помощью следующего фрагмента программы:
type
границы = 1..100;
вектор = array [границы] of real;
Индексами элементов массива могут являться не только целые числа, но и имена - например:
название месяцев года.
type
Практикум по программированию на Pascal
МОУ СОШ № 3 ОИ и ВТ
месяц= (январь, февраль, март, апрель, май, июнь, август, сентябрь, октябрь, ноябрь,
декабрь);
Тогда массивы являющиеся по своему смыслу векторами среднемесячных температур, можно определить
следующим образом:
var
t: array [месяц] of real;
Частичные
переменные,
обозначающие
температуру конкретного месяца, выглядят следующим
образом:
t [январь] ,t [февраль] ,t:[март] ,....., t [декабрь]
Ввод/вывод значений элементов массива
Заполнение элементов массива с клавиатуры,
вывод в столбик.
Задача. Получить и вывести на экран массив,
состоящий из 10 вещественных чисел. Нарисовать
блок-схему.
program zadacha; {ввод-вывод элементов массива}
var
a: array [1..10] of real;
i: integer;
begin
for i:=1 to 10 do
begin
writeln ('ввести', i, ' -элемент массива ') ;
read (a [i]) ;
end;
for i:=1 to 10 do
writeln (a[i]:4)
I.
end.
Заполнение элементов массива по
формуле
Задача. Получить и вывести на экран массив,
состоящий из 10 вещественных чисел, где каждый
II.
элемент вычисляется по формуле:
a[i ] 
i2  1
.
sin i
Нарисовать блок-схему.
program zadacha; {ввод-вывод элементов массива}
var а: array [1..10] of real;
i: integer;
begin
for i:=1 to 10 do
begin
a[i] :=(i*i + 1)/sin (i) ;
write ('A(' ,i, ') = ' ,a[i])
end;
end.
Практикум по программированию на Pascal
МОУ СОШ № 3 ОИ и ВТ
III. Заполнение элементов массива случайными числами.
Задача. Получить и вывести на экран массив, состоящий из 10 целых случайных чисел в
интервале от 0 до 29. Нарисовать блок-схему.
program zadacha; {ввод-вывод элементов массива}
var a: array [1..10] of integer;
i: integer;
begin
randomize;
for i:=1 to 10 do
begin
a [i]:=random(30);
writeln ('A(' , I, ')=', a[i])
end;
end.
Задание 1.
Дан массив А, состоящий из 10 элементов, значения которого вводятся с клавиатуры. Подсчитать
сколько элементов массива имеют значения меньшие некоторой величины t.
Задание 2.
Дан массив А(10). Найти сумму значений элементов массива, больших некоторой величины t.
Задание 3.
3. Дан массив А(30), заполненный датчиком случайных чисел. Найти максимальный элемент
массива.
Домашнее задание № 12. Получить массив W, состоящий из 10 случайных целых чисел,
имеющих значение от 1 до 100. Получить массив R, где каждый элемент создается из массива W
делением соответствующего элемента на его индекс.
Download