Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Выражения.

Читайте также:
  1. Важные слова и выражения.
  2. Логические величины, операции, выражения. Логические выражения в качестве условий в разветвляющихся и циклических алгоритмах

 

Выражение является первичной составной частью программ. Оно обеспечивает определение некоторого результата соответствующего типа (арифметического, логического, строкового или в виде множества) и показывает что для этого надо взять и какие действия и в каком порядке произвести. Фактически выражения задают правила получения новых значений. Для этого в них используются константы, переменные и указатели функций, скрепленные знаками операций и скобками.

Как правило, выражение образуют один или несколько операндов, связанных операциями и скрепленных знаками операций.

Операнд – это самостоятельная часть выражения, с которой производятся какие-то действия. При записи выражения операнды должны следовать в линейной последовательности, в строчку, на одном уровне. Операндами могут быть константы, переменные и указатели функций.

Операции определяют действия над операндами и результат. Они могут быть одноместными (с одним операндом справа) и двухместными (с двумя операндами, слева и справа). Выполняются операции в порядке своего приоритета, от высшего (первого) к низшему. Внутри же приоритета, если нет скобок, операции выполняются слева направо в порядке их написания.

Для задания требуемой последовательности выполнения операций могут использоваться круглые скобки.

Тип операндов и вид операций определяют тип результата выражения.

 

При записи выражений:

 

допускается: - делать пробелы между операндами, знаками операций

и скобками;

- переносить выражения на следующую строку (но без

разрыва операндов!);

- применять лишние парные круглые скобки;

- опускать «+» в одноместный операции.

запрещается: - дважды повторять знак операции при переносе

операнда на следующую строку;

- опускать знак умножения «*».

 

Последовательность вычисления выражений:

1. выражения в скобках, начиная с самых внутренних;

2. значения функций;

3. одноместные операции;

4. двухместные операции согласно их приоритетам. Операции одного

приоритета выполняются слева направо.

 

В языке Турбо-Паскаль имеют место следующие выражения:

 

А ) арифметические. Это один операнд или их последовательность, связанных знаками арифметических операций.

Операндом арифметических выражений может быть:

- целое или вещественное число без знака;

- переменная (простая, с индексами, элемент записи, указатель) целого или вещественного типов;

- функция, возвращающая арифметический результат;

- произвольное арифметическое выражение в круглых скобках.

Составные части арифметических выражений должны иметь целый или вещественный типы.

Пример:

A[I]+ISH.SUM*(3.14+SQRT(X))/SQR(X-Y)

 

Операции в арифметических выражениях выполняются слева направо исходя из их приоритета:

 

Таблица приоритетов арифметических операций

 

Приори- тет Знак операции Наименование операции Типы операндов Возможные типы результатов
  - Одноместный минус I,R I,R
  NOT   Логическое НЕ – побитное отрицание I I
  * / DIV MOD AND Умножение Деление Деление нацело Остаток от деления Логическое И – побитное логическое умножение I,R I,R I I I I,R R I I I
  + - OR   XOR Сложение Вычитание Логическое ИЛИ- побитное логическое сложение Исключительное ИЛИ-побитное отрицание эквивалентности I,R I,R I   I I,R I,R I   I

 

Операции одинакового приоритета выполняются в порядке их написания в выражении: слева направо.

В границах выражения с помощью круглых скобок можно добиться желаемой последовательности выполнения операций.

 

Б) строковые. Задача подобных выражений – формирование строк, как правило, имеющих какой-то смысл. Поэтому в них используются операнды символьного (CHAR) и строкового (STRING) типов, представленные константами, переменными или указателями функций.

Операнды соединяются знаками операции сцепления (конкатенации) – «+». В результате сцепления формируется строка из левого и, последовательно, правого операнда, длина которой сложится из соответствующих длин этих операндов (строк или символов). При этом итоговая строка не может быть больше 255 символов (байтов).

Примеры:

`Студенты ` + ` ИЭФа`

`2345` + `.` + `075`

`МИИТ` + ` - ` + `наша` + ` alma mater`

 

Помимо операций сцепления в строковых выражениях допустимы операции отношения. Они выполняются посимвольно и, при разной длине сравниваемых строк, короткая строка дополняется пробелами.

Примеры:

VAR STR1, STR2: STRING[12];

WHILE STR1 > STR2 DO …

 

В) сравнения (отношения). Такие выражения используются в условных операторах, операторах присваивания и цикла, в процедурах вывода, в других процедурах и функциях в качестве фактических параметров.

По форме – это два операнда, связанных операцией отношения:

= - равно

<> - не равно

< - меньше

<= - меньше или равно

> - больше

>= - больше или равно

IN – принадлежность к множеству.

Эти операции обладают самым низким, пятым приоритетом, что следует учитывать при конструировании выражений.

 

Примеры:

L:=A>B; WRITE(A>B); С:=K IN [1,3,5,7,9,11,13];

WHILE I<=25 DO …

