Меню
Бесплатно
Главная  /  Образование  /  Циклы и другие управляющие средства. Структурное программирование

Циклы и другие управляющие средства. Структурное программирование

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

Оператор ветвления (условного перехода) позволяет выполнять определенные команды программы в зависимости от логических условий. В языке Visual Basic оператор ветвления может использоваться в двух видах: строчном и блочном.

интернет-биржа студенческих работ">

Пример 1

Например, If a > b Then max = a Else max = b.

При необходимости выполнения нескольких операторов они разделяются двоеточиями.

Пример 2

Например, If a > 0 Then b = a + 1: c = a\2.

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

Блочный синтаксис:

Условие – логическое выражение, которое может принимать значение True (истина), False (ложь) или Null , которое приравнивается к False . При выполнении блочного оператора ветвления проверяется условие, и, если оно истинно, выполняется оператор, следующий за Then . Если условие не истинно, проверяется условие2 , идущее за ElseIf . Когда истинное значение найдено, выполняется оператор_при_истинномусловии2, который следует за Then , после чего программа выходит за EndIf (т.е. последующие ElseIf , если они есть, не проверяются). Если истинные условия для ElseIf не найдены, выполняется операторпри_ложном_условии.

Рисунок 3. Пример блочного синтаксиса. Автор24 - интернет-биржа студенческих работ

Оператор выбора

Оператор выбора Case выполняет определенные операторы в зависимости от множества значений проверяемого выражения или переменной. Синтаксис оператора выбора:

Рисунок 4. Синтаксис оператора выбора. Автор24 - интернет-биржа студенческих работ

Значение – переменная или выражение, которое проверяется по одному или нескольким условиям. Список значений задается через запятую, диапазон значений задается с помощью служебного слова To (например, 5 To 9).

Пример 3

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

Структурированные операторы - это конструкции, построенные по опреде­ленным правилам из других операторов. К структурированным операторам относятся:

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

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

Операторы выбора

Операторы цикла

Оператор with

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

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

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

begin <Оператор1>; ... ; <ОператорN>;

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

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

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

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

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

If then <Оператор1> ;

Условие представляет собой выражение логического типа. Оператор работа­ет следующим образом: если условие истинно (имеет значение True), то вы­полняется оператор1, в противном случае выполняется оператор2. Оба оператора могут быть составными.

Условный оператор может быть записан в сокращенной форме, когда слово else и оператор2 после него отсутствуют.

Для организации разветвлений на три направления и более можно исполь­зовать несколько условных операторов, вложенных друг в друга. При этом каждое else соответствует тому then, которое непосредственно ему предше­ствует. Из-за возможных ошибок следует избегать большой вложенности условных операторов друг в друга.

3.Оператор выбора

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

Формат оператора выбора:

case<Выражение-селектор> of

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

<СписокN> : <ОператорN>

Выражение-селектор должно быть порядкового типа. Каждый вариант пред­ставляет собой список констант, отделенных двоеточием от относящегося к данному варианту оператора. Список констант выбо­ра состоит из произвольного количества значений и диапазонов, отделен­ных друг от друга запятыми. Границы диапазона записываются двумя кон­стантами через разделитель «..». Тип констант должен соответствовать типу выражения-селектора.

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

1. Вычисляется значение выражения селектора.

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

3. Если для очередного варианта этот поиск успешный, то выполняется оператор этого варианта. После этого выполнение оператора выбора заканчивается.

4. Если все проверки оказались безуспешными, то выполняется оператор, стоящий после слова else (при его наличии).

Пример. Оператор выбора

caseNumberDay of

1..5: strDay:= "Рабочий день";

6..7: strDay:= "Выходной день"

else strDay:="";

В зависимости от значения целочисленной переменной NumberDay, содер­жащей номер дня недели, строковой переменной strDay присваивается со­ответствующее значение.

Глава 6. УПРАВЛЯЮЩИЕ СТРУКТУРЫ Оператор присваивания Простой и составной операторы Условный оператор Оператор множественного выбора Оператор цикла с предусловием Оператор цикла с постусловием Оператор цикла с параметром Оператор и процедуры безусловного перехода


