Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf ·...

112
Среда Турбо Паскаль 7.0. Конспект лекций По дисциплине «Программирование на языке высокого уровня» Для студентов специальности 220200 – Автоматизированные системы обработки информа ции и управления Екатеринбург 2004

Transcript of Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf ·...

Page 1: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

Среда Турбо Паскаль 7.0.

Конспект лекций

По дисциплине «Программирование на языке высокого уровня» Для студентов специальности

220200 – Автоматизированные системы обработки информа ции и управления

Екатеринбург 2004

Page 2: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО
Page 3: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

3

1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

Программное обеспечение состоит из нескольких совместно рабо-тающих программ (программных модулей), объединенных в программный комплекс, и документов, необходимых для разработки, сопровождения и экс-плуатации программного комплекса.

В простейшем случае программный комплекс может включать толь-ко одну программу, но второй компонент программного обеспечения – доку-ментация – должен присутствовать всегда.

Процесс разработки программного обеспечения можно разбить на этапы (фазы). Рассмотрим каждый этап подробнее.

1.1. Первый этап – постановка задачи Работа над программным обеспечением начинается с составления

документа, называемого "Задание на разработку программного обеспечения (техническое задание)". В нем указывается следующее.

НАЗВАНИЕ ЗАДАЧИ Дается краткое определение решаемой задачи, название програм-

много комплекса, указывается система программирования для ее реализации и требования к аппаратному обеспечению.

ОПИСАНИЕ Подробно излагается постановка задачи, описывается применяемая

математическая модель для задач вычислительного характера, метод обра-ботки входных данных для задач невычислительного характера и т д.

УПРАВЛЕНИЕ РЕЖИМАМИ РАБОТЫ ПРОГРАММЫ Формулируются основные требования к способу взаимодействия

пользователя с программой (интерфейс пользователь-компьютер). ВХОДНЫЕ ДАННЫЕ Описываются входные данные, указываются пределы, в которых они

могут изменяться, значения, которые они не могут принимать, и т. д., а также источник данных т.е. устройство, с помощью которого они должны быть переданы в программу.

ВЫХОДНЫЕ ДАННЫЕ Описываются выходные данные, указывается, в каком виде они

должны быть представлены — в числовом, графическом или текстовом, а также указывается устройство отображения этих данных.

ОШИБКИ Перечисляются возможные ошибки пользователя при работе с про-

граммой (например, ошибки при вводе данных и др.). Указываются способы диагностики (в данном случае под диагностикой понимается обнаружение ошибок при работе программного комплекса) и защиты от этих ошибок на этапе проектирования, а также возможная реакция пользователя при совер-

Page 4: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

4

шении им ошибочных действий и реакция программного комплекса (компь-ютера) на эти действия.

ПРИМЕР РАБОТЫ ПРОГРАММНОГО КОМПЛЕКСА Приводится один или несколько примеров работы программного

комплекса, на которых в простейших случаях проводится его отладка и тес-тирование.

1.2. Второй этап - выбор метода решения На этом этапе создается математическая или логическая модель ис-

следуемого явления реального мира. Если программируемая задача носит вычислительный характер, то приводится вывод всех используемых формул с подробными комментариями. Если же задача невычислительная, то приво-дится словесное описание логической модели, например, в виде плана дейст-вий.

1.3. Третий этап - разработка алгоритма решения задачи На этом этапе формируется общая структура программного комплек-

са. В соответствии с рассматриваемой далее технологией нисходящего струк-турного программирования программный комплекс разбивается на неболь-шие части — программные модули (блоки). Для каждого программного мо-дуля формулируются требования по реализуемым функциям и разрабатыва-ется алгоритм, реализующий эти функции.

Алгоритм представляет собой точное предписание, последователь-ность действий, приводящих к решению вычислительной или логической задачи.

Определяется схема взаимодействия программных модулей, т.е. схе-ма потоков данных программного комплекса.

Результатом выполнения этого этапа является блок-схема алгоритма решения поставленной задачи.

Блок-схема – это графическое изображение логической структуры алгоритма. Блок-схема состоит из блоков и линий потоков информации. Блоки указывают на процессы обработки данных, а линии потоков инфор-мации показывают движение данных от одного блока к другому.

Правила изображения блок-схем и условные обозначения, исполь-зуемые в них, регламентированы стандартом (ГОСТ 19.701-90) и подробно будут рассмотрены ниже.

1.4. Четвертый этап – кодирование алгоритма Этап кодирования (программирования) алгоритмов заключается в

переводе алгоритмов, разработанных для каждого программного модуля, в программы на конкретном языке программирования. Результатом выполне-ния этого этапа являются файлы с исходными текстами программ. Эти файлы по своей природе текстовые, только они содержат тексты, написанные на языке программирования (в нашем случае это тексты, написанные на языке

Page 5: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

5

Паскаль). Как и другие текстовые файлы, они могут быть созданы, просмот-рены и отредактированы с помощью любых текстовых редакторов. Но реко-мендуется для этой цели пользоваться текстовым редактором, встроенным в среду Turbo Pascal 7.0. В каталогах файлы, содержащие исходные тексты программ, написанные на языке Паскаль, имеют вид <имя>.pas. Расширение pas говорит о том, что это файлы паскаль-программ.

1.5. Пятый этап – трансляция и компиляция программы После того как закончено кодирование (написание программы на

языке программирования) и исходный текст программы введен в память компьютера, производят транслирование и компилирование программы.

Сначала специальная программа (транслятор) проверяет исходный текст программы на наличие так называемых синтаксических ошибок, т.е. соответствие написанных операторов правилам, предусмотренным в данном языке программирования. Причем трансляция производится до первой встре-тившейся ошибки. При обнаружении ошибки процесс трансляции прекраща-ется, транслятор выдает сообщение о характере и месте ошибки. Необходимо исправить ошибку и повторить трансляцию. Так продолжается до тех пор, пока все ошибки трансляции не будут устранены.

Затем происходит сборка программы (компиляция), т.е. к программе подключаются все заказанные ей библиотеки, процедуры, функции и т.д. Ес-ли какой-либо компонент не обнаружен, выдается соответствующее сообще-ние и процесс прекращается. Необходимо убедиться в наличии ненайденного компонента, в правильности указанного имени его или пути к нему. Затем снова повторить компиляцию. При успешном завершении процесса образует-ся исполняемый файл программы (файл с расширением EXE). С помощью этого файла запускают программу на выполнение.

1.6. Шестой этап – тестирование программы Различается два вида тестирования: автономное и комплексное. При

автономном тестированию подвергаются отдельные программные модули, из которых состоит программный комплекс. Комплексное тестирование заклю-чается в проверке всего программного комплекса.

Для тестирования подбираются такие исходные данные, для которых результат выполнения программы заранее известен.

После того как при тестировании обнаружена ошибка, начинается процесс отладки тестируемого программного модуля или программного ком-плекса. Тестирование и отладка чередуются и завершаются после того, как будет принято решение об отсутствии в программном комплексе ошибок.

Относительная стоимость обнаружения и исправления ошибок ("тя-жесть ошибки") зависит от времени их обнаружения. Чем позже обнаружена ошибка, тем выше "тяжесть ошибки".

Page 6: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

6

1.7. Седьмой этап – создание документации Документация классифицируется по своему назначению и может

быть разбита на несколько групп: описание применения, руководство поль-зователя, руководство программиста.

Описание применения – общая характеристика программного про-дукта и сферы его применения, требований к базовому программному обес-печению, комплексу технических средств обработки.

Руководство пользователя – детальное описание функциональных возможностей и технологии работы с программным продуктом для конечно-го пользователя. Документы данного вида могут оформляться в печатном виде и (или) "встраиваться" в программный комплекс (в последнем случае помощь в виде подсказки вызывается самим пользователем в процессе рабо-ты программного комплекса).

Руководство программиста предназначено для разработчиков про-граммного обеспечения и специалистов, которые будут его сопровождать. Это руководство в качестве основных документов включает:

1) задание на разработку программного обеспечения (техническое задание);

2) спецификацию; 3) прокомментированные исходные тексты (листинги) модулей про-

граммы и управляющего модуля; 4) схему разбиения программного комплекса на программные моду-

ли; 5) схему потоков данных программного комплекса; 6) схему взаимодействия программных модулей; 7) планы и данные для тестирования программного комплекса; 8) другие материалы, иллюстрирующие проект, например: блок-

схемы программного комплекса и программных модулей. Отметим, что стоимость разработки хорошей документации доста-

точно высока и оценивается в 1 человеко-месяц на 1000 команд исходного текста программы.

1.8. Восьмой этап - сопровождение и эксплуатация После завершения тестирования программного комплекса програм-

мное обеспечение сдается в эксплуатацию. В процессе эксплуатации может возникнуть необходимость добавления в программный комплекс новых функций, устранение ошибок, обнаруженных в процессе эксплуатации, и т. д. Данный тип работ с программным комплексом в период его эксплуатации называется сопровождением.

Только при решении простейших задач указанные этапы выполня-ются друг за другом в той последовательности, в которой они были описаны. В общем же случае процесс разработки программного обеспечения требует постоянного возврата к предыдущим этапам и внесения изменений.

Page 7: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

7

2. ТЕХНОЛОГИЯ НИСХОДЯЩЕГО СТРУКТУРНОГО

ПРОГРАММИРОВАНИЯ Технология программирования – это система методов, способов и

приемов обработки и выдачи информации. В начале 70-х годов корпорация IBM сообщила о применении в раз-

работке программного обеспечения «Усовершенствованных методов про-граммирования», обеспечивающих переход к промышленным методам раз-работки программного обеспечения. Одним из компонентов «Усовершенст-вованных методов программирования» является технология нисходящего структурного программирования, поддерживаемая современными языками программирования. На базе технологии нисходящего структурного програм-мирования были созданы технологии объектно-ориентированного и собы-тийно-управляемого (визуального) программирования.

Технология нисходящего структурного программирования включает три составляющие:

- нисходящая разработка; - структурное кодирование (программирование); - сквозной контроль.

2.1. Нисходящая разработка Нисходящая разработка – это подход к разработке программного

комплекса, при котором он разбивается на программные модули (програм-мы), образующие многоуровневую структуру. Каждый программный модуль представляет собой короткую программу, решающую отдельную задачу (подзадачу). В процессе разработки программные модули нижележащих уровней заменяются «заглушками». Таким образом, в любой момент разра-ботки программного комплекса имеется его действующий вариант. Тестиро-вание и отладка отдельных программных модулей и программного комплекса в целом ведется по ходу его проектирования.

В языках программирования, ориентированных на технологию нис-ходящего программирования, одним из средств реализации модульной структуры являются процедуры и функции.

Использование небольших программных модулей имеет определен-ные преимущества: с такими модулями удобнее работать, они позволяют разрабатывать программные комплексы, которые легче модифицировать; небольшие модули легче и эффективнее тестируются.

Рассмотрим пример проектирования сверху вниз. Пусть требуется разработать программный комплекс, рисующий на экране картинку «Дачный участок», включающую домик, забор, дерево, солнце (рис. 2.1).

Page 8: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

8

Рис. 2.1. Дачный участок Разобьем весь рисунок на составляющие части и изобразим их взаи-

модействие с помощью структурной диаграммы.

Рис. 2.2. Структурная диаграмма программного комплекса «Дача»

Участок

Дом Дерево Забор Солнце

Крыша Стены

Окно

Дверь

Труба

Дым

Ствол Крона

Page 9: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

9

На этой диаграмме мы видим программные модули разных уровней. «Участок» – первый уровень – управляющий (главный) программный мо-дуль. Все остальные подчиненные программные модули. «Дом», «Дерево», «Забор», «Солнце» – это программные модули второго уровня. Далее следу-ют модули третьего, четвертого и т.д. уровней. Каждый нижележащий уро-вень соответствует более полной детализации программного комплекса. Раз-биение программы на модули представляет одну из достаточно ответствен-ных и сложных задач, так как влияет на дальнейший ход разработки про-граммного комплекса, его надежность, эффективность, продолжительность тестирования и отладки, сопровождение.

2.2. Свойства программных модулей Перечислим основные свойства программных модулей: 1) программный модуль должен иметь один вход и один выход; 2) программный модуль должен решать самостоятельную задачу; 3) работа программного модуля не должна зависеть:

- от входных данных; - от того, какому программному модулю предназначены его вы-

ходные данные; - от предыстории вызовов программного модуля;

4) программный модуль должен возвращать управление тому про-граммному модулю, который его вызывал;

5) программный модуль может вызывать другой программный мо-дуль.

2.3. Кодирование и тестирование сверху вниз Рассмотрим процессы кодирования и тестирования на примере неко-

торого программного комплекса, который можно представить в виде струк-турной диаграммы, изображенной на рис. 2.3.

Рис. 2.3. Структурная диаграмма программного комплекса

М1

М2 М3 М4

М5 М6

Уровни Главный модуль I

II

III

Page 10: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

10

Как видно из рисунка, программный комплекс содержит модули трех

уровней. Программный модуль первого уровня М1 (управляющий) вызывает три программных модуля второго уровня М1, М2, М3. Программный модуль второго уровня М4 вызывает два программных модуля третьего уровня М5 и М6.

Проектирование и кодирование программного комплекса начинается с управляющего программного модуля М1. Для его тестирования и отладки необходимо иметь программные модули второго уровня, но так как они еще не спроектированы, вместо них используются имитаторы этих программных модулей – заглушки. Так как назначение заглушек заключается только в том, чтобы программный модуль верхнего уровня был выполнен, они могут быть достаточно простыми.

Рис. 2.4. Тестирование главного программного модуля После того как главный программный модуль М1 оттестирован, про-

ектируется, кодируется и включается вместо «заглушки М2» программный модуль М2. Программные модули М3 и М4 по-прежнему остаются заменен-ными заглушками. В результате получаем следующую структурную диа-грамму (рис. 2.5).

Рис. 2.5. Тестирование программного модуля М2

М1

Заглушка М2 Заглушка М3 Заглушка М4

М1

М2 Заглушка М3 Заглушка М4

Page 11: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

11

Аналогичным образом поступают при подключении к программному комплексу модуля М3 (рис. 2.6).

Рис. 2.6. Тестирование программного модуля М3 Для подключения к программному комплексу модуля М4, необхо-

димо вызываемые им программные модули М5 и М6 заменить заглушками, как показано на рис. 2.7.

Рис. 2.7. Тестирование программного модуля М4 Завершив тестирование и отладку модулей первого и второго уров-

ней, приступают к проектированию и отладке модулей третьего уровня. Как следует из приведенных диаграмм, помимо тестирования и от-

ладки каждого программного модуля одновременно ведется тестирование и отладка программного комплекса в целом. В результате этого, как отмеча-лось выше, после каждого вновь подключаемого программного модуля име-ется работающий вариант программного комплекса.

М1

М2 М3 Заглушка М4

М1

М2 М3 М4

Заглушка М5 Заглушка М6

Page 12: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

12

3. СРЕДСТВА И ПРАВИЛА ПОСТРОЕНИЯ БЛОК-СХЕМ

Блок-схема является формой представления алгоритма с помощью графических символов. Графические символы, их размеры, а также правила построения блок-схем определены государственными стандартами ГОСТ 19.701-90 - Схемы алгоритмов, программ данных и систем. Условные обознгачения и правила выполнения.

3.1. Правила построения блок-схем Блок-схемы состоят из блоков, линий потоков информации и

краткого пояснительного текста. Блоки подразделяются на блоки данных, блоки-процессов и специальные блоки.

Линии потоков информации показывают направление движения данных от блока к блоку. Нормальным направлением линий потока считается направление сверху вниз и слева направо и стрелками не обозначается. Во всех других случаях обозначение стрелками обязательно.

Эти линии представляют собой прямые, параллельные краям листа. В схемах следует избегать пересечения линий.

Линии должны подходить к символу либо слева, либо сверху, а исходить либо справа, либо снизу.

При необходимости линии в схемах следует разрывать для избежания излишних пересечений или слишком длинных линий, а также, если схема состоит из нескольких страниц.

3.2. Условные обозначения блоков Блоки подразделяются на блоки процессов и блоки данных. Рассмот-

рим некоторые наиболее часто используемые блоки. Таблица 3.1

Обозначение Название и назначение Примечание Блоки процессов Процесс. Указывает на какие-

либо вычисления Внутрь блока впи-сываются формулы для вычисления

Предопределенный процесс. Использование ранее созданных и отдельно описанных программ (процедур, функций).

Внутрь блока впи-сывается имя вызы-ваемой процедуры или функции

Page 13: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

13

Решение. Выбор направления выполнения алгоритма в зависи-мости от некоторых переменных условий.

Внутрь блока впи-сывается условие

Модификатор. Используется для обозначения оператора цикла с параметром

Внутрь блока впи-сываются значения параметра

Блоки данных Универсальный блок вво-

да/вывода Обязательно должен быть снаб-жен комментарием, уточняющим ввод это или вывод.

Внутрь блока впи-сываются имена вводимых или вы-водимых перемен-ных

Запоминающее устройство с прямым доступом (магнитный диск, дискета) Должен быть снабжен коммента-рием, уточняющим ввод это или вывод, имя дискового файла.

Внутрь блока впи-сываются имена вводимых или вы-водимых перемен-ных

Ручной ввод (клавиатура, кноп-ки, мышь и т.п.)

Внутрь блока впи-сываются имена вводимых перемен-ных

Документ. Вывод данных на пе-чатающее устройство

Внутрь блока впи-сываются имена выводимых пере-менных

Page 14: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

14

Дисплей (вывод данных на эк-ран)

Внутрь блока впи-сываются имена выводимых пере-менных

Специальные символы Соединитель. Указание связи

между прерванными линиями потока, связывающими блоки.

Внутрь блока впи-сывается метка (цифра или буква)

Терминатор. Начало, конец вы-полнения программы.

Внутрь блока впи-сывается слово «Начало» или «Ко-нец»

Комментарий. Позволяет вклю-чать в блок-схему пояснения, формулы и другую информацию.

Пропуск

3.3. Примеры изображений алгоритмов с помощью блок-схем Алгоритмы подразделяют на линейные, разветвляющиеся, цикличе-

ские и сложные. 3.3.1. ПРИМЕР ЛИНЕЙНОГО АЛГОРИТМА Для линейного алгоритма характерно, что все операторы программы

выполняются последовательно друг за другом от первого до последнего. Ли-нейный алгоритм имеют простейшие вычислительные задачи, в которых производится расчет некоторых выходных величин по заданным исходным

Page 15: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

15

Начало

Вычисление площади прямо-

угольника

Введите стороны

A, B

S = A x B

S

Конец

1

2

3

4

5

6

7

Рис.3.1. Линейный алгоритм

данным. Например: Задача. Вычислить площадь прямоугольной фигуры, если заданы ее

стороны. Блок-схема алгоритма

После блока “Начало” следует

блок, формирующий на экране заставку к программе. Затем осуществляется диалог ввода исходных данных (блоки 3 и 4). Далее вычисляется значение площади S (блок 5). Результат вычислений выводится на экран (блок 6).

Page 16: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

16

3.3.2. ПРИМЕР РАЗВЕТВЛЯЮЩЕГОСЯ АЛГОРИТМА Для разветвляющихся алгоритмов характерно наличие выбора на-

правления выполнения алгоритма в зависимости от некоторых переменных условий. Различают следующие разветвляющиеся алгоритмы:

- развилка полная; - развилка неполная; - выбор. Ниже приведены схемы этих разновидностей алгоритмов. Развилка полная содержит условие, в зависимости от которого вы-

полняется та или иная ветвь развилки (либо Оператор 1, либо Оператор 2).

Рис. 3.2. Развилка полная

Развилка неполная отличается от полной тем, что действие (опера-

тор) выполняется только в одной из ветвей развилки (на рис. 3.3 это ветвь «да», может быть и обратная конструкция, т.е. действие выполняется в ветви «нет»).

Рис. 3.3. Развилка неполная

условие

Оператор 1 Оператор 2

нет да

условие

Оператор

нетда

Page 17: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

17

Для конструкции «Выбор» характерно разветвление алгоритма на несколько возможных ветвей (более двух).

Рис.3.4. Выбор

В качестве примера разветвляющегося алгоритма рассмотрим сле-

дующую задачу: найти частное от деления числа А и на число В, исключив случай деления на ноль.

Рис.3.5. Блок-схема алгоритма вычисления частного двух чисел

значение

Оператор 1 Оператор 2 Оператор i Оператор n

значение 1 значение 2 значение i значение n

Начало

Вычисление частного С=А/В

Введите А и В

A, B

1

2

3

4

1

Page 18: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

18

Рис.3.5. Блок-схема алгоритма вычисления частного двух чисел

(продолжение)

3.3.3. ПРИМЕР ЦИКЛИЧЕСКОГО АЛГОРИТМА Циклические алгоритмы используются для повторения некоторого

участка программы – тела цикла. Различают следующие виды циклических структур:

- цикл с параметром; - цикл-до; - цикл-пока.

Цикл с параметром используется, когда число повторений заранее известно.

Рис. 3.6. Цикл с параметром

Цикл-до служит для организации циклов с заранее неизвестным чис-

Конец

9

С

В=0

С = A/B

1

На 0 делить нельзя

да нет 5

6

7

8

i=i1до i2

оператор

Page 19: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

19

лом повторений. Характерная особенность этого цикла – проверка условия завершения цикла производится после выполнения тела цикла.

Рис. 3.7. Цикл-до Цикл-пока также служит для организации циклов с заранее

неизвестным числом повторений. Но в отличие от цикла-до условие, от которого зависит окончание цикла, проверяется до выполнения тела цикла.

Рис. 3.8. Цикл-пока В качестве примера циклического алгоритма рассмотрим следую-

щую задачу: найти сумму всех натуральных чисел от 1 до заданного N.

оператор

условиенет

да

оператор

условиенет

да

Page 20: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

20

Рис. 3.9. Блок-схема алгоритма вычисления суммы натуральных чисел

В качестве примеров были рассмотрены простейшие задачи, каждая из которых имела алгоритм конкретного типа. На практике же обычно задачи имеют так называемые сложные алгоритмы, т.е. представляют собой различные комбинации простейших алгоритмов.

Начало

Вычисление суммы чисел

Введите N

N

i= 1до N

S = S + i

