Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Информатика. Теория и практика_Острейковский В.А_2008

.pdf
Скачиваний:
130
Добавлен:
16.01.2016
Размер:
7.43 Mб
Скачать

ставления в ASCII-кодах (по его коду); | @ | — обозначение адреса переменной, типизированной константы, подпрограммы, метода; | ^ | — обозначение типа-указателя, значения величины по ее указателю или управляющего символа (коды от 0 до 31).

Лексическая структура языка Паскаль. Программа на языке Паскаль состоит из последовательности лексем — минимальных лексических единиц языка, имеющих самостоятельный смысл. Лексемы условно делятся на несколько классов:

Ключевые (служебные, зарезервированные) слова. Всего 51 слово, в редакторе интегрированной среды Borland Паскаль изображаются белым цветом: AND — логическое умножение (И); ARRAY — массив; BEGIN — начало; CASE — вариант; CONST — константа; DIV — деление нацело с отбрасыванием остатка; DO — исполнять; DOWNTO — уменьшать на единицу параметр цикла; ELSE — иначе; END — конец; FILE — файл; For — для; FUNCTION — функция; GOTO — переход к метке; IF — если; IN — принадлежность к множеству; LABEL — метка; MOD — нахождение остатка от деления нацело; NOT — логи- ческое отрицание (НЕ); OF — из; OR — логическое сложение (ИЛИ); PACKED — упакованный; PROCEDURE — процедура; PROGRAM — первое слово программы; RECORD — запись; REPEAT — повторить; SET — множество; THEN — то; ТО — увеличение на единицу параметра цикла; TYPE — тип; UNTIL — до; VAR — переменная; WHILE — пока; WITH — с и др.

Идентификаторы. Изображаются желтым цветом, могут быть двух разновидностей:

имена, которые программист присваивает какой-либо переменной, константе, типу, метке, процедуре или функции (нельзя использовать ключевые слова)

стандартные идентификаторы, которые являются именами встроенных в язык процедур и функций. Компилятор воспринимает 63 символа. Идентификатор должен начинаться

ñбуквы, может содержать цифры и знак подчеркивания.

Знаки операций: := | <| >| + | – | * | / |; Изображения. Эта группа лексем обозначает:

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

<Вещ_фикс>::=<целое>.<целое> — 12.56.

471

Кроме того, применяется так называемый экспоненциальный формат:

<Вещ эксп>::=<Вещ_фикс>Е<порядок>, где <порядок>::= [+ | –] <целое>,

7.4Å–2 Æ 7.4 * 10–2; èëè 0.074;

строки последовательность любых символов из расширенного набора ASCII, заключенная в апострофы;

комментарии (изображаются серым цветом) — любая комбинация произвольных символов, заключенная либо в фигурные скобки — {}, либо в комбинированные — (* *).

Если за скобкой следует знак $, комментарий интерпретируется как директива компилятора. Между лексемами разрешено вставлять один или несколько разделителей: пробелов, комментариев, символа «конец строки» (код 13) и других управляющих символов (коды от 0 до 31). Разделителями являются знаки математических операций, круглые и квадратные скобки, запятые.

7.1.2. Структура Паскаль-программы

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

В соответствии с этим принципом программа на языке Паскаль всегда состоит из двух основных частей: описания последовательности действий, которые необходимо выполнить, и описания данных, с которыми оперируют действия. Действия представляются операторами языка, данные вводятся посредством описаний и определений. Кроме того, программа может быть снабжена заголовком, который задает имя программы и ее параметры. В авторском варианте языка заголовок реализует связь программы с вычислительной средой. Язык Турбо Паскаль рассматривает заголовок как комментарий. Текст программы должен завершаться символом «.» (точка).

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

472

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ðèñ. 7.1. Общая структура программы

торов называется блоком. Структура программы показана на рис. 7.1.

Объекты, вводимые посредством описаний и определений, имеют различную природу и могут быть разбиты на пять классов:

метки;

константы;

òèïû;

переменные;

процедуры и функции.

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

473

Определение констант задает в программе идентификаторы, являющиеся синонимами (представителями) некоторых значений.

Определение типов предназначено для задания конкретных множеств значений. Указанные множества обозначаются именами (идентификаторами) и в дальнейшем могут служить для описания переменных.

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

Наконец, описание процедуры èëè функции определяет часть программы как отдельную синтаксическую единицу и сопоставляет с ней имя. Впоследствии действия, сосредоточенные в процедуре (функции), могут быть выполнены («вызваны») посредством указания ее имени. Кроме действий, описание процедуры (функции) может содержать совокупность описаний локальных объектов, образующих собственный контекст имен. Процедуры и функции являются основным средством структурирования программы.

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ðèñ. 7.2. Структура

 

 

 

 

 

 

 

 

 

 

 

 

