Меню Рубрики

Правильные идентификаторы с точки зрения компилятора языка pascal

На этом шаге мы рассмотрим правила создания идентификаторов .

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

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

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

Кроме указанного случая уточненные идентификаторы используются при работе с записями и объектами.

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

В Object Pascal есть две разновидности идентификаторов:

  • стандартные (предопределенные) ;
  • пользовательские .

Стандартными (предопределенными) идентификаторами являются имена всех встроенных в язык процедур и функций ( Read, Write, Sin и др.), типов ( Integer, Real, Char и др.) и директив ( absolute, forward, private, public и др.). Переопределение стандартных идентификаторов, в принципе допускается, однако нужно иметь в виду, что в этом случае их стандартное действие будет для данной программы утеряно. Поэтому, такие переопределения считаются в программировании плохим стилем.

Некоторые из стандартных директив, учитывая специфику их применения, называют также процедурными директивами . Перечень стандартных директив Object Pascal приводится ниже.

В языке Object Pascal по сравнению с Borland Pascal введены следующие директивы:

Лексемы private, protected, published и automated внутри описания классов действуют как ключевые слова, а во всех остальных случаях — как стандартные директивы.

Здравствуйте!
Если можно, ответьте на 2 вопроса теста.
Учусь в Интуит Университете и застопорился на лекции №3.
На остальные вопросы отвечаю, а в этих ничего не выходит, даже используя компилятор ответы оказываются неправильные. Обидно бросать из-за этого программу.

3. Какие описания массивов являются правильными с точки зрения компилятора языка Pascal?

1.var a1: array[-1000..50] of integer

2.var a2: array[200..-111] of real

3.var a3: array[-10..10,byte,’0′..’9′] of longint

4.var a4: array[1..10000] of double

5.const n: byte = 0
var a5: array[-1000..n] of word

6.const m1 = 20; m2 = m1*100
var a6: array[m1..m2] of -200..200

7.type mass = array[1..100] of char
var a7: array[0..99] of mass

8.var a8: array[word] of boolean

9.var a9: array[0.0..20000.0] of byte

10.const m1= 10; m2 = 17.89
var a10: array[round(m2/m1)..m1+10]of byte

5. Какие циклы будут работать «бесконечно»?

1.while true do k:=k+1

2.while false do k:=k+1

3.repeat k:=k+1 until true

4.repeat k:=k+1 until false

5.k:=0; repeat k:=k+1 until k =0 do k:=k+1;

Программирование на языке паскаль

Реклама на сайте

Идентификаторы

Идентификаторы – это имена элементов языка. Рекомендуется применять многословные имена для отображения их смысла. В многословном имени можно использовать заглавные буквы или символ подчеркивания для визуального выделения начала слов.

Требования к идентификаторам:

  • могут содержать прописные и строчные латинские буквы, арабские цифры, символ подчеркивания,
  • высота букв не различается (за исключением внешних имен для DLL),
  • не могут начинаться с цифр,
  • длина произвольна,
  • значимы 255 первых символов, остальные – уточнение смысла.

Примеры правильных идентификаторов:

  • Myprogram
  • MyProgram
  • My_Program
  • MoyaProgramma
  • My1program
  • MyFirstProgram
  • MoyaPervayaProgramma

Идентификаторы

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

Для обозначения заранее определенных разработчиками языка типов данных, констант, процедур и функций служат стандартные идентификаторы , например: integer, Sin, Cos, Ln, Sqr, Sqrt, Read, Readln, Write, Writeln. В этом примере стандартный идентификатор Sin вызывает функцию, вычисляющую синус заданного угла, Read, Readln вызывают процедуру, организующую ввод данных, Write, Writeln вызывают процедуру, организующую вывод данных. Любой из стандартных идентификаторов, в отличие от зарезервированных слов, можно переопределить, но это чаще всего приводит к ошибкам. Поэтому на практике стандартные идентификаторы лучше использовать без каких-либо изменений.

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

