4607

Операторы языка Delphi

Реферат

Информатика, кибернетика и программирование

Введение Главную часть программы на языке Delphi составляет раздел операторов, в котором реализуется алгоритм решения поставленной задачи, т.е. именно в нем с предварительно описанными переменными, константами, значениями функций и т.п. выполняются...

Русский

2012-11-23

408.5 KB

124 чел.

Введение

Главную часть программы на языке Delphi составляет раздел операторов, в котором реализуется алгоритм решения поставленной задачи, т.е. именно в нем с предварительно описанными переменными, константами, значениями функций и т.п. выполняются определенные действия, позволяющие получить результат, ради которого создается программа.

Раздел операторов начинается ключевым словом Begin (начало), затем следуют операторы языка, отделяемые друг от друга точкой с запятой. Завершают раздел ключевое слово End и точка.

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


1. ОПЕРАЦИИ И ВЫРАЖЕНИЯ

1.1. Приоритет операций и их классификация

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

По количеству операндов операции делятся на унарные и бинарные. Унарные операции имеют только один операнд, перед которым располагается символ операции. К унарным относятся: операции изменения знака «-» (минус) и сохранения знака «+» (плюс), а также логическое отрицание «not» (НЕ) и взятия адреса @, например,

Выражение

Результат

-7

-7

-(-9)

9

+5

5

not False

True

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

Выражение

Результат

5+7

12

(4-2)*5+10

20

True or False

True

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

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

  •  унарные: +, -
  •  бинарные: +, -, *, /, div, mod 

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

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

3. Булевы (логические) операции:

not, and, or, xor

4. Поразрядные логические и сдвиговые операции:

not, and, or, xor, shl, shr

5. Строковая операция (конкатенация):

+

6. Операции над множествами:

+, -, *, in, <=, >=

7. Операция взятия адреса:

@

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

  •  приоритетом операций;
  •  порядком расположения операций в выражении;
  •  использованием скобок.

По приоритету все операции делятся на четыре группы (табл. 1).

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

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

Приоритет

Операции

Категория операций

Первый (высший)

+  -  not  @

Унарные операции

Второй

* / div mod and shl shr

Бинарные операции типа умножения

Третий

+  -  or  xor

Бинарные операции типа сложения

Четвертый (низший)

=  <> <  >  <=  >=  in

Бинарные операции отношения

Рис. 1 иллюстрирует порядок выполнения операций в сложных выражениях.

1.2. Типы выражений

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

Арифметические выражения

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

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

Арифметические операции выполняют арифметические действия в выражениях над значениями операндов целого и вещественного типа (группы integer и real) и представлены в табл. 2.

Табл. 2. Арифметические операции

Знак операции

Операция и действие

Типы операндов

Тип результата

Унарные

+

Сохранение знака

integer

real

integer

real

-

Изменение знака

integer

real

integer

real

Бинарные

+

A+B

Сложение

integer

real

real, integer

integer

real

real

-

A-B

Вычитание

integer

real

real, integer

integer

real

real

*

A*B

Умножение

integer

real

real, integer

integer

real

real

/

A/B

Деление

integer

real

real, integer

real

real

real

div

A div B

Целочисленное деление

integer

integer

mod

A mod B

Остаток от деления

integer

integer

Поразрядные (битовые) булевские и сдвиговые операции

not

not A

Арифметическое НЕ

integer

integer

and

A and B

Арифметическое И

integer

integer

or

A or B

Арифметическое ИЛИ

integer

integer

xor

A xor B

Арифметическое исключающее ИЛИ

integer

integer

shl

A shl B

Целочисленный сдвиг влево

integer

integer

shr

A shr B

Целочисленный сдвиг вправо

integer

integer

Следует только помнить, что если операнды принадлежат к различным типам, то тип результата будет более охватывающим.

Операции сложения (+) и вычитания (-) выполняются так же, как и в обычных арифметических выражениях. Допускается смешение типов integer и real в одном выражении, например:

Выражение   Результат

34+17.09   51.09

5-43    -38

67+(-12+6.05)  61.05

Операции умножения (*) и деления (/) имеют наивысший приоритет и выполняются с данными типа integer и real, причем тип результата операции деления (/) всегда будет вещественным.

Выражение   Результат

134*12   1608

1.22*3.05   3.72

997/4    249.25

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

Выражение   Результат

11 div 5   2

2 div 3   0

-13 div 4   -3

25 div –6   -4

-13 div –4   3

Деление по модулю (mod) восстанавливает остаток, полученный при выполнении целочисленного деления.

Выражение   Результат

14 mod 5   4

-13 mod 4   -1

13 mod –4   1

-13 mod –4   -1

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

Таблица 3. Арифметические функции и процедуры

Функция, процедура

Обозначение

Тип аргумента

Тип
результата

Примеры

Выражение

Результат

Абсолютное значение, |x|

Abs(х)

Integer

Real

Integer

Real

Abs(-56)

Abs(-2*0.15)

56

3.00000000000000Е-0001

Арктангенс, arctg(x)

ArcTan(x)

Integer

Real

Real

Real

ArcTan(1)*180/Pi

4.50000000000000E+0001

Косинус, cos(x)

Cos(х)

Integer

Real

Real

Real

Cos(60*Pi/180)

5.00000000000000E-0001

Экспонента, ex

Exp(x)

Integer

Real

Real

Real

Exp(1)

Exp(-1.5*2)

2.71828182845905E+0000

4.97870683678639E-0002

Натуральный логарифм, ln(x)

Ln(x)

Integer

Real

Real

Real

Ln(3)

Ln(0.12*10)

1.09861228866811E+0000

1.82321556793955E-0001

Число

Pi

Real

Pi

3.14159265358979E+0000

Синус, sin(x)

Sin(x)

Integer

Real

Real

Real

Sin(30*Pi/180)

5.00000000000000E-0001

Возведение в квадрат, х2

Sqr(х)

Integer

Real

Integer

Real

Sqr(4)

Sqr(10.25)

16

1.05062500000000E+0002

Квадратный корень

Sqrt(x)

Integer

Real

Real

Real

Sqrt(16) Sqrt(Sin(30*Pi/180))

4.00000000000000E+0000

7.07106781186548E-0001

