Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
конспект_лекций.doc
Скачиваний:
18
Добавлен:
26.04.2019
Размер:
1.11 Mб
Скачать

6.2. Явные константы

Опр. Явной константой называется информационный объект, содержимое которого совпадает с названием.

Тип констант определяется содержимым константы, т.е. ее названием, т.е. ее формой записи.

Примеры числовых констант: 23.078 (тип real) 67 (тип byte)

2345 (тип word) -309 (тип integer) 35.78E3 (тип real, число 35780)

-67.04D-4 (тип double, число –0.006704).

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

6.3. Оператор описания var

Операторы VAR относятся к классу команд-описаний, т.е. изначально предназначены для общения именно с программой-транслятором. Назначение этих операторов – сообщить переводчику: как следует понимать имена собственные (идентификаторы), которые придумывает сам программист.

Синтаксис оператора VAR:

Var и1, и2, и3, . . . . ,Иn: Итипа;

Примеры:

Var c, Aa, Wes: real;

Var i, Nomer, ii, iii: integer;

Пояснение структуры оператора:

Varключевое слово оператора, которое необходимо для распознавания данного типа операторов. Var - зарезервированное слово языка Pascal. За ключевым словом обязательно следует символ-разделитель «пробел».

И1, И2, И3, . . . . ,Иn – перечень идентификаторов, т.е. имен собственных придуманных программистом для вводимых им информационных объектов. Символом-разделителем в перечне является запятая. Эстетика оформления требует чтобы после каждого знака препинания ставился пробел. Завершает перечень описываемых переменных обязательный символ-разделитель «двоеточие».

Итипа – описание типа, т.е. побитной структуры перечисленных информационных объектов. Тип может задаваться либо одним именем (зарезервированное или ранее описанное слово-идентификатор), либо целым стандартизированным предложением-описанием.

Все операторы (предложения-команды) языка Pascal завершаются символом-разделителем «точка с запятой». Символ «;» следует воспринимать, как знак восклицания «!», которым завершаются все команды, т.е. предложения естественного языка, написанные в повелительном наклонении.

Семантика (варианты звуковой транскрипции) операторов из приведенных примеров (передача смысла команд для транслятора, но лексикой естественного языка):

- Выделить а оперативной памяти место для размещения трех информационных объектов (ИО, т.е. переменных) с именами c, Aa, Wes, размер и структура которых имеют стандартное имя real!

- Разместить в оперативной памяти ИО i, Nomer, ii, iii стандартного типа integer!

Работа транслятора: каждому идентификатору соотнесен адрес фрагмента памяти известного размера.

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

Пример возможных комментариев:

{ c-длина гипотенузы }

(* Aa-площадь квадратной ячейки сетки *)

Все языки программирования высокого уровня характеризуются «избыточностью синтаксиса», т.е. необходимостью написания многих «лишних» слов и различных символов-разделителей. Это объясняется тем, что в таких текстах человеку-программисту проще визуально обнаруживать свои ошибки. Для передачи транслятору только одной семантики, вполне хватило бы сокращенных структур команд, которые используют только ключевые слова и разделители-пробелы. Например, вышеописанные операторы могли бы выглядеть так:

Var c Aa Wes real i Nomer ii iii integer

Что очень тяжело для визуального восприятия человеком!

6.4. Оператор присвоения :=

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

Примеры выражений:

a + b

a * (b - c) + a

(a + sin(a)) / ((b - cos( a + 2.4)) * 7)

Аналог понятия «выражение на ЯП» – алгебраическое выражение.

Свойства выражений:

1. Выражение - всегда фрагмент (только часть) предложения.

2. Смыслом выражения является результат выполнения указанных операций над указанными объектами:

2.1. результатом всегда только один информационный объект,

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

2.3. результат не имеет уникального имени, т.е. размещается где-то в оперативной памяти по адресу известному процессору, но недоступному программисту.

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

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

Команда присвоения – типичный исполнимый оператор, т.е. предложение-команда предназначенная именно для процессора и переводимая с ЯП на базовый язык процессора «дословно».

Работа транслятора:

  • Сообразно указанному в описании типу переменных подбираются соответствующие базовые операции обработки,

  • При необходимости, разнотипные переменные приводятся (преобразуются) к общему типу,

  • Сложные (многооперационные) выражения разделяются на последовательность стандартных бинарных операций.

Синтаксис оператора присвоения:

Ирез := выражение ;

Идентификатор Ключевое Конец

результата слово оператора

Пример:

m := v * Ro ;

Звуковая транскрипция семантики (передача естественным языком смысла команды, который понимает процессор): перемножить содержимое информационных объектов с именами v и Ro и поместить результат в ИО с именем m.

Прагматика:

{ вычисляется масса тела по заданной плотности -Ro и объему-v }

Типичные синтаксические ошибки, допускаемые начинающими программистами в операторах присвоения:

  • использование неописанных переменных,

  • пропуск символов операций (обычно знака умножения),

  • несовпадение количества открывающих и закрывающих скобок,

  • несоответствие типа операции типу объекта обработки (например, вещественное число нельзя целочисленно делить),

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

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

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

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

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

Единственное, чем может ЭВМ помочь программисту в таких ситуациях сообщить:

  • в каком операторе произошла ошибка,

  • какая базовая операция обработки не может быть выполнена.

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

  • выбранная математическая модель просто не соответствует реальному объекту, поэтому физически разумные, «нормальные» числовые значения исходных параметров порождают катастрофические результаты в вычислениях,

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

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

  • технические ошибки при наборе текста программ.