Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Структурные операторы в алгоритмических языках программирования




 

Программная логика всех языков программирования строится таким образом, что выполнение программы происходит «слева направо» при обработке выражений и операторов в строках программы и «сверху вниз» по ходу строк программы. Тогда как простейшие программы могут быть написаны с использованием такого однонаправленного последовательного выполнения, то большинство сложных реальных программ и алгоритмов требует возможности изменения порядка следования операторов с помощью специальных программных управляющих структур (сontrol structures) – операторов управления потоком программы. Как уже упоминалось, теоретический анализ ЯП показывает, что любой сколь угодно сложный алгоритм программы может быть реализован с помощью трех фундаментальных управляющих структур:

· управляющая структура следования или так называемый линейный алгоритм. Этой структуре соответствует естественный порядок однонаправленного исполнения;

· управляющая структура ветвления (decision structure) или структура выбора, которой соответствует такой порядок выполнения операторов, при котором в зависимости от условия (некоторого логического выражения) блок операторов может, быть либо выполнен, либо нет;

· управляющая структура повторения  (loop structure), которой соответствует такой порядок выполнения операторов, при котором блок операторов может быть повторно выполнен некоторое количество раз в зависимости от некоторого условия или состояния переменной-счетчика цикла (loop counter).

Основным признаком структурного оператора является возможность размещать внутри себя другие операторы (отсюда и такое название – структурный). Простейшим структурным оператором является составной оператор (compound) или так называемые операторные скобки (statement brackets).

В языках C/C++ и OP декларируется, что в том месте, где может быть поставлен одиночный оператор, может быть поставлен и операторный блок, состоящий из операторных скобок и расположенных внутри них других операторов. Такой операторный блок может рассматриваться как неделимое целое со сложной внутренней структурой. Операторный блок в C/C++ ограничивается фигурными скобками «{ }», между которыми находится последовательность одиночных операторов:

 

{

int x;

double y;

x = 1;

y = 0.1;

x = x + y; y = y + 0.1;

};

 

Операторные скобки в OP реализованы с помощью ключевых слов BEGIN и END,которые открывают и закрывают операторный блок:

Begin

x := 1;

y := 0.1;

x := x + y; y := y + 0.1;

end;

 

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

 

Begin

x := 1;

begin

            y := 2;

end;

end;

 

причем в С/С++ операторные скобки ограничивают область видимости переменных. Так, в следующем примере показаны вложенные операторные скобки с объявлением двух различных, но одноименных переменных:

 

{

       int x = 1;

       {

             int x = 2; // это другая переменная х

       }

}

 

Управляющие структуры выбора

 

Основным элементом любого оператора ветвления, реализующего структуру выбора, является логическое выражение, которое строится с использованием операторов сравнения (relational operators) и логических операторов (logic operators). Во всех ЯП определен схожий набор операторов сравнения и логических операторов. К основным из них относятся операторы сравнения:

· равенство – =;

· неравенство – <>;

· меньше – <;

· больше – >;

· меньше или равно – <=;

· больше или равно – > =.

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

 

x = 10

bRes = x < 10

 

Истинное значение булевского типа в ЯП обозначается ключевым словом TRUE, а ложное – FALSE.

К выражениям и переменным, возвращающим логическое значение применимы логические операторы:

· NOT – логическое отрицание;

· AND – логическое умножение;

· OR – логическое сложение;

· XOR – логическое сложение по модулю 2 (исключающее ИЛИ);

Оператор NOTявляется однооперандным оператором, изменяющим значение логического выражения на противоположное. В следующем примере булевская переменная принимает значение FALSE:

 

x := 100;

bSwitch := not (x < 10);

 

Данная логическая операция имеет следующую таблицу истинности, в которой «0» соответствует значению FALSE, а «1» – TRUE (табл 1).

 

Таблица 1. Таблица истинности оператора логического отрицания

x not x
0 1
1 0

 

Остальные логические операторы являются двухоперандными. Операция логического умножения AND имеет следующую таблицу истинности (табл 2):

 