Дробное, представляющее целую часть вещественного

Int(х)

Integer

Real

Real

Real

Int(123)

Int(123.448)

Int(-345.555)

1.23000000000000E+0002

1.23000000000000E+0002

-3.45000000000000E+0002

Дробная часть вещественного числа

Frac(x)

Integer

Real

Real

Real

Frac(1.7)

Frac(-25.14)

Frac(-17)

7.00000000000000E-0001

-1.40000000000000E-0001

0.00000000000000E+0000

Целая часть вещественного числа

Trunc(x)

Integer

Real

Integer

Integer

Trunc(123)

Trunc(123.448)

Trunc(-347.513)

123

123

-347

Целое, полученное путем округления вещественного

Round(x)

Integer

Real

Integer

Integer

Round(27.768)

Round(35.432)

Round(-24.815)

Round(-97.264)

28

35

-25

-97

Случайное число из диапазона 0.. 0.99

Random

Real

Random

2.32830643653870E-0010

Целое случайное число из диапазона 0..I

Random(I)

Integer

Integer

Random(1000)

318

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

Таблица 4. Функции преобразования 

Функция

Значение функции

Chr(n)

Символ, код которого равен n 

IntToStr(k)

Строка, являющаяся изображением целого k

FloatToStr(n)

Строка, являющаяся изображением вещественного n

FloatToStrF(n,f,k,m)

Строка, являющаяся изображением вещественного n. При вызове функции указывают: f — формат (способ изображения); k — точность (нужное общее количество цифр); m — количество цифр после десятичной точки

StrToInt(s)

Целое, изображением которого является строка s

StrToFloat(s)

Вещественное, изображением которого является строка s

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

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

Таблица 5. Таблицы истинности для поразрядных булевских операций

X

Y

not X

X and Y

X or Y

X xor Y

0

0

1

0

0

0

0

1

1

0

1

1

1

0

0

0

1

1

1

1

0

1

1

0

Результат операции not: целочисленное значение, равное десятичному числу, которое соответствует поразрядно инвертированному двоичному представлению исходного операнда.

Результат операции and (or, xor): целочисленное значение, равное десятичному числу, которое соответствует двоичному представлению поразрядно выполненной над исходными операндами логической операции И (ИЛИ, исключающее ИЛИ).

Результат операции A shl В (A shr В): целочисленное значение, равное десятичному числу, полученному в результате поразрядного сдвига влево (вправо) двоичного представления операнда А на В разрядов. Освободившиеся при этом разряды заполняются нулями.

Например, если А:=11; В:=2; то

Десятичное значение Двоичное представление

not А  244   11110100

A and В  2   00000010

A or В  11   00001011

A xor В  9   00001001

A shl В  44   00101100

A shr В  2   00000010

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

  1.  Запрещено последовательное появление знаков двух операций, поэтому А+-В запрещается, хотя А+(-B) – разрешается.
  2.  Операции с более высоким приоритетом выполняются раньше, чем операции с более низким (так, в выражении X*Y-D/4 сначала производится умножение и деление, лишь потом – вычитание).
  3.  Если все операции в выражении имеют одинаковый приоритет, то они выполняются последовательно слева направо (например, в выражении 2*H*J сначала 2 умножается на H и затем результат умножается на J); исключение составляет операция деления, которая реализуется справа налево, поэтому, например, А/В/С эквивалентно А/(В/C).
  4.  Часть выражения, заключенная в круглые скобки, выполняется в первую очередь (например, в выражении (А+В)*(С-D) умножение производится в последнюю очередь после сложения и вычитания).
  5.  Не следует записывать выражений, не имеющих математического смысла, например таких, как деление на нуль и т.п.
  6.  Следует следить за тем, чтобы значения выражений не выходили за пределы допустимых значений для объявленных типов переменных.

Выражения отношений

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

Операции отношения (табл. 6) выполняют сравнение двух операндов и определяют, истинно значение выражения или ложно, т.е. результатом этих операций является булевское значение True (Истина) или False (Ложь).

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

Операция

Действие

Тип операндов

Тип результата

=

Равно

Совместимый простой, строковый или указательный тип

Boolean

<>

Не равно

Совместимый простой, строковый или указательный тип

Boolean

<

Меньше

Совместимый простой или строковый тип

Boolean

>

Больше

Совместимый простой или строковый тип

Boolean

<=

Меньше или равно

Совместимый простой или строковый тип

Boolean

>=

Больше или равно

Совместимый простой или строковый тип

Boolean

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

При объединении в одном выражении арифметических операций и операций отношения первыми всегда выполняются арифметические. Например, результат выражения 14<11+4 – истина, так как операция сложения реализуется раньше операции сравнения.

Выражение  Результат

12>=12   True

56>10   True

11<=6   False

False<>True  True

'ABC'<'ABD'  True

'ABC'>'A'  True

Сравнивать можно данные любого одинакового типа кроме файлового.

Следует избегать выражений отношения, подобных следующему: 1<=X<=50, так как 1<=X приводит к получению значения True или False, которые не могут сравниваться с величиной 50. В этом случае надо воспользоваться скобками и логической операцией and: (1<=X) and (X<=50).

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

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

Логические выражения

Логическим (булевским) выражением называется выражение, в котором используются операнды булевского типа (Boolean), в качестве операций выступают логические операции НЕ (not), И (and), ИЛИ (or), Исключающее ИЛИ (xor), а результатом выполнения выражения является логическое значение True или False (табл. 7).

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

not ((A<5) or (B>=8) and (C xor D))

(X<=50) and (X>=1) xor (not (Z<>0))

Таблица 7. Логические операции

Операция

Название

Пример

Значение А

Значение В

Результат

not

Логическое отрицание

not A

True

False

False

True

and

Логическое И

A and В

True

True

False

False

True

False

True

False

True

False

False

False

or

Логическое ИЛИ

A or В

True

True

False

False

True

False

True

False

True

True

True

False

xor

Исключающее ИЛИ

A xor В

True

True

False

False

True

False

True

False

False

True

True

False

Использование операции and вызывает много ошибок. Например, часто записывают в выражение, аналогичное следующему: A<10 and В<100, которое неявно предполагает наличие круглых скобок (A<(10 and В)<100), что служит причиной ошибки. Вместо такого выражения надо записать следующее: (A<10) and (В<100).

