Хранение однотипных данных. Массивы Урок 1
Повторим! Как записываются на языке паскаль следующие элементы блок-схемы.
Ввод: a,b Read(a,b);write(введите a b ); k = k + 1 K:=k +1; счетчик кол-ва шагов Вывод: Х write( x=,x); If a=0 then Х:=a else x:=2/a; a =0 x := a x:=2/a да нет x=1,N For x:=1 to N do begin команды тела цикла end; While A>0 do begin команды тела цикла end; A > 0 да нет команды тела цикла
Вспомним, как заполняется календарь наблюдений, вычисляется средняя температура за месяц и т.д..
начало k=1,5 S:=S + t Ввод: t конец s:=0 Вывод: s program Pr_2_2; {Вычисление суммы чисел введенных с клавиатуры} uses crt; Var k: integer; t,S :real; Begin S:=0; For k:=1 to 5 do begin write (Введите t '); readln ( t ); S:=S+ t ; end; writeln(S = ',S); End. Введем Результат S = 9 Sr:=S/5; writeln(среднее = ',Sr); Sr,
А если требуется определить сколько раз температура была ниже (выше) среднего???!!! Следовательно исходные данные, введенные в начале программы, необходимо сохранить, хотя бы до окончания всех требуемых расчетов!!! Для хранения однотипных данных можно использовать массивы.
Массив – группа элементов одного типа, объединенных под общим именем. Индекс – что-то (чаще всего номер), что позволяет отличать элементы массива один от другого и обращаться к ним.
Обычную книгу можно считать своего рода массивом. Почему? Книга состоит из множества однотипных элементов – страниц, у каждой страницы есть номер (индекс), все страницы объединены под одним названием (название книги)
Дом также можно считать массивом. Почему? Дому соответствует один почтовый адрес (город, улица, номер). Элементами дома можно считать квартиры, у каждой из которых есть номер (индекс).
Шахматную доску можно считать массивом. Почему? Доска состоит из клеток, каждая клетка обозначается буквой и цифрой (двойной индекс).
Спортивную команду можно считать «массивом». Почему? Команда состоит из нескольких людей, у каждого из них есть номер (индекс).
Массив – совокупность однотипных данных, хранящихся в последовательных ячейках памяти и имеющих общее имя. Ячейки - элементы массива. Все элементы имеют один и тот же тип. Порядковый номер - индекс элемента массива. Все элементы пронумерованы по порядку T
Одномерный массив (вектор) T – имя массива, числа в ячейках памяти – элементы массива T [3] := -2 Значение 3-го элемента массива Обозначение 3-го элемента массива Описание массива на языке Паскаль «Имя массива» : array [ границы изменения индекса ] of «тип элементов» Например: T : array [1..8] of integer Индекс изменяется в интервале от 1 до 8 Тип элементов массива - целый T индекс элемента массива элемент массива
1. Описание массива 2. Заполнение массива (ввод информации в ячейки) 3. Вывод массива на экран (вывод информации из ячеек) Для работы с массивами необходимо сначала освоить следующее действия:
Описание массива: если имя массива A, количество элементов N ( например N=5 ), можно рассмотреть следующие типы Var A : array [1..N] of real; 1. Массив целых чисел 2. Массив вещественных чисел Var A : array [1..N] of integer; 3. Массив, элементы которого содержат текст – строковый тип. Var A : array [1..N] of string; А А (N = 5) Понедельник А ВторникСредаПятницаЧетверг
Заполнение массива: Способ 1 - использование констант. Program Palitra; Uses CRT; {Black=0; Blue=1; Green=2; Cyan=3; Red=4; Magenta=5; Brown=6; lightGray=7; и т.д.} Const {Заполнение массива} Color: array [1.. 7] of string=('Blue', 'Green', 'Cyan', 'Red', 'Magenta', 'Brown', 'LightGray'); Var i:integer; Begin {Для вывода эл. массива используем цикл, для изменения цвета используем i } textsize (15); for i:=1 to 7 do begin textcolor(i); write (Color[i]:10); end; End. Пример Palitra i=1,7 Вывод: Color [i] Установка цвета шрифта
Заполнение массива: Способ 2 - Ввод данных с клавиатуры. program Pogoda; uses CRT; Var T: array [1.. 7] of real; {Описываем массив } k:integer; Begin Writeln(Введите значения температуры за первую неделю марта ); for k:=1 to 7 do begin {Для ввода используем цикл} Write(k, -ое число, температура=); Readln(T[k]); end; Пример Pogoda T for k:=1 to 7 do begin {Для вывода используем цикл} Write(T[k]:5:1); end; End.
program Generator; uses crt; Var A:array[1..10] of integer; k: integer; Begin Randomize; For k:=1 to 10 do begin {заполнение и печать в одном цикле} A[k] := Random(41); Write(A[k] :5); end; end. Заполнение массива: Способ 3 - Использование генератора случайных чисел Пример Generator Случайное число из интервала (a, b) := a + random (b – a + 1) Заполнение массива A десятью случайными числами из интервала (-20, 20) и вывод массива на экран в одном цикле. начало k=1,10 Инициализация random Вывод: A[k] конец k=1,10 A[k]:=-20+random(41)
Для вывода массива необходимо использовать цикл. Массив можно выводить в виде строки или в виде столбца. Способ 2 - Ввод данных с клавиатуры. Способ 3 - Использование генератора случайных чисел. Заполнение массива: Вывод массива: Способ 1 - Использование констант. Подведем итоги:
1. В программе Palitra заполнить новый массив Cvet названиями цветов на русском ( синий зеленый и т.д.). Организовать вывод на экран ( в 3 столбика ): число ( индекс ), служебное название цвета ( из массива Color ), русское название цвета ( из массива Cvet ). ( Palitra_1) Palitra_1 2. В программе Pogoda, используя способ 1 заполнить новый массив Den ( понедельник вторник и т.д.). Организовать вывод на экран ( в 3 столбика ): число ( индекс ), название дня недели ( из массива Den ) и температуру ( из массива T ). ( Pogoda_1) Pogoda 3. В программе Generator, используя способ 1 заполнить новый массив Fam ( 10 любых фамилий ), массив А заполнить случайными числами из интервала (2, 5), выводить на экран (в 2 столбика ): фамилию ( из массива Fam ) и оценку ( из массива А ). ( Generator_1) Generator_1
Д/З Используя программу Palitra написать программу Raduga, выводящую названия основных цветов (Красный, Оранжевый и т.д.), так чтобы название совпадало с цветом текста. Raduga