Паскаль-программы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

474

Более подробно все введенные выше конструкции и объекты будут рассмотрены далее, а изложение данной подтемы завершает рассмотрение простой программы на языке Паскаль.

Program Example; Var

n : integer; R : real; Begin

Readln (n); R := 0; while n>0 do Begin

R := R + 1/n; n := n – 1

End;

Writeln(R) End.

Приведенная программа предназначена для вычисления ряда вида R = 1 + 1/2 + 1/3 + ... + 1/n. Первая строка программы представляет собой заголовок, который в данном случае состоит из служебного слова program, имени программы и символа, завершающего заголовок.

Далее следует собственно программа, или блок, который состоит из описания двух переменных и совокупности операторов. Описание переменных начинается со служебного слова var и вводит два объекта данных, поименованных идентификаторами n è R. Переменная n определяется как имеющая целый тип (integer) и предназначена для задания количества элементов ряда. Переменная R служит для вычисления результата (суммы ряда) и имеет вещественный тип (т. е. может принимать любое значение из некоторого стандартного подмножества целых чисел, обозначенного идентификатором real).

Действия (операторы) реализуют алгоритм вычисления суммы. Совокупность операторов заключена между служебными словами begin è end; друг от друга операторы отделяются символом <;> (точка с запятой). Первые два оператора устанавливают начальные значения переменных. Значение n определяется посредством чтения его из стандартного входного файла (в данном случае таким «файлом» является клавиатура ЭВМ). Чтение

475

реализуется вызовом стандартной (предописанной) процедуры Readln. Начальное значение переменной R устанавливается непосредственным заданием конкретного значения с помощью оператора присваивания.

Следующий оператор организует собственно процесс вы- числений, определяя повторяющуюся последовательность действий (цикл). Строка while n>0 do является заголовком цикла

èзадает условие его повторения (в данном случае — неотрицательность текущего значения n). Два оператора присваивания, заключенные между служебными словами begin è end, составляют тело цикла. Первый из этих операторов добавляет к текущему значению суммы очередной элемент ряда, второй изменяет значение n, переходя тем самым к следующему элементу ряда.

Наконец, последний оператор программы осуществляет передачу вовне программы результата вычислений. Вызов стандартной процедуры Writeln выводит значение R в стандартный выводной файл (по умолчанию таким «файлом» является экран дисплея).

Процесс программирования на универсальном языке высокого уровня Паскаль состоит из следующих действий: ввода

èредактирования текста программы, трансляции и отладки. Для повышения качества и скорости разработки программ была создана интегрированная система программирования Турбо Паскаль.

Процесс обработки программы на языке Паскаль может быть проиллюстрирован схемой на рис. 7.3.

Для выполнения каждого этапа применяются специальные средства интегрированной среды программирования: редактор

 

 

"

!

 

!

 

#

$

 

!

%

$ % !

Ðèñ. 7.3. Этапы процесса обработки программы на языке Паскаль

476

текстов (editor), компилятор (compiler), компоновщик (linker), отладчик (debugger). Краткая справка текстового редактора Турбо Паскаль и основные приемы работы с программами приведены в табл. 7.1.

Таблица 7.1

Справка текстового редактора Турбо Паскаль

ÏÅ Ð Å Ì Å Ù Å Í È Å Ê Ó Ð Ñ Î Ð À

Âначало/конец строки <Home>/<End>

На первую/последнюю строку экрана <Ctrl> + <Home>/<Ctrl> + <End> В начало/конец текста программы <Ctrl> + <PgUp>/<Ctrl> + <PgDn

Ó Í È × Ò Î Æ È Ò Ü È Â Î Ñ Ñ Ò À Í Î Â È Ò Ü

Вставить строку. Курсор перед или после строки <Enter> Разделить строку на две части <Enter>

Соединить две строки — удалить перенос <BS>, <DEL> Удалить строку <Ctrl> + Y

О П Е Р А Ц И И С Ф А Й Л А М И Запись на диск под старым именем <F2>

Запись на диск под новым именем <F10>, File, Save as Прочитать текст из дискового файла <F3>

Выход в главное меню <F10>

Î Ï Å Ð À Ö È È Ñ Á Ë Î Ê À Ì È

Пометка блока (начало/конец) <Ctrl> + K, B <Ctrl> + K, K Отмена пометки блока <Ctrl> + K, H

Копирование блока внутри файла <Ctrl> + K, C Перемещение блока внутри файла <Ctrl> + K, V Удаление блока <Ctrl> + K, Y