Следует помнить, что приоритет булевских операций выше приоритета операций отношения.

Символьные и строковые выражения

Символьное выражение порождает значение, имеющее символьный тип данных (Char).

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

Значением переменной символьного типа может быть любой отображаемый символ:

  •  буква русского или латинского алфавитов;
  •  цифра;
  •  знак препинания;
  •  специальный символ, например, «новая строка».

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

Имя: char;

где Имя — имя переменной символьного типа. Например,

var

 otv: char;

  ch: char;

Переменную типа char можно сравнить с другой переменной типа char или с символьной константой. Сравнение основано на том, что каждому символу поставлено в соответствие число (код), причем выполняются следующие соотношения:

'0'<'1'< .. <'9'< .. <'A'<'B'< .. <'Z'<'a'<'b'< .. <'z'

Символам русского (украинского) алфавита соответствуют числа большие, чем символам латинского алфавита, при этом справедливо следующее:

'А'<'Б'<'В'< .. <'Ю'<'Я'<'а'<'б'<'в'< .. <'э'<'ю'<'я'

В тексте программы вместо символа можно указать его код, поставив перед числом оператор #. Например, вместо константы 'в' можно записать #193. Такой способ записи, как правило, используют для записи служебных символов или символов, которые во время набора программы нельзя ввести с клавиатуры. К примеру, часто используемый при записи сообщений символ «новая строка» записывается так: #13.

В программах обработки символьной информации часто используют функции Chr и Ord. Значением функции Chr является символ, код которого указан в качестве параметра. Например, в результате выполнения инструкции c:=chr(32) переменной с будет присвоено значение пробел. Функция Ord позволяет определить код символа, который передается ей в качестве параметра. Например, в результате выполнения инструкции k:=ord('*') переменная k будет содержать число 42 — код символа *.

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

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

Строковые переменные могут быть представлены следующими типами: Shortstring, Longstring и Widestring. Различаются эти типы предельно допустимой длиной строки, способом выделения памяти для переменных и методом кодировки символов.

Переменной типа Shortstring память выделяется статически, т.е. до начала выполнения программы, и количество символов такой строки не может превышать 255. Переменным типа Longstring и Widestring память выделяется динамически — во время работы программы, поэтому длина таких строк практически не ограничена.

Помимо перечисленных выше типов можно применять универсальный cтроковый тип String. Тип String эквивалентен типу Shortstring.

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

Имя: String; или Имя: String[длина]

где Имя — имя переменной; длина — константа целого типа, задающая максимально допустимую длину строки. Например,

var

 name: string[30];

 buff: string;

Если в объявлении строковой переменной длина строки не указана, то ее длина задается равной 255 символам.

Над строковыми данными допустимы операция сцепления (конкатенации) и операции отношения.

Операция сцепления (конкатенации), обозначаемая символом «+», применяется для соединения двух строк, в результате чего образуется строка, состоящая из символов обоих операндов, в которой символы второго операнда пристыковываются в конец символов первого операнда. Например,

Выражение   Результат

'Object'+' Pascal'  'Object Pascal'

'ABC'+'D'    'ABCD'

'Dom '+'Nomer '+'5/12' 'Dom Nomer 5/12'

Операции отношения (=, <>, >, <, >=, <=) проводят сравнение двух строковых операндов и имеют приоритет более низкий, чем операции сцепления. Сравнение строк производится слева направо до первого несовпадающего символа, и та строка считается больше, в которой первый несовпадающий символ имеет больший номер в таблице символов ASCII. Результат выполнения операций отношения над строковыми операндами всегда имеет булевский тип и принимает значения True или False.

Если сравниваемые строки имеют разную длину, но в общей части символы совпадают, считается, что более короткая строка меньше, чем более длинная. Строки считаются равными, если они полностью совпадают по длине и содержат одни и те же символы. Например,

Выражение     Результат

'COSM1'<'COSM2'    True

'akkord'>'AKKORD'   True

'Printer '<'Printer'   False

'XXXXXX'>'XXXX'    True

'River Dnepr'='River Dnepr' True

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

В язык Delphi включено несколько полезных при работе со строками функций и процедур:

1. Функция length(Строка) возвращает длину строки, т.е. количество символов в параметре Строка. Например, в результате выполнения инструкций

n:=length('Иваненко');

m:=length(' Площадь космонавтов ');

значение переменных n и m будет равно соответственно 8 и 21.

2. Процедура delete(Строка,р,n) позволяет удалить часть строки. Здесь Строка – переменная или константа строкового типа; р – номер символа, с которого начинается удаляемая подстрока; n – длина удаляемой подстроки. Например, в результате выполнения инструкций

s:='Город Санкт-Петербург';

delete(s,7,6);

значением переменной s будет строка 'Город Петербург'.

3. Функция роs(Подстрока,Строка) позволяет определить положение подстроки в строке. Здесь Подстрока – строковая константа или переменная, которую надо найти в строковой константе или переменной Строка. Например, в результате выполнения инструкции

р:=pos('Пе','Санкт-Петербург');

значение переменной р будет равно 7. Если в строке нет искомой подстроки, то значение функции роs будет равно нулю.

4. Функция сору(Строка,р,n) позволяет выделить фрагмент строки. Здесь Строка – выражение строкового типа, содержащее строку, фрагмент которой надо получить; р – номер первого символа, с которого начинается выделяемая подстрока; n – длина выделяемой подстроки. Например, в результате выполнения инструкций

st:='Инженер Иванов';

fam:=copy(st,9,6);

значением переменной fam будет строка 'Иванов'.

2. ОПЕРАТОРЫ ЯЗЫКА DELPHI

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

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

Любому оператору может предшествовать метка, которая используется для передачи управления в эту точку программы с помощью операторов перехода goto.

Операторы отделяются друг от друга символом точка с запятой (;), который не является частью оператора, - это разделитель операторов. Поэтому после последнего оператора программы и после последнего оператора в составном операторе, т.е. перед ключевым словом end, точку с запятой ставить не обязательно. Если же в указанном случае символ «;» все же поставлен, то считается, что после него расположен пустой оператор и ошибкой не является.

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

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

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

Оператор присваивания

