Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по программированию..pdf
Скачиваний:
10
Добавлен:
15.11.2022
Размер:
12.2 Mб
Скачать

называют самодокументированными. В некоторых подобных програм­ мах объем комментариев превышает объем вычислительных операто­ ров.

Удачное использование комментариев — признак хорошего стиля программирования.

Чтобы выполнить программу на ЭВМ, ее нужно ввести в память, оттранслировать и исполнить. Для того чтобы проделать всю эту работу, на компьютере должны быть специальные средства програм­ много обеспечения. На ПК они составляют систему Turbo-Pascal.

Задания

“Оттранслируйте” с Алгоритмического языка на Паскаль следую­ щие алгоритмы (см. [9], лекция 8, примеры и задания):

а) алгоритм Евклида; б) алгоритм выбора большего значения из трех;

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

рациями сложения и вычитания; д) алторитм вычисления частного и остатка от целочисленного деле­ ния.

ПРОГРАМ М И РОВАН И Е

НА ПАСКАЛЕ

Лекция 2

2.1. Некоторые сведения о системе ТУрбо-Паскаль

Название “Турбо-Паскаль” обычно воспринимается в двух смыслах:

как диалект языка Паскаль, представляющий собой расширение стандартного Паскаля;

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

В лекциях мы будем рассматривать именно ТУрбо-Паскаль, т.к. он реализован на основных типах персональных компьютеров (IBM PC

исовместимых с ними).

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

Систему программирования ТУрбо-Паскаль назовем кратко “Тур­ бо-система” 1Урбо-система обеспечиваем удобную операционную об­ становку для работы программиста. Но ее назначение не общее, как, например, у оболочки операционной системы MS DOS N orton Com­ mander, а специализированное: предоставлять пользователю необхо­ димые средства работы с Паскаль-программой.

Турбо-система опирается в своей работе на возможности опера­ ционной системы. Поэтому каждая конкретная ТУрбо-система- может работать с определенной операционной системой, ее конкретшдми вер­ сиями. Например, Турбо-система на IBM PC работает в среде NlS DOS. Причем более развитые версии ТУрбо-системы требуют и более высо­ коразвитых версий DOS.

ТУрбо-Паскаль (как язык программирования и как операционная оболочка) значительно изменился за историю своего существования. Первый вариант ТУрбо-Паскаля фирма Borland выпустила в оередице 80-х годов. К сегодняшнему дню этой фирмой создано шесть модифика­ ций системы, известных как версии 3.0, 4.0, 5.0, 5.5, 6.0, 7.0. Каждая

из них представляет собой усовершенствование предыдущей версии. Все они создавались для семейства машин IBM PC и совершенствова­ лись вместе с компьютерами. Версия 3.0 ориентирована на ПК малой мощности (IBM PC/XT).

Разрабатываемые на ней программы имеют ограничение на длину (не более 64 Кбайт); в ней нет средств раздельной компиляции взаи­ мосвязанных программ; операционная среда весьма несовершенна.

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

Версия 5.0 отличается в основном дальнейшими усовершенство­ ваниями среды, к которой добавлен встроенный отладчик. В вер­ сию 5.5 были впервые включены средства поддержки объектноориентированного программирования — самой современной техноло­ гии создания программ.

Главные отличия версии 6.0 — это новая среда, ориентированная на работу с устройством ввода, типа “мышь”-и использующая многоо­ конный режим работы; объектно-ориентированная библиотека TurboVision, а также возможность включать в текст программы команды Ассемблера.

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

Программа на Турбо-Паскале проходит три этапа обработки:

создание текста программы;

компиляция;

исполнение откомпилированной программы.

В соответствии с этими функциями турбо-система включает в себя три главные компоненты:

редактор текстов,

компилятор,

исполнительную систему.

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

<имя файла>.РАБ

PAS — это стандартное расширение имени файла, созданного систем­ ным редактором. Имя файла задается пользователем.

