Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
задания день 2 С++.doc
Скачиваний:
1
Добавлен:
06.09.2019
Размер:
89.6 Кб
Скачать

Умовний оператор ?:

Замість оператора if-else можна використовувати умовний оператор ?:, якщо вирази, що входять до нього є досить простими. Дана конструкція буде мати наступний вигляд:

умова ? вираз1 : вираз2

За аналогією з оператором if даний умовний оператор працює так: якщо умова приймає істинне значення, виконується вираз1, якщо хибне - вираз2. Зазвичай значення змінної, що повертається, присвоюється деякій змінній.

Наприклад, потрібно надрукувати більше з двох чисел:

#include <iostream>

inline void

max_out( int val1, int val2 )

{

cout << ( val1 > val2 ) ? val1 : val2;

}

int main()

{

int ix = 10, jx = 20;

cout << "Большее из " << ix

<< ", " << jx << " равно ";

max_out( ix, jx );

cout << endl;

Однак програма видає неправильний результат:

Большее из 10, 20 равно 0

Проблема в тому, що оператор виводу має більш високий пріоритет, ніж оператор умовного виразу, тому друкується результат порівняння val1 та val2. Інакше кажучи, вираз

cout << ( val1 > val2 ) ? val1 : val2;

обчислюється як:

(cout << ( val1 > val2 )) ? val1 : val2;

Оскільки val1 не більше val2, то результатом порівняння буде false, позначений нулем. Щоб змінити пріоритет операцій, весь оператор умовного виразу слід заключити в дужки:

cout << ( val1 > val2 ? val1 : val2 );

Тепер результат отримується правильний:

Большее из 10, 20 равно 20

Хід роботи:

  1. Ознайомитися з інструкцією по виконанню практичної роботи.

  2. Запустити середовище програмування Borland C++ 5.02 за допомогою ярлика.

  3. Виконати першу (обов’язкову), другу та третю частини практичної роботи згідно власного варіанту.

Варіанти індивідуального завдання 1

I частина:

Написати програму, що обчислює значення функції або вказує, що воно не існує для наступних функцій:

функції для непарних ПК

функції для парних ПК

Результат вивести у вигляді: =….. при x1=…..

  1. Відкомпілювати програму.

  2. Якщо виникли помилки, то проаналізувати та виправити їх в режимі редагування.

  3. Якщо помилок немає, то запустити програму на виконання, записати отримані результати та перевірити їх правильність.

  4. Показати отриманий результат викладачу.

  5. У випадку правильних результатів та коректної роботи програми зберегти файл у власну папку під ім’ям L2_1Ваше прізвище.

II частина:

  1. Створити новий файл та скопіювати в нього зміст попередньої програми.

  2. Внести у новий файл зміни та створити програму, що обчислює значення функції у:

  1. Повернутися до пунктів 4-7.

  2. У випадку правильних результатів та коректної роботи програми зберегти файл у власну папку під ім’ям L2_2Ваше прізвище.

III частина:

  1. Написати програму – калькулятор, що обчислює:

для непарних ПК:

для парних ПК:

Суму, частку від ділення, логарифм двох чисел

Різницю, добуток, степінь двох чисел

Два числа та символ операції ввести з клавіатури

  1. Повернутися до пунктів 4-7.

  2. У випадку правильних результатів та коректної роботи програми зберегти файл у власну папку під ім’ям L2_3Ваше прізвище.

  3. Результати по виконанню практичної роботи занести у звіт.

Теоретичні відомості про оператор switch

Оператор switch призначений для організації вибору із множини різних варіантів. Формат оператора наступний:

switch (вираз)

{

[ case константн-вираз1]: [ списків-операторів1]

[ case константн-вираз2]: [ списків-операторів2]

:

:

[ default: [ список операторів ]]

}

Вираз, що випливає за ключовим словом switch у круглих дужках, може бути будь-яким виразом, припустимими в мові Сі, значення якого повинне бути цілим. Відзначимо, що можна використати явне приведення до цілого типу, однак необхідно пам'ятати про ті обмеження й рекомендації, про які говорилося на лекції. Так як константний вираз обчислюється під час трансляції, тому воно не може містити змінні або виклики функцій. Звичайно, як константний вираз використаються цілі або символьні константи. Всі константні вирази в операторі switch повинні бути унікальні. Крім операторів, позначених ключовим словом case, може бути, але обов'язково один, фрагмент позначений ключовим словом default.

Список операторів може бути порожнім, або містити один або більше операторів. Причому в операторі switch не потрібно містити послідовність операторів у фігурні дужки.

Схема виконання оператора switch наступна:

- обчислюється вираз в круглих дужках;

- обчислені значення послідовно порівняються з константними виразами, що стоять за ключовими словами case;

- якщо одне з константних виразів збігається зі значенням вираження, то керування передається на оператор, позначений відповідним ключовим словом case;

- якщо жодне з константних виражень не дорівнює виразу, то керування передається на оператор, позначений ключовим словом default, а у випадку його відсутності керування передається на наступний після switch оператор.

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

Відзначимо, що в тілі оператора switch можна використати вкладені оператори switch, при цьому в ключових словах case можна використати однакові константні вирази.

Приклад: switch (a)

{

case 1: b=c; break;

case 2:

switch (d)

{ case 0: f=s; break;

case 1: f=9; break;

case 2: f-=9; break;

}

case 3: b-=c; break;

:

}