Оператор присваивания – основной оператор языка, состоящий из идентификатора переменной или пользовательской функции, символа присваивания «:=» и выражения.

Формат оператора присваивания:

Идентификатор := Выражение;

Оператор присваивания выполняется следующим образом:

  •  Сначала вычисляется значение Выражения, которое находится справа от символа присваивания.
  •  Затем вычисленное значение записывается в переменную, имя которой стоит слева от символа присваивания.

Оператор присваивания считается верным, если тип выражения соответствует или может быть приведен к типу переменной, получающей значение. Например, переменной типа real можно присвоить значение выражения, тип которого real или integer, а переменной типа integer можно присвоить значение выражения только типа integer.

Так, например, если переменные i и n имеют тип integer, а переменная d — тип real, то операторы i:=n/10; i:=1.0; неправильные, а оператор d:=i+1; правильный.

Во время компиляции выполняется проверка соответствия типа выражения типу переменной. Если тип выражения не соответствует типу переменной, то компилятор выводит сообщение об ошибке: Incompatible types ... and ..., где вместо многоточий указывается тип выражения и переменной. Например, если переменная n целого типа, то оператор n:=m/2 неверный, поэтому во время компиляции будет выведено сообщение:

Incompatible types 'Integer' and 'Extended'.

Допускается присваивание значений не только простых, но и структурированных типов, таких как массивы, записи и множества.

Примеры использования операторов присваивания:

var

А,В,С: Real;

i,j,k: Integer;

Flag: Boolean;

Begin

B:=8; C:=5; j:=73; k:= 5; // Присваивание начальных значений

A:=B*C;             // Переменной А присваивается значение 40

i:=j div k;         // Переменной i присваивается значение 14

Flag:=(i<>1) and (B<C);  // Переменной Flag присваивается False

End.

Оператор вызова процедуры

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

Формат оператора вызова процедуры:

Имя_процедуры(Список_фактических_параметров);

Указанные в операторе фактические параметры должны соответствовать описанным в заголовке процедуры формальным параметрам по типу, количеству и взаиморасположению. Перед активизацией тела процедуры происходит передача фактических параметров соответствующим формальным параметрам. Аналогичные действия выполняются при вызове методов, описанных в объектных типах. Например,

Summa(A,m,n,Sum);

Initialize;

Swap(X,Y);

Оператор безусловного перехода

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

Формат оператора безусловного перехода:

Goto Метка;

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

При записи оператора goto необходимо учитывать следующее:

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

Пример использования операторов безусловного перехода:

Program Test_Label;

...

Label P1,P2,P3;  // Описание меток основной программы

Procedure Blok1; // Начало описания пользовательской процедуры

Label B1,B2;     // Описание меток процедуры

 begin

 ...

  B1: goto B2;  // Переход к оператору, помеченному меткой B2

 ...

  B2: goto P2;  // Ошибка – попытка передать управление из блока

 end;

Begin            // Начало блока основной программы

 ...

 P1: goto P2;   // Переход к оператору, помеченному меткой Р2

 ...

 P2: goto B1;   // Ошибка – передача управления в другой блок

 ...

 P3:

End.

Использование оператора goto противоречит принципам структурного программирования, и его использование в программах не рекомендуется. Целесообразнее применять процедуры:

  •  Break – завершает выполнение операторов цикла, в теле которых располагается;
  •  Continue – переход на новую итерацию цикла того оператора, в теле которого находится;
  •  Exit – немедленный выход из текущего блока.

Пустой оператор

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

begin

 goto Metka;     // Переход в конец блока

 ...

 Metka:          // Пустой оператор помечен меткой

end:

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

Структурные операторы включают в себя другие операторы и управляют последовательностью их выполнения. К ним относятся:

1) составной оператор;

2) условные операторы:

- оператор альтернативы if-then-else;

- оператор выбора case-else;

3) операторы цикла:

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

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

- оператор цикла со счетчиком for-to-do (for-downto-do);

4) оператор присоединения with.

Составной оператор

Составной оператор объединяет группу операторов в единое целое, после чего они могут считаться одним оператором. Составной оператор состоит из последовательности объединяемых операторов, разделяемых точкой с запятой, которые располагаются между ключевыми словами begin и end, называемыми операторными скобками.

Формат составного оператора:

Begin

 Оператор_1;

 ...

 Оператор_n

end;

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

Пример составного оператора:

While A<>0 do 

 begin

   Writeln('Введите число');

   Readln(А);

   Writeln('Квадрат числа',А,' = ',A*A)

 end;

Условные операторы

Условные операторы обеспечивают выполнение или невыполнение некоторого оператора, группы операторов или блока в зависимости от заданных условий.

В Delphi включены два условных оператора – if (оператор условия) и case (оператор выбора или варианта), каждый из которых может быть записан в двух формах: полной и неполной.

Полный формат оператора:

if Условие then Оператор_1 else Оператор_2;

Неполный формат:

if Условие then Оператор;

При выполнении условного оператора сначала вычисляется Условие, результат которого может принимать только булевский тип, а затем, в зависимости от значения результата выполняется или Оператор_1, стоящий после ключевого слова then (если результат условия равен True), или Оператор_2, стоящий после ключевого слова else (если результат условия равен False) (рис. 2).

В случае, когда оператор if записан в неполной форме, при значении результата условия False управление передается оператору, следующему непосредственно после оператора if, а Оператор, стоящий за ключевым словом then, пропускается.

Условие может быть простым или сложным. Сложные условия образуются с помощью логических операций not, and, or, xor.

Так как операторы в программе разделяются символом «;», то внутри любого структурного оператора этот разделитель встречаться не должен, иначе все, что стоит после него, будет считаться уже другим оператором.

Пример условного оператора:

Если переменная t обозначает тип соединения сопротивлений в электрической цепи (t=1 соответствует последовательному соединению, t=2 — параллельному), a r1 и r2 — величины сопротивлений, то приведенная ниже инструкция if осуществляет выбор формулы, по которой будет выполнен расчет:

if t=l then

        z:=r1+r2;  Здесь ошибка!!! Точки с запятой не должно быть!

      else

        z:=(r1+r2)/(r1*r2);