S = 0

S

Конец

Page 21: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

21

4. ЯЗЫК ПРОГРАММИРОВАНИЯ TURBO PASCAL 7.0

4.1. История создания, возможности и назначение Первая версия языка программирования Паскаль была разработана

на кафедре информатики Стэнфордского университета швейцарским ученым Никлаусом Виртом в 1968 году. Первоначальная цель разработки языка дик-товалась необходимостью инструмента «для обучения программированию как систематической дисциплине».

Однако вскоре обнаружилась чрезвычайная эффективность языка Pascal в самых разнообразных приложениях: от решения небольших задач численного характера до разработки сложных программных систем – компи-ляторов, баз данных, операционных систем. Признание программистов и простых пользователей пришло вследствие появления языка программирова-ния Turbo Pascal (ТР) - диалекта языка, созданного американской фирмой Borland. Эта фирма объединила очень быстрый компилятор с редактором текста и добавила к стандартному Паскалю мощное расширение, что способ-ствовало успеху первой версии этого языка. К настоящему времени Pascal принадлежит к группе наиболее распространенных и популярных в мире языков программирования.

Версия языка программирования Turbo Pascal 3.0 с компилятором стандартного Паскаля появилась на рынке ПЭВМ в 1985 году. С тех пор Пас-каль стал применяться в общеобразовательных, профессионально-технических школах и в сфере высшего образования в качестве "первого" языка программирования. Благодаря простоте использования язык Турбо Паскаль получил широкое распространение и в любительских кругах. Повы-шению популярности Турбо Паскаля способствовал набор небольших сопут-ствующих программ (т.н. Tools), позволяющих получать чрезвычайно ком-пактную, быструю и легко читаемую программу. Эти качества Турбо Паскаля были высоко оценены и в среде профессиональных программистов. Встроен-ный редактор текста использует достаточно широко распространенную сис-тему команд, берущую начало от пакета WordStar и хорошо знакомую каж-дому, кто интенсивно использует ПЭВМ.

В появившемся со временем пакете Turbo Pascal 4.0 было устранено большинство подвергавшихся критике ограничений компилятора, и была повышена производительность системы. Кроме того, новый компилятор вер-сии 4.0 имел существенные отличия от предыдущей версии. Наиболее важ-ным нововведением была UNIT-концепция, заимствованная из языка Моду-ла-2. Это дало возможность реализовать в рамках ТП разработку крупных программных продуктов.

В версии Turbo Pascal 5.0 появился встроенный в среду программи-рования интегрированный отладчик, который позволил повысить производи-

Page 22: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

22

тельность труда. Существенно улучшила технические характеристики реали-зация аппарата перекрытий (overlays), позволяющего строить мощные про-граммные комплексы, рассчитанные на эксплуатацию в малых по объему областях памяти. Суть механизма перекрытий сводится к делению програм-мы на части, поочередно загружаемые по мере необходимости с дискеты или магнитного диска (винчестера) в одну и ту же область памяти, заменяя при этом находившуюся там часть программы.

В этой версии были также исправлены и улучшены библиотеки гра-фических процедур, поставляемые вместе с пакетом Turbo Pascal. При этом обеспечивалась полная совместимость с графическими адаптерами класса VGA (Video Graphics Array).

В рамках версии Turbo Pascal 5.5 были осуществлены дальнейшие преобразования в направлении улучшения технических характеристик паке-та. Наряду с внутренними улучшениями и новыми возможностями встроен-ной справочной системы Help и большим набором учебных примеров важ-ным нововведением явилась реализация в языке концепции объектно-ориентированного программирования (ООП).

Через некоторое время на рынке появилась версия Turbo Pascal 6.0, в которой чисто теоретическая концепция объектно-ориентированного про-граммирования была реализована практически с полным набором объектов, которые могли использоваться для решения прикладных задач пользователя. Кроме того, реализация системы меню приведена в соответствие со стандар-том SAA (Turbo Vision). В качестве практического примера использования новых возможностей был реализован текстовый редактор, встроенный в IDE — Integrated Development Environment — интегрированную инструменталь-ную оболочку. При этом сторонники программирования на Turbo Pascal 6.0 получили возможность не только работать со встроенным многооконным текстовым редактором, но и использовать мышь, которая значительно облег-чает работу пользователя.

В 1992 году фирма Borland International представила пользователям очередную версию языка программирования Паскаль — Turbo Pascal 7.0. Наряду со всеми преимуществами, которые Turbo Pascal 7.0 унаследовал от предыдущей версии (многооконный режим работы, возможность использо-вания мыши, возможность использования при написании программ языка программирования низкого уровня Ассемблер, возможность создавать объ-ектно-ориентированные программы), в нем были произведены изменения и улучшения.

Во-первых: появилась возможность выделять определенным цветом различные элементы исходного текста (зарезервированные слова, идентифи-каторы, числа и т.д.), позволяющая даже неопытным пользователям устра-нять ошибки на этапе ввода исходного текста.

Во-вторых: язык программирования Turbo Pascal 7.0 был расширен

Page 23: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

23

(появилась возможность использовать типизированный адресный оператор, открытые массивы и строки и т.д.).

В-третьих: был улучшен компилятор, вследствие чего "коды про-грамм" стали более эффективными.

В-четвертых: был улучшен интерфейс пользователя. Кроме того, в Turbo Pascal 7.0 расширены возможности объектно-ориентированного про-граммирования (в частности, расширены и улучшены возможности Turbo Vision).

Как видно, каждая новая версия языка представляет собой усовер-шенствование предыдущей, и рассматриваемая версия Turbo Pascal 7.0 очень мало похожа на первоначальную версию Turbo Pascal 3.0 . Однако фирма Borland тщательно следит за совместимостью своих разработок: все про-граммы, разработанные для младших версий, могут практически без измене-ний компилироваться и исполняться на более поздних.

4.2. Лингвистическая концепция языка Паскаль Язык Паскаль, названный в честь французского математика и философа

Блеза Паскаля (1623-1662), был создан как учебный язык программирования в 1968-1971 годах Никлаусом Виртом. В настоящее время этот язык имеет более широкую сферу применения, чем предусматривалось при его создании. Целью работы Вирта было создание языка, который

• строился бы на небольшом количестве базовых понятий, • имел бы простой синтаксис, • допускал бы перевод программ в машинный код простым ком-

пилятором. По природе своей компьютер может выполнять только простейшие

операции, которые можно вводить одну за другой в его память прямо в ма-шинных кодах. Изнурительная монотонность такой работы привела когда-то первых программистов к естественному решению — созданию Ассемблеров, т.е. средств, упрощающих подготовку машинных кодов программ пользова-теля за счет написания их в некоторых мнемонических обозначениях с по-следующим автоматическим переводом. Дальнейшее развитие этих идей привело к созданию языков программирования высокого уровня, в которых длинные и сложные последовательности машинных операций были заменены одним-единственным обозначающим их словом — оператором. К таким язы-кам высокого уровня относится и Паскаль.

Лингвистическая концепция Паскаля пропагандирует системный подход, выражающийся, в частности, в расчленении крупных проблем на меньшие по сложности и размеру задачи, легче поддающиеся решению. Ос-новные принципы Паскаля таковы:

Структурное программирование. Суть его заключается в оформле-

Page 24: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

24

нии последовательностей команд как замкнутых функций или процедур и в объединении данных, связанных по смыслу, в сложные структуры данных. Благодаря этому повышается наглядность текста и упрощается его отладка.

Проектирование сверху вниз. Программист разбивает свою задачу на несколько более простых, после чего каждая из задач решается по отдельно-сти. Затем компонуются результаты проектирования простых задач и реша-ется задача проектирования сверху вниз в целом.

Объектно-ориентированное программирование делает следующий шаг от ремесла к науке программирования. Данные объединяются со свойст-венными им операциями обработки в некоторые объекты (инкапсули-рование).

Влияние Паскаля ощущается в настоящее время в разных языках программирования. Так, среди новых диалектов БЭИСИКа есть Паскаль с символикой БЭИСИКа. Даже в язык С встраивается все больше элементов, порожденных Паскаль-концепцией. Необходимо отметить, что все эти явле-ния находятся в русле характерной для современных языков программирова-ния тенденции к конвергенции (взаимопроникновению).

Набор операторов стандартного Паскаля относительно мал и легко изучаем. Но это порождает проблему расширения языка в приложениях. В Turbo Pascal эта проблема решается за счет поставок большого количества библиотек разнообразных процедур, готовых к употреблению в прикладных программах. Широкое распространение Паскаля привело к появлению на рынке программного обеспечения большого числа инструментальных и при-кладных программ. Подобные программы разработаны для многих проблем-ных областей, однако задача их настройки в соответствии с требованиями пользователей продолжает оставаться достаточно важной.

Page 25: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

25

5. ИНТЕГРИРОВАННАЯ ИНСТРУМЕНТАЛЬНАЯ ОБОЛОЧКА

Пакет Turbo Pascal 7.0 включает в себя интегрированную инструмен-тальную оболочку (далее ИИО). ИИО представляет собой совокупность взаимосвязанных сервисных программных средств, обеспечивающих всесто-роннюю поддержку процесса разработки программ. Эта среда включает в себя систему падающих меню, многооконность, удобный текстовый редак-тор, возможность использовать манипулятор мышь и т.д. Умелое использо-вание возможностей среды Turbo Pascal 7.0 позволяет значительно повысить эффективность этапов проектирования, тестирования и отладки программ.

5.1. Вызов интегрированной инструментальной оболочки Вызов ИИО Turbo Pascal 7.0 осуществляется посредством активиза-

ции файла TURBO.EXE. Полный путь к этому файлу (если Turbo Pascal 7.0 установлен на диске С):

C:\TP\BIN\TURBO.EXE После запуска файла TURBO.EXE на экране дисплея появится фир-

менная заставка с указанием фирмы изготовителя, индекса и года издания данной версии Turbo Pascal, после чего на экран будет выведен основной эк-ран ИИО Turbo Pascal 7.0, внешний вид которого представлен на рис. 5.1.

Рис. 5.1. Основной экран ИИО Turbo Pascal 7.0

Строка меню

Р А Б О Ч А Я З О Н А

Строка состоя-ния

Page 26: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

26

5.2. Структура основного экрана ИИО ТП 7.0 Основной экран ИИО Turbo Pascal 7.0 состоит из трех различных по

функциональному назначению частей: строки меню, рабочей зоны и строки состояния. Для быстрого освоения возможностей пользовательского интер-фейса Turbo Pascal 7.0 в первую очередь необходимо освоить работу с меню. Поэтому обзор элементов экрана начнем со строки меню ТП 7.0.

5.2.1. СТРОКА МЕНЮ Строка главного меню ИИО активизируется нажатием функциональ-

ной клавиши F10 или щелчком мыши. Меню содержит имена следующих опций:

- File: позволяет выполнять все основные операции с файлами (соз-давать новые, загружать имеющиеся, сохранять созданные и отредактиро-ванные файлы, выводить на печатающее устройство содержимое этих фай-лов);

- Edit: позволяет выполнять все основные операции редактирования текста (копировать, вставлять, удалять фрагменты текста, а также восстанав-ливать первоначальный вариант редактируемого текста);

- Search: позволяет осуществлять поиск фрагментов текста и при не-обходимости производить замену найденного фрагмента новым;

- Run: позволяет запускать программу, находящуюся в рабочей зоне, а также при необходимости пошагово выполнять данную программу или ее часть;

- Compile: позволяет осуществить компиляцию программы, которая находится в рабочей зоне;

- Debug: содержит команды, облегчающие процесс поиска ошибок в программе (Breakpoints —точки остановки, окно отладки Watch, окно ис-пользуемых подпрограмм, окно регистров, окно выходных результатов и не-которые другие);

- Tools: позволяет выполнять некоторые программы, не выходя из ИИО Turbo Pascal 7.0;

- Options: позволяет установить необходимые для работы параметры компилятора и ИИО Turbo Pascal 7.0;

- Window: позволяет выполнять все основные операции с окнами (открывать, закрывать, перемещать, изменять размер);

- Help: позволяет получить имеющуюся в системе справочную ин-формацию.

Для перемещения курсора по опциям главного меню используются клавиши-стрелки и манипулятор мышь. Каждая из опций имеет свое собст-венное подчиненное меню (подменю). Активизировать (открыть) подменю какой-либо опции можно несколькими способами:

А) войти в главное меню, нажав клавишу F10, выбрать необходимую

Page 27: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

27

опцию с помощью клавиш-стрелок ← и → (название выбранной опции выде-ляется цветом), нажать клавишу Enter;

Б) щелкнуть кнопкой мыши на названии опции; В) при помощи комбинации клавиш [Alt+клавиша первой буквы

имени опции меню]. Выйти из подменю можно, нажав клавишу [ESC] или клавишу F10. Примечание Помимо главного меню ИИО, в Turbo Pascal 7.0 существует так на-

зываемое локальное меню (см. рис. 5.2). Локальное меню содержит наиболее часто используемые команды из меню File, Edit, Help и некоторых других. Открыть локальное меню можно с помощью комбинации клавиш [Alt+FlO] или правой кнопкой мыши.

Рис. 5.2. Локальное меню

5.2.2. РАБОЧАЯ ЗОНА (DESKTOP) В рабочей зоне в данный момент открыто одно окно с номером 1 в

правом верхнем углу и с заголовком NONAMEOO.PAS. На правой и нижней границах окна имеются линейки прокрутки (см. рис.5.2), позволяющие дви-гать мышью просматриваемый текст в окне. Кроме того, передвижение окна по тексту вверх/вниз на одну страницу может осуществляться с помощью клавиш [PgUp]/[PgDn], а на одну строку —клавишами управления курсором

Линейки

прокрутки

Кнопка закры-тия окна

Page 28: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

28

[↓ и ↑]. Любое окно можно закрыть щелчком кнопки мыши на кнопке закры-тия окна, которая находится в его левом верхнем углу, а также с помощью комбинации клавиш [Alt+F3] или соответствующей операцией, выбранной в меню Window.

5.2.3. СТРОКА СОСТОЯНИЯ Строка состояния, находящаяся в нижней части экрана, демон-

стрирует некоторые из доступных (часто используемых) операций ИИО и комбинации клавиш для их быстрого вызова (т.н. Hot Keys —горячие клави-ши), которые позволяют выполнить соответствующие операции, минуя стан-дартную процедуру их вызова через меню.

Рассмотрим подробно опции главного меню. Замечание. Для начинающих пользователей достаточно детально

изучить только опции меню File, Edit, Window, Help и команду Run меню Run. Необходимость использовать прочие опции будет возни-кать по мере знакомства со средой программирования и усложнения решаемых задач.

5.3. Команды меню опции File Эта опция содержит в себе команды для работы с файлами (созда-

ния, сохранения, печати файлов). Подменю опции File содержит десять ко-манд. Рассмотрим каждую из них.

New. С помощью этой команды производится открытие нового окна

редактирования и нового файла (по умолчанию имя нового файла NONAME<номер>.pas ).

Open. Эта команда позволяет открыть и поместить в окно редакти-

рования существующий на диске файл. После вызова этой команды на экране появится диалоговое окно (рис. 5.3), в котором находится поле ввода имени файла, список файлов текущего каталога и ряд кнопок. Можно ввести имя открываемого файла непосредственно в поле ввода, а можно выбрать его из списка файлов текущего каталога. Переход от поля ввода к списку файлов - с помощью клавиши Tab. Среди кнопок этого окна главными являются кноп-ки Open и Replace. Первая загружает выбранный файл во вновь открываемое окно, вторая – в активное в данный момент окно редактирования. Кроме то-го, имеется кнопка Cancel, которая позволяет отказаться от выполнения ко-манды Open и закрыть ее диалоговое окно. Кнопка Help загружает в окно справку о команде Open.

Page 29: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

29

Рис. 5.3. Диалоговое окно команды Open опции File

Save. Данная команда позволяет записать файл, находящийся в ак-

тивном окне редактирования, на диск. Если файл имеет системное имя (имя по умолчанию), начинающееся с NONAME, то система перед записью по-просит переименовать его (откроет соответствующее диалоговое окно).

Save as. Эта команда дает возможность переименовать и записать на

диск файл, находящийся в активном окне редактирования. Она имеет диало-говое окно, в котором необходимо ввести новое имя файла в поле ввода Save file as и нажать кнопку ОК.

Save all. Данная команда работает так же, как и команда Save, но со-

храняет файлы, находящиеся не только в активном окне, но и во всех осталь-ных открытых к данному моменту окнах редактирования.

Change Dir. Команда позволяет сменить текущий (рабочий) каталог

или диск. Эта команда имеет диалоговое окно (рис.5.4). Существует два спо-соба смены каталога: первый – указать в поле ввода полный путь к новому каталогу; второй – выбрать нужный каталог в дереве каталогов.

Page 30: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

30

Рис.5.4. Диалоговое окно команды Change Dir опции File Переход от поля ввода к дереву каталогов осуществляется нажатием

клавиши Tab. Print. Распечатывает содержимое активного окна редактирования. Printer Setup. Эта команда позволяет указать имя специальной про-

граммы-фильтра, обрабатывающей данные перед выводом их на печать. Dos Shell. Эта команда позволяет временно покинуть интегрирован-

ную среду системы программирования Turbo Pascal 7.0 без выгрузки ее из оперативной памяти. Для того чтобы вернуться в среду Turbo Pascal 7.0 , дос-таточно набрать на клавиатуре команду EXIT.

Exit. Осуществляет выход из среды Turbo Pascal 7.0 и удаление ее из оперативной памяти компьютера. Если перед выбором этой команды не все редактируемые файлы были сохранены, система предложит вам их сохра-нить.

Наиболее часто используемые команды можно вызвать и, не откры-вая соответствующего подменю, с помощью так называемых «горячих» кла-виш. «Горячие» клавиши для команд опции меню File приведены в табл. 5.1.

Таблица 5.1

Клавиши Команда F3 Open (открыть файл) F2 Save (сохранить файл)

Alt+X Exit (выход из Turbo Pascal 7.0)

Page 31: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

31

5.4. Команды опции меню Edit Интегрированная инструментальная среда Turbo Pascal 7.0 имеет

достаточно удобный встроенный текстовый редактор для создания и редак-тирования исходных текстов программ. Текстовый редактор позволяет выде-лять фрагменты текста и выполнять с ними различные действия: удалять, копировать и перемещать в любое нужное место. Кроме того, для перемеще-ния фрагментов текста из одного окна в другое можно использовать допол-нительное окно Clipboard, называемое карманом. Тексты, помещенные в карман, также могут редактироваться.

Способы выделения фрагментов текста. Выделять фрагменты тек-ста можно с помощью мыши (аналогично тому, как это делалось в пакетах Microsoft Office 97) или с помощью клавиатуры. Для выделения с помощью клавиатуры используются сочетания клавиш, приведенные в табл. 5.2:

Таблица 5.2

Клавиши Выделяется фрагмент Shift+↓ Строка вниз Shift+↑ Строка вверх Shift+→ Один символ влево Shift+← Один символ вправо

Shift+Home От курсора до начала строки Shift+End От курсора до конца строки

Shift+PageUp На один экран вниз Shift+PageDown На один экран вверх

Подменю опции Edit включает семь команд (рис.5.5).

Рис.5.5. Подменю опции Edit

Page 32: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

32

Undo. Эта опция позволяет отменить все изменения, внесенные по-

следней операцией редактирования. Многократный выбор этой команды по-зволяет отменить последовательно изменения на несколько шагов назад.

Redo. Отменяет действия, выполненные командой Undo (отмена от-мены).

Cut. С помощью этой команды выделенный фрагмент удаляется из окна редактирования и помещается в карман.

Copy. Эта команда копирует выделенный фрагмент текста в карман (без удаления его из окна редактирования). Фрагмент можно скопировать в карман не только из своего окна редактирования, но и из окна помощи (от-крывается по команде Help).

Paste. Вставляет фрагмент из кармана в то место активного окна, где находится курсор.

Clear. Дает возможность удалить выделенный фрагмент без поме-щения его в карман. Эту команду можно использовать и для очистки карма-на.

Show Clipboard. С помощью этой команды можно открыть окно кармана. Это окно похоже на окно редактирования. Оно содержит все фраг-менты, вырезанные (Cut) или скопированные (Copy). Любой фрагмент, вы-резаемый или копируемый из окна кармана, автоматически помещается в конец текста, в данный момент находящегося в кармане.

«Горячие» клавиши для команд опции меню Edit приведены в табл. 5.3.

Таблица 5.3 Клавиши Команда Ctrl+Insert Копировать в «карман» (Copy) Shift+Del Удалить в «карман» (Cut)

Shift+Insert Вставить из «кармана» (Paste) Alt+BkSp Отменить последнюю команду (Undo)

5.5. Команды опции меню Search В этом режиме очень удобно осуществлять поиск любой не-

обходимой Вам последовательности символов в редактируемых текстах. Find. При выборе этой команды на экране появляется диалоговое

окно (рис.5.6), а пользователю предлагается ввести искомую последователь-ность символов (Text to find) и определить условия и область поиска.

Условия поиска (Options) задаются с помощью нескольких кнопок-флажков. Флажки позволяют установить, следует ли при поиске:

- различать прописные и строчные буквы (Case sensitive); - анализировать только слова или знаки пунктуации тоже (Whole

words only);

Page 33: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

33

- распознавать включаемые в искомую строку спецификаторы фор-мата (Regular expression).

Кроме того, с помощью кнопок-переключателей определяется об-ласть и направление поиска: областью поиска может быть весь текст (Global) или выделенный фрагмент (Selected text); начало (From cursor) или конец об-ласти (Entire scope) может также помечаться курсором; направление поиска может быть либо прямым (Forward), т.е. от начала области к концу, либо об-ратным (Backward).

Рис. 5.6. Диалоговое окно команды Find

Replace. Эта команда позволяет заменять в тексте одни последова-

тельности символов на другие. Диалоговое окно, которое появляется при вы-боре этой команды, очень похоже на соответствующее окно команды Find; исключением является дополнительное поле (New text), в которое необходи-мо поместить строку замены. Если искомая строка найдена, система спраши-вает, следует ли заменить только ее первое вхождение либо все вхождения сразу. Как и в случае команды Find, текст для поиска может быть взят из ок-на редактирования.

