Управляющие структуры и основные конструкции языков программирования. Управляющие структуры в Visual Basic Управляющие структуры. Общие сведения о циклах

Операции и операторы языка программирования Си. Примеры программ.

Управляющие структуры и основные конструкции языков программирования

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

Состоянием некоторых ячеек памяти, понимаемых нами как переменные;

Активной точкой программы, то есть той командой программы, которая выполняется данный момент.

Следовательно, можно выделить и два основных класса действий, которые может выполнять вычислительная система:

Действия, выделяющие область памяти под переменные программы (описания).

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

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

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

В 60-е годы стало ясно, что в основе большинства трудностей, испытываемых группами разработки программного обеспечения, лежало бесконтрольное использование передачи управления. Вина была возложена на оператор goto, который позволяет программисту передавать управление в программе по одному из возможных адресов в очень широком диапазоне. Понятие так называемого структурного программирования стало почти синонимичным «исключению оператора goto».

Исследование Бома и Якопини показало, что программирование возможно и при полном отсутствии операторов goto. Смена стиля программирования на «программирование без goto» стала для программистов эпохальным девизом. Но только в 70-е годы широкие круги профессиональных программистов начали принимать структурное программирование всерьез. Результаты оказались впечатляющими, поскольку группы разработки программного обеспечения сообщали об уменьшении времени разработки, более частой поставке систем в срок и завершении проектов в рамках бюджета. Ключом к успеху является попросту то, что программы, созданные на основе методов структурного программирования, более понятны, их проще отлаживать и модифицировать и, самое главное, более вероятно, что они написаны без ошибок.
Работа Бома и Якопини в 1966 году показала, что все программы могут быть написаны с использованием всего трех управляющих структур, а именно: последовательной структуры, структуры выбора и структуры повторения. Этот результат установлен Бомом и Якопини в 1966 г. путем доказательства того, что любую программу можно преобразовать в эквивалентную, состоящую только из этих структур и их комбинаций. При этом последовательная структура, по существу, является встроенной в язык С. Если не указано иначе, компьютер автоматически выполняет операторы С один за другим в порядке их записи.

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

К управляющим структурам относятся:

· структура следования;

· структура ветвления;

>> Управляющие структуры. Общие сведения о циклах

Обучающие курсы:

Управляющие структуры. Общие сведения о циклах

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

Общие сведения о циклах

Циклы - это повторение операций до тех пор, пока верно некое логическое условие. Например, зададим условием цикла, что некая переменная а меньше 10.

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

Имеется три вида циклов: for, do...while, while. Рассмотрим, например, конструкцию цикла for.

for (Инициализация переменной; Условие; Изменение переменной после каждого выполнения блока операторов цикла)
{
тело цикла
}

Рассмотрим пример использования цикла for (листинг 3.1).

Листинг 3.1.
Пример использования цикла for

Эта программа выведет на экран десять звездочек на одной строке. Необязательно инициализировать переменную-счетчик в цикле (переменной-счетчиком называется такая переменная, от которой зависит количество выполнений тела цикла). Рассмотрим пример программы без объявления переменной-счетчика в цикле (листинг 3.2).

Листинг 3.2.
Пример программы без объявления переменной-счетчика в цикле

Можно использовать не одну переменную-счетчик, а несколько. Рассмотрим пример подобной программы, представленный в листинге 3.3.

Листинг 3.3.
Пример использования нескольких переменных-счетчиков

Рассмотрим цикл while. В этом цикле в качестве параметра указывается какое-либо условие. Условие проверяется перед выполнением цикла. Схема цикла while имеет следующий вид.

while (условие)
{
тело цикла
}

Рассмотрим пример программы, использующей цикл while (листинг 3.4).

Листинг 3.4.
Пример использования цикла while

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

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

Пример ошибочной программы.

Рассмотрим теперь цикл do...while.
Он очень схож с циклом while и отличается только тем, что проверяет условие не до очередного выполнения цикла, а после его выполнения. Схема цикла do...while приведена ниже.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

^ Программирование операторов условного перехода if-еlsе Программирование операторов выбора switch i»- Программирование операторов цикла while, do-while и for Язык ассемблера - язык машинных команд. Он поддерживает лишь базовые ме- ханизмы организации программ. В нем отсутствуют управляющие конструкции, естественные для языков высокого уровня. Речь идет о поддержке конструкций типа операторов выбора, организации циклов и т. п. В прошлой главе мы положи- ли начало обсуждению этих вопросов, рассмотрев принципы организации циклов в программах на ассемблере. Цель данной главы - разработать шаблоны управля- ющих конструкций на ассемблере, аналогичные типовым операторам языка высо- кого уровня. Поступим просто - откроем любой учебник по языку С или C++, составим спи- сок приведенных в нем управляющих операторов и покажем способы их реализа- ции на ассемблере. Типовой список будет следующим: операторы выбора: ? условный оператор if-else; ? переключатель switch; Ш операторы цикла: П цикл с предусловием while; П цикл с постусловием do-while; П итерационный цикл for; ^ операторы continue и break.

Еще по теме Глава 11 Программирование типовых управляющих структур:

  1. Глава 2 Отрицательное и положительное программирование
операторы if , if-else и switch , являются важнейшими средствами управления выполнением программы на языке Си . Они должны использоваться для реализации общей структуры программы. Три оператора, рассматриваемые ниже, обычно рассматриваются реже, поскольку слишком частое их использование ухудшает читаемость программы, увеличивает вероятность ошибок и затрудняет ее модификацию. Никлаус Вирт дал определение структурного программирования, как программирования без goto .

Оператор break

Оператор break используется для выхода из оператора while , do , for , switch , непосредственно его содержащего. Управление передается на оператор, следующий за оператором, из которого осуществлен выход. Оператор break имеет форму

while((ch=getchar()) != EOF) /* читается символ ch=getchar(). Если он не совпадает с EOF, выполняется тело оператора while */ { if(ch=="\n") break; putchar(ch); }

Работа цикла полностью прекращается, как только при вводе встречается символ "новая строка".

Оператор continue

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

while((ch=getchar()) != EOF) /* читается символ ch=getchar(). Если он не совпадает с EOF, выполняется тело оператора while */ { if(ch=="\n") continue; putchar(ch); }

В версии с оператором continue просто пропускаются символы "новая строка", а выход из цикла происходит, только когда читается признак EOF .

Оператор goto

Оператор goto предназначен для безусловной передачи управления к оператору с указанной меткой. Он имеет следующую форму:

goto метка;

Керниган и Ритчи считают оператор goto "чрезвычайно плохим" средством и предлагают применять его как можно реже или не применять совсем. Приведем пример записи оператора:

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

part1: printf("точка перехода\n");

Если без операторов goto , break , continue , return никак не обойтись, то при использовании goto переходите вперед по коду, а не назад.

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

Оператор continue нежелательно использовать для модификации логики циклов.

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