Компилятор Turbo Pascal строго следит за этим, и если это требование не соблюдается, то компиляция прерывается, а на экран выводится сообщение об ошибке «Error 4: Duplicate identifier» и указывается дублирующийся идентификатор.

В идентификатор не могут входить пробелы и специальные символы. Обратите внимание, что буквы русского алфавита не могут входить в идентификатор Turbo Pascal.

При написании программ следует соблюдать общие правила написания идентификаторов:

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

2. Идентификатор может состоять из букв, цифр и знаков подчеркивания (пробелы, точки и другие специальные символы недопустимы);

3. Между двумя идентификаторами должен быть по крайней мере один пробел;

4. Максимальная длина идентификатора составляет 127 символов, но значимыми являются только первые 63 символа;

5. При записи идентификаторов можно использовать как прописные, так и строчные буквы. Компилятор не делает различий между ними, хотя они и имеют различные ASCII-коды. На практике рекомендуется применять эту особенность для более простого чтения и понимания значений идентификаторов. Так, вместо идентификатора nomerotdela лучше написать NomerOtdela, выделив прописными буквами каждую из двух смысловых частей.

Правильно выбранные идентификаторы значительно облегчают чтение и понимание программы, а также уменьшают вероятность появления ошибок при модификации программ. Например, значение даты удобнее обозначить идентификатором Data, чем просто буквой D или любым другим символом.

2graph – ошибка, идентификатор начинается с цифры

Nomer.Doma – ошибка, идентификатор содержит точку

Сумма – ошибка, идентификатор содержит буквы русского алфавита.

Какие описания массивов являются правильными с точки зрения компилятора.

Какие описания массивов являются правильными с точки зрения компилятора языка Pascal?
var a1: array[-1000..50] of integer;
const m1 = 20; m2 = m1*100;
var a6: array[m1..m2] of -200..200;
var a2: array[200..-111] of real;
const n: byte = 0;
var a5: array[-1000..n] of word;
var a9: array[0.0..20000.0] of byte;
type mass = array[1..100] of char;
var a7: array[0..99] of mass;

1) var a1: array[-1000..50] of integer; — верно

2) const m1 = 20; m2 = m1*100; var a6: array[m1..m2] of -200..200; — верно

3) var a2: array[200..-111] of real; — ошибка, верхняя граница меньше нижней

4)const n: byte = 0; var a5: array[-1000..n] of word; — верно

5) var a9: array[0.0..20000.0] of byte; — ошибка, вещественные значения в указании границ

6) type mass = array[1..100] of char; var a7: array[0..99] of mass; — верно

var a1: array[-1000..50] of integer; только одно правильное нашла.

const m1 = 20; m2 = m1*100;

var a6: array[m1..m2] of -200..200; вместо -200..200 надо было тип указать.

var a2: array[200..-111] of real; сначала отрицательное число.

const n: byte = 0;

var a5: array[-1000..n] of word; не надо указывать тип константы (byte).

var a9: array[0.0..20000.0] of byte; вот насчет этого не уверена, но мне кажется, что тут не надо дробную часть, потому что byte — целый тип.

type mass = array[1..100] of char; пишут не type, a var.

var a7: array[0..99] of mass; насколько мне известно, типа mass не существует.

История языка Паскаль. Способы описания языка программирования. Введение в язык программирования Паскаль

История языка Паскаль. Способы описания языка программирования. Введение в язык программирования Паскаль.. 1

1. История языка Паскаль.. 1

2. Понятия синтаксиса, семантики и прагматики языка программирования.. 3

3. Алфавит языка Паскаль и основные лексемы. 5

Алфавит языка Паскаль.. 5

Правила построения основных видов лексем. 6

4. Структура программы и ее синтаксис.. 10

Синтаксические диаграммы Вирта и структура программы. 10

Раздел описаний.. 12