Search Again. Эта команда позволяет установить все те условия по-иска, которые были сформированы в результате самого последнего вызова либо команды Find, либо команды Replace и провести поиск.

Page 34: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

34

Goto line number. С помощью этой команды ищется участок текста, содержащий строку с заданным номером. Найденный участок появляется в окне редактирования.

Show last compiler error. Позволяет установить курсор на строку текста программы, содержащую последнюю ошибку, обнаруженную компи-лятором. Одновременно в верхней строке экрана появляется сообщение об ошибке.

Find Error. Позволяет определить место нахождения ошибки, воз-никающей во время выполнения программы. Если флаг Debugging установ-лен (см. меню Option), то при возникновении ошибки курсор автоматически будет помещен на строку, содержащую ошибочный оператор. Однако, если это не так или если программа запущена не из среды Турбо Паскаля, то ошибка локализоваться не будет (будет указан только адрес ошибочного опе-ратора). В этом случае и следует использовать команду Find Error. При выбо-ре этой команды надо задать адрес ошибочного оператора в виде < сегмент >:< смещение >, а система определит его местонахождение.

Find Procedure. Эта команда позволяет отыскать в программе нуж-ную процедуру или функцию. Для инициализации поиска необходимо ввести имя подпрограммы.

5.6. Команды опции меню Run Опция Run позволяет проводить компиляцию, компоновку и выпол-

нение программы, а также осуществлять прогоны программы в различных отладочных режимах.

Run. Эта команда осуществляет компиляцию, компоновку и выпол-нение программы, находящейся в активном окне редактирования. Причем компилируются также модули, определяемые по правилам режима MAKE опции COMPILE. Если со времени последней компиляции исходный текст не претерпел изменений, программа сразу же будет выполнена.

Нажатие клавиши Ctrl-Break приводит к приостановке процесса вы-полнения программы; курсор в этом случае будет установлен на строке, ко-торая непосредственно следует за уже выполненной. Выполнение программы после этого можно продолжить. Повторное нажатие клавиш Ctrl-Break за-вершит работу программы.

Trace into. Выбор этой команды приводит к выполнению очередного оператора программы. После этого выполнение программы приостанавлива-ется. Следующая готовая к выполнению строка программы выделяется под-светкой. Если очередным оператором является обращение к подпрограмме, управление передается внутрь подпрограммы.

Step over. Эта команда аналогична предыдущей, но имеется одно отличие: пооператорное сканирование подпрограмм с ее помощью не прово-дится.

Page 35: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

35

Goto Cursor. Вначале осуществляются все необходимые действия, связанные с компиляцией и компоновкой программы. После этого программа выполняется до строки, помеченной курсором (строка выделяется подсвет-кой). В этом режиме Вы можете пользоваться всеми средствами встроенного отладчика.

Program Reset. Эта команда освобождает память, отведенную для программы, закрывает все файлы, используемые программой, и прекращает текущий сеанс отладки.

Parameters. С помощью этой команды задается строка символов, ко-торая будет интерпретироваться программой как набор ее входных парамет-ров, аналогичных параметрам, задаваемым с помощью командной строки.

5.7. Команды опции меню Compile Использование команд этого подменю поможет Вам провести ком-

пиляцию и компоновку программы, сформировать загрузочные файлы, а в случае необходимости сохранить их на диске. В состав подменю входят пять команд; перейдем к их рассмотрению.

Compile. Эта команда предназначена для компиляции программы или модуля, находящегося в активном окне редактирования. После оконча-ния компиляции на экране появляется окно, содержащее информацию о ре-зультатах компиляции. Если в тексте допущена синтаксическая ошибка, про-цесс компиляции прекращается, в окне редактирования появляется сообще-ние об ошибке, а курсор показывает место ошибки в тексте программы.

Если в тексте компилируемой программы (или модуля) имеется об-ращение к другим модулям, последние должны быть к этому моменту отком-пилированы и храниться на диске в виде файлов с расширением TPU.

Make. С помощью этой команды компилируются: а) программа (модуль) либо находящийся в файле, имя которого ука-

зано в опции Primary File, либо присутствующий в активном окне редактиро-вания;

б) все модули, которые удовлетворяют двум условиям: во-первых, вызываются откомпилированной программой (модулем) из пункта (а) и, во-вторых, изменялись с момента их последней компиляции;

в) модули, которые обращаются к определенным в пунктах (а) и (б) модулям, секции связи которых претерпели изменения. Возникает вопрос, как проверить, изменился ли исходный текст модуля с момента последней компиляции? Для этого дата создания файла с расширением PAS сравнивает-ся с датой создания файла с тем же именем, но с расширением TPU. Если файл с расширением PAS не будет найден, то система воспользуется су-ществующим файлом с расширением TPU.

Все эти, на первый взгляд, сложные правила направлены на то, что-бы упростить разработку больших программных систем, поскольку преду-

Page 36: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

36

сматривают перекомпиляцию только тех модулей, которые изменялись с мо-мента последних испытаний системы.

Build. Эта команда подобна команде Make, но предусматривает пе-рекомпиляцию всех модулей, определенных в пунктах (а), (б) и (в), вне зави-симости от того, подвергались они изменениям с момента последней компи-ляции или нет.

Destination. Позволяет определить, где будет размещаться загрузоч-ный код программы или модуля, в оперативной памяти (MEMORY) или на диске (DISK). Отметим, что даже если установлено значение MEMORY, все дополнительные TPU-файлы, сгенерированные в режимах RUN, MAKE и BUILD, будут записаны на диск. Если же значением является DISK, то на диске создается либо файл с расширением ЕХЕ (для главной программы), либо файл с расширением TPU (для модуля).

Primary File. Использование этой команды предусматривает указа-ние имени файла с расширением .PAS, который будет обрабатываться в ре-жимах RUN, MAKE и BUILD. Диалоговое окно этой команды аналогично диалоговому окну команды открытия файла (Open из подменю File). Если поле Primary File пусто, то обрабатывается файл, содержащийся в активном окне редактирования. Чаще всего, хотя и не всегда, в этом поле следует зада-вать имя файла, содержащего текст главной программы.

Clear primary file. Очищает поле команды Primary File. Information. Даст возможность в основном по результатам компиля-

ции получить информацию о Вашей программе (или модуле). К этой инфор-мации относятся (рис.5.7): длина программы, размеры кодового сегмента, сегмента данных и стека, минимальный и максимальный размеры дополни-тельной памяти, распределение основной и дополнительной памяти.

Рис.5.7. Диалоговое окно команды Information

Page 37: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

37

5.8. Команды опции меню Debug В режиме Debug можно пользоваться большими возможностями от-

ладчика, встроенного в среду программирования Турбо Паскаль 7.0. К ним, в первую очередь, относятся средства работы с окнами наблюдений и средства временной остановки выполнения программы.

Breakpoints. Эта универсальная команда значительно расширяет возможности использования точек останова при отладке программ. Активи-зация опции Breakpoints приводит к появлению на экране диалогового окна, содержащего информацию о всех действующих в данный момент точках ос-танова. О каждой точке останова хранятся следующие данные: номер строки, условие срабатывания и регулярность срабатывания. Последний элемент данных является числом, которое показывает, сколько раз надо пройти через точку останова перед тем, как она сработает.

Для управления диалоговыми окнами предназначены три кнопки: Edit, Delete и View. Они позволяют производить редактирование данных, относящихся к выбранной точке останова; удаление и просмотр текста, свя-занного с выбранной точкой останова.

Активизация режима редактирования (кнопка Edit) приводит к появ-лению нового диалогового окна. Для работы в нем предназначены две кноп-ки: Modify и New. Первая позволяет менять условия уже существующей точ-ки останова, а вторая - сгенерировать новую точку останова.

Отметим, что команда Breakpoint дает возможность работать сразу с несколькими исходными файлами.

Call Stack. Эту команду можно использовать только в том случае, когда выполнение Вашей программы временно приостановлено.

Выбор этой команды приводит к открытию диалогового окна, со-держащего список имен активных в данный момент блоков. Список органи-зуется в форме стека, на дне которого находится имя главной программы, а в вершине имя подпрограммы, которая последней получила управление.

С помощью клавиш-стрелок можно выделить подсветкой имя любой подпрограммы в списке. Если затем нажать клавишу Enter, то на экране поя-вятся значения параметров этой подпрограммы. Эта команда очень удобна для отладки сложных программных комплексов.

Reqister. Позволяет сделать активным окно Reqister, содержащее данные, характеризующие состояние регистров центрального процессора. Это окно целесообразно использовать тогда, когда в программе на Турбо Паскале присутствуют операторы языка Ассемблер.

Watch. Эта команда используется для открытия и активизации окна наблюдений.

Output. С помощью команды Output активизируется окно вывода. В окно помещается информация, во-первых, передаваемая программой на эк-ран дисплея, и, во-вторых, запрашиваемая у пользователя.

Page 38: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

38

User Screen. Эта команда используется для того, чтобы можно было просмотреть результаты работы программы не в отдельном окне, а на всем экране, т. е. можно сказать, что команда User Screen расширяет границы окна вывода до размеров экрана.

Evaluate/Modify. Эта команда позволяет в процессе отладки вывести на экран значение произвольного выражения, а также просмотреть и в случае необходимости изменить значение любой переменной. Выбор этой команды приводит к открытию диалогового окна, содержащего три поля: Expression (Выражение), Result (Результаты) и New Value (Новое значение). Поле New Value можно использовать только тогда, когда в окне Expression находится имя переменной. Для манипулирования полями диалогового окна предназна-чены две кнопки Evaluate (Вычислить) и Modify (Изменить). Заметим, что данные в окне Result выводятся в специальном жестком формате. Для изме-нения формы вывода можно использовать спецификаторы формата.

Add Watch. Эта команда позволяет добавить в окно наблюдений очередное выражение. Активизация Add Watch приводит к открытию диало-гового окна, в котором необходимо поместить выражение, за изменениями значения которого Вы хотели следить в процессе выполнения программы. Это выражение будет помещено в окно наблюдений. Окно наблюдений появ-ляется на экране после нажатия клавиши F6.

Add Breakpoint. Выбор этой команды приводит к открытию окна, предназначенному для определения новой точки останова. В этом окне при-сутствуют все те же позиции, что и в окне, связанном с командой Break-points.

5.9. Команды опции меню Tools Меню Tools предназначено для оперативного доступа к внешним

программам непосредственно из среды системы программирования Turbo Pascal 7.0. Кроме того, использование этой опции позволяет просматривать результаты работы внешних программ-фильтров в специальном окне Mes-sages.

Messages. Выбор этой команды приводит к открытию окна Messages, в которое при соблюдении определенных требований попадают сообщения внешних программ-фильтров, например, Grep. Программы-фильтры анали-зируют содержимое файлов и выбирают из них соответствующую запросу информацию. Именно эта информация и направляется в окно Messages. Сам же анализируемый файл размещается в окне редактирования. Причем возмо-жен переход из окна Messages в то место окна редактирования, где располо-жено текущее найденное сообщение.

Go to next. Позволяет перейти из окна Messages к следующему вы-бранному сообщению анализируемого файла в окне редактирования.

Go to previous. Позволяет перейти из окна Messages к предыдущему

Page 39: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

39

выбранному сообщению анализируемого файла в окне редактирования. Во второй части меню размещаются имена внешних программ, кото-

рые вводятся в меню с помощью команды Tools меню Options. В поставляе-мой версии системы программирования Turbo Pascal 7.0 зарезервированы места для фильтра Grep, компилятора Turbo Assembler, автономного отлад-чика Turbo Debugger и сервисного средства Turbo Profiler.

5.10. Команды опции меню Options Меню Options предназначено для управления режимами компиля-

ции и компоновки программ, написанных на Турбо Паскале, для определения параметров интегрированной среды и, в частности, встроенного отладчика. Специальные средства этого меню позволяют проводить настройку текстово-го редактора, управлять мышкой, выбирать необходимую цветовую гамму и т.п.

Compiler. Выбор этой команды приводит к развертыванию на экране диалогового окна (рис. 5.8), в котором присутствуют кнопки-флаги, служа-щие для управления режимами компиляции, и поле ввода. Кнопки-флаги объединены во вспомогательные групповые окна (их также называют пуль-тами).

Рис. 5.8. Диалоговое окно команды Compiler меню Options

Page 40: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

40

1. С помощью окна Code Generation программист может определять значения флагов, управляющих генерацией кода.

Флаг Force Far Calls дает возможность установить для всех проце-дур и функций дальнюю или ближнюю модель вызова. Напомним, что то же самое можно сделать с помощью директивы компилятора {$F} или атрибутов Near и Far.

Флаг Overlays Allowed управляет генерацией оверлейного кода мо-дулей. Если данный флаг установлен, то это не значит, что любой компили-руемый модуль будет оверлейным. Установка флага Overlays Allowed экви-валентна директиве компилятора {$0+}.

Флаг Word Align Data определяет способ размещения переменных и констант в памяти.

Если флаг установлен, то данные символьных типов выравниваются на начало слова. Это позволяет увеличить скорость выполнения программы, но ведет к нежелательному расходованию памяти. Аналогичная директива компилятора - {$А}.

Флаг 286 Instructions позволяет генерировать код в расчете на про-цессор типа Intel 80286 или не делать этого. Того же эффекта можно добиться с помощью директивы компилятора {$G}.

2. Окно Runtime errors дает возможность установить флаги, обеспе-чивающие контроль ошибок, возникающих в процессе выполнения програм-мы.

Флаг Range Checking включает режим генерации дополнительного кода, служащего для проверки выхода значений переменных и индексов за пределы отведенных для них диапазонов. Аналогичная директива компиля-тора - {$R}.

Установка флага Stack Checking позволяет перед вызовом подпро-грамм проверять, имеется ли достаточное для размещения локальных пере-менных количество свободного пространства в сегменте стека.

Аналогичная директива компилятора - {$S}. Флаг I/O Checking используется для подключения и отключения

средств, контролирующих правильность выполнения операций ввода-вывода. Если средства контроля ввода-вывода отключены (флаг I/O Checking сбро-шен), анализировать правильность выполнения операции ввода-вывода мож-но с помощью системной функции IOResult.

Аналогичная директива компилятора - {$I}. Флаг Overflow checking позволяет контролировать ситуации пере-

полнения, возникающие при работе с данными. Если флаг установлен, то переполнение приводит к завершению выполнения программы и выдаче ди-агностического сообщения. Аналогичная директива компилятора - {$Q}.

3. Окно Debugging содержит два флага - Debug Information и Local Symbols. Еще один дополнительный флаг Information Symbol добавляется

Page 41: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

41

при работе в защищенном режиме. Флаг Debug Information используется для включения и отключения

режима генерации отладочной информации в процессе компиляции. Отла-дочная информация в основном сосредоточена в таблице, связывающей опе-раторы исходного текста с фрагментами кода. Только в том случае, когда установлен флаг Debug Information, можно использовать возможности ин-тегрированного отладчика, к числу которых относятся пошаговое выполне-ние программы, локализация ошибок, точки останова и т.д.

Отладочная информация записывается в ЕХЕ-файл программы или в TPU-файл модуля.

Аналогичная директива компилятора - {$D}, Флаг Local Symbols управляет доступом к локальным переменным и

типизированным константам в режиме отладки. Следовательно, нельзя ис-пользовать опции Watch и Call Stack, если не установлен флаг Local Sym-bols. Устанавливать флаг Local Symbols можно только тогда, когда флаг De-bug Information уже установлен.

Аналогичная директива компилятора - {$L}. Флаг Information Symbol следует устанавливать для того, чтобы

информация о глобальных символах, полученная в результате компиляции, использовалась отладчиком.

Аналогичная директива компилятора - {$Y}. 4. Окно Syntax Options команды Compile позволяет программисту

установить ряд флагов, оказывающих влияние на генерируемый код. Сброс флага Strict Var-String приводит к тому, что не проверяется,

соответствует ли длина строкового параметра с атрибутом Var длине аргу-мента.

Аналогичная директива компилятора - {$V}. Если флаг Complete Boolean Evaluation установлен, то выполняются

все операции, связанные с вычислением значения логического выражения даже тогда, когда результат уже известен. В противном случае вычисления прекращаются, когда становится ясен результат. Например, значения пере-менной А для определения результата выражения

False and (A<1)

знать не обязательно или нет необходимости вычислять значение выражения в скобках в следующем случае:

True or (B=C) Аналогичная директива компилятора - {$В}. Установка флага Extended syntax дает возможность вызывать функ-

ции как процедуры и использовать ASCIIZ-строки. Аналогичная директива компилятора - {$Х}.

Page 42: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

42

Установка флага Typed @ operator делает результат операции @ типизированным указателем. Естественно, тип результата определяется ти-пом аргумента. Если же флаг сброшен, результат операции @ имеет тип Pointer вне зависимости от типа аргумента.

Аналогичная директива компилятора - {$Т}. Флаг Open parameters позволяет использовать в подпрограммах от-

крытые параметры типа String. Аналогичная директива компилятора - {$Р}. 5. Окно Numeric Processing позволяет установить флаги, опре-

деляющие, как будут обрабатываться числа с плавающей точкой, относящие-ся к типам SINGLE, DOUBLE, EXTENDED и СОМР.

Установленный флаг Numeric Processing ориентирует компилятор на работу с числовым сопроцессором (или программами его эмуляции), что дает возможность использовать расширения действительного типа данных.

Аналогичная директива компилятора - {$N}. В свою очередь флаг Emulation позволяет либо использовать все

возможности сопроцессора (если он есть), либо эмулировать его работу про-граммно. Значение флага Emulation анализируется только тогда, когда уста-новлен флаг Numeric Processing.

Аналогичная директива компилятора - {$Е}. 6. Поле ввода Conditional Defines служит для определения ключевых

слов, управляющих работой операторов условной компиляции. Memory size. Эта команда служит для определения размеров сегмен-

та стека и минимального и максимального размеров доступной оперативной памяти.

Аналогичная директива компилятора - {$М}. Linker. С помощью этой опции программист может управлять ре-

жимом работы компоновщика. Выбор команды Linker приводит к разверты-ванию на экране диалогового окна, позволяющего с помощью кнопок-переключателей задать значения параметров Map File и Link Buffer.

Параметр Map File служит для определения условий формирования Map-файла, в который помещается карта распределения памяти компонуемой программы. Этот параметр может принимать одно из четырех значений, ука-занных в окне. Программисту достаточно отметить то значение, которое он выбирает. Выбор Off эквивалентен отказу от создания МАР-файла, осталь-ные значения позволяют определить, какую информацию следует помещать в Map-файл. МАР-файлы используются для отладки программ с помощью внешних по отношению к системе программирования Турбо Паскаль средств отладки, например, Турбо Debugger.

Параметр Link Buffer позволяет программисту указать, должен ли компоновщик размещать необходимые для его работы таблицы и саму про-

Page 43: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

43

грамму в период компоновки в оперативной памяти или ему следует хранить их на диске. Если значением параметра является MEMORY, компоновщик будет работать быстро, но ему может не хватить оперативной памяти, если DISK, то работа компоновщика замедлится, но памяти потребуется меньше.

Debugger. Выбор этой команды приводит к открытию диалогового окна, содержащего, в свою очередь, два групповых окна: Debugging и Dis-play Swapping.

В первом групповом окне присутствует флаг Integrated, установка которого необходима для того, чтобы отладочная информация помещалась в ЕХЕ-файл и можно было использовать средства встроенного отладчика. Вто-рой флаг этого окна STANDALONE показывает, можно ли для отладки про-граммы использовать внешний отладчик - Turbo Debugger или нет. Отметим, что устанавливать флаги Integrated и Standalone имеет смысл тогда, когда программа или модуль компоновались с установленными флагами Debug Information и Local Symbols.

Второе групповое окно служит для определения параметра Display Swapping, который может принимать одно из трех значений: Smart, Always и None. С помощью этих значений определяется, в каких случаях следует пере-ключать экран с воспроизведения окна редактирования на окно вывода. В первом случае (значение None) переключения не будет происходить никогда, т.е. выводимые данные будут накладываться на текст программы; во втором случае (значение SMART) переключения будут связаны с обращениями к экрану для ввода и вывода, а также с вызовом подпрограмм; в третьем случае (значение ALWAYS) мгновенные переключения будут происходить перед выполнением каждого оператора программы. Естественно, что чаще осталь-ных для Display Swapping выбирается значение SMART.

Directories. В этом режиме программист имеет возможность указать системе программирования Турбо Паскаль, в каких каталогах (директориях) следует искать файлы и куда следует помещать файлы, необходимые для ра-боты его программ. Выбор команды Directories приводит к открытию диало-гового окна, содержащего четыре поля, предназначенных для ввода адресов каталогов. Если необходимо ввести несколько адресов, то их следует разде-лять точкой с запятой.

В поле EXE&TPU Directory помещается адрес директории, в ко-торую будут записываться файлы с расширениями ЕХЕ и TPU; в поле Include Directories - адреса директорий, в которых будет осуществляться поиск фай-лов, включаемых в программу с помощью директивы компилятора {$I<имя файла >}; в поле Unit Directories - адреса директорий, в которых расположе-ны файлы системы программирования Turbo Pascal 7.0 с расширением .TPU (например, GRAPH.TPU); и, наконец, в поле Object Directories - адреса дирек-торий, содержащих файлы с расширением .OBJ (эти файлы чаще всего ис-пользуются для хранения объектных кодов внешних подпрограмм, первона-

Page 44: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

44

чально написанных на языке Ассемблер). Browser. С помощью этой команды можно управлять работой брау-

зера. Она имеет диалоговое окно, в состав которого входят четыре групповые окна. Первое Symbols дает возможность указать, какие именно элементы про-граммы считать глобальными символами. С помощью параметра Sub-browsing из второго группового окна можно определить, будет ли вновь от-крываемое окно браузера полностью перекрывать текущее окно браузера или нет. Третье окно служит для задания параметра Preferred pane, определяюще-го, какая информация о символе, соответствующая позиции меню S или по-зиции меню R, будет появляться на экране. Последнее групповое окно Dis-play определяет режим сортировки помещаемых в окно браузера символов.

Tools. Эта команда позволяет дополнить список внешних программ, автоматически вызываемых из интегрированной среды системы программи-рования Turbo Pascal 7.0.

