Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Информатика.ЛБ

.pdf
Скачиваний:
15
Добавлен:
14.04.2015
Размер:
950.97 Кб
Скачать

1.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