Информатика.ЛБ
.pdf1.3 Використання основних операторів С++
У мові С++ прості оператори закінчуються символом ";", складені полягають у фігурні дужки. Розглянемо правила запису і використання основних операторів С++.
Оператор - вираз закінчуються крапкою з комою, наприклад:
++i; |
// |
інкремент |
swap (&a, &y); |
// |
виклик функції |
Оператори присвоювання мають одну з форм запису: |
||
p =a ; |
|
|
p =a = b = c; |
|
|
де p ім'я змінної чи елемент масиву; |
а, b, с арифметичні вирази, |
|
значення. |
|
|
Оператор умовного переходу має наступний формат запису:
if (L) |
|
оператор 1 ; |
|
else |
|
оператор 2 ; |
, |
де L логічний вираз. Якщо значення цього виразу ―істина‖ (не нуль ),
то виконується оператор1, якщо ж воно |
―не істина‖(нуль), то виконується |
||||
оператор2; у |
випадку, |
|
коли |
вираз |
помилковий й відсутнє else, |
виконується наступний оператор. |
|
|
|||
Наприклад, оператор умовного переходу може мати вигляд: |
|||||
|
if ( i < j ) |
|
|
||
|
|
|
i++; |
|
|
|
else |
|
|
|
|
|
{ |
j = i - 3; |
i +=2; |
} |
|
Оператор |
вибору |
використовують |
для вибору одного з багатьох |
||
варіантів вирішування і має наступну форму запису; |
|||||
|
switch (L) |
|
|
||
|
{ |
|
|
|
|
|
case |
к.в.1: оператор 1; [break;] |
|||
|
case |
к.в.2: оператор 2; [break;] |
|||
|
|
. . . . . . . . . . . . . . . . . . . . . . . . . |
|||
|
case |
к.в.n: оператор n; [break;] |
|||
|
[default: оператор n+1;] |
||||
|
} |
|
|
|
, |
де switch, case, default службові слова;
11
break оператор (необов'язковий) переривання виконання операторів switch;
L будь-який вираз одного з цілих типів;
к.в.1,…,к.в.n константні вирази, що не можуть повторюватися і не можуть містити змінних чи викликів функцій. Звичайно це ціла чи символьна константа;
оператор 1;. . . будь-які оператори С++.
Виконується цей оператор у такий спосіб: обчислюється значення виразу L, потім це значення порівнюється (послідовно зверху вниз) зі значеннями константних виразів к.в.1,.. і при збігу значень L і одного з к.в. будуть виконаються всі оператори починаючи з відповідного, якщо наприкінці немає оператора break. При наявності оператора break, виконується тільки оператор, що знаходиться у відповідній к.в. і управління передається оператору, що знаходиться за межами оператора switch. Якщо значення виразу L не збігається з жодним значенням к.в., то виконуються оператори з default і здійснюється вихід з оператора switch. У випадку, коли в цьому операторі немає default ( він не обов'язковий), і значення L не збігається з жодним зі значень к.в. , здійснюється вихід з оператора switch.
Можна привести наступний фрагмент програми з використанням оператора switch:
int a=2; switch ( a )
{
case 1: func1( ); case 2: func2( ); case 0:
case 4: func3( );
default: printf ("gооd bay \n");
}
При виконанні цього оператора будуть реалізовані функції: func2, func3
і default: printf ("good bay \n"); |
. |
Даний приклад можна записати так само в наступному вигляді: |
|
int a=2; |
|
switch (a) |
|
{ |
|
case 1: func1( ); break; |
|
case 2: func2( ); break; |
|
case 0: |
|
case 4: func3( ); break; |
|
default: printf ("good bay \n"); |
|
} |
. |
12
У такій реалізації буде виконана тільки case 2: func2( ); break; і вихід з оператора switch.
Мова С++ має такі оператори циклу: while, do, for.
Оператор циклу while L із предумовою
L будь-який простий, складений чи порожній оператор(будь-який припустимий вираз).
Виконується цей оператор у такий спосіб: якщо результат виразу L не дорівнює нулю (―істина‖), то виконується цикл, а якщо дорівнює нулю (―неістина ―), то цикл не виконується і керування передається наступному за while оператору.
Наведемо приклад використання оператора while .
Приклад 1.3: |
Обчислити значення функції: |
Y= A*X*X-SIN(X) , якщо A=10.3; X[-1 ; +1]; hx=0.2. |
|
// P1_6.CPP ( обчислення функції y = a* x* x – sin (x) |
|
// |
с використанням оператора циклу while |
#include |
<stdio .h> |
#include <math.h> void main ( )
{
float a, x, y; a = 10 . 3 ; x = - 1 ;
while ( x <= 1)
{
y = a * x * x - sin(x)
printf ("x = % 4 f, y = % 6 f \n", x, y) ; x = x + 0.2;
}
}
Оператор циклу for має наступну форму запису:
for ( [ вир1 ]; [ вир2] ;[ вир3 ] ) оператор;,
де вир1 вираз ініціалізації, звичайно використовується для встановлення початкового значення; це вираз присвоювання (необов'язковий параметр);
вир2 вираз умови , що визначає при якій умові цикл буде повторюватися (необов'язковий параметр);
13
вир3 вираз ітерації, що визначає крок зміни змінних, керуючих циклом після кожного виконання (необов'язковий параметр).
Цей оператор реалізується в такий спосіб:
спочатку виконується вираз ініціалізації ( ця нотація може бути виконана до оператора for );
обчислюється умовний вираз( якщо результат умовного виразу
―істина‖ (не дорівнює нулю ), то виконується оператор циклу;
обчислюється вираз ітерації;
знову перевіряється умова;
як тільки умовний вираз стає рівним нулю ―неістина‖, керування передається оператору, що знаходиться за оператором циклу for .
Оскільки перевірка умови виконується перед циклом, то цикл може жодного разу не виконуватися, якщо умова відразу буде ―неістина‖.
Проілюструємо використання оператора циклу for для раніше розглянутого приклада 1.3:
// P1_7.CPP ( обчислення функції y = a * x * x - sin(x)
// с використанням оператора циклу for
#include <stdio .h> #include <math.h> void main ( )
{
float a, x, y; a = 10.3 ;
for ( x = -1 ; x <= 1; x = x + 0.2 )
{
y = a * x * x - sin(x) ;
printf ( "x = % 4 f, y = % 6 f \n", x, y ) ;
}
}
В операторі for може використовуватися кілька змінних, керуючих циклом, а будь-які вирази можуть бути відсутними, наприклад :
int i;
for ( ; i < 4; i++)
або int k, n, y;
for ( k = 0, n = 20; k <= n; k++, n-- ) y = k * n;
У цьому операторі використовується два вирази ініціалізації і два вирази ітерації. При виконанні такого оператору спочатку присвоюються значення
14
змінним k = 0 і n = 20. Потім відбувається порівняння k <= n. Якщо ця умова має значення ―істина‖,то буде виконуватися тіло циклу, а потім вираз k++ і n--, якщо ж умова не виконується, тоді цикл припиняється.
Оператор циклу do звичайно використовується в тих випадках, коли тіло циклу повинне виконуватися хоча б один раз, і має наступну структуру запису:
do |
|
{ |
|
оператор |
|
}while (L); |
, |
де L умовний вираз.
Виконується оператор do |
наступним чином: |
спочатку здійснюється вхід |
|||||
у тіло циклу і |
виконується |
оператор |
(він |
може |
бути |
простий |
чи |
складний), після |
того перевіряється умова |
L і, |
якщо |
вона |
―істина‖ |
( не |
|
дорівнює нулю), то цикл повторюється, а якщо ―неістина ‖ здійснюється вихід з циклу. З використанням оператора циклу do приклад 1.3 буде мати вигляд:
// P1_8.CPP ( обчислення функції y = a * x * x - sin(x)
// с використанням оператора циклу do
#include <stdio .h> #include <math.h>
void main ( )
{
float a, x, y; a = 10.3 ;
x = -1 ; do
{
y = a * x * x - sin ( x ) ;
printf ( " x = % 4 f, y = % 6 f \n ", x, y ) ; x = x + 0.2;
}
while ( x <= 1 );
}
1.5Контрольні питання
1.Які правила запису програми мовою С++ ?
15
2.Які дані обробляються за допомогою мови С++ ?
3.Як задаються типи даних у С++ ?
4.Що таке константа в С++, наведіть приклади констант?
5.Що називається змінною в С++?
6.Як забезпечується організація введеннявиведення ?
7.Як організується форматований висновок результатів ?
8.Для чого потрібні оператори умовного і безумовного переходу і як вони працюють ?
9.Як працює оператор switch ?
10.Які оператори циклу ви знаєте, як працює оператор циклу for ?
11.Які особливості роботи оператора циклу do і while ?
1.6Варіанти індивідуальних завдань
Для приведених нижче варіантів необхідно скласти програму обчислення значення функцій при різних значеннях аргументів, заданих інтервалом зміни і величиною кроку.
ax b cos x, 1. y bx2 c sin 2x,
a x + b y ,
2. z
ax 2 ln(bxy),
|
sin |
|
ax b |
|
, |
||||
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
3. |
y |
|
|
|
ax b |
|
, |
||
|
cos |
|
|
||||||
|
|
|
|
|
|
||||
|
|
|
|||||||
x 0.5, 0.5 x;
x [0,1]; hx 0.1; a 0.75; b 1.19; c 2.5;
x y 1, x y 1;
x [1,2]; hx 01.; a 1; b 2; y [1,2]; hy 0,2;
x< a/b,
xa / b;
x [0,1]; hx 0.1; а=5; b=3 ;
4. |
y |
|
4ax 2 37x b |
; |
|
h |
0.5; h |
0.2; |
a [1, 2];x [0,1]; b 1,2; |
|||||
|
|
|
a 0.5 |
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
a |
x |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sin( x 0.4) |
2 |
|
|
|
|
|
|
|
|
|||
|
y |
|
|
|
|
, |
x |
3; |
|
|
|
|
|
|
|
|
4x 2 |
|
|
|
|
|
|
||||||
5. |
|
|
|
|
|
|
x [ 5,5]; h |
1; |
||||||
|
|
|
|
|
||||||||||
|
|
x 4 |
|
|
|
|
|
|
|
|
x |
|
||
|
|
2x 2 cos x, |
x |
3; |
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||
16
|
|
x |
|
|
|
2 |
|
|
y |
2 |
a |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
, x |
|
|
|
|
|
, |
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
6. |
y 15x 2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x [ 3;3]; |
h 05.; |
a 53.; |
|
y 11.; |
||||||||||
|
x |
|
e |
|
, x |
|
|
|
y |
|
|
|
a |
|
; |
|
|
|
|
x |
|
|
|
|
||||||||||||||
|
|
2 |
|
|
|
|
|
x |
|
|
|
2 |
|
|
2 |
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
y e x/2b x (cos z sin z); |
|
|
z |
|
|
4b x 2 |
|
|
|
|
|
||||||||||||||||||||||||||
7. |
|
|
|
|
|
|
; |
x [1,2]; |
h 0.2; |
b 2;4;6;8; |
||||||||||||||||||||||||||||
|
|
|
|
|||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
x |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8. |
y z |
|
sin(2 x)2 |
; z |
|
x |
|
x3 ; |
|
|
|
x [1,4]; h |
|
0.5; |
||||||||||||||||||||||||
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||
|
|
|
2 |
x |
|
|
|
|
|
|
|
|
|
|
x |
|||||||||||||||||||||||
|
|
sin |
|
ax ba |
|
, |
|
|
|
|
|
|
|
x < b, |
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||
|
y |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9. |
cos |
|
|
ax ba |
|
|
, |
|
|
|
|
|
|
|
x b; |
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x [0.5,3.1]; hx 0, 21; |
a [ 0.1,1.4]; ha =0.1; b 1.5; |
|
|
|
|||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||
|
ab x |
c |
||||||||||||
10. |
y bc x |
a, |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
c a x |
b, |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sin |
|
|
ax ba |
|
, |
|
|||||||
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11. |
y |
|
|
|
ax ba |
|
|
|||||||
|
|
|
|
|
||||||||||
|
|
cos |
, |
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
x 2 |
|
, |
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
3 |
|
|
|
|
||||
|
(x 5) |
|
|
|
|
|
|
|
|
|||||
12. |
z |
|
|
|
|
|
|
|
|
|
|
|
|
|
(x 2)3 |
||||||||||||||
|
|
|
|
|
|
|
|
|
|
, |
|
|
|
|
|
|
|
|
|
|
|
|
4 |
|
|
|
|
||
|
y(x 5) |
|
|
|
|
|
|
|||||||
|
ln |
|
|
|
|
|
||||||||
|
|
|
|
ax2 by3 , |
||||||||||
13. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
z |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
ax by |
, |
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x 2;
2 x 4, |
x [0,5]; hx 0.31; a 2; b 3; c 7; |
||
|
|||
x 4; |
|
|
|
x < b, |
x [1,3]; hx |
0.1; a 1.5; b 2; |
|
x b; |
|||
|
|
||
x y; |
|
|
|
|
x [1,10]; hx |
2; y [ 4,3]; hy 1; |
|
x y; |
|
|
|
xy > 0, xy 0;
x [ 1,1]; hx 0.9; a 1.7; b 2.3; y [-2,2];hy 1;
|
|
|
|
|
|
|
|
|
|
|
|
z |
a x ln |
x 2 |
3 |
|
; |
x [ 3,3]; h |
|
0.5; |
a 2.4; |
14. |
|
|
|
|
|
|||||
x 1 |
|
|
x |
|||||||
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
17
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
15. |
z |
|
x 1.5 xa |
; |
x [1,4]; h |
|
0.5; a >= 0.5; h |
|
= 0.2; |
|||||||
|
(x 2)1 / 3 |
x |
a |
|||||||||||||
|
|
|
|
|
|
|
|
|
||||||||
x і a змінюються одночасно. |
|
|
|
|
|
|
|
|||||||||
16. |
|
cos ax 2 , |
|
|
|
|
|
|
|
|
||||||
|
|
|
x 2; |
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
x 0,5;3,1 ; hx |
|
|
|
||||
|
y |
|
|
x 2a |
|
|
|
x 2; |
0.2 |
|
|
|||||
|
|
|
|
|
|
|
|
|||||||||
|
tg |
|
|
, |
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
||||||
а - має початкове значення 0.1 і змінюється одночасно с x с кроком ha 0.3 .
17.
a |
2 x, |
a x; |
|
|
|
|
|
|
|
|||
|
2 , |
|
a x; |
|
x 1,8 , h |
|
|
a 2,10 , h |
|
|||
y a |
|
|
x |
0.5 |
1; |
|||||||
|
|
|
|
|
|
|
|
|
|
a |
|
|
2 |
x, |
a x; |
|
|
|
|
|
|
|
|||
a |
|
|
|
|
|
|
|
|
||||
18. |
|
|
|
|
|
|
|
|
|
|
|
|
y Z |
sin 2 x 2 |
|
|
|
|
x 2,5;2 , hx |
|
|||||
|
|
; |
Z |
x |
x 2 ; |
|
0.5 |
|||||
|
|
|
||||||||||
|
|
|
2 |
x |
|
|
|
|
|
|
|
|
При якім значенні х функція буде найменшою.
19.Підрахувати скільки разів функція y cos x 2 e x приймає негативне значення, якщо x 0.3,5 , hx 0.1.
20.Увести координати 10 крапок на площині і визначити, у якій із чвертей більше всього крапок.
21.Увести п'ять наборів сторін трикутника а, b, c і визначити для яких сторін висота ha буде найбільшою.
Підказка: ha a2 
p p a p c , де p a b c / 2.
22.Увести координати п'яти крапок і визначити яка з них потрапить в окружність з радіусом R і координатами центра (а, в).
Підказка: рівняння окружності має вид: (x a)2 ( y b)2 R2
23.Увести п'ять шестирозрядних цілих чисел і знайти для яких з них сума «лівих» трьох цифр більше суми «правих» трьох.
18
24. Підрахувати скільки разів функція
y cos x2 e x
приймає негативне значення, якщо x 0,3;5 , hx 0.1. 25. Обчислити функцію у вигляді формули
10 |
x |
i |
|
y |
|
для кожного значення i. |
|
i |
|
||
i 1 |
|
|
|
19
2 РОЗВ‘ЯЗАННЯ ЗАДАЧ C ВИКОРИСТАННЯМ ОДНОВИМІРНИХ І ДВОВИМІРНИХ МАСИВІВ
2.1 Ціль роботи
Прищепити студентам навички розв‘язання задач з використанням одновимірних і двовимірних масивів, складних циклів і використання покажчиків.
2.2Методичні рекомендації з організації самостійної роботи
студентів
При підготовці до роботи повторити способи опису одновимірних і двовимірних масивів, використання індексованих змінних при обробці даних, організацію введення і виведення масивів, використання покажчиків .
На відміну від задач, розглянутих у попередній лабораторній роботі, аргумент функції може бути заданий і іншим способом — у вигляді довільного набору значень.
Приклад 2.1 |
Обчислити функцію y = axi2 – sin xi, де x =-1, |
x =- |
|
1 |
2 |
0,93, x3=-0,49, x4=0, |
x5=1,13, x6=0,96, x7=1,75. |
|
При розв‘язанні такої задачі кожне з перерахованих значень треба ввести в пам'ять комп'ютера, для чого буде потрібно відповідна кількість комірок. Такий довільний ряд однотипних значень, які мають одне загальне символічне ім'я (ідентифікатор), називається масивом. Окреме значення масиву називається його елементом, а місце розташування елементів у масиві визначається за допомогою його індексу. У пам'яті комп'ютера масив займає стільки комірок пам'яті, скільки в ньому елементів.
У схемі алгоритму розв‗язання задачі спочатку передбачається введення значень всіх елементів оброблюваного масиву x[n] (n =7 ). Число в дужках визначає кількість елементів масиву. Нумерація елементів масиву починається
з 0 і закінчується |
n –1 . Далі введені елементи використовуються при |
обчисленні функції, |
шляхом вказівки індексу відповідного елемента. |
Схема алгоритму розв‘язання цієї задачі і програма виглядають наступним чином:
//P2_1.CPP -обчислення значень функції
// |
використання одновимірного масиву |
Начало |
#include <iostream> |
|
20
