Обучающие курсы:

Обучение профессии "Разработчик C#" + стажировка в Mail.ru
Обучение профессии "Разработчик Python" + трудоустройство
Обучение профессии "Веб-разработчик" + стажировка в Mail.ru


Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





Переменные

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

Переменные описываются в разделе описания переменных, имеющем вид
var <перечень через ";" описаний переменных>

В описании переменной указывается ее имя и тип. Несколько однотипных переменных могут быть объединены (перечислены через ", ") в одном описании.

Примеры:
var radius, Х0, Y0: integer; Length, Area: real;

 

Типы данных

Тип данного - понятие, определяющее такие атрибуты данного, как

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

Тип данного как объект имеет имя и определяет класс данных, имеющих общие атрибуты.

Он описывается в разделе описания типов, имеющем вид
type <перечень через ";" описаний объекта-типа>

Описание объекта-типа состоит из имени типа и описания типа. Несколько объектов с одним и тем же описанием типа могут быть объединены (перечислены через ", ") в одном описании объекта-типа.

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

Описание типа представляет собой либо имя ранее определенного или предопределенного (стандартного) типа, либо некоторый "конструктор" типа.

Примеры:

type Т1 = 1 .. 100; Т2 = array[1..200, 1..100] of real; ТЗ = real;
var А: Т2; n: Tl; s: array[ Tl] of ТЗ;

Типы данных делятся на две группы - скалярные и структурированные типы данных.

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

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

Некоторые из скалярных типов являются порядковыми.

Порядковый (упорядоченный) тип — такой скалярный тип, для любого из значений которого (кроме крайних значений диапазона этого типа) определены предыдущее и следующее значения.
В языке Турбо Паскаль все скалярные типы, кроме вещественного, являются порядковыми и для значений этих типов определены стандартные функции Pred(x) и Succ(x), значениями которых являются соответственно предыдущее и следующее значения для заданного значения аргумента х.

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

Структурированный (агрегатный, составной) тип данных — тип, характеристиками которого являются: множественность элементов, структура, способ доступа к элементам и операции над данными этого типа. Описание структурированного типа задается некоторым "конструктором" типа.

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

Примеры:

type Tl, Т2 = 200 .. 300; ТЗ = real; Т4 = real;
Тождественны Т1 и Т2, ТЗ и Т4.

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

 

Предопределенные скалярные типы

1. Целочисленные типы данных (скалярные, упорядоченные) представлены типами byte, shortint, word, integer и longint. Каждый из них характеризуется именем, размером памяти, требуемой для хранения этого типа, и диапазоном допустимых значений. Эти сведения приводятся ниже:

 

Имя типа

Требуемая память

Диапазон значений

byte

1 байт

0..255

shortint

1 байт

-128 ..127

integer

2 байта

-32768 .. 32767

word

2 байта

0 .. 65535

longint

4 байта

-2147483648 .. 2147483647

 

Наличие нескольких целочисленных типов позволяет выбирать подходящий тип для каждого из данных программы. Сделать такой выбор важно не только для экономного использования оперативной памяти, но, главным образом, для адекватного представления данных задачи. Выбор подходящего типа является одним из стимулов выполнения тщательного анализа задачи, создания ее правильной и надежной программной реализации.
           
Внешнее представление значений целочисленных типов: последовательность цифр со знаком или без знака, например: 33, -112, +1000.
Внутреннее представление значений типов byte и word: двоичный код длиной 1 и 2 байта соответственно.

Внутреннее представление значений типов shortint, integer и longint: двоичный код длиной 1, 2 и 4 байта. Самый левый бит представляет знак числа (0 - "+", 1 - "-"). Остальная часть кода для неотрицательного числа - его двоичный код а для отрицательного числа - его дополнительный код (дополнение получается по формуле: maxtype + 1- abs(,Y), где maxtype - максимальное значение для данного целочисленного типа, а X - рассматриваемое число.

 

Примеры:

Для типа byte код числа 1 = 0000 0001, код числа 255 = 11111111.

Для типа shortint код числа 1 = 0000 0001, код числа '-1' =11111111, код числа 127 = 0111 1111, код числа'-128'= 1000 0000.
Для типа integer код числа '-1' = 1111 1111 1111 1111,
код числа 127 = 0000 0000 0111 1111, код числа 32767 = 0111 1111 1111 1111, а код числа '—32768' = 1000 0000 0000 0000.

 

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

Для всех этих типов допустимы два внешних представления значений:
- с фиксированной точкой, например 2.5, -37.0,
- с плавающей точкой, например 2.5Е 12, -37.0Е+10, +0.5Е-10.

Вещественные типы single, double, extended, comp используются для представления значений с повышенной точностью и проведения вычислений в большом диапазоне значений. Они требуют арифметического сопроцессора для выполнения операций над ними. Для вещественных типов, помимо диапазона допустимых значений, существенными характеристиками являются точность (число значащих цифр) и минимальное число, представимое этим типом. Эти характеристики можно почерпнуть из нижеследующей таблицы.

 

Тип comp фактически является целым типом увеличенного диапазона, но не порядковым типом.

Ни один из вещественных типов не является порядковым.

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

 

3.         Символьный (литерный) тип (скалярный, упорядоченный).  Имя типа — char. Внешнее представление значений типа - символ кодовой таблицы ПЭВМ (ASCII код), заключенный в апострофы; внутреннее представление - код размером в 1 байт, определяемый кодовой таблицей. Примеры внешнего представления значений символьного типа: 'а', '9', '=', "" (сам символ апострофа повторяется дважды).
Зная код символа, можно представить сам символ, поставив перед его кодом символ #; это бывает необходимо для тех символов, которые не имеют физического (на клавиатуре) изображения.
Символьный тип является базовым типом для такого структурированного типа данных, как строковый (string). В книге приводится много программ, активно использующих переменные символьного типа, в частности, в качестве параметра цикла и индекса массива.

4.         Булевский (логический) тип (скалярный, упорядоченный). Имя типа - boolean, требуемая память: 1 байт, имеет всего два значения - true и false (true > false). Объекты и выражения булевского типа чаще всего используются в условных операторах.

 

 

 

Конструируемые скалярные типы

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

1.         Перечислимый тип (скалярный, упорядоченный) должен быть описан в виде:
(<перечень через запятую значений-идентификаторов>)
Примеры: type subject = (alg, geom, progr, anal);
Перечислимый тип имеет то преимущество, что его значения - это содержательные (мнемонические) имена. Для данных перечислимого типа определены только операции сравнения.

2.         Интервальный тип (скалярный, упорядоченный) служит для определения некоторой непрерывной подпоследовательности (интервала) значений любого из порядковых скалярных типов (кроме интервального). Граничные значения интервала задаются в виде констант или имен констант.
Описание этого типа имеет вид:
<минимальное значение> .. <максимальное значение>
Примеры: Tint = 1..100; Let = 'A'..'Z'; s = alg..progr;

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

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




 

Комментарии:

20.10.2013 ответил Евгений

Спасибо




Добавить свой комментарий:


Введите значение:
 









   
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru