Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
111111111.docx
Скачиваний:
6
Добавлен:
17.04.2019
Размер:
131.57 Кб
Скачать

Вопрос 11

Условная операция «? :»

Если одно и то же выражение (или переменная) вычисляется по-разному в зависимости от некоторого условия, вместо оператора if можно использовать более короткую запись - условную операцию. Эта операция – тернарная, т.е. в ней участвуют три операнда. Формат написания условной операции следующий:

Выражение 1 ? выражение 2 : выражение 3;

если выражение 1 (условие) отлично от нуля (истинно), то результатом операции является значение выражения 2, в противном случае – значение выражения 3. Каждый раз вычисляется только одно из выражений 2 или 3.

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

Рассмотрим участок программы для нахождения максимального значения z из двух чисел a и b, используя оператор if и условную операцию.

1. Запишем оператор if :

if (a > b) z = a;

else z = b;

2. Используя условную операцию:

z = a > b ? a : b;

Условную операцию можно использовать так же, как и любое другое выражение. Если выражения 2 и 3 имеют разные типы, то тип результата определяется по правилам преобразования. Например, если f имеет тип double, а nint, то результатом операции:

(n > 0) ? f : n;

по правилам преобразования типов будет double, независимо от того, положительно n или нет.

Вопрос 12

НЕ НАЙДЕН ОТВЕТ

Вопрос 13

Составление циклических алгоритмов

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

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

Один проход цикла называется шагом или итерацией. Проверка условия продолжения цикла происходит на каждой итерации либо до выполнения кода цикла (с предусловием), либо после выполнения (с постусловием).

Для организации циклов используются специальные операторы. Перечень разновидностей операторов цикла языка Си следующий:

– оператор цикла с предусловием;

– оператор цикла с постусловием;

– оператор цикла с предусловием и коррекцией.

Оператор цикла с постусловием dowhile

Цикл с постусловием реализует структурную схему, приведенную на рис. 8.1 б.

Общий вид записи такой конструкции:

do

код цикла;

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

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

Здесь сначала выполняется код цикла, после чего проверяется, надо ли его выполнять еще раз.

Следующая программа будет вас приветствовать до тех пор, пока будем вводить символ Y или y (Yes). После введения любого другого символа цикл завершит свою работу.

#include <stdio.h>

void main(void)

{

char answer;

do {

puts(" Hello! => ");

scanf(“%c”, &answer);

fflush(stdin);

}

while ((answer=='y')||(answer=='Y'));

}

Результат выполнения программы:

Hello! => Y

Hello! => y

Hello! => d

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

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

Пример.

Для X, меняющегося от a до b с шагом h, вычислить:

1.

2.

Программа может иметь вид:

#include<stdio.h>

#include<conio.h>

#include<iostream.h>

#include<math.h>

void main(){

double a,b,h,x,y,s,f;

int k,n,i;

cout<<"Vvedite a,b,h,n: ";

cin>>a>>b>>h>>n;

for(x=a; x<=b+0.000001; x+=h){

y=3*x*(exp(6*x)+exp(-6*x));

for(k=s=0; k<=n; k++){// Делаем 2К итераций для вычисления (2К)!

for(i=f=1; i<=2*k; i++)

f*=i;

s+=pow(6*x, 2*k+1)/f;

}

printf("x=%5.2lf y=%12.8lf s=%12.8lf\n", x,y,s);

}

getch();

}

Здесь имеется 3 вложенных друг в друга цикла: для каждого Х переменная К будет меняться от 0 до N ; а для каждого К переменная i будет меняться от 1 до 2К для вычисления факториала 2К.

Операторы continue, break

В определенных случаях вместо оператора goto удобнее использовать операторы continue или break.

Оператор continue может использоваться во всех типах циклов (но не в операторе-переключателе switch). Наличие оператора continue вызывает пропуск "оставшейся" части итерации и переход к началу следующей, т.е. досрочное завершение текущего шага и переход к следующему шагу.

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

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

Оператор break производит досрочный выход из цикла или оператора-переключателя switch, к которым он принадлежит, и передает управление первому оператору, следующему за текущим оператором. Т.е. break обеспечивает переход в точку кода программы, находящуюся за оператором, внутри которого он (break) находится.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]