Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OOP.docx
Скачиваний:
6
Добавлен:
12.11.2019
Размер:
347.23 Кб
Скачать

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

КРЕМЕНЧУЦЬКИЙ ДЕРЖАВНИЙ ПОЛІТЕХНІЧНИЙ УНІВЕРСИТЕТ ІМЕНІ МИХАЙЛА ОСТРОГРАДСЬКОГО

МЕТОДИЧНІ ВКАЗІВКИ ЩОДО ВИКОНАННЯ ЛАБОРАТОРНИХ РОБІТ З НАВЧАЛЬНОЇ ДИСЦИПЛІНИ “ОБ'ЄКТНО – ОРІЄНТОВАНЕ ПРОГРАМУВАННЯ” ДЛЯ СТУДЕНТІВ ДЕННОЇ ФОРМИ НАВЧАННЯ ЗІ СПЕЦІАЛЬНОСТІ 6.091501 - “КОМП'ЮТЕРНІ СИСТЕМИ ТА МЕРЕЖІ”

(У ТОМУ ЧИСЛІ СКОРОЧЕНИЙ ТЕРМІН НАВЧАННЯ)

ЧАСТИНА 1

КРЕМЕНЧУК 2007

Методичні вказівки щодо виконання лабораторних робіт з навчальної дисципліни “Об'єктно – орієнтоване програмування” для студентів денної форми навчання зі спеціальності 6.091501 - “Комп'ютерні системи та мережі” (у тому числі скорочений термін навчання) частина 1

Укладачі ст. викл. В.Ю. Бельська, ст.викл. А.Л. Смірнова

Рецензент к.т.н, доц. Ю.В. Лашко

Кафедра комп'ютерних та інформаційних систем

Затверджено методичною радою КДПУ

Протокол № від _

Заступник голови методичної ради доц. С.А. Сергієнко

ЗМІСТ

ВСТУП………………………………………………………………………...

4

Лабораторна робота №1 Використання основних операторів мови C++..

5

Варіанти завдань до лабораторної роботи №1…………………………..

14

Лабораторна робота №2 Побудова|шикування| рекурсивних функцій ………………...

16

Варіанти завдань до лабораторної роботи №2…………………………..

21

Лабораторна робота №3 Створення|створіння| і обробка масивів…………………….

24

Варіанти завдань до лабораторної роботи №3…………………………..

31

Лабораторна робота №4 Робота з рядками|………………………………….

36

Варіанти завдань до лабораторної роботи №4…………………………..

42

Лабораторна робота №5 Робота з|із| абстрактними типами даних(АТД|): struct, union, enum……………………………………………………………..

45

Варіанти завдань до лабораторної роботи №5…………………………

56

Лабораторна робота №6 Класи і об'єкти в С++…………………………….

60

Варіанти завдань до лабораторної роботи №6…………………………..

56

Список літератури…………………………………………………………….

74

Додаток А……………………………………………………………………...

75

ВСТУП

В останні роки програмування для обчислювальних машин стало не тільки засобом, володіння яким вирішує успішність роботи в багатьох прикладних галузях, а також і предметом наукових досліджень. Із ремесла програмування перетворилось в академічну дисципліну. Незважаючи на достатньо велику кількість існуючих мов алгоритмічного програмування, мова C/C++ та її розширення займають одне з центральних місць при виборі основного засобу програмування. Оскільки мова C/C++ вважається мовою середнього рівня, її використовують як для розробки системного програмного забезпечення з використанням функції та операторів нижнього рівня, так і для створення сучасних візуальних додатків, основою яких є технологія побудови та використання об’єктів.

Дисципліна «Об'єктно – орієнтоване програмування» викладається студентам спеціальності 6.091501 – «Комп’ютерні системи та мережі» на протязі трьох семестрів. Дані методичні вказівки охоплюють тематику першого семестру викладання і будуть використані студентами при підготовці та виконанні лабораторних робіт. Описані в методичних вказівках лабораторні роботи присвячені основам програмування та отриманню навиків алгоритмізації поставленої задачі засобами мови C/C++.

Опис кожної лабораторної роботи містить короткі теоретичні відомості, порядок виконання лабораторної роботи, приклад виконання, зміст звіту і індивідуальні завдання до лабораторної роботи.

