- •Государственное образовательное учреждение высшего профессионального образования «Тульский государственный университет»
- •Конспект лекций
- •Информатика
- •Содержание
- •Системы счисления. Позиционные и непозиционные системы
- •2.1. Кодирование текста
- •2.2. Растровая и векторная графика
- •2.3. Представление цвета
- •2.4. Представление звука. Ацп. Цап
- •3.1. Принцип фон Неймана
- •3.2. Общая структурная схема процессора
- •3.3. Арифметико-логическое устройство (алу)
- •3.4. Адрес ячейки памяти
- •3.5. Регистры процессора
- •3.6. Как процессор складывает два числа
- •4.1. Эволюция средств вычислений
- •4.2. Эволюция эвм
- •4.3. Поколения эвм
- •5.1. Эволюция персональных эвм
- •5.2. Классификация эвм
- •6.1. Программное обеспечение
- •6.2. Функции ос
- •6.3. Трансляция программ
- •6.5. Декомпозиция
- •6.6. Объектно-ориентированное программирование
- •7.1. Понятие алгоритма. Свойства алгоритма
- •7.2. Способы записи алгоритма: псевдокод, блок-схема
- •7.3. Преобразование программы в машинные коды. Интерпретаторы и компиляторы
- •7.4. Оптимизация кода для повышения эффективности
- •7.5. Структура ide. Отладка программ
- •8.1. Описание структуры проекта
- •8.2. Описание структуры модуля
- •8.3. Описание элементов программ
- •8.4. Алфавит языка программирования
- •8.5. Идентификаторы, константы, выражения
- •9.1. Целая и вещественная арифметика
- •9.2. Приоритет операций
- •9.3. Встроенные функции. Построение сложных выражений
- •10.1. Встроенные типы данных. Целые типы. Представление знака числа. Арифметическое переполнение
- •10.1.1. Встроенные типы данных
- •10.1.2. Целые типы
- •10.1.3. Представление знака числа
- •10.1.4. Арифметическое переполнение
- •10.2. Вещественные типы. Сопроцессор
- •10.3. Текстовые типы
- •10.4. Логический тип
- •10.5. Оператор присваивания. Совместимость типов по присваиванию
- •11.1. Устройства вывода
- •11.2. Объекты, обеспечивающие вывод данных на экран
- •11.2.1. Перечень компонентов ввода и отображения текстовой информации
- •11.2.2. Отображение текста в надписях компонентов Label, StaticText и Panel
- •11.2.3. Окна редактирования Edit и MaskEdit
- •11.2.4. Многострочные окна редактирования Memo и RichEdit
- •11.2.5. Группа радиокнопок – компонент RadioGroup
- •Ввод и отображение целых чисел — компоненты UpDown и SpinEdit
- •11.2.6. Компоненты выбора из списков — ListBox, CheckBox, CheckListBox и ComboBox
- •11.2.7. Таблица строк — компонент StringGrid
- •11.2.8. Функция InputBox
- •11.2.9. Процедура ShowMessage
- •11.3. Вывод в текстовый файл
- •11.3.1. Объявление файла
- •Назначение файла
- •11.3.2. Вывод в файл
- •11.3.3. Открытие файла для вывода
- •11.3.4. Ошибки открытия файла
- •11.3.5. Закрытие файла
- •11.4. Устройства ввода. Ввод с клавиатуры. Реакция на действия пользователя
- •11.4.1. Устройства ввода
- •11.5. Ввод из файла
- •11.5.1. Открытие файла
- •11.5.2. Чтение данных из файла
- •11.5.3. Чтение чисел
- •11.5.4. Чтение строк
- •12.1. Ветвление
- •12.2. Логические (булевские) операции
- •12.3. Составной оператор
- •12.4. Оператор ветвления if
- •12.5. Оператор ветвления case
- •12.6. Исключительные ситуации
- •13.1. Функции цикла в программе. Циклы с пред- и постусловием
- •13.2. Оператор While. Вечные циклы
- •13.3. Вечные циклы
- •13.4. Оператор repeat. Процедуры inc и dec
- •13.5. Цикл с переменной for
- •13.6. Команды break и continue
- •13.7. Вложенные циклы
- •13.8. Примеры задач с циклами
- •14.1. Объявление массива
- •14.2. Операции с массивами
- •14.2.1. Вывод массива
- •14.2.2. Ввод массива
- •14.2.3. Поиск минимального (максимального) элемента массива
- •14.2.4. Поиск в массиве заданного элемента
- •14.3. Ошибки при использовании массивов
- •15.1. Создание пользовательских функций. Передача аргументов
- •15.2. Глобальные и локальные переменные
- •15.3. Примеры написания пользовательских функций
- •15.4. Процедуры
- •15.5. Процедуры программиста
- •15.6. Передача параметров по ссылке и значению
- •15.7. Перегрузка процедур и функций
- •15.8. Упреждающее объявление процедур и функций (forward)
- •16.1. Основные понятия компьютерной графики
- •16.2. Получение сведений о режимах экрана. Эффекты прозрачности
- •16.3. Графические построения
- •16.4. Построение графиков функций
- •16.5. Использование компонента tChart
- •16.6. Обновление изображения
- •17.1. Анимация на основе операции xor
- •17.2. Буферизация фона
- •17.3. Работа с таймером
- •18.1. Виды диалога
- •18.2. Стандарты пользовательского интерфейса
- •18.2.3. Размеры окон
- •18.2.2. Размеры элементов управления
- •Надписи на элементах управления:
- •18.2.4. Схема расположения
- •19.1. Технология mmx
- •19.2. Мультимедийные аппаратные интерфейсы
- •20.1. Тест Тьюринга
- •20.2. Представление знаний и вывод на знаниях
- •20.3. Модели представления знаний
- •20.4. Вывод на знаниях
- •21.1. Основы телекоммуникаций и распределенной обработки информации
- •21.2. Каналы связи
- •21.2.1. Аналоговые и цифровые каналы
- •21.2.2. Коммутируемые и выделенные каналы
- •21.2.3. Двух- и четырехпроводные каналы
- •21.3. Семиуровневая модель osi
- •21.3.1. Физический уровень
- •21.3.2. Канальный уровень
- •21.3.3. Верхние уровни osi
- •21.4. Управление потоком
- •21.5. Технология "клиент-сервер"
- •22.1. Методы защиты информации
- •22.2. Основы криптографии
- •22.3. Симметричные криптосистемы
- •22.3.1.Моно- и многоалфавитные подстановки
- •22.3.2. Перестановки
- •22.3.3. Гамирование и блочные шифры
- •22.4. Алгоритмы цифровой подписи
- •22.5. Сжатие данных
- •22.5.1. Методы сжатия изображений
- •22.6. Понятие об экономических и правовых аспектах информационных технологий
10.2. Вещественные типы. Сопроцессор
В отличие от порядковых типов, значения которых всегда сопоставляются с рядом целых чисел и, следовательно, представляются в ПК абсолютно точно, значения вещественных типов определяют произвольное число лишь с некоторой конечной точностью, зависящей от внутреннего формата вещественного числа.
В переменных вещественных типов содержатся числа, состоящие из целой и дробной частей. В Object Pascal определено шесть вещественных типов. Все типы различаются пороговым (минимальным положительным) и максимальным значениями, а также точностью (количеством значащих цифр) и объемом (табл. 8).
Обратите внимание на четкое разделение целых и вещественных чисел. Операции с целыми числами всегда выполняются точно, а с вещественными – с погрешностью. Результат сложения двух целых чисел 2+2 всегда будет точно равен 4, а результат сложения двух вещественных чисел 2.0+2.0 может оказаться равным и 3.9999999, и 4.000001. Такова особенность машинной арифметики. Это не ошибка языка Паскаль или процессора, а свойство любого компьютера.
Четкое разделение целого и вещественного типов потребовало введения двух разных операций деления: деление нацело (обозначается DIV) и вещественного деления (обозначается "/"). Не забывайте, что 10 DIV 3=3, а 10/3=3.33333.
Таблица 10.2
Вещественные типы данных
Название |
Диапазон значений |
Количество значащих цифр |
Размер, байт |
Real |
5.0e-324…1.7e308 |
15-16 |
8 |
Single |
1.5e-45…3.4e38 |
7-8 |
4 |
Double |
5.0e-324…1.7e308 |
15-16 |
8 |
Extended |
3.4e-4951…1.1e4932 |
19-20 |
10 |
Comp |
-2e63…+2e63-1 |
19-20 |
8 |
Currency |
+/- 922 337 203 685 477.5807; |
19-20 |
8 |
Вещественное число в памяти компьютера представляется следующим образом:
S |
e |
m |
Здесь s - знаковый разряд числа, е - экспонента, m - мантисса. Длина мантиссы меняется от 23 двоичных разрядов (тип Single) до 63 (тип Extended). Это обеспечивает точность десятичных цифр 7-8 для Single и 19-20 для Extended. Десятичная точка (запятая) подразумевается перед левым (старшим) разрядом мантиссы, но при действиях с числом ее положение сдвигается влево или вправо в соответствии с двоичным порядком числа, хранящимся в экспоненциальной части, поэтому действия над вещественными числами называют арифметикой с плавающей точкой (запятой).
Сопроцессор - это устройство, расширяющее возможности центрального процессора, добавляющее команды числовой обработки и регистры с плавающей точкой. Эти дополнительные арифметические возможности расширяют набор команд микропроцессора, и значительно увеличивают вычислительную мощность в тех случаях, когда программа выполняет операции с плавающей точкой или с арифметикой повышенной точности.
Модели процессоров (начиная с Pentium) выпускаются уже со встроенным сопроцессором.
Сопроцессор - весьма сложное устройство. Это полноценный процессор со своим набором регистров (включая управляющие). Сопроцессор может работать независимо от основного процессора и параллельно с ним. Т.е. это вроде как отдельный вычислительный блок, и его нужно рассматривать именно как отдельное устройство.
Сопроцессор "смотрит" на команды, выполняемые процессором. Когда сопроцессор "видит" команду, которую он должен выполнить, он начинает ее обработку. Сопроцессор выполняет свои числовые операции параллельно с процессором. То есть, пока сопроцессор выполняет арифметическую команду, процессор может продолжать выполнять свои команды. Тем самым возникает истинная параллельность работы; процессор может выполнять команду, пока сопроцессор выполняет другую команду. В частности, это имеет значение в случае, когда команда сопроцессора занимает много времени, что характерно для некоторых команд с плавающей точкой.
Процессор не может читать внутренние регистры сопроцессора, и наоборот. Все данные, передаваемые между ними, должны быть помещены в память, к которой оба процессора имеют доступ. Но из-за того, что регистры адресации находятся в процессоре, сопроцессору трудно эффективно адресовать память, используя те же способы адресации, которые использует процессор. Чтобы позволить сопроцессору адресовать память с помощью способов адресации процессора, существует взаимодействие двух процессоров при выполнении команд плавающей точки.
Сопроцессор добавляет арифметические возможности в систему, но не замещает ни одну команду процессора. Команды ADD, SUB, MUL и DIV выполняются процессором, а арифметический сопроцессор выполняет дополнительные, более эффективные команды арифметической обработки.
Каждый сопроцессор имеет собственный набор команд и средства для операций с плавающей запятой для выполнения экспоненциальных, логарифмических и тригонометрических функций. Сопроцессор содержит 80-битовые регистры с плавающей запятой, которые могут представить числовые значения до 10 в 400 степени. Математические вычисления в сопроцессоре выполняются примерно в 100 раз быстрее, чем в основном процессоре.
Основной процессор выполняет специальные операции и передает числовые данные в сопроцессор, который выполняет необходимые вычисления и возвращает результат.
Для изображения чисел с плавающей точкой в сопроцессоре существует три формата данных.
Короткий формат имеет 32 бита, а длинный - 64 бита. Третий формат определяет 80-битовые числа. Сопроцессор использует такой формат "промежуточного действительного числа", чтобы обеспечить очень высокую точность для промежуточных результатов вычислений.
Ученые и математики давным-давно разработали способ представления вещественных чисел в достаточно удобном виде. На первом этапе вводится десятичная точка. Этот символ "." показывает границу между целой и дробной частью числа. В случае целого числа позиция, представляющая единицы, всегда находится на правом краю числа; в случае, когда используется десятичная точка, цифры справа от нее представляют значения, меньшие единицы.
Десятичная точка позволяет записывать дроби. Число 1/2 теперь выглядит как 0.5, а 1/4 выглядит как 0.25, и 1/5 выглядит как 0.2.
Поскольку каждая позиция десятичного числа отличается от соседней на степень 10, умножение числа на 10 эквивалентно сдвигу десятичной точки на одну позицию вправо. Аналогично деление на 10 сдвигает десятичную точку на позицию влево. Это свойство можно использовать для сдвига десятичной точки на соответствующее место: мы сдвигаем десятичную точку и одновременно корректируем число на степень 10. Такое представление чисел называется представлением "с плавающей точкой", поскольку десятичная точка "плавает" в числе - она больше не помечает абсолютное место между целой и дробной частями. Положение десятичной точки можно выбрать из соображений удобства, а затем умножить число на нужную степень 10, чтобы получить правильное значение.
Отметим, что арифметический сопроцессор всегда обрабатывает числа в формате Extended, а три других вещественных типа в этом случае получаются простым усечением результатов до нужных размеров и применяются в основном для экономии памяти.
Особое положение в Object Pascal занимают типы Comp и Currency, которые трактуются как вещественные числа с дробными частями фиксированной длины: в Comp дробная часть имеет длину 0 разрядов, т.е. просто отсутствует, в Currency длина дробной части -4 десятичных разряда.
Фактически оба типа определяют большое целое число со знаком, сохраняющее 19...20 значащих десятичных цифр (во внутреннем представлении они занимают 8 смежных байт). В то же время в выражениях Comp и Currency полностью совместимы с любыми другими вещественными типами: над ними определены все вещественные операции, они могут использоваться как аргументы математических функций и т.д.
Типы Currency и Comp являются типами с фиксированной десятичной точкой. Работа с ними осуществляется быстрее и проще, чем с остальными вещественными числами с плавающей точкой. Наиболее подходящей областью применения этих типов являются бухгалтерские расчеты.
Типы Real, Single, Double и Extended - типы с так называемой плавающей десятичной точкой. Десятичная точка подразумевается перед старшим байтом мантиссы, но при арифметических действиях с числом она сдвигается вправо или влево (зависит от операции и двоичного порядка числа). Операции с типами Real, Single, Double и Extended называют арифметикой с плавающей точкой.