- •Языки и системы программирования Алгоритмы
- •Языки программирования
- •Область применения языков программирования
- •Сложность и эффективность языков программирования
- •Трансляторы
- •Характеристика с/п Pascal abc
- •Используемые в с/п Pascal abc «горячие клавиши»
- •Система подсказок.
- •Структура программы на Паскале
- •Сообщения об ошибках. Отладка программы.
- •Команды вывода данных на экран
- •Константы
- •Переменные
- •Арифметические выражения. Приоритет арифметических операций
- •Стандартные арифметические функции
- •Процедуры инкремента и декремента
- •Примеры решения линейных задач
- •Ввод данных с клавиатуры
- •Примеры решения диалоговых задач
- •Линейные задачи для самостоятельной работы
- •Лаб. 1. Линеаризовать выражение:
- •Лаб. 2. Линейные диалоговые задачи (на одно действие)
- •Лаб. 3. Диалоговые задачи на несколько действий
- •Ветвление
- •Логические выражения
- •Вложенное ветвление
- •Лаб. 4. Задачи на ветвление:
- •Лаб. 5. Задачи на ветвление с вычислениями:
- •Выбор варианта
- •Лаб. 6. Задачи на выбор варианта:
- •Как выбрать цикл?
- •Экстренные события в теле цикла
- •Лаб. 7. Числовые задачи с циклом For
- •Лаб. 8. Сюжетные задачи с циклом For
- •Лаб. 9. Задачи с условными циклами
- •Библиотека crt
- •Библиотека sounds
- •Лаб. 10. Задачи с использованием циклов и библиотек crt и sounds
- •Порядковые типы данных
- •Перечислимый тип данных
- •Символьный тип данных
- •Ограниченный (интервальный) тип данных
- •Лаб. 11. Задачи со строками
- •Массивы
- •Решение задач с массивами
- •Поиск минимального (максимального) элемента массива
- •Сортировка массива.
- •Двумерные и многомерные массивы
- •Лаб. 12. Задачи с одномерными массивами
- •Лаб. 13. Задачи с двумерными массивами
- •Множества
- •Файлы данных
- •Записи и базы данных
- •Библиотека GraphAbc
- •Действия с графическим окном:
- •Точечная графика
- •Графические примитивы
- •Текст в графическом окне
- •Использование готовых точечных рисунков
- •Вспомогательные алгоритмы
- •Рекурсия
- •Событийное программирование
- •Использование таймеров
- •Использование сторонней библиотеки ukeyb
Поиск минимального (максимального) элемента массива
Чтобы
найти максимальный элемент массива,
заводим переменную max,
в которую помещаем сначала первый
элемент. Каждый следующий сравниваем
с max, и если он больше, то
его запоминаем в max вместо
хранящегося там числа. После просмотра
всех элементов в max остаётся
н
program
poisk_max; var a:array[1..20]
of
integer; i,max:integer; begin randomize; for
i:=1 to
20 do begin a[i]:=1+random(99);
write(a[i],’ ’); end;
writeln; max:=a[1]; for
i:=2 to
20 do if
a[i]>max then
max:=a[i];
writeln(’Наибольший элемент
массива = ’,max); readln; end.
Минимальный элемент находят так же, только ищут число, меньшее, чем min.
Иногда кроме самого значения максимального элемента нужно найти и место, где он располагается. Для этого в цикле поиска, найдя число большее, чем было найдено раньше, нужно запомнить не только его само, но и его номер, как показано в следующем фрагменте:
Сортировка массива.
Существует много способов сортировки массива по возрастанию. Самый понятный и простой (но далеко не самый быстрый!) – сортировка обменом. Суть его в следующем: Программа ищет наименьший элемент и обменивает его с первым. Затем ищет наименьший из оставшихся и обменивает со вторым… Для обмена мы пользуемся тем, что, кроме массива, наименьшее число находится ещё в переменной min, поэтому на его место в массиве мы копируем число из начальных элементов массива, а туда копируем число из переменной min.
program
sortirovka_obmenom; var a:array[1..20]
of integer; i,k,min,Nmin:integer; begin randomize;
{Сначала заполним массив} for
i:=1 to 20 do
begin a[i]:=1+random(99);
write(a[i]:3); end;
writeln; {Отсортируем
по возраст. методом обмена} for
i:=1 to
19 do
begin
{i показывает
начало поиска} min:=a[i];
Nmin:=i; {просмотрим
все остальные (после i)} for
k:=i+1 to
20 do
if
a[k]<min then begin min:=a[k]; Nmin:=k; end; {Нашли
минимальное число. Обменяем его с i-м}
a[Nmin]:=a[i]; a[i]:=min; end; {Теперь
распечатаем отсортированный массив} for
i:=1 to
20 do write(a[i]:3); end.
Второй по простоте (и тоже медленный) способ – сортировка методом пузырька. Суть её в том, что при первом проходе каждый элемент сравнивается со следующим, и если порядок неправильный, они обмениваются. Для обмена используется переменная b, в которой временно сохраняется число. После первого прохода наибольший элемент уже на своём месте (в конце массива), поэтому второй проход делается до предпоследнего элемента, и т.д. … В приведенном фрагменте программы, сортирующем массив a по возрастанию методом пузырька, первый цикл считает проходы, а его счётчик i указывает, до какого элемента делать проверку (поэтому i уменьшается).
