Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций по курсу 'Информатика'.doc
Скачиваний:
11
Добавлен:
14.07.2019
Размер:
483.84 Кб
Скачать

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

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

switch(i)

{

case 1 : вывод « понедельник » ; break ;

case 2 : вывод « вторник » ; break ;

case 3 : вывод « среда » ; break ;

case 4 : вывод « четверг » ; break ;

case 5 : вывод « пятница » ; break ;

case 6 : вывод « суббота » ; break ;

case 7 : вывод « воскресенье » ; break ;

default : вывод « ошибка » ; break ;

}

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

case ‘E’ :

case ‘e’ : a=’e’ ; break ;

Задание: i – номер месяца, вывести время года.

ОПЕРАТОРЫ ЦИКЛА.

ОПЕРАТОР while ( с предусловием).

Общий вид оператора:

while ( условие ) оператор ;

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

Примеры.

Бесконечный цикл – while(1) ;

Задано а, найти количество слагаемых, при которых сумма превысит это число.

float a, sum=0 ;

int i=1 ;

ввод а ;

while (sum<a)

{

sum=sum+ 1/i ;

i++ ;

}

вывод i ;

Задание: найти две ошибки.

Оператор do … while ( с постусловием ).

Общий вид оператора :

Do оператор ;

while ( условие ) ;

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

Рассмотрим предыдущий пример с суммой .

float a, sum=0 ;

int i=0 ;

ввод а ;

do

{

i++ ;

sum=sum+1./(float) i ;

}

while ( sum<a) ;

вывод i ;

Эта задача сделана уже без ошибок, догадались какие они? Главная -1/i в целых числах всегда 0, нужно целое значение переменной i превратить в вещественное, а за тем только выполнять операцию деления. Вторая ошибка, скорее неточность – условие окончания цикла проверяется для предыдущего i, а печатается его последующее значение.

Оператор цикла for.

Общий вид оператора:

for ( выражение1 ; выражение2 ; выражение3 ) оператор ;

выражение1 – инициализация цикла;

выражение2 – условие его завершения;

выражение3 – шаг цикла, вычисляется после каждой итерации.

Каждое из этих выражений может состоять из нескольких операторов разделенных запятыми.

Любое из выражений может отсутствовать.

for ( ; ; ) ; - бесконечный цикл, так как отсутствующее условие всегда истинно.

И еще раз пример с суммой .

float a, sum ;

int i ;

for ( i=1, sum=0 ; sum<a ; i++)

sum+=1./(float)i ;

вывод i-1 ;

можно написать этот цикл, вообще, без тела:

for ( i=1, sum=0 ; sum<a ; i++, sum+=1./(float)i)

В языке С цикл for наиболее широк, можно записать любой цикл через него.

Рассмотрим еще несколько примеров:

Найти сумму 100 первых натуральных чисел.

int i, sum ;

for ( i=1, sum=0 ; i<100 ; i++)

sum+=i ;

Найти сумму 100 первых четных чисел.

for ( i=2, sum=0 ; i<200 ; i+=2)

sum+=i ;

Возвести , b - целое, a- любое.

float a, step=1 ;

int b, i ;

for ( i=1 ; i<=b ; i++) step*=a ;

вывод step ;