- •Государственное образовательное учреждение высшего профессионального образования «Тульский государственный университет»
- •Конспект лекций
- •Информатика
- •Содержание
- •Системы счисления. Позиционные и непозиционные системы
- •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.1. Встроенные типы данных. Целые типы. Представление знака числа. Арифметическое переполнение
10.1.1. Встроенные типы данных
Любой реально существующий тип данных, каким бы сложным он ни казался на первый взгляд, представляет собой простые составляющие (базовые типы), которые, как правило, всегда присутствуют в языке программирования (отсюда и происходит название «встроенные типы данных»). Они не требуют дополнительного описания и представляются соответствующими операторами. В Object Pascal к таким составляющим относятся простые типы данных, которые, в свою очередь, делятся на:
- порядковые типы;
- вещественные типы;
- типы дата-время.
Каждый из порядковых типов имеет конечное число значений. Следовательно, их можно упорядочить и с каждым из них сопоставить порядковый номер значения.
Вещественные представляют приближенно математические вещественные числа. Разделение типов на порядковые и вещественные несколько условно, т.к., строго говоря, вещественные тоже имеют конечное число значений. Количество значений определяется форматом внутреннего представления вещественного числа и настолько велико, что сопоставить порядковый номер с каждым значением практически невозможно.
Тип дата-время используется для хранения даты и времени.
Из простых типов данных порядковые - самые простые. В этих типах информация представляется в виде отдельных элементов.
В Object Pascal к порядковым типам относятся:
- целые типы;
- символьный тип;
- логические типы;
- задаваемые пользователем перечисления;
- тип-диапазон.
Все значения любого порядкового типа образуют упорядоченную последовательность, и значение переменной порядкового типа определяется его местом в этой последовательности. За исключением переменных целых типов, значения которых могут быть как положительными, так и отрицательными.
Первый элемент любого порядкового типа имеет номер 0, второй элемент - номер 1 и т.д. Порядковый номер значения возвращает функция Ord():
- если х представляет собой целое значение, то порядковый номер равен самому значению. Иными словами, для целых типов Ord(x)=x.
- если х представляет собой логический тип, то функция Ord(x) возвращает положительное целое число от 0 до 1;
- если х представляет собой символьный тип, то функция Ord(x) возвращает положительное целое число от 0 до 255;
- если х представляет собой перечисляемый тип, то функция Ord(x) возвращает положительное целое число от 0 до 65535.
- если х представляет собой поддиапазон, то значение, возвращаемое функцией Ord(x), зависит от базового типа. Это связано с тем, что поддиапазон сохраняет свойства порядкового типа, от которого он образован.
К порядковым типам также применяются функции Pred(x) и Succ(x).
Результатом вызова функции Pred(x) является предыдущее значение порядкового типа. Другими словами, Pred(x) = Ord(x) - 1.
В свою очередь, Succ(x) возвращает следующее значение порядкового типа, т.е. Succ(x) = Ord(x) + 1.
Если программа будет содержать такие строки:
procedure TForml.BitBtnlClick(Sender: TObject);
var
ch:Char;
begin
ch:='с';
Pred(ch);
Succ(ch);
end;
то Pred(ch) вернет символ 'b', a Succ (ch) - символ 'd'.
По объективным причинам далее не будут рассматриваться перечисляемый тип и тип-диапазон, относящиеся к порядковым типам, т.к. они являются более развитыми элементами Object Pascal. Но оставлять их без внимания все же не следует. Поэтому мы изучим их менее подробно, чем остальные простые типы.
При задании перечисляемого типа программист просто явно указывает (перечисляет) все значения, которые может принимать переменная такого типа. Например, рассмотрим следующие «перечисления»:
TYPE Tcolor=(red, green, blue);
TDay=(Sun, Mon, Tue, Wed, Thu, Fri, Sat);
Здесь создаются два новых типа данных. Переменная типа Tcolor сможет принимать лишь три значения: red, green, blue, а переменная типа TDay – значения Sun, Mon, Tue, Wed, Thu, Fri, Sat. Слова red, green, blue представляют собой константы, за которыми на самом деле скрываются некоторые числовые значения. Но нам в программе гораздо удобнее работать со словами, чем с числами. Было бы очень неудобно закодировать цвета цифрами и мучительно вспоминать, что "0" – это красный цвет, а "2" – синий.
Соответствие между значениями перечисляемого типа и порядковыми номерами этих значений устанавливается порядком перечисления: первое значение в списке получает порядковый номер 0, второе - 1 и т. д. Т.е. значения в перечислимом типе упорядочены по возрастанию. Поэтому их можно сравнивать не только на равенство, но и на отношения "больше - меньше".
Для работы с переменными перечислимого типа предназначены следующие функции и процедуры:
INC(v) – записать в v следующее значение;
DEC(v) - записать в v предыдущее значение.
Например:
c:Tday;
...
c:=Mon;
INC(c); {теперь c=Tue}
Обратите внимание, что эти процедуры меняют значение переменных, подаваемых им на вход в качестве аргументов. Если это нежелательно, следует использовать функции:
PRED(v) – предыдущее значение перечислимого типа;
SUCC(v) – последующее значение перечислимого типа.
Например:
c1:=PRED(c); {c1=Sun}
c2:=SUCC(c); {c2=Mon}
Тип-диапазон является производным типом. Он базируется на некотором базовом порядковом типе (исключая тип-диапазон). Ограниченный тип, или тип-диапазон, действительно ограничивает значения переменной. Например, если в переменной day хранится число дней в месяце, то оно явно не должно превышать 31, а также быть меньше 1. Следовательно, диапазон допустимых значений этой переменной – [1..31]. Так и напишем:
TYPE Tdate=[1..31]
Транслятор при работе программы проверяет, попадает ли значение переменной в допустимый диапазон. При выходе за его границы выдается сообщение об ошибке. Разумеется, это заметно повышает надежность программ.
Важно отметить, что в памяти переменная ограниченного типа занимает ровно столько же места, сколько и переменная базового типа. Поэтому сэкономить память, применяя поддиапазоны, не удастся.
В стандартную библиотеку Object Pascal включены две функции, поддерживающие работу с типами-диапазонами:
- High(X) - возвращает максимальное значение типа-диапазона, к которому принадлежит переменная х;
- Low (X) - возвращает минимальное значение типа-диапазона, к которому принадлежит переменная х.