При формуванні кожної лабораторної роботи враховувались новітні тенденції в вищій освіті, які передбачають модульно-рейтингову систему навчання. А саме, детальний аналіз запропонованих прикладів у лабораторній роботі є обов’язковою умовою її виконання та захисту. Виконання індивідуальних завдань дозволяє отримати додаткові бали та підвищити рейтинг студенту.

Лабораторна робота № 1

Використання основних операторів мови|язика| C++|із|

Мета|ціль|. Отриматитримати практичні навички|навички| використання основних операторів мови С++.

Короткі теоретичні відомості

У С++ можна скласти безліч здійснимих операторів (statements(оператор) – елемент тексту програми, що виражає|виказує,висловлює| цілісну закінчену дію|). Як правило, здійснимим оператором є|з'являється,являється| складний або простий вираз|вираження| дій, який обов'язково завершується оператором ‘;’. Порожній|пустий| оператор записується|занотовується| як окрема крапка з комою і використовується в тому випадку, якщо|у тому випадку , якщо,в том случае | синтаксично оператор необхідний, але|та| при цьому ніяких|жодних| дій виконувати не потрібно. Складений|складовий| оператор – це послідовність операторів, поміщених|ув'язнених| у фігурні дужки { }. Складені|складовий| оператори в основному використовуються для угрупування простих операторів у функціональні ланки програми. У базовій мові|язиці| С|із| подібний оператор називався блоком. У мові|язиці| С|із| всі оголошення повинні знаходитися|перебувати| на початку блоку, а в мові|язиці| С++ оголошення можуть зустрічатися в будь-якому місці оператора до безпосереднього використання оголошуваного об'єкту. Слід пам'ятати, що оголошення усередині складеного|складового| оператора або блоку невидимі за межами|кордонами| оператора. Надалі вважатимемо|лічитимемо|, що скрізь, де можна вставити оператор, допускається і складений|складовий| оператор.

Умовний оператор може бути використаний в двох формах:

if(умова) оператор

/* Якщо умова істинна, то виконується оператор, інакше оператор пропускається */

або

if(умова) оператор1

else оператор2

/* Якщо умова є істинною, то виконується оператор1, інакше виконується оператор2 */

Якщо в другій формі оператор1 і оператор2 є|з'являються,являються| простими операторами, то можливо використання умовного оператора:

(умова)? оператор1: оператор2;

Наприклад: визначити мінімальне (min) з|із| двох значень х і у|в,біля| можна таким чином:

  1. //використовуємо першу форму умовного оператора

min=x;

if(min>y)min=y;

  1. // використовуємо другу форму умовного оператора

if(x<y)min=x;

else min=y;

  1. // використовуємо умовний оператор ?:;

(x<y)? min=x: min=y; або min=(x<y)? x: у|в,біля|;

В тому випадку, якщо|у тому випадку , якщо,в том случае | умовою оператора if - else є|з'являється,являється| порівняння деякої змінної з|із| константним виразом|вираженням| типу int (ціле) або char (символ), зручніше використовувати оператор switch:

switch(ідентифікатор)

{ case Const_1: оператор_1 break;

case Const_2: оператор_2 break;

.

case Const_N: оператор_N break;

default: оператор_N+1 }

Те ж можна записати за допомогою оператора if - else таким чином:

if(ідентифікатор = = Const_1) оператор_1

else if(ідентифікатор = = Const_2) оператор_2

.

else if(ідентифікатор = = Const_N) оператор_N

else оператор_N+1

Оператори циклу використовуються в трьох основних формах: while (оператор циклу з|із| передумовою), do while (оператор циклу з|із| умовою поста), for.

Синтаксис операторів:

вираз_1

while(вираз_2){

оператор //тіло циклу

вираз_3}

вираз_1 // може бути відсутнім або знаходитися|перебувати| усередині циклу

do{

оператор //тіло циклу

выраз_3

}while(вираз_2);

for(вираз_1; вираз_2; вираз_3)

оператор //тіло циклу

де вираз_1 – оператор, який відповідає за ініціалізацію параметрів циклу, вираз_2 – оператор, який визначає умову роботи циклу, вираз_3 – оператор, який задає принцип зміни параметрів циклу. В операторі for може бути відсутнім будь-який з виразів з|із| обов'язковою його заміною порожнім|пустим| оператором.