2 Гл. 6. УПРАВЛЯЮЩИЕ СТРУКТУРЫ Оператор присваивания Оператором называется конструкция языка программирования, служащая для задания какого-либо действия или последовательности действий в программе над данными. Совокупность операторов программы реализует заложенный в ней алгоритм. Любой оператор подразумевает некоторое действие. Процесс «засылки» значения в переменную называется присваиванием (первое присваивание называется инициализацией). Присваивание осуществляется с помощью специальной конструкции – оператора присваивания: идентификатор переменной:=:= выражение Var W,H: Integer; Begin W:= 23; H:= 17; W:= W * H; End.


3 Гл. 6. УПРАВЛЯЮЩИЕ СТРУКТУРЫ Простой и составной операторы Два последовательных оператора должны разделяться точкой с запятой (имеет смысл конца оператора): a:= 11; b:= a * a; Write(a,b); Составной оператор – это последовательность операторов, рассматриваемых как единый. Оформляется с помощью зарезервированных слов begin и end (операторные скобки). Оператор в программе это единое неделимое предложение, выполняющее какое-либо действие. Простой оператор не содержит в себе других операторов (оператор присваивания, вызов процедуры,…). begin a:= 11; b:= a * a; Write(a,b) еnd;


5 then begin X:= X + 5; Y:= 1 еnd else Y:= -1; Условный оператор используется для программирования ветвлений, т.е. ситуаций, когда возникает необходимость при определенных условиях выполнять " title="4 Гл. 6. УПРАВЛЯЮЩИЕ СТРУКТУРЫ Условный оператор if K > 5 then begin X:= X + 5; Y:= 1 еnd else Y:= -1; Условный оператор используется для программирования ветвлений, т.е. ситуаций, когда возникает необходимость при определенных условиях выполнять " class="link_thumb"> 4 4 Гл. 6. УПРАВЛЯЮЩИЕ СТРУКТУРЫ Условный оператор if K > 5 then begin X:= X + 5; Y:= 1 еnd else Y:= -1; Условный оператор используется для программирования ветвлений, т.е. ситуаций, когда возникает необходимость при определенных условиях выполнять различные действия. Условный оператор имеет структуру: if логическое выражение then оператор else оператор В каждой ветви допускается запись только одного оператора. 5 then begin X:= X + 5; Y:= 1 еnd else Y:= -1; Условный оператор используется для программирования ветвлений, т.е. ситуаций, когда возникает необходимость при определенных условиях выполнять "> 5 then begin X:= X + 5; Y:= 1 еnd else Y:= -1; Условный оператор используется для программирования ветвлений, т.е. ситуаций, когда возникает необходимость при определенных условиях выполнять различные действия. Условный оператор имеет структуру: if логическое выражение then оператор else оператор В каждой ветви допускается запись только одного оператора."> 5 then begin X:= X + 5; Y:= 1 еnd else Y:= -1; Условный оператор используется для программирования ветвлений, т.е. ситуаций, когда возникает необходимость при определенных условиях выполнять " title="4 Гл. 6. УПРАВЛЯЮЩИЕ СТРУКТУРЫ Условный оператор if K > 5 then begin X:= X + 5; Y:= 1 еnd else Y:= -1; Условный оператор используется для программирования ветвлений, т.е. ситуаций, когда возникает необходимость при определенных условиях выполнять "> title="4 Гл. 6. УПРАВЛЯЮЩИЕ СТРУКТУРЫ Условный оператор if K > 5 then begin X:= X + 5; Y:= 1 еnd else Y:= -1; Условный оператор используется для программирования ветвлений, т.е. ситуаций, когда возникает необходимость при определенных условиях выполнять ">




6 Гл. 6. УПРАВЛЯЮЩИЕ СТРУКТУРЫ Оператор множественного выбора Оператор выбора используется для реализации нескольких альтернативных вариантов действий, каждый из которых соответствует своим значениям некоторого параметра. case выражение of константа/ диапазон else операторы: оператор end ; Значение, а также должны относиться к одному из порядковых типов (кроме LongInt). В зависимости от значения выбирается тот оператор, которому предшествует константа выбора, равная вычисленному значению (альтернатива - операторы после else). Значения констант должны быть уникальными в каждом наборе, т.е. они могут появиться только в одном варианте.