Раздел описания меток. 13

Раздел описания констант.. 14

Раздел описания переменных. 15

5. Литература.. 16

История языка Паскаль. Способы описания языка программирования. Введение в язык программирования Паскаль

1. История языка Паскаль

Паскаль – язык программирования, созданный в 70-х годах швейцарским профессором Николаусом Виртом специально для обучения программированию. Им же был написан ряд книг [1], [2], [3], в которых подробно рассматриваются возможности этого языка и его применение для решения многих «классических» в области программирования задач. Название языку было дано в честь выдающегося французского математика Блеза Паскаля.

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

Существует три стандарта языка:

1. Нерасширенный Паскаль (Unextended Pascal) был разработан в 1983 году и практически полностью совпадает с описанием языка по Вирту.

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

Читайте также:  Где на правах отметка о зрении

3. Объектный Паскаль (Object Pascal) принят в 1993 г. Он поддерживает классы, обладающие свойствами и методами, наследование классов, переопределение методов у потомков (полиморфизм) и другие атрибуты объектно-ориентированного программирования. Начиная со среды разработки Delphi 7.0, в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal.

1. Для операционной системы MS-DOS самое большое распространение приобрела реализация языка Паскаль фирмы Borland под названием Turbo Pascal (первая версия языка появилась в 1983 году).

2. Borland Pascal включает в себя более дешёвый и менее мощный Turbo Pascal и, кроме того позволяет создавать программы как под реальный, так и под защищённый 16-битный режим DOS, а так же программы для Windows. В нем открыты исходные тексты системных библиотек и функций времени выполнения.

3. Delphi – интегрированная среда разработки ПО для Microsoft Windows на языке Delphi, созданная первоначально фирмой Borland и на данный момент принадлежащая и разрабатываемая Embarcadero Technologies.

4. Free Pascal – свободно распространяемый компилятор языка программирования Pascal с ориентацией на Object Pascal.

5. Lazarus – свободно распространяемая интегрированная Delphi-подобная среда разработки программного обеспечения для компилятора Free Pascal, предоставляющая возможности кроссплатформенной разработки приложений.

6. PascalABC – система, представляющая собой интерпретатор языка программирования Паскаль с интегрированной оболочкой. Создавалась как учебная среда программирования. Pascal ABC и всех версий является свободно распространяемым программным обеспечением.

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

2. Понятия синтаксиса, семантики и прагматики языка программирования

Разработка программы состоит из следующих этапов:

· Создание или редактирование текста программы.

· Компиляция – перевод программы с языка высокого уровня в машинно-ориентированные коды.

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

· Тестирование и отладка.

Компиляцию программы выполняет особая программа, называемая компилятором.

· Генерация промежуточного кода.

· Генерация результирующего машинного кода.

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

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

Семантика языка программирования – это система правил определения поведения отдельных языковых конструкций. Семантика определяет смысловое значение предложений языка. Не все семантические ошибки могут быть выявлены компилятором. Например, запись выражения в виде a/b*c не вызовет ошибки, хотя и является неправильной, исходя из приоритета выполнения операций. В ходе семантического анализа компилятор проверяет соответствие типов и допустимость операндов в операторах. Так попытка изменить значение константы, которая по определению является неизменяемым значением, приведет к семантической ошибке. Использование типа данных, недопустимого в данной конструкции, или несоответствие типов формальных и фактических параметров процедуры или функции, так же является семантической ошибкой.

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

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

3. Алфавит языка Паскаль и основные лексемы

Алфавит языка Паскаль

· Латинские буквы прописные и строчные: AZ, az.

· Символы национальных алфавитов, например, русского.

Составной оператор

Любая последовательность операторов, заключенная в фигурные скобки, является составным оператором. Составной оператор нет необходимости заканчивать символом ‘;’, поскольку ограничителем составного оператора служит сама закрывающая фигурная скобка. Обычно составной оператор используется в тех местах, где нужно написать несколько операторов, а можно использовать только один оператор. ^

