Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3_Практика по С++.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
244.22 Кб
Скачать

§ 6. Розгалуження

1. Складена команда. Під час написання програми може виникнути потреба трактувати декілька команд як одну. Така команда називається складеною. Складена команда - це конструкція такого вигляду:

{

<команда1>;

………….

<командаN>;

}

Перед закриваючою дужкою ";" ставити обов'язково. Піс­ля дужки символ ";" записувати не обов'язково.

Зауваження 1. Запис ;; називається порожньою командою. Як­що у складеній команді поставити символ ";" після закри­ваючої дужки, то компілятор це розглядатиме як порожню команду, що не впливає на результат виконання програми.

Надалі під командою будемо розуміти порожню, просту або складену команду.

2. Кома як команда. Кому як команду використовують то­ді, коли необхідно інтерпретувати декілька виразів або ко­манд як одне ціле. Вона має вигляд

<вираз 1>, <вираз 2>

або

<команда 1>, <команда 2>

Дія команди. Послідовно обчислюються значення виразу 1 (виконується команда 1) та виразу 2 (команда 2).

Цю команду зручно використовувати у командах циклу, умовних командах тощо. Наприклад, if (k+=2,k<7)...

Тут спочатку значення змінної k буде збільшено на 2, а потім це значення порівнюватиметься із числом 7. Результат команди - true, якщо значення змінної k менше, ніж 7, у про­тилежному випадку - false.

3. Логічні вирази та логічні операції. Логічний вираз - це засіб записування умов у задачах відшукання даних, що задовольняють деякий критерій. Логічний вираз може набу­вати значення true (істинність) або false (хибність). Логічні ви­рази бувають прості та складені. Простий - це два арифме­тичні вирази, з'єднані символом відношення, а складений - це прості логічні вирази, з'єднані логічними операціями:

  1. ! - не,

  2. &&- і,

  3. || - або.

Логічні вирази обчислюються з урахуванням пріоритету логічних операцій. Однакові логічні операції виконуються послідовно зліва направо. Для зміни порядку виконання логічних операцій, як і для звичайних арифметич­них, використовують круглі дужки.

У табл. 7 наведені означення логічних операцій.

Табл. 7. Логічні операції в С++

Вираз

Значення

! true

false

true && true

true

true && false

false

false && true

false

Вираз

Значення

! false

true

true II true

true

true II false

true

false II true

true

false II false

false


Логічним виразом може бути ціле число. Якщо воно не дорівнює нулю, то значення логічного виразу - true, якщо це число 0 - false.

4. Команда розгалуження if (якщо). Команда розгалу­ження if має дві форми: повну та коротку. Повна така:

if (<логічний вираз>) <команда 1>; else <команда 2>;

Дія команди. Обчислюється значення логічного виразу. Якщо це значення істинне, то виконується команда 1, у протилежному випадку - команда 2. Команда 1 та команда 2 можуть бути порожніми, простими або складеними.

Приклад 3. Нехай x = 9. Унаслідок виконання команд

if (x > 7) у = pow(x, 2); else у = sqrt(x);

if (x <= 5) z = exp(x); else z = ++x;

Отримаємо у = 81, г = 10, x = 10.

Ввести та відлагодити програму на ЕОМ!!!

Задача 1 (про обчислення складеної функції). Обчисли­ти і вивести на екран значення складеної функції у у деякій заданій користувачем точці x, якщо

Текст програми:

// Обчислення виразу

#include <iostream.h>

#include <math.h>

#include <conio.h>

void maln()

{

clrscr();

float x, у;

cout << "Vvedit x \n";

cin >> x;

if (x < 0) у = tan(fabs(x));

else if (0 <= x && x < 5) у = pow(x, 3);

else у = log(x) / log(5);

cout <<"\n у = " << у; getch();

}

Коротка команда розгалуження if має вигляд

if (<логічний вираз>) <команда 1>;

Дія команди. Обчислюється значення логічного виразу. Якщо Воно істинне, то виконується команда 1, інакше вико­нується команда, яка записана після команди if.

5. Команда ?. Команда ? є аналогом команди розгалужен­ня if. Загальний вигляд команди ? такий:

<логічний вираз> ? <команда або вираз 1 > : <команда або вираз 2>

Дія команди. Обчислюється значення логічного виразу. Якщо воно істинне, то виконується команда 1 або обчислю­ється вираз 1, інакше - команда або вираз 2.

Ввести та відлагодити програму на ЕОМ!!!

Задача 2 (про два числа). Ввести два цілі числа. Знайти більше з них.

Текст програми:

// Визначення більшого числа

#include <iostream.h>

#include <conio.h>

void main()

