- •1. Алгоритмизация
- •1.1.Функциональная схема эвм.
- •1.2. Этапы решения задач на эвм.
- •1.3. Язык блок-схем для представления алгоритмов
- •1.4. Базовые структуры алгоритмов
- •1.5. Конструирование сложных алгоритмов
- •2. От алгоритма к программе
- •2.1. Концепция данных в Турбо-Паскале
- •2.2. Структура Паскаль - программы
- •2.3. Комментарии
- •2.4 Операторы
- •2.4.1 Оператор присваивания
- •2.4.2. Составной оператор
- •2.4.3. Логические выражения
- •2.4.4. Условный оператор
- •2.4.5. Оператор цикла с параметром
- •2.4.6. Оператор цикла с постусловием
- •2.4.7. Оператор цикла с предусловием
- •2.5. Производные типы
- •2.5.1 Перечислимые типы
- •2.5.3. Регулярные типы (массивы)
- •2.5.4. Многомерные массивы
- •2.5.5.Комбинированные типы (записи)
- •2.6. Подпрограммы
- •2.6.1. Функции
- •2.6.2. Процедуры
- •2.6.3. Формальные и фактические параметры
- •2.6.4. Параметры - значения
- •2.6.5. Параметры - переменные
- •2.6.6. Параметр - массив
- •2.6.7. Параметры подпрограмм без указания типа
- •2.6.8. Параметры - процедуры и параметры - функции
- •2.6.9 Локальные и глобальные переменные
- •3. Задания
- •3.1. Построение таблицы значений функции.
- •3.2 Вычисление сумм и произведений.
- •3.3. Вычисление функции разложением в ряд
- •3.4 Обработка одномерных массивов.
- •3.5 Проверка попадания точки в заданную область
- •3.6. Нахождение экстремумов последовательностей
- •3.7.Обработка простых двумерных массивов.
- •3.8 Обработка двумерных массивов
- •3.9. Разработка алгоритмов и программ нисходящим способом
- •3.10.Задачи на обработку символьных данных сложной структуры
- •Создать исходный типизированный файл.
- •Результаты записать в текстовый файл.
- •3.11 Задачи с использованием имени массива как параметра функции
- •3.12. Задача на использование формальных массивов в процедурах
- •3.13. Задачи на разработку программы с использованием созданной по условию процедуры
- •3.14.Задачи на использование функций в качестве параметров других функций.
- •3.15. Разработка многомодульных программ.
1.5. Конструирование сложных алгоритмов
При построении сложных алгоритмов будем, по-прежнему, пользоваться только базовыми конструкциями. Это сделает алгоритм понятным, удобным для модификации и записи на языке программирования.
Существует несколько стратегий конструирования сложных алгоритмов. Мы будем использовать стратегию “сверху - вниз”. При таком подходе исходная задача разбивается на подзадачи. Каждая подзадача в свою очередь, анализируется и может быть разбита на подзадачи следующего уровня. Процесс декомпозиции заканчивается, когда все подзадачи могут быть реализованы простыми алгоритмами. Таким образом, получается иерархия алгоритмов.
Подзадачи любой задачи связаны некоторым алгоритмом. Причем алгоритмы верхних уровней наряду с обычными блоками содержат блоки подзадач (абстракции), которые еще необходимо детализировать.
Процесс раскрытия абстракции (детализации) - есть процесс конструирования алгоритма для подзадачи. Причем поскольку все базовые конструкции имеют один вход и один выход, алгоритмы нижних уровней просто заменяют блоки абстракции в алгоритмах верхних уровней.
Проиллюстрируем этот процесс на примере построения таблицы значений функции двух переменных. Пусть имеется функция f(x,y). Надо построить таблицу значений этой функции для значений x от x-нач до х-кон с шагом 0,1 и для значений у от у-нач до у-кон с шагом 0,1.
Чтобы построить такую таблицу, надо задать х значение х-нач и для этого фиксированного значения рассчитать и напечатать ряд значений f(x,y) для последовательности значений у от у-нач до у-кон. Затем изменить значение х на следующее и опять считать f(x,y) для всех значений у. И так до тех пор, пока не будет построена таблица для всех возможных пар х,у.
Алгоритм верхнего уровня для решения этой задачи представлен на рис.7 а). Он состоит из одного цикла. В блоке подготовки этого цикла задается начальное значение переменной х. В теле цикла стоит оператор печати текущего значения х и абстракция, которая раскрывается блок-схемой на рис. 7 б). Раскрытие этой абстракции представляет собой также циклический алгоритм, в котором изменяется переменная у, вычисляется и печатается значение функции f(x,y).
Рис. 7
Если объединить обе блок схемы в одну, заменив абстракцию на рис. 7 а) ее раскрытием (рис. 7 б), получим блок-схему, состоящую их двукратного цикла. Существует всего несколько комбинаций вложений базовых структур друг в друга. Поэтому освоив базовые структуры, можно построить алгоритм любой сложности.
2. От алгоритма к программе
Чтобы выполнить алгоритм на ЭВМ, надо представить его в виде текста на языке программирования, т.е. в виде программы. Программа включает в себя кроме алгоритма описание всех данных, используемых алгоритмом.
Программа, введенная в ЭВМ, обрабатывается транслятором соответствующего языка. В процессе трансляции проверяется правильность записи конструкций языка (синтаксический контроль). Если обнаружены ошибки, выводится соответствующее сообщение и трансляция приостанавливается, если ошибок нет - строится выполняемая программа. При этом выделяется память для всех данных программы и фиксируется их тип (информация для этого берется из раздела описаний программы).