- •ПРЕДИСЛОВИЕ
- •1.1. История и классификация языков программирования высокого уровня
- •1.2. Первое (знакомство с Паскалем
- •Задания
- •Лекция 2
- •2.1. Некоторые сведения о системе ТУрбо-Паскаль
- •2.2. Способы описания языка программирования
- •Лекция 3
- •3.2. Типы данных
- •4.1. Структура Паскаль-программы
- •4.2. Арифметические операции, функции, выражения Арифметический оператор присваивания
- •Форматы процедуры write
- •Задания
- •1. Что будет напечатано программой
- •если последовательно вводятся три числа: 36, -6, 2345?
- •5.2. Функции, связывающие различные типы данных
- •Задания
- •Теперь посмотрим, как это программируется наТЛаскале.
- •Здесь
- •<параметр цикла>::= <имя простой переменной порядкового типа>
- •Задания
- •7.1. Подпрограммы-процедуры
- •7.2. Подпрограммы-функции
- •7.4. Рекурсивные подпрограммы
- •8.1. Что такое рекуррентная последовательность
- •8.2. Программирование вычислений рекуррентных последовательностей
- •Задания
- •Задания
- •6. Вывод результата.
- •Теперь будем составлять подпрограммы.
- •Задания
- •12.2. Операции над множествами
- •12.3. Примеры использования множеств
- •Красивая программа! К сожалению, ею нельзя воспользоваться для
- •В этой программе использована функция определений размера файла:
- •.Fiiesize(<HMH файловой переменной>);
- •Задания
- •14.2. Работа с файлами записей
- •Задания
- •15.2. Связанные списки
- •Лекция 16
- •16.1. Организация внешних подпрограмм
- •16,2. Создание и использование модулей
- •распечаткой текста программы с подробными комментариями.
- •выполнения следующих операции над обыкновенными дробями вида -q
- •(Р — целое, Q — натуральное):
- •1) сложение;
- •2) вычитание;
- •3) умножение;
- •4) деление;
- •5) сокращение дроби;
- •7) функции, реализующие операции отношения (равно, не равно,
- •Используя этот модуль, решить задачи:
- •При разработке модуля рекомендуется такая последовательность
- •Задания
- •Приведем текст программы целиком.
- •ЗАДАНИЯ ПО ТЕМЕ “ЛИНЕЙНЫЕ АЛГОРИТМЫ”
- •ЦЕЛОЧИСЛЕННАЯ АРИФМЕТИКА
- •Сортировка массивов
- •ЗАДАЧИ ПО ТЕМЕ “ОБРАБОТКА СТРОК”
- •ЗАДАНИЯ ПО ТЕМЕ “МОДУЛИ”
- •ЗАДАНИЯ ПО ТЕМЕ “ДИНАМИЧЕСКИЕ ПЕРЕМЕННЫЕ”
- •Задачи, предлагавшиеся на школьных олимпиадах по программированию (Пермская область)
- •Учебное издание
называют самодокументированными. В некоторых подобных програм мах объем комментариев превышает объем вычислительных операто ров.
Удачное использование комментариев — признак хорошего стиля программирования.
Чтобы выполнить программу на ЭВМ, ее нужно ввести в память, оттранслировать и исполнить. Для того чтобы проделать всю эту работу, на компьютере должны быть специальные средства програм много обеспечения. На ПК они составляют систему 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 двоичная цифра
Определение, в котором некоторое понятие определяется само через себя, называется рекурсивным. Рекурсивные определения характерны для БНФ.
Синтаксическая диаграмма двоичного кода:
< двоичный код>
------------------------- <двоичная цифра> - — — >
Возвратная стрелка обозначает возможность многократного по вторения. Очевидно, диаграмма более наглядна, чем БНФ.