Начальные сведения о программах на языке Pascal
Алгоритм и программа
Наш курс посвящен изучению не только языка Pascal, но и некоторых алгоритмов, решающих наиболее известные задачи программирования, поэтому начнем мы со знакомства с некоторыми основополагающими понятиями.
Алгоритм - это последовательность действий, которые необходимо выполнить, чтобы решить поставленную задачу.
Программа же представляет собой набор команд на языке, понятном исполнителю, реализующий некоторый алгоритм. В нашем случае исполнителем является компьютер, а языком программирования будет язык высокого уровня Pascal. К сожалению, любой язык высокого уровня удобен только человеку, пишущему или отлаживающему программу, но совершенно непонятен компьютеру. Программа на таком языке называется исходным текстом и хранится во внешнем файле с расширением .pas.
Для перевода программы на язык низкого уровня, понятный исполнителю-компьютеру, существуют специальные программы-переводчики - компиляторы. Результатом работы компилятора (иными словами, результатом процесса компиляции) является исполняемый код, который записывается в файл с расширением .exe.
Свойства алгоритма
Любой алгоритм должен обладать следующими свойствами:
- массовостью ( алгоритм должен уметь решать не одну конкретную задачу, а целый класс однотипных задач);
- результативностью ( алгоритм должен выдавать результат своей работы);
- определенностью (на каждом шаге выполнения алгоритма исполнитель должен точно знать, какой шаг будет следующим).
Эти же свойства присущи и программам, реализующим алгоритмы. Если же хотя бы одно из них оказывается невыполненным, программа полностью теряет смысл.
Компиляция, отладка и тестирование
Никто не станет спорить с тем, что неграмотно написанный текст очень сложно, а порой и вовсе невозможно правильно перевести на другой язык. Это верно для естественных языков, это верно и для языков программирования. Но если переводчик-человек иногда может как-то догадаться, что же именно хотел сказать автор неграмотного текста, то программе-переводчику такое не по силам. Любой компилятор требует, чтобы программа, подаваемая ему для перевода, была абсолютно правильно составлена.
В языке программирования, как и в любом другом языке, существуют синтаксис - правила записи его конструкций - и семантика - смысл его конструкций. Компилятор проверяет только синтаксис. Поиском же семантических ошибок занимается программист в процессе тестирования и отладки своей программы
Отладка - это поиск и исправление ошибок в программе. Тестирование - это составление специальных наборов входных и выходных данных (тестов), а затем исполнение программы и проверка полученных результатов в поисках возможных семантических или логических ошибок.
Чтобы уменьшить затраты времени и сил на отладку, нужно писать синтаксически и логически правильные программы. Технологиям написания надежных программ, их тестирования и отладки будет посвящена последняя лекция нашего курса.
Средства разработки программ
Существует довольно большое количество средств написания программ на языке Pascal, позволяющих составлять, компилировать, исполнять и отлаживать программы на этом удобном языке структурного программирования1Подробное изложение истории языка Pascal, перечисление его "потомков", описание его преимуществ и взаимоотношений с другими языками программирования можно найти в статье Р. Богатырева "Летопись языка Паскаль" . Самыми известными сегодня являются Turbo Pascal (он же Borland Pascal), Object Pascal (не путать с Delphi) и Free Pascal. Их различные, в том числе и бесплатные, версии можно найти в Сети. Для определенности мы будем опираться на самую распространенную (хотя и не во всем соответствующую стандартам ISO) реализацию - Turbo Pascal.
Итак, в составе среды разработчика Turbo Pascal имеются:
- текстовый редактор, в котором можно набирать тексты программ ;
- компилятор, превращающий исходные тексты в исполняемый код ;
- отладчик, помогающий обнаруживать и исправлять ошибки в программе
Из многочисленных возможностей, предоставляемых средой Turbo Pascal, мы упомянем лишь самые важные - те, без которых написание программ становится совсем уж затруднительным.
- Нажатие клавиш F1, Alt+F1, Ctrl+F1 открывает экранную подсказку.
- Нажатие клавиши F2 позволяет сохранить исходный текст программы.
- Нажатие клавиши F3 открывает диалог выбора нужного файла (по умолчанию, отображаются только файлы с расширением .pas).
- Нажатие клавиши Alt+F5 показывает консоль (см. п. "Ввод и вывод: консоль" ниже) с результатами работы программы.
- Нажатие клавиши Ctrl+F9 начинает процесс выполнения программы. Если она еще не была откомпилирована, предварительно будет вызван компилятор
- Клавиши F7 и F8 обеспечивают трассировку - пошаговое выполнение программы, позволяющее проследить за процессом ее выполнения.
- Дополнительное окно Debug/Watch показывает текущее состояние выбранных переменных.
Более подробно о возможностях среды Turbo Pascal можно узнать в любом руководстве по ее использованию (в том числе и во встроенном Help).
Структура Pascal-программы
Для того чтобы Pasсal-компилятор правильно понял, какие именно действия от него ожидаются, ваша программа должна быть оформлена в полном соответствии с синтаксисом (правилами построения программ ) этого языка.
Приступим же к изучению этих правил.
Любая Pascal-программа может состоять из следующих блоков (напомним, что квадратными скобками здесь и далее помечены необязательные части):
program <имя_программы>; [ uses <имена_подключаемых_модулей>;] (см. лекцию 13) [ label <список_меток>;] (см. п. "Метки и безусловный переход" ниже) [ const <имя_константы> = <значение_константы>;] (см. п. "Константы" ниже) [ type <имя_типа> = <определение_типа>;] (см. лекцию 2) [ var <имя_переменной> : <тип_переменной>;] (см. п. "Переменные и типы данных" ниже) [ procedure <имя_процедуры> <описание_процедуры>;] (см. лекцию 8) [ function <имя_функции> <описание_функции>;] begin {начало основного тела программы} <операторы> end. (* конец основного тела программы *)
Сразу же необходимо сделать важную оговорку: поздние версии компиляторов языка Pascal уже не требуют указывать название программы, то есть строку
program <имя_программы>;
проще говоря, можно опустить. Но это возможно только в том случае, если вся программа содержится в одном модуле-файле. Если же программа состоит из нескольких самостоятельных кусков - модулей (см. лекцию 13), то каждый из них должен иметь заголовок (program или unit).
Любой из перечисленных необязательных разделов может встречаться в тексте программы более одного раза, их общая последовательность также может меняться, но при этом всегда должно выполняться главное правило языка Pascal: прежде чем объект будет использован, он должен быть объявлен и описан.
Внешний вид исходного текста программы
Компиляторы языка Pascal не различают строчные и прописные буквы, а пробельные символы игнорируют, поэтому текст программы можно структурировать так, чтобы читать и отлаживать его было наиболее удобно.
Например, операторы каждого логически единого блока программы стоит записывать с небольшим отступом от левого края экрана, и чем глубже вложенность блока, тем шире должны быть отступы перед входящими в него операторами. Этому правилу подчиняются все примеры, приводимые в курсе наших лекций2Отклонения от этого правила возможны в связи с ограничениями, связанными с версткой книги.. Кроме того, встроенный редактор среды Turbo Pascal автоматически выравнивает левые края строк. И еще один полезный совет: для облегчения отладки программы не следует записывать на одну строку несколько операторов.