IF MES IN [1..12] THEN …

PROC(MAS,FL<>0);

 

Примечание: при использовании операции IN следует учитывать, что

первый (левый) операнд в ней должен быть порядкового

типа, а второй – множественного. Если левый операнд

принадлежит множеству, то формируется результат

TRUE, если нет – FALSE.

 

Г) логические.

По определению, логическое выражение – это один или несколько логических операндов, разделенных знаками логических операций:

NOT – отрицание (НЕ);

AND – логическое умножение (И);

OR – логическое сложение (ИЛИ)

XOR – исключительное ИЛИ.

 

Операндами логических выражений могут быть:

- константы TRUE и FALSE;

- простая переменная;

- переменная с индексами;

- переменная – элемент записи логического типа;

- указатель функции, возвращающий логический результат;

- отношение.

 

Логические выражения используются для определения истинности или ложности каких-либо ситуаций в программе, и поэтому фактически они задают правила вычисления одного из двух возможных логических значений: TRUE и FALSE. Область их применения – та же, что и у выражений сравнения (отношения).

Значения результатов логических операций устанавливается в соответствии со следующей таблицей истинности:

 

Операнды Результат логического выражения
А В NOT A A AND B A OR B A XOR B
Т - F - - -
F - T - - -
T T F T T F
F F T F F F
T F F F T T
F T T F T T

 

Здесь: Т – TRUE, F – FALSE.

 

Примечание: если операндами являются целые числа, то результатом

логического выражения будет тоже целое число. Оно

формируется побитно в соответствии с приведенной

выше таблицей истинности, но с заменой TRUE на «1», а

FALSE на «0».

 

Примеры логических выражений:

 

NOT FL

(MES IN [1..12]) OR (FL<>0)

FALSE XOR (X + Y*2 = C)

(0<I) AND (I>B)

2 1 3

Но не: 0<I AND I>B, т.к. в соответствии с приоритетом сначала

выполняется побитное умножение, а затем

другие операции по старшинству, слева

направо (см. цифры над выражением)

 

Д) над множествами (см. в разделе «Множества и выражения над ними»).

 

Е) смешанные.

В них используются различные типы операций и операндов.

Порядок выполнения операций определяется их приоритетом. Т.к. операции отношения являются операциями с самым низким приоритетом, то их рекомендуется обрамлять круглыми скобками (см. пример выше).

 

Тип результата всего смешанного выражения определяется типом результата последней операции (!!!).

 

 

3.6. Встроенные функции и процедуры.

 

Для повышения производительности и эффективности программирования полезно применять т.н. встроенные (стандартные) функции и процедуры. Их не надо объявлять. Должны быть объявлены только используемые в них параметры.

Хранятся такие процедуры и функции в 8-ми стандартных библиотечных модулях Турбо-Паскаля, в т.ч. SYSTEM, DOS, CRT. Доступ к модулю SYSTEM обеспечен всегда. А остальные надо подключать при написании программы. Тогда станут доступными расположенные в них встроенные процедуры и функции. Это делается записью оператора USES после заголовка программы:

 

USES <список имен стандартных модулей через запятую>;

Например:

PROGRAM …

USES CRT, DOS;

 

В программе имена вызываемых встроенных процедур записываются как обычные операторы, а имена функций – как операнды.

В языке Турбо-Паскаль используются следующие встроенные функции и процедуры:

 

А) математические:

 

  № п/п Имя функции или процедуры Тип аргумента (параметра)   Результат Тип результата
    Функции:        
1. ABS(x) Целый, веществ.-й Модуль (абсолютное значение) x Целый, веществ.-й
2. ARCTAN(x) Веществ.-й Арктангенс угла (х – в радианах) Веществ.-й
3. SIN(x) - «- Синус угла (х – в радианах) - «-
4. COS(x) - «- Косинус угла (х – в радианах) - «-
5. CHR(x) BYTE Символ с порядковым номером x CHAR
6. EXP(x) Веществ.-й Экспонента (е в степени х) - «-
7. FRAC(x) - «- Дробная часть х - «-
8. INT(x) - «- Целая часть х - «-
9. LN(x) - «- Натуральный логарифм х (где х>0) - «-
10. ODD(x) Порядк.-й TRUE, если х – нечетно, FALSE, если х – четно BOOLEAN
11. ORD(x) - «- Порядковый номер, соответствующий значению х LONGINT
12. SUCC(x) - «- Последующее значение аргумента Порядк.-й
13. SQRT(x) Целый, веществ.-й Квадрат х (где х>0) - «-
14. SQRT(x) Веществ.-й Корень квадратный х - «-
15. PI   Число π=3.1415926535897932385 - «-
16. PRED(x) Порядк.-й Предшествующее значение аргумента Порядк.-й
17. ROUND(x) Веществ.-й Ближайшее (округленное) целое х LONGINT
18. TRUNC(x) - «- Целое от х (усеченное целое) LONGINT
  Процедуры:      