Оператор, входящий в состав составного оператора. Операторы будут выполняться последовательно, один за другим в соответствии с их расположением внутри составного оператора

if(x + y := To(DownTo) Do Переменная должна быть целого или перечислимого типа. При исполнении цикла переменная цикла изменяется от начального до конечного значения с шагом 1. Если стоитto, то переменная увеличивается, еслиdownto– уменьшается. Условия выполнения цикла проверяются перед выполнением блока операторов. Если условие не выполнено, цикл For не выполняется. Следующая программа подсчитывает сумму чисел от 1 до введенного: Program Summa; Var I, N, S: Integer; Begin Write(‘N = ‘); Readln(N); S:=0; For I:=1 To N Do S:=S + I; Writeln (‘Cумма = ‘, S) End.^ Условный цикл с проверкой условия перед исполнением блока операторов.While Do Блок операторов будет исполняться, пока условие имеет значение true. Необходимо, чтобы значение условия имело возможность изменения при исполнении блока операторов, иначе исполнение цикла не закончится никогда (в DOS это приведет к зависанию компыютера). Если условие зарание ложно, блок операторов не исполнится ни разу.Найдем машинное «эпсилон» для переменной типа Real: Program Epsilondetect; Var Epsilon: Real; Begin Epsilon:=1; While Epsilon + 1 > 1 Do Epsilon: = Epsilon/2; Writeln (‘Эпсилон = ‘, Epsilon); End.^ Условный цикл с проверкой после выполнения блока операторов.Repeat Until Блок операторов независимо от значения условия будет выполнен хотябы один раз. Цикл заканчивается, если после очередного исполнения блока операторов условие имеет значение true.Пример:программа запрашивает ввод одного символа и выводит его ASCII — код, пока не будет введен пустой символ: Program Code; Const Cr = 13; Var Ch:Char; Begin Repeat Readln (Ch); Writeln (Ch,’ = ‘, Ord (Ch)); Until Ord (Ch) = Cr End.

30. Основные элементы языка Pascal

Алфавит и словарь языка Pascal

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

Символы в Pascal

В качестве букв в Pascal используются прописные и строчные буквы латинского алфавита:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

a b c d e f g h i j k l m n o p q r s t u v w x y z

и знак подчеркивания (_);

в качестве десятичных цифр: 0 1 2 3 4 5 6 7 8 9.

Шестнадцатеричные цифры включают десятичные цифры и буквы от A до F (или от a до f).

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

/ Дробная черта [ ] Квадратные скобки

> Больше Фигурные скобки

Не равно >= Больше или равно

.. Диапазон значений (. .) Альтернатива [ ]

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

ПРИМЕЧАНИЕ. Русские буквы в программе должны заключаться в апострофы, например ‘Пример текста на русском языке’.

W — прописная латинская буква; R — прописная латинская буква; w — строчная латинская буква; 9 — цифра; $ — специальный символ; — составной символ.

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

Зарезервированные слова являются составной частью языка, имеют фиксированное начертание и раз и навсегда определенный смысл. Они не могут изменяться программистом. Зарезервированные слова версии языка Pascal для персональных ЭВМ приведены ниже.

Зарезервированные слова версии языка Pascal

остаток от деления

Сдвиг разрядов влево

Сдвиг разрядов вправо

ВНИМАНИЕ. Зарезервированные слова нельзя использовать в качестве имен, вводимых программистом для обозначения величин, и т. д.

Группа слов, имеющая определенный смысл, называется словосочетанием. В языке программирования словосочетание, состоящее из слов и символов и задающее правило вычисления некоторого значения, называется выражением. Минимальная конструкция языка, представляющая собой законченную мысль, есть предложение. Если предложение языка программирования задает полное описание некоторого действия, которое необходимо выполнить, оно называется оператором. Предложение, описывающее структуру и организацию данных — объектов языка, над которыми производятся различные действия, называется описанием.

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

Читайте также:  Кто из звезд делал коррекцию зрения

Формальные методы описания синтаксических конструкций языка программирования

Для описания синтаксических конструкций языка программирования в настоящее время наиболее распространены два формальных метода. Первый использует форму записи, предложенную Джоном Бэкусом и Питером Науром, когда они описывали синтаксис языка Алгол-60. С тех пор эта форма называется Backus Naur Form, или сокращенно BNF.

Другой формальный метод, наглядно представляющий синтаксические конструкции языка в графическом виде, использует синтаксические диаграммы. Популяризировал синтаксические диаграммы создатель языка Pascal Н. Вирт, и поэтому их часто называют синтаксическими диаграммами Вирта.

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

Чтобы получить правильные грамматические конструкции языка, используя синтаксические диаграммы, нужно идти по путям, указанным стрелками, от одного четырехугольника к другому до тех пор, пока не встретится выход. Там, где предусмотрено более одного направления движения, можно выбирать любое. Если по пути встречается ссылка к другой синтаксической диаграмме, то следует войти в эту новую диаграмму, пройти по ней, выйти из нее и возвратиться на старое место в первоначальной диаграмме. Если по пути движения встречается точка, то это означает, что данный путь характерен только для Turbo Pascal и является расширением стандарта языка.

Варианты представления синтаксических конструкций языка программирования методом BNF или методом синтаксических диаграмм являются тождественными.

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

Для обозначения заранее определенных разработчиками языка типов данных, констант, процедур и функций служат стандартные идентификаторы, например: integer, Sin, Cos, Ln, Sqr, Sqrt, Read, Readln, Write, Writeln. В этом примере стандартный идентификатор Sin вызывает функцию, вычисляющую синус заданного угла, Read, Readln вызывают процедуру, организующую ввод данных, Write, Writeln вызывают процедуру, организующую вывод данных. Любой из стандартных идентификаторов, в отличие от зарезервированных слов, можно переопределить, но это чаще всего приводит к ошибкам. Поэтому на практике стандартные идентификаторы лучше использовать без каких-либо изменений.

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

Компилятор Turbo Pascal строго следит за этим, и если это требование не соблюдается, то компиляция прерывается, а на экран выводится сообщение об ошибке «Error 4: Duplicate identifier» и указывается дублирующийся идентификатор.

Синтаксическая диаграмма понятия «идентификатор» выглядит следующим образом:

ВНИМАНИЕ. В идентификатор не могут входить пробелы и специальные символы. Обратите внимание, что буквы русского алфавита не могут входить в идентификатор Turbo Pascal.

При написании программ следует соблюдать общие правила написания идентификаторов.

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

2. Идентификатор может состоять из букв, цифр и знаков подчеркивания (пробелы, точки и другие специальные символы недопустимы).

3. Между двумя идентификаторами должен быть по крайней мере один пробел.

4. Максимальная длина идентификатора составляет 127 символов, но значимыми являются только первые 63 символа.

5. При записи идентификаторов можно использовать как прописные, так и строчные буквы. Компилятор не делает различий между ними, хотя они и имеют различные ASCII-коды. На практике рекомендуется применять эту особенность для более простого чтения и понимания значений идентификаторов. Так, вместо идентификатора nomerotdela eo?oa iaienaou NomerOtdela, auaaeea i?iieniuie aoeaaie ea?ao? ec aaoo смысловых частей.

Правильно выбранные идентификаторы значительно облегчают чтение и понимание программы, а также уменьшают вероятность появления ошибок при модификации программ. Например, значение даты удобнее обозначить идентификатором Data, чем просто буквой D или любым другим символом.

2graph — ошибка, идентификатор начинается с цифры

Nomer.Doma — ошибка, идентификатор содержит точку

Сумма — ошибка, идентификатор содержит буквы русского алфавита.

Константы и переменные

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

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

Синтаксическая диаграмма определения константы выглядит следующим образом:

Все константы должны быть описаны в специальном разделе, который начинается зарезервированным словом const (constant — константа).

MyName = ‘Петя Иванов’;

MyBirthDay = ’27 августа 1950 г’;

Center = ( Max — Min) / 2;

В Pascal имеется ряд констант, к значениям которых можно обращаться без предварительного определения. Их называют зарезервированными константами. Наиболее употребительные из них приведены в табл. 2.1.

Таблица. 2.1. Зарезервированные константы

Тестовые задания для самоконтроля

1. Разработчиком языка Паскаль является:
б) Никлаус Вирт