Наприклад. Обчислити|обчисляти,вичислити| середнє арифметичне введеної|запровадженій| послідовності чисел.

#include <iostream.h>

void main()

{float S, x;

int n, i;

cout<<"\nВведіть кількість чисел послідовності \n";

cin>>n; //введення значення n

i=0;

// використання оператора while

S=0;

// перший варіант //другий варіант

while(i < n)

{cout<<”Введите х”;

cin>>x;

S+=x; //S=S+x

i++; }

while(i + + < n)

{cout<<”Введите х”;

cin>>x;

S+=x;

}

// використання оператора do-while

i=0;

S=0;

//перший варіант //другий варіант

do {

cout<<”Введите х”;

cin>>x;

S+=x;

} while(++i < n);

do {

cout<<”Введите х”;

cin>>x;

S+=x;

i++;

} while(i < n);

// використання оператора for

for(i=0, S=0; i<n; i++){

cout<<”Введите х”;

cin>>x;

S+=x;

}

cout<<"Среднее арифметичне S/n = "<<S/n<<endl;

//видача на екран значення середнього арифметичного

}

Завдання до лабораторної роботи №1

  1. Вивчити правила використання основних операторів мови С++ на прикладі програми, розглянутої в прикладі виконання лабораторної роботи №1. Перевірити та пояснити роботу наведеного прикладу.

  2. Модифікувати наведений в прикладі виконання лабораторної роботи №1 код програми з метою зменшення зайнятої під змінні оперативної пам’яті.

  3. |задачі|Написати програму, що дозволяє залежно від введеного|запровадженого| значення параметра Pr (наприклад, 1, 2, 3) виконати одну з наступних|слідуючих| дій:

  1. Обчислити|обчисляти,вичислити| n - ий| елемент заданого арифметичного ряду|лави,низки|.

  1. Обчислити|обчисляти,вичислити| суму n перших елементів заданого ряду|лави,низки|.

  2. Обчислити|обчисляти,вичислити| значення суми арифметичного ряду з|із| точністю Eps .

Якщо необхідно, то обчислення|підрахунки| вести за рекурентною| формулою: u n+1 = f ( u,n). У програмі використовувати можливості|спроможності| операторів if - else або switch, while або do – while, for. Передбачити можливість|спроможність| багатократного|багаторазового| виконання обчислень|підрахунків|.

Приклад виконання лабораторної роботи №1

  1. Приклад використання рекурентної формули un+1 = f(u,n) для послідовного обчислення елементів ряду . Знайдемо в загальному вигляді відношення наступного та поточного елементів ряду

Тоді наступний елемент заданого ряду може бути представлено через попередній:

Отримана залежність може бути використана для обчислення будь-якого елементу ряду за умов визначення нульового елементу. Підстановка значення k=0 в загальну формулу дозволяє обчислити u­­0=z, де z задається окремо.

  1. Приклад визначення n-ого елементу заданого ряду за допомогою оператора for.

float z,u;

int k,n;

cin<<z<<n; // завдання z та n

u=z; //початковий елемент ряду дорівнює z

for (k=0; k<n; k++)

u*= -z*z/((2*k+2)*(2*k+3)); // визначення наступного елементу

cout<<”\n”<<n<<”-ий елемент ряду = “<<u;

  1. Приклад визначення суми перших n елементів заданого ряду за допомогою оператора for.

float z,u,S;

int k,n;

cin<<z<<n;

u=z; //

S=0; //

for (k=0; k<n; k++) { S+=u; //накопичення суми

u*= -z*z/((2*k+2)*(2*k+3));

//обчислення наступного елемента

}

cout<<”\nсума перших “<<n<<” елементів дорівнює ”<<S;

  1. Приклад визначення суми елементів заданого ряду з заданою точністю eps за допомогою оператора while.

float z, u, S, eps;

int k;

cin<<z<<eps;

u=z;

S=0; k=0;

while(fabs(u)>=eps) //послідовно обчислювати елементи ряду, поки вони //не менші за задану точність eps

{S+=u; // накопичення суми

u*= -z*z/((2*k+2)*(2*k+3)); // обчислення наступного елемента

k++; //номер поточного елементу збільшити на одиницю

}

