Привет, Вы узнаете про управляющие конструкции языка си, Разберем основные ее виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое управляющие конструкции языка си , настоятельно рекомендую прочитать все из категории Алгоритмизация и программирование. Структурное программирование. Язык C.
Управляющие конструкции
Управляющие конструкции позволяют организовывать циклы и ветвления в программах. В Си всего несколько конструкций, причем половину из них можно не использовать (они реализуются через остальные).
Управляющая конструкция — Фигурные скобки
Фигурные скобки позволяют объединить несколько элементарных операторов в один составной оператор, или блок. Во всех синтаксических конструкциях составной оператор можно использовать вместо простого.
В Си в начало блока можно помещать описания локальных переменных. Локальные переменные, описанные внутри блока, создаются при входе в блок и уничтожаются при выходе из него.
Управляющие конструкции (операторы).
В C++ локальные переменные можно описывать где угодно, а не только в начале блока. Тем не менее, они, так же как и в Си, автоматически уничтожаются при выходе из блока.
Приведем фрагмент программы, обменивающий значения двух вещественных переменных:
double x, y; . . .
Здесь, чтобы обменять значения двух переменных x и y , мы сначала запоминаем значение x во вспомогательной переменной tmp . Затем в x записывается значение y , а в y — сохраненное в tmp предыдущее значение x . Поскольку переменная tmp нужна только внутри этого фрагмента, мы заключили его в блок и описали переменную tmp внутри этого блока. По выходу из блока память, занятая переменной tmp , будет освобождена.
Управляющая конструкция — Оператор if
Оператор if («если») позволяет организовать ветвление в программе. Он имеет две формы: оператор «если» и оператор «если. иначе». Оператор «если» имеет вид
if (условие) действие;
оператор «если. иначе» имеет вид
if (условие) действие1; else действие2;
В качестве условия можно использовать любое выражение логического или целого типа. Напомним, что при использовании целочисленного выражения значению «истина» соответствует любое ненулевое значение. При выполнении оператора «если» сначала вычисляется условное выражение после if . Если оно истинно, то выполняется действие, если ложно, то ничего не происходит. Например, в следующем фрагменте в переменную m записывается максимальное из значений переменных x и y :
double x, y, m; . . . m = x; if (y > x) m = y;
При выполнении оператора «если. иначе» в случае, когда условие истинно, выполняется действие, записанное после if ; в противном случае выполняется действие после else . Например, предыдущий фрагмент переписывается следующим образом:
double x, y, m; . . . if (x > y) m = x; else m = y;
Когда надо выполнить несколько действий в зависимости от истинности условия, следует использовать фигурные скобки, объединяя несколько операторов в блок, например,
10. Управляющая конструкция if then.
double x, y, d; . . . if (d > 1.0) < x /= d; y /= d; >
Здесь переменные x и y делятся на d только в том случае, когда значение d больше единицы.
Фигурные скобки можно использовать даже, когда после if или else стоит только один оператор. Они улучшают структуру текста программы и облегчают ее возможную модификацию. Пример:
double x, y; . . . if (x != 0.0)
Если нужно будет добавить еще одно действие, выполняемое при условии » x отлично от нуля», то мы просто добавим строку внутри фигурных скобок.
Управляющая конструкция — Выбор из нескольких возможностей: if. else if.
Несколько условных операторов типа «если. иначе» можно записывать последовательно (т.е. действие после else может снова представлять собой условный оператор). В результате реализуется выбор из нескольких возможностей. Конструкция выбора используется в программировании очень часто. Пример: дана вещественная переменная x , требуется записать в вещественную переменную y значение функции sign(x) :
sign(x) = -1, при x < 0 sign(x) = 1, при x >0 sign(x) = 0, при x = 0
Это делается с использованием конструкции выбора:
double x, s; . . . if (x < 0.0) < s = (-1.0); >else if (x > 0.0) < s = 1.0; >else
При выполнении этого фрагмента сперва проверяется условие x < 0.0 . Если оно истинно, то выполняется оператор s = (-1.0) ; иначе проверяется второе условие x >0.0 . В случае его истинности выполняется оператор s = 1.0 , иначе выполняется оператор s = 0.0 . Фигурные скобки здесь добавлены для улучшения структурности текста программы.
В любом случае, в результате выполнения конструкции выбора исполняется лишь один из операторов (возможно, составных). Условия проверяются последовательно сверху вниз. Как только находится истинное условие, то производится соответствующее действие и выбор заканчивается.
Управляющая конструкция — Цикл while
Конструкция цикла «пока» соответствует циклу while в Си:
while (условие) действие;
Цикл while называют циклом с предусловием, поскольку условие проверяется перед выполнением тела цикла.
Цикл while выполняется следующим образом: сначала проверяется условие. Если оно истинно, то выполняется действие. Затем снова проверяется условие ; если оно истинно, то снова повторяется действие, и так до бесконечности. Цикл завершается, когда условие становится ложным. Пример:
int n, p; . . . p = 1; while (2*p
В результате выполнения этого фрагмента в переменной p будет вычислена максимальная степень двойки, не превосходящая целого положительного числа n .
Если условие ложно с самого начала, то действие не выполняется ни разу. Это очень облегчает программирование и делает программу более надежной, поскольку исключительные ситуации автоматически правильно обрабатываются. Так, приведенный выше фрагмент работает корректно при n = 1 (цикл не выполняется ни разу).
При ошибке программирования цикл может никогда не кончиться. Чтобы избежать этого, следует составлять программу таким образом, чтобы некоторая ограниченная величина, от которой прямо или косвенно зависит условие в заголовке цикла, монотонно убывала или возрастала после каждого выполнения тела цикла. Это обеспечивает завершение цикла. В приведенном выше фрагменте такой величиной является значение p , которое возрастает вдвое после каждого выполнения тела цикла.
Тело цикла может состоять из одного или нескольких операторов. В последнем случае их надо заключить в фигурные скобки. Советуем заключать тело цикла в фигурные скобки даже в том случае, когда оно состоит всего из одного оператора, — это делает текст программы более наглядным и облегчает его возможную модификацию . Об этом говорит сайт https://intellect.icu . Например, приведенный выше фрагмент лучше было бы записать так:
int n, p; . . . p = 1; while (2*p
Сознательное применение цикла «пока» всегда связано с явной формулировкой инварианта цикла, см. раздел 1.5.2.
Выход из цикла break, переход на конец цикла continue
Если необходимо прервать выполнение цикла, следует использовать оператор
break;
Оператор break применяется внутри тела цикла, заключенного в фигурные скобки. Пример: требуется найти корень целочисленной функции f(x) , определенной для целочисленных аргументов.
int f(int x); // Описание прототипа функции . . . int x; . . . // Ищем корень функции f(x) x = 0; while (true) < if (f(x) == 0) < break; // Нашли корень >// Переходим к следующему целому значению x // в порядке 0, -1, 1, -2, 2, -3, 3, . if (x >= 0) < x = (-x — 1); >else < x = (-x); >> // Утверждение: f(x) == 0
Здесь используется бесконечный цикл » while (true) «. Выход из цикла осуществляется с помощью оператора » break «.
Иногда требуется пропустить выполнение тела цикла при каких-либо значениях изменяющихся в цикле переменных, переходя к следующему набору значений и очередной итерации. Для этого используется оператор
continue;
Оператор continue , так же, как и break , используется лишь в том случае, когда тело цикла состоит более чем из одного оператора и заключено в фигурные скобки. Его следует понимать как переход на фигурную скобку, закрывающую тело цикла.
Управляющая конструкция — Оператор перехода на метку goto
Оператор перехода goto позволяет изменить естественный порядок выполнения программы и осуществить переход на другой участок программы, обозначенный меткой. Переход может осуществляться только внутри функции, т.е. оператор goto не может ни выйти из функции, ни войти внутрь другой функции. Оператор goto выглядит следующим образом:
L: . ; . . . goto L;
В качестве метки можно использовать любое имя, допустимое в Си (т.е. последовательность букв, цифр и знаков подчеркивания » _ «, начинающуюся не с цифры). Метка может стоять до или после оператора goto . Метка выделяется символом двоеточия » :». Лучше после него сразу ставить точку с запятой » ; «, помечая таким образом пустой оператор — это общепринятая программистская практика, согласно которой метки ставятся между операторами, а не на операторах.
Не следует увлекаться использованием оператора goto — это всегда запутывает программу. Большинство программистов считают применение оператора goto дурным стилем программирования. Вместо goto при необходимости можно использовать операторы выхода из цикла break и пропуска итерации цикла continue (см. раздел 3.5.7). Единственная ситуация, в которой использование goto оправдано, — это выход из нескольких вложенных друг в друга циклов:
while (. ) < . . . while (. ) < . . . if (. ) < goto LExit; // Выход из двух // вложенных циклов >. . . > > LExit: ;
- В объектно-ориентированном языке Java, синтаксис которого построен на основе языка Си, использование оператора goto запрещено. Вместо него для выхода из нескольких вложенных друг в друга циклов применяется форма оператора break с меткой. Меткой помечается цикл, из которого надо выйти:
Loop1: while (. ) < . . . while (. ) < . . . break Loop1; // Выход из цикла, // помеченного меткой Loop1 . . . >. . . >
Управляющая конструкция — Цикл for
Популярный в других языках программирования арифметический цикл в языке Си реализуется с помощью цикла for . Он выглядит следующим образом:
for (инициализация; условие продолжения; итератор) тело цикла;
Инициализация выполняется один раз перед первой проверкой условия продолжения и первым выполнением тела цикла. Условие продолжения проверяется перед каждым выполнением тела цикла. Если условие истинно, то выполняется тело цикла, иначе цикл завершается. Итератор выполняется после каждого выполнения тела цикла (перед следующей проверкой условия продолжения).
Поскольку условие продолжения проверяется перед выполнением тела цикла, цикл for является, подобно циклу while , циклом с предусловием. Если условие продолжения не выполняется изначально, то тело цикла не выполняется ни разу, а это хорошо как с точки зрения надежности программы, так и с точки зрения простоты и эстетики (поскольку не нужно отдельно рассматривать исключительные случаи).
Рассмотрим пример суммирования массива с использованием цикла for :
double a[100]; // Массив a содержит не более 100 эл-тов int n; // Реальная длина массива a (n
Здесь целочисленная переменная i используется в качестве переменной цикла. В операторе инициализации переменной i присваивается значение 0 . Условием продолжения цикла является условие i. Итератор ++i увеличивает переменную i на единицу. Таким образом, переменная i последовательно принимает значения 0 , 1 , 2 . n-1 . Для каждого значения i выполняется тело цикла.
В большинстве других языков программирования арифметический цикл жестко связан с использованием переменной цикла, которая должна принимать значения из арифметической прогрессии. В Си это не так, здесь инициализация, условие продолжения и итератор могут быть произвольными выражениями, что обеспечивает гораздо большую гибкость программы. Конструкцию цикла for можно реализовать с помощью цикла while :
for (инициализация; условие; итератор;)
инициализация; while (условие)
Источник: intellect.icu
Основные управляющие конструкции программирования
В соответствии с концепцией структурного программирования, предложенной Н. Виртом, любая программа представляет собой структуру, построенную из трёх типов базовых конструкций:
последовательное исполнение– однократное выполнение операций в том порядке, в котором они записаны в тексте программы;
ветвление– однократное выполнение одной из двух или более операций, в зависимости от выполнения некоторого заданного условия;
цикл– многократное исполнение одной и той же операции до тех пор, пока выполняется некоторое заданное условие – условие продолжения цикла.
В программе базовые конструкции могут быть вложены друг в друга произвольным образом, но никаких других средств управления последовательностью выполнения операций не предусматривается.
Оператор ветвления (условная инструкция, условный оператор) –конструкцияязыка программирования, обеспечивающая выполнение определённой команды или набора команд только при условии истинности некоторого логического выражения, либо выполнение одной команды из набора команд в зависимости от значения некоторого выражения.
Существует две основные формы применения оператора ветвления, встречающиеся в языках программирования: условный оператор и оператор многозначного выбора.
Условный оператор реализует выполнение определённых команд при условии, что некоторое логическое выражение (условие) принимает значение «истина» (true).
В общем случае синтаксис условного оператора с одной ветвью в среде программирования MATLAB имеет следующий вид:
Else
End
Набор операторов представляет собой тело выражения, операторы 1 выполняются только в том случае, если условие истинно, если условие ложно, то выполняются операторы 2. Применение конструкции с использованием команды else не является обязательным, в том случае если отсутствуют операторы 2.
В случае наличия нескольких условий конструкция условного оператора имеет следующий вид:
Else
End
В системеMATLAB могут применяться следующие операторысравнения:
> – больше;
>= – больше или равно;
= – равно;
~= – не равно.
ВMATLAB возможно выполнение следующих логических операций:
| – логическое«или» (or);
~ – логическое отрицание(not).
Результатом логических операций являются числа:0 в том случае, если условие ложно и1 – если условие истинно.
Оператор многозначного выбора имеет несколько ветвей и при этом выполняет одну заданную ветвь в зависимости от значения вычисляемого ключевого выражения. Принципиальным отличием данной конструкции от условного оператора является то, что выражение, определяющее выбор исполняемой ветви, возвращает не логическое, а целое значение, либо значение, тип которого может быть приведён к целому.
Синтаксис оператора многозначного выборав среде программирования MATLAB имеет следующий вид:
Otherwise
End
Применение конструкции с использованием команды otherwise не является обязательным, в том случае если отсутствуют операторы n.
Цикл – разновидность управляющей конструкции ввысокоуровневых языках программирования, предназначенная для организации многократного исполнения набораинструкций.
Последовательность инструкций, предназначенная для многократного исполнения, называется телом цикла. Единичное выполнение тела цикла называется итерацией. Выражение, определяющее, будет в очередной раз выполняться итерация, или цикл завершится, называетсяусловием выходаилиусловием окончания цикла(либоусловием продолженияв зависимости от того, как интерпретируется его истинность – как признак необходимости завершения или продолжения цикла).Переменная, хранящая текущий номер итерации, называетсясчётчиком итерацийцикла или просто счётчиком цикла. Цикл может не содержать счетчик: условие выхода из цикла может определяться внешними условиями (например, наступлением определённого времени).
Исполнение любого цикла включает первоначальную инициализацию переменных цикла, проверку условия выхода, исполнение тела цикла и обновление переменной цикла на каждой итерации. Кроме того, большинство языков программирования предоставляют средства для досрочного управления циклом, например, операторы завершения цикла, то есть выхода из цикла независимо от истинности условия выхода и операторы пропуска итерации.
Безусловный (бесконечный) цикл –цикл, выход из которого не предусмотрен логикой программы. Специальных синтаксических средств для создания бесконечных циклов, ввиду их нетипичности, языки программирования не предусматривают, поэтому такие циклы создаются с помощью конструкций, предназначенных для создания обычных циклов.
Наибольшее распространение в среде компьютерных вычислений MATLAB получили два вида циклов: арифметический цикл или цикл со счетчиком и условный цикл или цикл с предусловием.
Цикл со счётчиком – цикл, в котором некотораяпеременнаяизменяет своё значение от заданного начального значения до конечного значения с некоторым шагом, и для каждого значения этой переменной тело цикла выполняется один раз.
Для организации циклов со счетчиком в среде программирования MATLAB используется последовательность операторов со следующим синтаксисом:
forj=j1:k:jn
End
где: j –управляющая переменная (счетчик) цикла, j1, jn – начальное и конечное значения счетчика цикла, соответственно; k – приращение счетчика цикла, по умолчанию равно 1.
Цикл с предусловием – цикл, который выполняется пока истинно некоторое условие, указанное перед его началом. Это условие проверяетсядовыполнения тела цикла, поэтому тело может быть не выполнено ни разу (если условие с самого начала ложно).
Для организации циклов с предусловием в среде программирования MATLAB используется последовательность операторов со следующим синтаксисом:
End
Цикл с предусловием обеспечивает выполнение операторов тела цикла, пока истинно проверяемое условие
В среде MATLAB, как и во многих языках программирования высокого уровня, существует возможность организовать цикл внутри тела другого цикла. Такой цикл будет называться вложенным циклом. Вложенный цикл по отношению к циклу, в тело которого он вложен, будет именоваться внутренним циклом, и наоборот, цикл, в теле которого существует вложенный цикл будет именоватьсявнешнимпо отношению к вложенному. Внутри вложенного цикла в свою очередь может быть вложен еще один цикл, образуя следующийуровень вложенностии так далее. Количество уровней вложенности, как правило, не ограничивается.
Для досрочного выхода из внутреннего или внешнего цикла используется команда break. Для продолжения исполнения цикла используется команда return. Для приостановки выполнения программы может использоваться команда pause – приостановка до нажатия любой клавиши; команда pause (n) – приостановка на n секунд или команда keyboard – приостановка с возможностью выполнять практически любые команды и последующим возвратом в программу командой return.
Понравилась статья? Не забудь поделиться с друзьями:
Источник: studopedia.ru
Управляющие конструкции в PHP
Здравствуйте уважаемые начинающие программисты.
Вам уже наверное понятно из предыдущих статей, что программа состоит из выражений, строк, чисел, операторов, функций, которые выполняются в определённой последовательности.
Порядок выполнения программы задаёт программист, и применяет он для этого управляющие конструкции языка php. То есть управляющая конструкция — это команда на тот, или иной порядок выполнения программы.
Прежде чем перейти к описанию управляющих конструкций, должен предупредить, что Вы увидите много знакомых названий, так как конструкцией могут быть операторы, функции, циклы, которые мы уже рассмотрели в предыдущих статьях.
Конструкции (возможны определения — инструкция, команда) могут быть как одно-строчными, так и составными, то есть собранными в блок. Блок тоже является отдельной конструкцией, последовательно выполняющей конструкции в ней заключённые.
Всего в PHP существует шесть основных групп управляющих конструкций. Это:
1. Условные операторы.
2. Циклы.
3. Конструкции выбора.
4. Конструкции объявления.
5. Конструкции возврата значений.
6. Конструкции включений.
Давайте рассмотрим их подробно, и все по порядку.