ГЛАВА 1. ИЗУЧЕНИЕ НОВОЙ ИНТЕГРИРОВАННОЙ УСОВЕРШЕНСТВОВАННОЙ СРЕДЫ. Turbo Pascal - это больше, чем просто быстрый компилятор Паскаль; это эффективный компилятор Паскаль с интегрированной усовершенствованной средой, легкой для изучения и использования (для краткости мы будем называть ее IDE). C Turbo Pascal не нужно использовать отдельные редактор, компилятор, редактор связей и отладчик для того, чтобы создавать, отлаживать и выполнять свои программы на Паскале. Все эти свойства встроены в Turbo Pascal, и все они доступны из IDE. Вы можете начать построение своей первой программы Turbo Pascal, используя компилятор, встроенный в IDE. В конце этой главы Вы изучите усовершенствованную среду, напишете и сохраните три небольшие программы и изучите некоторые основные навыки программирования. Встроенная контекстно-ориентированная справочная информация появляется с помощью нажатия клавиш (или отметки мышкой). Можно получить справочную информацию (за исключением случаев, когда управление переходит к Вашей программе) посредством нажатия F1. Меню Help (Alt-H) обеспечивает Вас таблицей содержания системы справочной информации, подробным оглавлением, способностями поиска (Ctrl-F1), возможностью вернуться назад к другим экранам (Alt-F1) и подсказкой по справочной информации (F1, если Вы уже находитесь в системе справочной информации). Любой экран справочной информации может содержать одно или более ключевых слов (высвеченных элементов), по которым можно получить дополнительную справочную информацию. Дополнительную информацию по IDE см. в главе 7 "Справочник IDE". Компоненты. Существуют три видимых компоненты в интегрированной усовершенствованной среде: полоса меню в верхней части, область окна в центре и строка статуса внизу. Многие элементы меню также предлагают диалоговые окна. Прежде чем мы рассмотрим каждый элемент меню в интегрированной среде, давайте опишем эти наиболее общие компоненты. Примечание. Мы будем часто применять аббревиатуру для элементов меню. Например, для того чтобы выбрать добавление выражения для просмотра (Debug/Watch/Add Watch); мы будем говорить о выборе D/W/Add Watch. Полоса меню и подменю. Полоса меню является основным доступом ко всем командам меню. Полоса меню становится невидимой только в то время, когда Вы просматриваете вывод своей программы. Если полоса меню активна, то заголовок меню будет высвечен; это текущее выбранное меню. Если за командой меню следует знак многоточия (...), выбор команды приведет к выводу диалогового окна. Если за командой следует стрелка (>), то команда ведет в другое меню. Команда без знака многоточия или без стрелки указывает, что как только Вы ее выбрали, произойдет какое-то действие. Далее будет показано, как выбрать команды меню, используя только клавиатуру: 1. Нажмите F10. Это делает полосу меню активной. 2. Чтобы выбрать меню, которое Вы хотите посмотреть, используйте клавиши со стрелками. Затем нажмите Enter. Будет быстрее, если Вы просто нажмете высвеченную букву заголовка меню. Например, из полосы меню нажмите Е, чтобы быстро показать Edit меню. Из любого места нажмите Alt и высвеченную букву для просмотра требуемого меню. Чтобы прервать действие, нажмите Esc. 3. Опять используйте клавиши со стрелками для выбора требуемых команд. Затем нажмите Enter. Опять для быстроты можно нажать высвеченную букву команды для того, чтобы выбрать ее, как только появилось меню. В этот момент Turbo Pascal выполняет команду или показывает диалоговое окно или показывает другое меню. Можно также использовать мышку для выбора команд. Процесс заключается в следующем: 1. Отметьте заголовок требуемого меню для его просмотра. 2. Отметьте требуемую команду. Вы можете также тащить за заголовок меню к команде меню. Освободите кнопку мышки на команде, которая нужна. (Если Вы изменили свое решение, выйдите из меню; ни одна команда не будет выбрана). Заметим, что некоторые команды меню являются недоступными, когда нет смысла их выбирать. Вы можете, однако, выбрать (высветить) недоступную команду, чтобы получить по ней подсказку. Примечание. Turbo Pascal использует только левую кнопку мышки. Однако, Вы можете настроить правую кнопку и также сделать другие настройки для мышки. Сокращения. Turbo Pascal предлагает несколько быстрых способов для выбора команд меню. Например, пользователи мышки могут комбинировать двухшаговый процесс в одношаговый, проведя мышкой от заголовка меню вниз к командам меню с освобождением кнопки мышки при выборе требуемой команды. Для клавиатуры можно использовать несколько быстрых методов (или горячих клавишей) для доступа к полосе меню и выбора команд. Быстрые методы для диалоговых окон работают так, как они сделаны в меню. (При перемещении от окна ввода к группе кнопок или окон, Вам нужно держать нажатой клавишу Alt при нажатии высвеченной буквы). Многие элементы меню имеют соответствующие горячие клавиши; одно- или двух-ключевые сокращения, которые немедленно активизируют эту команду или диалоговое окно. Можно также отметить мышкой сокращения в строке статуса. Следующая таблица перечисляет наиболее используемые Turbo Pascal горячие клавиши. Таблица 1.1. Общие горячие клавиши. ___________________________________________________________________ Клавиша(и) Элемент меню Функция ___________________________________________________________________ F1 Help Показывает экран подсказки. F2 File/Save Сохраняет файл, находящийся в активном окне редактора. F3 File/Open Появляется диалоговое окно и возможность открыть файл. F4 Run/Go to Cursor Запускает Вашу программу до строки, на которой стоит курсор. F5 Window/Zoom Масштабирует активное окно. F6 Window/Next Проходит через все открытые окна. F7 Run/Trace Into Запускает Вашу программу в режиме отладки с заходом внутрь процедур. F8 Run/Step Over Запускает Вашу программу в режиме отладки, минуя вызовы процедур. F9 Compile/Make Делает Make текущего окна F10 (none) Возвращает Вас в полосу меню. ___________________________________________________________________ Таблица 1.2. Горячие клавиши меню. ___________________________________________________________________ Клавиша(и) Элемент меню Функция ___________________________________________________________________ Alt-ПРОБЕЛ Ё меню Переносит Вас в Ё (System) меню Alt-C Compile меню Переносит Вас в Compile меню Alt-D Debug меню Переносит Вас в Debug меню Alt-E Edit меню Переносит Вас в Edit меню Alt-F File меню Переносит Вас в File меню Alt-H Help меню Переносит Вас в Help меню Alt-O Options меню Переносит Вас в Options меню Alt-R Run меню Переносит Вас в Run меню Alt-S Search меню Переносит Вас в Search меню Alt-W Window меню Переносит Вас в Window меню Alt-X File/Еxit Завершает Turbo Pascal с выходом в DOS ___________________________________________________________________ Таблица 1.3. Горячие клавиши редактирования. ___________________________________________________________________ Клавиша(и) Элемент меню Функция ___________________________________________________________________ Ctrl-Del Edit/Clear Удаляет выбранный текст из окна и не помещает его в карман. Ctrl-Ins Edit/Copy Копирует выбранный текст в карман. Shift-Del Edit/Cut Помещает выбранный текст в карман и удаляет его. Shift-Ins Edit/Paste Помещает текст из кармана в активное окно. Ctrl-L Search/Search Again Повторяет последнюю команду Find или Replace. F2 File/Save Сохраняет файл в активном окне редактора. F3 File/Open Позволяет Вам открыть файл. ___________________________________________________________________ Таблица 1.4. Горячие клавиши управления окнами. ___________________________________________________________________ Клавиша(и) Элемент меню Функция ___________________________________________________________________ Alt-# (none) Показывает окно, где # - номер окна, которое Вы хотите посмотреть. Alt-0 Window/List Показывает список открытых окон. Alt-F3 Window/Close Закрывает активное окно. Alt-F5 Window/User Screen Показывает экран пользователя. Shift-F6 Window/Previous Проходит назад через все открытые окна. F5 Window/Zoom Увеличивает/уменьшает активное окно. F6 Window/Next Проходит вперед через все активные окна. Ctrl-F5 Window/Size/Move Изменяет размер или позицию активного окна. ___________________________________________________________________ Таблица 1.5. Горячие клавиши встроенной справочной информации. ___________________________________________________________________ Клавиша(и) Элемент меню Функция ___________________________________________________________________ F1 Help/Contents Открывает контекстно-ориентированный экран справочной информации. F1 F1 Help/Help on Help Вызывает справочную информацию по справочной информации (нужно нажать только F1, если Вы уже находитесь в системе справочной информации). Shift-F1 Help/Index Вызывает оглавление справочной информации. Alt-F1 Help/Previous Topic Показывает предыдущий экран справочной информации. Ctrl-F1 Help/Topic Search Вызывает специфическую информацию по языку только в редакторе. ___________________________________________________________________ Таблица 1.6. Горячие клавиши отладки/запуска. ___________________________________________________________________ Клавиша(и) Элемент меню Функция ___________________________________________________________________ Alt-F9 Compile/Compile Компилирует последний файл в редакторе. Ctrl-F2 Run/Program Reset Переустанавливает выполняемую программу. Ctrl-F4 Debug/Evaluate/Modify Вычисляет выражение. Ctrl-F7 Debug/Add Watch Добавляет выражение для просмотра. Ctrl-F8 Debug/Toggle BreakPoint Устанавливает или очищает условные точки прерывания. Ctrl-F9 Run/Run Запускает программу. F4 Run/Go To Cursor Запускает программу до позиции курсора. F7 Run/Trace Into Выполняет прослеживание внутри процедур. F8 Run/Step Over Осуществляет перескакивание через вызовы процедур. F9 Compile/Make Выполняет Make (компилирует/ редактирует связи) программы. ___________________________________________________________________ Окна Turbo Pascal. Почти все, что Вы видите и делаете в среде Turbo Pascal, происходит в окнах. Окно - это область экрана, которую можно перемещать, изменять ее размеры, перекрывать, закрывать и открывать. Вы можете иметь любое количество открытых окон в Turbo Pascal (если память и размер кучи позволяют), но в любой момент времени может быть активным только одно окно. Активное окно - это окно, с которым Вы в настоящий момент времени работаете. Любая команда, которую Вы выбрали или текст, который Вы набрали, относится только к активному окну. (Если один и тот же файл открыт в нескольких окнах, действие будет применяться к файлу везде). Примечание. Можно увеличить число окон, которые потенциально могут быть открыты, путем увеличения размера кучи, используя опцию Startup (Options/Environment). Существуют несколько типов окон, но большинство из них имеют несколько общих понятий: - полоса заголовка; - закрывающая кнопка; - полосы скроллинга; - уголок для изменения размеров окна; - кнопка масштабирования; - номер окна. В Turbo Pascal легко отличить активное окно по двойной рамочке. Активное окно всегда имеет закрывающую кнопку, кнопку масштабирования, кнопки перемещения и уголок изменения размеров. Если Ваши окна перекрываются, то активное окно всегда находится наверху остальных (на переднем плане). Окно редактора всегда показывает номера текущих строки и столбца в нижнем левом углу. Если вы изменили свой файл, то слева от номеров строки и столбца появится знак звездочки (*). Обычно окно выглядит следующим образом: ┌──────────────┐ ┌───────────┐ ┌─────────────────────────┐ │Можно отметить│ │ Заголовок │ │Кнопка масштабирования │ │закрывающую │ │ содержит │ │содержит значок, который │ │кнопку для │ │ название │ │можно отметить для сжатия│ │быстрого │ │ окна │ │или для расширения окна │ │закрытия окна │ └───────────┘ └─────────────────────────┘ └──────────────┘ │ │ │ │ │ ∙ ∙ ∙ ╔══[█]═════════════════ Заголовок окна ══════════════════ 3 ═[°]══╗ ║ ° ^ ║ │ Ё ║ ┌─────────────────────────────┐ Ё ║ │ Каждое открытое окно имеет │ Ё ║ │ номер. Используйте Alt и # │ █ ║ │ для открытия окна. │ Ё ║ └─────────────────────────────┘ Ё ║ Ё ║ ┌────────────────────────────────┐ Ё ║ │ Используйте полосы скроллинга │ Ё ║ │ с мышкой для перемещения │───────Ў Ё ║ │ содержания окна. │ Ё ║ └────────────────────────────────┘ Ё ║ │ Ё ║ │ v ║ ∙ │ ╚════<ЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁ█ЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁ>───┘ ┌──────────────────────────────┐ ° │ Тащите за уголок, чтобы │─────┘ │ сделать окно больше или │ │ меньше │ └──────────────────────────────┘ Закрывающая кнопка окна - это кнопка в левом верхнем углу. Отметив эту кнопку, Вы можете быстро закрыть окно. (Можно также выбрать Window/Close или нажать Alt-F3). Окно справочной информации рассматривается как временное и может быть закрыто посредством нажатия Esc. Полоса заголовка - находящаяся выше всех горизонтальная строка окна, содержая имя окна и номер окна. Вы можете дважды отметить кнопку, находясь на полосе заголовка, для того чтобы масштабировать окно. Вы можете также тащить за строку заголовка для перемещения окна. Каждое открытое окно в Turbo Pascal имеет номер окна в верхнем правом углу. Alt-0 выдает список всех открытых окон. Можно сделать окно активным (самым верхним) посредством нажатия Alt в комбинации с номером окна. Например, если окно справочной информации является #5, но скрыто под другими окнами, то для быстрого вынесения его на передний план можно нажать Alt-5. Кнопка масштабирования окна находится в верхнем правом углу окна. Если значок в этом углу изображает стрелку вверх (°), можно отметить эту стрелку для увеличения окна до максимально возможного размера. Если значок представляет собой двуглавую стрелку, то окно уже имеет свой максимальный размер. Если Вы отметите двуглавую стрелку, то окно вернется к своему предыдущему размеру. Чтобы промасштабировать окно с помощью клавиатуры, выберите Window/Zoom или нажмите F5. Примечание. Дважды отметьте заголовок окна для его масштабирования или восстановления. Полосы скроллинга - это вертикальные или горизонтальные полосы, которые выглядят следующим образом: <ЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁ█ЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁ> Вы можете использовать эти полосы с помощью мышки для перемещения содержания окна. Отметьте стрелку на любом конце для перемещения одной строчки. (Для непрерывного перемещения держите кнопку мыши нажатой). Отмечая затененную область с любой стороны полосы скроллинга, Вы можете перескочить на страницу. Наконец, можно тащить полосу скроллинга "за любое место" для быстрого перемещения в окне в место, соответствующее позиции полосы скроллинга. Примечание. Полосы скроллинга позволяют пользователям и мышки, и клавиатуры видеть, в каком месте файла они находятся. Уголок изменения размеров находится в нижнем правом углу окна. Можно тащить за любой уголок, чтобы сделать окно больше или меньше. Вы можете отличить уголок изменения размеров по рамке из одной линии вместо рамки из двойной линии, используемой в остальных местах окна. Для того чтобы изменить размеры с помощью клавиатуры, выберите Size/Move из Window меню, или нажмите Сtrl-F5. Управление окнами. Таблица 1.7 содержит краткую информацию о том, как можно управлять окнами в Turbo Pascal. Заметим, что для выполнения этих действий мышка не нужна - клавиатура работает прекрасно. Таблица 1.7. Управление окнами. ___________________________________________________________________ Чтобы выполнить: Используйте один из этих способов ___________________________________________________________________ Открыть Edit окно Выберите File/Open для открытия файла и покажите его в окне или нажмите F3. Открыть другие окна Выберите требуемое окно из Window меню. Закрыть окно Выберите Close из Window меню (или нажмите Alt-F3), или отметьте закрывающую кнопку окна. Активизировать окно Отметьте в любом месте окна, или нажмите Alt плюс номер окна (в верхнем правом углу окна), или выберите Window/List или нажмите Alt-0 и выберите окно из списка, или выберите Window/Next или F6,чтобы сделать активным следующее окно (следующее в порядке, в каком они были открыты). Или нажмите Alt-F6 для активизации предыдущего окна. Передвинуть Тащите его заголовок, или нажмите Ctrl-F5 активное окно (Window/Size/Move) и используйте клавиши со стрелками, чтобы поместить окно там, где Вам хочется, и нажмите Enter. Изменить размер Тащите уголок для изменения размера (или любой активного окна угол). Или выберите Window/Size/Move и нажимайте Shift одновременно с клавишами со стрелками, и нажмите Enter. Более быстрый способ состоит в нажатии Ctrl-F5 и затем одновременным использованием Shift и клавиш со стрелками. Масштабировать Отметьте кнопку масштабирования в верхнем активное окно правом углу окна, или дважды отметьте заголовок окна, или выберите Window/Zoom, или нажмите F5. ___________________________________________________________________ Строка статуса. Строка статуса появляется внизу экрана Turbo Pascal. Функции строки статуса следующие: - Она напоминает Вам основные строки ключей и сокращений (или горячих клавиш), допустимых в этот момент в активном окне. - Она предоставляет Вам самый быстрый вариант выполнения действий, отмечая горячие клавиши в строке статуса мышкой вместо выбора команд из меню или нажатия последовательности клавишей. - Она говорит о том, какая функция выполняется. Например, она показывает "Saving filename...", когда сохраняется редактируемый файл. - Она предлагает краткие советы по выбранной команде меню и элементам диалогового окна. Как только Вы переключили окна или изменили характер деятельности, строка статуса сразу же меняется. Одна из наиболее характерных строк статуса - это та, которую Вы видите во время написания и редактирования программ в окне редактора. Она выглядит следующим образом: ┌─────────────────────────────────────────────────────────────────┐ │F1 Help F2 Save F3 Open Alt-F9 Compile F9 Make F10 Menu│ └─────────────────────────────────────────────────────────────────┘ Диалоговые окна. Если после команды меню следует многоточие (...), команда открывает диалоговое окно. Диалоговое окно - это наиболее удобный способ показать и установить многочисленные опции. Когда Вы делаете установки в диалоговых окнах, Вы работаете с пятью основными типами управления экрана: зависимые кнопки, независимые кнопки, кнопки действия, окна ввода и окна списка. Ниже приведено типичное диалоговое окно, которое иллюстрирует некоторые из этих элементов: ╔═[█]══════════ Типичное диалоговое окно ═══════════════════╗ ║ ║ ║ Окно ввода Окно списка [ OK ]║ ║ ┌──────────────────────┐ ┌───────────────┐ ║ ║ │ ││∙│ │Элемент 1 ^│ ║ ║ └──────────────────────┘ │Элемент 2 Ё│ [ Cancel ]║ ║ Независимые Зависимые │Элемент 3 Ё│ ║ ║ кнопки кнопки │Элемент 4 Ё│ ║ ║ [X] Oпция 1 ( ) Oпция A │Элемент 5 █│ ║ ║ [ ] Oпция 2 (.) Oпция B │Элемент 6 Ё│ ║ ║ [X] Oпция 3 ( ) Oпция C │Элемент 7 Ё│ ║ ║ [ ] Oпция 4 ( ) Oпция D │Элемент 8 v│ [ Help ]║ ║ [ ] Oпция 5 └───────────────┘ ║ ╚═══════════════════════════════════════════════════════════╝ Примечание. Если у Вас цветной монитор, Turbo Pascal будет отличать цветом различные элементы диалогового окна. Это диалоговое окно имеет три стандартные кнопки: OK, Cancel, Help. При нажатии OK будут выполнены все выборы в диалоговом окне; при выборе Cancel никаких изменений и действий сделано не будет, а диалоговое окно исчезнет. Esc всегда является быстрым вариантом клавиатуры для Cancel (даже если Cancel кнопка не присутствует). Примечание. Диалоговое окно Breakpoints Options является уникальным, поскольку оно не имеет кнопки Cancel. Если Вы используете мышку, Вы можете только отметить требуемую кнопку. Когда Вы используете клавиатуру, Вы можете нажимать высвеченную букву элемента для его активизации. Например, нажатие K означает выбор кнопки OK. Нажимайте Tab или Shift-Tab для перехода от одного элемента к другому в диалоговом окне. Каждый элемент, когда он становится активным, высвечивается. В диалоговом окне OK является кнопкой, заданной по умолчанию; это означает, что достаточно нажать только Enter для выбора этой кнопки. (В монохромных системах стрелки указывают кнопки, указанные по умолчанию; на цветных мониторах кнопки по умолчанию высвечиваются). Знайте о том, что переход к кнопке с помощью табуляции делает ее кнопкой по умолчанию. Примечание. Вы можете выбрать другую кнопку с помощью Tab; для выбора этой кнопки нажмите Enter. Зависимые и независимые кнопки. Можно иметь любое число включенных независимых кнопок одновременно. Когда Вы выбираете независимую кнопку, в ней появляется буква X, указывающая, что кнопка находится в состоянии On. Пустая кнопка означает, что она находится в состоянии Off. Можно управлять независимыми кнопками (устанавливать их в On), отмечая их или текст, содержащийся в них; или нажатием Tab до тех пор, пока кнопка не высветится, а затем нажать ПРОБЕЛ; или нажав высвеченную букву. При выборе независимой кнопки в группе используйте клавиши со стрелками или высвеченную букву для выбора требуемого элемента, а затем нажмите ПРОБЕЛ для его окончательного выбора. На монохромных мониторах Turbo Pascal указывает активную независимую кнопку или группу независимых кнопок посредством помещения символа шеврона (>>) следом за ней. При нажатии Tab шеврон перемещается к следующей группе независимых или зависимых кнопок. Зависимые кнопки отличаются от независимых тем, что они предоставляют взаимно исключающие выборы. По этой же причине зависимые кнопки ВСЕГДА находятся в группе и только одна включенная кнопка (ни больше, ни меньше) может находиться в одной группе в один момент времени. Для выбора зависимой кнопки отметьте ее или находящийся в ней текст. При работе с клавиатурой нажмите высвеченную букву, или нажимайте Tab до тех пор, пока группа не высветится, а затем используйте клавиши со стрелками для выбора конкретной зависимой кнопки. После выбора новой зависимой кнопки нажмите Tab или Shift-Tab снова, для того чтобы выйти из группы. Окна ввода и списки. Возможно, Вы уже знакомы с окнами ввода; эти окна позволяют Вам набирать текст. В окне ввода работают самые основные клавиши редактирования текста (например, клавиши со стрелками, Home, End и переключение режима вставки/перекрытия с помощью Ins). Если, достигнув конца окна, Вы продолжаете набирать текст, он автоматически передвигается. Если текста больше, чем видно в окне, то на концах появляются значки стрелок (влево или вправо). Можно отмечать эти значки для скроллинга текста. Если в окне ввода нужно набрать управляющие символы (такие как ^L или ^M), перед символом наберите ^P. Таким образом, например, набрав в окне ввода ^P^L, Вы введете ^L. Это полезно для строк поиска. Если окно ввода имеет справа значок стрелки вниз, то здесь находится архивный список, связанный с этим окном ввода. Для просмотра этого архивного списка нажмите ∙ , а для выбора элемента из этого списка нажмите Enter. В этом списке Вы найдете текст, который Вы набирали в этом окне в течение нескольких последних сеансов использования этого диалогового окна. Если Вы хотите набрать заново текст, который уже набирали, нажмите Down Arrow (стрелка вниз) или отметьте значок (∙). Можно также редактировать записи в архивном списке. Для выхода из архивного списка без выбора нажмите Esc. Ниже приведен пример архивного списка окна Find текста после пятикратного предварительного использования: ┌─────────────────────┐┌────┐ Text to find │ ││ ∙ │ └─────────────────────┘└────┘ ╔═════════════════╗ ║ date = record ^ ║ Writeln(' Ё ║ string[7] Ё ║ { █ ║ AbortCode v ╚═════════════════╝ Последний компонент многих диалоговых окон - окно списка. Окно списка позволяет осуществлять скроллинг и выбор из списков переменной длины без выхода из диалогового окна. Если в окне списка появляется мерцающий курсор и Вы знаете, что Вам нужно найти, наберите букву (или несколько букв из слова), и Turbo Pascal найдет его. Можно сделать окно списка активным посредством его отмечания или выбора высвеченной буквы заголовка этого списка (или нажимая Tab до тех пор, пока он не высветится). Как только окно списка появилось, можно использовать кнопку скроллинга для передвижения по списку или нажимая ° или ∙ с помощью клавиатуры. Редактирование. Если Вы давно пользуетесь продукцией фирмы Borland, то следующее краткое изложение новых свойств редактора поможет вам узнать те области, где произошли изменения. Интегрированный редактор Turbo Pascal теперь имеет: - поддержку мышки; - поддержку больших файлов (до 1 Мб; ограничение в 2 мегабайт для всех комбинаций редактора); - Shift Ў ў ° ∙ для выбора текста; - окна редактора, которые можно передвигать, перекрывать и изменять их размеры; - мультифайловые возможности, что позволяет открывать несколько файлов одновременно; - многочисленные окна, позволяющие иметь несколько представлений одного и того же файла или разных файлов; - разумный макроязык, позволяющий создавать свои собственные команды редактирования (см. TEMC.DOC на дистрибутивных дисках); - возможность брать текст или примеры из окна справочной информации; - редактируемый карман, допускающий вырезание, копирование и его передачу между окнами. Запуск Turbo Pascal. Если Вы используете устройство с гибкими дисками, то поместите диск с системой Turbo Pascal на устройство А и наберите следующую команду: TURBO Нажмите Enter для запуска программы TURBO.EXE, которая вызовет IDE. Если Вы используете жесткий диск, то поместите в созданный с помощью INSTALL справочник Turbo Pascal (по умолчанию С:\TP) и запустите TURBO.EXE, набрав: TURBO в ответ на подсказку C:\TP. Теперь Вы готовы к написанию своей первой программы Turbo Pascal. Создание Вашей первой программы. При загрузке Turbo Pascal (набрав TURBO и нажав Enter в ответ на подсказку DOS), Вы увидите полосу меню, строку статуса, пустой экран и окно с информацией о версии продукта (выбор команды About (о) из меню Ё, или System (системного), в любой момент времени приведет к появлению этой информации). При нажатии любой клавиши информация с версией исчезает, но среда с окнами остается. Примечание. Чтобы взять примеры, приведенные здесь, запустите INSTALL с включенной опцией Unpack Examples. Нажмите F10, чтобы войти в полосу меню, а затем F3 (сокращение для File/Open) для показа диалогового окна Open a File. Вы находитесь в окне ввода, поэтому наберите MYFIRST (необязательно набирать расширение .PAS; это предполагается и так) и нажмите Enter. Теперь можно приступить к набиранию текста программы, нажимая Enter в конце каждой строки: program MyFirst; var A,B: Integer; Ratio: Real; begin Write('Enter two numbers: '); Readln(A,B); Ratio := A/B; Writeln('The ratio is ',Ratio); Write('Press ...'); Readln; end. Примечание. Не забывайте про точку с запятой, а за последним end поставьте точку. Для удаления используйте Backspace, а для передвижения внутри окна редактора используйте клавиши со стрелками. Если Вы не знаете команд редактора, почитайте главу 8. Анализ Вашей первой программы. Поскольку Вы набираете и запускаете эту программу, не зная, что она делает, мы приведем здесь точное пояснение. Первая введенная строка задает имя программе MyFirst. Это утверждение необязательно, но неплохо включать его в программу. Следующие три строки объявляют несколько переменных, со словом var, говорящем о начале объявления переменных. А и В имеют тип Integer (целое число); то есть, они могут содержать целые числа, такие как 52, -421, 0, 32, 283 и так далее. Ratio объявлено как Real (действительное число), это означает, что оно может хранить дробные числа, такие как 423.328 и -0.032, в добавление к целым числам. Остальная часть программы содержит выполняемые утверждения. Слово begin говорит о начале программы. Утверждения разделяются точкой с запятой и содержат инструкции записи на экран (Write и Writeln), чтения с клавиатуры (Readln) и выполнения вычислений (Ratio := A/B). Readln в конце программы приводит к остановке выполнения (пока Вы не нажмете Enter), так что Вы сможете исследовать вывод программы. Выполнение программы начинается с первой инструкции после begin и продолжается до тех пор, пока не встретится end. Сохранение Вашей первой программы. После введения Вашей первой программы было бы неплохо сохранить ее на диске. Для этого выберите команду Save из меню File, нажав F10, затем F для появления меню File и S для выбора команды Save. Наиболее легкий способ - используйте сокращение для File/Save, F2. Компиляция Вашей первой программы. Для компиляции своей первой программы идите к опции Complile в основном меню. Можно нажать F10 C, а Alt-C приведет Вас прямо к этой опции. Alt-F9 - это самый быстрый путь. Turbo Pascal компилирует Вашу программу, изменяя ее с Паскаля (который можно читать) на машинный код 8086 для микропроцессора (который может выполнить Ваша РС). Вы не увидите машинный код 8086; он хранится в памяти (или на диске). Как и английский язык, Паскаль имеет грамматические правила, которые нужно выполнять. Однако, в отличие от английского языка, структура языка Паскаль является нетерпимой, чтобы допускать сленг или плохой синтаксис - компилятор должен всегда понимать, ЧТО Вы хотите сказать. В языке Паскаль, если Вы используете несоответствующие слова или символы в утверждении или если неправильно его организовали, то получите ошибку времени компиляции (синтаксическую). Какие ошибки компиляции вероятнее всего Вы получите? Наиболее возможной ошибкой для начинающего программиста на языке Паскаль будет: Unknown identifier (неизвестный идентификатор) или ';' expected (ожидается ';') Паскаль требует, чтобы Вы объявили все переменные, типы данных, константы и подпрограммы - короче, все идентификаторы - перед их использованием. Если Вы обратитесь к необъявленному идентификатору или пропустите его, то получите ошибку. Другой частой ошибкой является несоответствие пар begin..end, присваивание несовместимым типам данных (например, присваивание действительного чисел целому), число и тип параметров несоответствуют в вызовах процедур и функций и т.д. Когда Вы начинаете компиляцию, в центре экрана появляется окно, содержащее инфформацию о данной компиляции. Если во время компиляции не произошло никаких ошибок, то в этом окне появится сообщение "Compilation successful: press any key" (компиляция успешна: нажмите любую клавишу). Окно остается на экране до тех пор, пока Вы не нажмете клавишу. Если во время компиляции произошла ошибка, Turbo Pascal останавливается, устанавливает курсор на ошибку в редакторе и показывает сообщение об ошибке вверху редактора. (Первое нажатие клавиши очистит это сообщение, а Ctrl-Q W будет показывать его снова до тех пор, пока Вы не измените файл или не перекомпилируете его). Сделайте исправления, сохраните обновленный файл и компилируйте снова. Выполнение Вашей первой программы. После фиксации ошибок идите в основное меню и выберите Run/Run (или нажмите Ctrl-F9). Вы находитесь на экране пользователя, и на этом экране появится сообщение: Enter two numbers: Наберите два любых целых числа с пробелом между ними и нажмите Enter. Появится следующее сообщение: The ratio is а за ним - отношение первого числа ко второму. В следующей строке появится сообщение "Press ...", а программа будет ждать нажатия клавиши Enter. Чтобы посмотреть вывод своей программы, выберите Window/User Screen (или нажмите Alt-F5). Если во время выполнения программы произошла ошибка, то на экране появится сообщение, которое выглядит следующим образом: Run-time error at : где - это соответствующий номер ошибки (см. в приложении А "Сообщения об ошибках" в руководстве программиста информацию по ошибкам компиляции и ошибкам времени выполнения), а : - это адрес в памяти, где произошла ошибка. (Если Вы хотите вернуться к этой ошибке позднее, ищите ее в окне Output). Вы окажетесь в точке расположения ошибки в своей программе с описательным сообщением об ошибке, показанным в строке статуса редактора. Пока сообщение находится в строке статуса редактора, можно нажать F1 для получения справочной информации по конкретной ошибке. Нажатие любой другой клавиши приводит к исчезновению сообщения об ошибке. Если Вам нужно будет найти местоположение ошибки снова, выберите Search/Find Error. Когда Ваша программа закончит выполнение, Вы вернетесь в то место программы, с которого начинали. Теперь Вы можете модифицировать программу, если хотите. Если Вы выберете команду Run/Run перед внесением изменений в свою программу, Turbo Pascal немедленно выполнит ее снова без перекомпиляции. Как только Вы вернетесь назад в IDE после выполнения своей программы, Вы можете просмотреть вывод своей программы посредством выбора команды Run/User Screen (или нажатия Alt-F5). Выберите ее снова для возврата в среду Turbo Pascal. Проверка файлов, которые Вы создали. Если Вы вышли из Turbo Pascal (выбрав Exit из меню File), Вы можете просмотреть справочный листинг исходного файла (Паскаль), который Вы создали. Чтобы выйти, нажмите D (для DOS Shell) в меню File, или нажмите X (для Exit) и наберите следующую команду в ответ на подсказку DOS: DIR MYFIRST.* Вы получите листинг, который выглядит следующим образом: MYFIRST PAS 217 8-10-88 11:07a Файл MYFIRST.PAS содержит программу на Паскале, которую Вы только что написали. Если Вы сохраняли программу во время ее написания, Вы также увидите файл MYFIRST.BAK, который был автоматически создан редактором. Вы увидите выполнимый файл только в том случае, если Вы изменили установку по умолчанию Destination в меню Compile на Disk. Вы можете затем создать файл, названный MYFIRST.EXE, который будет содержать машинный код, сгенерированный Turbo Pascal из Вашей программы. Затем Вы сможете выполнить эту программу, набрав MYFIRST, а затем нажав Enter в ответ на системную подсказку DOS. Ваша вторая программа. Теперь Вы будете писать вторую программу, которая построена на основе первой. Если Вы вышли из Turbo Pascal, используя команду DOS Shell из меню File, Вы можете вернуться в среду Turbo Pascal, набрав Exit в ответ на подсказку DOS. Если Вы вышли, используя Exit из меню File, Вы можете набрать: TURBO MYFIRST.PAS для того, чтобы вернуться в IDE. Это перенесет Вас прямо в редактор. Теперь измените программу MYFIRST.PAS следующим образом: program MySecond; var A,B: Integer; Ratio: Real; begin repeat Write('Enter two numbers: '); Readln(A,B); Ratio := A/B; Writeln('The ratio is ',Ratio:8:2); Write('Press ...'); Readln; until B = 0; end. Вы хотите сохранить это как отдельную программу, поэтому войдите в меню File, выберите Save As и наберите MYSECOND.PAS, затем нажмите Enter. Компилируйте и запускайте свою вторую программу, используя Ctrl-F9. Turbo Pascal выполнит Вашу обновленную программу. Поскольку Вы делали изменения в программе, Turbo Pascal автоматически откомпилирует программу перед ее запуском. В программе были сделаны большие изменения. Утверждения были заключены в цикл repeat..until. Это приведет к тому, что все утверждения между repeat и until будут выполняться до тех пор, пока выражение, следующее за until, не станет True (истинно). Это выражение проверяет, равно ли значение B нулю или нет. Если В имеет значение 0, цикл должен завершиться. Запустите свою программу, проверьте некоторые значения, а затем введите 1 0 и нажмите Enter. Ваша программа прекратит работу, но не совсем так, как Вы предполагали: она завершится с ошибкой времени выполнения. Вы вернетесь обратно в редактор, а курсор будет стоять на строке: Ratio := A/B; а вверху окна редактора появится сообщение: Error 200: Division by zero (ошибка 200: деление на 0) Отладка Вашей программы. Если Вы программировали раньше, Вы можете узнать эту ошибку и как ее зафиксировать. Но давайте воспользуемся этой возможностью, чтобы показать Вам, как использовать интегрированный отладчик, встроенный внутри Turbo Pascal 6.0. Интегрированный отладчик Turbo Pascal позволит Вам передвигаться по своему коду по строкам. В то же время, Вы можете просматривать переменные: как изменяются их значения. Чтобы начать сеанс отладки, выберите команду Run/Trace Into (или нажмите F7). Если Ваша программа нуждается в перекомпиляции, Turbo Pascal сделает это. Первое утверждение (в данном случае begin) в теле Вашей программы будет высвечено; с этого момента мы будем называть эту высвеченную полосу - полосой запуска. Первое нажатие клавиши F7 инициализирует сеанс отладки. Теперь нажмите F7, чтобы начать выполнение программы. Отладчик выполнит невидимый код запуска. Следующая выполнимая строка в этой программе - утверждение Write в строке 7. Нажмите F7 снова. На этот раз появится экран пользователя и останется. Это произойдет потому, что утверждение Readln ожидает ввода двух чисел. Наберите два целых числа, разделенные пробелом; убедитесь, что второе число - не нуль. Теперь нажмите Enter. Вы вернетесь назад в окно редактора, с полосой запуска на утверждении присваивания в строке 9. Нажмите F7 и выполните утверждение присваивания. Теперь полоса запуска находится на утверждении Writeln в строке 10. Нажмите F7 дважды. Теперь вы должны выполнить Readln в строке 12. Нажмите F7, посмотрите вывод своей программы и затем нажмите Enter. Полоса запуска теперь находится на предложении until. Нажмите F7 несколько раз, и Вы вернетесь к началу цикла repeat. Вместо прохождения по программе по принципу утверждение-за-утверждением, интегрированный отладчик позволяет делать шаги по коду "одна строка за один раз". Это мощный инструмент,который будет подробно рассмотрен в главе 5 настоящего руководства. Использование окна Watch. Давайте посмотрим на значение объявленных переменных. Нажмите Alt-D для появления меню Debug. Выберите команду Add Watch из меню Watches (или нажмите Ctrl-F7). Наберите А в окне ввода Watch Expression и нажмите Enter. А появится в окне Watch вместе со своим текущим значением. Теперь используйте команду Add Watch для добавления В и Ratio в окно Watch. Наконец, используйте ее для добавления выражения А/В в окно Watch. Выберите Run/Trace Into (или нажмите F7) для того, чтобы сделать шаг в своей программе. На этот раз, когда Вы должны ввести два числа, введите 0 для второго числа. Когда Вы нажмете Enter и вернетесь в IDE, посмотрите на выражение А/В в окне Watch (нажмите Alt и # (номер) окна или Alt-W W). Вместо этого значения будет стоять фраза "Invalid floating-point operation" (неправильная операция над числами с плавающей точкой); это произошло потому, что деление на нуль неопределено. Хотя заметим, что наличие этого выражения в окне Watch не приводит к остановке программы с ошибкой. Вместо этого выдается сообщение об ошибке, а отладчик не выполняет деление в окне Watch. Теперь нажмите F7 снова, присваивая А/В переменной Ratio. В этой точке произойдет аварийное завершение программы, и вверху окна редактора опять появится сообщение об ошибке "Division by zero". Фиксирование Вашей второй программы. Теперь возможно вы задумались о том, что неправильно в вашей программе: если Вы вводите значение 0 для второго числа (В), программа завершается с ошибкой времени выполнения. Как зафиксировать ее? Если В имеет значение 0, не делите А на В. Отредактируйте свою программу так, чтобы она выглядела следующим образом: program MySecond; var A,B: Integer; Ratio: Real; begin repeat Write('Enter two numbers: '); Readln(A,B); if B = 0 then Writeln('The ratio is undefined') else begin Ratio := A/B; Writeln('The ratio is ',Ratio:8:2); end; Write('Press ...'); Readln; until B = 0; end. Теперь запустите свою программу (или сами, или используя отладчик). Если Вы используете отладчик, замечайте, как изменяются значения в окне Watch по мере совершения шагов в рограмме. Когда Вы готовы остановиться, введите 0 для В. Программа остановится после выведения сообщения "The ratio is undefined. Press ..." (отношение не определено. Нажмите ...). Теперь Вы поняли, каким мощным средством является отладчик. Можно передвигаться в программе строка-за-строкой; можно показывать значение переменных и выражений своей программы и просматривать изменение значений по мере выполнения программы. Стиль программирования: Ваша третья программа. В последней программе давайте займемся графикой (поверхностно). Эта программа предполагает, что в Вашей системе имеется графический адаптер, а Вы готовы использовать этот адаптер. Если Вы сомневаетесь, запустите программу снова и посмотрите, что получится. Если появится сообщение об ошибке, то возможно у Вас нет графического адаптера (или он есть, но не поддерживается модулем Graph). В любом случае, нажатие Enter должно вернуть Вас обратно в IDE. Примечание. Вам нужно распаковать GRAPH.TPU из BGI.ZIP для запуска этой программы. Откройте файл (F3) MYTHIRD.PAS и введите эту программу: program MyThird; uses Graph; const Start = 25; Finish =175; Step = 2; var GraphDriver: Integer; {Хранит номер графического драйвера} GraphMode: Integer; {Хранит графический режим для драйвера} ErrorCode: Integer; {Сообщает условия ошибки} X1,Y1,X2,Y2: Integer; begin GraphDriver := Detect; {Пытается автоматически обнаружить графическую плату} InitGraph(GraphDriver, GraphMode, ''); ErrorCode := GraphResult; if ErrorCode <> grOk then begin Writeln('Графическая ошибка: ',GraphErrorMsg(ErrorCode)); Writeln('(Возможно у Вас нет графической платы!)'); Writeln('Программа прерывается...'); Readln; Halt(1); end; Y1 := Start; Y2 := Finish; X1 := Start; While X1 <= Finish do begin X2 := (Start+Finish) - X1; Line(X1, Y1, X2, Y2); X1 := X1 + Step; end; X1 := Start; X2 := Finish; Y1 := Start; while Y1 <= Finish do begin Y2 := (Start+Finish) - Y1; Line(X1, Y1, X2, Y2); Y1 := Y1 + Step; end; OutText('Press to quit:'); Readln; CloseGraph; end. { MyThird } Примечание. Чтобы выполнить эту программу, Вы должны находиться в том же справочнике, что и файлы драйверов BGI (*.BGI). Сохраните эту программу (F2) и затем откомпилируйте ее (Alt-F9). Если не будет ошибок во время компиляции, выберите Run/Run (Ctrl-F9) для ее запуска. Эта программа рисует несколько прямоугольников. Когда выполнение закончится, Вы вернетесь в свою программу. Предложение uses говорит о том, что программа использует модуль Graph. Модуль - это или библиотека, или собрание подпрограмм (процедур и функций) и других объявлений. В этом случае модуль Graph содержит программы, которые Вы хотите использовать: InitGraph, Line, CloseGraph и другие. Раздел, обозначенный const, задает три числовые константы - Start, Finish и Step - которые влияют на размер, размещение и появление прямоугольника. Изменяя эти значения, Вы можете изменять внешний вид прямоугольника. ПРЕДУПРЕЖДЕНИЕ: Не устанавливайте Step меньше 1; если же Вы так сделаете, то получите то, что называется бесконечным циклом. Если Вы откомпилировали на диск и запускаете .ЕХЕ из DOS, то Вы не сможете выйти, кроме как с помощью нажатия Ctrl-Alt Del или выключением РС. Если Вы запустили программу вне IDE, Вы можете прервать программу посредством нажатия Ctrl-Break. Переменные Х1, Y1, X2 и Y2 хранят значения расположения вместе с противоположными сторонами прямоугольника. Прямоугольник рисуется путем проведения прямой линии от X1, Y1 до X2, Y2. Затем координаты меняются, рисуется следующая линия. Координаты всегда начинаются в противоположных углах: первая линия рисуется от (25,25) до (175,175). Затем программа начинает свой второй цикл, который продолжает подобный курс, изменяя каждый раз координаты Y (вертикальные). Программа Line из модуля Graph рисует линию между данными и конечными точками. Последнее утверждение Readln приводит к тому, что программа ожидает нажатия клавиши перед возвращением в текстовый режим и возвратом в IDE. Вы можете пройти эту программу строка-за-строкой, используя интегрированный отладчик и затем просмотреть ее, переключаясь с графического режима программы на текстовый режим IDE и обратно.