Пиши Дома Нужные Работы

Обратная связь

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

 

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

Операнды – это данные, которые участвуют в вычислении; в качестве операндов могут быть константы, переменные и функции со списками параметров в круглых скобках.

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

Последовательность выполнения операций в выражении определяется тремя факторами:

§ приоритетом операций;

§ порядком расположения операции;

§ использованием скобок.

Выражение, тип значения которого является арифметическим, называется арифметическим выражением. Выражение, тип значения которого является булевским, называется логическим выражением. Выражение, значение которого является символом или символьной строкой, называется символьным выражением.

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

1) арифметические операции:

a. унарные: +,-;

b. бинарные: +,-,*,/,div,mod;

2) операции отношения:

= , <>, <=,>=,>,<;

3) логические операции:

not, and, or, xor;

4) поразрядные операции:

not, and, or, xor, shl, shr.

 

Унарные, арифметические операции представлены в табл. 6.1.

 

Табл. 6.1. Унарные операции

Операция Действие Тип операндов Тип результата
+ Сохранение знака Целый вещественный Целый вещественный
- Изменение знака Целый вещественный Целый вещественный

 



Бинарные, арифметические операции представлены в табл. 6.2.

 

Табл. 6.2. Бинарные операции

Операция Действие Тип операндов Тип результата
+ Сложение Целый вещественный Целый вещественный
- Вычитание Целый вещественный Целый вещественный
* Умножение Целый вещественный Целый вещественный
/ Деление вещественный Вещественный
Div Деление нацело Целый Целый
Mod Остаток от деления Целый Целый

 

Операции отношения представлены в таблице 6.3.

Табл. 6.3 . Операции отношения

Операция Сравнение на Тип операндов Тип результата
= Равно Совместимый скалярный тип Булевский
<> Не равно Совместимый скалярный тип Булевский
< Меньше Совместимый скалярный тип Булевский
> Больше Совместимый скалярный тип Булевский
<= Меньше или равно Совместимый скалярный тип Булевский
>= Больше или равно Совместимый скалярный тип Булевский

 

Логические операции выполняются по правилам булевой алгебры, представленным в таблице 6.4.

Табл. 6.4. Таблица истинности логических операций

Операнды Операции
A B Not A A and B A or B A xor B
False False True False False False
False True True False True True
True False False False True True
True True False True True False

Логические операции and (конъюнкция), or (дизъюнкция), xor (исключающее ИЛИ) являются бинарными; операнды A и B булевского типа, и результат – булевского типа. Логическая операция not является унарной; ее операнд и результат имеют булевский тип.

 

Стандартные, математические функции приведены в табл. 6.5. Математические функции можно использовать только с аргументами целого и вещественного типа.

 

Табл. 6.5. Арифметические функции

функция назначение Тип результата
Abs(X) Абсолютная величина числа Совпадает с типом аргумента
Arctan(X) Арктангенс Вещественный
Cos(X) Косинус Вещественный
Exp(X) ex Вещественный
Frac(X) Дробная часть числа Вещественный
Int(X) Целая часть числа Вещественный
Ln(X) Натуральный логарифм Вещественный
Pi Значение π Вещественный
Sin(X) Синус Вещественный
Sqr(X) Квадрат числа Х Совпадает с типом аргумента
Sqrt(X) Вещественный

 

Набор стандартных математических функций ограничен в библиотеке языка Паскаль, поэтому остальные функции определяются из следующих математических соотношений:

tg(X)=sin(X)/cos(X);

ctg(X)=1/tg(X);

loga(X)=ln(X)/ln(A)

Ax=exp(X*ln(A)), X-вещественное число, A>0;

arcsin(X)=arctan(X/sqrt(1-sqr(X)));

arccos(X)=arctan(sqrt(1-sqr(X))/X).

 

Поразрядные (битовые) операции выполняются над кодами целых чисел; к ним относятся битовые логические операции и операции сдвига, приведенные в табл.6.6.

 


Табл. 6.6. Поразрядные операции

Операция Действие Тип операндов Тип результата
Not Битовое отрицание Целый Целый
And Битовая конъюнкция Целый Целый
Or Битовая дизъюнкция Целый Целый
Xor Битовое исключающее ИЛИ Целый Целый
Shl Битовый сдвиг влево Целый Целый
Shr Битовый сдвиг вправо Целый Целый

 

Пример.

 