2. Что из нижеперечисленного не входит в алфавит языка Паскаль?
в) Русские строчные и прописные буквы

3. Какая последовательность символов не может служить именем в языке Паскаль?
г) 2d

4. Вещественные числа имеют тип данных:
а) real

5. В программе на языке Паскаль обязательно должен быть:
в) программный блок

6. Какого раздела не существует в программе, написанной на языке Паскаль?
б) примечаний

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

8. Разделителями между операторами служит:
б) точка с запятой

9. Описать переменную – это значит указать ее:
б) имя и тип

10. В данном фрагменте программы:

Ошибкой является:
б) не определенное имя переменной

11. Какая клавиша нажимается после набора последнего данного в операторе read?
а) Enter

12. При присваивании изменяется:
в) значение переменной

13. Для вывода результатов в Паскале используется оператор:
в) write

14. Для вычисления квадратного корня из х используется функция:
в) sqrt (x)

15. Для генерации случайного целого числа из интервала [10,20) необходимо использовать выражение:
в) random (10) + 10

16. В каком из условных операторов допущена ошибка?
б) if a

Правильные идентификаторы с точки зрения компилятора языка pascal

Содержание раздела PASCAL

Введение. Общая характеристика языка. 1 Основы языка PASCAL 2. Структура программы 2.1 Раздел объявлений и соглашений, основнй блок 2.2 Типы переменных 3 Операторы языка PASCAL 4 Простые и структурные типы данных 5 Процедуры и функции 6 Динамическая память 7 Модули 8 Ключи и директивы компилятора 9 Файлы 10 Другие возможности Турбо-Паскаля 1 0 .1 Оверлей 10. 2 Прямое обращение к памяти и портам 11 Турбо-Паскаль 6.0 и структурное программирование 12 ТурбоПаскаль и ООП 13 Объектно-ориентированная библиотека Turbo Vision 14 Встроенная справочная система