Environment. Эта команда необходима в том случае, когда Вы хоти-те изменить некоторые параметры, связанные с работой интегрированной среды системы программирования Turbo Pascal 7.0. Выбор команды Environ-ment приводит к появлению на экране дополнительного меню с позициями: Preferences, Editor, Mouse, Sturtup, Colors, Save Options и Retrieve options. Рас-смотрим эти позиции.

1. После инициализации Preferences на экране появляется ди-алоговое окно, приглашающее определить значения нескольких параметров и установить флаги в групповых окнах.

Параметр Screen Size определяет количество строк: либо 25, либо 43(50) строк для адаптеров EGA(VGA).

Параметр Source Tracking дает возможность определить, следует ли открывать новое окно редактирования, если в процессе отладки участвует модуль, который еще не был загружен в одно из окон редактирования.

Групповое окно Auto Save содержит значения трех флагов. Установ-ка флага Editor Files приводит к автоматическому сохранению на диске ко-пии файла из окна редактирования перед выходом из среды Turbo Pascal 7.0 или перед прогоном программы.

Флаг Environment позволяет задать режим автоматического сохра-нения текущего состояния среды системы программирования Turbo Pascal 7.0 в файле TURBO.TP в случае выхода из системы. Это очень полезно, посколь-ку новый сеанс работы Вы можете начать в той среде, которую Вы ранее для себя сформировали.

Флаг Desktop необходимо установить, если Вы хотите, чтобы сохра-нялась информация о текущей конфигурации окон редактирования. Эта ин-формация помещается в файл TURBO.DSK (или, если Вы работаете в защи-щенном режиме, в файл Tpx.dsk).

Отметим, что флаг Desktop следует устанавливать только в том слу-

Page 45: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

45

чае, когда установлен флаг Environment. В групповом окне Options размещаются три флага: Auto track source,

Close on go to source и Change dir on open. Флаг Auto track source определяет, выделяется подсветкой или нет в окне редактирования строка, соответст-вующая текущему сообщению в окне Messages. Установка флага Close on go to source приводит к автоматическому закрытию окна Messages при переходе в окно редактирования. И, наконец, флаг Change dir on open меняет теку-щую директорию на ту, в которой находится редактируемый файл.

В групповом окне параметра Desktop file указывается, в какой дирек-тории находится файл Turbo.dsk (или Tpx.dsk).

С помощью параметра Desktop file options, который появляется в меню только при работе в защищенном режиме, определяется, необходимо или нет сохранять после выхода из системы информацию о глобальных сим-волах программы. Эта информация записывается в файл Tpx.psm и может быть использована в следующих сеансах работы с системой программирова-ния. Напомним, что информация о глобальных символах нужна для работы браузера.

2. Выбор позиции Editor приводит к появлению на экране ди-алогового окна с набором флагов и полей ввода, позволяющих управлять ре-жимом работы текстового редактора системы программирования Turbo Pascal 7.0.

Установка флага Create backup files приводит к автоматическому переименованию перед выполнением команды SAVE (см. опцию File) тек-стового файла, связанного с активным окном редактирования, в файл с рас-ширением .ВАК. Таким образом, Вы всегда будете иметь на диске предыду-щую версию Вашей программы или модуля.

Флаг Syntax highlight определяет, выделяются или нет в исходном тексте различные синтаксические элементы разными цветами. Предусмотре-но выделение следующих синтаксических элементов: ключевых слов, иден-тификаторов, комментариев, разделителей, строк символов, чисел и фрагмен-тов текста на Ассемблере. Кроме того, имеется возможность задавать груп-повые имена файлов, на которые распространяется выделение синтаксиса цветом.

Остальные флаги и поля ввода позволяют управлять режимами вставки/замены текста, положением курсора, работой с блоками и средствами табуляции.

3. Позиция Mouse команды Environment используется для управ-ления режимами работы мыши. Активной клавишей мыши, как известно, является левая (неважно, имеет мышка две или три клавиши). Основные дей-ствия выполняется именно с помощью этой клавиши.

Флаг Revers House Buttons позволяет сделать активной клавишей мыши правую. Параметр Right Mouse Button может принимать окно из шес-

Page 46: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

46

ти приводимых в диалоговом окне значений. Каждое значение (кроме Nothing) определяет ту функцию, которая

будет выполняться после нажатия правой клавиши (или левой, если установ-лен флаг Reverse Mouse Buttons) мыши. Функции в основном дублируют не-которые режимы работы системы программирования Turbo Pascal 7.0. Пара-метр Mouse Double Click позволяет регулировать максимально допустимый интервал времени между двумя последовательными нажатиями клавиши мыши.

4. Позиция Sturtup позволяет выбрать глобальные характеристики режима работы интегрированной среды с помощью установки флагов и зада-ния в специально выделенных полях ввода значений ряда параметров.

Флаг Dual Monitor Support управляет переходом в режим двойного монитора. Этот режим возможен только в том случае, если параметр снабжен двумя видеоадаптерами. В режиме двойного монитора второй монитор обычно связан с окном вывода.

Флаг Graphics Screen Save позволяет в процессе отладки сохранять образ графического экрана в памяти.

Флаг EGA/VGA palette save дает возможность в случае необхо-димости восстановить стандартную 16-цветную EGA-палитру.

Флаг CGA Snow Checking используется только для адаптеров CGA и связан со способом обновления экрана.

Флаг LCD Colour Set нужно устанавливать только в том случае, ес-ли Вы используете монитор с жидкокристаллическим экраном.

Установка флага Use expanded memory разрешает интегрированной среде использовать для работы дополнительную память.

Флаг Load Turbo.tpl устанавливается в том случае, когда жела-тельно, чтобы файл Turbo.tpl, представляющий собой библиотеку системных модулей, загружался средой в оперативную память при запуске.

В диалоговом окне присутствуют еще четыре поля, содержащие: размеры областей динамической памяти, отводимые под различные элементы среды, и адрес директории (чаще всего на виртуальном диске), которая мо-жет использоваться для ускорения работы интегрированной среды в случае отсутствия дополнительной памяти.

Без особой необходимости заданную по умолчанию установку фла-гов менять не рекомендуется. Это, в первую очередь, связано с флагом Load Turbo.tpl.

5. Позиция Colors дает возможность менять основной и фоновый цвета всех основных и вспомогательных окон интегрированной среды.

Open. Эта команда дает возможность прочитать из тех файлов, име-на которых Вы укажете, данные, определяющие значения параметров на-стройки среды и конфигурацию окон редактирования, и установить их в ка-честве текущих.

Page 47: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

47

Save. Ее следует использовать тогда, когда Вы хотите сохранить па-раметры той новой среды, которую Вы сформировали. Параметры компиля-тора, компоновщика и непосредственно самой среды обычно помещаются в файл Turbo.tp, данные о конфигурации окон редактирования и привязка их к файлам - в файл Turbo.dsk (или Tpx.dsk). Как уже было отмечено, сохранить параметры среды можно с помощью диалогового окна Auto save опции Envi-ronment.

Save as. Эта команда позволяет использовать для сохранения пара-метров среды и данных о конфигурации файлы, имена которых вводятся в соответствующее окно.

5.11. Команды опции меню Window Эта опция объединяет команды управления окнами. Каждое из от-

крытых окон может быть развернуто на весь экран или занимать только часть экрана. Можно по-разному располагать окна на экране.

Tile. Эта команда размещает на экране дисплея все открытые в дан-ный момент окна (рис. 5.9).

Рис. 5.9. Расположение на экране открытых окон мозаикой

Размеры всех окон одинаковы, друг друга они не перекрывают (рас-положены мозаикой).

Cascade. Эта команда также располагает на экране все открытые в данный момент окна, но в отличие от предыдущей команды окна располага-ются друг за другом (каскадом) (рис. 5.10).

Page 48: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

48

Рис.5.10. Расположение на экране открытых окон каскадом При этом не перекрытым остается только активное окно, у осталь-

ных видны только заголовки. Close all. Эта команда закрывает все открытые окна. Refresh Display. Если запущенная программа выводит результаты

непосредственно на экран интегрированной среды (а не в окно вывода), то для восстановления содержимого экрана следует воспользоваться этой ко-мандой.

Size/Move. С помощью этой команды можно изменять размеры и расположение окон. Операции можно производить с помощью клавиш со стрелками или с помощью мыши.

Zoom. Если размер активного окна может быть увеличен, то этой командой можно распахнуть окно до максимальных размеров. В противном случае происходит восстановление предыдущих размеров окна.

Next. Эта команда активизирует окно, следующее по порядку за ак-тивным в данный момент.

Previous. Эта команда активизирует окно, которое было открыто не-посредственно перед активным в данный момент.

Close. Закрывает активное окно. Закрыть окно можно также двойным щелчком мыши по квадратику в левом верхнем углу активного окна.

List. С помощью этой команды на экран выводится список всех от-крытых окон. Можно выбрать из списка любое окно и активизировать его нажатием клавиши Enter.

«Горячие» клавиши для команд опции меню Window приведены в табл. 5.4.

Page 49: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

49

Таблица 5.4 Клавиши Команда

F6 Следующее окно (Next) Alt+F3 Закрыть активное окно (Close)

F5 Максимальный размер активного окна (Zoom)

5.12. Команды опции меню Help Используя опцию меню Help, можно получить справочную инфор-

мацию по любым интересующим Вас аспектам языка Турбо Паскаль и его интегрированной среды. Эта информация, хранящаяся в файле TURBO.HLP, подается пользователю в специальном окне, которое называется окном по-мощи или окном Help. Открыть окно помощи можно не только с помощью средств главного меню, но и другими способами:

- во-первых, можно получить конкретную справку о выбранной оп-ции меню или об активном диалоговом окне, просто нажав клавишу F1 или кнопку Help, если она присутствует на экране;

- во-вторых, справку о языке можно получить, поместив курсор в ок-не редактирования под интересующим Вас словом и нажав клавиши Ctrl-Fl (контекстная помощь).

Если окно Help активно, то присутствующие в нем подсвеченные ключевые слова или предложения могут быть выбраны для получения спра-вочной информации. Удобно в этом случае пользоваться мышью.

Кроме того, тексты из окна Help могут копироваться в карман. Contents. Вызвав эту команду, Вы окажетесь в системе справочной

информации. Детальное оглавление позволит быстро найти любую интере-сующую Вас часть этой информации.

Index. Эта команда позволит получить на экране диалоговое окно с обширным списком ключевых слов, с которыми связана имеющаяся в систе-ме справочная информация.

Для того чтобы подвести курсор к нужному ключевому слову, не обязательно пробегать весь список, достаточно набрать на клавиатуре на-чальные буквы искомого слова.

Topic Search. Дает возможность получить справку о языковой кон-струкции. Для этого необходимо, находясь в активном окне редактирования, подвести курсор к интересующему Вас слову, а затем войти в меню и вы-брать данную команду (но проще использовать сочетание “горячих” клавиш Ctrl+Fl).

Previous Topic. С помощью этой опции пользователь может восста-новить на экране содержимое предыдущего окна помощи. Всего в системе сохраняется двадцать запрошенных последними экранов со справочной ин-формацией.

Using Help. Выбор этой команды приводит к появлению на экране диалогового окна с текстом, поясняющим, как пользоваться справочной ин-

Page 50: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

50

формацией. Если Вы уже находитесь в окне помощи, перейти в этот режим можно, просто нажав F1.

Files. Эта впервые появившаяся в версии Turbo Pascal 7.0 опция дает возможность добавлять в справочную базу системы новые Help-файлы, а в случае необходимости удалять ранее добавленные.

Compiler directives. Позволяет получить информацию о директивах компилятора.

Procedure and functions. Содержит данные о подпрограммах. Reserved words. Дает информацию о зарезервированных словах язы-

ка. Standart units. Содержит информацию о стандартных Unit-блоках,

входящих в состав системы программирования Turbo Pascal 7.0. Turbo Pascal Language. Позволяет получить информацию о синтак-

сических элементах языка. Error messages. Содержит список сообщений об ошибках периодов

компиляции и выполнения. About. Позволяет получить информацию об используемой версии

системы программирования Turbo Pascal 7.0.

Page 51: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

51

6. АЛФАВИТ ЯЗЫКА И СПЕЦИФИКА ИСПОЛЬЗОВАНИЯ СИМВОЛОВ

Язык программирования Turbo Pascal 7.0, как и любой другой, имеет свой алфавит. Как правило, алфавитом языка программирования называют набор символов (разрешенный к использованию и воспринимаемый компи-лятором), с помощью которого могут быть образованы величины, выражения и операторы данного языка.

Алфавит языка включает в себя все символы, представленные в таб-лице кодов ASCII. Символы с кодами от 0 до 127 представляют собой так называемую основную таблицу кодов ASCII. Их состав и порядок определе-ны американским стандартом на коды обмена информацией. Основная таб-лица кодов ASCII идентична на всех IBM-совместимых компьютерах. Вторая часть таблицы (дополнительная таблица), охватывающая символы с кодами в диапазоне от 128 до 255, стандартом не регламентируется и, в зависимости от назначения компьютера, содержит различные наборы символов. В частности, она может включать национальный алфавит (например, русский).

Итак, алфавит языка Turbo Pascal 7.0 составляют: 1. Символы, используемые для составления идентификаторов: - заглавные и строчные латинские буквы; - десять арабских цифр от 0 до 9 (в идентификаторах цифры могут

быть использованы наряду с буквами, начиная со второй позиции); - символ подчеркивания (ASCII-код 95). 2. Символы-разделители: - пробел (ASCII-код 32); основное назначение этого символа –

разделение ключевых слов и имен; - управляющие символы (ASCII-коды от 0 до 31); применяются

при описании строчных символьных констант; управляющие символы с ASCII-кодами: 9 (табуляция), 10 (вниз), 13 (клавиша Enter) используются в качестве разделителей при написании программ.

3. Специальные символы – символы, выполняющие определенные функции при построении различных конструкций языка:

+ - * / = { } [ ] ( ) < > . , ‘ : ; ^ @ # $ 4. Составные знаки – группы символов, которые воспринимаются

компилятором как единое целое: <= >= := (* *) (. .) .. 5. Зарезервированные (служебные) слова. Это полные или сокра-

щенные слова английского языка (например: BEGIN, END, FOR и т.п.). Заре-

Page 52: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

52

зервированные слова не могут быть использованы в качестве идентифи-каторов переменных, констант, процедур.

Таблица 6.1 Полный список всех зарезервированных слов Turbo Pascal 7.0

Absolute Function Program And Goto Public Array If Record Asm Implementation Repeat Assembler In Set Begin Inherited Shl Case Inline Shr Const Interface String Constructor Interrupt Then Destructor Label To Div Mod Type Do Near Unit Downto Nil Until Else Not Uses End Object Var External Of Virtual Far Or While File Packed With For Private Xor Forward Procedure

Все остальные символы (так называемые “неиспользуемые” симво-

лы) – это символы расширенной таблицы ASCII (коды от 128 до 255) и неко-торые символы из основной таблицы ASCII (например: &, !, %, ~, “ ) – не входят в алфавит языка. Их можно использовать только в текстах ком-ментариев, а также в виде значений строковых и символьных констант.

Текст программы на языке Turbo Pascal должен содержаться в дис-

ковом файле. Этот файл по своей природе - текстовый. Поэтому он может быть сформирован любым доступным текстовым редактором (в частности, встроенным редактором системы Turbo Pascal).

Текст Pascal-программы представляет собой последовательность строк, состоящих из символов, образующих алфавит языка. Строки про-граммы завершаются специальными управляющими символами - ;. Макси-мальная длина строки составляет 126 символов.

Page 53: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

53

7. ОБЩАЯ СТРУКТУРА ПРОГРАММ В TURBO PASCAL 7.0.

Любую программу, написанную на Turbo Pascal 7.0, можно условно разделить на три основные части (рис.7.1):

- раздел объявлений и соглашений (декларационная часть); - раздел текстов процедур и функций; - раздел основного блока.

Рис.7.1. Структура Pascal –программы

Рассмотрим подробнее каждый из этих разделов.

РАЗДЕЛ ОБЪЯВЛЕНИЙ И СОГЛАШЕНИЙ PROGRAM Заголовок программы {$ …} Глобальные директивы компилятора USES Подключаемые библиотеки LABEL Подраздел объявления глобальных меток CONST Подраздел объявления глобальных констант TYPE Подраздел объявления глобальных типов VAR Подраздел объявления глобальных переменных РАЗДЕЛ ТЕКСТОВ ПРОЦЕДУР И ФУНКЦИЙ

PROCEDURE (FUNCTION) Заголовок процедуры (функции) LABEL Подраздел объявления локальных меток CONST Подраздел объявления локальных констант TYPE Подраздел объявления локальных типов VAR Подраздел объявления локальных переменных

BEGIN Основной блок процедуры или функции END; РАЗДЕЛ ОСНОВНОГО БЛОКА ПРОГРАММЫ BEGIN Основной блок программы END.

Page 54: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

54

7.1. Раздел объявлений и соглашений В первой части программы программист сообщает компилятору, ка-

кими идентификаторами (именами) он обозначает данные (константы и пе-ременные), а также определяет собственные типы данных, которые он в дальнейшем намеревается использовать в данной программе. Длина иденти-фикатора может быть произвольной, однако компилятор воспринимает толь-ко первые 63 его символа. Важно помнить, что в языке Turbo Pascal соответ-ствующие заглавные и строчные буквы в идентификаторах и служебных сло-вах не различаются. Таким образом, следующие три идентификатора обозна-чают одну и ту же переменную:

index INDEX Index ЗАГОЛОВОК Строка заголовка состоит из зарезервированного слова PROGRAM

и имени программы. В Турбо Паскале эта строка не обязательна, и ее можно без ущерба исключить. Но правила хорошего тона в программировании тре-буют задания некоторого имени программы, чтобы уже при первом знаком-стве можно было получить хоть какую-нибудь информацию о ее назначении.

Имя программы является идентификатором и обладает всеми его свойствами. В частности, внутри тела программы не могут быть объявлены объекты, имя которых совпадает с именем программы.

ГЛОБАЛЬНЫЕ ДИРЕКТИВЫ КОМПИЛЯТОРА В этом разделе программы компилятору можно дать указания, опре-

деляющие режимы его работы при трансляции последующей программы. Эти указания начинаются парой символов {$ и заканчивающиеся символом }. Символ $ (доллар) должен стоять сразу же после открывающей фигурной скобки (без пробелов и символов табуляции), далее следует одиночная буква, определяющая конкретный режим компиляции. После буквы может присут-ствовать знак '+' (плюс) или '-' (минус), задающий соответственно установку или отмену заданного режима, например:

{$В-} {$N+) Допускается одновременная установка сразу нескольких режимов в

одной директиве. В этом случае директивы отделяются друг от друга запя-той, например:

{$B+, I-, N-} Директивы компилятора содержат "заказы" на включение в текст

Page 55: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

55

программы фрагментов других программ (из соответствующих файлов), ин-формацию для отладчика или сведения о необходимости использования арифметического сопроцессора и т.п.

ОПЕРАТОР USES Оператор USES играет важную роль в подключении к тексту про-

граммы системных модулей из библиотек. В этом операторе Вы указываете компилятору, из какой библиотеки использует модули данная программа, чтобы компилятор выбрал соответствующие модули из этой библиотеки и включил их в текст программы. Понятия "библиотека", "модуль", "блок" со-ставляют основу терминологии программирования на Паскале. Библиотека включает набор модулей, каждый из которых замкнут, имеет свое имя, ком-пилируется отдельно и к нашей программе подключается уже как "черный ящик" с известным интерфейсом.

Оператор USES может быть использован в программе только один раз, при этом у него есть свое четко определенное место (он предваряет все прочие операторы и разделы).

Названия библиотек, подключаемых к программе с помощью опера-тора USES, должны разделяться запятой. Например:

USES Crt, Graph, String, Overlay; ОБЪЯВЛЕНИЯ ГЛОБАЛЬНЫХ МЕТОК, КОНСТАНТ, ТИПОВ И

ПЕРЕМЕННЫХ Следом за строкой, содержащей оператор USES, идут строки объяв-

ляющие: - метки (LABEL); - константы (CONST); - определенные пользователем типы данных (TYPE); - переменные (VAR). В разделе описания меток LABEL содержатся перечисленные через

запятую имена меток переходов. Метки предназначены для организации по-следовательности вычислений. С помощью меток можно указать (отметить) те операторы, на которые будет передано управление из других точек про-граммы. Передача управления реализуется с помощью специального опера-тора перехода (подробно рассмотрен ниже). Следует помнить, что имена ме-ток переходов не должны дублировать друг друга. Имя метки перехода мо-жет представлять собой целое число (от 0 до 9999), строку символов или символьно-цифровую конструкцию. Например:

LABEL 1, 5, 9999, h2, 4t32e , metka_l

Page 56: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

56

ОПИСАНИЕ КОНСТАНТ В разделе CONST содержатся перечисленные через запятую кон-

станты, используемые в программе. Например: CONST Year=1995; Month='Июль' ; Day='Понедельник' ;

Константы – это величины, получающие свои значения при

компиляции программы (говорят: “константы инициализируются компилятором”), и в ходе выполнения программы они не изменяют своих значений.

ОПИСАНИЕ ТИПОВ И ПЕРЕМЕННЫХ Раздел описания типов TYPE позволяет программисту определить в

программе новый тип данных (множество значений). Типы обозначаются именами (идентификаторами) и в дальнейшем могут служить для описания переменных.

В разделе описания глобальных переменных VAR содержится спи-сок переменных, используемых в программе, и определяется их тип. Напри-мер:

VAR А, В, С: INTEGER; DDT : REAL;

