Читайте также:
|
|
Размещенная в памяти компьютера программа в момент выполнения занимает определенную область памяти. В каждый момент времени состояние программы характеризуется двумя типами сведений:
- состоянием некоторых ячеек памяти, понимаемых нами как переменные;
- активной точкой программы, то есть той командой программы, которая выполняется данный момент.
Следовательно, можно выделить и два основных класса действий, которые может выполнять вычислительная система:
- действия, выделяющие область памяти под переменные программы (описания).
- действия, меняющие точку выполнения программы (операторы, инструкции, конструкции).
Различные совокупности действий второго класса также называют управляющими структурами.
В теории программирования доказано, что программу для решения задачи любой сложности можно составить их трех структур, называемых следованием (цепочкой), ветвлением и циклом. Этот результат установлен Бойном и Якопини в 1966 г. путем доказательства того, что любую программу можно преобразовать в эквивалентную, состоящую только из этих структур и их комбинаций. Каждая из этих управляющих структур реализована в языке программирования набором соответствующих конструкций.
Структура следования (естественная фундаментальная структура) реализует линейный вычислительный процесс, то есть процесс, в котором действия выполняются последовательно, в порядке их записи. Каждое действие является самостоятельным, независимым от каких-либо условий. В языках программирования цепочки реализуются так называемым составной конструкцией следующим образом.
{
оператор 1;
оператор 2;
….
оператор n;
}
На блок-схеме блоки, отображающие эти операции, располагаются в линейной последовательности.
Пример структуры следования (цепочки)
{
int a=10,b,c;
cin>>b;
c=a+b;
cout<<”a+b =”<<c;
}
Структура ветвления реализует ветвящийся вычислительный процесс, то есть процесс, для реализации которого предусмотрено несколько направлений (ветвей). Ветвление в программе – это выбор одной из нескольких последовательностей операторов при выполнении программы. Выбор направления зависит от заранее определенного признака, который может относиться к исходным данным, к промежуточным данным или конечным результатам. Хотя на схеме алгоритма должны быть показаны все возможные направления вычислений в зависимости от выполнения определенного условия (или условий), при однократном прохождении программы процесс реализуется только по одной ветви, а остальные исключаются. Любая ветвь, по которой осуществляется вычисления, должна приводить к завершению вычислительного процесса.
В языках программирования структура ветвления реализуется условными и селективными констркуциями. Условные конструкции в общем случае имеют форму
если выражение то действие1 иначе действие2;
и следующей смысл: если выражение верно то выполняется действие1, иначе выполняется действие2.
Кроме того, используется и усеченная форма условной конструкции
если выражение то действие1;
На блок-схеме ветвление и усеченное ветвление изображаются следующим образом:
В С++ синтаксис условной конструкции
if (выражение) опрератор1; else оператор2;
if (выражение) опрератор1;
Выражение должно быть скалярным и иметь арифметический тип или тип указателя. В операторе if оператор1 выполняется в том случае, если выражение ненулевое, иначе выполняется оператор2 или не выполняются никакие действия, если оператор2 не задан, то есть отсутствует else. В частности, если a целое, то if (a) эквивалентно if (a!= 0).
Оператор1 и оператор2 могут представлять собой один оператор или блок операторов, но не могут быть описаниями.
if (a==b) cout <<”Введенные значения равны”; else cout <<”Введенные значения не равны”;
В соответствии неписаными правилами хорошего стиля программирования в условных инструкциях логическое выражение необходимо составлять таким образом, чтобы чаще всего оно было истинным.
cin>>a>>b;
if (a) {c=b/a; cout<<c;}
else cout<<”Ошибка ввода”;
Часто используются в условиях логические операции &&, ||,!. Операции && и || не будут вычислять второй аргумент, если это не нужно. Например, if (p && r) … вначале проверяет, является ли p не нулем, и только, если это так, то проверяет r.
Еслинекоторое действие выполняется при выполнении двух условий желательно записывать их в виде одного выражения.
Можно записать
if (a>0)
if (b>0) c=a*b;
но лучше if (a>0 && b>0) c=a*b;
Селективные инструкции используются для реализации мультиветвления и в общем случае имеют вид:
если (выражение)
{имеет значение1 то действие1,
имеет значение2 то действие2
….
имеет значениеn то действиеn
иначе действиеN+1
}
В С++ существует конструкция мультиветвления (переключатель). Синтаксис переключателя:
switch (переключающее_выражение)
{case константное_выражение1: оператор1;
case константное_выражение2: оператор2;
...
case константное_выражение n: оператор n;
default:оператор;
}
Если не предусмотрены переходы и выходы из переключателя, то в нем последовательно выполняются все операторы, начиная с той метки, на которую передано управление. Для выхода из переключателя обычно используют оператор break.
Дата добавления: 2015-08-20; просмотров: 72 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Понятие алгоритма | | | Примеры смотри в пособии. |