Ключевые слова: подготовка программы, Паскаль-среда, основные функции среды, Турбо-Паскаль, АВС-Паскаль, компиляция, выполнение программы, ошибки, горячие клавиши.
Как ввести программу в компьютер и, главное, что делать с ней дальше, как заставить компьютер ее выполнять? В этом нам поможет специальная программа, точнее, комплекс программ, называемый Паскаль-среда.
Ввести программу в память компьютера можно с помощью какого-либо текстового редактора (можно использовать, например, Блокнот, а вот Word — нельзя, он вставляет в текст дополнительные символы). Таким образом, на первом этапе программа представляет собой обычный текст, ее можно хранить в текстовом файле.
Назвать этот файл можно как угодно, однако для дальнейшей работы будет удобно, если при именовании файлов придерживаться некоторых принципов. Во-первых, будем давать файлам с программой на Паскале расширение PAS. Во-вторых, имена будем составлять только из латинских букв и цифр, и длина их не будет превышать 8 символов.
Но вся беда в том, что компьютер не понимает обычного текста, в том числе и текста на языке Паскаль, не понимает буквы, десятичные числа, а понимает только нули и единицы. Программа, которую может выполнять компьютер, должна быть написана на специальном машинном языке (его алфавит состоит только из нулей и единиц и больше ни единого символа, даже пробела, не содержит!). Кто же выполнит эту нудную работу, переведет программу с языка Паскаль на машинный язык? Не волнуйтесь, самим это делать не придется. Для этого существуют специальные программы-переводчики — трансляторы (от translate — переводить).
Есть разные методы трансляции. Транслятор с Паскаля кроме непосредственно перевода может выполнять еще некоторые действия, например, добавлять в программу нужные фрагменты, собирать ее из разных частей, поэтому он называется «компилятор» (от compile — собирать, составлять). Результатом работы компилятора является создание так называемого исполняемого файла (он имеет расширение EXE, от слова execute — выполнить), этот файл написан на машинном языке и может быть выполнен компьютером.
Таким образом, решение задачи на компьютере разбивается на следующие этапы:
Важной частью программирования является отладка программы, в процессе ее выполнения все эти этапы приходится выполнять несколько раз, только ввод текста заменяется его редактированием.
Чтобы нам не думать, с помощью какой программы какой файл обрабатывать, быстро переходить от одного вида работы к другому, и создан набор программ, который мы будем называть Паскаль-среда. Основные виды ее деятельности таковы.
Существует несколько сред для работы с Паскалем с разными названиями (к слову Паскаль добавляется приставка BORLAND, FREE, GNU, ABC и др.), некоторые из них имеют разные версии, могут запускаться из-под Windows или Linux; в средах могут использоваться разные версии языка Паскаль, разные компиляторы. Однако различия между ними невелики и проявляются лишь в весьма несущественных деталях, как правило, при работе с достаточно сложными и емкими программами, поэтому здесь углубляться в эти подробности не будем.
Дело в том, что язык Паскаль был разработан в 1970 году (автор — швейцарский ученый Никлаус Вирт (Niklaus Wirth)). Язык создавался как средство для удобной, наглядной записи алгоритмов и обучения программированию, но получил широкое распространение не только для этих целей и нашел практическое применение. При переносе этого «академического», разработанного «на бумаге» языка на реальные компьютеры разработчики программного обеспечения допускали различные отклонения от стандарта, предложенного автором, вносили добавления и изменения. Так появлялись различные «диалекты» языка. Понятно, что в 1970-х гг. не было графики, разных шрифтов, дисплеи были черно-белые. Новые возможности постепенно добавлялись в разные версии языка, иногда с некоторыми различиями. Мы будем здесь использовать версию Турбо Паскаль 7.0. Подавляющее большинство программ будет работать и во всех прочих версиях (например, на Free Паскале), другие вы легко сможете адаптировать, так как, повторим, это должны быть весьма сложные программы, и вы к моменту их написания уже будете обладать достаточными знаниями (некоторые различия мы постараемся отметить).
Рассмотрим основные правила работы в Паскаль-среде (поговорим отдельно о средах Турбо Паскаль или Free Паскаль — они очень похожи даже внешне — и о среде ABC-Паскаль).
Редактирование — не самая сложная, но наиболее долгая операция при работе с программой (компьютер считает быстро, а вот человек печатает медленно). Возможно, именно поэтому окно редактора является основным в Паскаль-среде, в него мы попадаем при входе в среду. Эту область экрана можно перемещать, изменять в размерах, перекрывать, закрывать и открывать.
Поле для редактирования текста синего цвета, сверху — меню среды, снизу — «горячие клавиши». Слева внизу через двоеточие два числа — текущая позиция курсора (номер строки и номер позиции в строке). Когда вы нажимаете клавиши, курсор передвигается, числа меняются. На экране обычно помещается 20 строк текста по 80 символов в строке. Понятно, что программа может быть много больше как в «длину», так и в «ширину». В таком случае мы на экране видим лишь ее часть, помещающуюся в окно; чтобы увидеть другие части, надо перемещать курсор.
Задание. Наберите длинную строку (более 80 любых символов), посмотрите, что теперь на экране, — программа как бы «убежала», виден только «хвост» длинной строки. Договоримся, что мы без особой нужды в наших программах не будем использовать строки длиной более 80 символов, чтобы текст было удобно читать с экрана.
Ввод текста производится обычным образом — нажатием буквенных и цифровых клавиш. Для ввода больших букв, символов используется клавиша Shift. Вот только для перехода от латинских букв к русским (и наоборот) могут использоваться сочетания разных клавиш (а иногда и вообще может не быть возможности пользоваться русскими буквами). Для стирания неправильно набранных символов используются привычные клавиши Delete и Backspace (на многих клавиатурах она так не называется, а помечена стрелочкой влево, но находится не вместе с другими стрелочками, а справа вверху основной клавиатуры).
Редактор работает в двух режимах: вставки и замены. Переключение режимов производится клавишей Insert. При этом изменяется вид курсора. В режиме замены он изображается большим прямоугольником, в режиме вставки — маленьким (как символ подчеркивания). Назначение этих режимов понятно без особых пояснений: попробуйте сами. В пояснениях нуждается работа клавиши Enter (той, что называется «большая клавиша справа»). В режиме замены при ее нажатии происходит переход на следующую строку (причем не на первую позицию, а в ту позицию, где начинается текст предыдущей строки). В режиме вставки, если курсор внутри строки, при нажатии Enter строка разделяется на две (соединить части можно, подведя курсор в первую позицию второй строки и нажав клавишу Backspace, или подведя курсор в конец первой строки и нажав Delete). Если же курсор стоит в конце строки, вставляется новая строчка. Ввод программы удобно производить именно в режиме вставки, так как никаким другим образом создать новые строчки нельзя.
К сожалению, так как Паскаль-редактор появился задолго до создания системы Windows, совместимость его с другими программами этой системы неполная. В частности, нельзя текст из какого-либо текстового файла перенести в файл, открытый Паскаль-редактором, с помощью привычных нам в Windows «копировать», «вырезать», «вставить», не действуют и принятые в Windows «горячие клавиши», они в Паскаль-редакторе свои.
Нужный кусок текста в Паскаль-редакторе можно выделить мышкой так же, как и в других привычных нам редакторах. Скажем сразу, что в Паскаль-среде вполне можно обойтись вообще без мышки — часто это даже удобнее. Например, для выделения фрагмента текста можно использовать Shift + стрелки дополнительной клавиатуры (есть и другой способ выделения — клавишами Ctrl + K + B — начало фрагмента, Ctrl + K + K — конец, но он менее удобен).
Копирование текста возможно только внутри программ, открытых Паскаль-редактором (а их одновременно можно открыть несколько) с помощью пункта меню Edit (вторая слева «кнопка»). Попасть в меню можно либо клавишей F10 (а нужный пункт выбрать стрелочками), либо нажав одновременно две клавиши Alt + первая выделенная цветом буква нужного слова меню, либо выбрав нужный пункт мышкой. Для выхода из меню нужно мышкой «кликнуть» по полю редактора или нажать клавишу Esc. Открыв меню Edit, мы видим, что здесь есть кнопки:
Clear — удалить выделенный фрагмент, не запоминая его;
Cut — вырезать выделенный фрагмент и запомнить его (используется для переноса фрагмента текста на другое место или в другой файл);
Copy — скопировать выделенный фрагмент, не удаляя его из текста; Paste — вставить выделенный фрагмент на место курсора;
Undo — отменить последнюю операцию;
Redo — вернуть отмененную операцию.
Рядом с этими словами выписаны так называемые «горячие клавиши», с помощью которых, не вызывая меню, можно выполнить нужные действия. Часто это две клавиши, одновременно их нажать трудно; сначала нажимается первая клавиша, удерживается, а затем та, которая стоит после знака «+».
Иногда при редактировании длинных файлов бывает полезна кнопка Search, которая содержит опции для поиска в файле фрагментов текста и их автоматической замены.
Поле белого цвета, работа в редакторе среды похожа на работу с Блокнотом. Редактор совместим с другими продуктами Windows: сюда с помощью стандартных операций копирования можно перенести текст, например, из Блокнота. Названия кнопок на русском языке. Средства для работы с редактором вы найдете во вкладке «Правка»: можно выделять, копировать и вставлять фрагменты текста, осуществлять поиск нужного текста — кнопки стандартные, привычные, этим среда более удобна, чем Турбо Паскаль.
Каждая Паскаль-программа должна содержаться в отдельном файле. (Вообще говоря, вы можете поместить в один файл несколько программ, но выполняться будет только первая.) Чтобы Паскаль-среда могла успешно работать с ними, файлы должны иметь расширение PAS. Это расширение среда приписывает вновь создаваемым файлам сама, по умолчанию. Паскаль-редактором можно создавать файлы и с другим расширением (например, TXT), но тогда его надо вводить самостоятельно при сохранении файла.
Мы уже говорили, что имя файла для удобной работы в среде должно состоять не более чем из 8 символов: латинских букв и цифр. Имена, сформированные по-другому, могут неправильно читаться внутри среды.
Меню для работы с файлами в разных средах практически одинаковое (только в среде ABC названия кнопок на русском языке). Меню открывается кнопкой File (Файл). Нажав ее, можно увидеть, что здесь есть пункты:
New (Новый) — создать новый файл;
Open (Открыть) — открыть файл, уже имеющийся на диске;
Save (Сохранить) — сохранить файл;
Save as (Сохранить как) — сохранить текущий файл под другим именем; при этом файл со старым именем также останется в памяти. Эта опция полезна для копирования файлов внутри среды, с ее помощью можно создавать новые программы, внося изменения в старые.
Save all (Сохранить все) — сохранить все файлы, имеющиеся на экране.
Поговорим сначала о сохранении файлов, так как именно это действие нам надо срочно произвести с нашей программой «Здравствуй, мир!». Почему срочно? Дело в том, что в процессе ввода и редактирования программу надо сохранять в памяти как можно чаще, а не только тогда, когда она полностью готова. Совсем не трудно периодически нажимать клавишу F2 или картинку с дискеткой (это горячая клавиша опции Save), и в таком случае вы будете застрахованы от потери результатов своего труда из-за каких-то непредвиденных ситуаций: отключили электричество, кошка села на клавиатуру так, что все стерлось, и т. п.
Если вы попробуете записать в память подготовленную вами программу, среда потребует, чтобы вы ввели имя файла, в котором она будет храниться (по умолчанию файл в Турбо называется NONAME — безымянный, а в ABC — Programi); имя файла вы можете видеть в верхней строке редактора.
Для ввода имени поверх окна с текстом программы появляется окно меньшего размера, состоящее из нескольких полей. В Турбо-среде эти окна разноцветные, в ABC — все белого цвета, действия в обеих средах надо производить одинаковые, практически такие же, как и при записи файла в любой программе. Верхнее поле — полоска синего цвета, называется Save file as. Надо напечатать имя, которое вы хотите дать своему файлу (в Турбо-среде — в окне синего цвета Save file as, в среде ABC — в поле «Имя файла»). Напомним, что расширение PAS набирать не надо (ставить точку тоже). В большом зеленом поле написаны имена файлов, которые уже есть в рабочей директории. Что такое директория? Это не новое понятие языка Паскаль — этим словом раньше, во времена создания Паскаль-среды, называли то, что мы сейчас называем «папка». Находясь в Паскаль-среде, будем говорить не «папка», а «директория», так как есть команды, в названиях которых отражено именно это слово. Сама рабочая, доступная на данный момент директория указана в самом нижнем, синем поле (там же помещается еще некоторая информация о текущем состоянии среды). Перед записью программы вы должны внимательно посмотреть, какая директория у вас открыта. Та ли, в которую вы обычно записываете свои программы (рекомендуется завести специальную папку для хранения программ)? Если вы запишете программу «не глядя», не туда, куда надо вам, а куда предлагает среда, потом придется ее долго искать.
В нижнем поле выписывается полное имя (путь к файлу). При этом, к сожалению, длинные имена папок, имена с русскими буквами отображаются некорректно. Вывод: папку для Паскаль-программ не надо располагать слишком «глубоко», папкам не надо давать длинные имена и имена, содержащие русские буквы; папку не надо помещать на Рабочий стол.
Может возникнуть необходимость смены директории, если рабочая директория при входе в среду установлена не та, в которой находятся (или должны находиться) программы. Для этого в Турбо-среде в меню File есть специальная кнопка Change dir (сменить директорию), в ABC-среде директория (папка) выбирается в окошке слева.
При открытии уже имеющегося файла вы волей-неволей должны обратить внимание, какая директория открыта, так как в большом окошечке высвечиваются имена файлов, находящихся именно в открытой рабочей директории (да еще и только с расширением PAS, если не задано иное), других вы просто не увидите.
Файл, который открывается с помощью Open или создается с помощью New, отображается в новом окне. Да, Паскаль — многооконная система.
В среде ABC можно видеть на экране только одно окно, от других открытых видны только названия в верхней строке, щелкая по этим названиям, можно переходить от одного окна к другому. В Турбо-среде работа с окнами более «продвинутая», есть даже специальное меню Window. С его помощью можно менять расположение окон, их размер, переходить от одного окна к другому и т. п. Нам в первую очередь понадобится команда «закрыть окно», горячие клавиши которой Alt + F3 (запомнить нетрудно — открывается окно с файлом горячей клавишей F3).
Окна с файлами, которые уже не нужны, надо убирать с экрана, закрывать. При этом, если файл (последняя версия) не записан в память, среда напоминает об этом. Скажем здесь еще об одной особенности Паскаль-редактора Турбо, которой нет во многих других редакторах. При записи в память очередного варианта изменений файла старая версия тоже остается в памяти. Она помещается в ту же директорию, под тем же именем, с расширением BAK. Хранится только одна версия, при очередном редактировании программы содержимое этого файла изменяется.
Мы не советуем вам открывать одновременно много окон. В большинстве случаев для работы нужно одно — с программой, которую вы редактируете, иногда может понадобиться еще одно-два, если вы хотите в создаваемую программу скопировать какой-то текст из других файлов. Особенно будьте осторожны, открывая один и тот же файл несколько раз, в разных окнах (среда это позволяет и не предупреждает, что такой файл уже открыт). Могут возникнуть неприятности при закрытии этих окон, вы можете закрыть окно с одной из первых версий текста в последнюю очередь, следовательно, она и сохранится, а последний, правильный текст потеряется.
И наконец, в списке меню кнопки File находится команда Exit «выход из Паскаль-среды» (горячие клавиши Alt + X). Рекомендуется заканчивать работу с Паскалем именно с помощью этой опции меню, а не путем закрытия окна среды. При правильном, «стандартном» выходе происходит, если надо, запись в память открытых файлов.
Можно видеть, что никакой опции типа «уничтожить» в меню нет, поэтому, если какие-то файлы стали вам не нужны, удалять их надо не из Паскаль-среды, а, например, средствами Windows, с помощью Проводника.
Итак, мы наконец-то записали нашу программу в память, в нужную директорию. Если вы вспомните описанные выше этапы работы с программой, то сразу увидите, какие кнопки основного меню нам сейчас нужны. В меню Турбо-среды их можно видеть сверху, а в меню ABC они «спрятаны» во вкладке «Программа». Конечно, это Компилировать — Compile и Выполнять — Run. Каждую из кнопок можно нажимать, выбирая нужный пункт меню, а можно, запомнив соответствующие горячие клавиши (они написаны в меню рядом с кнопками). Нажмем кнопку Compile — компиляция. Компиляция такой маленькой программки происходит мгновенно, на экране появляется окошко о том, что она успешно завершена — «Compile successful», для продолжения работы надо нажать любую клавишу. После ее нажатия вы снова видите перед собой окно редактора, а в памяти компьютера появляется выполняемый файл (с расширением EXE) с вашей программой. Выполнять такой файл, смотреть, как работает программа, можно уже и без Паскаль-среды, например из Windows. Нам это пока не нужно, мы будем работать в Паскаль-среде, поэтому будем в основном пользоваться кнопкой Run — выполнять (Ctrl + F9 в Турбо-среде и треугольничек в ABC). Эта кнопка запускает сразу два действия: и компиляцию, и выполнение откомпилированной программы.
Нажмем ее. Если вы работаете в среде ABC, то в нижнем окошке видите результат работы нашей программы. А вот в Турбо-среде ничего не произошло. Перед нами все то же окно редактора. Что-то сломалось? Надо нажать еще раз, посильнее? Не стоит, все, что надо, уже произошло, просто слишком быстро, вы этого не заметили. Программа у нас маленькая, делает единственное действие: печатает на экран текст из двух слов. Современный компьютер делает это за доли секунды.
Почему же мы не видим текста? А мы уже говорили, что работа с редактором программ — одно из основных назначений Паскаль-среды, поэтому после выполнения программы автоматически происходит возврат в окно редактора, чтобы вы смогли дальше дописывать, корректировать программу. Как же посмотреть, что она напечатала, и где она это сделала? Результат выведен в специальном окне User Screen (экран пользователя), перейти в него можно клавишами Alt + F5 (выйти — нажав любую клавишу). Это окно черного цвета, на нем вы можете видеть свой текст «Здравствуй, мир!» (над текстом могут быть выведены некоторые сообщения, не имеющие отношения к программе, они появляются при загрузке Паскаль-среды). Кстати, если вы все-таки нажали клавиши Ctrl + F9 несколько раз, на экране увидите несколько строчек с одинаковым текстом.
Давайте дополним нашу программу, чтобы она выводила две строчки текста. Перед строкой Writeln ('Здравствуй, мир!')
вставим строку Writeln ('Это моя первая программа');
Обратите внимание, что в конце строки стоит символ «;». Не забыв сохранить новую версию программы, запустим ее выполняться, перейдем в экран пользователя и убедимся, что теперь на печать выводятся две строчки с написанным нами текстом.
А теперь немножко «испортим» нашу программу, сделаем в ней ошибку, уберем из только что вписанной строки точку с запятой. Запустим ее на компиляцию (или на выполнение). Вместо результата или сообщения об успешной компиляции видим, что в окне редактора появляется строчка с текстом на красном фоне. Это означает, что обнаружена ошибка: в строчке сообщается номер ошибки (существует пронумерованный список, где перечислены все ошибки, обнаруживаемые компилятором) и кратко описывается ее суть. У нас текст «; expected» — ожидается точка с запятой. При этом курсор стоит в том месте, где, как считает компилятор, она и ожидается, — почему-то не в конце первой, а в начале второй строки. Дело в том, что точка с запятой должна стоять между этими строчками, в любом месте, не обязательно точно в конце первой строки. Вот компилятор и искал (ожидал) ее вплоть до начала следующей строчки.
Исправим эту ошибку (поставим точку с запятой на место) и сделаем другую ошибку, например уберем какую-нибудь букву в слове Writeln. Будет выявлена ошибка «Unknown identifier» — неизвестное имя. При этом курсор четко указывает на слово, в котором мы сделали ошибку.
Мы сейчас не будем изучать весь список обнаруживаемых компилятором ошибок, обычно предоставляемое им описание достаточно понятно. В некоторых случаях, по ходу изучения языка, мы будем обращать внимание на типичные ошибки и реакцию компилятора на них.
Почему же компилятор обнаруживает ошибки? Правильно ли он указывает их суть и место? Всегда ли ему можно доверять?
Чтобы ответить на эти вопросы, надо понять, что компилятор обнаруживает ошибки не потому, что он такой «умный» или «добрый» и хочет помочь несчастному программисту правильно написать текст. Обнаруживает он их как раз потому, что не очень «умный», а является, по сути, «шифровальной машиной», которая из одного текста делает другой. Если какая-то конструкция исходного текста непонятна, не содержится в «словаре», компилятор не может ее перевести, останавливается в данном месте программы и выдает сообщение об ошибке.
Таким образом, остановиться компилятор может не точно в том месте, где ошибка в тексте допущена, а где-нибудь после нее, где он обнаружил, что текст ему непонятен. Существует еще и такая ситуация: так называемые «наведенные ошибки». Если некоторая конструкция была записана автором текста неправильно, неуместно, но по правилам языка является законной, компилятор ее саму переводит, но обнаруживает несоответствия дальше по тексту (в правильных конструкциях). Сейчас, когда вы еще не знаете языка Паскаль, мы не будем приводить соответствующие примеры. В процессе программирования вам предстоит встретиться со всякими ситуациями, в том числе и с описываемой здесь. Сейчас хочется лишь, чтобы вы поняли, что сообщения компилятора не должны быть единственной «путеводной звездой» для составителя программы, не всегда надо вносить в программу именно тот символ, который в данном месте «expected».
И еще немного об ошибках в программе. К сожалению, если ваша программа успешно прошла компиляцию, нельзя считать, что в ней нет ошибок. Все еще только начинается! Дело в том, что компилятор обнаруживает лишь так называемые синтаксические ошибки: пропущен знак препинания, неправильно записано слово и т. п. Семантические, смысловые ошибки он обнаружить не может, так как просто не «задумывается» о смысле вашей программы, а слепо выполняет то, что вы написали.
Например, если вы вдруг решите, что теорема Пифагора выглядит так: C = A + B
и, основываясь на этом представлении, напишете программу вычисления гипотенузы треугольника, программа будет работать, выдавать некоторый результат. Но он, конечно, будет неправильным. Никакой компьютер эту неправильность обнаружить не может, потому что не имеет представления ни о Пифагоре, ни о треугольниках. Он умеет вычислять по заданной вами формуле, что и будет делать совершенно правильно. Точно так же компьютер не обнаружит никаких ошибок в тексте на русском языке в нашей программе (если вы напишете «Здравствуй, мир!» с ошибками), а просто выведет на экран именно то, что вы попросили.
Для обнаружения таких ошибок существуют тестирование и отладка программы, о которых мы говорили выше. Впрочем, к нашей программе это не относится, в ней нет никаких вычислений, так что если она работает, то работает правильно.
В основном меню среды справа находится кнопка Help (Помощь). Это вход в справочную систему. Здесь можно найти некоторые справки по работе среды, редактора, компилятора, а также по самому языку Паскаль. Например, выбрав пункт Reserved Words, вы получаете список всех служебных слов вашей версии языка. Причем, выбрав нужное слово из списка и нажав Enter, вы получаете достаточно подробную справку о его использовании (увы, на английском языке). В конце этого текста обычно находится пример — фрагмент программы или целая программа на Паскале, поясняющая использование данного объекта. Программа может быть скопирована в новый файл и выполнена.
В Турбо-среде попасть в окно справки, поясняющее значение нужного слова, можно и другим способом. Надо поставить курсор на интересующее вас слово (это должно быть, естественно, слово из языка, а не придуманное вами имя) и нажать клавиши Ctrl + F1. При этом, если в слове у вас допущена ошибка (программа не нашла его в списке), выдается список всех слов языка и вы можете попробовать поискать в нем то, что вам надо.
Конечно, изучить язык с помощью его справочной системы затруднительно (тем более, напомним, самое сложное в программировании все-таки не запись конструкций, а составление алгоритма), но пользоваться системой именно для справки очень полезно.
Напоследок выпишем «горячие клавиши», которыми придется пользоваться особенно часто.
И еще одна «горячая» клавиша: Alt + Enter позволяет включить/выключить полноэкранный режим работы Паскаль-среды.
Конспект урока по информатике «Подготовка программы. Паскаль-среда».
Вернуться к Списку конспектов по информатике.