(Переменным А, В и С присваивается тип INTEGER (целое число), а пере-менной DDT присваивается тип REAL (вещественное число).

Переменная – это величина, с которой производятся действия. Пе-ременная обозначается идентификатором, с каждой переменной связывается ее тип, определяющий множество допустимых значений этой переменной и соответственно набор допустимых операций. В отличие от констант пере-менная получает свое значение в ходе выполнения программы, и оно может неоднократно изменяться.

Примечание В Турбо Паскале не требуется жесткое соблюдение порядка следова-

ния объявлений. Можно, например, сначала описать переменные, константы, а потом метки. При этом каждый из этих разделов может встречаться в про-грамме несколько раз или вообще не встречаться в ней.

Page 57: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

57

7.2. Процедуры и функции Процедуры и функции определяют часть программы как отдельную

синтаксическую единицу (подпрограмму), дают ей имя. Впоследствии дейст-вия, сосредоточенные в процедуре (функции), могут быть выполнены (вы-званы) посредством указания ее имени. Доступ к процедуре (функции) может быть осуществлен из любого места основного блока программы, а также из любой процедуры или функции, описание которых следует ниже.

ЗАГОЛОВОК ПРОЦЕДУРЫ ИЛИ ФУНКЦИИ Если в программе используются процедуры и/или функции, то необ-

ходимо описать их заголовки, указав при этом список используемых ими па-раметров (обычно вслед за заголовком процедуры или функции располагает-ся основная часть (тело процедуры или функции)). Как и программы, проце-дуры имеют имена. С помощью параметров можно передавать процедуре различные величины (например, значения переменных). Таким образом реа-лизуется возможность вызова одной и той же процедуры с разными данными из разных мест программы.

В списке параметров процедуры объявляются не только их имена, но и типы. Например, в следующем объявлении процедуры

PROCEDURE Summe (VAR Sum: INTEGER; VAR X, Y : BYTE)

указано наличие трех параметров, причем все они — целочисленные. Одна переменная имеет тип INTEGER и имя Sum, в то время как две других имеют имена Х и Y и тип BYTE, определяющий несколько меньший размер области памяти, выделяемый под переменную.

Процедуры и функции подробно рассмотрены ниже. ОБЪЯВЛЕНИЯ ЛОКАЛЬНЫХ МЕТОК, КОНСТАНТ, ТИПОВ И ПЕ-

РЕМЕННЫХ Вы можете объявить внутри процедуры локальные метки, констан-

ты, типы данных и переменные. Локально объявленные переменные доступ-ны только внутри той процедуры/функции, где они объявлены, а вне ее счи-таются недоступными. Это позволяет не заботиться о совпадении имен объ-ектов внутри процедуры/функции и вызывающей ее программы.

ТЕЛО ПРОЦЕДУРЫ/ФУНКЦИИ Тело процедуры/функции играет ту же роль, что и основной блок

программы. Оно включает в себя операторы языка Паскаль, которые занима-ются обработкой данных, вводом и выводом. Как и тело любой программы, тело процедуры/функции ограничивается зарезервированными словами BE-GIN и END. Отличие лишь в том, что вслед за зарезервированным словом

Page 58: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

58

END следует не точка, а точка с запятой.

7.3. Основной блок программы Основной блок программы состоит из последовательности опе-

раторов, причем работа программы начинается именно с первого оператора основного блока программы. Тело основного блока программы ограничено служебными словами BEGIN и END. Обратите особое внимание на наличие точки после оператора END.

Одна из наиболее характерных особенностей классической Паскаль-программы — малый размер основного блока программы, который играет роль координатора и только вызывает несколько подпрограмм (процедур и функций), выполняющих все необходимые действия.

7.4. Комментарии В текстах Pascal-программ допускаются фрагменты пояснительного

характера - комментарии. Наличие комментариев не изменяет смысл про-граммы и не влияет на ее выполнение.

В Turbo Pascal комментарии представляют собой произвольную по-следовательность символов (не обязательно из алфавита языка; то есть до-пускаются и русские буквы), заключенную в фигурные скобки { и } или в разделители вида (* и *) , например:

{Это комментарий} (*А это длинный комментарий, расположенный на нескольких строках*) Вложенность комментариев друг в друга допускается только для

комментариев, заключенных в различные пары скобок, например:

{Комментарий (*Вложенный комментарий*) Комментарий} Необходимо внимательно следить за парностью скобок, т.к. наличие

только открывающей скобки и отсутствие закрывающей представит весь по-следующий текст программы как комментарий, что может привести к игно-рированию его транслятором.

Комментарии очень важны для документирования (пояснения) про-граммы. В комментариях указывается вся та информация, которая призвана в будущем служить более глубокому пониманию программы и упорядочению программного текста. К такой информации можно отнести следующую:

• имя файла, в котором хранится программа,

Page 59: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

59

• краткое описание назначения программы, • авторские права, • используемый язык программирования и версия компилятора, • версия программы и дата последнего изменения, • пояснение назначения переменных, • замечания о назначении операторов и частей программы. Старайтесь писать комментарии с таким расчетом, чтобы, взяв свою

программу через полгода, Вы смогли понять, как она работает. Не экономьте на комментариях. Комментарии большого размера не ухудшают качества программы.

Пример текста Паскаль-программы:

Program prim; Var S,P,Rv,Ro,Xu,Yu,Xv,Yv,Xz,Yz: Real; Function R(X1,Y1,X2,'Y2: Real): Real; Begin R:= Sqrt (Sqr(X1-X2) + Sqr(Y1-Y2)) End; {Конец объявления функции R} Procedure Tre(Xu,Yu,Xv,Yv,Xz,Yz: Real; Var S,P,Rv,Ro:Real); Var A,B,C: Real; {Локальные переменные блока Тге} Begin {Начало тела процедуры}

А:= R(Xu,Yu,Xv,Yv); B:= R(Xv,Yv,Xz,Yz); {Вычисление} С:= R(Xu,Yu,Xz,Yz); { сторон треугольника } Р:= (А + В + C)/2; S:= Sqrt (P*(P-A)*(P-B)*(P-C)); Rv:= S/P; Ro:= (A*B*C)/(4*S); P:= 2*P

End; {Конец объявления процедуры Tre} BEGIN {Начало тела основной программы} Readln (Xu,Yu,Xv,Yv,Xz,Yz); Tre (Xu,Yu,Xv,Yv,Xz,Yz,S,P,Rv,Ro); Write ('Площадь:', 5:7:4,'Радиусы:', Rv:7:4. Ro:7:4); WriteLn (' Периметр: ', P:7:4); ReadLn; END.

Page 60: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

60

8. ТИПЫ В ЯЗЫКЕ ТУРБО ПАСКАЛЬ

В языке Паскаль любая переменная характеризуется своим типом . Под типом в данном случае понимается множество значений, которые мо-жет принимать переменная и, как следствие, множество операций , допус-тимых над переменной.

Турбо Паскаль является языком жесткой типизации. Это означает, что тип переменной определяется при ее описании и не может быть изменен. Переменная может участвовать только в операциях, определенных ее типом. Такой подход способствует большей аккуратности и ответственности при составлении программы, делает их поддающимися автоматической (при ком-пиляции) проверке на корректность и в конечном итоге приводит к более высокой надежности создаваемых программ.

Паскаль имеет развитую и изощренную систему типов. На основе небольшого числа стандартных типов программист может конструиро-вать данные произвольной структуры и сложности, адекватно отражающие информационную природу задачи.

Турбо Паскаль наследует систему типов эталонного языка, сущест-венно расширяя ее как в смысле добавления очевидных практически полез-ных типов (например, строковых), так и введением принципиально новых понятий, открывающих нетрадиционные возможности в программировании (в частности, объектов).

Система типов языка Турбо Паскаль представлена на схеме (рис.8.1). Базовыми в системе типов являются простые типы. Составные типы

по определенным правилам строятся из простых. Ссылочные типы образуют-ся из любых других типов. Составные и ссылочные типы можно считать не-которыми правилами для построения более сложных типов из более простых. Ограниченные типы формируются из простых типов путем сужения их об-ласти допустимых значений. Первичными в иерархии типов являются стан-дартные скалярные типы, представляющие традиционные в языках програм-мирования множества значений (целые, вещественные, символьные, булев-ские) и их модификации, учитывающие архитектурные особенности аппара-туры.

Процедурные типы в некотором отношении расширяют традицион-ное понятие подпрограмм, позволяя обращаться с подпрограммами как с пе-ременными.

Несколько особняком стоят объектные типы, или объекты. Являясь, с формальной точки зрения, обобщением комбинированных типов (записей), они позволяют радикально изменить подход к разработке программ, предла-гая так называемый объектно-ориентированный стиль программирования.

Page 61: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

61

Стандартные скалярные типы в языке Турбо Паскаль распадаются на

Система типов Турбо Паскаля

Простые типы

Скалярные Стандартные скалярные

Ограни-ченные

Перечис-лимые

Составные типы Регулярные

(массивы)

Комбинированные (записи)

Файловые

Множественные

Строковые

Объекты

Ссылочные типы

Процедурные типы

Рис. 8.1. Типы в Турбо Паскале

Page 62: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

62

четыре группы: • целые типы; • вещественные типы; • символьный тип; • булевский тип. На основе стандартных скалярных типов имеется возможность обра-

зовывать пользовательские скалярные типы. Есть два способа порождения новых скалярных типов - ограниченные и перечислимые типы.

Любой скалярный тип характеризуется множеством его различных значений, среди которых установлен линейный порядок. Все скалярные ти-пы, кроме вещественных, называются дискретными .

8.1. Целые типы Эта группа типов обозначает множество целых чисел в различных

диапазонах. Имеется пять целых типов, различающихся допустимым диапа-зоном значений и размером занимаемой памяти. Целые типы обозначаются идентификаторами Integer, Byte, ShortInt, Word, LongInt; их характеристики приведены в табл. 8.1.

Целые типы Таблица 8.1

Тип Диапазон значений Размер памяти ShortInt -128..127 1 байт Integer -32768..32767 2 байта LongInt -2147483648..2147483647 4 байта Byte 0..255 1 байт Word 0..65535 2 байта

Значения целых типов могут изображаться в программе двумя спо-

собами: в десятичном виде и в шестнадцатеричном коде. В последнем случае в начале такого кода ставится символ ‘$’.

Примеры: 123 -1 $F1 (десятичное представление 241) 0$B80 В Турбо Паскале заданы два предопределенных целых числа: MaxInt = 32767 MaxLongInt = 2147483647

Page 63: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

63

8.2. Вещественные типы Эта группа типов обозначает множества вещественных значений в

различных диапазонах. Турбо Паскаль поддерживает четыре различных ве-щественных типа. Они именуются идентификаторами Real, Single, Double, Extended и Comp и имеют характеристики, представленные в табл. 8.2.

Вещественные типы Таблица 8.2

Вещественный тип

Диапазон значений

Число цифр мантиссы

Размер памяти

Real 2.9 E-39..1.7E38 11-12 6 байт Single 1.5E-45..3.4E38 7-8 4 байта Double 5.0E-324..1.7E308 15-16 8 байт Extended 3.4E-4932..1.1E493 19-20 10 байт Comp -2E+63..+2E+63-1 8 байт

Примечания 1. Хотя тип Comp считается вещественным типом, он содержит толь-

ко целые числа из весьма значительного диапазона, которые представляются в вычислениях как вещественные ( с нулевой мантиссой).

2. Все вещественные типы, кроме Real, могут использоваться в про-грамме, вообще говоря, только если сделаны соответствующие опции компи-лятора. Для корректной компиляции программы, использующей эти типы, можно также применить директиву компилятора {+N}.

Вещественные значения могут изображаться в форме с фиксирован-ной точкой и в форме с плавающей точкой. В первом случае целая и дробная части вещественного числа отделяются друг от друга символом ‘.’ (точка). Обе эти части должны обязательно присутствовать, например:

17.384 0.5 Вещественное число в форме с плавающей точкой записывается как

пара вида: <мантисса>Е<порядок> Такое обозначение понимается как “мантисса, умноженная на 10 в

степени, равной порядку”. Например: 7Е-2 эквивалентно 7· 10-2 12.25 Е+6 или 12.25 Е6 эквивалентно 12.25· 106

8.3. Символьный тип Значениями символьного типа являются символы из множества

ASCII (American Standard Code for Information Interchange - американский стандартный код для обмена информацией). Это множество состоит из 256

Page 64: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

64

различных символов, упорядоченных определенным образом, и содержит символы заглавных и строчных букв, цифр и различных других символов, включая специальные управляющие символы. Допускаются некоторые от-клонения от стандарта ASCII, в частности, при наличии соответствующей системной поддержки это множество может содержать буквы русского алфа-вита.

Порядковые номера (кодировку) значений символьного типа можно узнать из соответствующих разделов технических описаний. Эти значения занимают один байт. Если символьное значение имеет графическое пред-ставление, то оно изображается соответствующим знаком, заключенным в одинарные кавычки (апострофы), например:

‘*’ ‘a’ ‘X’ ‘:’ ‘’’’ Для представления самого апострофа его изображение удваивается. Если символ, который нужно изобразить, не имеет графического

представления, то можно воспользоваться следующей эквивалентной формой записи, состоящей из символа ‘#’ (решетка, диез) и целочисленного кода символа (от 0 до 255):

#10 #$A Для изображения управляющих символов (коды от 0 до 31) можно

использовать символ ^ и соответствующую букву, код которой равен коду управляющего символа плюс 31. Например:

^M - символ с кодировкой 13 (Enter).

8.4. Булевский тип Имеется два значения булевского типа, представляющие логические

истинностные значения (истина/ложь). Эти значения обозначаются посредст-вом стандартных идентификаторов:

• true (истина) • false (ложь). Значения булевского типа занимают один байт памяти.

8.5. Ограниченные типы Стандартные скалярные типы, перечисленные ранее в этой лекции,

являются предопределенными в языке Турбо Паскаль; их смысл в языке фик-сирован и его не нужно описывать. На основе стандартных скалярных типов программист может определить новые, собственные скалярные типы, руко-водствуясь несколькими достаточно простыми правилами.

Самым простым способом образования новых типов из уже сущест-вующих является ограничение (а именно, сужение) допустимого диапазона значений некоторого стандартного скалярного типа. Это ограничение опре-деляется заданием минимального и максимального значений диапазона.

Page 65: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

65

Синтаксис определения такого типа: минимальное_ значение..максимальное_значение Например: 1..10 -100..100 ‘a’..’z’ В данном примере показано определение трех новых типов значений.

Первые два типа образованы ограничениями диапазона некоторого целого типа, третий тип является производным целого типа. Введенный таким обра-зом тип можно обозначить именем и использовать для определения перемен-ных, а также строить с его помощью другие типы.

Допускается создание ограниченных типов из дискретных типов, то есть из всех скалярных типов, кроме вещественного. Ограниченный тип на-следует все свойства базового типа (в частности, набор базовых операций).

Нужно всячески приветствовать активное использование в програм-ме ограниченных типов. Всякий раз, когда заранее известно, что значения некоторой переменной лежат внутри некоторого диапазона, следует исполь-зовать ограниченный тип. Это существенно повышает наглядность программ, а , кроме того, позволяют более надежно контролировать ошибочные выходы значений за пределы заданного диапазона (как при трансляции, так и в про-цессе исполнения программы).

8.6. Перечислимые типы Скалярные типы, введенные ранее в лекции, в целом не выходят за

рамки интуитивно понятной трактовки типа как множества традиционных (целых, вещественных или символьных) значений из определенного диапазо-на. Перечислимые типы вводят некоторое простое обобщение такой трак-товки посредством абстрагирования от “физической” природы значений.

Иными словами, можно определить новый тип путем явного пере-числения всех возможных его значений, причем каждое такое значение будет определяться только именем.

Поясним все на примере. Пусть необходимо разработать программу управления уличным светофором. Ясно, что программа будет моделировать светофор с помощью указания его текущего состояния, т.е. включенного в данный момент света. Таким образом, переменная программы, представляю-щая светофор, может принимать одно из трех значений, соответствующих красному, желтому и зеленому цветам. Можно было бы ввести для этого пе-ременную целого типа и установить, что, например, значения 1, 2, 3 соответ-ствуют указанным цветам. Однако очевидно, что числа, кодирующие цвета, не имеют прямого отношения к решаемой задаче и, следовательно, усложня-ют программу и затемняют ее смысл. Поэтому наиболее естественным реше-нием в данном случае будет введение перечислимого типа из трех значений,

Page 66: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

66

обозначаемых именами Red, Yellow, Green, и переменной этого типа. Синтаксис определения перечислимого типа: ( идентификатор 1, идентификатор 2, ...,идентификатор N ) Примеры перечислимых типов: ( Red, Yellow, Green ) ( Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday ) ( On, Off ) ( Left, Up, Right, Down ) Перечислимые типы считаются дискретными типами. Над значения-

ми перечислимых типов определены операции сравнения (считается, что зна-чения перечислимого типа указаны в списке в порядке возрастания). Кроме того, допускается образование ограниченных типов из перечислимых по обычным правилам, например:

Monday..Friday Left..Up Имена из списка перечислимого типа считаются константами соот-

ветствующего перечислимого типа. Эти идентификаторы должны быть уни-кальны в пределах блока; недопустимы описания двух и более перечислимых типов с совпадающими константами.

Page 67: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

67

9. ПРОГРАММИРОВАНИЕ ЛИНЕЙНЫХ АЛГОРИТМОВ

9.1. Операторы языка Операторы в языке Турбо Паскаль - это синтаксические конструк-

ции, предназначенные как для записи алгоритмических действий по преобра-зованию данных, так и для задания порядка выполнения других действий.

Набор операторов языка Турбо Паскаль составляет минимальное множество конструкций, необходимых для наглядного и однозначного пред-ставления алгоритмов в стиле структурного программирования.

Язык содержит следующие операторы: • оператор присваивания; • оператор процедуры; • оператор перехода; • составной оператор; • оператор варианта; • оператор цикла с предусловием; • оператор цикла с постусловием; • оператор цикла с параметром; • оператор работы с записями; • пустой оператор. Первые три оператора считаются простыми операторами, осталь-

ные – структурными . Последнее означает, что в состав операторов могут входить другие операторы. Можно сказать, что структурные операторы за-дают некоторое правило выполнения операторов, входящих в их состав.

9.2. Оператор присваивания Данный оператор является простейшим и наиболее часто употреб-

ляемым оператором языка. Он предназначен для вычисления нового значе-ния некоторой переменной, а также для определения значения, возвращаемо-го некоторой функцией.

Синтаксис оператора: <переменная или функция> := <выражение>; Здесь:

− переменная или функция – имя переменной или функции Турбо Паскаля любого типа, за исключением типа файл;

− выражение – состоит из констант, переменных и функций, соединенных знаками операций; для изменения порядка вычислений могут использо-ваться скобки.

Выражения представляют собой правила получения новых значений. Примеры оператора:

Page 68: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

68

X := Y; Z := A+B; RES := ( I > 0 ) and ( I < 100 ); I := Sqr ( J ) + I*K; 9.2.1.ОПЕРАЦИИ В ПАСКАЛЕ Все операции в Турбо Паскале можно разбить на следующие группы: • арифметические операции; • логические операции; • операции с битами информации; • операции со строками; • операции отношения; • адресная операция @. Если в операциях используются несколько данных, то они должны

иметь одинаковые или совместимые типы. 9.2.2. АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ Арифметические операции применимы только к величинам целых и

вещественных типов. Их можно разделить на унарные и бинарные операции. Унарный знак плюс +, поставленный перед величиной либо целого,

либо вещественного типа, не оказывает никакого влияния на значение этой величины.

Унарный знак минус -, поставленный перед величиной либо целого, либо вещественного типа, приводит к изменению знака величины.

Бинарные арифметические операции и их знаки приведены в табл. 9.1.

Арифметические операции Таблица 9.1

Знак Операция Типы операндов Тип результата + Сложение Целые

Хотя бы один вещественный Целый Вещественный

- Вычитание Целые Хотя бы один вещественный

Целый Вещественный

* Умножение Целые Хотя бы один вещественный

Целый Вещественный

/ Деление Целые или вещественные Вещественный div Деление целых

чисел Целые Целый

mod Остаток от деле-ния целых чисел

Целые Целый

Page 69: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

69

Примечания 1. Знаки операций +, -, * используются также и с другими типами операн-

дов, но тогда они имеют другой смысл. 2. В операциях деления делитель не должен равняться нулю. 3. При использовании знака операции, являющегося служебным словом, он

должен быть отделен от операндов хотя бы одним разделителем. Пример 9.1 A mod B { если А=10, В=3, то результат равен 1} C div D { если С=10, D=3, то результат равен 3} 4. В Турбо Паскале нет операции возведения в степень. Для возведения в

степень, равную натуральному числу, можно последовательно умножить число на себя. Для возведения в любую степень можно воспользоваться следующим математическим тождеством:

nXn eX ln= . На языке Турбо Паскаль правая часть тождества запишется следующим обра-зом:

exp ( n * ln ( x ) ). Например: X1/3 на Турбо Паскале запишется - exp ( 1/3 * ln ( x ) ).

9.2.3. ЛОГИЧЕСКИЕ ОПЕРАЦИИ Логические операции применяются к данным логического типа, ре-

зультат операции - тоже логического типа. Имеется одна унарная операция not (отрицание) и три бинарные операции and (И), or (ИЛИ) и xor (исклю-чающее ИЛИ). Они определяются таблицами истинности 9.2 и 9.3.

Таблица 9.2

Таблица истинности операции NOT X not X

False True True False

Таблица 9.3 Таблица истинности операций AND, OR, XOR

X Y X and Y X or Y X xor Y False False False False False False True False True True True False False True True True True True True False

Пример использования логических операций: not ( Eof (F1) ) and ( cc = b+1 ) or ( b<1 ). В Турбо Паскале имеется два вида вычисления логических выраже-

Page 70: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

70

ний: полное и укороченное. Полное вычисление означает, что вычисляется каждый операнд, да-

же если уже известен результат вычисления. Укороченное вычисление проводится до тех пор, пока не станет из-

вестен результат всего выражения, после чего вычисление последующих операндов прекращается.

Выбор вида вычисления осуществляется с помощью ключа компиля-тора $B. Если используется ключ{$B-}(этот вариант выбирается по умолча-нию), производится укороченное вычисление. Если выбран ключ {$B-}, про-изводится полное вычисление.

9.2.4. ОПЕРАЦИИ ОТНОШЕНИЯ Операции отношения предназначены для сравнения двух величин

(величины должны быть сравнимых типов). Результат сравнения имеет логи-ческий тип. Операции сравнения следующие:

= - равно; <= - меньше или равно; <> - не равно; >= - больше или равно; < - меньше; > - больше. 9.2.5. КРУГЛЫЕ СКОБКИ Круглые скобки используются для заключения в них части выраже-

ния, значение которой необходимо вычислить в первую очередь. В выраже-нии может быть любое количество круглых скобок, причем количество от-крывающих круглых скобок должно быть равно количеству закрывающих круглых скобок. Части выражений, заключенные в круглые скобки, должны быть либо непересекающимися, либо вложенными друг в друга.

9.2.6. ПОРЯДОК ВЫЧИСЛЕНИЯ ВЫРАЖЕНИЙ Вычисление значений выражений выполняется в определенном по-

рядке. Начинается вычисление с определения переменных и констант, вхо-дящих в выражение. Они являются основой для дальнейших вычислений. Дальнейшие действия выполняются в соответствии с их приоритетами. Так, в первую очередь вычисляются выражения, заключенные в круглые скобки. Для любых двух вложенных в друг друга пар круглых скобок вычисляется сначала внутреннее выражение, а затем внешнее. Далее вычисляются значе-ния входящих в выражение функций и т.д. Приоритеты всех действий, вы-полняемых при вычислении выражений, приведены в табл. 9.3.

Page 71: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

71

Таблица 9.4 Приоритеты действий при вычислении выражений

Группа Тип действий Операции над элементами 1 Вычисление в круглых скобках ( ) 2 Вычисление значений функций Функции 3 Унарные операции @, not, унарный +, унарный - 4 Операции типа умножения *, /, div, mod, and 5 Операции типа сложения +, -, or, xor 6 Операции отношения =, <>, <, >, >=, <=, in

Следует иметь в виду, что в пределах одного и того же приоритета действия выполняются слева направо (если нет скобок).

9.3. Стандартные функции В языке Паскаль существует ряд заранее разработанных подпро-

грамм и функций, которые можно использовать как готовые объекты. В Тур-бо Паскале их количество увеличено по сравнению со стандартом языка, и все они объединены в стандартные модули (о которых будет рассказано поз-же). Рассмотрим наиболее часто используемые стандартные функции, ос-тальные будут описаны позднее в соответствующих лекциях, например: стандартные функции ввода-ввода в разделе 14, посвященном вопросам ра-боты с файлами, стандартные функции работы со строками в разделе 12, по-священном остальным типам.

9.3.1. АРИФМЕТИЧЕСКИЕ ФУНКЦИИ Арифметические функции можно использовать только с величинами

целого и вещественного типа. Их перечень приведен в табл. 9.5. Таблица 9.5

Арифметические функции Функция Назначение Тип результата

Abs (X) Абсолютное значение аргумента Совпадает с типом X Arctan(X) Арктангенс аргумента Вещественный Cos(X) Косинус аргумента Вещественный Exp(X) ex Вещественный Frac(X) Дробная часть числа Вещественный Int(X) Целая часть числа Вещественный Ln(X) Натуральный логарифм Вещественный Pi Значение величины

Pi=3,1415926535897932385

Sin(X) Синус аргумента Вещественный Sqr(X) Квадрат аргумента Совпадает с типом X Sqrt(X) Квадратный корень аргумента Вещественный

Page 72: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

72

9.3.2. ФУНКЦИИ ПРЕОБРАЗОВАНИЯ ТИПА Эти функции предназначены для преобразования типов величин, на-

пример, символа в целое число и т.д. К ним относятся следующие функции: • Chr(X) - преобразование ASCII-кода в символ.

Аргумент функции должен быть целого типа в диапазоне (0..255). Результатом является символ, соответствующий данному коду.

• High(X) - получение максимального значения величины. Аргумент функции - параметр или идентификатор порядкового,

регулярного или строкового типа. Результат функции для величины по-рядкового типа - максимальное значение этой величины, регулярного ти-па - максимальное значение индекса массива, строкового типа - объявлен-ный размер строки.

• Low(X) - получение минимального значения величины. Аргумент функции - параметр или идентификатор порядкового,

регулярного или строкового типа. Результат функции для величины по-рядкового типа - минимальное значение этой величины, регулярного типа - минимальное значение индекса массива, строкового типа- 0.

• Ord(X) - преобразование любого порядкового типа в целый тип. Аргументом функции может быть величина любого порядкового

типа (логический, порядковый, перечислимый). Результатом является це-лая величина, отражающая относительное расположение этого аргумента в общем множестве значений типа. Для символьного типа данная функция является обратной функции Chr(X) и возвращает ASCII- код символа.

• Round(X) - округление вещественного числа до ближайшего целого. Аргумент функции - величина вещественного типа, а результат -

округленная до ближайшего целого величина типа Longint. Если резуль-тат выходит за диапазон значений Longint, то при выполнении программы возникает ошибка.

• Trunc(X) - получение целой части числа. Аргумент функции - величина вещественного типа, а результат -

целая часть этого числа. Тип результата - Longint. Если результат выходит за диапазон значений longint, то во время выполнения программы возни-кает ошибка.

Пример 9.2. Пример функции Значение функции Chr (65) ‘A’ ord (‘A’) 65 Round(65.6666) 66 Trunc(65.6666) 65

Page 73: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

73

9.3.3. ФУНКЦИИ ДЛЯ ВЕЛИЧИН ПОРЯДКОВОГО ТИПА Эти функции позволяют выполнить ряд действий над величинами

порядкового типа (найти предыдущий или последующий элемент, проверить число на нечетность). К этим функциям относятся следующие:

Odd(X) – проверка величины X на нечетность. Аргументом функции является величина типа Longint. Результат

функции имеет логический тип и принимает значение TRUE, если аргумент нечетный, и FALSE – иначе.

Pred(X) – определение предыдущего значения величины X. Аргументом функции является величина любого порядкового типа,

результатом – предшествующее значение того же типа. При применении функции к первому элементу последовательности возникает ошибка.

Succ(X) – определение последующего значения величины X. Аргументом функции является величина любого порядкового типа,

результатом – последующее значение того же типа. При применении функ-ции к последнему элементу последовательности возникает ошибка.

Пример 9.3. Пример функции Значение функции Odd (65) False pred (‘b’) ‘a’ Succ(‘У’) ‘Ф’

9.4. Операторы ввода/вывода Каждая программа взаимодействует со своим окружением через опе-

раторы ввода/вывода, или чтения/записи. Для каждого процесса чтения или записи следует указать, откуда и куда осуществляется чтение или запись и как вообще это должно выполняться. В наиболее простом случае ввод осуще-ствляется с клавиатуры, а вывод – на экран дисплея.

Вообще говоря, ввод и вывод осуществляется не операторами, а спе-циальными процедурами языка, но мы не будем акцентировать на этом вни-мание и для простоты будем продолжать употреблять термин «оператор»:

• ввод – READ (READLN); • вывод - WRITE (WRITELN).

Эти процедуры предназначены для ввода/вывода символьной ин-

формации. Ввод/вывод не символьных данных сопровождается дополни-тельными преобразованиями: • из потока символов – во внутреннее представление оперативной памяти; • из внутреннего представления оперативной памяти – в поток символов.

Page 74: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

74

9.4.1.ВЫВОД НА ЭКРАН Формат команды: Write(O1,O2, ...,On); или WriteLn(O1,O2,...,On); Здесь: Oi – объект вывода. Примечания 1. Число объектов вывода в одном операторе может быть любым

конечным. 2. Каждый объект может быть константой, переменной, выражени-

ем, значение которого принадлежит любому скалярному типу, т.е. Oi может быть типа Integer, Real, Boolean, Char, String.

При использовании приведенной выше формы записи вывод будет осуществляться в стандартном формате.

• Integer – под выводимое число отводится столько разрядов, сколько требуется для записи числа.

• Real – под выводимое число отводится 18 разрядов; число запи-сывается в экспоненциальной форме:

<мантисса> Е <порядок>. Под мантиссу отводится 12 (для положительных чисел) – 13 (для от-

рицательных чисел) разрядов и 4 разряда – под значение порядка, т.е. схема представления числа имеет вид:

-Х.ХХХХХХХХХХ Е±ХХ • Boolean – выводится значение FALSE или TRUE. • Char (String) – выводится символ (последовательность символов). Формат, отличный от стандартного, можно выбрать следующим

образом: Oi:n, где n – выражение типа integer, задающее ширину поля данных,

в которое должно быть записано значение Oi с выравниванием по правому краю;

Oi:n:m, где Oi должно иметь тип REAL; n – используется как в пре-дыдущем случае; m – выражение типа integer, задающее число знаков после десятичной точки (привычная нам форма с фиксированной точкой).

Если n – недостаточно большое для вывода числа полностью, то оно расширяется до нужного значения.

Пример 9.4 Var a: real; b: integer; Begin a := 15.3; b := 86; write ( ‘a=’, a:6:2 ); write ( ‘b=’, b:6 )

Page 75: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

75

End. Результат работы программы будет иметь вид: a= 15.3 b= 86 Примечания

1. Последовательность операторов WRITE в примере может быть заменена на единственный оператор WRITE, содержащий список вывода, являю-щийся объединением списков вывода операторов, составляющих эту по-следовательность.

2. WRITELN – выполняет действия, аналогичные оператору WRITE, после чего позиционирует курсор в начало следующей строки.

Пример 9.5 Var a: real; b: integer; Begin a := 15.3; b := 86; writeLn ( ‘a=’, a:6:2 ); writeLn ( ‘b=’, b:6 ) End. Результат работы программы будет иметь вид: a= 15.3 b= 86 9.4.2. ВВОД С КЛАВИАТУРЫ Формат команды: Read (O1,O2, ...,On); или ReadLn (O1,O2, ...,On); Здесь: Oi – объект ввода; в отличие от команд вывода O i может быть

только переменной . Число объектов ввода может быть переменным, причем команда

ReadLn может не иметь их совсем. При вводе с клавиатуры осуществляется обращение к месту в опера-

тивной памяти, называемому буфером клавиатуры (рис.9.1).

Page 76: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

76

Если буфер пуст, то осуществляется ожидание ввода нового символа или нажатия Enter.

При вводе процедурой READ применяются следующие правила. • При вводе переменных типа CHAR выполняется чтение одного сим-

вола и присвоение считанного значения переменной из списка. Если пользователь нажал Enter, то результатом чтения будет неотобра-жаемый символ с кодом 13 (#13).

• При вводе переменной типа STRING количество считанных симво-лов равно максимальной длине строки, если среди считанных симво-лов нет символа Enter. В этом случае символов в строке будет мень-ше, чем ее максимальная длина (все символы до Enter). Если пользо-ватель набрал больше символов, то «лишние» символы отбрасыва-ются, а новое обращение к READ возвращает пустую строку. Таким образом, процедура READ не в состоянии прочесть последователь-ность строк: первая строка будет прочитана нормально, последую-щие окажутся пустыми.

• При вводе числовых переменных процедура READ выделяет под-строку во вводе по следующему правилу: все ведущие пробелы, сим-волы табуляции и нажатия Enter игнорируются, выделяются знача-щие символы до первого из перечисленных, выделенное значение переводится в численное представление.

• Процедура READLN так же, как и READ, обеспечивает ввод симво-лов, строк и чисел.

• Отличия процедуры READLN от процедуры READ: • после выполнения процедуры очищается буфер клавиатуры; • нажатие Enter переместит курсор в начало следующей строки, в то

время как нажатие Enter в процедуре READ перемещает курсор в на-чало текущей строки. Пример 9.6 Var a,b : char; i : integer; Begin Read ( i, a, b )

. . . . 4 1 2 3 128

Рис.9.1. Буфер клавиатуры

Page 77: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

77

End. Пользователь осуществил ввод в следующем виде: 123 y Переменные получили следующие значения: i → 123 a → ‘ ‘ b → ‘y’ Пример 9.7 Var Sim : char; Begin ReadLn ( Sim ); Writeln (‘первый символ - ’, Sim ); ReadLn ( Sim ); Writeln (‘второй символ - ’, Sim ) End. Пользователь осуществил ввод в следующем виде: AS Вывод имеет вид: первый символ – A второй символ –

Page 78: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

78

10. ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЯЮЩИХСЯ АЛГОРИТМОВ

10.1. Условный оператор Условный оператор реализует средствами языка схемный блок «ре-

шение». Существует два варианта оператора. Алгоритмические схемы этого

оператора представлены на рис.10.1 (сокращенная схема) и рис. 10.2 (полная схема):

Синтаксис оператора: IF <логическое выражение> THEN <ОПЕРАТОР 1> [ ELSE < ОПЕРАТОР 2> ]; Здесь:

− IF, THEN, ELSE –зарезервированные слова; − <логическое выражение> - выражение, возвращающее логическое значе-

ние и записанное по правилам языка Турбо Паскаль;. − <ОПЕРАТОР 1> , <ОПЕРАТОР 2> - любые операторы Турбо Паскаля.

Данный оператор выполняется следующим образом. Сначала вычис-ляется выражение, стоящее после служебного слова if. Результат выра -жения должен иметь логический тип . Если значение выражения есть TRUE, то выполняется <ОПЕРАТОР 1>, а <ОПЕРАТОР 2> пропускается.

Если результат вычисления выражения есть FALSE, наоборот, <ОПЕРАТОР 1 > пропускается, а выполняется <ОПЕРАТОР 2> (полная

Логическое выражение

ОПЕРАТОР 1

Рис.10.1. Сокращенная схема оператора IF.

THEN ELSE

Page 79: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

79

форма оператора).

Например: Var x, y, pmax : real; ………….. if x > pmax then y := pmax else y := x; При выполнении этого фрагмента переменная Y получит значение

переменной X, если только это значение не превышает PMAX, в противном случае Yстанет равно PMAX.

Если оператор IF записан в сокращенной форме (рис. 10.1), то при значении TRUE логического выражения выполняется <ОПЕРАТОР 1>, в противном случае этот оператор пропускается и выполняется следующий за IF оператор:

Var x, y, pmax : real; ………….. if x > pmax then y := pmax; y := x; В этом примере Y всегда будет иметь значение переменной X, а в

PMAX запоминается максимальное значение X.

Логическое выражение

ОПЕРАТОР 1 ОПЕРАТОР 2

Рис.10.2. Полная схема оператора IF

THEN ELSE

Page 80: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

80

Примечания 1. Оператор, входящий в IF, может быть составным (о составных

операторах см. ниже п. 10.2). Например: If (x>=a) and (x<=b) Then begin C:=0; D:=1; End ELSE C:=1; 2. Перед ELSE «;» ставить нельзя. 3. Оператор, входящий в IF может, быть также оператором IF, т.е.

операторы IF могут быть вложенными. Если один из операторов IF в полной форме, а другие в сокращённой, то может возникнуть синтаксическая неод-нозначность. If < выражение 1 > then

if < выражение 2 > then <оператор 1> else <оператор 2>. В этом случае часть else <оператор 2> может трактоваться как при-

надлежащая внешнему оператору IF < выражение 1 >, так и вложенному IF < выражение 2 >…

Эта двусмысленность разрешается путём следующей интерпретации данной конструкции:

If < выражение 1 > then Begin If < выражение 2 > then < оператор 1 > else < оператор 2 > end ; Правило: служебное слово else всегда ассоциируется с ближайшим

по тексту служебным словом if, которое ещё не связано со служебным сло-вом else.

Пример 10. 1 Var a, b, c, d: integer; ……….. a := 1; b := 2; c := 3; d := 4; ……….. if a > b then if c < d then if c < 0 then c := 0 else a := b; {a = 1 }

Page 81: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

81

………… if a > b then if c < d then if c <0 then c := 0 else else else a :=b; {a = 2 }

10.2. Составной оператор Этот оператор является простейшим структурным оператором и за-

даёт последовательное выполнение операторов, входящих в него «один за другим». Операторы, входящие в составной оператор, заключаются между служебными словами BEGIN и END и отделяются друг от друга символами «;». Исключением является последний в составе оператора (перед end) опе-ратор – перед ним можно не ставить «;», поскольку END является закры-вающей оператор скобкой. Если есть «;» перед END, то это дополнительный пустой оператор. Пустой оператор не содержит никаких действий, просто в программу добавляется лишняя точка с запятой. Часто этот оператор исполь-зуется для передачи управления в конец составного оператора.

Составной оператор называют также операторными скобками. Структурная схема оператора приведена на рис. 10.1.

Составной оператор применяется в тех случаях, когда синтаксис языка Паскаль допускает использование только 1 оператора, в то время как семантика программы требует задания некоторой последовательности дейст-вий. Это приводит к некоторой перегруженности Паскаль-программы слу-жебными словами begin и end и свидетельствует об определённой архаично-сти синтаксиса языка.

Язык Турбо Паскаль не накладывает никаких ограничений на харак-тер операторов, входящих в составной оператор. Среди них могут быть и другие составные операторы – Турбо Паскаль допускает произвольную глу-бину их вложенности:

Begin …… Begin

begin Оператор; end

Рис. 10.3. Структурная схема составного оператора

Page 82: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

82

…… Begin …….

……. End; ……… End; ……….

End;

10.3. Оператор варианта (выбора) Данный оператор является обобщением условного оператора для

случая произвольного числа альтернатив. Параметром, по которому осущест-вляется выбор, служит ключ выбора – выражение любого порядкового типа (любого из рассмотренных ранее, кроме REAL и STRING).

Синтаксис оператора: CASE <ключ_выбора> OF <список_выбора> ELSE <оператор>

END; Здесь:

− CASE, OF, ELSE, END – зарезервированные слова; − <ключ_выбора> - выражение любого порядкового типа; − <список_выбора> - одна или более конструкций вида:

<константа_выбора> : <ОПЕРАТОР>; − <константа_выбора> - константа того же типа, что и выраже-

ние <ключ_выбора>; − <ОПЕРАТОР> - произвольный оператор Турбо Паскаля.

Оператор варианта работает следующим образом: вначале вычисля-ется значение выражения <ключ_выбора>, а затем в последовательности операторов <список_выбора> отыскивается такой, которому предшествует константа, равная вычисленному значению. Найденный оператор выполняет-ся , после чего оператор варианта завершает свою работу. Если в списке вы-бора не будет найдена константа, соответствующая вычисленному значению выражения, то управление передаётся оператору, стоящему за словом ELSE.

Пример 10.2 Приведенная ниже программа определяет, какое число было введено

пользователем, и выдает на экран соответствующее сообщение.

VAR I:integer; Begin

Page 83: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

83

Write (‘ введите число ‘) ; Readln (I); Case I of 0, 2, 4, 6, 8 : writeln ( ‘Чётная цифра’ ) ; 1, 3, 5, 7, 9 : writeln ( ‘Нечётная цифра’ ) ; 10..100 : writeln ( ‘Число от 10 до 100’ ); else writeln ( ‘Отрицательное число или число

больше 100’) end;

end; Примечания

1. В альтернативах оператора (то, что в синтаксисе оператора обозна-чено как <список_выбора> ) может присутствовать одна константа, список констант, где они разделены запятыми, а также диапазоны значений const.

2. Все const в альтернативах должны быть уникальны в пределах опера-тора варианта (т.е. повторение их в альтернативах не допускается, так же как и пересечение их диапазонов).

3. Перед ELSE «;» ставить можно (в отличие от ELSE в операторе IF). 4. Часть ELSE можно опускать. Тогда при отсутствии в альтернативах

нужной const ничего не произойдёт, и оператор выбора просто завершит свою работу.

5. После ELSE можно не использовать составной оператор, а просто перечислить операторы, разделив их «;» .

10.4. Оператор перехода

Простейший вариант разветвления в программе можно организовать с помощью оператора перехода. Оператор (безусловного) перехода вызывает передачу управления оператору, которому предшествует метка.

GOTO < метка > ; ……. <метка> : <оператор>; Здесь: − GOTO – зарезервированное слово («перейти»); − <метка> - метка. Метка в Турбо Паскале – это произвольный идентификатор, позво-

ляющий именовать некоторый оператор программы и таким образом ссы-латься на него. В целях совместимости со стандартным языком Паскаль в языке Турбо Паскаль допускается в качестве меток использование также целых чисел без знака.

Метка располагается непосредственно перед помечаемым операто-ром и отделяется от него двоеточием. Оператор можно помечать нескольки-

Page 84: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

84

ми метками, которые в этом случае отделяются друг от друга двоеточием. Перед тем как появиться в программе метка должна быть описана. Описание меток состоит из зарезервированного слова LABEL (метка), за которым сле-дует список меток:

………… Label Loop1, Lb1, Lb2; Begin …….. Goto Lb1; …….. Loop1: ……… Lb1: Lb2: …….. ……. Goto Lb2; ……. При использовании оператора GOTO должны использоваться сле-

дующие правила. 1. Все метки, используемые в блоке, должны быть описаны. 2. Метка, указываемая в операторе перехода должна помечать оператор,

находящийся в том же блоке, что и сам оператор перехода. Таким обра-зом, не допускаются переходы во вне процедур и функций или внутрь их.

3. Переход внутрь структурного оператора может вызвать непредсказуемые эффекты, хотя компилятор не выдаёт сообщение об ошибке. Использование безусловных передач управления в программе считается

теоретически избыточным и подвергается серьёзной критике, т.к. поощряет создание малопонятных и трудно модифицируемых программ, которые вы-зывают большие сложности при отладке и сопровождении.

При использовании операторов безусловного перехода рекомендуется соблюдать следующие правила: • следует стремиться применять операторы перехода (если кажется невоз-

можным обойтись без них) для передачи только вниз по тексту програм-мы (т.е. вперёд);

• расстояние между меткой и оператором перехода на неё не должно пре-вышать 1 страницы текста (или высоты экрана дисплея).

Page 85: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

85

11. ПРОГРАММИРОВАНИЕ ЦИКЛИЧЕСКИХ АЛГОРИТМОВ

В языке Турбо Паскаль существует 3 различных оператора, с помо-щью которых можно запрограммировать повторяющиеся фрагменты про-грамм. Эти операторы часто называют операторами цикла . Это:

1) оператор цикла с предусловием (WHILE); 2) оператор цикла с постусловием (REPEAT); 3) оператор цикла с параметром, или счетный оператор цикла (FOR).