7 Гл. 6. УПРАВЛЯЮЩИЕ СТРУКТУРЫ case I of {I: Word} 1: X:= X +1; 2,3: X:= X +2; 4..9: begin Write(X); X:= X + 3 {м.б. ";"} end {м.б. ";"} else X:= X * X; Writeln(X) {м.б. ";"} end;


8 Гл. 6. УПРАВЛЯЮЩИЕ СТРУКТУРЫ Оператор цикла "Пока" (с предусловием) while условное выражение do оператор (тело цикла), стоящий после служебного слова do, будет выполняться циклически до тех пор, пока выполняется логическое условие, т.е. пока значение равно True. Чтобы цикл имел шанс когда-либо завершиться, содержимое его тела должно влиять на условие цикла. Условие должно состоять из корректных выражений и значений, определенных еще до первого выполнения тела цикла. VarF,N: LongInt;{вычисление 10!} Begin F:= 1; N:= 1; while N


9 Гл. 6. УПРАВЛЯЮЩИЕ СТРУКТУРЫ Оператор цикла "До" (с постусловием) Операторы между словами repeat и until образуют тело цикла. Если имеет значение True, то цикл завершается. Цикл "Пока" - "пока условие истинно, выполнять операторы тела". Цикл "До" - "выполнять тело цикла до тех пор, пока не станет истинным условие"; repeat until False; repea t оператор until условное выражение;


10 Гл. 6. УПРАВЛЯЮЩИЕ СТРУКТУРЫ Оператор цикла c параметром (цикл по счетчику) – переменная порядкового типа, к этому же типу должны относиться значения и. Значение меняется в возрастающем (при использовании зарезервированного слова to) или убывающем (downto) порядке от значения до значения с постоянным шагом, равным интервалу между двумя ближайшими значениями в типе, к которому относится (для целочисленных типов - это 1, для символьного - от одного символа к другому при увеличении кода на 1, и т.д.). Циклы for допускают вложенность, если никакой из вложенный циклов не использует и не модифицирует переменные - параметры внешних циклов. Используется для организации "строгих" циклов, которые должны быть проделаны заданное число раз. fo r параметр цикла:= выражение 1 to выражение 2 do оператор downto


12 Гл. 6. УПРАВЛЯЮЩИЕ СТРУКТУРЫ Оператор безусловного перехода Метка может стоять в программе в любом месте между операторами и отделяется от второго оператора двоеточием ":". Область действия операторов безусловного перехода строго локализована. Запрещены переходы по оператору goto между процедурами, а также между основным блоком и процедурой. Оператор безусловного перехода передает управление выполнением в указанное c помощью метки место программы (является "лишним" с точки зрения теории структурного программирования). goto метка Label целое без знака; идентификатор метки, Синтаксические диаграммы и: LabelL1, L2; Begin... goto L1;... L1: goto L2;... L2: End.


13 Гл. 6. УПРАВЛЯЮЩИЕ СТРУКТУРЫ Процедуры безусловного перехода Процедуры неструктурной передачи управления при работе с циклическими структурами: Break – реализует выход из цикла любого типа; Continue – осуществляет переход на следующую итерацию цикла, игнорируя оставшиеся до конца тела цикла операторы. Процедуры Exit и Halt специально предназначены для выхода из программных блоков (процедур, функций, основного программного блока). Halt () осуществляет выход из программы, возвращая операционной системе заданный код завершения. Exit осуществляет безусловный выход из подпрограммы. Если процедура использована в основном блоке, то она выполняется аналогично Halt.

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


Поделитесь работой в социальных сетях

Если эта работа Вам не подошла внизу страницы есть список похожих работ. Так же Вы можете воспользоваться кнопкой поиск


Тема 2 Управляющие операторы

2.1 Базовые конструкции структурного программирования

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

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

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

Цикл задает многократное выполнение оператора.

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

Рисунок 2.1 – Базовые конструкции структурного программирования

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

Любое выражение, завершающееся точкой с запятой, рассматривается как оператор, выполнение которого заключается в вычислении выражения.

2.2 Операции отношения и логические операции

Операции отношения (<, <=, >, >=, ==, !=) сравнивают первый операнд со вторым. Операнды могут быть арифметического типа или указателями. Результатом операции является значение true или false . Операции сравнения на равенство и неравенство имеют меньший приоритет, чем остальные операции сравнения. Например: x >=0, y != 10, z == 0.

