При решении задач выполняется обработка информации различного характера. Это могут быть целые и дробные величины, строки и др. Для описания множества допустимых значений величины и совокупности операций, в которых может участвовать данная величина, используется указание ее типа данных.
Каждый тип данных имеет:
1. специальное зарезервированное слово для описания;
2. диапазон допустимых значений;
3. размер памяти, отводимой для хранения величины;
4. набор допустимых операций.
Все типы данных можно разделить на две группы: скалярные и структурированные (составные). К скалярным (scalar - простые) типам данных относят типы данных таких величин, значения которых не содержат составных частей. Скалярные типы, в свою очередь, делятся на стандартные и пользовательские.
Стандартные типы предлагаются пользователям разработчиками системы Турбо Паскаль. К ним относятся целочисленные, вещественные, символьные и булевские типы данных. Пользовательские типы разрабатываются пользователями системы программирования Турбо Паскаль.
1.1 Целочисленный тип данных
Стандартный идентификатор - INTEGER.
Множество допустимых значений - подмножество множества целых чисел: -32768.. 32767. Это множество упорядочено и пронумеровано (номер совпадает со значением).
Над данными целого типа определены следующие арифметические операции: +, -, *, /, div, mod. Результат выполнения этих операций над целыми операндами получается также целого типа, исключением является операция деления - результат будет вещественным.
Операция целочисленного деления (div) отличается от обычной операции деления тем, что вычисляет целую часть частного, дробная отбрасывается. Результат целочисленного деления всегда равен нулю, если делимое меньше делителя.
Например: 11 div 5 = 2; 10 div 3 = 3; 2 div 3 = 0
Операция mod вычисляет остаток, полученный при выполнении целочисленного деления.
Например: 10 mod 5 = 0; 11 mod 5 = 1; 10 mod 3 = 1; 14 mod 5 = 4
Над данными целого типа определены следующие операции отношения: =, <>, <, >, <=, >=, вырабатывающие результат логического типа. Например: 3 <> 5 (истина); 4 <= 8 (истина); 5 = 6 (ложь)
Для целых чисел определены следующие стандартные функции:
Примечание.Результат выполнения функции sqrt(x) всегда вещественного типа. (sqrt(9) = 3.0)
1.2 Вещественный тип данных
Стандартный идентификатор - REAL.
Множество допустимых значений- подмножество множества вещественных чисел. Это множество не упорядочено и не пронумеровано.
Данные вещественного типа в языке Паскаль могут быть представлены в двух видах: с фиксированной точкой и плавающей точкой.
Вещественные числа с фиксированной точкой изображаются десятичным числом с дробной частью, которая может быть и нулевой. Дробная часть отделяется от целой с помощью точки, например 27.2, 5.0, -16.003, 0.7.
В математике для изображения очень больших и малых чисел используется запись числа с десятичным порядком. Например, число 680 000 000 можно записать 68×107 (7 - порядок числа), число 0,00000005 можно записать так 5×10-8 (-8 - порядок числа).
В языке Паскаль также можно изображать числа с десятичным порядком. Эта форма представления называется способом записи с плавающей точкой и в общем случае имеет вид mEp. Здесь m - мантисса; E - признак записи числа с десятичным порядком; p - порядок числа.
В качестве m могут быть целые числа и действительные числа с фиксированной точкой. В качестве p могут быть только целые числа. Как мантисса, так и порядок могут содержать знаки «+» или «-»
Рассмотрим, например, числа с плавающей точкой: 0.547E+3, 5.47E+2, 54.7E+1, 547.0E0, 5470E-1, 54700E-2. Эти записи представляют одно и то же число 547. Перемещая положение десятичной точки в мантиссе (точка «плывет») и одновременно изменяя величину порядка, можно выбрать наиболее подходящее представление числа.
В памяти вещественные числа представлены в форме с плавающей точкой и занимают 6 байт.
Над данными вещественного типа определены следующие арифметические операции: +, -, *, /. Результат выполнения этих операций получается также вещественного типа.
Над данными вещественного типа определены следующие операции отношения: =, <>, <, >, <=, >=, вырабатывающие результат логического типа.
Например: 3.9 <> 3.5 (истина); 4.0 <= 8 (истина); 5.1 = 5.11 (ложь)
Примеры:
trunc(-5.2) = -5
round(-5.2) = -5
trunc(7.8) = 7
round(7.8) = 8
trunc(-0.5) = 0
round(-0.5) = -1
1.3 Символьный (литерный) тип
Стандартный идентификатор - CHAR.
Область значений - множество символов кодовой таблицы ASCII. Множество пронумеровано и упорядочено. Каждому символу соответствует целое число в диапазоне от 0 до 255.
В программе значения переменных и констант типа char должны быть заключены в апострофы. Например, 'A' обозначает букву A, ' ' - пробел.
Для размещения в памяти переменной символьного типа требуется 1 байт.
Над данными символьного типа определены следующие операции отношения (сравнение идет по кодам): =, >, <, ><>, <=, >=, вырабатывающие результат логического типа.
А также следующие стандартные функции:
chr(x) - определяет символ с кодом x;
ord(ch) - определяет код символа ch;
pred(ch) - определяет предыдущий символ;
succ(ch) - определяет следующий символ.
Примеры:
ord(';') = 58
succ('Г') = ‘Д’
ord('A') = 65
'a' < 'b' (истина)
chr(128) = ‘Б’
'9' > '0' (истина)
pred('Б') = ‘А’
'!' = '#' (ложь)
1.4 Булевский (логический) тип
Стандартный идентификатор - BOOLEAN.
Область значений - множество состоящее из двух элементов true (истина) и false (ложь). Множество упорядочено и пронумеровано: true соответствует 1, false — 0.
Для размещения в памяти переменной булевского типа требуется 1 байт.
Над данными логического типа определены логические операции, приведенные в таблице 8.
Над данными булевского типа определены операции отношения: =, >,<, ><>, <=, >=, вырабатывающие результат логического типа.
А также следующие стандартные функции: succ(a), pred(a), ord(a).
Примеры.
false < true (истина)
succ(false) = true
true <> true (ложь)
pred(true) = false
ord(true) = 1
ord(false) = 0
Операнд - элемент данных, участвующий в выражении.
Арифметическое выражение составляется из операндов арифметического типа, знаков арифметических операций и круглых скобок.
Порядок вычисления выражения определяется скобками и старшенством операции.
Арифметическое выражение порождает целое или вещественное значение.
Наиболее простыми формами арифметических выражений являются:
· целая или действительная константа;
· целая или действительная переменная;
· функция, тип результата которой integer или real.
Другие арифметические выражения составляются из вышеперечисленных простых форм путем применения арифметических операций и круглых скобок.
В программе значение переменной должно быть определено до ее появления в арифметическом выражении.
Примеры:
5; SQR(2); 2*a; SQRT(2*a)+(5-SQR(b))
Правила записи арифметических выражений:
1. Все составные части выражения записываются в одну строку. Верхние и нижние индексы не допускаются.
2. Используются только круглые скобки. В правильно записанном выражении число открывающихся скобок равно числу закрывающихся.
Пример: a{b+c[d+e(f+d)]} = a(b+c(d+e(f+d)))
1. Нельзя записывать подряд два знака арифметических операций.
Пример:
3*a*b/-z - неверно
3*a*b/(-z) – верно
1.5 Логические выражения
Операндами служат только данные булевского типа.
Простейшими видами логических выражений являются следующие:
· логическая константа;
· логическая переменная;
· выражение отношения;
· логическая функция.
Другие логические выражения строятся из вышеперечисленных путем применения логических операций и круглых скобок.
Результатом выполнения логического выражения является логическое значение True или False. Пример: not(3+5<9) and (false>true) or ('1'<'2') and false
Правила записи:
1. В круглые скобки обязательно заключаются части выражения, стоящие слева и справа от логических операций.
Пример:(x>0) or (y=4); not(2=8)
2. Вычисления выполняются слева направо в соответствии со старшинством операций:
· действия в скобках
· функции;
· not;
· and;
· or;
· операции отношения.
1.6 Оператор присваивания
Оператор присваивания - основной оператор любого языка программирования. Предназначен для задания значения переменной. Общая форма записи (формат) оператора
<имя переменной>
<имя переменной>:=< выражение>;
В качестве выражения может быть константа, переменная, функция, арифметическое или логическое выражение.
Оператор присваивания выполняется следующим образом: сначала вычисляется значение выражения, стоящего справа от знака операции присваивания :=, а затем его значение помещается в переменную, стоящую слева.
Пример: a:=2*3+5-6 , переменная a получит значение 5.
При использовании оператора присваивания необходимо следить, чтобы переменная в левой части и выражение в правой части оператора были одного и того же типа. Значение переменной, стоящей в выражении, должно быть определено до ее использования в выражении. Так, если переменная d была описана как переменная действительного типа var d:real; то оператор d:='7'; ошибочен, так как в правой части оператора записана константа символьного типа. При выполнении этого оператора будет зафиксирована ошибка, и программа выполняться с такой ошибкой не будет.
Из этого общего правила существует одно исключение. Разрешается переменной действительного типа присваивать целочисленное выражение. Пусть, например, a и b - переменные целого типа, причем a=6, а b=5. Переменная c описана как переменная вещественного типа. Тогда в результате выполнения оператора c:=a*b значение выражения равное 30, будет преобразовано в вещественный тип.
Текущим значением переменной называется значение переменной в момент обращения к ней. Оператор присваивания изменяет предыдущее значение переменной.
Следует обратить внимание на разницу между знаком операции присваивания «:=» и обычным знаком равенства «=». Это различие заключается не только в форме, но и в содержании. Например, в обычной математической записи выражение X=X+2 является неверным. Однако запись оператора присваивания X:=X+2 правильна и означает следующее: к текущему значению переменной X (пусть до выполнения оператора оно было равно 5) прибавляется число 2, и после выполнения данного оператора значение переменной X будет равно числу 7.