11.1. Оператор цикла с предусловием (WHILE)

Оператор WHILE задает повторяющееся выполнение оператора, со-держащегося в нем. Число таких повторений заранее неизвестно и определя-ется истинностью некоторого логического выражения. Этот оператор реали-зует схему алгоритма, представленную на рис.11.1.

Синтаксис записи оператора: WHILE <логическое выражение> DO <ОПЕРАТОР>; Здесь:

− WHILE и DO – зарезервированные слова; − <логическое выражение> - выражение логического типа; − <ОПЕРАТОР> - произвольный оператор Турбо Паскаля.

Если <логическое выражение> имеет значение TRUE, то выполня-ется <ОПЕРАТОР>, после чего вычисляется снова <логическое выраже-ние> и его проверка повторяется. Если <логическое выражение> имеет значение FALSE, оператор W прекращает свою работу.

Логическое выражение

ОПЕРАТОР

Рис. 11.1. Схема алгоритма оператора WHILE

Page 86: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

86

Пример 11.1 Программа вычисляет факториал некоторого натурального числа,

значение которого вводится с клавиатуры пользователем. Var K,N,Y : integer ; Begin Write ( ‘N=’ ); Readln ( N ); Y:=1; K:=1; While K <= N do Begin Y := Y * K; Inc ( K ) End; Writeln ( ‘N:=’,Y ) End. Примечание Выход из цикла осуществляется, если логическое выражение ока-

