Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Оператор-переключатель switchСодержание книги
Поиск на нашем сайте
В тех случаях, когда в программе необходимо произвести выбор одногоиз нескольких вариантов, удобно применять оператор switch. Его синтаксис: switch (<выражение>) { case <константа1>: <список операторов1>; case <константа2>: <список операторов2>; … case <константаN>: <список операторовN>; default: <список операторов>; } Оператор-переключатель выполняется следующим образом. Вычисляется значение выражения в скобках, приведенного после ключевого слова switch, затем программа просматривает список меток, указанных после слов case, до тех пор, пока не находит ту, которая соответствует данному значению. Далее программа переходит к выполнению оператора, расположенного в этой строке. Если подходящей метки не найдется и если существует строка с меткой default:, то будет выполнятся оператор, помеченный этой меткой. В противном случае произойдет переход к оператору, расположенному за оператором switch. Метки, имеющиеся в операторе switch, должны быть константами или константными выражениями (выражениями, операнды которого константы) целого или символьного типа. Запрещается использовать в качестве метки переменную. Значением выражения в скобках должна быть величина целого или символьного типа. Список операторов варианта может быть либо пустым, либо заканчиваться одним из операторов завершения (break, continue, goto, return). Если у вариантов нет общих частей, то рекомендуется каждый вариант завершать оператором break. Программа 89 #include < stdio.h > main () { int c; printf("Введите цифру от 1 до 7:"); c=getchar(); printf("\nСоответствующий день недели:"); switch (с) { case '1': (printf("\nПонедельник!");break;} case ' 2': {printf("\nВторник!");break;} case '3': (printf("\nСреда!");break;} case '4': {printf("\nЧетверг!");break;} case '5': (printf("\nПятница!");break;) case '6': {printf("\nСуббота!");break;} default:printf("\nBocкpeceньe!"); } } Если не использовать оператор завершения, то по окончании выполнения списка операторов выбранного варианта произойдет переход на следующий вариант из списка.
Оператор цикла for Оператор
for (<оператор1>;<выражение>;<оператор2>) <оператор3>; позволяет организовать повторяющийся вычислительный процесс и называется оператором цикла. Как правило, оператор1 и оператор2 являются операторами присваивания или обращениями к функции, а выражение1 - условным выражением. Цикл for удобно использовать в тех случаях, когда заранее известно количество повторений тела цикла, или имеется явно выраженная переменная, управляющая циклом. В этом случае выражение1 вычисляется один раз и задает инициализацию управляющей переменной. Выражение1 является условием завершения цикла, а оператор2 задает приращение управляющей переменной. Например, следующая конструкция
for (i=l; i<n; i++) <оператор>;
является широко распространенной и позволяет «перебрать» первые п натуральных чисел. Из первой строки цикла for можно сразу узнать всю информацию о параметрах цикла: начальное значение переменной i, ее конечное значение, а также насколько увеличивается значение переменной i при каждом выполнении тела цикла. Любой из операторов и выражений в цикле for может быть опущен, хотя точка с запятой при этом должна оставаться. Если отсутствует оператор1 или оператор2, то он просто выпадает из вычислений. Если же отсутствует выражение1, то считается, что оно всегда истинно. Например,цикл for (i=l;;i++) { … } является бесконечным. Существуют разнообразные возможности применения цикла for: 1) можно применять операцию уменьшения для счета в порядке убывания вместо счета в порядке возрастания
for(n=10;n>0;n-) printf("%d \n",n);
2) при желании можно вести счет двойками, десятками и т.д.
for (n=2;n<60;n+=2) printf("%d\n",n);
3) можно вести подсчет при помощи символов, а не только чисел
for(ch='a';ch<='z';ch++) printf("Beличинa кода ASCII для %с равна %d.\n",ch,ch);
4) можно проверить выполнение некоторого произвольного условия, отличного от условия, налагаемого на число итераций
for(num=l;num*num*num<216;num++)
5) можно сделать так, чтобы значение некоторой величины возрастало не в арифметической, а в геометрической прогрессии
for(n=l;n<1500;n*=3) printf("-%d \n",n);
6) в качестве третьего выражения можно использовать любое правильно составленное выражение; какое бы выражение вы ни указали, его значение будет меняться при каждой итерации
for(x= I;у<=75;у=5*(х++)+10) printf("%d, %d\n",x,y);
7) можно даже опустить одно или более выражений (но при этом нельзя опускать символы ";"); необходимо только включить в тело цикла несколько операторов, которые в конце концов приведет к завершению его работы ans=2; for(n=3;ans<=25;) ans=ans*n; Тело цикла for(;;) printfC"* \ n"); будет выполняться бесконечное число раз, поскольку пустое условие всегда считается истинным; 8) первое выражение не обязательно должно инициализировать переменную; вместо этого, например, там мог бы стоять оператор printf() некоторого специального вида; необходимо помнить, что первое выражение вычисляется только один раз перед тем, как остальные части цикла начнут выполняться
for(printf("3апоминайте введенные числа!\n");num = 6;) scanf('"%d",&num); printf("ЭTO как раз то, что я хочу!\n");
в этом фрагменте первое сообщение оказывается выведенным на печать один раз, а затем осуществляется прием вводимых чисел до тех пор, пока не поступит число 6; 9) параметры, входящие в выражения, находящиеся в спецификации цикла, можно изменить при выполнении операций в теле цикла; предположим, например, что есть цикл со спецификацией следующего вида:
for(n=l;n< l000;n+=delta)
и если после нескольких итераций программа решает, что величина параметраdaltaслишком мала или велика, оператор if внутри цикла может изменить значение этого параметра (в диалоговой программе пользователь может изменитьэтот параметр в процессе выполнения цикла). В качестве оператора в теле цикла также может быть цикл. На количество вложений циклов друг в друга ограничений нет. В спецификацию цикла for может быть включено несколько инициализирующих или корректирующих выражений. Например, два вложенных цикла можно записать двумя различными способами: 1. for(i=l;i<10;i++) for(j=l;j<10;j++) <оператор> 2. for(i=l,j=l;i<10,j<10;i++,j++) <оператор> В нижеследующей программе переменные х, у, z изменяются параллельно.
Программа 90 # include<stdio.h> main() { int x,y,z,v,u,zero(); for(x=l,y=l,z=l;x<10;x++,y++,z++) printf("x=%d y=%d z=%d\n", х, y, z); } Результат работы программы: x=l y=l z=l x=2 y=2 z=2 x=3 y=3 z=3 x=4 y=4 z=4 x=5 y=5 z=5 x=6 y=6 z=6 x=7 y=7 z=7 x=8 y=8 z=8 x=9 y=9 z=9 Оператор цикла while В общем виде цикл while записывается так:
while (<выражение>) <оператор>;
Цикл while является «условным» циклом, использующим предусловие (т.е. условие на входе). Он называется условным, потому что выполнение оператора зависит от истинности условия, описываемого с помощью выражения.. Если выражение «истинно» (или в общем случае не равно нулю), то оператор, входящий в цикл while, выполняется один раз, а затем выражение проверяется снова. Эта последовательность действий, состоящая из проверки и выполнения оператора, периодически повторяется до тех пор, пока выражение не станет ложным (или в общем случае равным нулю). После этого управление передается оператору, следующему за оператором цикла while. При построении цикла while необходимо включить в него какие-то конструкции, изменяющие величину проверяемого выражения так, чтобы в конце концов оно стало ложным. В противном случае выполнение цикла никогда не завершится.
Пример 1. Алгоритм Евклида.
Программа 91 #include<stdio.h> main() { int x,y; scanf("\n%d",&x); scanf("\n%d",&y); while (x!=y) { if (x>y) x=x-y; else y=y-x; ) printf("\n%d",x); ) Пример 2. Проверить, содержит ли квадрат натурального числа n цифру 3.
Программа 92 #include<stdio.h> main() { int i,n,a; scanf("%d",&n); n=n*n; i=10000; while(i>=l) { a=n/i; /* если результат целочисленного деления n/i меньше 1,то а=0 */ n=n-a*i; if(a==3) goto abc; else i=i/10; ) printf("цифры 3 в числе n^2 нет"); goto cd; abc: printf("цифра 3 в числе n^2 есть"); cd:; } Оператор цикла do/while В языке Си имеется также конструкция цикла с постусловием (условие на выходе), где истинность условия проверяется после выполнения каждой итерации цикла. Этот подход реализуется с помощью цикла do/while. Тело цикла do/while всегда выполняется по крайней мере один раз, поскольку проверка условия осуществляется только после его завершения. Форма записи:
do <оператор> while (<выражение>);
Оператор break Оператор break дает возможность выйти из операторов цикла for, while, do/while, а также из переключателя switch без проверки условия. Оператор break приводит к немедленному выходу из самого внутреннего охватывающего его цикла или из переключателя. Оператор break может использоваться для выхода из цикла в тех случаях, когда заданы два разных условия прекращения его работы. Программа 93 # include<stdio.h> main() { int x=l,y,z; printf("Мы будем вычислять значение функции y=2*x+z\n"); printf("Введите значение z:"); scant("%d",&z); while(x<1000) ( y=2*x+z;x++; if y=100 (printf(= 100\n"); break; } } if y=100 printf("Цикл закончен!!!"); else printf ("Цикл закопчен!!! Но y<>lOO."); }
Наличие оператора break позволяет использовать «бесконечные циклы». В ряде случаев весьма удобно записать заголовок цикла без всякого условия в виде for(;;),
а выход из цикла оформить с помощью операторов break.
|
||||
Последнее изменение этой страницы: 2016-08-10; просмотров: 278; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.223.30 (0.009 с.) |