Автор: Пользователь скрыл имя, 29 Октября 2012 в 22:00, творческая работа
Работа содержит презентацию по дисциплине "Информатика"
Алгоритмы
Условие
Ветвления: Инструкция IF
Инструкция CASE
Инструкция FOR
Циклы:
Инструкция WHILE
Инструкция REPEAT
Массивы: Объявление массива
Сортировка массива
- сортировка методом прямого выбора
- сортировка методом прямого обмена
Поиск в массиве
Многомерные массивы
Ошибки при использовании массива
Выход
разработка: Крутченко Т. И.
else writeln (‘Совпадений с образцом нет.’);
end.
Назад
Меню
разработка: Крутченко Т. И.
Алгоритм поиска минимального и максимального (максимального) элемента массива довольно очевиден: делается предположение, что первый элемент массива является минимальным (максимальным), затем остальные элементы массива сравниваются с этим элементом. Если обнаруживается, что проверяемый элемент меньше (больше) принятого за минимальный (максимальный), то этот элемент принимается за минимальный (максимальный) и продолжается проверка оставшихся элементов. Ниже представлена программа поиска минимального элемента в массиве целых чисел.
const
GRANICA = 10;
var
a: array [1 .. GRANICA] of integer; {массив целых чисел}
min: integer; {номер минимального элемента массива}
i: integer; {номер элемента сравниваемого с минимальным}
begin
{здесь инструкции ввода массива}
min:= 1; {пусть первый элемент минимальный}
for i:= 2 to GRANICA do
if a [i] < a [min] then min:= i;
writeln (‘Минимальный элемент массива:’., a [min]);
writeln (‘Номер элемента:’, min);
end.
Поиск минимального (максимального)
элемента массива
Далее
Назад
Меню
разработка: Крутченко Т. И.
Исходные данные для решения многих задач можно представить в табличной форме:
В программе для хранения и обработки
табличных данных можно использовать
совокупность одномерных массивов. Например
таблица результатов
zavod1: array [1..4] of
zavod2: array [1..4] of
zavod3: array [1..4] of
Для подобных случаев Pascal предоставляет более удобную структуру данных - двумерный массив.
В общем виде описание двумерного массива выглядит так:
Имя :array [НижняяГраницаИндекса1..
НижняяГраницаИндекса2..
где Имя - имя массива; array - слово языка Pascal, показывающее, что описываемый элемент данных - массив;
НижняяГраницаИндекса1, ВерхняяГраницаИндекса1, НижняяГраницаИндекса2, ВерхняяГраницаИндекса2 - константы или выражения типа INTEGER, определяющие диапазон изменения индексов и, следовательно, число элементов массива;
Тип - тип элементов массива.
Многомерные массивы
Продукт1 Продукт2 Продукт3 Продукт4
Завод1
Завод2
Завод3
Далее
Назад
Меню
разработка: Крутченко Т. И.
Приведенная выше таблица может быть представлена в виде двумерного массива так:
product : array [1..3, 1..4] of integer
Этот массив состоит из 12 элементов типа INTEGER.
Чтобы использовать элемент массива, нужно указать имя массива и индексы элемента. Первый индекс обычно соответствует номеру строки таблицы, второй - номеру колонки. Так элемент product [2, 3] содержит число продуктов третьего наименования, выпущенных вторым заводом.
Значения элементов двумерных массивов выводят на экран и вводят с клавиатуры, как правило, по строкам, т.е. Сначала все элементы первой строки, затем второй и т.д. Это удобно выполнять при помощи вложенных инструкций FOR. Следующий фрагмент программы выводит на экран значения элементов массива по строкам:
for i:= 1 to 3 do
begin
for j:= 1 to 4 do
write (product [i, j]);
writeln;
end;
Каждый раз, когда внутренний цикл завершается, внешний цикл увеличивает i на единицу, и внутренний цикл выполняется вновь. Таким образом, выводятся все компоненты массива product : product [1, 1], product [1, 2],... product [1, 4], product [2,1], product [2, 2],... product [2, 4] и т.д.
При описании массивов в программе удобно использовать именованные константы как значения верхних границ индексов массива.
Далее
Назад
Меню
разработка: Крутченко Т. И.
Пример:
Представленная ниже программа обрабатывает результаты соревнований по легкой атлетике.
Программа считывает исходные данные,
вводимые с клавиатуры, вычисляет
общее количество медалей и затем
расставляет клубы по порядку
в соответствии с общим количеством
медалей. Для представления данных
о количестве медалей используется
двумерный массив medal, количество строк
которого на единицу больше, чем
количество клубов, а количество столбцов
на единицу больше, чем медалей. Дополнительный
столбец используется для хранения
общего количества медалей, которое
вычисляется после ввода
Клуб Завоевано медалей:
Золотые Серебряные Бронзовые
Буревестник 4 4 4
Динамо 2 4 3
Зенит 6 4 4
Спартак 3 3 4
Далее
Назад
Меню
разработка: Крутченко Т. И.
const
NC = 4; {}
var
club : array [1..NC + 1] of string [30]; {}
medal: array [1.. NC + 1, 1..4] of integer; {}
m, i, j : integer;
begin
club [1] := ‘Буревестник’;
club [1] := ‘Динамо ’;
club [1] := ‘Зенит ’;
club [1] := ‘Спартак ’;
writeln (‘Для каждой команды в одной строке введите’);
writeln (‘через пробел’ число золотых, серебряных и’);
writeln (‘бронзовых медалей и нажмите <ENTER>’);
for i:= 1 to NC do
begin
write (club [i],’->’);
readln (medal [i, 1], medal [i, 2], medal [i, 3]);
end;
{подсчет общего количества медалей}
for i := 1 to NC do
begin
medal [i, 4] := 0;
for j := 1 to 3 do
medal [i, 4] := medal [i, 4] + medal [i, j];
end;
{сортировка таблицы}
for i:= 1 to NC - 1 do
begin
{найти строку, в которой
максимально общее число
m := i;
for j := i + 1 to NC do
if medal [j, 4] > medal [m, 4] then m := j;
{обменяем i-ю строку с m-й}
club [NC + 1] := club [i];
club [i] := club [m];
club [m] := club [NC + 1];
for j := 1 to 4 do
begin
medal [NC + 1, j] := medal [i, j];
medal [i, j] := medal [m, j];
medal [m, j] := medal [NC + 1, j];
end;
end;
{вывод итоговой таблицы}
writeln;
writeln (‘Клуб Золотые Серебряные Бронзовые Всего’);
writeln (‘** Итоговая таблица**’);
for i:= 1 to NC do
begin
write (i : 2, ‘. ‘, club [i]);
for j := 1 to 4 do
write (medal [i, j] : 11);
writeln;
end;
end.
Назад
Меню
разработка: Крутченко Т. И.
При использовании массивов наиболее распространенной ошибкой является превышение индексом значения выражения верхней границы индекса, указанной при объявлении массива. Если в качестве индекса используется константа и ее значение превышает верхнюю границу, то такая ошибка обнаруживается на этапе компиляции. Например во время компиляции программы
var
day : array [1..6] of string [11];
begin
day [1] := ‘Понедельник’;
day [7] := ‘Воскресенье’;
end.
будет выведено сообщение об ошибке для инструкции
day [7] := ‘Воскресенье’;
Если при обращении к элементу массива в качестве индекса используется переменная или выражение, то возможно возникновение ошибки времени выполнения программы (run time error). Например, в программе, представленной ниже, ошибок времени компиляции нет.
var
temper : array [1..12, 1..31] of real;
month, day: integer;
begin
writeln (‘’);
write ( ‘->’);
readln (day, month, t);
temper [month, day] := t;
end.
Ошибки при использованими массивов
Далее
Назад
Меню
разработка: Крутченко Т. И.
Однако если во время работы программы в ответ на запрос будет введена строка
-15 17 12
что соответствует -15 градусов 17 января, то при выполнении инструкции
temper [month, day] := t будет выведено сообщение
Run time error 104;
В программы, в которых возможны ошибки времени выполнения вследствие неправильного ввода исходных данных, следует добавлять инструкции проверки вводимых данных. Для приведенной выше программы это можно сделать, например, так:
var
temper : array [1..12, 1..31] of real;
month, day : integer;
t : real;
begin
writeln (‘Веедите дату (число, номер месяца) и температуру воздуха’);
write (‘->’);
readln (day, month, t);
if ((day . 31) OR (month > 12) OR (day < 1) OR (month < 1))
then writeln (‘Неверные данные’);
else temper [month, day] := t;
end.
Далее
Назад
Меню
разработка: Крутченко Т. И.
Вы закончили знакомство с основами языка программирования Turbo Pascal. Теперь Вы можете смело приступать к практическому применению полученных знаний.
Успехов Вам!
Назад
Меню
3
19