ВНИМАНИЕ! Обратите внимание на разницу между операцией проверки на равенство (== ), результатом которой является true или false , и операцией присваивания (= ), результатом которой является значение, присвоенное левому операнду.

Логические операции (&& , || , ^ ). Операнды логических операций И (&& ), ИЛИ (|| ), ИСКЛЮЧАЮЩЕЕ ИЛИ (^ ) должны иметь тип, допускающий преобразование к типу bool , при этом операнды в одной операции могут быть различных типов. Результатом операции является true или false .

Результат операции логическое И имеет значение true только если оба операнда имеют значение true . Результат операции логическое ИЛИ имеет значение true , если хотя бы один из операндов имеет значение true . Результат операции логическое ИСКЛЮЧАЮЩЕЕ ИЛИ имеет значение true , если один из операндов имеет значение true , а второй – false . Логическое отрицание (!) дает в результате значение false , если операнд есть true , и значение true , если операнд равен false . Операнд может быть арифметического типа. В этом случае выполняется неявное преобразование в тип bool . Логические операции выполняются слева направо. Если значения первого операнда достаточно, чтобы определить результат операции, второй операнд не вычисляется.

Таблица результатов операций И, ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ, НЕ

(A и B – операнды)

A && B

A || B

A ^ B

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

x > 0 && y <=10

(a < -1 && b > 0) || c != 100

Условная операция (? :). Эта единственная в С++ тернарная операция (имеет три операнда), ее формат:

операнд_1 ? операнд_2: операнд_3

Операнды вычисляются слева направо. Результат вычисления первого операнда должен быть типа, который можно преобразовать к типу bool . Если результат равен true , то результатом выполнения всей условной операции будет значение второго операнда, иначе – третьего операнда. Их типы могут быть различными.

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

i = (i < n) ? i + 1: 1;


2.3 Операторы ветвления. Условный оператор if

Условный оператор if используется для разветвления процесса вычислений на два направления. Схема алгоритма оператора приведена на рисунке 2.1. Формат оператора:

if (выражение) оператор_1; [ else оператор_2;]

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

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

Примеры :

if (a < 0) b = 1;

if (a < b && (a >d || a == 0))

B++;

else

{ b *= a; a = 0;}

if (a < b)

if (a < c )

M = a;

else

M = c;

else

If (b < c )

M = b;

else

m = c ;

В примере 1 отсутствует ветвь else . Подобная конструкция называется "пропуск оператора", поскольку присваивание либо выполняется, либо пропускается в зависимости от выполнения условия.

Если требуется проверить несколько условий, их объединяют знаками логических операций . Например, выражение в примере 2 будет истинно в том случае, если выполнится одновременно условие a < b и одно из условий в скобках. Если опустить внутренние скобки, будет выполнено сначала логическое И, а потом – ИЛИ.

Оператор в примере 3 вычисляет наименьшее значение из трех переменных.

По синтаксису оператора if в его ветвях должно быть не более одного оператора. Если же их больше, то они должны быть объединены в блок с помощью фигурных скобок или с помощью операции «запятая» (,).

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

Рисунок 3.2 – Мишень

#include

int main()

float x, y;

int kol;

Printf ("\ n Введите координаты выстрела ");

Scanf ("%f", &x);

Scanf ("%f", &y);

If (x * x + y * y < 1)

Kol = 2;

Else

If (x*x + y*y < 4)

kol = 1;

else

kol = 0;

printf ("\n Очков : %d", kol);

2.4 Операторы ветвления. Оператор множественного выбора switch

Оператор switch (переключатель) предназначен для разветвления процесса вычислений на несколько направлений. Формат оператора:

switch (выражение)

Case константное_выражение_1: операторы 1;

Case константное_выражение_2: операторы 2;

...

Case константное_выражение_n: операторы n;

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

Все константные выражения должны иметь разные значения, но быть одного и того же целочисленного типа . Несколько меток могут следовать подряд. Если совпадения не произошло, выполняются операторы, расположенные после слова default (а при его отсутствии управление передается следующему за switch оператору).

