Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
I_semestr.doc
Скачиваний:
8
Добавлен:
23.09.2019
Размер:
356.35 Кб
Скачать

4.9. Оператор продолжения цикла (continue)

Он пропускает оставшуюся часть витка цикла и передает управление на следующий виток (есть существенная разница: для циклов while и do while следующим витком является на проверку условия, для for на модификацию переменной).

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

s=0;

x=a;

while(x<b)

{

printf(“. . .”);

F(x)>0

x+=dx;

if (F(x))<0) continue;

//Если все нормально

}

Программа зациклится при обнаружении отрицательного числа.

for (x=a;s=s2=s0,0;x+=dx)

4.10. Множественный выбор

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

switch(выражение)

{

case (константа1): операторы; break;

case (константа2): операторы; break;

. . .

default:операторы;

}

Вначале вычисляются значения выражения, затем оно поочередно сравнивается с константами после case до первого совпадения. Если совпадение обнаружено, то выполняются операторы после ветки case. Ветки case обозначаются как метки 0.

Глава 5. Типовые приемы в программировании

5.1. Использование счетчиков

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

Пример: Посчитать количество отрицательных значений функции на исследуемом отрезке.

int n;

double x,x1,x2,dx;

. . .

for (x=x1,n=0;x<=x2;x+=dx)

{

if(f(x))<0 n++;

}

printf(“Obnarygena %d otricatel’nyx znacheniy”,n);

Счетчик надо перед началом счета обнулить.

5.2. Вычисление суммы и произведения.

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

Пример. Вычислим сумму положительных синусов от X, а также произведение функции f

int n;

double x,x1,x2,dx,sum,proizv,sinus;

. . .

for (x=x1,sum=0,proizv=1;x<=x2;x+=dx)

{

if(sin(x)>0) sum+=sin(x);

proizv*=f(x);

}

printf(“Summa=%7.2lf\nProizv=%%7.2lf\n”,sum,proizv);

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

if(sinus=sin(x)>0) sum+=sinus;

proizv*=f(x);

5.3. Вычисление минимума и максимума последовательностей.

Пример: посчитать максимальное и минимальное значение функции.

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

ввод x1,x2,dx

x=x1

x<=x2

Вывод max

max<f(x)

max=f(x)

x=x+dx

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

double x,x1,x2,dx,min,max;

. . .

for(x=x1,max=min=f(x1);x<=x2;x+=dx)

{

if(f(x)<min)min=f(x);

else max=f(x);

}

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