Точка с запятой, стоящая перед ключевым словом else заканчивает текст оператора if. А это приводит к синтаксической ошибке, поскольку оператора, начинающегося с ключевого слова else не существует.

По синтаксису после ключевых слов then и else может стоять всего лишь один оператор. Если же в какой-либо из ветвей альтернативы (then или else) или сразу в обоих требуется выполнить несколько операторов, то следует воспользоваться составным оператором, позволяющим интерпретировать группу операторов как один оператор.

Пример условного оператора, включающего составные операторы:

A:=2; B:=8: C:=0;

if A<B then 

 begin

   C:=A+B;

   C:=C+12;

   writeln('C=',C:2)

 end

      else

 begin

   C:=B-A;

   C:=C*12;

   writeln('C=',C:2)

 end;

Допускается вложение условных операторов друг в друга:

if Условие_1 then

  if Условие_2 then

       Оператор_1

  else Оператор_2;

При вложенности операторов соблюдается правило: каждое else соответствует тому then, которое непосредственно ему предшествует, например,

if A<20 then

 if A>=15 then

            writeln('A v diapazone 15-20')

          else

            writeln('A v diapazone 10-14');

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

Формат оператора выбора в полной форме:

case Селектор of

      Список_1: Оператор_1;

      Список_2: Оператор_2;

      ...

      Список_N: Оператор_N

    else Оператор_Е

end;

где Селектор – выражение, значение которого определяет дальнейший ход выполнения программы (т.е. последовательность инструкций, которая будет выполнена). Значением селектора может быть только порядковый тип, общее количество элементов которого не превышает 65535. Селектор может иметь любой простой тип, кроме вещественного. Запрещено также использовать в качестве селектора строковый тип;

Список_i – список констант. Список констант выбора может состоять из произвольного количества значений или диапазонов, отделяемых друг от друга запятыми. Тип констант должен совпадать с типом селектора.

Выполняется оператор case следующим образом (рис. 3):

  •  Сначала вычисляется значение выражения-селектора.
  •  Значение выражения-селектора последовательно сравнивается с константами из списков констант.
  •  Если значение выражения совпадает с константой из списка, то выполняется соответствующая этому списку группа операторов. На этом выполнение инструкции саsе завершается.
  •  Если значение выражения-селектора не совпадает ни с одной константой из всех списков, то выполняется последовательность операторов, следующая за else.

Синтаксис case позволяет не писать else и соответствующую последовательность операторов. В этом случае, если значение выражения не совпадает ни с одной константой из всех списков, то выполняется следующий за case оператор программы.

Примеры использования операторов выбора:

var Symbol: Char;

   ...

   case Symbol of           // Селектор интервального типа

        '0'..'9':     writeln('Eto cifra');

        'a'..'z':     writeln('Eto strochnaya bukva');

        'A'..'Z':     writeln('Eto propisnaya bukva');

        #10,#13,#26:  writeln('Eto upravliauchiy simvol')

     else             writeln('Eto drygoy simvol')

   end;

var i,z: integer;

   ...

   case i of                // Селектор целочисленного типа

     1: z:=i+10;

     2: z:=i+100;

     3: z:=i+1000

   end;

var Season: (Winter, Spring, Summer, Autumn);

   ...

   case Season of           // Селектор перечисляемого типа

     Winter: writeln('Zima');

     Spring: writeln('Vesna');

     Summer: writeln('Leto');

     Autumn: writeln('Osen')

   end;

Операторы повторения

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

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

Для организации циклов используются операторы повторения. Если количество повторов известно заранее, используется оператор цикла со счетчиком (for), если количество повторов заранее неизвестно, то используется либо оператор цикла с предусловием (while), либо оператор цикла с постусловием (repeat).

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

В общем виде оператор while записывается следующим образом:

while Условие do

 begin

   Тело_цикла

      {Многократно выполняемые инструкции}

 end;

где Условие — выражение логического типа, определяющее условие выполнения инструкций цикла.

Оператор while выполняется следующим образом (рис. 4):

  •  Сначала вычисляется значение выражения Условие.
  •  Если значение выражения Условие равно False (условие не выполняется), то на этом выполнение оператора while завершается.
  •  Если значение выражения Условие равно True (условие выполняется), то выполняются расположенные между begin и end инструкции тела цикла. После этого снова проверяется выполнение условия. Если условие выполняется, то инструкции цикла выполняются еще раз. И так до тех пор, пока Условие не станет ложным (False).

Чтобы не произошел эффект «зацикливания», т.е. бесконечное выполнение операторов тела цикла, необходимо предусмотреть в теле цикла определенные действия по изменению параметров, определяющих Условие.

Для того, чтобы инструкции цикла while, которые находятся между begin и end, были выполнены хотя бы один раз, необходимо, чтобы перед выполнением оператора while значение выражения Условие было истинно.

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

Записать фрагмент программы, вычисляющей сумму .

Const

  n=20;              // Описание константы N

Var

  S: Longint;

  i: integer;

begin

  ...

  S:=0;              // Обнуление суммы

  i:=1;              // Начальная установка параметра цикла

  while i<=n do

     begin

       S:=S+sqr(i);  // Накопление суммы

       i:=i+1;       // Изменение параметра цикла

     end;

  ...

end.

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

repeat

     Оператор_1;

     Оператор_2;

     ...

     Оператор_N

until Условие;

где Условие – выражение булевского типа, определяющее условие завершения цикла.

В отличие от оператора while, оператор repeat не требует использования составного оператора, когда в его теле необходимо записать более одного оператора.

Оператор repeat выполняется следующим образом (рис. 5):

  •  Сначала выполняются находящиеся между repeat и until инструкции тела цикла.
  •  Затем вычисляется значение выражения Условие. Если условие ложно (значение выражения Условие равно False), то инструкции тела цикла выполняются еще раз.
  •   Если условие истинно (значение выражения Условие равно True), то выполнение цикла прекращается.

Чтобы не попасть в «зацикливание», по крайней мере, один из операторов тела цикла должен влиять на значение Условие.

Пример использования оператора цикла с постусловием:

Записать фрагмент программы, вычисляющей факториал числа .

Const

  n=20;              // Описание константы N

Var

  P: Longint;

  i: integer;