Если в какой-то из case -меток отсутствует оператор break , то выполнятся также операторы в следующей case -метке и так далее до тех пор, пока где-то не встретится оператор break .

Пример (программа реализует простейший калькулятор на 4 действия):

#include

int main()

int a, b, res;

char op;

printf ("\ n Введите 1-й операнд: ");

scanf ("% d ", & a );

printf ("\ n Введите знак операции: ");

scanf ("% c ", & op );

printf ("\ n Введите 2-й операнд: ");

scanf ("% d ", & b );

bool f = true ;

Switch (op)

Case "+": res = a + b; break;

Case "-": res = a - b; break;

Case "*": res = a * b; break;

Case "/": res = a / b; break;

default : printf ("\n Неизвестная операция"); f = false;

if (f )

printf ("\ n Результат: % d ", res );

Выход из переключателя обычно выполняется с помощью операторов break или return .

2.5 Операторы цикла

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

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

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

Рисунок 3.3 – Два вида циклов

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

Нельзя передавать управление извне внутрь цикла. Выход из цикла возможен как при выполнении условия выхода, так и по операторам break , return или безусловного перехода goto .

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

Цикл с предусловием реализует схему алгоритма

while (выражение) оператор;

Например:

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

значений функции y=x 2 +1 во введенном диапазоне):

#include

int main()

float Xn, Xk, Dx;

float X = Xn; //начальные установки цикла

While (X <= Xk) //проверка условия выхода

Printf ("\n %5.2f %5.2f", X, X*X + 1); // тело

X += Dx; //модификация

2.7 Цикл с постусловием (do while)

Цикл с постусловием реализует схему алгоритма , приведенную ниже, и имеет вид:

do оператор while выражение;

Сначала выполняется простой или составной оператор , составляющий тело цикла, а затем вычисляется выражение. Если оно не равно 0 (истинно), тело цикла выполняется еще раз, и так далее, пока выражение не станет равным нулю (ложно) или в теле цикла не будет выполнен какой-либо оператор передачи управления . Тип выражения должен быть арифметическим или приводимым к нему.

Пример (программа осуществляет проверку ввода):

#include

int main()

char answer;

printf ("\ n Купи слоника!");

scanf ("% c " , &answer) ;

while (answer != "y");

2.8 Цикл for

Цикл for реализует схему алгоритма, приведенную ниже, и имеет вид:

for (блок инициализации; блок проверки условия; блок модификации)

Тело цикла;

Пример :

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

Блок проверки условия определяет условие выполнения цикла: если оно не равно 0 (истинно), цикл выполняется.

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

Простой или составной оператор представляет собой тело цикла . Любая из частей оператора for может быть опущена (но точки с запятой надо оставить на своих местах!). В любой части можно использовать операцию "запятая" (последовательное вычисление), например:

for (int i = 1, s = 0; i <= 100; i++)

S += i; // сумма чисел от 1 до 100

Пример (программа печатает таблицу значений функции y=x 2 +1 во введенном диапазоне):

#include

int main()

float Xn, Xk, Dx;

printf ("Введите диапазон и шаг изменения аргумента: ");

scanf ("%f%f%f", &Xn, &Xk, &Dx);

For (float X = Xn; X <= Xk; X += Dx)

Printf ("\n %5.2f %5.2f", X, X*X + 1);

2.9 Вложенные циклы

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

Ниже приведён пример вложенных циклов for

Этот фрагмент программы работает следующим образом. Для одного значения параметра внешнего цикла i (например, i = 1 ) параметр внутреннего цикла j изменяется в диапазоне от минимального до максимального значения (от 1 до M ). Только после этого параметр i увеличивается на единицу. Таким образом, тело цикла выполнится N * M раз.

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

2.10 Операторы передачи управления

В С++ есть пять операторов, изменяющих естественный порядок выполнения вычислений:

  • оператор выхода из цикла и переключателя break ;
  • оператор перехода к следующей итерации цикла continue ;
  • оператор возврата из функции return ;
  • оператор безусловного перехода goto ;
  • оператор генерации исключения throw .

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

Рассмотрим его использование на примере открытого итеративного цикла for . На примере вычисления суммы чисел от 1 до 100.

int i = 1, sum = 0;

for (; ;)

If(i > 100) break;

sum += i ;

i ++;

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

