МАССИВЫ
В практической деятельности человека часто используются таблицы и списки. Например: Список учеников в журнале; Список среднесуточной температуры месяца; Таблица умножения. 1. Иванов 2. Петров 3. Сидоров 4. Кошкин 5. Мышкин
В языках программирования подобные типы данных описываются с помощью массивов. это набор однотипных данных, к которым можно обратиться с помощью единственного имени Каждое значение в массиве называется элементом. Номер элемента в списке называется индексом. Элементы представляют собой символьные или числовые значения, которые можно использовать в выражениях ЯП ПАСКАЛЬ МАССИВ
В качестве иллюстрации можете представить себе шкаф, имеющий множество нумерованных ящиков. Шкаф – это массив. Ящики – это индексы. Содержимое ящиков – элементы массива. Доступ к содержимому конкретного ящика (элемента массива) осуществляется после указания шкафа –имени массива – и номера ящика – индекса массива Шкаф ОДНОМЕРНЫЙ МАССИВ
Чтобы представить себе двумерный массив, вспомните зрительный зал кинотеатра. Название кинотеатра – имя массива. Ряд, место - индексы. Человек на определенном месте – элемент массива. ДВУМЕРНЫЙ МАССИВ
Для того, чтобы использовать массив в программе, его нужно описать в разделе описаний: Var имя_массива : array [ размер ] of тип_элементов; Имя массива выбираем по основным правилам имен идентификаторов. Размер: [начальный_индекс.. конечнооый_индекс ] [1..5 ] [ ] [ ] [нач_индекс.. конечноо_индекс, нач_индекс.. конечноо_индекс ] Например, Var Name : array [1..30] of string; Temperature : array [1..31] of real; Kino : array [1..25, 1..40] of string; Количество столбцов Количество строк
Обращение к конкретному элементу массива осуществляется путем указания имени массива и индекса этого элемента в [ ] Name[15], Temperature[10], Kino[5,6] В качестве индексов массивов используются переменные целого типа: Name[i], Temperature[k], Kino[i,j] Это свойство дает возможность обрабатывать массивы в циклах, в которых индекс массива является одновременно и счетчиком цикла. Элементы массивов используются в выражениях также, как и обычные переменные: Name[15]:= Иванов ; Sum:=Sum+Temperature[10]; Kino[5,6]:=Свободно ;
ТРИ ЭТАПА РАБОТЫ С МАССИВАМИ 1. Заполнение массива данными 2. Преобразование массива (действия с элементами массива) 3. Вывод массива или отдельных данных на экран
Способы ввода данных в массив: С клавиатуры; С помощью генератора случайных чисел; С помощью вычисления элементов.
Таблица Линейная (содержит одну строку или один столбец) Прямоугольная ( содержит N строк, M столбцов) Например, температура воздуха за неделю Например, значение функции y=x 2 x y Строки нумеруются сверху вниз, столбцы слева направо.
Заполнение массива с помощью команды «присвоить» Этот способ применяется в том случае, когда информация в таблице не меняется. Часть программы, где организовывается заполнение массива оформляют с помощью подпрограмм. В подпрограмме каждому элементу массива присваивается определенное значение. Аксенов Бобров Веснин Гончаров Давыдов TEMP: array [1..7] of integer; SP: array [1..5] of string; BEGIN TEMP[1]:=10; TEMP[2]:=12; TEMP[3]:=8; TEMP[4]:=10; TEMP[5]:=9; TEMP[6]:=8; TEMP[7]:=8; BEGIN SP[1]:=Аксенов; SP[2]:=Бобров; SP[3]:=Веснин; SP[4]:=Гончаров; SP[5]:=Давыдов;
Заполнение массива датчиком случайных чисел Этот способ заполнения используется тогда, когда важно не нахождение результата работы программы, а сам процесс (правильность алгоритма). RANDOM(N) – вещественное число из [0,N); TRUNC(RANDOM(N))- целое число из [0,N) TRUNC(RANDOM(N)+1)– целое число из [0,N] TRUNC(RANDOM(B-A)+A)– целое число из [A,B) BEGIN for i:=1 to 7 do begin TEMP [i]:= trunc(random(10)); end;
В языке программирования Паскаль для генерации псевдослучайных чисел в заданных диапазонах используется функция random. Перед ее использованием обычно выполняется процедура инициализации датчика случайных чисел - randomize; иначе программа всегда будет выдавать один и тот же результат. Randomize задает начальное значение последовательности, от которого вычисляются все последующие. При каждом запуске программы это значение будет разным, а значит и результат работы функции random будет различным. Функция random генерирует случайное число в диапазоне от 0 (включительно) до единицы. Если в скобках указан аргумент, то от 0 до значения указанного в скобках (не включая само значение). Так выражение random (10), говорит о том, что будет получено любое число в диапазоне [0, 10). Если требуется получать значения в каком-либо другом диапазоне (не от нуля), то прибегают к математической хитрости. Например, чтобы получить случайное число от -100 до 100 достаточно записать такое выражение: random (200) – 100. В результате, сначала будет получено число из диапазона [0, 199], а затем из него будет вычтена сотня. И если случайное число было меньше 100, то результат выражения будет отрицательным.
Печать линейного массива Линейную таблицу можно распечатать на экране в строчку или в столбик. For i:=1 to 7 do begin write (TEMP[i] :5); end; For i:=1 to 7 do begin writeln(TEMP[i]); end;
План программы для работы с массивами Program Task; Uses Crt; const n=….; (количество элементов массива) var : array [1..n] of ; i:integer;…………. BEGIN writeln(Программу составили...'); {заполнение массива одним из способов} for i:=1 to n do begin …… end; {Печать массива одним из способов} for i:=1 to n do begin ……. end; Команды обработки массива Вывод результата END.
Рассмотрим работу с массивом на примерах: Задача 1. Написать программу, которая сначала должна обеспечить ввод 5 чисел в одномерный массив, затем вычислить их сумму и вывести её на экран.
Program Sum_mas; uses Crt; Var i: integer; Sum : real; M : array [1..5] of Real; begin Clrscr; For i:=1 to 5 do begin write ('m[',i,']='); readln(m[i]); end; sum:=0; For i:=1 to 5 do Sum:=sum+m[i]; Writeln ('Sum=',sum:6:2); readln; end. Начало i:=1, 5 Ввести m[i] Sum:=0 i:=1, 5 Sum:=sum+m[i] Вывести Sum Конец
Задача 2. Написать программу, которая вычисляет среднюю за неделю температуру воздуха. Исходные данные должны вводиться во время работы программы. Рекомендуемый вид экрана при работе программы: Введите температуру воздуха за неделю. 1 день= 2 2 день= 0 3 день= -3 4 день= 1 5 день= 3 6 день= -2 7 день= 0 Средняя температура: 0.00 град. Задание для практической работы
1. Массив – это структура данных, представляющая собой совокупность элементов одного типа. 2. Массив должен быть объявлен в разделе объявления переменных. 3. Доступ к элементу массива осуществляется путем указания имени массива и индекса (номера) элемента. 4. Для ввода, вывода и обработки массивов удобно применять команды цикла. Итоги:
Составление программ на тему «Массивы»
Program Random_mas; uses Crt; Var i: integer; Ran : array [1..10] of integer; begin Clrscr; Randomize; For i:=1 to 10 do begin ran[i]:=random(100); writeln(ran[i]); end; readln; end. Задача 3. Заполнить массив случайными числами и вывести его на экран компьютера.
Program Poisk_mas; uses Crt; Var i, x: integer; A : array [1..20] of integer; c: string; begin Clrscr; Randomize; Write ('Zadayte chislo X '); readln (x); c:='v massive net chisla x'; For i:=1 to 20 do begin a[i]:=random(10); writeln(A[i]); if a[i]=x then c:='v massive est chislo x'; end; writeln (c); readln; end. Задача 4. Определить, содержит ли массив A[1..20] случайных чисел число Х, введенное с клавиатуры.
Program Max_mas; uses Crt; Var i:integer; max: real; A : array [1..10] of real; begin Clrscr; For i:=1 to 10 do begin a[i]:=sin(i)*sqr(i); writeln(A[i]:8:3); end; max:=A[1]; For i:=2 to 10 do if a[i]> max then max:=a[i]; writeln; writeln ('max=', max:8:3); readln; end. Задача 5. Заполнить массив значениями, вычисляемыми по формуле: a[i]:=sin i *i 2 Вывести элементы этого массива на экран компьютера и найти максимальное значение среди них.
Задача 6. Написать программу, которая вводит с клавиатуры одномерный массив из 5 целых чисел и выводит количество ненулевых элементов. Перед вводом каждого элемента должна появляться подсказка с номером. Рекомендуемый вид экрана при работе программы: После ввода каждого числа нажмите A[1]= 12 A[2]= 0 A[3]= -3 A[4]= 1 A[5]= 0 В массива 3 ненулевых элемента Задание для практической работы
Задача 3 Написать программу, которая определяет, сколько раз в массиве случайных чисел A[1..100] встречается число Х, введенное с клавиатуры. Задание для практической работы