begin

  ...

  P:=1;  // Начальному значению произведения присваивается 1

  i:=1;  // Начальная установка параметра цикла

  repeat

     Р:=P*i;         // Накопление произведения

     i:=i+1;         // Изменение параметра цикла

  until i>n;

  ...

end.

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

1) Если параметр цикла наращивает свое значение:

for Счетчик:=Нач_знач to Кон_знач do Тело_цикла;

2) Если параметр цикла уменьшает свое значение:

for Счетчик:= Нач_знач downto Кон_знач do Тело_цикла;

где Счетчик – параметр цикла, определяющий текущий номер повторений инструкций цикла; Нач_знач – выражение, определяющее начальное значение счетчика циклов; Кон_знач – выражение, определяющее конечное значение счетчика циклов.

Тело цикла может быть простым или составным оператором.

Количество повторений инструкций цикла можно вычислить по формуле

(Кон_значНач_знач + 1).

Для первой формы оператора for должно выполняться условие Кон_знач >= Нач_знач, а для второй - Нач_знач >= Кон_знач.

Алгоритм, соответствующий инструкции for (для первой формы) представлен на рис. 6. Обратите внимание, что если начальное значение счетчика больше конечного значения, то последовательность операторов, определяющих тело цикла, не будет выполнена ни разу.

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

Переменную-счетчик можно использовать внутри цикла (но ни в коем случае не изменять).

Оператор for обеспечивает выполнение тела цикла до тех пор, пока не будут перебраны все значения параметра цикла – от начального до конечного.

Параметр цикла, его начальное и конечное значения должны принадлежать к одному и тому же типу данных. При этом допустим любой простой тип, кроме вещественного. Если используются типы группы целые и интервальные, то значение параметра цикла последовательно увеличивается (при for .. to) или уменьшается (при for  downto) на 1 при каждом повторе, например:

for i:=10 to 14 do write(i:3);     // Результат: 10 11 12 13 14

for i:=14 downto 10 do write(i:3); // Результат: 14 13 12 11 10

Параметром цикла может служить символьная переменная, например:

for Ch:='a' to 'f' do write(Ch:2);     // Результат: a b c d e f

for Ch:='f' downto 'a' do write(Ch:2); // Результат: f e d c b a

Параметром цикла может быть и переменная перечисляемого типа, например:

var Sort: (S1,S2,S3);

...

for Sort:=S1 to S3 do ...

Пример использования оператора цикла со счетчиком:

Записать фрагмент программы, вычисляющей сумму  и факториал числа .

{Вычисление суммы элементов вектора}

Const

  n=20;               // Описание константы N

Var

  ...

  S,P: Longint;

    i: integer;

begin

  ...

  S:=0;  // Обнуление суммы

  P:=1;  // Начальному значению произведения присваивается 1

  for i:=1 to n do

    begin

      S:=S+sqr(i);    // Накопление суммы

      P:=P*I;         // Накопление произведения

    end;

  ...

end.

Отметим отличия и особенности хорошего стиля работы с рассмотренными циклическими операторами (табл. 8).

Таблица 8. Особенности операторов цикла

Цикл с предусловием while

(пока условие истинно)

Цикл с постусловием repeat

(до истинности условия)

1) До начала цикла должны быть сделаны начальные установки переменных, управляющих условием цикла, для корректного входа в цикл

2) В теле цикла должны присутствовать операторы, изменяющие переменные условия так, чтобы цикл через некоторое число итераций завершился

3) Цикл работает пока условие истинно (пока True)

3) Цикл работает пока условие ложно (пока False)

4) Цикл завершается, когда условие становится ложным (до False)

4) Цикл завершается, когда условие становится истинным (до True)

5) Цикл может не выполниться ни разу, если исходное значение условия при входе в цикл равно False

5) Цикл обязательно выполняется как минимум один раз

6) Если в теле цикла требуется более одного оператора, то надо использовать составной оператор

6) Независимо от количества операторов в теле цикла использование составного оператора не требуется

Цикл со счетчиком for

1) Начальная установка переменной счетчика циклов до заголовка не требуется

2) Изменение в теле цикла значений переменных, стоящих в заголовке цикла, не допускается

3) Количество итераций цикла неизменно и точно определяется значениями нижней и верхней границ и шага цикла

4) Нормальный ход работы цикла может быть нарушен оператором goto или процедурами Break и Continue

5) Цикл может не выполниться ни разу, если шаг цикла будет изменять значение счетчика от нижней границы в направлении, противоположном верхней границе

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

for i:=-10 to 10 do

 for j:=100 downto 10 do

   for k:=1 to 5 do

       A[i,j,k]:=i*j*k;

3. ОРГАНИЗАЦИЯ ВВОДА-ВЫВОДА

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

В языке Delphi стандартными средствами общения человека и компьютера являются предопределенные файлы Input и Output, которые по умолчанию являются параметрами программы. Программа получает входные данные из файла Input и помещает результат обработки в файл Output. Стандартно файлу Input назначена клавиатура, а файлу Outputэкран монитора.

Для выполнения операций ввода-вывода служат четыре предопределенные процедуры: read, readln, write и writeln.

Процедура чтения read обеспечивает ввод числовых данных, символов, строк и т.д. для последующей их обработки программой. Формат ее вызова следующий:

read(X1, X2, ... , Xn);

read(FV, X1, X2, ... , Xn);

где X1, X2, ... , Xn – переменные допустимых типов данных;

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

Конкретные вводимые значения X1, X2, ... , Xn набираются минимум через один пробел на клавиатуре и отображаются на экране. После набора данных для одного оператора read нажимается клавиша ENTER. Значения переменных должны вводиться в строгом соответствии с синтаксисом языка. Если соответствие нарушено (например, Х1 имеет тип integer, a при вводе набирается значение типа real), то возникают ошибки ввода-вывода

Пример ввода данных с клавиатуры:

Var

 I: real;

 J: integer;

 K: char;

Begin

 read(I,J,К);

Первый вариант ввода:

235.98 100 'G' {нормальный ввод}

Второй вариант ввода:

'G' 100 235.98  {ошибочный ввод – нарушение типов данных}

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

Процедуру read можно использовать для организации пауз произвольной длины при выполнении программы. Для этого достаточно записать:

read(Kbd,Ch); // Kbd - имя стандартного файла клавиатуры;

             // Ch - символьная переменная

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

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

readln(A,B);

Sum1:=А+В;

readln(С,D);

Sum2:=С+D;

после набора на клавиатуре значений для А и В курсор автоматически перейдет на новую строку, где будут набираться данные для С и D:

18758  34    [Enter]

2.62E-02  1.54Е+01  [Enter]

Процедура записи write производит вывод числовых данных, символов, строк и булевских значений. Формат ее вызова следующий:

write(Y1, Y2, ..., Yn);

write(FV, Y1, Y2, ..., Yn);

где Y1, Y2, ..., Ynвыражения типа integer, real, char, boolean и т.п.;

 FV – имя файла, куда производится вывод (для вывода на принтер значение файловой переменной FV равно Lst).

Пример вывода данных:

write(234); // Вывод на экран выражения, представленного значением

write(A+B-Z); // Вывод на экран результата выражения

write(Lst,Suma,Argumentl,Argument2); // Вывод на печать значений переменных

write(Lst,'Результат вычислений = ',Rezalt); // Вывод на печать

После записи каждого выражения можно задать целочисленное выражение, определяющее ширину поля вывода.

Введем следующие обозначения:

  •  p, q – целочисленное выражение;
  •  I – выражение целого типа;
  •  R – выражение вещественного типа;
  •  В – выражение булевского типа;
  •  C – выражение символьного типа;
  •  S – выражение строкового типа;
  •  # – цифра;
  •  * – знак + или -;
  •   – пробел.

Таблица 9. Форматы, оператора вывода write

Формат

Пояснение

Примеры

Write(I)

Вывод значения десятичного целого I, начиная с позиции расположения курсора

write(134);                  134

write(-5671);                -5671

write(123,456,7890);         1234567890

Write(I:p)

Вывод значения десятичного целого I в крайние правые позиции поля шириной р

write(134:6);                134

write(1:10);              1

write(312+312:7);            324

Write(R)

В поле шириной 23 символа выводится значение десятичного вещественного R в формате с плавающей точкой. Если R>=0.0, используется формат #.##############Е*####. Если R<0.0, формат имеет вид

-#.##############Е*####.

write(715.432);     7.15432000000000E+0002

write(-1.919E+01);  -1.91900000000000E+0001

write(567.986/2);   2.83993000000000E+0002

Write(R:p)

В крайние правые позиции поля шириной p символов выводится значение десятичного вещественного R в формате с плавающей точкой. Если R >= 0.0, используется формат ...##...#E*####.

Если R < 0.0, формат имеет вид ...-##...#E*####. Минимальная длина поля вывода 10 символов. После десятичной точки выводится, по крайней мере, одна цифра.

write(511.04:15);      5.110400E+0002

write(-511.04:15);     -5.110400E+0002

write(-46.78:12);         -4.678E+0001

Write(R:p:q)

В крайние правые позиции поля шириной p символов выводится значение десятичного вещественного R в формате с фиксированной точкой, причем после десятичной точки выводится q цифр (0<=q<=216), представляющих дробную часть числа. Если q=0 дробная часть не выводятся. Если q>216, то при выводе используются первые 216 цифр.

write(511.04:8:4);        511.0400

write(-46.78:7:2);         -46.78

write(-46.78:9:4);       -46.7800

Write(C)

Начиная с позиции курсора выводится значение символа C

write('X');              X

write('Ю');              Ю

write('!','!','!');      !!!

Write(C:p)

В крайнюю правую позицию поля шириной p выводится значение символа C

write('X':3);               X

write('Я':5);             Я

write('!':2,'!':4);      !!

Write(S)

Начиная с позиции курсора выводится значение строки S

write('Day N');              Day N

write('Vedomost 11');        Vedomost 11

write('RRRDDD','RRRDDD');    RRRDDDRRRDDD

Write(S:p)

Значение строки S выводится в крайние правые позиции поля шириной p символов

write('Day N':10);                Day N

write('Vedomost 11':13);       Vedomost 11

write('RRRDDD':7,'RRRDDD':7); RRRDDDRRRDDD

Write(B)

Вывод значения булевского выражения В (True или False), начиная с текущей позиции курсора

write(True);                  True

write(False, not False);      FalseTrue

Write(B:p)

В крайние правые позиции поля шириной p символов выводится значение результата булевского выражения В

write(True:6);                    True

write(False:10);              False

write(True:5,not True:7);   TrueFalse

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

Процедура writeln, записанная без параметров, вызывает перевод строки.

Пример использования формата в процедуре writeln:

Program Ploshad;      // Вычисление площади прямоугольника

Var

 A,B,Pl: integer;    // А,В – длина сторон, Рl - площадь

Begin

 A:=8; B:=4;

 Pl:=A*B;

 writeln('-----------------------------------');

 writeln('! Storona A ! Storona B ! Ploshad !');

  writeln('-----------------------------------');

 writeln('!',A:7,B:11,Pl:11,'!':5);

 writeln('-----------------------------------');

 readln

End.

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

ВЫВОДЫ

  1.  Выражение в программировании служит для определения порядка выполнения действий над элементами данных и состоит из операндов (констант, переменных, обращений к функциям), круглых скобок и знаков операций.
  2.  По характеру выполняемых действий операции разделяются на арифметические (унарные + и -; бинарные +, -, *, /, div, mod), отношения (=, <>, <, >, <=, >=), булевы (логические) (not, and, or, xor), поразрядные логические и сдвиговые (not, and, or, xor, shl, shr), строковые (конкатенация +). Последовательность выполнения операций в выражении определяется приоритетом операций, порядком расположения операций в выражении и использованием скобок.
  3.  В зависимости от используемых операций и типов операндов выражения бывают арифметическими, логическими, отношения, строковыми и др.
  4.  Операторы предназначены для описания действий, которые будут выполнены при реализации алгоритма. Операторы языка разделяются на две группы: простые и структурные операторы.
  5.  Простые операторы — операторы, которые не содержат в себе других операторов. К ним относятся операторы присваивания, процедуры, безусловного перехода и пустой.
  6.  Структурные операторы включают в себя другие операторы и управляют последовательностью их выполнения. К ним относятся: составной оператор; условные операторы if-then-else и оператор выбора case-else; операторы цикла с предусловием while-do, постусловием repeat-until и со счетчиком for-to-do (for-downto-do).
  7.  Ввод-вывод информации в программе осуществляется с помощью предопределенных процедур read, readln, write и writeln.