Рассмотрим его использование на примере вычисления суммы 1 / x , если x изменяется в диапазоне [-5, 5].

#include

int main()

float X, Sum = 0;

for (X = -5; X <= 5; X++)

If(X == 0)

Continue;

Sum = Sum + 1 / X;

Printf ("\n Sum = %f", Sum);

Оператор возврата из функции return завершает выполнение функции и передает управление в точку ее вызова. Мы рассмотрим его вместе с функциями в соответствующей теме.

Оператор безусловного перехода goto имеет формат:

goto метка;

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

метка: оператор;

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

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

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

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

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

Другие похожие работы, которые могут вас заинтересовать.вшм>

2784. Операторы условия и выбора 16 KB
Оператор условия If. Поэтому Вы уже можете записать следующие операторы присваивания: Koren:=Sqrtxy; Modul:=bsxy. Для реализации таких условных переходов в языке Паскаль используют операторы If и Else а также оператор безусловного перехода Goto. Рассмотрим оператор If.
2750. Операторы Write и WriteLn 12.34 KB
Write англ. Оператор WriteLn выполняет то же самое действие но так как у него есть еще окончание Ln line англ. Общий вид: Write список выражений WriteLn список выражений Процедуры Write и WriteLn используются не только для вывода результата но и для вывода различных сообщений или запросов.
6706. Структурированный язык запросов – SQL: история, стандарты, основные операторы языка 12.1 KB
Структурированный язык запросов SQL основан на реляционном исчислении с переменными кортежами. Язык SQL предназначен для выполнения операций над таблицами создание удаление изменение структуры и над данными таблиц выборка изменение добавление и удаление а также некоторых сопутствующих операций. SQL является непроцедурным языком и не содержит операторов управления организации подпрограмм ввода вывода и т.

Самая простая структура - следование. Ее можно представить так:

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

Структура развилка (если - то - иначе) служит для выбора одного из двух возможных путей выполнения алгоритма. Ее основой служит проверка. Выглядит развилка так:

Структуры ЕСЛИ-ТО-ИНАЧЕ бывают вложены друг в друга, к примеру, таким образом.

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

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

Здесь символом "Р" по-прежнему обозначается условие, исходя из выполнения которого производится выбор одного из возможных путей.

При разработке алгоритмов часто возникает крайне важно сть повторения какой-либо операции или группы операций. Для изображения таких фрагментов алгоритма предусмотрены специальные структуры - циклы. Οʜᴎ бывают трех типов: цикл-пока, цикл-до и цикл со счетчиком. Работа цикла-пока изображается следующей блок-схемой.

Перед первым выполнением блока операторов, который принято называть телом цикла, проверяется условие "Р" и, в случае если оно истинно, то тело цикла выполняется, и управление возвращается на начало цикла. Далее опять проверяется условие, и так до тех пор, пока условие цикла не станет ложным. В этом случае выполнение цикла прекращается. Он выполняется до тех пор, пока условие выполняется.

Цикл-до организован по- другому.

Проверка истинности условия цикла производится после выполнения тела цикла, и выход из него осуществляется при истинности условия. Τᴀᴋᴎᴍ ᴏϬᴩᴀᴈᴏᴍ, тело цикла выполняется всœегда один раз в отличие от цикла-пока , который при невыполнении условия цикла не выполняется ни разу.

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

Из нее видно, что данный цикл является частным случаем цикла-пока , но так как данный случай встречается часто, то в языках программирования, в частности, в VBA, для описания цикла со счетчиком введен специальный оператор.
Размещено на реф.рф
По этой причине мы и выделили для этого цикла специальную структуру.

В качестве примера рассмотрим блок-схему нахождения максимального элемента в таблице из N чисел.

Здесь Мах - максимальное число, i - номер числа в таблице чисел X, N - размер таблицы. Блок-схема содержит следующие структурные конструкции: следование, цикл-пока, который выполняется до тех пор, пока номер проверяемого числа меньше или равен размеру таблицы, и развилку, в которой выбирается путь, содержащий присваивание текущего числа из таблицы переменной Мах, в том случае, в случае если эта переменная меньше текущего числа.

Основные управляющие структуры - понятие и виды. Классификация и особенности категории "Основные управляющие структуры" 2017, 2018.