Обращение к текстовому редактору происходит по команде Edit. Компилятор переводит программу с языка Паскаль на язык машин­

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

<имя файла>.ЕХЕ

Работа компилятора инициируется системной командой Com pile. Исполнение откомпилированной программы производится по ко­

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

В старших версиях ТУрбо-Паскаля имеется система отладки (D e­ bug). С ее помощью можно просмотреть на экране значение любой переменной, найти значение любого выражения, установить новое зна­ чение переменной. Можно прерывать выполнение программы в ука­ занных местах, которые называются контрольными точками. Система отладки существенно облегчает программисту поиск ошибок.

Подробные сведения о работе с конкретными версиями ТУрбоПаскаля можно найти в специальной литературе (см. список в конце книги).

2.2. Способы описания языка программирования

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

иписать на иностранном языке, нужно знать алфавит этого языка. Во-вторых, следует знать правописание слов и предложений, т.е. то, что называется синтаксисом языка. В-третьих, важно понимать смысл слов и фраз, чтобы адекватно реагировать на них. Например, в са­ лоне самолета засветилось табло, на котором написано: “Fasten belts!” (Застегните ремни!). Зная английскую грамматику, Вы, к зависти со­ седа, правильно прочитываете эту фразу. Однако смысл ее Вам может быть непонятен и поэтому соответствующих действий Вы не пред­ принимаете, за что получаете замечание от стюардессы. Смысловое содержание языковой конструкции называется семантикой. Из гра­ мотно написанных слов можно составить абсолютно бессмысленную фразу.

Всякий язык программирования образуют три его основные соста­ вляющие: алфавит, синтаксис и семантика.

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

Компьютер же — автомат, воспринимающий все “всерьез” . В текстах программ нет избыточности, компьютер сам не исправит даже очевидной (с точки зрения человека) ошибки. Он может лишь указать на место, которое “не понял” и вывести замечание о предпо­ лагаемом характере ошибки. Исправить же ошибку должен програм­ мист.

Для описания синтаксиса языка программирования тоже нужен какой-то язык. Теперь уже речь идет о метаязыке ( “надъязыке” ), предназначенном для описания других языков. Наиболее распро­ страненными метаязыками в литературе по программированию яв­ ляются металингвистические формулы Бэкуса-Наура (язык БНФ) и синтаксические диаграммы. В дальнейшем мы чаще всего будем ис­ пользовать язык синтаксических диаграмм. Они более наглядны, легче воспринимаются. Однако, когда это будет удобно, будем использовать

инекоторые элементы языка БНФ.

ВБНФ всякое синтаксическое понятие описывается в виде фор­ мулы, состоящей из правой и левой части, соединенных знаком смысл которого эквивалентен словам: “по определению есть” . Слева от

знака “::=” записывается имя определяемого понятия (метаперемен­ ная), которое заключается в угловые скобки “< ” и а в правой части записывается формула или диаграмма, определяющая все мно­ жество значений, которое может принимать метапеременная.

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

Втакой последовательности, очевидно, конечным определяемым по­ нятием должна быть “программа”

Взаписях метаформул приняты определенные соглашения. Напри­ мер, формула БНФ, определяющая понятие “двоичная цифра” , следу­ ющая:

<двоичная цифра> ::= 0 |1

Значок “|” эквивалентен слову “или” (“либо” ). На языке синтаксиче­ ских диаграмм это определение выглядит так:

<двоичная цифра>

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

Понятие “двоичный код” как непустую последовательность двоич­

ных цифр БНФ описывает так:

< двоичный код > ::= < двоичная цифра > |< двоичный код X двоичная цифра

Определение, в котором некоторое понятие определяется само через себя, называется рекурсивным. Рекурсивные определения характерны для БНФ.

Синтаксическая диаграмма двоичного кода:

< двоичный код>

------------------------- <двоичная цифра> - — — >

Возвратная стрелка обозначает возможность многократного по­ вторения. Очевидно, диаграмма более наглядна, чем БНФ.