Основы языка Pascal

1. Лингвистическая концепция языка Паскаль

Целью работы И. Вирта было создание языка, который

строился бы на небольшом количестве базовых понятий,

имел бы простой синтаксис,

допускал бы перевод программ в машинный код простым компилятором.

По природе своей компьютер может выполнять только простейшие операции, которые можно вводить одну за другой в его память прямо в машинных кодах. Изнурительная монотонность такой работы привела когда-то первых программистов к естественному решению — созданию Ассемблеров, т.е. средств, упрощающих подготовку машинных кодов программ пользователя за счет написания их в некоторых мнемонических обозначениях с последующим автоматическим переводом. Дальнейшее развитие этих идей привело к созданию языков программирования высокого уровня, в которых длинные и сложные, но часто применяемые последовательности машинных операций были заменены каждая одним-единственным обозначающими ее словом — оператором. В области малых ЭВМ среди языков программирования высокого уровня следует в первую очередь назвать БЕЙСИК. Программы, написанные на этом языке, к сожалению, часто содержат запутанные последовательности операторов, называемые иногда на жаргоне программистов блюдо спагетти. Лингвистическая концепция Паскаля отрицает методы программирования, которые могут привести к подобным эффектам. В mei, напротив, пропагандируется системный подход, выражающийся, в частности, в расчленении крупных проблем на меньшие по сложности и размеру задачи, легче поддающиеся решению.

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

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

