- •6.050103 «Програмна інженерія»
- •Теоретичні відомостi
- •Основні поняття
- •Операції
- •Стандартні типи даних
- •Стандартні математичні функції
- •Структура програми
- •Оператор присвоєння
- •Організація введення-виведення даних
- •Приклади програм
- •Варіанти завдань
- •Контрольні питання
- •Теоретичні відомостi
- •Умовний оператор
- •Складений оператор
- •Оператор поліваріантного вибору
- •Приклади програм
- •Варіанти завдань
- •Контрольні питання
-
Складений оператор
Якщо в одній з гілок оператора if або відразу в обох по логіці програми потрібно виконати декілька операторів, то використовують складений оператор, який поєднує послідовність операторів у єдине ціле, інтерпретуючи їх як один оператор.
Його формат для Pascal:
begin
оператор_1;
...
оператор_n;
end;
Виконання складеного оператора зводиться до послідовного - у порядку їхнього написання - виконання його операторів. Наприклад,
if x>5 then
if y<>0 then
begin
f:=x/y;
WriteLn(‘f =’,f);
end;
else WriteLn (‘Ділення на нуль’) ;
Формат складеного оператора для С++:
{ оператор_1;
...
оператор_n;
};
-
Оператор поліваріантного вибору
Якщо доводиться здійснювати вибір одного із декількох альтернативних шляхів виконання програми, то зручніше скористатися спеціальним оператором поліваріантного вибору, який передбачає вибір напрямку подальших дій визначається в залежності від значення певної змінної (селектора вибору).
В разі мови Pascal - це оператор case. Його формат:
case селектор of
список_значень_варіанту_1 : оператор_1;
...
список_значень_варіанту_n : оператор_n
[ else оператори ]
end;
де селектор - вираз будь-якого порядкового типу; список_значень_ варіанту - конкретні можливі значення селектора.
Механізм реалізації оператора case: в залежності від поточного значення селектора, керування передається на відповідний варіант дій; якщо це значення не співпало з жодним із значень у варіантах, то виконується дія, задана в гілці else (за її наявності).
Списки значень для різних варіантів роботи оператора case можуть складатися з довільного числа окремих значень і/або діапазонів значень, розділених комами. Вони повинні належати до того ж типу даних, що і селектор. Усі значення при цьому повинні бути унікальними, діапазони не повинні перетинатися і містити вже зазначених констант.
Наприклад,
WriteLn(‘Введіть номер місяця :’); ReadLn(m);
case m of
12,1,2: WriteLn (‘Зима’);
3..5 : WriteLn (‘Весна’);
6..8 : WriteLn (‘Літо’);
9..11 : WriteLn (‘Осінь’);
end;
У мові С++ оператором багатоваріантного вибору є оператор switch. Його формат:
switch (вираз)
{ case мітка_1 : оператор_1;
...
case мітка_n : оператор_n;
[ default : оператори; ]
};
Особливості реалізації оператора switch:
-
значення виразу в switch повинно бути цілим; цілими або символьними константами повинні бути і мітки (не можуть містити змінні або виклики функцій);
-
усі мітки повинні бути унікальними;
-
якщо в гілках case відсутній оператор break, то виконується вибір не однієї із дій, а послідовне виконання кожної гілки, починаючи з гілки, що відповідає мітці вибору.
Наприклад,
switch (ch) //вибір елемента меню
{ case 'A':{Add(); break;}
case 'D':{Delete(); break;}
case 'Q':{q= true; break;}
default:{cout <<"error"<< endl;}
}
-
Приклади програм
Приклад 1. Обчислити значення функції z=х2/y, де y=x*Cos(x)
program Lab_2;
var x:real; { задане число }
y:real; { проміжкове значення }
z:real; { обчислене значення }
begin
WriteLn('Result of laboratory work 2');
WriteLn('variant 31');
WriteLn('Еxecuted student of group ІС-хх Petrov');
Write('Input x:'); ReadLn (x); { введення х }
y:=x*Cos(x);
if y<>0 then
begin
z:=Sqr(x)/y;
WriteLn('z =',z:6:2);
end
else WriteLn ('Dividing by a zero');
ReadLn;
end.
Відеокопія результату:
Приклад 2. Для заданих х і a обчислити значення виразу .
#include "stdafx.h"
#include <stdio.h>
#include <math.h>
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{ double a,x; // вхідні дані
double y; // результат
cout << "a = ?\b";
cin >> a;
cout << "x = ?\b";
cin >> x;
if (a<0) cout << "negative radicand" << endl;
else if (a==0) cout << "division by zero" << endl;
else { y=pow(x,3)+1/sqrt(a);
cout << "y = " << y <<endl;
}
system("pause");
}
Відеокопія результату: