ЛАБОРАТОРНАЯ РАБОТА N1
Тема: "Стандартные типы данных и выражения"
Цель работы
Ознакомиться со стандартными типами данных и выражениями языка Паскаль.
Краткие сведения из теории
Стандартные типы данных
Тип данных определяет возможные значения констант, переменных, функций, выражений, принадлежащих к этому типу, форму представления в ЭВМ и операции, которые могут выполняться над ними.
Все типы данных делятся на простые и сложные.
Простые типы - это стандартные и переменные типы данных.
Переменные типы - это ограниченные, перечислимые, регулярные, строковые, структурные и ссылочные.
Сложные типы - это типы данных, которые задаются в разделе типов и строятся на базе простых.
В настоящей работе будут рассмотрены только стандартные типы.
Стандартными являются целый со знаком INTEGER, целые без знака BYTE и WORD, действительный REAL, логический BOOLEAN и символьный CHAR.
Данные представляются в программе в виде констант и переменных. При выполнении программы в каждый момент времени любая переменная имеет некоторое значение (константу). Это значение и переменная должны относиться к одному типу данных.
Данные целого типа со знаком
Константа целого типа (целая константа) - это последовательность цифр со знаком ('+', '-')или без него.
Примеры констант целого типа: -324,16, 0, +9352, 1024.
Диапазон целых чисел зависит от конкретного типа ЭВМ. Для 16-разрядногопроцессора диапазон изменяется в пределах от-32768до +32767.
Переменные, принимающие в качестве своих значений константы целого типа, относятся к целому типу (тип INTEGER).
Над данными целого типа можно выполнять следующие арифметические операции, которые дают целый результат:
+сложение;
- вычитание;
*умножение;
DIV | деление с отбрасыванием дробной части; | |
MOD | получение целого остатка при делении целого данного на целое. | |
Пример: | A, B, N - переменные целого типа, принимающие значения A = 25, B = 2, N = - | |
17. В этом случае допустимы следующие операции: | ||
операция | результат | |
A + 51 | ||
B - A | -23 | |
B * N | -34 | |
A DIV B | ||
A MOD B |
Данные целого типа без знака
Данные целого типа без знака предоставляет Турбо-Паскаль.К ним относятся числа без знака длиной в один или два байта. Им соответствуют типы BYTE и WORD. Диапазон представления данных типа BYTE изменяется от 0 до 255, а данных типа WORD - от 0 до 65535. Над данными указанных типов можно выполнять те же операции, что и над данными типа INTEGER.
Данные типа BYTE и WORD удобно использовать для индексации массивов, а также в тех случаях, когда переменные принимают только положительные значения.
Данные действительного типа
Константы действительного типа могут быть представлены в двух формах: с фиксированной точкой и плавающей точкой.
Константы с фиксированной точкой изображаются десятичным числом с дробной частью, которая может быть и нулевой. Дробная часть отделяется от целой с помощью точки. Примеры констант действительного типа с фиксированной точкой: 35.62; -12.005;55.0.
Константами с плавающей точкой являются числа, представленные с десятичным порядком. Они имеют вид:
± mE± p, где | ||||
m - мантисса, | ||||
E - признак записи числа с десятичным порядком, | ||||
p - порядок числа. | ||||
Для записи мантиссы m могут | использоваться целые числа и действительные | числа с | ||
фиксированной точкой. В качестве p могут использоваться только целые числа. | ||||
Примеры записи чисел с плавающей точкой: | ||||
математическая запись | запись на языке Паскаль | |||
2 * 10n, | где n = -4 | 2E-4 | ||
0,32 * 10n, | где n = 4 | 0.32E+4 | ||
-12,75* 10n, где n = 11 | -12.75E11 | |||
Примеры записи действительного числа 253 с плавающей точкой: | 0.253E+3, | 2.53E+2, |
25.3E+1, 253.0E0, 2530E-1,25300E-2и т.д.
Переменные действительного типа REAL - это переменные, которые в качестве значений принимают числа с фиксированной или плавающей точкой.
Над данными действительного типа можно выполнять следующие операции, дающие действительный результат:
+сложение;
-вычитание;
* умножение;
/деление.
Данные целого и действительного типа называют арифметическими данными.
Диапазон представления чисел действительного типа изменяется от 10-n до 10n (n = 38). Для различных процессоров отличие в представлении действительных чисел состоит в количестве значащих цифр мантиссы; при работе с16-разряднымпроцессором - это 11 неполных шестнадцатеричных цифры (± 7FFFFFFFFFF).
Данные логического типа
В языке Паскаль имеются две логические константы: TRUE (истина), FALSE (ложь). Логическая переменная принимает одно из этих значений и имеет тип BOOLEAN.
Над данными логического типа выполняются следующие операции: OR логическое сложение (или);
AND логическое умножение (и); NOT логическое отрицание (не).
Логические операции OR и AND являются бинарными и выполняются над двумя величинами, операция NOT - над одной величиной и является унарной операцией. Логический тип определяется таким образом, что FALSE < TRUE.
Результатом любой логической операции является логическая переменная со значением
FALSE или TRUE.
Втаблице 1 приведены результаты операций над логическими данными.
Таблица 1
A | B | NOT A | A OR B | A AND B |
TRUE | TRUE | FALSE | TRUE | TRUE |
TRUE | FALSE | FALSE | TRUE | FALSE |
FALSE | TRUE | TRUE | TRUE | FALSE |
FALSE | FALSE | TRUE | FALSE | FALSE |
Примечание: каждая логическая операция имеет свой ранг старшинства. Самой старшей является операция отрицания. Далее в порядке убывания старшинства следуют умножение и сложение.
Данные символьного типа
Символьная, или литерная, константа - это любой символ языка, заключенный в апострофы. Примеры символьных констант: 'B', ';', '+', '5'.
Символьная константа занимает один байт памяти.
Примечание. Чтобы представить апостроф как символьную константу его повторяют дважды: ''. Внешние апострофы (по одному слева и справа) не входят в константу, они являются признаком символьной константы.
Символьная переменная типа CHAR - это переменная, принимающая значение символьной константы. Все символы языка Паскаль упорядочены, т.е. каждый символ имеет свой порядковый номер. Это позволяет применять к символьным данным операции сравнения: <, >, =, <>, >=, <=. Например, результат операции сравнения 'A' < 'B' будет истинным, так как сравниваются их порядковые номера, а они равны 66 и 67 соответственно.
Данные строкового типа
В Турбо-Паскале допускается использование последовательности символов, заключенной в апострофы, длиной не более 256 символов. Например: 'Sigma', 'Alfa', 'Группа623-1a'и т.д. Такие последовательности относятся к строковым типам данных. Более подробно строковые данные рассмотрены в лабораторной работе N 8.
Выражения
В любом языке программирования определены два типа выражений: арифметические и логические.
В состав выражения могут входить константы, переменные, стандартные функции, объединенные круглыми скобками и знаками операций. Константы, входящие в выражение, могут быть объявлены либо в разделе CONST, либо непосредственно в самом выражении. Переменные должны иметь уникальное имя, называемое идентификатором, и описываются в разделе VAR. Идентификаторы могут содержать до 16 символов, причем первый символ должен быть либо буквой, либо символом "_" (подчеркивание). В идентификаторах разрешается использовать как строчные, так и прописные буквы латинского алфавита, цифры и специальные символы.
Стандартные функции
При записи стандартных функций следует учитывать следующие правила:
1)имя функции записывается буквами латинского алфавита;
2)аргумент (параметр) функции записывается в круглых скобках после имени функции;
3)аргументом функции может быть константа, переменная или арифметическое выражение.
В таблице 2 приведены основные стандартные функции.
Таблица 2 | |||||||||
Функция | Назначение | Тип | Тип | ||||||
аргумента | функции | ||||||||
ABS(x) | Вычисление абсолютного значения х | REAL | REAL | ||||||
INTEGER | INTEGER | ||||||||
SQR(x) | Вычисление квадрата х (х*х) | REAL | REAL | ||||||
INTEGER | INTEGER | ||||||||
SIN(x) | Вычисление синуса х | REAL | REAL | ||||||
INTEGER | REAL | ||||||||
COS(x) | Вычисление косинуса х | REAL | REAL | ||||||
INTEGER | REAL | ||||||||
ARCTAN(x) | Вычисление арктангенса х | REAL | REAL | ||||||
INTEGER | REAL | ||||||||
EXP(x) | Вычисление экспоненты | REAL | REAL | ||||||
INTEGER | REAL | ||||||||
EXP10(x) | 10n, где n=х | REAL | REAL | ||||||
INTEGER | REAL | ||||||||
LN(x) | ln x | REAL | REAL | ||||||
INTEGER | REAL | ||||||||
LOG(x) | log x | REAL | REAL | ||||||
INTEGER | REAL | ||||||||
SQRT(x) | Вычисление квадратного корня из х | REAL | REAL | ||||||
INTEGER | REAL | ||||||||
TRUNC(x) | Определение целой части от х | REAL | INTEGER | ||||||
INTEGER | INTEGER | ||||||||
ROUND(x) | Округление | х в | сторону ближайшего | REAL | NTEGER | ||||
целого | INTEGER | INTEGER | |||||||
ODD(x) | TRUE, если x - нечетное | INTEGER | BOOLEAN | ||||||
FALSE, если х - четное | |||||||||
SUCC(x) | а) х+1 | INTEGER | INTEGER | ||||||
б) следующий символ после х в | |||||||||
CHAR | CHAR | ||||||||
упорядоченном множестве символов | |||||||||
а) х-1 | INTEGER | INTEGER | |||||||
PRED(x) | б) предыдущий | по отношению к х | |||||||
символ в | упорядоченном множестве | CHAR | CHAR | ||||||
символов | |||||||||
ORD(S | порядковый номер символа S в | CHAR | INTEGER | ||||||
упорядоченном множестве символов | |||||||||
CHR(I) | определяет символ, стоящий под | INTEGER | CHAR | ||||||
номером I в упорядоченном множестве | |||||||||
символов | |||||||||
В | данной таблице | не приведены стандартные функции работы со строковыми данными. | |||||||
Они рассмотрены в лабораторной работе N 8. | |||||||||
Примеры использования стандартных функций: | |||||||||
1) X = 21.53 TRUNC(X) = 21 | ROUND(X) = 22 | ||||||||
2) X = -2.7 | TRUNC(X) = -2 | ROUND(X) = -3 | |||||||
3) ORD('5') = 53 | ORD('5') = 58 | ||||||||
4) CHR(66) = 'B', | CHR(57) = '9' | ||||||||
5) PRED('B') = 'A' | PRED(100)= 99 | ||||||||
6) SUCC('C') = 'D' | SUCC(12) = 13 | ||||||||
Примечания: | |||||||||
1.В Паскале нет операции возведения в степень. При необходимости вычисления аn, n = х, используют имеющиеся стандартные функции, например: an = Exp(n * Ln(A)).
2.Из таблицы стандартных функций следует справедливость равенств:
PRED(S) = CHAR(ORD(S) - 1) | CHR(ORD(S)) = S |
SUCC(S) = CHAR(ORD(S) + 1) | ORD(CHR(I)) = I |
3. Значения FALSE и TRUE можно рассматривать как упорядоченное множество, состоящее из двух элементов. При этом определены следующие значения стандартных функций:
ORD(FALSE) = 0 SUCC(FALSE) = TRUE
ORD(TRUE) = 1 PRED(TRUE) = FALSE.
Арифметические выражения
Арифметическое выражение представляет собой совокупность одного или нескольких арифметических констант, переменных, функций, соединенных знаками арифметических операций и круглыми скобками.
Следовательно, константа, переменная, функция являются частными случаями арифметического выражения.
При записи выражений необходимо выполнять следующие правила:
1.Все составные части выражения записываются в одну строку. Поднимать и опускать символы над строкой не разрешается.
2.Использовать в выражениях можно скобки только одного типа - круглые. Применение в выражениях фигурных и квадратных скобок запрещается, так как они имеют особое назначение. Число открывающихся скобок всегда должно равняться числу закрывающихся скобок.
3.Нельзя записывать последовательно два знака арифметических операций, их необходимо разделить круглой скобкой.
4.Вычисление выражений производится слева направо в соответствии со старшинством операций.
Установлен следующий в порядке убывания приоритет арифметических операций: а) умножение, деление;
б) DIV, MOD;
в) сложение, вычитание.
Необходимый порядок вычислений в выражениях задается с помощью скобок. Выражения в скобках вычисляются первыми. Если выражений в скобках несколько, и они вложены друг в друга, то вычисление начинается в самых внутренних скобках и далее последовательно переходит во внешние скобки.
Если аргумент функции задан в виде выражения, то сначала определяется значение этого выражения, а затем значение функции.
Если операции, следующие одна за другой, имеют одинаковое старшинство, то они выполняются последовательно в порядке их записи.
Логические выражения
Логические выражения строятся из логических данных, логических операций и операций отношения.
Воперациях отношения могут участвовать арифметические и логические выражения, а также символьные данные.
Результатом логического выражения является значение TRUE или FALSE.
При вычислении логических выражений принят следующий приоритет операций (по старшинству):
1) арифметические операции;
2) операции отношений;
3) логические операции.
При наличии скобок сначала выполняются действия в скобках (в первую очередь самые внутренние), а затем вне скобок.
Вкруглые скобки обязательно заключаются части выражения, стоящие слева и справа от логических операций AND и OR.
Пример. Определить результат логического выражения
(A > 3) AND (C = 5) OR NOT (A + C < X) при A = 1, C = 3, X = 0.
C заданными значениями переменных, входящих в логическое выражение, оно принимает вид:
(1 > 3) AND (3 = 5) OR NOT (1 + 3 < 0)
Результат вычислений в скобках: (FALSE) AND (FALSE) OR NOT (FALSE).
Логические операции выполняются в следующей последовательности NOT - AND - OR:
1)NOT (FALSE) = TRUE;
2)(FALSE) AND (FALSE) = FALSE;
3)(FALSE) OR (TRUE) = TRUE;
Результат рассмотренного логического выражения равен TRUE.
Контрольные вопросы
1.Перечислите стандартные типы данных в Паскале.
2.Укажите отличие данных действительного и целого типов.
3.Какие переменные называют логическими и какие значения они могут принимать?
4.Какие логические операции вы знаете?
5.Что представляет собой условие?
6.Что понимается под символьными данными?
7.Какие данные называют арифметическими?
8.Перечислите правила записи стандартных функций.
9.Перечислите стандартные функции, предназначенные для работы с арифметическими данными?
10.Перечислите стандартные функции, предназначенные для работы с символьными данными?
11.Что представляет собой арифметическое выражение?
12.Перечислите правила записи арифметических выражений.
13.Что представляет собой логическое выражение?
14.В чем отличие арифметического выражения от логического?
15.Каков порядок вычисления значения логического выражения?
Содержание отчета
Контрольная работа по рассмотренной теме.
Варианты индивидуальных заданий
1. | Какие из приведенных ниже записей являются неправильными и почему? | ||||||
а) 7. | б) -6.1 | в) 0.0 | г) 9 | ||||
д).0E-2 | е) 0.1E-5 | ж) -5.3E4 | з) +2.3E+3.5 | ||||
и) -71 | к) 0.31 | л).456 | м) 2,1 | ||||
2. | Чему равно значение следующих функций? | ||||||
а) TRUNC(5.61) | г) TRUNC(-5.61) | ||||||
б) ROUND(17.16) | д) ROUND(17.96) | ||||||
в) ROUND(-17.16) | е) ROUND(-17.96) | ||||||
3. | Какие из приведенных ниже записей функций являются неправильными и почему? | ||||||
а) ODD(17.1) | г) COS(32.1) | ||||||
б) COS(5) | д) SIN(0.5) | ||||||
в) SUCC(3.2) | е) PRED(7) | ||||||
4. | Какие из приведенных выражений являются правильными с точки зрения языка Паскаль? | ||||||
а) 'A' < 'C' | г) '1' > '9' | ||||||
б) FALSE < TRUE | д) 'A' < 'B' AND 1 < 2 | ||||||
в) 'O' OR '9' | е) ('D' > 'G') AND (1 < 2) |
в) | x + | y | |||||||||||||||||||||||||||||||||||||||||
c + | x | a | − | a2 | − b2 | − | a | ||||||||||||||||||||||||||||||||||||
x | г) | x + | |||||||||||||||||||||||||||||||||||||||||
d + | b | c | b | ||||||||||||||||||||||||||||||||||||||||
z + | |||||||||||||||||||||||||||||||||||||||||||
1 − x | |||||||||||||||||||||||||||||||||||||||||||
4 | 0,0001 | x2−y2 | cos | 2x −1 | |||||||||||||||||||||||||||||||||||||||
д) | x | − | ( | a | − b | ) | e) | e | + | ( | ) | ||||||||||||||||||||||||||||||||
arctg2x en | ln | x | − | y | sin | ( | 2x −1 | ||||||||||||||||||||||||||||||||||||
) | |||||||||||||||||||||||||||||||||||||||||||
6. Вычислить значения логических выражений при заданных значениях переменных: | |||||||||||||||||||||||||||||||||||||||||||
а) x>0 AND y=3 OR x + y > 5 AND x-y< 0 при х = 5 и у = 15; | |||||||||||||||||||||||||||||||||||||||||||
б) a<0 AND b<0 AND c<0 при а = 5, в = -3,с =-25.3; | |||||||||||||||||||||||||||||||||||||||||||
в) x > 2 OR y < 3 OR z = y AND x + y + z > 0 | при х = 12, у = -20,z = 0; | ||||||||||||||||||||||||||||||||||||||||||
г) x > 0 AND y > 0 OR x < 0 AND y < 0 при х = -2,у = 9; | |||||||||||||||||||||||||||||||||||||||||||
д) x * x + y * y < 49 AND x * x + y * y > 1 при х = 3, у = 4; | |||||||||||||||||||||||||||||||||||||||||||
е) | (A | < | B) | AND | (X + A < B) OR (C < | M) | OR | E | при | A | = | 15.5, | B = 8.2, |
C = -10.6,M = 0, X = 7, E = TRUE.