Базовые типы числовых информационных объектов
Базовый информационный объект числового типа – ячейка памяти, бинарный код которой интерпретируется (дешифруется) как число.
В языке Pascal используются два класса (две разновидности) базовых числовых объектов: вещественные числа и целочисленные числа. Каждый класс содержит несколько подклассов – типов.
Понятие вещественного числа, практически полностью, соответствует понятию рационального числа в математике. Вещественные числа используются во всех инженерных расчетах.
Целочисленные числа (аналог натуральных и целых чисел в математике) используются, в основном, для количественного описания процессов и объектов, которые принципиально не могут характеризоваться дробными значениями. Например: количество студентов в группе, количество символов в строке текста, количество повторений какого-то действия.
Базовые целочисленные типы информационных объектов (целые числа) | ||
Имя типа | Размер ячейки | Диапазон описываемых числовых значений |
byte | от 0 до 255 | |
word | от 0 до 65535 | |
integer | от -32768 до 32767 | |
longInt | от -109 до 109 |
Базовыми операциями обработки числовых информационных объектов являются: четыре арифметические операции (сложение, вычитание, умножение и деление) и несколько специальных функций.
Для каждого типа чисел эти операции реализуются разными фрагментами электронной схемы процессора, т.е. различными базовыми операциями процессора, но на языке Pascal, однотипные по смыслу операции обозначаются одним и тем же символом.
Для целочисленных ИО:
Операция | Символ |
сложение | + |
вычитание | - |
умножение | * |
деление с округлением | div |
Остаток от деления | mod |
Если операция выполняется над числами одного типа, то результат будет числом того же типа, если числа принадлежат разным типам, то перед выполнением операции происходит их преобразование к одному типу – старшему в иерархии типов.
Иерархия (расположение по возрастанию старшинства, старший тип включает младшие) базовых числовых ИО языка Pascal:
byte < word < integer < LongInt < real < double.
Бинарное кодирование вещественных чисел основано на возможности представления любого действительного числа в форме мантиссы и порядка a = m × 10p
где m – мантисса (действительное число, модуль которого больше или равен 0.1, но меньше 1), p – порядок числа (целое число).
Примеры: -23.017 = -0.23017×102 = -2.30170000000Е 0001
мантисса порядок стандартная запись в формате Е
0.00053044 = 0.53044×10-3 = -5.30440000000Е-0004
Базовые вещественные типы информационных объектов (действительные числа) | |||
Имя типа | Размер ячейки | диапазон порядка числа | количество цифр мантиссы |
real | от -39 до 38 | ||
double | от -324 до 308 |
Базовые операции над вещественными ИО:
Операция | Символ |
сложение | + |
вычитание | - |
умножение | * |
деление | / |
стандартные арифметические функции | Sin, cos, ln, Sqr, Sqrt, ArgTan, Exp, Abs и т.п. |
Явные константы
Опр. Явной константой называется информационный объект, содержимое которого совпадает с названием.
Тип констант определяется содержимым константы, т.е. ее названием, т.е. ее формой записи.
Примеры числовых констант: 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. результат не имеет уникального имени, т.е. размещается где-то в оперативной памяти по адресу известному процессору, но недоступному программисту.
3. В выражениях допускается использование систем вложенных круглых скобок, уточняющих реальную очередность выполнения операций, которые записаны последовательным текстом.
Опр. Оператором присвоения называется команда процессору, заставляющая его вычислить указанное выражение и поместить результат в указанное место оперативной памяти.
Команда присвоения – типичный исполнимый оператор, т.е. предложение-команда предназначенная именно для процессора и переводимая с ЯП на базовый язык процессора «дословно».
Работа транслятора:
· Сообразно указанному в описании типу переменных подбираются соответствующие базовые операции обработки,
· При необходимости, разнотипные переменные приводятся (преобразуются) к общему типу,
· Сложные (многооперационные) выражения разделяются на последовательность стандартных бинарных операций.
Синтаксис оператора присвоения:
Ирез := выражение ;
Идентификатор Ключевое Конец
результата слово оператора
Пример:
m := v * Ro ;
Звуковая транскрипция семантики (передача естественным языком смысла команды, который понимает процессор): перемножить содержимое информационных объектов с именами vиRo и поместить результат в ИО с именем m.
Прагматика:
{ вычисляется масса тела по заданной плотности -Ro и объему-v }
Типичные синтаксические ошибки, допускаемые начинающими программистами в операторах присвоения:
- использование неописанных переменных,
- пропуск символов операций (обычно знака умножения),
- несовпадение количества открывающих и закрывающих скобок,
- несоответствие типа операции типу объекта обработки (например, вещественное число нельзя целочисленно делить),
- несоответствие типа результата выражения и типа переменной, куда его следует поместить (например, вещественные числа, даже если они не имеют дробной части, нельзя записать в переменные типа integer без специальной команды-округления).
Семантически ошибки, т.е. невозможность выполнения процессором указанных действий в операторах присвоения, проявляются только на этапе выполнения программы: при реальном выполнении указанных в операторе действий над конкретными содержимым указанных объектов обработки.
Причина типичных семантических ошибок (у начинающих программистов): использование переменных, значения которых к моменту выполнения оператора еще не определены.
Поскольку, все ИО обрабатываемые ЭВМ имеют конечные размеры (занимают стандартные фрагменты памяти), а стандартные операции по их обработке могут порождать информацию, которая не помещается в стандартный фрагмент памяти. Например, результат перемножения двух целых чисел может превосходить значение 32000, что фатально для процессора, т.к. не может быть размещено в отведенном для результата фрагменте памяти.
Опр. ошибками времени исполнения называются ошибки программы, проявляющиеся непосредственно и только при выполнении программы.
Единственное, чем может ЭВМ помочь программисту в таких ситуациях сообщить:
· в каком операторе произошла ошибка,
· какая базовая операция обработки не может быть выполнена.
Ошибки времени исполнения - самые сложные для исправления, т.к. причины их возникновения весьма разнообразны:
- выбранная математическая модель просто не соответствует реальному объекту, поэтому физически разумные, «нормальные» числовые значения исходных параметров порождают катастрофические результаты в вычислениях,
- используется плохой алгоритм (численный метод) решения, математически верно сформулированной задачи,
- технические ошибки в переводе математических формул на язык программирования,
- технические ошибки при наборе текста программ.
Дата добавления: 2021-12-14; просмотров: 419;