Страницы

Уроки 13,14. Одномерный массив. Вывод элементов


Одномерные массивы. Формирование массива. Функция RANDOM

Описание типов данных

При описании переменных через двоеточие указывается ее тип. До этого занятия нами использовались простые типы данных, например, Integer и Boolean. Типы данных Integer и Boolean относятся к простым типам (простые, потому что не могут состоять ни из каких других типов). Тип переменной определяет множество значений, которые она может принимать, и операции, которые могут быть над ней выполнены.

Пример 1. Необходимо найти сумму 5 целых чисел.

Program z1;
Var a1,а2,аЗ,а4,а5,s: Integer;
Begin
WriteLn (' Введите пять целых чисел');
ReadLn(a1,а2,аЗ,а4,а5) ;
s:= а1+а2+аЗ+а4+а5;
WriteLn ('Иx сумма равна ' ,s)
End.

А если требуется найти сумму 30 целых чисел? Решение по аналогии требует введения 30 однотипных переменных. При увеличении количества слагаемых задача становится малоприятной при оформлении и вычислении. Для решения задач использующих большие блоки однотипной информации удобно использовать структурированный тип данных – массив.


Массив — это последовательность однотипных элементов, объединенных одним именем.
Обращение к элементам массива осуществляется с помощью указания имени массива и номеров элементов. 

Описание массива в общем виде выглядит так:
Имя_массива: array [iнач..iкон] Of тип_элементов;

Array — служебное слово (в переводе с английского означает «массив», «набор»); [iнач..iкон] — в квадратных скобках указывается номер первого элемента, затем, после двух точек, номер последнего элемента массива – любой перечисляемый тип данных, iнач<iкон; 
Of — служебное слово (в переводе с английского «из»); 
 Integer, real... — тип элементов массива
iкон –iнач+1размерность массива – количество его элементов.

Опишем массив, состоящий из 30 целых чисел:
Var a:array [1..30] Of integer;

Для обозначения элементов этого массива используется один индекс: a[1], a[2], a[3],.., a[30]. Такой массив называется одномерный.
 a[1]- имя 1-го элемента массива, a[2]- имя 2-го элемента массива, a[30]- имя 30-го элемента массива. 

Для работы с массивами используют цикл (чаще for), тогда возникает обобщенное имя элементов массива a[i], где i должно изменяться согласно диапазону индексов элементов.

Пример 2. Необходимо найти сумму 30 целых чисел.

Program z2;
Var a:array[1..30] Of Integer; {описание массива}
s,i: Integer;
Begin
WriteLn ('Введите 30 чисел:');
For i:=1 To 30 Do ReadLn (a[i] ) ; {формирование массива; значения элементов с клавиатуры}
s: = 0 ;
For i:=1 To 30 Do s:=s+a[i] ; {суммирование элементов массива}
WriteLn(s);
End.



Формирование массива

1 способ: присваивание элементам значений
Var a:array [1..5] Of integer;
Begin
a[1]:=4; a[2]:=-2; a[3]:=0; a[4]:=-4; a[5]:=0;

2 способ: ввод значений элементам с клавиатуры
Var a:array[1..10] of real;
begin
For i:=1 To 10 Do ReadLn (a[i]);

3 способ: массив-константа
Const a:array [1..5] Of real= (4.1,-2/5,0,-1.04,0);
Var 
Begin

4 способ: используя генератор случайных чисел

Рассмотрим функцию random, она генерирует случайное число от 0 до 1.
Функция random(n) - генерирует случайное число от 0 до n-1.
Если мы хотим получить случайное число на промежутке от a до b, запишем формулу random(b-a+1)+a.

Пример: получим случайные числа на промежутке [-10;20].
Запишем функцию random(20-(-10)+1)+(-10), упростим: random(31)-10.

Задание 1. Сформировать массив из 10 случайных целых чисел на отрезке [-10;10].

        Посмотреть решение       

Экспериментальный раздел работы


1. Запустите несколько раз программу. (На экране мы видим одну и ту же последовательность чисел в диапазоне от -10 до 10.)

2. Запишите в программе после слова begin процедуру RandomizeRandomize - процедура инициализации датчика случайных чисел («встряхивания множества чисел»)

3. Повторите многократный запуск программы. Последовательности чисел на экране разные.

Функция Random, генерирует в первом случае числа (каким-то неизвестным нам образом)  от -10 до 10. Во втором случае эти начальные числа меняются от запуска к запуску (процедурой Randomize) и последовательности получаются различные.

Задания

1. Определите, тип величины и промежуток значений:
a) X:=random (15)-12;
b) X:=random +7;
c) y:=random (100)+10;

2. Измените программу формирования и вывода массива, если массив должен содержать:
a) 12 вещественных чисел на [-1;0);
b) 23 целых числа на [-10;20);
c) 23 целых числа на [-5;15].




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


На экран при работе с массивами можно выводить:

1. Массив целиком от первого до последнего элемента.
for i:=1 to n do
write(a[i],'  '); {вывод элементов в строку через пробел}

for i:=1 to n do
writeln(a[i]); {вывод элементов в столбец}

2. Массив целиком в обратном порядке от последнего до первого элемента.
for i:=n downto 1 do
write(a[i]:6:2); {вывод элементов в обратном порядке в строку}

3. Фрагмент массива (часть элементов от m-го до k-го элемента, где m,k-номера в пределах диапазона индексов массива).
for i:=m to k do
write(a[i],'  '); {вывод элементов в строку через пробел}

Пример 3. Сформировать массив из 15 целых чисел на отрезке [10;50].Вывести их на экран.

Program z4;
Var a:Array[1..15] Of Integer;
I:Integer;
Begin
Randomize;
For i:=1 to 15 Do a[i]:=Random(41)+10;
For i:=1 To 15 Do Write(a[i]);
End.


Экспериментальный раздел работы


1. Выполните программу и определите проблему при выводе.

2. Измените запись, используя форматный вывод значений элементов.

3. Измените запись, чтобы значения элементов выводились через запятую.

4. Измените программу для работы с вещественными числами более 5.

5. Измените программу для вывода последних пяти элементов массива.

6. Измените программу для вывода последних пяти элементов массива в обратном порядке.

7. Измените программу для вывода суммы элементов массива.

8. Измените программу для вывода произведения пяти первых элементов массива.




Задания для самостоятельного решения


1. Запишите, используя функцию случайных чисел, заполнить числовой массив А, причем элементы массива должны представлять собой:
 а) числа из отрезка [10,11)
 b) числа из отрезка [0,100)
 c) числа из отрезка [-4,25]
 d) двузначные числа.

2. Составьте программу формирования массива из 20 целых чисел от -5 до 15. Выведите сумму значений и элементы массива в строку форматным способом.


3. Составить программу удвоения значений элементов и вывода массива на экран в строку. Массив-константа (4,6,12,-5,7,0,-4,3,-4)/

4. Составить массив, в котором первые два элемента задаются с клавиатуры, а все последующие равны сумме двух предыдущих.


5. Найти значения и номера всех отрицательных элементов массива 25 целых чисел от -12 до 12.