Таблица 2. Таблица истинности оператора логического умножения

x y x and y
0 0 0
0 1 0
1 0 0
1 1 1

 

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

 

Таблица 3. Таблица истинности оператора логического сложения

x y x or y
0 0 0
0 1 1
1 0 1
1 1 1

Наконец операция логического исключающего или представляется следующей таблицей истинности (табл 4):

 

Таблица 4. Таблица истинности оператора логического исключающего ИЛИ

x y x xor y
0 0 0
0 1 1
1 0 1
1 1 0

 

В языке C/C++ в отличие от OP и VB логические операторы синтаксически реализованы в виде символов: ! – логическое отрицание, && – логическое умножение, | | – логическое сложение и ^ – логическое исключающее ИЛИ. Например:

 

x = 100;

bSwitch = not(x < 10);

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

 

Реализация управляющих структур выбора в VB

 

В VB определены несколько операторов реализующих различные варианты структуры выбора. Наиболее простым оператором ветвления является оператор IF … THEN, который имеет следующий формат:

 

       If <condition> Then

       <Statements>

End If

 

Лексический элемент <condition> – представляет собой выражение или переменную, возвращающее логическое значение, а <statements> – оператор или блок операторов.

Несмотря на то, что в VB в явном виде отсутствуют операторные скобки, однако они реализованы неявно в каждом структурном операторе. Для этого любой структурный оператор в VB ограничивается «снизу» специальными завершающими ключевыми словами. Для оператора IF … THEN такими ключевыми словами являются лексическая связка END IF.

Действие оператора IF … THEN приводит к выполнению блока операторов <statements> внутри структуры, в случае если выражение <condition> возвращает истинное булевское значение. Например:

           

x = 33

If x > 10 Then

       x = x + 10

y = x + 5

End If

 

Второй оператор ветвления типа IF…THEN…ELSEслужит для реализации алгоритмической структуры, в которой имеется несколько блоков операторов, один из которых будет выполнен. Общая структура оператора может быть представлена в виде:

If <condition_1> Then

       <Statements>

[ElseIf <condition_2> Then]

.

.

.

[ElseIf <condition_n> Then

[<Statements_n>]]

[Else

[<Statemens>]]

End If

 

При исполнении оператора сначала обрабатывается выражение <condition_1>, если оно возвращает ложное булевское значение, то проверяется <condition_2> и так далее до тех пор, пока не будет найдено условное выражение возвращающее истинное значение. После этого будет выполнен соответствующий блок операторов. Если не нашлось ни одного верного условного выражения будет выполнен операторный блок, следующий за ключевым словом ELSE. Например:

 

If x >= 0 andx < 10 Then

y = Sin(x)

ElseIf x >= 10 andx < 15 Then

y = Cos(x)

ElseIf x >= 15 andx < 20 Then

y = Cos(x)/sin(x)

Else

y = x^2

End If

 

Наконец, VB предоставляет в распоряжение управляющую структурутипаSELECT … CASE альтернативную оператору IF…THEN…ELSEдля выбора исполняемого блока операторов из нескольких. Этот оператор имеет меньше возможностей, но позволяет сделать код программы более удобочитаемым. Формат оператора имеет вид:

 

Select Case <testexpression>

[Case <expressionlist1>

[<statementblock_1>]]

[Case <expressionlist2>

[<statementblock_2>]

.

.

.

[Case Else

[<statementblock_2>]]

End Select

 

В начале этого оператора, после ключевых слов SELECT CASE, следует выражение <testexpression>, которое возвращает числовое или булевское значение. За ключевым словом CASEуказывается список значений <expressionlist1>, совпадение элемента которого со значением <testexpression> определяет выполнение операторного блока CASE. Последний пример с использованием оператора SELECT CASEбудет иметь вид:

 

Select Case  Index

Case 0

y = Sin(x)

Case 1

y = Cos(x)

       Case 2

y = Cos(x)/sin(x)

Case Else

       y = x^2

End Select

 










Последнее изменение этой страницы: 2018-04-12; просмотров: 529.

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