{

clrsor();

int x,y;

cout << "Vvedit x,y\n";

cin >> x >> y;

cout << "Мах =";

x > у ? cout<<x: cout<<y;

getch();

}

Команда ? у разі потреби трактується компілятором як вираз, тому її зручно використовувати у директивах препроцесора, наприклад

#define abs(x) > 0 ? (x); -(x);

6. Команда вибору (switch). Команда вибору має вигляд

switch (<вираз або змінна>);

{

case <значення1>:<команда1>;break;

…………………

case <значенняN>:<командаN>;break;

default: <командаN+1>;

}

Вираз та значення мають бути цілочисельні. Оскільки трансятор мови C++ може розглядати значення змінних типу char як цілі дані, то на місці виразу та ознак можуть бути сталі цілого, символьного або перераховного типів. На місці команд 1 - N може бути одна команда, декілька або не бути жодної команди. Команда break не є обов'язковою і записуєть­ся у разі потреби. Вона слугує для виходу з команди switch.

Складова частина default:<KомандаN+1> також може бути відсутня - тоді матимемо коротку форму команди вибору switch.

Дія команди. Якщо значення виразу збігається зі значен­ням ознаки n, то виконується команда з номером n і розгля­дається наступний за нею рядок case і т.д. Для того, щоб при­пинити дію команди switch, наприклад, після виконання ко­манди n (тобто щоб вийти з цієї команди), записують команду break;. Якщо значення виразу не збігається із жодною з ознак, то виконується команда N+1 або, у випадку короткої форми, наступна команда після команди switch.

Ввести та відлагодити програму на ЕОМ!!!

Задача 3 (про квитки). Нехай населені пункти позначені номерами від 1 до 8. Вартість одного квитка до конкретного пункту k визначається так:

cina = 25, k = 2, 3, 4,

Скільки коштуватимуть m квитків до населеного пункту, номер k якого вводять з клавіатури?

Текст програми:

#include <iostream.h>

#include <conio.h>

void main()

{

clrscr();

int k, m;

float cina;

cout<<"Уведіть номер k населеного пункту і кількість квитків m ";

cin >> k >> m;

switch (k)

{

case 1 : cina = 22; break;

case 2:

case 3:

case 4: cina = 25; break;

case 5:

case 6: cina = 30; break;

case 7:

case 8: cina = 35; break;

default :

cout « "Дані введено неправильно \n";

cina = 0;

cout<< cina*m << " грн";

getch();

}

7. Команда безумовного переходу goto. Ця команда змі­нює послідовність виконання інших команд шляхом переходу до виконання команди, що має позначку (мітку). Команда пе­реходу має вигляд

goto <позначка>;

Позначка може розміщуватись перед довільною командою у програмі. Вона відокремлюється від команди двокрапкою (:), а саме:

<позначка> : <команда>;

8. Перерахований тип утворюють із перерахування імено­ваних сталих цілого типу так:

enum <назва типу>={<стала1>,<стала2>,…,<сталаN>};

В останньому випадку сталій 1 автоматично буде присво­єно значення 0, сталій 2 - значення 1 и т. д.

Деякі сталі у списку можна ініціалізувати. Неініціалізо-ваним сталим автоматично буде присвоєно значення на оди­ницю більше від значення попередньої сталої зі списку.

Приклад 7. Опишемо два перераховані типи (дні тижня та кольори):

enum week = {mon, tue, wed, the, fri, sat, sun};

enum colors = {red = 1, green, yellow = 6, white};

У списку week стала mon дорівнюватиме 0, tue = 1, ..., sun = 6. У списку colors стала red дорівнює 1, green відповідно 2, yellow - 6, а стала white - 7 (на одиницю більше від yellow).

Ввести та відлагодити програму на ЕОМ!!!

Задача 5 (про розклад на день). Скласти програму, яка б виводила на екран розклад роботи на тиждень.

Текст програми:

// Програма Розклад на день

#include <iostream.h>

#include <conio.h>

void main()

{

clrscr();

enum svet {mon, tue, wed, the, fri, sat, sun};

int day;

cout<< "Розклад занять на тиждень\n\n";

for (day = mon; day <= sun; day++)

switch (day)

{

case mon : cout << "Понеділок\t Зустріч акціонерів. \n"; break;

case tue : cout << "Вівторок\t Відрядження\n"; break;

case wed : cout << "Середа\t Відрядження\n"; break;

case the : cout << "Четвер\t Відрядження\n"; break;

case fri: cout << "П'ятниця\t Здати звіт. Зайти в банк\n"; break;

case sat: cout << "Cy6oтa\t їдемо на рибалку\n"; break;

case sun: cout << "Неділя\t Відвідати батьків. Ввечері йдемо у театр\n";

}

getch();

}

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