Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Оператор циклу з передумовою while

Приклад 2.

/* застосування умовного розгалужування */
#include <stdio.h>
main()
{
int number;
int ok;
printf("Введіть число з інтервалу 1..100: ");
scanf("%d",&number);
ok=(1<=number) && (number<=100);
if (!ok)
printf("Не коректно!!\n");
return ok;
}

 

Змінній ok присвоюється значення результату виразу: ненульове значення, якщо істина, і в протилежному випадку - нуль. Умовний оператор if(!ok) перевіряє, якщо ok дорівнюватиме нулю, то!ok дасть позитивний результат й відтоді буде отримано повідомлення про некоректність, виходячи з контексту наведеного прикладу.


Оператор switch


Синтаксис:

switch(<вираз цілого типу>)
{
case <значення_1>:
<послідовність_операторів_1>;
break;
case <значення_2>:
<послідовність_операторів_2>;
break;
..................................
case <значення_n>:
<послідовність_операторів_n>;
break;
[default:
<послідовність_операторів_n+1>;]
}

Оператор-перемикач switch призначений для вибору одного з декількох альтернативних шляхів виконання програми. Виконання оператора switch починається з обчислення значення виразу, що слідує за ключовим словом switch у круглих дужках. Далі управління передається одному з <операторів>. Оператор, що отримав управління - це оператор, значення константи якого співпадає зі значенням виразу перемикача.

Вітка default (може опускатися) означає, що якщо жодна з вищенаведених умов не задовольнятиметься (тобто вираз цілого типу не дорівнює жодному із значень, що позначені у саse -фрагментах), керування передається по замовчуванню в це місце програми. Треба також зазначити обов'язкове застосування оператора break у кожному з case -фрагментів (цей оператор застосовують для негайного припинення виконання операторів while, do, for, switch), що негайно передасть керування у точку програми, що слідує відразу за останнім оператором у switch-блоці.

Приклад 1:

switch(i)
{
case -1: n++;
break;
case 0: z++;
break;
case 1: p++;
break;
}

Приклад 2:

switch(c)
{
case 'A':
capa++;
case 'a':
lettera++;
default:
total++;
}

В останньому прикладі всі три оператори в тілі оператора switch будуть виконані, якщо значення с рівне 'A', далі оператори виконуються в порядку їх слідування в тілі, так як відсутні break.

 


Оператор while використовується для організації циклічного виконання оператора або серії операторів, поки виконується певна умова.

while (<логічний вираз>)
оператор;

Цикл закінчується у наступних випадках:

- умовний вираз у заголовку приймає нульове значення;

- у тілі циклу досягнуто місця, де розташований оператор break;

- у тілі циклу виконаний оператор return;

У перших двох випадках керування передається оператору, розташованому безпосередньо за циклом, у третьому випадку активна на той момент функція завершує свою роботу, повертаючи якесь значення.

Знову ж таки нерідкою помилкою програмістів є використання замість оператора порівняння (==) оператора присвоювання (=). Наприклад, наступний фрагмент створить нескінчений цикл:

/* некоректне використання оператору циклу */
int main(void)
{
int j=5;
while(j=5) /* змінній j присвоїти значення 5 */
{
printf("%d\n",j);
j++;
}
}

Компілятор Сі попередить про некоректне присвоювання в даному випадку, виправити яке особливих труднощів не викличе. Втім, часто такий цикл використо­вується для перевірки відповіді користувача на питання з програми ("так чи ні?"):

/* фрагмент використання while */
printf ("Підтверджуєте? Так чи ні?(y/n);");
scanf("%c",&ch);
while (ch!='y' && ch!='n')
{
printf("\n Відповідайте так чи ні.. (y/n);");
scanf("%c",&ch);
}

Тіло циклу почне виконуватися, якщо користувач введе будь-який символ, відмінний від у або n. Цикл виконується доти, доки користувач не введе або ' у ', або ' n '.

Цікаво розглянути й наступний приклад, що застосовує оператор while у функції підрахунку факторіалу:

long factorial(int number)
{
long total;
total=number;
while (--number)
total*=number;
return total;
}

 

<== предыдущая лекция | следующая лекция ==>
Приклад 1. Оператор розгалуження if | Оператор циклу for
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 380; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.