Читайте также:  Профилактика для зрения в домашних условиях

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

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

Язык программирования ТП 7.0, как и любой другой, имеет свой алфавит. Как правило, алфавитом языка программирования называют набор символов, разрешенный к использованию и воспринимаемый компилятором, с помощью которого могут быть образованы величины, выражения и операторы данного языка. Алфавит языка ТП 7.0 включает в себя все символы, представленные в кодировочной таблице, которая в настоящий момент загружена в оперативную память или хранится в ПЗУ Вашего компьютера. Каждому символу алфавита соответствует индивидуальный числовой код от 0 до 255.

Примечание: Символы с кодами от 0 до 127 представляют собой так называемую основную таблицу кодов ASCII. Их состав и порядок определены американским стандартом на коды обмена информацией. Часть кодировочной таблицы с кодами от 0 до 127, т.е. «Основная таблица кодов ASCII, идентична на всех IBM-совместимых компьютерах.

Алфавит языка ТП 7.0 составляют:

1. Символы, используемые для составления идентификаторов:

латинские строчные и прописные буквы,

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

символ подчеркивания (ASCII, код 95).

Символ пробела (ASCII, код 32). Как уже отмечалось, символ пробела является разделителем в языке ТП 7.0. Основное назначение этого символа — разделение ключевых слов и имен.

Управляющие символы (имеют ASCII-коды от 0 до 31). Эти символы могут применяться при описании строчных и символьных констант. Управляющие символы с ASCII-кодом 9 (табуляция), а также 10 и 13 (замыкающее строку) используются в качестве разделителей при написании программ на ТП 7.0.

В любом месте программы, где можно расположить один символ-разделитель, их можно разместить сколько угодно, т.е. для компилятора следующие записи будут эквивалентны:
A:=B+C-D;Write(A);
А := В + С — D; Write (A);
A:=
В+С
— D ; Write (А);

3. Специальные символы — символы, выполняющие определенные функции при построении различных конструкций языка:
+ — * / [ ] ( ) . , ‘ : ; ^ @ # $

4. Составные символы — группа символов, которые воспринимаются компилятором как единое целое:
:= (* *) (. .) ..

5.»Неиспользуемые» символы.
Символы так называемой расширенной таблицы ASCII, т.е. символы, имеющие коды от 128 до 255 (в этой области находятся символы алфавита русского языка и символы псевдографики на IBM-совместимых компьютерах), а также некоторые символы из основной таблицы ASCII (например: (&), (!), (%), (-), («) и некоторые другие) не входят в алфавит языка, т.е. эти символы не используются в идентификаторах. Тем не менее, их можно использовать в тексте комментариев, а также в виде значений констант строк или констант символов.

6. Зарезервированные слова.
ТП 7.0, как и его предшественники, включает в себя так называемые ключевые или зарезервированные слова (BEGIN, END, PROGRAM). В качестве имен идентификаторов в программе зарезервированные слова использоваться не могут. Если Вы будете использовать зарезервированные слова не по назначению, это вызовет ошибку при попытке откомпилировать программу.

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

В Паскале лексемы условно делятся на несколько классов:

числа без знака;

специальные знаки (слова-символы и специальные знаки);

символьные константы (строки),

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

В первом примере записаны три лексемы “12”, “-“, “А”, между которыми нет разделителей. Во втором примере между первой и второй лексемами, а также между второй и третьей использован разделитель пробел.

А:=1;
Между лексемами “А” и “:=” в качестве разделителя использован комментарий.

А:=1
Последний пример ошибочен, так как разделитель в виде комментария разрывает лексему «:=”.