1. DEC(x,[s]) Порядк.-й х, уменьшенное на 1 или s, если s задано Порядк.-й
2. INC(x,[s]) - «- х, увеличенное на 1 или s, если s задано - «-

 

Пример:

 

(N - ABS(a -b)*SQR(b))/(π + SQRT(2*a – SQR(c -d)))

 

Б) cтроковые:

 

  № п/п Имя функции или процедуры   Результат Тип результата
    Функции:      
1. CONCAT(s1[,s2,…,sN]) Строка как сцепление подстрок s1 … sN STRING
2. COPY(st,n,k) Подстрока в строке st длиной к символов, начиная с позиции n - «-
3. LENGTH(st) Длина строки st INTEGER
4. POS(pst,st) Номер начальной позиции первого вхождения подстроки pst в строке st или ноль, если вхождение не обнаружено - «-
5. UPCASE(ch) Заглавная латинская буква, соответствующая аналогичной строчной из выражения ch. Другие символы не преобразовываются CHAR
  Процедуры:    
1. DELETE(st,n,k) Cтрока st после удаления из нее к символов, начиная с позиции n STRING
2. INSERT(pst,st,n) Cтрока st после вставки в нее подстроки pst, начиная с позиции n - «-
3. STR(cv[:w[,d]],st) Cтрока st (общей длиной w c d cимволами для дробной части) как результат преобразования целого или вещественного числа cv - «-
4. VAL(st,cv,kod) Результат внутреннего преобразования строки st в переменную cv целого или вещественного типа. Коd=0, если преобразование было успешным. Иначе в коd фиксируется номер позиции в st с ошибочным символом  

 

С) специальные: они обеспечивают выполнение вспомогательных операций в программе, таких как:

- прерывание выполнения программы;

- задержку выполнения определенных шагов программы;

- генерацию случайных чисел;

- подачу звукового сигнала;

- определение объема памяти в байтах, занимаемой переменной;

- копирование блоков информации в оперативной памяти;

- работу с экраном дисплея;

- редактирование отображаемой информации и др.

Отметим наиболее употребимые специальные встроенные функции и процедуры.

 

Из модуля SYSTEM:

 

функции:

1. IORESULT – возвращает код состояния последней операции

ввода-вывода;

2. RANDOM и RANDOM(n) –возвращают случайное число типа

REAL в диапазоне от 0 до 1 (в первом случае) или от 1 до n-1,

где n – целое.

Использованию этих функций должен предшествовать вызов

процедуры RANDOMIZE.

 

процедуры:

1. EXCLUDE(s,e);- исключает элемент е из множества s того же типа;

2. EXIT; - осуществляет выход из выполняемого блока, передавая управление по метке, помещенной перед служебным словом END, закрывающим блок; при вызове из подпрограммы – возвращает управление в основную программу; при вызове из основной программы – прекращает ее работы;

3. FILLCHAR(p,n,v); – заполняет n байтов в переменной p любого типа выражением v любого порядкового типа;

4. HALT[(k)]; - останавливает работу программы, возвращая управление операционной системе и, если к указано, отображая код завершения программы;

5. INCLUDE(s,e); - включает во множество s элемент е того же типа;

6. RANDOMIZE; - инициализирует некоторым случайным значением генератор случайных чисел;

 

Из модуля CRT:

 

функции:

1. KEYPRESSED – возвращает TRUE, если была нажата какая-

либо клавиша на клавиатуре; иначе – FALSE;

2. READKEY – читает (но не выводит на экран) символ с

клавиатуры, приостанавливая выполнение программы до

момента нажатия любой клавиши (исключая регистровые);

3. WHEREX и WHEREY – возвращают соответственно

горизонтальную и вертикальную координаты текущей позиции

курсора на активном окне;

 

процедуры:

1. CLRSCR; – очищает экран, помещая курсор в левый нижний угол;

2. DELEY(t);- задерживает выполнение программы на t миллисекунд;

3. GOTOXY(x,y); - перемещает курсор в позицию экрана, определяемую координатами Х (по горизонтали) и Y 0о вертикали);

4. SOUND(g);- включает подачу звукового сигнала частотой g – герц.

5. TEXTBACKGROUND(c); - устанавливает цвет фона, определяемый параметром с байтового типа;

6. TEXTCOLOR(c); - устанавливает цвет символов, определяемый параметром с байтового типа;

7. WINDOW(x1,y1,x2,y2); - формирует текстовое окно, определяемое координатами левого верхнего (x1,y1) и нижнего правого (x2,y2) углов;

 


Дата добавления: 2015-07-11; просмотров: 148 | Нарушение авторских прав


Читайте в этой же книге: Общая характеристика языков программирования. | Структура и основные конструкции. | Алфавит языка. | READ(POLE,OBL,VT); | Вывод данных. |
<== предыдущая страница | следующая страница ==>
Константы и их определение.| Ввод данных.

mybiblioteka.su - 2015-2024 год. (0.035 сек.)