Операнд/ Результат Десятичное значение Двоичное значение
A
B
Not A
A and B
A or B
A xor B
A shr B
A shl B

 

Приоритеты операции над данными скалярных типов приведены в табл. 6.7.

Табл. 6.7. Приоритеты операций

приоритет Тип операций Знаки операции
Вычисления в круглых скобках ( )
Вычисление значения функции <имя_функции>(<список_аргументов>)
Унарные операции Not, +,-
Операции типа умножения *, /, div,mod,and,shl,shr
Операции типа сложения +, -, or, xor
Операции отношения =,<>, >=, <=,>, <

 

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


Операторы языка Паскаль

 

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

§ простые операторы;

§ структурные операторы.

К простым операторам относятся оператор присваивания, оператор вызова процедуры и оператор перехода.

К структурным операторам относятся составной оператор, условные операторы, операторы цикла.

 

Простые операторы

 

Оператор присваивания имеет следующий синтаксис:

 

<имя переменной>:=<выражение>

:= ¾ знак операции присваивания.

Выполнение оператора присваивания приводит к вычислению значения выражения в правой части оператора и присваиванию этого значения переменной в левой части оператора. Тип переменной должен быть совместим с типом выражения. Два типа являются совместимыми, если:

§ они описаны одним и тем же описателем;

§ в случае целых типов допустимы следующие присваивания:

· переменной типа longint можно присваивать значения типа byte, integer, word;

· переменной типа Integer можно присваивать значения типа byte;

· переменной типа Word можно присваивать значения типа byte;

§ вещественной переменной типа real, single, double можно присвоить значение целого типа;

§ переменной порядкового типа можно присваивать значения типа-диапазона этого типа.

Оператор вызова процедуры состоит из имени процедуры, за которым записывается список аргументов процедуры в круглых скобках. Список аргументов может отсутствовать. Типы аргументов должны быть совместимы с типами формальных параметров, объявленных в описании процедуры. Выполнение оператора вызова процедуры приводит к активизации действий, определенных в теле процедуры в ее описании.

Примеры оператора вызова процедуры.

 

Read(A,B,C); { ввод с клавиатуры значений переменных A, B, C }

Clrscr; {очистка экрана }

 

Оператор перехода состоит из ключевого слова goto и следующей за ним метки:

Goto <метка>.

Выполнение оператора приводит к передаче управления на оператор, помеченный указанной меткой.

Стандартный ввод-вывод используется весьма часто во всех программах и выполняется с помощью стандартных процедур ввода-вывода.

Для ввода числовых и символьных данных используются стандартные процедуры read и readln. Числовые значения при вводе разделяются пробелами или вводятся с новой строки. Значения, разделенные пробелами, сначала заносятся в буфер и после нажатия клавиши ENTER пересылаются в оперативную память ПК. Максимальная длина буфера ввода-вывода равна 127 байтам.

Пример 1.

Var

R: real;

I: integer;

………………………..

read(R,I);

………………………..

Вводимые данные:

33.45 18 Enter

 

В результате R будет равно 33.45, а I – 18.

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

 

Пример 2.

Var

R: real;

I: integer;

………………………..

read(R,I);

………………………..

Вводимые данные:

33.45 Enter

18 Enter

 

Для вывода числовых и символьных данных используются стандартные процедуры write и writeln. В списках аргументов этих процедур указываются любые выражения.

Пример 3.

Var

R: real;

I: integer;

………………………..

R:=5.9; I:=7;

………………………..

write(‘R= ‘,R, ‘I=’,I);

………………………..

Выводимые данные:

К=5.9 Ш=7 Enter

 

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

 

Структурные операторы

 

Составной оператор объединяет группу операторов в единое целое, после чего они рассматриваются компилятором как один оператор.

Составной оператор имеет следующий синтаксис:

Begin <оператор 1>; <оператор 2>; …<оператор n> end

Составной оператор используется в тех случаях, когда в программе допускается написать один оператор, а требуется выполнить группу операторов. Составной оператор соответствует алгоритмической структуре “Следование” (см. рис. 7.1).

К условным операторам относятся операторы if и case. Условный оператор if обеспечивает выбор из двух альтернатив в зависимости от условия и имеет следующий синтаксис:

If <логическое выражение> then <оператор 1> else <оператор 2>;

Оператор 1 выполняется, если значение логического выражения – True, а оператор 2 выполняется, если значение логического выражения – False.

Оператор If допускается в неполной форме:

If <логическое выражение> then <оператор >;

