- •Содержание
- •1Алгоритмы линейных структур
- •2 Циклы
- •Введение
- •1 Алгоритмы линейных структур
- •1.1 Этапы разработки программы
- •1.2 Основные понятия
- •1.3 Основная структура программы
- •1.4 Алфавит языка
- •1.5 Идентификаторы
- •1.6 Константы
- •1.7 Понятие переменной Типы
- •1.8 Оператор присваивания Арифметические выражения
- •1.9 Операторы ввода и вывода информации
- •1.10 Практические задачи
- •1.11 Примеры решения задач
- •2 Циклы
- •2.1 Цикл с предусловием
- •Цикл с постусловием
- •Цикл со счетчиком
- •2.2 Задачи
- •2.3 Примеры
- •3 Немного об алгоритмах Алгоритм Кнута - Морриса - Пратта
- •Алгоритм Бойера – Мура
- •Алгоритм Рабина
- •Алгоритмы сортировки
- •Метод пузырька.
- •Сортировка выбором
- •Метод Шелла
- •Метод Хoopа
- •3.1 Разветвляющиеся алгоритмы
- •3.2 Задачи Свойства и виды треугольников (задачи 1-4)
- •Свойства и виды четырехугольников (задачи 5, 6)
- •Каким будет значение переменной а после выполнения фрагмента программы с составным оператором?
- •4 Массивы
- •4.1 Объявление массива
- •4.2 Действия над массивами
- •4.3 Вывод массива
- •4.4 Ввод массива
- •4.5 Сортировка массива
- •4.6 Поиск в массиве
- •4.7 Поиск минимального (максимального) элемента массива
- •4.8 Многомерные массивы
- •4.9 Ошибки при использовании массивов
- •4.10 Практические задачи
- •5 Множества
- •5.1 Описание типа множество
- •5.2 Операции над множествами
- •5.3 Группы операций
- •5.4 Упражнения
- •5.5 Задачи Тема: Множества
- •6 Записи
- •6.1 Понятие записи
- •6.2 Оператор присоединения With ... Do
- •6.3 Вариантные записи
- •6.4 Работа с файлами записей
- •6.5 Задачи
- •7 Файлы
- •7.1 Работа с файлами
- •7.2 Текстовые файлы
- •7.3 Типизированные файлы
- •7.4 Нетипизированные файлы
- •7.5 Задачи
- •8 Графика
- •8.1 Графика в Турбо Паскале
- •8.2 Базовые процедуры и функции
- •Процедуры модуля Graph
- •Функции модуля Graph
- •8.3 Экран и окно в графическом режиме
- •8.4 Вывод простейших фигур
- •8.5 Графические процедуры
- •8.6 Построение прямоугольников
- •8.7 Построение многоугольников
- •8.8 Построение дуг и окружностей
- •8.9 Работа с текстом
- •8.10 Построение графиков функций
- •8.11 Циклы в графике. Построение случайных процессов
- •8.12 Создание иллюзии движения
- •Задания
- •Контрольные тесты
- •1. Программирование алгоритмов линейных структур
- •2. Программирование алгоритмов разветвляющейся структуры
- •3. Программирование алгоритмов циклических структур
- •4. Массивы
- •5. Множества
- •6. Записи
- •7. Файлы
- •8. Графика
4.7 Поиск минимального (максимального) элемента массива
Алгоритм поиска минимального (максимального) элемента в неупорядоченном массиве довольно очевиден: делается предположение, что первый элемент массива является минимальным (максимальным), затем остальные элементы массива последовательно сравниваются с этим элементом. Если во время очередной проверки обнаруживается, что проверяемый элемент меньше (больше) принятого за минимальный (максимальный) , то этот элемент принимается за минимальный (максимальный) и продолжается проверка оставшихся элементов.
Пример:
program minel:
const
granica=10;
var
a: array[1..granica] of integer; (массив целых)
min: integer; (номер минимального элемента массива)
i: integer; (номер элемента, сравниваемого с минимальным)
begin
min:=1;(пусть первый элемент минимальный)
for i:=1 to granica do
if a[i]<a[min] then min:=i;
writeln (‘минимальный элемент массива:’, min);
writeln(‘номер элемента:’, min);
readln;
end.
4.8 Многомерные массивы
Исходные данные для решения многих задач удобно представляются в табличной форме.
Например, результат производственной деятельности сборочных заводов некоторой фирмы можно представить в виде следующей таблицы.
|
Продукт1 |
Продукт2 |
Продукт3 |
Завод1 |
|
|
|
Завод2 |
|
|
|
Завод3 |
|
|
|
Колонки и строки таблицы, как правило, содержат однородную информацию, если использовать терминологию Turbo Pascal – данные одинакового типа. Поэтому в программе для хранения и обработки табличных данных можно использовать совокупность одномерных массивов. Так приведенная выше таблица может быть представлена как совокупность одномерных массивов следующим образом:
Zavod1: array[1..3] of integer;
Zavod2: array[1..3] of integer;
Zavod3: array[1..3] of integer;
Каждый из приведенных массивов может хранить информацию о количестве продукции, выпущенной одним заводом.
Помимо совокупности одномерных массивов, таблица может быть представлена как двумерный массив.
В общем виде описание двумерного массива выглядит так:
Имя:array[нижняя граница индекса1..верхняя граница индекса1, нижняя граница индекса2..верхняя граница индекса2] of тип.
Приведенная выше таблица может быть представлена в виде двумерного массива так:
product: array[1..3,1..3] of integer;
Чтобы использовать элемент массива, нужно указать имя массива и индексы элемента. Первый индекс обычно соответствует номеру строки таблицы, второй- номеру колонки.
Значение элементов двумерных массивов выводят на экран и вводят с клавиатуры, как правило, по строкам, то есть сначала все элементы первой строки, затем второй и так далее. Это удобно выполнять при помощи вложенных инструкций for. Следующий фрагмент программы выводит на экран значения элементов массива по строкам:
for i:=1 to n do
begin
for j:=1 to m do
write(a[I,j]);
writeln;
readln;
end;
Каждый раз, когда внутренний цикл завершается, внешний цикл увеличивает i на единицу, и внутренний цикл выполняется вновь.
При описании массивов в программе удобно использовать именованные константы как значения верхних границ индексов массива.