Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
инфа экзамен / семинарские вопросы.docx
Скачиваний:
157
Добавлен:
23.03.2016
Размер:
100.27 Кб
Скачать

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

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

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

Инструкция switch обеспечивает многонаправленное ветвление. Она позволяет делать выбор одной из множества альтернатив. Хотя многонаправленное ветвление можно реализовать с помощью последовательности вложенных if-инструкций, во многих ситуациях инструкция switch оказывается более эффективным решением. Она работает следующим образом. Значение выражения последовательно сравнивается с константами из заданного списка. При обнаружении совпадения для одного из условий сравнения выполняется последовательность инструкций, связанная с этим условием. Инструкция break завершает выполнение кода, определённого инструкцией switch. Инструкции default-ветви выполняются в том случае, если ни одна из case-констант не совпадает с результатом вычисления switch- выражения.

В С++ есть условная операция, очень похожая  на условный оператор выбора if else. Условная операция «? :» называется тернарной операцией (то есть трёхместная (имеет три операнда), единственная в C++).

Форма записи тернарной операции в C++ : "условие" ? "выражение 1" : "выражение 2"; Если условие истинно, то выполняется выражение 1, иначе (условие ложно) выполняется выражение 2.

Инструкция continue принудительно выполняет переход к следующей итерации, опуская выполнение оставшегося кода в текущей. В циклах while и do-while инструкция continue передаёт управление непосредственно инструкции, проверяющей условное выражение, после чего циклический процесс продолжает «идти своим чередом». А в цикле for после выполнения инструкции continue сначала вычисляется инкрементное выражение, а затем- условное. И только после этого циклический процесс будет продолжен.

С помощью инструкции break можно организовать немедленный выход из цикла, опустив выполнение кода, оставшегося в его теле, и проверку условного выражения. При обнаружении внутри цикла инструкции break цикл завершается, а управление передаётся инструкции, следующей после цикла.

Инструкция goto – это инструкция безусловного перехода. Она требует наличия в программе метки. Метка- это действительный в С++ идентификатор, за которым поставлено двоеточие. При выполнении инструкции goto управление программой передаётся инструкции, указанной с помощью метки. Метка должна находиться в одной функции с инструкцией goto, которая ссылается на эту метку.

Оператор return завершает выполнение функции, в которой он задан, и возвращает управление в вызывающую функцию.

Управление передается в вызывающую функцию в точку, непосредственно следующую за вызовом.

Если return присутствует в функции main( ), то он вызывает прерывание выполнения программы.

7) Средства разработки программ циклической структуры. Циклы с предусловием и постусловием. Вычисление и вывод данных в виде таблицы. Приёмы вычисления сумм, произведений и экстремальных значений. Вычисление суммы бесконечного ряда с заданной точностью.

Программой циклической структуры называют такую программу, в которой опе-раторы могут повторно, при изменяющихся значениях переменных выполняться не-сколько раз, образуя цикл. Различают следующие виды циклов (для их организации используются специальные сложные операторы - операторы циклов): цикл с заданным числом повторений или цикл с параметром (операторы цикла for), цикл с предусловием (оператор цикла while), цикл с постусловием (оператор цикла do while). В циклах можно выделить управляющие части, определяющие начало и условия выполнения цикла, и тело цикла - части из одного оператора или блока, выполняющие необходимые преобразования данных. Цикл называют простым, если в его теле нет других циклов.

Итак, общий формат записи цикла for:

for( инициализация; выражение; инкремент) {

последовательность инструкций }

Элемент инициализация обычно представляет собой инструкцию присваивания, которая устанавливает управляющую переменную цикла равной начальному значению. Эта переменная действует в качестве счётчика, который управляет работой цикла. Элемент выражение представляет собой условное выражение, в котором тестируется значение управляющей переменной цикла. Результат этого тестирования определяет, выполнится цикл forещё раз или нет. Элемент инкремент – это выражение, которое определяет, как изменится значение управляющей переменной цикла после каждой итерации.

while(выражение) инструкция;

Принцип работы этого цикла подобен циклу for. Этот цикл называется циклом с предусловием, так как сначала выполняется проверка выражения, а потом выполняется инструкция.

Цикл do-while– цикл с постусловием. Это значит, что он проверяет условие при выходе из цикла, а значит, что инструкция выполнится хотя бы один раз.

Простейшими примерами применения операторов цикла на практике являются программы вычисления значений функций при изменяющихся значениях аргумента и вывода данных в виде таблиц с заголовками. В качестве аргумента обычно выступает переменная, изменяющаяся в цикле по требуемому закону. Она может быть как дополнительным, так и основным параметром в циклах for, while и do while. При работе с вещественными данными необходимо иметь в виду, что их значения могут представляться с ошибкой, что эти ошибки могут зависеть от типа переменных, накапливаться при выполнении арифметических операций и приводить к непредусмотренному программистом выполнению программы.

При решении многих научно-технических задач часто приходится вычислять суммы и произведения. Например, при вычислении статистических параметров необходимо вычислить среднее арифметическое и среднее геометрическое значений некоторой функции. Чтобы вычислить указанные величины, надо сначала определить сумму и произведение значений функции. Сформулируем условие этой задачи. Пусть задана некоторая функция y=f(x). Вычислить среднее арифметическое и среднее геометрическое значений функции yi=f(xi), вычисляемых в равноотстоящих точках интервала изменения аргумента [a,b]. Шаг изменения аргумента известен и равен dx.

Поскольку запоминать все промежуточные значения сумм по условию задачи не требуется, то для их сохранения достаточно выделить простую переменную. Таким образом, для вычисления суммы будем использовать прием накопления суммы, состоящий в том, что в цикле каждый раз к промежуточной сумме прибавляем очередное слагаемое, т.е. реализуем рекуррентную формулу: s=s+y, где y- очередное слагаемое. Выполнив описанные вычисления n раз, получим в переменной s требуемое значение суммы. После первого выполнения цикла переменная s должна хранить значение первого слагаемого, откуда следует, что s0 должно быть равно 0. Таким образом, перед циклом, в котором вычисляется сумма, переменной s надо присвоить начальное значение, равное нулю. Произведение может быть найдено с использованием аналогичного приема накопления произведения, состоящего в том, что в цикле каждый раз произведение предшествующих сомножителей p умножается на очередной сомножитель yi, т.е. используется рекуррентная формула p=p⋅y,гдеy -очереднойсомножитель.Начальноезначение переменной p перед циклом, в котором оно вычисляется, должно быть задано равным единице.

При поиске наибольшего значения каждое значение yi сравнивается с максимальным из всех ранее вычисленных значений ymax , и большее из этих двух сравниваемых значений принимается за максимум. В качестве начального значения переменной ymax можно присвоить любое из вычисляемых значений функции. Удобно до цикла вычислить и присвоить ymax первое значение функции, а в цикле продолжить вычисления со второго значения. Повторив описанный процесс n раз, получим значение ymax, равное наибольшему значению функции. Если вычисляемые значения функции не требуется сохранять, то очередное значение функции следует вычислять как значение простой переменной.

Соседние файлы в папке инфа экзамен