жется ложным, т.к. истинность логического выражения проверяется в начале каждой итерации, тело цикла может не выполниться ни разу.

11.2. Оператор цикла с постусловием (Repeat) Этот оператор аналогичен предыдущему оператору (WHILE) и отли-

чается от него, во-первых, тем, что условие проверяется ПОСЛЕ выполнения очередной итерации (таким образом, гарантируется хотя бы однократное вы-полнение цикла), а, во-вторых, тем, что критерием прекращения цикла явля-ется равенство логического выражения значению TRUE.

Оператор реализует схему алгоритма, представленную на рис. 11.2. Синтаксис записи оператора: REPEAT <тело_цикла> UNTIL <логическое_выражение>; Здесь:

− REPEAT, UNTIL – зарезервированные слова; − <тело_цикла> - произвольная последовательность операторов Турбо

Паскаля ( на рис 11.2 обозначены как ОПЕРАТОР 1, ОПЕРАТОР 2,…, ОПЕРАТОР N);

− <логическое_выражение> - выражение логического типа.

Page 87: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

87

Тело цикла выполняется хотя бы 1 раз (это легко определить по рис 11.2), после чего вычисляется значение логического выражения. Если его значение есть FALSE, операторы <тело_цикла> повторяются, иначе оператор REPEAT завершает свою работу.

Примечания 1. Синтаксис оператора REPEAT допускает в теле цикла несколько

операторов, значит не нужно писать составной оператор . 2. Т.к. слова REPEAT и UNTIL являются своеобразными оператор-

ными скобкам, то точку с запятой перед UNTIL ставить не обязательно. Пример 11.2 Вычисление факториала числа (аналогично предыдущему примеру,

только с использованием оператора UNTIL). Var K, N, Y : integer; Begin Writeln ( ‘N=’ ); Readln ( N) ; K := 1;

Рис. 11.2. Схема алгоритма оператора REPEAT

ОПЕРАТОР 2

Логическое выражение

ОПЕРАТОР N

ОПЕРАТОР 1

…..…

Page 88: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

88

Y := 1; Repeat Y := Y * K; Inc ( k ) Until K > N; Writeln ( ‘N := ’, Y ) End. Применяя операторы REPEAT и WHILE, следует соблюдать опреде-

ленную осторожность, что бы не допустить зацикливания (т.е. бесконечного повторения операторов, входящих в цикл ). Это может произойти, если в REPEAT проверяется выражение, постоянно сохраняющее значение FALSE, а в WHILE - постоянно TRUE. Подобное явление возникает, в частности, в тех случаях, когда значение выражения не зависит от операторов, входящих в тело цикла. Можно гарантировать отсутствие зацикливания, предусмотрев в теле цикла проверку, например, на достижение заданного предельного числа повторений цикла.

11.3. Цикл с параметром

Такой оператор обычно используется, когда число повторений цикла может быть определено перед его началом. Этот процесс управляется пере-менной цикла, которой присваивается последовательно возрастающие или убывающие значения. Оператор имеет 2 формы записи:

FOR <пар_цикла> := <нач_знач> TO <кон_знач> DO <ОПЕРАТОР>;

(инкрементная форма); FOR <пар_цикла> := <нач_знач> DOWNTO <кон_знач> DO <ОПЕРА-ТОР>;(декрементная форма).

Здесь: − FOR, TO, DOWNTO, DO - зарезервированные слова; − <пар_цикла> - параметр цикла – переменная любого порядкового типа; − <нач_знач> - начальное значение – выражение того же типа, что и

переменная цикла; − <кон_знач> - конечное значение – выражение того же типа, что и пе-

ременная цикла; − <ОПЕРАТОР> - произвольный оператор Турбо Паскаля.

Схема работы алгоритма оператора представлена на рис.11.3. Цикл действует следующим образом. Сначала вычисляется и запоминается выра-жения - <нач_знач> и <кон_знач> (начальное и конечное значения перемен-

Page 89: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

89

ной цикла). Далее параметру цикла присваивается начальное значение цикла, равное <нач_знач>. Затем значение параметра цикла сравнивается со значе-нием <кон_знач>. Далее, пока переменная цикла меньше или равна конечно-му значению (в инкрементном варианте оператора) или больше или равна конечному значению (в декрементном варианте), выполняется очередная итерация цикла. В противном случае происходит выход из цикла. Выполне-ние очередной итерации включает в себя сначала выполнение тела цикла, а затем присваивание переменной цикла следующего большего значения (в первом варианте оператора) или следующего меньшего значения (во втором варианте).

Примеры операторов цикла FOR: FOR i := 1 to 10 do M [ i ] := i * 2; FOR j := X + 2 downto X –2 do X [ j ] := 0; FOR c :=’a’ to ‘z’ do writeln(‘код символа‘,c,‘–‘, ord(c));

Рис. 11.3. Схема алгоритма оператора FOR (инкрементная форма)

ОПЕРАТОР

<пар_цикла> <=

<кон знач>

<Пар_цикла> := <Нач_знач>

<Пар_цикла> := <пар_цикла>+ 1 (инкрементная форма)

<Пар_цикла> := <пар_цикла> - 1

(декрементная форма)

ДА

Page 90: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

90

Примечания 1. В качестве переменной цикла должна использоваться простая

переменная, описанная в текущем блоке. 2. Параметр цикла должен иметь упорядоченный дискретный тип

(char , integer , перечисляемый). 3. Если <нач_знач> больше <кон_знач> (инкрементная форма) или

<нач_знач> меньше <кон_знач> (декрементная форма), то тело цикла не бу-дет выполнено ни разу.

4. В теле цикла запрещено явное изменение значения переменной цикла (например, оператором присваивания).

5. После завершения оператора цикла значение переменной цикла становится неопределённым, если только выполнение не было прервано опе-ратором перехода (GOTO).

6. Переменная цикла изменяется только на 1 ( +1 или –1 ). Пример 11.3 Приведем программу вычисления факториала с использованием

цикла FOR. Var K, N, Y : integer; Begin Write (‘N=’); Readln (N); Y:=1; For K:=1 to N do

{ For K:=N downto 1 do } Y:=Y*k; Writeln (‘N:=’,Y) End.

11.4. Процедуры BREAK , CONTINUE В циклах, начиная с версии 7.0 можно использовать две новые стан-

дартные процедуры BREAK и CONTINUE. Процедура BREAK позволяет досрочно выйти из цикла, не дожидаясь выполнения условия выхода. Проце-дура CONTINUE позволяет начать новую итерацию цикла, даже если преды-дущая не завершена.

Пример 11.4 Программа находит в массиве целых чисел первое отрицательное

число и выводит его на экран дисплея.

Page 91: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

91

Const N=10; Var Mas : Array[1..N] of Integer; I : Byte; Flag : Boolean; {переменная – индикатор отсут-

ствия отрицательных элементов в массиве} Begin Writeln (‘Введите элементы массива’); For i:=1 to N do Begin If Mas [i] <= 0 then continue ; Writeln (‘Первое отрицательное число =’,Mas

[i],’номер =’,i); Flag := true; Break End; If not Flag then Writeln (‘Отрицательных чисел

нет’); Readln End.

Page 92: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

92

12. СОСТАВНЫЕ ТИПЫ В ПАСКАЛЕ

Простые типы, описанные в разделе 8, определяют различные мно-жества атомарных (неразделимых) значений. Составные, или структурные типы, в отличие от простых, задают множества «сложных» значений; каждое значение из такого множества образует некоторый агрегат (совокупность) нескольких значений другого типа (или других типов). Можно сказать, что составные типы определяют некоторый способ образования новых типов из уже имеющихся, причем отдельные элементы составных значений могут иметь любой, в том числе составной, тип. Таким образом, Паскаль допускает образование структур данных произвольной сложности, позволяя тем самым достичь адекватного представления в программе тех данных, с которыми она оперирует.

В языке Турбо Паскаль определены следующие составные типы (см. рис.8.1):

• регулярные типы (массивы); • комбинированные типы (записи); • множественные типы; • строковые типы; • файловые типы; • объектные типы. В следующих разделах будут подробно описаны регулярные, комби-

нированные и множественные типы. Строковые и файловые типы описаны в других лекциях. Объектные типы не входят в сферу рассмотрения нашего курса.

12.1. Регулярные типы Каждое значение регулярного типа состоит из фиксированного числа

элементов одного и того же базового типа. Такой способ образования новых значений (фиксированное число однотипных компонент) позволяет обозна-чать значения этих типов одним (групповым) именем. Объект регулярного типа часто называют массивом , а групповое имя используется в качестве имени этого массива. Доступ к отдельным элементам массивов организуется посредством указания имени массива и порядкового номера (индекса) необ-ходимого элемента.

Для корректного определения регулярного типа необходимо задать две характеристики: тип элементов массива, а также количество и «способ нумерования» элементов. Последние характеристики задаются посредством указания типа индекса. Определение массива имеет следующий общий вид:

Type A = array [T1] of T2; Здесь:

Page 93: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

93

Array, of – служебные слова; Т1 – тип индекса массива; Т2 – тип компонент массива. В дальнейшем идентификатор этого типа может быть использован в

описании переменных. В качестве типа индекса может выступать любой дискретный тип,

кроме LongInt и ограниченных типов, построенных из типа LongInt, в частно-сти, допустимы ограниченные и перечислимые типы. Элементами массива могут быть переменные любого типа.

Пример 12.1 Ниже приведены описания различных массивов:

Type M1 = array [1..100] of real; M2 = array [char] of boolean; Matrix = array [ 1..10 ] of array[1..20] of integer; Database = array [1..MaxF] of file of Person; Var Vector : M1; Sym_Table : M2; Arr1, Arr2 : Matrix; S : array [Red, Yellow, Green] of boolean;

Примечания 1. Число элементов в массиве всегда должно быть фиксировано. 2. Для задания количества элементов массива используется тип ;

число элементов определяется количеством возможных значений указанного типа, что отличает язык Турбо Паскаль от многих других языков, в которых размер массива задается либо целым числом (или выражением целого типа), либо диапазоном целых чисел. Это придает Турбо Паскалю дополнительную гибкость, позволяя «нумеровать» элементы массива не только целыми числами, но и значениями произвольного целого типа.

3. В качестве элементов массива могут выступать значения любого типа; в частности, ими могут быть значения любых составных типов, например, массивы:

Var V2 : array[1..10] of array [1..20] of byte; Такую переменную можно трактовать двояко: как массив,

состоящий из нескольких массивов, либо как один двумерный мас-сив (матрицу). Для сокращения записи в подобных случаях можно использовать эквивалентную форму определения регулярных ти-

Page 94: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

94

пов, где в квадратных скобках указывается список типов индексов, разделенных запятыми, тот же массив можно описать:

Var V2 : array [ 1..10, 1..20 ] of of byte; Число индексов в определении (т.е. размерность массива) в

языке не ограничивается. 4. Турбо Паскаль допускает единственное возможное действие над

массивом в целом: использование его в операторе присваивания, например:

Vect1:=Vect2; причем типы обоих массивов должны быть эквивалентны.

12.1.1. ЭЛЕМЕНТЫ МАССИВА Доступ к элементам массива строится традиционно: после иденти-

фикатора массива в квадратных скобках указывается индекс нужного эле-мента или список индексов, определяющих элемент многомерного массива. В качестве индексов могут выступать произвольные выражения, тип которых должен соответствовать типу индексов в описании массива.

Так, доступ к элементам массива Vector, описанного ранее, строится следующим образом:

Vector [1] Vector [(i+1)*2]. Двумерный массив V2, описанный выше, допускает такой доступ к

своим элементам: V2 [3, 7] V2 [i, j]. Рассмотрим подробнее массив V2. Так как его можно трактовать как

«массив массивов», то, например, конструкция V2 [k] вполне допустима в языке и в данном случае обозначает k–ый массив

в группе из 10-ти массивов байтовых элементов. Для того чтобы адресовать-ся, скажем, к 5-му элементу этого массива, можно записать:

V2 [k] [5]. Такая запись корректна; ее более привычный эквивалент: V2 [k,5] -считается сокращением первоначальной записи. Элемент массива считается переменной; он может получать значения

(например, в операторе присваивания), а также участвовать в выражениях, где он представляет значение, помещенное в соответствующий элемент дан-ного массива. Ассортимент операций над элементами массива полностью определяется типом этих элементов (базовым типом массива).

Page 95: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

95

Пример 12.2 V2 [ i, j ] := V2 [ i, j-1 ] + 1; Sym_Table [ ‘z’ ] := Switch and Sym_Table [ ‘a’ ];

12.2. Строковые типы Тип STRING (строка) в Турбо Паскале широко используется для об-

работки текстов. Он во многом похож на одномерный массив символов ARRAY [0..N] OF CHAR, однако, в отличие от последнего, количество сим-волов в строке-переменной может меняться от 0 до N, где N - максимальное количество символов в строке. Значение N определяется объявлением типа STRING[N] и может быть любой константой порядкового типа, но не больше 255.

Турбо Паскаль разрешает не указывать N, в этом случае длина стро-ки принимается максимально возможной, а именно N=255.

Строка в Турбо Паскале трактуется как цепочка символов. К любому символу в строке можно обратиться так же, как к элементу одномерного мас-сива ARRAY [0..N] OF CHAR, например:

Var st : string; ......... if st [5] = ‘A’ then ..... Самый первый байт в строке имеет индекс 0 и содержит текущую

длину строки. Первый значащий символ строки занимает второй байт и име-ет индекс 1. Над длиной строки можно осуществлять необходимые действия и таким образом изменять длину. Например, удалить из строки все ведомые (конечные) пробелы можно следующим образом:

Var st : string [10]; i : word; ......... i := 10; while ( st[i]=‘ ‘ ) and ( i<>0) do begin dec ( i ); st[0] := chr ( i ) end; Значение текущей длины строки можно не только извлекать из пер-

вого байта самой строки, но и получать с помощью функции LENGTH ( st ). Например: Var st : string; .........

Page 96: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

96

write ( ‘Введите строку : ’ ); readln ( st ); writeln (‘Текущая длина строки - ’,Length(st )); ........ Данный фрагмент программы распечатает текущую длину введенной

строки. К строкам можно применять операцию “+” - сцепление, например: st := ‘a’ + ‘b’; st := st + ‘c’; {st содержит “abc”} Если длина сцепленной строки превысит максимально допустимую

длину N, то “лишние” символы отбрасываются. Операции отношения =, <>, >, <, >=, <= выполняются над двумя

строками посимвольно, слева направо с учетом внутренней кодировки сим-волов. Если одна строка меньше другой по длине, недостающие символы короткой строки заменяются значением CHR(0).

Следующие операции отношения дадут значение TRUE: ‘A’ > ‘1’ ‘Turbo’ < ‘Turbo Pascal’ ‘Паскаль’ >‘Turbo Pascal’ Все остальные действия над строками и символами реализуются с

помощью встроенных процедур и функций. 12.2.1. ПОДПРОГРАММЫ РАБОТЫ СО СТРОКАМИ Функция CONCAT ( S1 [, S2, ..., SN ). Возвращает значение типа

STRING - строку, представляющую собой сцепление строк - параметров S1, S2,...SN (аналог операции сцепления).

Функция COPY ( ST, INDEX, COUNT ). Возвращает значение типа STRING, копирует из строки ST COUNT символов, начиная с символа с но-мером INDEX.

Процедура DELETE ( ST, INDEX, COUNT ). Удаляет COUNT сим-волов из строки ST, начиная с символа с номером INDEX.

Процедура INSERT ( SUBST, ST, INDEX ). Вставляет подстроку SUBST в строку ST, начиная с символа с номером INDEX.

Функция POS ( SUBST, ST ). Возвращает значение типа INTEGER. Отыскивает в строке ST первое вхождение подстроки SUBST и возвращает номер позиции, с которой она начинается; если подстрока не найдена, воз-вращается ноль.

Процедура STR ( X [:WIDTH [:DECIMALS ] ], ST ). Преобразует число X из любого вещественного или целого типов в строку символов ST так, как это делает процедура WRITELN перед выводом; параметры WIDTH и DECIMALS, если они присутствуют, задают формат преобразования:

Page 97: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

97

WIDTH определяет общую ширину поля, выделенного под соответствующее символьное представление вещественного или целого числа X, а DECIMALS - количество символов в дробной части (имеет смысл только в том случае, когда X - вещественное число).

Процедура VAL (ST, X, CODE). Преобразует строку символов ST во внутреннее представление целой или вещественной переменной X, кото-рое определяется типом этой переменной. Параметр CODE содержит ноль, если преобразование прошло успешно. В этом случае в X помещается ре-зультат преобразования, иначе он содержит номер позиции в строке ST, где обнаружен ошибочный символ. Во втором случае содержимое X не меняется. Ведущие пробелы в строке ST должны отсутствовать.

Функция UPCASE (CH). Возвращает значение типа CHAR. Для символьного выражения CH, которое должно представлять собой строчную латинскую букву, возвращает соответствующую заглавную букву. Если зна-чением CH является любой другой символ, функция возвращает его без пре-образований.

Пример 12.3

Var x : real; y : integer; st, st1 : string; ............. st:= concat(‘12’, ‘345’); {строка st содержит 12345} st1:=copy(st, 3, length(st)-2); {st1 содержит 345} insert (‘-’, st1, 2); {строка st1 содержит 3-45 } delete(st, pos (‘2’,st1),3); {строка st содержит 15} str (pi:6:2, st); {строка st содержит 3.14} st1 := ‘3,1415’; val:=(x,st1,y); {y содержит 2, x остался без измене-

ния}

12.3. Комбинированные типы Комбинированные типы, как и регулярные типы, представляют со-

бой правило формирования составных типов. Объекты этого типа называют-ся записями. В отличие от массивов, записи могут объединять значения различных типов и поэтому являются, видимо, наиболее гибким механиз-мом построения данных.

Запись состоит из фиксированного числа компонентов, называемых полями записи. Чтобы можно было ссылаться на тот или иной компонент записи, поля именуются.

Структура объявления типа записи такова:

Page 98: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

98

<имя типа> = RECORD <список полей> END Здесь: <имя типа> - правильный идентификатор; RECORD, END - зарезервированные слова (запись, конец); <список полей> - этот список представляет собой последователь-

ность разделов записи, между которыми ставится точка с запятой. Каждый раздел записи состоит из одного или нескольких идентифи-

каторов полей, отделяемых друг от друга запятыми. За идентификатором (идентификаторами) ставится двоеточие и описание типа поля (полей). На-пример:

Type Birthday = record day, month : byte; year : word end; Var a, b : Birthday; ......... В этом примере тип Birthday (день рождения) содержит три поля с

именами DAY, MONTH и YEAR (день, месяц, год); переменные A и B со-держат записи типа Birthday.

Как видно из примера, распространенным случаем употребления за-писи является необходимость описать атрибуты (характеристики) некоторого объекта, представляемого и обрабатываемого в программе. Например, для описания объекта “человек” могут понадобиться следующие характеристики: • фамилия, имя, отчество (символьные массивы или строки); • пол (перечислимый тип из двух значений); • индекс специальности (целое) и т.д.

В этом случае описание комбинированного типа Person (человек) может выглядеть следующим образом:

Type Person =record Name, SecondName, SurName : string [20]; Sex : ( Male, Female ); Speciality : Word end; Имея в программе вышеприведенное описание, можно опре-

делить переменные данного типа, например: Var Sasha, Masha, Natasha: Person; Примечания

1. В пределах одной записи имена полей должны быть уникальны. 2. Имена полей могут совпадать с другими идентификаторами в пределах

Page 99: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

99

текущего блока, а также с именами полей в других записях. Как и в массиве, значения переменных типа записи можно присваи-

вать переменным того же типа, например: Masha := Natasha; Доступ к элементам (полям) записей производится с помощью кон-

струкции, называемой селектор записи и имеющей следующий общий вид: <имя записи> . <имя поля> Здесь: <имя записи> - имя переменной комбинированного типа; <имя поля> - имя поля данной переменной. Для переменных, введенных выше, допустимы следующие конструк-

ции: Sasha . Name :=‘Александр’; Masha . Name := ‘Мария’; Sasha . Sex := Male; Masha . Sex := Female; Masha . Speciality := Sasha . Speciality; Комбинированные типы можно использовать для построения более

сложных структур, например, массивов, состоящих из записей, или записей, в состав которых, в свою очередь, входят записи.

Первый случай может быть проиллюстрирован такими примерами:

Var Group : array [ 1..10 ] of Person; Database : file of Person; Для переменной Group доступ к полям записей, составляющих этот

массив, производится следующим образом: Group [i] . Sex := Female; ........

if Group[j].Name=‘Борис’ then WriteLn(Group[j].SurName); Рассмотрим случай, когда в составе записи содержатся поля, имею-

щие также тип записи. Пусть для комбинированного типа Person необходимо хранить информацию о дате рождения человека. Эту информацию можно представить в виде трех полей в составе типа Person. Однако логичнее для этого определить отдельный тип, так как в этом случае он может использо-ваться в описании других типов и переменных.

Пример 12.4 Type Date = Record Month : (Jan,Feb,Mar,Apr,May,June,July,Aug, Sept, Oct, Nov, Decem );

Page 100: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

100

Day : 1..31; Year : 1900..2000 end; Person = Record Name, SecondName, SurName : string [20]; Sex : ( Male, Female ); Speciality : Word; Birthday : Date end; Доступ к полям из элемента Birthday производится по общим прави-

лам, например: Sasha . Birthday . Year := 1970; Masha . Birthday . Month := May; 13.3.1. ЗАПИСИ С ВАРИАНТАМИ Понятие записи в языке Турбо Паскаль предусматривает одну не

вполне тривиальную возможность. Довольно часто бывает необходимо в пределах одной записи иметь различную информацию в зависимости от кон-кретного значения некоторого поля.

Любой комбинированный тип, помимо фиксированного списка по-лей, может содержать так называемую вариантную часть , предполагаю-щую определение нескольких вариантов структуры этого типа. Это означает, что разные переменные, хотя и относятся к одному и тому же типу, могут иметь отличающуюся структуру. Различие может касаться как числа компо-нент, так и их типа.

Вариантная часть содержит список несколько альтернатив, в каждой из которых в круглых скобках задается список полей, присущих данному варианту. Списку предшествуют метки, являющаяся конкретными значения-ми поля, которое является критерием выбора вариантов. Перечисление аль-тернатив начинается с определения этого поля.

Синтаксис описания такой записи имеет вид: type <имя комбинированного типа> = record <описание поля 1>; <описание поля 2>; ....... case <переменная выбора> : <тип> of <значение1> : (<описание поля 1>; <описание поля 2>; ........ <описание поля m>);

Page 101: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

101

<значение2> : (<описание поля 1>; <описание поля 2>; ........ <описание поля n>); .............. <значение k> : (<описание поля 1>; <описание поля 2>; ........ <описание поля l>) end; Пример 12.5 Рассмотрим тип Person (см. предыдущий подраздел), содержащий

информацию о человеке. Если в этом типе поле Sex (пол) имеет значение Male (мужской), то пусть необходимо предусмотреть такие поля: • время прохождения очередных военных сборов; • курит человек или нет.

Если поле имеет значение Female (женский), то должна быть инфор-мация о цвете глаз.

В приведенной ситуации запись с вариантами будет иметь следую-щий вид.

Type PersonSex = Male, Female); Person = record Name, SecondName, SurName : string [20]; Speciality : Word; Birthday : Date; case Sex : PersonSex of Male :(Army : Date; Smoking : Boolean); Female:(EyesColor:(Blue, Brown, Gray, Green)) end;