Если после then и else необходимо выполнить группу операторов, то они должны быть объединены в составной оператор, например,

If A>B then begin X:=A+B; Y:=A*B end;

Условный оператор соответствует алгоритмической структуре “Разветвление”, блок-схема которой на рис. 7.2.


 

 


……………..

       
   
 
 

 

 

 
 

 


 

 
 
Рис. 7.2

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

Case <выражение> of

<список констант 1>: <оператор 1>;

<список констант 2>: <оператор 2>;

……

<список констант n>: <оператор n>

else <оператор >

end;

 

Перед else точка с запятой не ставится. Ветвь else может отсутствовать.

Список констант может содержать одну константу; несколько констант, разделенных запятыми; или интервал значений
<значение 1>.. <значение 2>.

 

Пример.

 

Var Symbol: Char;

…………………….

Begin

…………………….

Case Symbol of

‘0’..’9’: writeln(‘Это цифра’);

‘A’..’Z’: writeln(‘Это прописная буква’);

‘a’..’z’: writeln(‘Это строчная буква’);

‘=’: writeln(‘Это знак операции сравнения’)

else writeln(‘другой символ’);

end;

 

Рассмотрим операторы цикла языка Паскаль. Язык Паскаль поддерживает три конструкции цикла:

· оператор цикла с предусловием while-do;

· оператор цикла с постусловием repeat-until;

· оператор цикла с параметром for.

Оператор while-do имеет следующий синтаксис:

While < логическое выражение >

do <оператор>

или

While < логическое выражение >

begin

<операторы>

end

Блок-схема оператора цикла представлена на рис. 7.3. Тело цикла – это оператор или составной оператор. В операторе while-do тело цикла может не выполниться ни разу. Логическое выражение – это условие продолжения цикла. Проверка условия продолжения цикла выполняется перед очередной итерацией. Итерация – это выполнение операторов тела цикла.

 

       
 
 
   
Рис. 7.3

 

 


Оператор цикла repeat-until имеет следующий синтаксис:

Repeat

<оператор 1>

<оператор 2>

….

<оператор n>

until <логическое выражение>

В операторе repeat-until не требуется использование составного оператора. Блок-схема оператора repeat-until показана на рис. 7.4, где логическое выражение является условием выхода из цикла. Операторы тела цикла repeat-until выполняются хотя бы один раз. Проверка условия выхода из цикла происходит после очередной итерации.

Оператор цикла с параметром используется в тех случаях, когда точно известно число итераций, отсчет числа итераций выполняется с помощью управляющей переменной, которая называется параметром цикла. Перед выполнением цикла известны начальное N1 и конечное N2 значение параметра цикла. Шаг изменения параметра равен 1.

Если N1<N2 (см. рис. 7.5) , то оператор цикла с параметром имеет следующий синтаксис:

For <параметр цикла>:=<выражение N1> to <выражение N2>
do <оператор или составной оператор>

Если N1>N2 (см. рис. 7.6) , то оператор цикла с параметром имеет следующий синтаксис:

For <параметр цикла>:=<выражение N1> downto <выражение N2>
do <оператор или составной оператор>

В Паскале оператор цикла с параметром имеет два ограничения:

· Шаг изменения параметра может быть равен только 1, если используется ключевое слово to, или –1,если используется ключевое слово downto.

· Переменная – параметр цикла должна быть только порядкового типа и должна быть локальной.

 

 
 

       
 
 
   
Рис. 7.5


       
 
 
   
Рис. 7.6

8. Примеры программ на языке Паскаль

 






ТОП 5 статей:
Экономическая сущность инвестиций - Экономическая сущность инвестиций – долгосрочные вложения экономических ресурсов сроком более 1 года для получения прибыли путем...
Тема: Федеральный закон от 26.07.2006 N 135-ФЗ - На основании изучения ФЗ № 135, дайте максимально короткое определение следующих понятий с указанием статей и пунктов закона...
Сущность, функции и виды управления в телекоммуникациях - Цели достигаются с помощью различных принципов, функций и методов социально-экономического менеджмента...
Схема построения базисных индексов - Индекс (лат. INDEX – указатель, показатель) - относительная величина, показывающая, во сколько раз уровень изучаемого явления...
Тема 11. Международное космическое право - Правовой режим космического пространства и небесных тел. Принципы деятельности государств по исследованию...



©2015- 2024 pdnr.ru Все права принадлежат авторам размещенных материалов.