cout<<”\nсума елементів з точністю“<<eps<<” дорівнює ”<<S;

  1. Приклад повного коду програми, яка дозволяє реалізувати усі пункти завадання для арифметичного ряду .

#include <iostream.h> //підключення бібліотеки вводу - виводу

#include <math.h> //підключення бібліотеки математичних функцій

void main()

{char Pr; //змінна використовуються для вибору номера пункту

do //оператор do – while використовується для реалізації багаторазового

//виконання пунктів меню

{ cout<<”\nВведіть номер пункту: ”;

cout<<”\n1 - Обчислити| n - ий| елемент заданого арифметичного ряду ”;

cout<<”\n2 - Обчислити суму n перших елементів заданого ряду”;

cout<<”\n3 -Обчислити значення суми арифметичного ряду з точністю Eps”;

cout<<”\n4 - Вихід\n;

cin>>Pr;

switch(Pr)

{ case ‘1’: //визначення n–ого елементу

{ float z,u;

int k,n;

cin>>z>>n;

u=z;

for (k=0; k<n; k++)

u*= -z*z/((2*k+2)*(2*k+3));

cout<<”\n”<<n<<”-ий елемент ряду = “<<u;}

break;

case ‘2’: //визначення суми n елементів

{ float z, u, S;

int k, n;

cin>>z>>n;

u=z;

S=0;

for (k=0; k<n; k++)

{ S+=u;

u*=-z*z/((2*k+2)*(2*k+3));

}

cout<<”\nCума перших “<<n<<”елементів дорівнює ”<<S; }

break;

case ‘3’: //визначення суми елементів з заданою точністю eps

{ float z, u, S, eps;

int k;

cin>>z>>eps;

u=z;

S=0; k=0;

while(fabs(u)>=eps) //

{ S+=u; // накопичення суми

u*= -z*z/((2*k+2)*(2*k+3));

k++;

}

cout<<”\nCума елементів з точністю“<<eps<<”дорівнює” <<S;

cout<<”\nПеревірка отриманої суми:”

<<“\nЗначення функції розкладення в точці “<<z << “ дорівнює “ << sin(Z);}

break;

case ‘4’: break;

default: cout<<”\nНевірне значення. Задайте значення від 1 до 4 ”;

}

}

while(Pr!=4); //продовжувати цикл, поки значення заданого признаку не //дорівнюватиме 4

}

Зміст|вміст,утримання| звіту до лабораторної роботи №1

  1. Титульний лист|аркуш|: назва дисципліни; номер і найменування роботи; прізвище, ім'я, по батькові студента; дата виконання.

  2. Постановка завдання|задачі|.

  3. Математичний розрахунок формул рекурентної залежності.

  4. Визначення основних змінних та функцій з|із| коментарями.

  5. Реалізація функцій.

  6. Лістинг основної програми, в якому повинно бути вказано, в якому місці і яка функція викликається|спричиняються|.

  7. Результати порівняння сум ряду, отриманих відповідно до другого та третього пунктів завдання, зі значенням контрольної функції розкладення.

Варіанти завдань до лабораторної роботи №1|задавань|

Таблиця 1.1

Варіант

Сума

Контроль

Вихідні дані

Функція розкладення

1

2

3

4

1.

x =2, =

ch(x)

2.

x =1.5, =

sh(x)

3.

x =3, =

4.

x =3, =

5.

z =0.5236, =

sin(z)

6.

z =1.047, =

cos(z)

7.

x = - 0.5, =

ln(1+x)

8.

x =0.5,

=2.5, =

9.

x = - 1, =

Arctg(x)

10.

x = - 0.2, =

1

2

3

4

11.

x =0.5, =

12.

=

13.

=

Ln2

14.

x = 0.7, {x <1},

=

15.

x = -0.7, {x < 1},

=

16.

x = 0.5, {x < 1},

=

17.

x = -0.8 {x < 1},

=

18.

=

19.

=

20.

x =5 {x} , =

21.

x =1 { x > }, =

Lnx

22.

x = -1{-1 x < 1},

=

-ln(1-x)

1

2

3

4

23.

x = -0.5 {x < 1},

=

Arth x

24.

x = 0.5 {x < 1},

=

Arcth x

25.

=

2

26.

=

27.

=

28.

=

29.

=

30.

=

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