Контрольные вопросы

  1.  Что представляет собой выражение?
  2.  Как подразделяются операции по приоритету?
  3.  Какое различие между операциями / и div?
  4.  Какой тип результата имеют операции отношения?
  5.  Какие функции выполняют операторы в языке программирования?
  6.  Как работает оператор присваивания?
  7.  Какие действия выполняет оператор процедуры?
  8.  Что такое составной оператор и какие функции он выполняет?
  9.  Как происходит работа условного оператора if?
  10.  Какой оператор позволяет выполнить одно из нескольких действий в зависимости от результата вычисления выражения?
  11.  Как работает оператор цикла while?
  12.  В чем заключается различие между операторами repeat и while?
  13.  Какие ограничения накладываются на использование оператора for?
  14.  Определите форматы процедур ввода read и readln. Чем отличаются эти процедуры друг от друга?
  15.  Определите форматы процедур вывода write и writeln. Чем отличаются эти процедуры друг от друга?


1

2

3

4

5

6

7

9

10

1

2

3

4

5

6

7

Рис. 1. Операции в сложных выражениях выполняются в соответствии с установленными приоритетами и расставленными скобками

Рис. 2. Алгоритм, реализуемый инструкцией if-then-else

Рис. 3. Алгоритм, реализуемый оператором case 

Рис. 4. Алгоритм оператора while

Рис. 5. Алгоритм, соответствующий оператору repeat

Рис. 6. Алгоритм оператора for 

Рис. 7. Результат вывода на экран

  1.  

 

А также другие работы, которые могут Вас заинтересовать

52092. Африка 69.5 KB
  Проблемный вопрос Почему в природе трех материков – Африки Австралии и Южной Америки много общего Ответ: Потому что все эти материки являются частью единого материка – Гондвана. Какой материал мы будем изучать первым вы узнаете если отгадаете загадку: Этот материк по площади в 3 с лишним раза больше другого и почти такой же по площади как два других материка Какой это материк Ответ: Африка так как по площади он в 3 с лишним раза больше Австралии и почти такой же по площади как Южная Америка и Антарктида вместе взятые. Проблемный...
52093. Африка. Фізико-географічне положення. Історія відкриття й дослідження материка 51 KB
  Вивчення нового матеріалу Відкриття та дослідження Африки Час дослідження Дослідники Результати досліджень ІІІ тис. Експедиція під керівництвом португальця Бартоломеу Діама Здійснила плавання вздовж західних берегів Африки до м. Експедиція під керівництвом португальця Васко да Гама На шляху до Індії дісталася південних берегів Африки. Африки.
52094. Населення і народи Африки 55.5 KB
  Мета уроку: формування первинних знань учнів про етнічний склад населення Африки особливості його формування динаміку і розміщення; сприяти розумінню демографічних проблем Африки та шляхи їх вирішення.Формувати первинні практичні вміння характеризувати загальні риси населення материка; вдосконалювати практичні вміння працювати з тематичними картами атласу. Зміст курсу Географія материків і океанів передбачає не тільки вивчення природи материків але й ознайомлення з характеристиками населення материків та його господарською діяльністю.
52095. Тропічні пустелі та напівпустелі. Твердолисті вічнозелені ліси та чагарники 68.5 KB
  Навчальна мета: повторити вивчений матеріал; зясувати рівень оволодіння учнями навчальним матеріалом з попередніх тем; сформувати знання про особливості розміщення природних зон Африки; поглибити систему знань учнів про взаємозв'язки природних компонентів у складі природних зон; сформувати в учнів уміння складати характеристику природних зон у певній послідовності за типовим планом; удосконалювати практичні вміння учнів працювати з картами атласами. Обладнання: фізична карта Африки кліматична карта Африки карта природних зон Африки...
52096. Африка 63.5 KB
  Посовещавшись команды должны выбрать капитана и название команды можно предложить выбрать из названий стран Африки. Название команды пишут маркером на чистых табличках. За каждый правильный ответы команды получают красные жетоны 2 ВОСХОЖДЕНИЕ на Джомолунгму На доске магнитной нарисована гора с маршрутамиступеньками по количеству команд. Команды выбирают одного игрока – альпиниста который будет защищать честь команды при восхождении.
52097. Загальні особливості клімату Африки. Кліматичні пояси i типи клімату 43 KB
  Мета: повторите поняття клімат вірні чинники типи клімату кліматичний пояс; сформувати знання про загальні особливості клімату Африки про типи клімату в кожному кліматичному поясі Африки; продовжити формування навичок аналізу карти кліматичної карти Африки кліматичних діаграм; розвивати увагу спостережливість вміння робити висновки визначати головне. Найвища точка Африки: а г. Вам уже відомо що більша частина Африки розташована в тропічних широтах екватор перетинає материк майже посередині саме тому Африка протягом року...
52098. Фізико-географічне положення та берегова лінія Африки 49 KB
  Розмістити порядкові номери географічних об’єктів по океанам до яких вони належать Острів Камчатка Острів Шпіцберген Півострів Аравійський Острів Шрі-Ланка Півострів Скандинавський Острови Японські Острів НоваЗемля Острів Ісландія Хребет Ломоносова Острови Бермудські Острів Мадагаскар Море Червоне Острови Гавайські Море Карське Море Чорне Море Берингове Хребет Менделеєва Півострів Індостан Півострів Сомалі Острові Філіппінські Море Азовське Море Саргасове Острови Маріанські ...
52100. Общая характеристика климата Африки 5.32 MB
  Общая характеристика климата Африки Цель: формировать у учащихся систему знаний об общих особенностях климата Африки и основных климатообразующих факторах; совершенствовать практические умения объяснять особенности климата Африки характеризовать влияние климатообразующих факторов на его формирование развивать коммуникативные навыки воспитывать интерес к предмету. Оборудование: физическая карта Африки климатическая карта Африки учебники атласы шаблоны в рабочей тетради приготовлена картосхема Африки. В рабочей тетради вы должны были...