Автор: Пользователь скрыл имя, 29 Октября 2012 в 22:00, творческая работа
Работа содержит презентацию по дисциплине "Информатика"
Алгоритмы
Условие
Ветвления: Инструкция IF
Инструкция CASE
Инструкция FOR
Циклы:
Инструкция WHILE
Инструкция REPEAT
Массивы: Объявление массива
Сортировка массива
- сортировка методом прямого выбора
- сортировка методом прямого обмена
Поиск в массиве
Многомерные массивы
Ошибки при использовании массива
Выход
разработка: Крутченко Т. И.
koef: array [0..2] of integer;
name: array [1..30] of string [25];
При объявлении массива удобно использовать
именованные константы. Именованная
константа объявляется в
const
NT=18; {число команд}
SN=25; {предельная длина названия команды}
var
team: array [1..NT] of string [SN];
Чтобы в программе использовать элемент массива, надо указать имя массива и номер элемента (индекс), заключив его в квадратные скобки. Индекс может быть константой или выражением целого типа. Например:
team [1]:= Зенит;
d:= koef [1] * koef [1] - 4 * koef [2] * koef [1];
readln (name [n + 1]);
writeln (temper [i]);
Далее
Назад
Меню
разработка: Крутченко Т. И.
К типичным действиям с массивами можно отнести следующие: - вывод массива; - ввод массива;
- сортировка массива;
- поиск в массиве
Например, программа, выводящая на печать номера и названия дней недели, хранящиеся в массиве day, может быть реализована так:
var
day: array [1..7] of string [11];
i: integer;
begin
day [1]:=‘Понедельник’;
day [2]:=‘Вторник’;
day [3]:=‘Среда’;
day [4]:=‘Четверг’;
day [5]:=‘Пятница’;
day [6]:=‘Суббота’;
day [7]:=‘Воскресенье’;
for i:= 1 to 7 do writeln (i, ‘ ’, day [i]);
Далее
Назад
Меню
Вывод массива
разработка: Крутченко Т. И.
Под вводом массива понимается ввод значений элементов массива. Как и вывод массива, ввод удобно реализовать при помощи инструкции FOR. Чтобы пользователь программы знал, ввода какого элемента массива ожидает программа, следует организовать вывод подсказок перед вводом очередного элемента массива. В подсказке обычно указывают индекс элемента массива.
Пример:
Следующая программа запрашивает температуру воздуха в течении недели и запоминает введённые значения в массиве temper, затем вычисляет среднее значение. Для организации подсказок используется массив строк day.
Ввод массива
Пример
Далее
Назад
Меню
разработка: Крутченко Т. И.
Пример:
var
day: array [1..7] of string [11]; {название дней недели}
temper: array [1..7] of real; {температура}
sum: real; {сумма температур за неделю}
sredn: real; {средняя температура за неделю}
i: integer;
begin
day [1]:=‘Понедельник’;
day [2]:=‘Вторник’;
day [3]:=‘Среда’;
day [4]:=‘Четверг’;
day [5]:=‘Пятница’;
day [6]:=‘Суббота’;
day [7]:=‘Воскресенье’;
writeln (‘Задайте температуру воздуха за неделю.’);
for i:= 1 to 7 do
begin
write (day [i], ‘-->’);
readln (temper [i]);
end;
{вычисление средней температуры за неделю}
sum:= 0;
for i:= 1 to 7 do
sum:= sum + temper [i];
sredn:= sum / 7;
writeln (‘Средняя температура за неделю:’, sredn: 6: 2);
end.
Назад
Меню
Далее
разработка: Крутченко Т. И.
Под сортировкой массива подразумевается процесс перестановки элементов с целью упорядочивания их в соответствии с каким-либо критерием. Например, если имеется массив целых a , то после сортировки по возрастанию должно выполняться условие:
a [1] <= a [2] <= … <= a [SIZE]
SIZE - верхняя граница
Так как можно сравнивать переменные типов INTEGER, REAL, CHAR и STRING, то можно сортировать массивы этих типов.
Задача сортировки распространена в информационных системах и используется как предварительный этап задачи поиска, так как поиск в упорядоченном (отсортированном) массиве проводится намного быстрее, чем в неупорядоченном.
Существует много методов (алгоритмов) сортировки массивов. Здесь мы рассмотрим два метода:
Сортировка массива
Далее
Назад
Меню
разработка: Крутченко Т. И.
Алгоритм сортировки массива по возрастанию методом прямого выбора может быть представлен так:
1. Просматривая массив
от первого элемента, найти
минимальный и поместить его
на место первого элемента,
а первый на место
2. Просматривая массив
от второго элемента, найти
минимальный и поместить его
на место второго элемента,
а второй на место
3. И так далее до последнего элемента.
В Примере представлена программа сортировки массива целых чисел по возрастанию. Для демонстрации процесса сортировки программа выводит массив после каждого обмена элементов.
Сортировка методом прямого выбора
Далее
Назад
Меню
разработка: Крутченко Т. И.
Пример:
const
SIZE = 5;
var
a: array [1..SIZE] of integer;
i: integer; {номер элемента, которого ведётся поиск минимального элемента}
min: integer; {номер минимального элемента в части массива от i до верхней границы массива}
j: integer; {номер элемента, сравниваемого с минимальным}
buf: integer; {буфер, используемый при обмене элементов массива}
k: integer;
begin
writeln (‘Сортировка массива.’);
write (‘Введите’, SIZE: 3,’ целых в одной строке’);
writeln (‘через пробел и нажмите<ENTER>’);
for k:=1 to SIZE do read (a [k]);
begin
{поиск минимального элемента в части массива от f [i] до a [SIZE]}
min:= i;
for j:= i + 1 to SIZE do begin
if a [j] < a [min] then min:= j;
{поменяем местами a [min] и a [j]}
buf:= a [i];
a [i]:= a [min];
a [min]:= buf;
{выведем массив}
for k:= 1 to SIZE do write (a [k], ‘ ‘);
writeln;
end;
writeln (‘Массив отсортирован.’);
end.
Далее
Назад
Меню
разработка: Крутченко Т. И.
В основе алгоритма лежит обмен
соседних элементов массива. Каждый
элемент массива, начиная с первого,
сравнивается со следующим и если
он больше следующего, то элементы меняются
местами. Таким образом элементы
с меньшим значением
Сортировка методом обмена
(Метод пузырька)
Далее
Назад
Меню
разработка: Крутченко Т. И.
Пример:
Программа сортировки массива целых чисел по возрастанию. Для демонстрации процесса сортировки программа выводит массив после каждого цикла обменов.
const
SIZE
var
a: array [1..SIZE] of integer;
i: integer; {счетчик циклов}
k: integer; {текущий индекс элемента массива}
buf: integer;
begin
writeln (‘Сортировка массива пузырьковым методом.’);
write (‘Введите’,SIZE: 3,’целых в одной строке через пробел’);
writeln (‘и нажмите <ENTER>’);
for k:= 1 to SIZE do read (a [k]);
writeln (‘Сортировка.’);
for i:= 1 to SIZE - 1
do begin
for k:= 1 to SIZE - 1
do begin
if a [k] > a [k + 1]
then begin
{обменяем k-й и (k + 1)-й элементы}
buf:= a [k];
a [k]:= a [k + 1];
a [k + 1]:= buf;
end;
end;
for k:= 1 to SIZE do write (a [k], ‘ ’);
writeln (‘Массив отсортирован.
end.
Назад
Меню
разработка: Крутченко Т. И.
При решении многих задач возникает
необходимость установить, содержит
ли массив определенную информацию или
нет. Например, проверить, есть ли в
массиве фамилий студентов
Для организации поиска в массиве могут быть использованы различные алгоритмы. Наиболее простой - это алгоритм перебора. Поиск осуществляется последовательным сравнением элементов массива с образцом до тех пор, пока не будет найден элемент, равный образцу, или не будут проверены все элементы. Алгоритм простого перебора применяется, если элементы массива не упорядочены.
В Примере представлен текст программы поиска в массиве целых чисел. Перебор элементов массива осуществляет инструкция REPEAT, в теле которой инструкция IF сравнивает текущий элемент массива с образцом и присваивает переменной naiden значение TRUE, если текущий элемент равен образцу. Цикл завершается, если в массиве обнаружен элемент, равный образцу (naiden = TRUE), или если проверены все элементы массива. По завершении цикла, по значению переменной found можно определить, успешен поиск или нет.
Очевидно, что чем больше элементов в массиве и чем дальше расположен нужный элемент от начала массива, тем дольше будет программа искать нужный элемент.
Так как операции сравнения применимы как к числам, так и строкам, то данный алгоритм может использоваться для поиска как в числовых, так и в строковых массивах.
На практике довольно часто проводится поиск в массиве, элементы которого упорядочены по некоторому критерию. Например, массив фамилий, как правило, упорядочен по алфавиту, массив данных о погоде упорядочен по датам наблюдений.
Поиск в массиве
Далее
Назад
Меню
разработка: Крутченко Т. И.
Пример:
var
massiv: array [1..10] of integer; {массив целых}
obrazec: integer; {образец для поиска}
naiden: boolean; {признак совпадения с образцом}
i: integer;
begin
{ввод 10 целых чисел}
writeln (‘Поиск в массиве.’);
write (‘Введите 10 целых в одной строке через пробел’);
writeln (‘и нажмите <ENTER>’);
write (‘-->’);
for i:= 1 to 10 do read (massiv [i]);
{числа введены в массив}
write (‘Введите образец для поиска (целое число) -->’);
readln (obrazec);
{поиск простым перебором}
naiden:= FALSE; {совпадений нет}
i:= 1; {проверяем с первого элемента массива}
repeat
if massiv [i] = obrazec
then naiden:= TRUE {совпадение с образцом}
else i:= i + 1; {переход к следующему элементу}
until (i > 10) or (naiden); {завершим, если совпадение с образцом или}
{проверен последний элемент массива}
if naiden
then writeln (‘Совпадение с элементом номер’, i : 3, ‘ . ‘, ‘Поиск успешен.’)