- •Лабораторна робота № 1
- •Короткі теоретичні відомості
- •Лабораторна робота № 2 Побудова|шикування| рекурсивних функцій
- •Короткі теоретичні відомості
- •Лабораторна робота № 3 Створення|створіння| і обробка масивів
- •Короткі теоретичні відомості
- •Лабораторна робота № 4 Робота з рядками|
- •Лабораторна робота № 5 Робота з|із| абстрактними типами даних(атд|): struct, union, enum
- •Короткі теоретичні відомості
- •Лабораторна робота № 6
- •Короткі теоретичні відомості Клас.
- •Приклади|зразки|.
- •Приклад|зразок|.
- •Список літератури Основна
- •Допоміжна
- •Деякі функції роботи з рядками із файлу string.H
- •39614, М. Кременчук, вул. Першотравнева, 20
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
КРЕМЕНЧУЦЬКИЙ ДЕРЖАВНИЙ ПОЛІТЕХНІЧНИЙ УНІВЕРСИТЕТ ІМЕНІ МИХАЙЛА ОСТРОГРАДСЬКОГО
МЕТОДИЧНІ ВКАЗІВКИ ЩОДО ВИКОНАННЯ ЛАБОРАТОРНИХ РОБІТ З НАВЧАЛЬНОЇ ДИСЦИПЛІНИ “ОБ'ЄКТНО – ОРІЄНТОВАНЕ ПРОГРАМУВАННЯ” ДЛЯ СТУДЕНТІВ ДЕННОЇ ФОРМИ НАВЧАННЯ ЗІ СПЕЦІАЛЬНОСТІ 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) з|із| двох значень х і у|в,біля| можна таким чином:
//використовуємо першу форму умовного оператора
min=x;
if(min>y)min=y;
// використовуємо другу форму умовного оператора
if(x<y)min=x;
else min=y;
// використовуємо умовний оператор ?:;
(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 код програми з метою зменшення зайнятої під змінні оперативної пам’яті.
|задачі|Написати програму, що дозволяє залежно від введеного|запровадженого| значення параметра Pr (наприклад, 1, 2, 3) виконати одну з наступних|слідуючих| дій:
Обчислити|обчисляти,вичислити| n - ий| елемент заданого арифметичного ряду|лави,низки|.
Обчислити|обчисляти,вичислити| суму n перших елементів заданого ряду|лави,низки|.
Обчислити|обчисляти,вичислити| значення суми арифметичного ряду з|із| точністю Eps .
Якщо необхідно, то обчислення|підрахунки| вести за рекурентною| формулою: u n+1 = f ( u,n). У програмі використовувати можливості|спроможності| операторів if - else або switch, while або do – while, for. Передбачити можливість|спроможність| багатократного|багаторазового| виконання обчислень|підрахунків|.
Приклад виконання лабораторної роботи №1
Приклад використання рекурентної формули un+1 = f(u,n) для послідовного обчислення елементів ряду . Знайдемо в загальному вигляді відношення наступного та поточного елементів ряду
Тоді наступний елемент заданого ряду може бути представлено через попередній:
Отримана залежність може бути використана для обчислення будь-якого елементу ряду за умов визначення нульового елементу. Підстановка значення k=0 в загальну формулу дозволяє обчислити u0=z, де z задається окремо.
Приклад визначення 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;
Приклад визначення суми перших 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;
Приклад визначення суми елементів заданого ряду з заданою точністю 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;
Приклад повного коду програми, яка дозволяє реалізувати усі пункти завадання для арифметичного ряду .
#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|задавань|
Таблиця 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. |
|
= |
|