Записать блок в дисковый файл <Ctrl> + K, W

Ñ Ï Ð À Â Î × Í À ß Ñ Ë Ó Æ Á À

Помощь (информация об активном окне) <F1>

Вызов оглавления справочной информации <Shift> + <F1> Вызов контекстной справки по языку <Ctrl> + <F1>

Î Ò Ë À Ä Î × Í Û É Ð Å Æ È Ì

Продолжить исполнение программы до курсора <F4> Распахнуть активное окно на весь экран <F5> Сделать активным следующее окно <F6> Выполнить следующую строку программы <F7> Выполнить процедуру или функцию <F8> Компилировать программу <Alt> + <F9> Выполнить прогон программы <Ctrl> + <F9>

Сменить окно редактора на окно результатов <Alt> + <F5> Выйти из Турбо Паскаль <Alt> + <X>

477

7.1.3. Основные типы данных

Для характеристики данных в программах вводится понятие «тип». Каждая переменная должна быть отнесена к некоторому типу. Указание типа информационного объекта определяет его структуру, а также набор значений, которые может принимать элемент данных; размер памяти, отводимый для хранения объекта, и набор действий, которые можно осуществлять над данным объектом. Способ указания типа определяется синтаксисом языка программирования. Обычно это делается в начальных разделах программы (описаниях), в которых перечисляются переменные, встречающиеся в ней, и указываются их типы.

Тип переменной определяется при ее описании и не может быть изменен. Под типом данных понимается множество допустимых значений этих данных, а также совокупность операций над ними. На рис. 7.4 приведена классификация стандартных типов данных.

Базовые (простые) типы данных. Переменные типа данных «целое» принимают только целочисленные значения. Над целыми числами допустимы основные арифметические операции: сложение («+»), вычитание («–»), умножение («*»). Некоторой особенностью языка Паскаль являются обозначения целочисленных операций выделения частного и остатка от деления, для этого используются ключевые слова div è mod соответственно:

5 div 2; // результат 2

5 mod 2 // результат 1

При реализации целых чисел обычно предполагается, что они непосредственно отображаются на машинное оборудование. Для достижения максимальной эффективности реализации размер поля, отводимого для хранения величины типа данных «целое», соответствует размеру слова, непосредственно обрабатываемого процессором; представление целого числа, таким образом, является машинно-зависимым. Для обозначения типа данных «целое» в языке Паскаль используется ключевое слово integer. Максимально возможное значение целого числа зависит от количества двоичных разрядов, используемых в конкретной ЭВМ для представления этого типа. Диапазон

478

 

 

 

 

 

 

 

 

 

$% #

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

& ' % #

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

( ) #

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

% ( #

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

*

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

" #

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ðèñ. 7.4. Классификация стандартных типов данных

значений величины i типа данных «целое» при длине машинного слова N бит определяется соотношением

–2N–1<= i < 2N–1

при условии использования обычного двоичного дополнительного представления чисел. Для 32-битовой ЭВМ диапазон целых чисел ограничен константами –2 147 483 648 и +2 147 483 647.

Помимо целых чисел, допускается использование беззнаковых натуральных чисел. Диапазон таких чисел при длине машинного слова N бит определяется соотношением

0 <= i < 2N – 1.

Для обозначения беззнаковых целых чисел в языке Паскаль используется ключевое слово cardinal; значения переменных этого типа на 32-битовой ЭВМ лежат в диапазоне от 0 до 4 294 967 295.

Ñцелью преодоления излишней машинной зависимости

âязыке Паскаль определены дополнительные базовые целочисленные типы: Shortint — знаковое число длиной 8 бит; Smallint — знаковое число, 16 бит; Longint — знаковое число, 32 бита; Byte — беззнаковое, 8 бит; Word — беззнаковое, 16 бит; Longword — беззнаковое, 32 бита.

Тип элемента данных может быть зарезервированным (базовым) или определяемым пользователем. Вся информация о базовых типах данных встроена в язык программирования и не нуждается в дополнительном уточнении и описании в программе. Наиболее употребительный набор базовых типов состоит из целого, вещественного (с плавающей точкой), символьного, логического (булева), которые встречаются почти во всех языках программирования. Это означает, что если, например, для переменной с именем õ указан тип integer, то описывать множество ее значений и набор допустимых операций не нужно, транслятор сделает это сам. Если объект логического типа, то по структуре он, видимо, очень простой и может принимать только логические значения «истина» (True) и «ложь» (False), а разрешенными для него операциями могут быть только логические операции типа И (AND), ИЛИ (OR) и НЕ (NOT).

480

Соседние файлы в предмете Алгоритмические языки и основы программирования