- •Оглавление
- •Предисловие
- •Введение
- •1. Общие сведения о языках программирования
- •1.1. Краткая история эвм и языков программирования
- •1.2. Трансляторы
- •1.3. Основные понятия алгоритмических языков
- •2. Интегрированная среда borland pascal
- •2.1. Краткая характеристика. Запуск программы
- •2.2. Основы работы в редакторе
- •2.3. Система меню
- •2.3.1. Меню опции file
- •2.3.2. Меню опции edit
- •2.3.3. Меню опции search
- •2.3.4. Меню опции run
- •2.3.5. Меню опции compile
- •2.3.6. Меню опции debug
- •2.3.7. Меню опции tools
- •2.3.8. Меню опции options
- •2.3.9. Меню опции window
- •2.3.10. Меню опции help
- •3. Синтаксис языка borland pascal
- •3.1. Элементы языка
- •3.2. Служебные (зарезервированные слова), директивы и идентификаторы
- •3.3. Основные элементы программирования
- •3.4. Структура программы
- •4. Типы данных
- •4.1. Простые типы
- •4.1.1. Целые типы.
- •4.1.2. Логический тип
- •4.1.3. Символьный тип
- •4.1.4. Перечисляемый тип
- •4.1.6. Вещественные типы
- •4.2. Структурированные типы
- •4.2.1. Массивы
- •4.2.2. Записи
- •4.2.3. Множества
- •4.2.4. Файловый тип
- •Процедуры и функции ввода-вывода
- •4.3. Указатели
- •4.4. Строки
- •4.5. Совместимость и преобразование типов
- •4.6. Константы и константные выражения
- •5. Операторы и процедуры языка
- •5.1. Поразрядные оператоpы. Логические оператоpы. Опеpатоpы отношения
- •5.2. Оператор присваивания
- •5.3. Процедуры ввода и вывода
- •5.4. Условные операторы
- •5.4.1. Оператор If
- •5.4.2. Оператор case
- •5.5. Операторы цикла
- •5.5.1. Оператор while (цикл с предусловием )
- •5.5.2. Оператор repeat..Until (Цикл с постусловием)
- •5.5.3. Оператор цикла For (цикл с заданным количеством повторений)
- •5.6. Оператор безусловного перехода
- •5.7. Функции и процедуры для работы со строковыми и символьными данными
- •5.8. Комментарии в программе
- •6. Процедуры и функции
- •6.1. Параметры подпрограмм
- •7. Использование графики в borland pascal
- •7.1. Константы модуля Graph
- •7.1.1. Константы цвета
- •7.1.2. Константы типов и толщины линий
- •7.1.3. Константы шаблона штриховки
- •Заключение
- •Библиографический список
- •Решение задач на языке программирования Паскаль
- •Пример 9. Определить, имеются ли в массиве а[5,4] столбцы, состоящие из одних и тех же элементов, если такие есть, выдавать номера одинаковых столбцов, если нет – выдать сообщение.
- •Варианты заданий для самостоятельной работы Вычисление значений выражений
- •Вычислить значение функции с использованием условных операторов
- •Программирование циклических алгоритмов с заданным числом повторений
- •Программирование циклических алгоритмов с предусловием
- •Программирование циклических алгоритмов с постусловием
- •Программирование алгоритмов обработки одномерных массивов
- •Программирование алгоритмов обработки двумерных массивов
- •Программирование с использованием функций
- •Программирование с использованием процедур
- •Обработка символьных и строковых данных
- •Графика
- •Оператор
4.1. Простые типы
К простым типам относятся порядковые и вещественные типы. Порядковые типы отличаются тем, что каждый из них имеет конечное число возможных значений. Эти значения можно определенным образом упорядочить (отсюда название типов) и, следовательно, с каждым из них можно сопоставить некоторое целое число – порядковый номер значения.
Вещественные типы тоже имеют конечное число значений, которое определяется форматом внутреннего представления вещественного числа. Однако количество возможных значений вещественных типов настолько велико, что сопоставить с каждым из них целое число (его номер) не представляется возможным.
К порядковым типам относятся: целые, логический, символьный, перечисляемый и тип-диапазон. К любому из них применима функция ORD(X), которая возвращает порядковый номер значения выражения X. Для целых типов функция ORD(X) возвращает само значение X, т.е. ORD(X) равен X для X, принадлежащее любому целому типу. Применение ORD(X) к логическому, символьному и перечисляемому типам дает положительное целое число в диапазоне от 0 до 1 (логический тип), от 0 до 155 (символьный), от 0 до 65535 (перечисляемый). Тип-диапазон сохраняет все свойства базового порядкового типа, поэтому результат применения к нему функции ORD(X) зависит от свойств этого типа.
К порядковым типам можно также применять функции:
PRED (X) – возвращает предыдущее значение порядкового типа (значение, которое соответствует порядковому номеру ORD(X)- 1), т.е. ORD(PRED(X)) равен ORD(X) - 1;
SUCC (X) – возвращает следующее значение порядкового типа, которое соответствует порядковому номеру ORD(X) +1, т.е. ORD(SUCC(X)) равен ORD(X) + 1.
Например:
var с: char;
begin
с := '5' ;
end.
то функция PRED(C) вернет значение '4', а функция SUCC(C) - значение '6'.
Если представить себе любой порядковый тип как упорядоченное множество значений, возрастающих слева направо и занимающих на числовой оси некоторый отрезок, то функция PRED(X) не определена для левого, a SUCC(X) – для правого конца этого отрезка.
4.1.1. Целые типы.
Диапазон возможных значений целых типов зависит от их внутреннего представления, которое может занимать один, два или четыре байта. В табл. 4.1 приводится название целых типов, длина их внутреннего представления в байтах и диапазон возможных значений.
При использовании процедур и функций с целочисленными параметрами следует руководствоваться «вложенностью» типов, т.е. везде, где может использоваться WORD, допускается использование BYTE (но не наоборот), в LONGINT «входит» INTEGER, который, в свою очередь, включает в себя SHORTINT.
Таблица 4.1
Целые типы
-
Название
Длина, байт
Диапазон значений
Byte
1
0. . .255
ShortInt
1
-128. . .+127
Word
2
0. . .65535
Integer
2
-32768.. .+32767
LongInt
4
-2 147 483 648... +2 147 483 647
Перечень процедур и функций, применимых к целочисленным типам, приведен в табл. 4.2. Буквами обозначены выражения соответственно типа b – BYTE, s – SHORTINT, w – WORD, i – INTEGER и l – LONGINT, x – выражение любого из этих типов; буквы vb, vs, vw, vi, vl, vx обозначают переменные соответствующих типов. В квадратных скобках указывается необязательный параметр.
Таблица 4.2
Стандартные процедуры и функции, применимые к целым типам
Обращение |
Тип результата |
Действие |
abs (x) |
x |
Возвращает модуль х |
chr(b) |
Char |
Возвращает символ по его коду |
dec (vx[, i] ) |
- |
Уменьшает значение vx на i, а при отсутствии i -на 1 |
inc(vx[, i] ) |
- |
Увеличивает значение vx на i, а при отсутствии i - на 1 |
Hi(i) |
Byte |
Возвращает старший байт аргумента |
Hi(w) |
To же |
То же |
Lo(i) |
" |
Возвращает младший байт аргумента |
Lo (w) |
" |
То же |
odd(l) |
Boolean |
Возвращает True, если аргумент - нечетное число |
Random (w) |
Как у параметра |
Возвращает псевдослучайное число, равномерно распределенное в диапазоне 0...(w-l) |
sgr (x) |
X |
Возвращает квадрат аргумента |
При действиях с целыми числами тип результата будет соответствовать типу операндов, а если операнды относятся к различным целым типам, – типу того операнда, который имеет максимальную мощность (максимальный диапазон значений). Возможное переполнение результата никак не контролируется, что может привести к недоразумениям, например:
var
а : Integer;
х, у : Real;
begin
а := 32767; {Максимально возможное значение типа INTEGER}
х := а + 2; {Переполнение при вычислении этого выражения!}
у := LongInt(а)+2; {Переполнения нет после приведения переменной к более мощному типу}
WriteLn(x:10:0, у:10:0)
end.
В результате прогона программы получим:
-32767 32769
Операции с целыми операндами. Над целыми операндами можно выполнять следующие арифметические операции: сложение(+), вычитание(-), умножение(*), целочисленное деление(div), получение остатка от деления(mod).
Операции отношения, примененные к целым операндам, дают результат логического типа TRUE или FALSE ( истина или ложь ).
В языке ПАСКАЛЬ имеются следующие операции отношения: равенство =, неравенство <>, больше или равно >=, меньше или равно <=, больше >, меньше < .
