6.1. Основные алгоритмические конструкцииНапомним некоторые определения, известные вам из курсов 7-го и 8-го классов. Алгоритм — конечная последовательность команд, формальное выполнение которых позволяет получить решение задачи для любого допустимого набора исходных данных. Все команды делят на группы:
Любой алгоритм может быть записан с использованием базовых алгоритмических конструкций, а именно: следование, цикл и ветвление (пример 6.1). Программа представляет собой запись на некотором формальном языке — языке программирования. Командами в языке программирования считают:
Команды цикла и ветвления управляют порядком выполнения других команд в программе и относятся к командам управления (управляющим конструкциям) (пример 6.2). Оператор ветвления — команда, реализующая алгоритмическую конструкцию ветвление на языке программирования. Оператор цикла — команда, реализующая алгоритмическую конструкцию повторение на языке программирования. В Pascal существуют различные возможности управлять тем, сколь-ко раз будет повторяться тело цикла. Может быть задано условие продолжения или окончания работы цикла, а также число повторений тела цикла. Цикл с предусловием используется в том случае, когда известно условие продолжения работы. Цикл с параметром используется тогда, когда известно количество повторений. 6.2. Вспомогательные алгоритмыВспомогательный алгоритм — алгоритм, который можно использовать в других алгоритмах, указав его имя и, если необходимо, значения параметров. В языке Pascal используются вспомогательные алгоритмы двух видов: процедуры и функции. Они могут быть с параметрами или без параметров (пример 6.3). Описание процедур и функций повторяет структуру программы на языке Pascal. Оно может содержать раздел var для описания переменных, которые используются только внутри данной процедуры или данной функции. Функции, в отличие от процедур, в результате своего выполнения возвращают значение, которое может быть использовано в выражении. Вызов процедуры является отдельной командой (пример 6.4). 6.3. Типы данныхВ языке Pascal используются раз-ные типы данных. Они нужны для выполнения различных операций — с каждым типом данных связан свой набор операций. Для хранения различных типов данных в памяти компьютера отводится разное количество памяти. Вы уже использовали типы данных, которые называют простыми. В таблице примера 6.5 приведены целочисленные типы данных, используемые в PascalABC. Все целочисленные типы данных, представленные в таблице, можно разделить на две группы:
Для каждого знакового типа есть беззнаковый, занимающий столько же памяти. Вещественные типы данных позволяют хранить число, представленное в стандартном виде: a • 10n, где 1 ≤ а ≥ 10 и n (целое) есть порядок числа, записанного в стандартном виде (пример 6.6). Значения типа boolean, который называют логическим, занимают 1 байт и принимают одно из двух значений, задаваемых константами true (истина) и false (ложь). Данные в программу пользователь может вводить с помощью команды read (readln). Для вывода данных используется команда write (writeln). Оператор присваивания используется для того, чтобы задавать значения переменным и вычислять значение выражения. При использовании в одном операторе присваивания данных разных типов нужно помнить об их совместимости:
Целочисленные типы могут быть Все простые типы, кроме вещественного, называются порядковыми. Значения только этих типов могут быть параметрами цикла for. Для порядковых типов используются функции оrd, рred и succ, а также процедуры inc и dec (пример 6.8 и пример 6.9). Все переменные, которые используются в программе, должны быть описаны в разделе var. Если данные не изменяются в процессе работы программы, то они могут быть описаны как константы в разделе const. Например: const slovo = ‘Привет’; Для работы с графическими данными используются команды библиотеки GraphABC (см. Приложение 2, с. 159—160). 6.4. Примеры задачПример 6.10. Описать слово «Pascal» как константу. Вывести слово на экран красным цветом. Этапы выполнения задания I—II. Результат работы не зависит III. Алгоритм решения задачи. 1. Установить красный цвет 2. Вывести константу. IV. В программе нет переменных. Пример 6.11. Написать программу, которая выведет заданное слово на экран n раз. Значение n вводится. Этапы выполнения задания I. Исходные данные: переменная n. II. Результат: n слов. III. Алгоритм решения задачи. 1. Опиcываем слово как константу. IV. Описание переменных: n — Пример 6.12. Написать программу, которая выведет на экран n раз одно из двух слов. Выбор слова осуществляется случайным образом. Значение n вводится. Посчитайте, сколько раз было выведено каждое слово. Этапы выполнения задания I. Исходные данные: переменная n. II. Результат: n раз выведено одно из двух слов и сообщение о том, сколько раз выведено каждое из слов. III. Алгоритм решения задачи. 1. Слова описываем как константы. 4.1. Сгенерируем случайное 5. Выводим сообщения о количестве слов. IV. Описание переменных: n, k1, k2, x — integer. |
Пример 6.1. Блок-схемы алгоритмических конструкций. 1. Следование
2. Цикл 1) цикл с параметром
2) цикл с предусловием
3. Ветвление
Пример 6.2. Запись операторов ветвления и цикла на языке Pascal. Ветвление в полной форме: if <условие> then Ветвление в сокращенной форме if <условие> then Цикл с предусловием while <условие> do Цикл с параметром for var i := N1 to N2 do Параметр уменьшается: for var i := N2 downto N1 do Пример 6.3. Общий вид процедуры: procedure <имя>(<список параметров>:тип); Общий вид функции: function <имя>(<список параметров>:тип): тип результата; Функция должна содержать команду вида <имя> := <значение>;. Эта команда определяет, что функция должна вернуть в качестве результата. Пример 6.4. Вызов процедуры и функции. Вызов процедуры рисования круга: Пример 6.5. Целочисленные типы данных в PascalABC.
Дополнительно в PascalABC определен тип BigInteger, который не ограничен диапазоном значений и размером памяти. Пример 6.6. Вещественные типы данных в PascalABC.
Количество значащих цифр в типе real составляет 15—16, в типе single — 7—8, в типе decimal — 28—29. Пример 6.7. Приведение типов. Результат:
Пример 6.8. Процедуры и функции для работы с порядковыми типами.
Пример 6.9. Фрагмент программы для работы с порядковыми типами.
Пример 6.10.
VI. Тестирование. Пример 6.11.
Пример 6.12. |
1. Что такое алгоритм?
2. Назовите основные алгоритмические конструкции.
3. Что понимают под вспомогательным алгоритмом?
4. Чем отличаются различные целочисленные типы данных друг от друга?
5. Что нужно помнить о совместимости типов данных?
6. Какие арифметические операции определены для целочисленных типов данных? Для вещественных типов данных?
Упражнения
1. Измените константу в программе примера 6.10 на свое имя. Используя команды графической библиотеки для работы с текстом, измените шрифт, размер символов, фон, начертание букв.
2. Измените программу примера 6.11 так, чтобы выполнялись указанные условия.
1. Каждое слово должно выводиться случайным цветом.
2*. Расстояние между словами должно быть 50 пикселей.
3*. Каждое новое слово должно выводиться шрифтом на 5 пунктов больше, чем предыдущее. Отрегулируйте расстояние между словами так, чтобы слова при выводе не перекрывали друг друга.
3. Запустите программу из примера 6.12 несколько раз. Какие результаты получили?
4. Измените программу из примера 6.12 так, чтобы случайным образом выбиралось одно из трех слов. Выводите каждое слово своим цветом (например, первое — красным, второе — синим, третье — зеленым).