русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

П Р О С Т Ы Е Т И П Ы Д А Н Н Ы Х


Дата добавления: 2014-11-27; просмотров: 788; Нарушение авторских прав


 

Данные - это общее понятие для всего того, с чем оперирует ЭВМ.

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

Для примера рассмотрим в ПЭВМ два поля памяти А1 и А2 длиной 4 байта:

 

A1 A2

                 

 

Содержимое полей A1 и A2 - это последовательность двоичных цифр 0 и 1, которая ничего не означает, если не применить к ней конкретную машинную операцию.

 

Четырехбайтное поле в ПЭВМ может интерпретироваться как целое число длиной 4 байта (тип longint, условно формат L), как число с плавающей запятой длиной 4 байта (тип single, условно формат S), как строка символов, как битовая последовательность и др. Если для полей A1 и A2 мы применим операцию сложения для формата L “( + ) L A1 A2” , то тогда содержимое полей A1 и A2 будет рассматриваться как целые двоичные числа типа longint.

Для операции “( + ) S A1 A2” содержимое полей A1 и A2 интерпретируется как числа с плавающей запятой типа single.

При использовании логической операции “( \/ ) A1 A2” содержимое этих же полей памяти интерпретируется как битовые последовательности длиной 32 бита.

 

Пусть содержимое A1 в шестнадцатеричной записи имеет вид 50 6A 37 B1. Рассмотрим его интерпретацию при обработке различными машинными операциями.

 

a) Тип longint.

 

+ 0× + 6× + 10× + 3× + 7× + 11× + 1× = 1 349 088 353.

 

б) Тип single (в предположении, что подобно типу real первые три байта поля A1 - мантисса, а четвертый байт - характеристика вещественного числа).

 

= B1; = - 80 = B1 - 80 = 31 = 49 0,101 0000 0110 1010 0011 0111 × = 0,1101 0000 0110 1010 0011 0111 × =



= 0,D06A37 × = D06A37 × = 13 658 679 × 33 554 432 = 458 309 215 275 328

 

в) Битовая последовательность: 0101 0000 0110 1010 0011 0111 1011 0001

 

г) Строка символов (по таблице ASCII): 'Pj7Б' .

 

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

 

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

 

Тип данных определяет:

- множество значений, которые имеет право принимать переменная заданного типа;

- множество операций, которые допустимы при обработке этой переменной;

- объем памяти, выделяемой для размещения переменной.

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

 

Классификация типов данных в Турбо Паскале представлена на приведенной ниже схеме.

 

 
 

 

 


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

 

Классификация простых типов данных представлена на схеме, приведенной на следующей странице. Здесь термин "ординальный" означает "порядковый" (ordinal - порядковое числительное).

 
 

 


Ординальный тип описывает конечное и упорядоченное множество значений, для каждого элемента которого однозначно определяется предыдущий и следующий за ним элементы. В частности, последовательность целых чисел является ординальным типом данных. Например, для элемента 5 существует единственное следующее значение (6) и единственное предыдущее значение (4). Символы алфавита также представляют собой ординальный тип данных. Например, в латинском алфавите для символа "M" следующим является символ "N", а предыдущим - "L". В то же время вещественные числа нельзя отнести к ординальному типу. Так, для числа 15.8 существует бесконечное множество следующих и предыдущих значений (15.81, 15.801, 15.8001 и т.д.).

 

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

Предописанные функции succ, pred и ord воспринимают аргументы любого из ординальных типов.

Функция succ( ) (succeed - следующий) дает следующее после ординальное значение; функция pred( ) (predecessed - предшествующий) - предшествующее значение; функция ord( ) дает ординальный (порядковый) номер для значения .

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

 

Пример 1.

succ(8) = 9 ; succ('d') = 'e' ;

pred(8) = 7 ; pred('d') = 'c' ;

ord(' ') = 32; ord('Ю') = 158 ;

ord(8) = 8 ; ord(-8) = -8 .

 

Для всех ординальных типов существуют операции отношения "=", "<>", "<", "<=", ">", ">=". При этом предполагается, что оба операнда в операции отношения имеют одинаковый тип. Отношение определяется с помощью порядковых номеров, присущих операндам. Например, проверка истинности отношения 'A' > 'Z' заменяется проверкой отношения ord('A') > ord('Z').

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

 

1. Логический тип (типboolean).

Логическое значение - это одно из двух значений истинности, которые обозначают предописанными именами false и true (false эквивалентно значению 0, true - значению 1 в алгебре логики; использование имен false и true вызвано стремлением отличать в программе логические значения от числовых значений 0 и 1).

Логический тип определен так, что false < true, что соответствует машинному представлению логических констант false и true.

Операции отношения всегда дают логический результат. Например, отношение x+1<y при x = 0, y = 0 дает false; при x = 0, y = 10 - значение true.

Для переменных логического типа в Турбо Паскале определены четыре логические операции:

1) отрицание not;

2) логическое умножение and;

3) логическое сложение or;

4) исключающее ИЛИ (отрицание равнозначности, сложение по модулю 2) xor.

 

Исключающее ИЛИ определяется следующей таблицей операций:

 

0 Å 0 = 0 0 Å 1 = 1 1 Å 0 = 1 1 Å 1 = 0

 

Как было ранее указано, в алгебре логики основными операциями являются отрицание not, логическое умножение and и логическое сложение or. Все остальные операции могут быть выражены через эти базовые операции. Например, a xor b эквивалентно

 

(a or b) and (not a or not b).

 

Обозначения в символах алгебры логики:

.

Примечание. Справедливо также выражение

.

 

Пример логического выражения:

 

((x + 1 < y) and not (x > 5)) or ((y > 0) and true) .

 

Вычислим значение этого выражения при x = 5, y = 5 :

 

((6 < 1) and not (5 > 5)) or ((5 > 0) and true) Þ ( false and not false ) or

( true and true ) Þ ( false and true ) or( true and true ) Þ false ortrue Þ true .

 

В символике алгебры логики:

.

 

Для переменной типа boolean отводится один байт памяти. Машинное представление значения true имеет вид 00000001, значения false - 00000000, т.е. ord(false) = 0, ord(true) =1.

Существуют несколько предописанных логических функций, т.е. функций, которые дают логический результат. В частности, при обработке целочисленных переменных применяется функция odd(x), которая дает значение true, если целое x - нечетное, и значение false, если x - четное. Другие логические функции будут рассмотрены позже.



<== предыдущая лекция | следующая лекция ==>
Зарезервированные слова. | Целые типы данных.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.347 сек.