Читайте также: |
|
Умовний вираз або тернарна операція?: призначена для вибору одного з двух виразів для обчислення значень змінної в лівій частині оператора присвоєння.
Форма умовного виразу така:
a = (b)? B1: B2;
де a – ім’я змінної лівої частини оператора присвоєння;
b – умова прийняття рішень, вираз любого типу;
B1, B2 – вирази, за допомогою яких вираховується значення а (дужки не обов’язкові).
Виконання оператора з умовним виразом відбувається таким чином: спочатку вираховується значення b. Потім аналізується результат його обчислення:
1) Якщо B! = 0, тобто умова істина. То обчислення змінної а відбувається за допомогою виразу b1;
2) Якщо B = 0, тобто хибне, то – за допомогою виразів b2.
Якщо типи змінної лівої частини оператора присвоєння і результатів віразів b1 і B2 різні, то тип результат n обчислення виразу перетворюється в тип змінної а.
Наприклад: Дано а. Якщо a > 0, то х = 1.5, а якщо а <= 0, то х =2.3
Рішення можна записати в вигляді умовного оператора:
if (a > 0) x = 1.5;
y = 2.3;
Або за допомогою умовного виразу:
x = (a > 0)? 1.5: 2.3;
Приклад вибору за допомогою умовного виразу більшого з двох значень a і b;
x = (a > b)? a: b;
або x = a > b? a: b;
Switch – оператор вибору варіанта.
Оператор switch використовується, якщо треба вибрати одну із деяких альтернатив процесу обробки даних, тобто одно із N можливих комбінацій в залежності від значення ключа (перемикача).
Switch є мов би узагальненням оператора if (вибір одного із 2-х варіантів) на N варіантів. Оператор switch має скорочену (без default) або повну форму (з default).
Switch (B)
{ case мітка _1: [оператори)] [break;]
...,,...,,.....,,....,,…,,…..
case мітка_n: [оператори)] [break;]
[default: оператори;]
}
де B – вираз любого типа, результатом якого може бути значення цілого або символьного типу; воно визначає одну з міток, які стоять після слова case;
мітка_1 ¸ мітка_n – константний вираз, в тому числі ціла або символьна константа;
S1 ¸ SN – нуль і більше операторів, які виконуються при виборі відповідної мітки.
Break – переривання, не обов’язковий оператор завершення виконання оператора switch;
default – ключове слово, після якого стоять оператори, які виконуються, якщо результат виразу В не стоїть з жодною міткою після ключового слова case; використовується тільки в повній формі оператор switch.
Константний вираз – це вираз, який вираховується під час компіляції; він складається з раніше визначених констант і змінних, з’єднаних операціями.
Правила виконання оператора switch подібні правилам виконання оператора case в Паскалі.
1) вираховується значення виразу В (ключ).
2) це значення послідовно порівнюється з кожним значенням мітки, яка стоїть після ключового слова case;
3)якщо знаходиться значення мітки, яке співпадає з ключем, то можливі два варіанта дій в залежності від наявності оператора break;
а) якщо після оператора або групи операторів даного case стоїть оператор break, то після нього виконання оператора завершується.
б) якщо після оператора або групи операторів даного case стоїть оператор break, то після цього виконання оператора switch завершується.
4) в випадку, якщо значення ключа не співпадало з жодною міткою case, то можливий один з двох варіантів виконання в залежності від наявності або відсутності default;
а) якщо default є, то виконується оператори, які стоять після нього;
б) якщо default нема, то не виконується жоден оператор switch;
5) всі мітки варіантів одного оператора switch повинні бути різні;
6) на мітку варіантів оператора switch не рекомендується переходити за допомогою оператора goto, хоча це і допустимо.
Приклад програми з використанням оператора switch. При введенні одного із символів, ‘y’ або ‘Y’ програма виведе на екран слово “Так”, а при введенні символів ‘n’ або ‘N’ – слово “Ні”.
#include <stdio.h>
#include <conio.h>
void main()
{
char c;
clrscr (); // очистити екран
puts(“введіть символ ’Y’, ’y’ або ‘n’, ‘N’ \ ”); //введення симв. з клавіатури
с = getchar();
switch (c)
{ case ‘Y’:
case ‘y’: puts (“ Так”); break;
case ‘N’:
case ‘n’: puts (“Ні”); break;
default: printf(“Ви помилились! \n”);
}
printf(“\n Для завершення програми натисніть любу клавішу\n”);
getch ();
}
Приклад програми введення номера запитання і вибору необхідного виду посилання за допомогою оператора switch:
#include <stdio.h>
#include <conio.h>
void main()
{ int i; clrscr ();
puts (“введіть номер запитання від 1 до 4: \ ”);
scanf(“%d”, &i);
switch (i)
{ case 1: puts(“Створення файла \n”); break;
case 2: puts (“ Пошук в файлі \n”); break;
case 3: puts (“ Модифікація файлу \n”); break;
case 4: puts (“Читання файлу \n”); break;
default: printf (“Ви помилились! \n\n”);
}
printf(“ Для завершення програми натисніть любу клавішу\n”);
getch ();
}
Приклад підпрограми-функції, яка
vowel(ch)
char ch;
{
switch (ch)
{
default: return (0);
case ‘u’: case ‘U’: return (5);
case ‘a’: case ‘A’: return (1);
case ‘e’: case ‘E’: return (5);
case ‘i’: case ‘I’: return (3);
case ‘o’: case ‘O’: return (4);
}
}
визначає, чи є символ голосною буквою. Якщо є, то повертається ціле від 1 до 5, якщо ні, то повертається 0.
0ператор default може стояти в будь якому місті. Замість break використовується оператор return – повернення. Він приводе до виходу і із оператора і із функції.
Дата добавления: 2014-12-23; просмотров: 94 | Поможем написать вашу работу | Нарушение авторских прав |