Примечания

1. В определении комбинированного типа может быть только одна вари-антная часть и она должна быть задана в конце записи.

2. Альтернативы вариантной части помечаются допустимыми значениями поля Sex. Это поле иногда называют дискриминантом записи .

3. Для того чтобы поле могло служить дискриминантом записи, его тип

Page 102: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

102

должен быть идентификатором. Поэтому перечислимый тип для поля Sex пришлось определить отдельно.

4. Идентификаторы полей во всех вариантах должны быть различны и отли-чаться от идентификаторов полей фиксированной части.

5. Для некоторых значений поля - дискриминанта вариант может отсутство-вать. Тогда после двоеточия может стоять пустой список вида ().

6. Любой вариант, в свою очередь, может иметь свою вариантную часть, которая должна располагаться в конце списка полей данного варианта.

7. Для размещения переменной комбинированного типа всегда отводится фиксированный объем памяти, причем если в записи есть варианты, то этот объем определяется по самому большому варианту. Таким образом, различные варианты одной записи как бы “накладываются“ друг на друга в памяти, то есть занимают одну и ту же область.

8. Турбо Паскаль не содержит никаких средств контроля за правильностью работы с вариантами записей, это возлагается на программиста.

12.3.2. ОПЕРАТОР РАБОТЫ С ЗАПИСЯМИ WITH Ранее говорилось, что при обращении к полям переменных комбини-

рованного типа необходимо задавать полное имя поля, включающее в каче-стве префикса имя записи, содержащей данное поле. При выполнении много-численных операций над записями их описание с использованием полных имен полей становится чрезмерно громоздким. Сократить подобные описа-ния и сделать текст программы более структурированным и легко читаемым позволяет специально введенный для этой цели оператор обработки записей With. В одном операторе With можно обратиться к полям сразу нескольких конкретных переменных комбинированного типа, используя только имена полей, которые необязательно должны быть уникальными. Более того, опера-тор With применяется не только при работе с записями, но и для обращения к полям и методам объектов. Оператор With, используемый для обработки за-писей, имеет синтаксис:

With <запись1>, <запись2>,...,<запись n> do <оператор>; Здесь: With, do - зарезервированные слова; <запись 1>, <запись 2>, ...,<запись n> - имена переменных комбини-

рованного типа; <оператор> - любой оператор Турбо Паскаля. С помощью этого оператора легко проинициализировать любую за-

пись. Пример 12.6 Type Person1 = record

Page 103: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

103

Name, SecondName, SurName : string [20]; Speciality : Word; end; Var Masha : Person; Begin With Masha do Begin Name := ‘Мария’; SecondName := ‘Ивановна’; SurName := ‘Петрова’; Speciality : = 02 end; ......... end. Если фрагмент программы содержит операции над несколькими за-

писями, то в операторе WITH можно указать список необходимых перемен-ных-записей, разделенных запятыми (см. общий синтаксис оператора). Если имена полей этих переменных уникальны, никаких коллизий не возникает. Если же встречаются одноименные поля, их принадлежность к конкретным записям устанавливается исходя из того, что оператор

With <зап1>, <зап2>, ...<запN> do <оператор>; где <зап1>, <зап2>, ...<запN> - имена записей, эквивалентен опера-

тору With <зап1> do With <зап2> do ...... With <запN> do <оператор>; Учитывая приведенное правило интерпретации имен, <зап2> в пер-

вую очередь рассматривается как поле записи <зап1>, т.е. как <зап1>.<зап2>, и лишь затем в качестве самостоятельной переменной, <зап3> - как поле <зап2>, или <зап2>.<зап3>, и так далее. Итак: если в двух записях определе-ны поля с одинаковыми именами, считается, что поле принадлежит той запи-си, имя которой в заголовке оператора WITH указано позже имени другой.

12.4. Множественные типы Множественные типы принадлежат к несколько непривычным и

сравнительно редко используемым средствам языка Паскаль. Однако в ряде случаев использование множественных типов позволяет повысить компакт-ность и наглядность программ.

Значения множественного типа так же, как и массивы, строятся из

Page 104: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

104

нескольких значений одного (базового) типа. Однако в отличие от массивов и записей значение множественного типа может содержать любое количество различных элементов базового типа - от ноля элементов (пустое множест-во) до всех возможных значений базового типа. Иными словами, возможны-ми значениями переменных множественного типа являются все подмноже-ства значений базового типа.

Синтаксис описания некоторого множественного типа имеет вид: Type <имя типа> = set of <базовый тип>; Здесь: <имя типа> - правильный идентификатор языка; set, of - зарезервированные слова (множество, из); <базовый тип> - базовый тип элементов множества, в качестве кото-

рого может использоваться любой порядковый тип, кроме WORD, INTEGER, LONGINT (т.е. типы BYTE и CHAR, перечислимые типы, а также ограни-ченные типы, образованные из них).

Пример 12.7 Type digitChar = set of ‘0’..’9’; digit = set of 0..9; elemColor = ( Red, Yellow, Blue ); color = set of Color; Var s1, s2, s3 : digitChar; s4, s5, s6 : digit; myColor : Color; Переменные s4, s5, s6 могут принимать следующие значения: <пусто> 0, 1, 2 1, 2, 3 0, 1, 2, 3, 4 1, 5 3, 4, 5 ..... Примечания 1. Все значения базового типа, образующие конкретные значения

множественного типа, должны быть различны. Например, не может быть множества: 1, 2, 2. 2. Порядок “расположения” элементов в множестве не имеет значе-

ния.

Page 105: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

105

Множества: 1, 2, 3 3, 2, 1 одинаковы. Это соответствует принятой в математике трактовке множе-

ства как бесповторной неупорядоченной совокупности объектов. Для задания множества используется так называемый конструктор

множества: список спецификаций элементов множества, отделяемых друг от друга запятыми; список обрамляется квадратными скобками. Специфика-циями элементов могут быть константы или выражения базового типа, а так-же - ограниченный тип из того же базового типа.

Например: s6 := [1, 2, 3]; s4 := [ 0, 1, 2, 3+4 ]; s5 := [ 0..3, 6 ]; {эквивалентно множеству [0, 1, 2, 3, 6]] s1 := [ ‘0’..’5’ ]; s2 := []; {пустое множество} myColor := [ Red ]; 12.4.1. ОПЕРАЦИИ НАД МНОЖЕСТВАМИ Полезность того или иного типа данных определяется, в первую оче-

редь, набором допустимых операций над значениями этих типов. Что касает-ся множественных типов, то здесь имеются следующие группы операций:

• теоретико-множественное объединение, пересечение и вычитание множеств; • проверка принадлежности элемента множеству; • проверка на равенство и неравенство множеств; • проверка на вхождение (принадлежность) одного множества в дру-гое. Рассмотрим подробнее эти операции. * - пересечение двух множеств: результат содержит элементы, об-

щие для обоих множеств. + - объединение двух множеств: результат содержит элементы пер-

вого множества, дополненные недостающими элементами из второго множе-ства.

- - разность множеств: результат содержит элементы из первого множества, которые не принадлежат второму.

Например: s5*s6 содержит [ 1, 2, 3 ]. s4+s6 содержит [0, 1, 2, 3, 7]. s5-s6 содержит [0, 6]. s5-s4 содержит [6].

Page 106: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

106

IN - проверка принадлежности множеству. Правый операнд дол-жен быть множеством, левый - значением базового типа множества. Опера-ция возвращает значение TRUE, если значение входит в множество, и FALSE - в противном случае.

Например, следующие выражения 2 IN [ 1..10 ] 5 IN [ 1, 2, 7, 10 ] возвращают значения TRUE и FALSE соответственно. Операцию проверки принадлежности удобно использовать для ис-

ключения более сложных проверок. Например, оператор вида: if ( ch = ‘a’ ) or ( ch = ‘b’ ) or ( ch = ‘x’ ) or ( ch = ‘y’ ) then S; может быть переписан в более компактной и наглядной форме: if ch in [ ‘a’, ‘b’, ‘x’, ‘y’ ] then S; Заметим, что второй вариант более эффективен с точки зрения быст-

родействия. Проверки на равенство, неравенство и включение множеств. Эти

бинарные операции также имеют обычный теоретико-множественный смысл и обозначаются следующими знаками:

= равенство (совпадение) двух множеств; <> неравенство множеств; <= проверка на вхождение множества из левого операнда в множест-

во правого операнда; >= проверка на вхождение множества из правого операнда в множе-

ство левого операнда. Все эти операции вырабатывают логическое значение TRUE или

FALSE в зависимости от успеха проверки. Приведем примеры использования этих операций.

[ 1, 2, 3 ] = [ 1, 2 ] false [ 1, 2, 3 ] >= [ 1, 2 ] false [ S ] <= [ 1..10 ] true, если S – целое число из диапазона 1..10 [ 1, 2, 3 ] <> [ 1, 2, 2 ] true Необходимо отметить, что все операции над множествами работают

достаточно эффективно, поэтому имеет смысл применять их всюду, где это необходимо. К сожалению, набор операций над множествами не содержит по крайней мере одной практически важной операции – выборки значения из множества (или близко связанного с ней средства циклического перебора значений множества). Поэтому при необходимости подобных действий при-ходится организовывать цикл по всему диапазону значений базового типа, проверяя на каждой итерации принадлежность очередного значения данному

Page 107: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

107

множеству, например: Var Symbols : set of char; S : char; Begin …… for S := chr (0) to chr (255) do if S in Symbols then <действия с переменной S> ….. End.

Page 108: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

108

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. Зубов В.С. Программирование на языке Turbo Pascal (версии 6.0 и 7.0). М.: Информационно-издательский дом «Филинъ», 1997. 320 с.

2. Мануйлов В.Г. Разработка программного обеспечения на Паскале. М. «ПРИОР», 1996. 240 с.

3. Турбо Паскаль 7.0. К.: Издательская группа BHV, 1998. 448 с. 4. Фаронов В.В. Турбо Паскаль (в 3-х книгах). Книга 1. Основы Турбо

Паскаля. М.: Учебно-инженерный центр «МВТУ-ФЕСТО ДИДАКТИК», 1992. 304 с.

5. Зуев Е.А. Язык программирования Turbo Pascal 6.0, 7.0. М.: Веста, Радио и связь, 1993. 385 с.

Page 109: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

109

СОДЕРЖАНИЕ

1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ .........3

1.1. ПЕРВЫЙ ЭТАП – ПОСТАНОВКА ЗАДАЧИ .................................................3 1.2. ВТОРОЙ ЭТАП - ВЫБОР МЕТОДА РЕШЕНИЯ.............................................4 1.3. ТРЕТИЙ ЭТАП - РАЗРАБОТКА АЛГОРИТМА РЕШЕНИЯ ЗАДАЧИ ...............4 1.4. ЧЕТВЕРТЫЙ ЭТАП – КОДИРОВАНИЕ АЛГОРИТМА ...................................4 1.5. ПЯТЫЙ ЭТАП – ТРАНСЛЯЦИЯ И КОМПИЛЯЦИЯ ПРОГРАММЫ .................5 1.6. ШЕСТОЙ ЭТАП – ТЕСТИРОВАНИЕ ПРОГРАММЫ .....................................5 1.7. СЕДЬМОЙ ЭТАП – СОЗДАНИЕ ДОКУМЕНТАЦИИ ......................................6 1.8. ВОСЬМОЙ ЭТАП - СОПРОВОЖДЕНИЕ И ЭКСПЛУАТАЦИЯ .......................6

2. ТЕХНОЛОГИЯ НИСХОДЯЩЕГО СТРУКТУРНОГО ПРОГРАММИРОВАНИЯ...................................................................................7

2.1. НИСХОДЯЩАЯ РАЗРАБОТКА ...................................................................7 2.2. СВОЙСТВА ПРОГРАММНЫХ МОДУЛЕЙ ...................................................9 2.3. КОДИРОВАНИЕ И ТЕСТИРОВАНИЕ СВЕРХУ ВНИЗ ....................................9

3. СРЕДСТВА И ПРАВИЛА ПОСТРОЕНИЯ БЛОК-СХЕМ .................12

3.1. ПРАВИЛА ПОСТРОЕНИЯ БЛОК-СХЕМ ....................................................12 3.2. УСЛОВНЫЕ ОБОЗНАЧЕНИЯ БЛОКОВ .....................................................12 3.3. ПРИМЕРЫ ИЗОБРАЖЕНИЙ АЛГОРИТМОВ С ПОМОЩЬЮ БЛОК-СХЕМ .....14

3.3.1. Пример линейного алгоритма ..................................................14 3.3.2. Пример разветвляющегося алгоритма ...................................16 3.3.3. Пример циклического алгоритма .............................................18

4. ЯЗЫК ПРОГРАММИРОВАНИЯ TURBO PASCAL 7.0 ....................21

4.1. ИСТОРИЯ СОЗДАНИЯ, ВОЗМОЖНОСТИ И НАЗНАЧЕНИЕ ........................21 4.2. ЛИНГВИСТИЧЕСКАЯ КОНЦЕПЦИЯ ЯЗЫКА ПАСКАЛЬ ............................23

5. ИНТЕГРИРОВАННАЯ ИНСТРУМЕНТАЛЬНАЯ ОБОЛОЧКА .....25

5.1. ВЫЗОВ ИНТЕГРИРОВАННОЙ ИНСТРУМЕНТАЛЬНОЙ ОБОЛОЧКИ............25 5.2. СТРУКТУРА ОСНОВНОГО ЭКРАНА ИИО ТП 7.0 ...................................26

5.2.1. Строка меню .............................................................................26 5.2.2. Рабочая зона (Desktop)..............................................................27 5.2.3. Строка состояния.....................................................................28

5.3. КОМАНДЫ МЕНЮ ОПЦИИ FILE .............................................................28 5.4. КОМАНДЫ ОПЦИИ МЕНЮ EDIT ............................................................31 5.5. КОМАНДЫ ОПЦИИ МЕНЮ SEARCH .......................................................32 5.6. КОМАНДЫ ОПЦИИ МЕНЮ RUN .............................................................34 5.7. КОМАНДЫ ОПЦИИ МЕНЮ COMPILE......................................................35 5.8. КОМАНДЫ ОПЦИИ МЕНЮ DEBUG.........................................................37

Page 110: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

110

5.9. КОМАНДЫ ОПЦИИ МЕНЮ TOOLS .........................................................38 5.10. КОМАНДЫ ОПЦИИ МЕНЮ OPTIONS ....................................................39 5.11. КОМАНДЫ ОПЦИИ МЕНЮ WINDOW....................................................47 5.12. КОМАНДЫ ОПЦИИ МЕНЮ HELP..........................................................49

6. АЛФАВИТ ЯЗЫКА И СПЕЦИФИКА ИСПОЛЬЗОВАНИЯ СИМВОЛОВ........................................................................................................51

7. ОБЩАЯ СТРУКТУРА ПРОГРАММ В TURBO PASCAL 7.0. ...........53

7.1. РАЗДЕЛ ОБЪЯВЛЕНИЙ И СОГЛАШЕНИЙ ................................................54 Заголовок ..............................................................................................54 Глобальные директивы компилятора ...............................................54 Оператор USES ...................................................................................55 Объявления глобальных меток, констант, типов и переменных ...55 Описание констант ............................................................................56 Описание типов и переменных...........................................................56

7.2. ПРОЦЕДУРЫ И ФУНКЦИИ......................................................................57 Заголовок процедуры или функции .....................................................57 Объявления локальных меток, констант, типов и переменных.....57 Тело процедуры/функции ....................................................................57

7.3. ОСНОВНОЙ БЛОК ПРОГРАММЫ ............................................................58 7.4. КОММЕНТАРИИ ....................................................................................58

8. ТИПЫ В ЯЗЫКЕ ТУРБО ПАСКАЛЬ ....................................................60

8.1. ЦЕЛЫЕ ТИПЫ ........................................................................................62 8.2. ВЕЩЕСТВЕННЫЕ ТИПЫ ........................................................................63 8.3. СИМВОЛЬНЫЙ ТИП ...............................................................................63 8.4. БУЛЕВСКИЙ ТИП...................................................................................64 8.5. ОГРАНИЧЕННЫЕ ТИПЫ .........................................................................64 8.6. ПЕРЕЧИСЛИМЫЕ ТИПЫ.........................................................................65

9. ПРОГРАММИРОВАНИЕ ЛИНЕЙНЫХ АЛГОРИТМОВ .................67

9.1. ОПЕРАТОРЫ ЯЗЫКА ..............................................................................67 9.2. ОПЕРАТОР ПРИСВАИВАНИЯ .................................................................67

9.2.1.Операции в Паскале....................................................................68 9.2.2. Арифметические операции.......................................................68 9.2.3. Логические операции .................................................................69 9.2.4. Операции отношения ................................................................70 9.2.5. Круглые скобки ..........................................................................70 9.2.6. Порядок вычисления выражений .............................................70

9.3. СТАНДАРТНЫЕ ФУНКЦИИ ....................................................................71 9.3.1. Арифметические функции ........................................................71

Page 111: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

111

9.3.2. Функции преобразования типа.................................................72 9.3.3. Функции для величин порядкового типа..................................73

9.4. ОПЕРАТОРЫ ВВОДА/ВЫВОДА ...............................................................73 9.4.1.Вывод на экран............................................................................74 9.4.2. Ввод с клавиатуры ....................................................................75

10. ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЯЮЩИХСЯ АЛГОРИТМОВ...................................................................................................78

10.1. УСЛОВНЫЙ ОПЕРАТОР .......................................................................78 10.2. СОСТАВНОЙ ОПЕРАТОР ......................................................................81 10.3. ОПЕРАТОР ВАРИАНТА (ВЫБОРА) ........................................................82 10.4. ОПЕРАТОР ПЕРЕХОДА.........................................................................83

11. ПРОГРАММИРОВАНИЕ ЦИКЛИЧЕСКИХ АЛГОРИТМОВ .....85

11.1. ОПЕРАТОР ЦИКЛА С ПРЕДУСЛОВИЕМ (WHILE) ................................85 11.2. ОПЕРАТОР ЦИКЛА С ПОСТУСЛОВИЕМ (REPEAT) ................................86 11.3. ЦИКЛ С ПАРАМЕТРОМ ........................................................................88 11.4. ПРОЦЕДУРЫ BREAK , CONTINUE ..................................................90

12. СОСТАВНЫЕ ТИПЫ В ПАСКАЛЕ...................................................92

12.1. РЕГУЛЯРНЫЕ ТИПЫ ............................................................................92 12.1.1. Элементы массива ..................................................................94

12.2. СТРОКОВЫЕ ТИПЫ..............................................................................95 12.2.1. Подпрограммы работы со строками....................................96

12.3. КОМБИНИРОВАННЫЕ ТИПЫ ...............................................................97 13.3.1. Записи с вариантами ............................................................ 100 12.3.2. Оператор работы с записями With ..................................... 102

12.4. МНОЖЕСТВЕННЫЕ ТИПЫ ................................................................. 103 12.4.1. Операции над множествами................................................ 105

БИБЛИОГРАФИЧЕСКИЙ СПИСОК.......................................................... 108

Page 112: Среда Турбо Паскаль 7.0.window.edu.ru/resource/575/28575/files/ustu182.pdf · Среда Турбо ... 1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО

112

Ольга Михайловна Зверева Наталья Григорьевна Саблина

СРЕДА ТУРБО ПАСКАЛЬ 7.0. РЕАЛИЗАЦИЯ ПРОСТЕЙШИХ АЛГОРИТМОВ.

Конспект лекций Часть 1

Редактор Н.П. Кубыщенко

Подписано в печать 20.01.2000 Формат 60х84 1.16 Бумага типографская Офсетная печать Усл. печ. л. 6,51 Уч.-изд. л. 6,22 Тираж 500 Заказ Цена «С» ООО «Издательство УМЦ-УПИ» Екатеринбург, Мира, 17