Идентификатор является именем, которое использует программист при обращении к какому-то значению. В качестве имен не могут быть использованы зарезервированные слова (слова-символы, например слово “PROGRAM”). В стандартном Паскале идентификаторы используются для обозначения переменных, констант, типов, процедур и функций. Имена могут быть длинными, но при трансляции рассматривается ограниченное число символов (по стандарту Паскаля — первые восемь символов, тоесть идентификаторы “dlinniy_identifikator1” и “dlinniy_identifikator2” будут восприняты компилятором как одно и тоже слово). В Турбо-Паскале идентификатор кроме символов букв и цифр может содержать символ “_” (подчеркивание). Подчеркивание полезно, когда имя состоит из нескольких осмысленных слов. В общем случае следом за зарезервированным словом PROGRAM в программе стоит пробел, разделяющий в Паскале слова, и далее — имя, данное программе. Это имя представляет собой пример идентификатора. Идентификатор -имя, свободно избираемое программистом для элементов программы (процедур, функций, констант, переменных и типов данных).

При обозначении какого-либо элемента программы с помощью идентификатора Вы должны руководствоваться следующими постулатами:

Идентификатор должен начинаться буквой или символом подчеркивания “_”.

ТП 7.0 не различает прописные и строчные буквы. Поэтому можно записать WriteLN, Writeln или даже wRITeLn, не опасаясь быть непонятым компилятором. Для него все три записи эквивалентны.

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

Пробел в ТП 7.0 является разделителем и не может стоять внутри идентификатора. Для создания идентификаторов, состоящих из двух слов, можно воспользоваться большими буквами (например, ReadText) или символом подчеркивания (Read_Text), но не пробелом (bRead Text – два отдельных слова).

Применение других символов (букв неанглийского алфавита, знаков препинания, псевдографических символов и т.п.) в идентификаторах не допускается.

Зарезервированные слова (такие как BEGIN, END или PROGRAM) в качестве идентификаторов не используются.

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

Кроме того, при написании программы рекомендуется следовать ряду правил хорошего тона, которые упрощают редактирование программы и повышают ее наглядность:

Изобретая идентификаторы, старайтесь делать их «осмысленными», не экономьте на именах — имя ReadTest всегда лучше, чем RT. Не бойтесь потратить время на написание длинных идентификаторов. Встроенный в ИПО (Интегрированная Пользовательская Оболочка) редактор предоставляет возможность копировать и переносить фрагменты текста.

Все структуры языка имеют англоязычные идентификаторы. Для своих элементов Вы можете изобрести русскоязычные идентификаторы (записанные латинскими литерами), например PROGRAM Privetstvie. Но для удобства, создавая идентификаторы, выполняйте не транслитерацию русских слов в английские, а перевод на английский язык (приветствие — welcome).

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

Идентификатор в Паскале

Идентификаторы — имена объектов и конструкций программы (меток, констант, типов, переменных, типов, процедур, функций, объектов, модулей, программ, полей в записях и т.д.).

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

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

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

Имена безразличны к регистру клавиатуры.

Примеры правильных имен: Примеры не правильных имен:
A Л — русская буква;
R21 21R — начинается с цифры;
CO COS — имя функции;
X[10] X — фигурная скобка;
TOR TO — служебное слово
X_1 X 1 — пробел;
N25 #25 — запрещенный символ;
Case_1 Case — оператор.

Вернуться в оглавление:Алгоритмические языки

Источники:
  • http://www.programmersforum.ru/showthread.php?t=15702
  • http://pascal-cod.ru/fpc/yazyk-i-sredstva-fpc/identifikatory/
  • http://www.maksakov-sa.ru/Pascal/IdenPasc/index.html
  • http://klassgdz.ru/questions/610679
  • http://pandia.ru/text/78/429/80575.php
  • http://studfiles.net/preview/2180025/page:23/
  • http://bosova-gdz.ru/210-testovye-zadaniya-dlya-samokontrolya.html
  • http://solidstate.karelia.ru/p/tutorial/zonna/5_pascal_1.htm
  • http://life-prog.ru/view_algoritmleng.php?id=61