kopilkaurokov.ru - сайт для учителей

Создайте Ваш сайт учителя Курсы ПК и ППК Видеоуроки Олимпиады Вебинары для учителей

Методические рекомендации для выполнения практических работ по дисциплине "Объектно-ориентированное программирование"

Нажмите, чтобы узнать подробности

Основная цель дисциплины "Объектно-ориентированное программирование": формирование знаний, умений и навыков, необходимых для создания программ для разных областей деятельности человека. Материал базируется на знании общеобразовательного курса математики и основ работы с компьютером, операционных систем.Практические работы производятся с целью закрепить теоретический материал, получить необходимые практические навыки при выполнении разных заданий.

Вы уже знаете о суперспособностях современного учителя?
Тратить минимум сил на подготовку и проведение уроков.
Быстро и объективно проверять знания учащихся.
Сделать изучение нового материала максимально понятным.
Избавить себя от подбора заданий и их проверки после уроков.
Наладить дисциплину на своих уроках.
Получить возможность работать творчески.

Просмотр содержимого документа
«Методические рекомендации для выполнения практических работ по дисциплине "Объектно-ориентированное программирование"»

Міністерство освіти і науки, молоді та спорту України

Індустріальний технікум ДонДТУ











Методичні рекомендації

до виконання практичних робіт

з дисципліни «Об’єктно-орієнтоване

програмування»


для студентів спеціальності

5. 05010301 «Розробка програмного забезпечення»







Алчевськ

2010




Склала Л.Л. Кузьміна – викладач вищої категорії


Рецензент В.А. Селезньов – викладач першої категорії





Затверджено

на засіданні методичної ради




_____________Л.І. Пономаренко голова методичної ради

ІТ Дон ДТУ




Розглянуто і схвалено на засіданні предметної (цикловий) комісії

Інформатики і комп'ютерної техніки

Протокол №_____ від “____”______________2010р.


Голова комісії

_____________О.Ю. Романова



Зміст

Вступ 4
Практична робота №1 Створення програм з використанням логічних операцій та операторів розгалуження 5
Практична робота № 2 Створення програм з використанням операторів циклу 9
Практична робота № 3 Створення програм для обробки масивів 12
Практична робота № 4 Створення програм для обробки текстових змінних на С++. 16
Практична робота № 5 Створення програм по обробці структур 19
Практична робота № 6 Створення програм по роботі з файлами 22

Практична робота № 7 Створення програм з використанням

функції користувача
28

Практична робота № 8 Створення програм з використанням

модулів
34

Практична робота № 9 Створення програм з використанням

класів
36

Практична робота № 10 Створення програм з використанням

перевантаження операцій
42
Практична робота № 11 Створення програм з технологією наслідування та поліморфізму 47

Вступ

Запропоновані методичні вказівки для практичних робіт розроблені з урахуванням вимог до знань спеціалістів спеціальності «Розробка програмного забезпечення», які наведені в Державному стандарті вищої освіти.

Основна мета курсу “Об’єктно-орієнтоване програмування”: формування знань, умінь і навиків, необхідних для створення програм для різних областей діяльності людини.

Матеріал даного предмету базується на знанні загальноосвітнього курсу математики і основ роботи з комп'ютером, операційних систем.

Практичні роботи виконуються з метою закріпити теоретичний матеріал, отримати необхідні практичні навики при виконанні різних завдань.

В процесі виконання практичних робіт студент повинен уміти:

  • застосовувати теоретичний матеріал для складання оптимального алгоритму;

  • уміти вибирати метод рішення задачі;

  • записувати алгоритми на мові програмування;

  • виконувати і тестувати готову програму;

  • на основі отриманих результатів робити аналіз правильності роботи програми.

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

Правила виконання і оформлення практичної роботи:

  • студент повинен виконати практичну роботу в повному об'ємі. Якщо виникають питання, то можна скористатися вказівками до виконання кожної роботи або проконсультуватися у викладача;

  • практичну роботу слід оформляти в спеціальному журналі звітів;

  • після виконання роботи студент повинен відповісти на контрольні питання;

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






Практична робота № 1

Тема: Створення програм з використанням логічних операцій та операторів розгалуження

Мета роботи: отримати практичні навики по застосуванню умовних операторів і запису логічних виразів

Хід роботи

1. Видати на екран меню користувача з наступними пунктами:

1 - розрахунок функції

2 - знаходження максимального з трьох чисел

3 - рішення задачі

2. При виборі певного пункту меню користувач повинен ввести з клавіатури потрібні початкові дані і отримати відповідь. Якщо вибраний неприпустимий режим роботи програми, то видати повідомлення про помилку

3. Як функція для першого пункту меню пропонується наступна:

На екран з вивести значення x, з і у з точністю до 3 знаків після коми. Перевірити працездатність програми при всіх можливих значеннях а (при а=10 x=11.389, c=13.71, y=-0,466; при a=5 x=0.006, c=12.506, y=2.

4. Знаходження мінімального з трьох чисел виконати за допомогою оператора IF...ELSE і оператора ? : Видати на екран обидва результат для порівняння

5. Як завдання для третього пункту меню пропонується наступна. До фіналу конкурсу кращого по професії «Фахівець електронного офісу» були допущені двоє: Іванов і Петров. Змагання проходили в три тури. Іванов в першому турі набрав M1 балів, в другому – N1, в третьому – P1. Петров – відповідно M2, N2, P2. Складіть програму, що визначає прізвище і загальну суму балів переможця.

Вказівки до виконання завдання

//підключаємо заголовні файли

#include

#include

#include

void main()

{

//описуємо змінну для запам'ятовування вибору з меню

int до;

//очищаємо екран

clrscr();

//видаємо меню на екран і чекаємо вибору від користувача

cout

cout

cout

cout

cink;

//починаємо аналізувати вибір користувача

switch (k)

{

//якщо вибраний перший пункт меню

case 1: {

//описуємо змінні

float а,x,c,y;

//вводимо початкові дані

cout

cina;

//рахуємо функцію Х

if (a=8)

x=4+exp(2);

else

x=pow(cos(a),4);

//рахуємо функцію С

c=pow(5*sin(4*x),1/3.0)+12;

//рахуємо функцію Y

if (c0)

y=4*cos(x)-2;

else

if (c==0)

y=sqrt(x)+4;

else

y=pow(x,3) /2;

//виводимо результат

cout.precision(3);

cout

//виходимо з оператора switch

break;

}

//якщо вибраний другий пункт меню

case 2: {

//описуємо змінні

float а,b,c,d;

//вводимо початкові дані

cout

cinabc;

//знаходимо максимальне з 3 чисел

//за допомогою оператора IF...ELSE

if (ab && ac)

d=a;

else

if (ba && bc)

d=b;

else

d=c;

//виводимо результат

cout

//знаходимо максимальне з 3 чисел

//за допомогою оператора ?:

d=(ab && ac ? а : (ba && bc ? b : з));

//виводимо результат

cout

//виходимо з оператора switch

break;

}

//якщо вибраний третій пункт меню

case 3:

{

//описуємо змінні

float m1,n1,p1,m2,n2,p2;

//вводимо початкові дані

cout

cinm1n1p1;

cout

cinm2n2p2;

//визначаємо переможця і виводимо результат

if (m1+n1+p1 m2+n2+p2)

cout

else

if (m1+n1+p1

cout

else

cout

//виходимо з оператора switch

break;

}

//якщо вибраний неприпустимий пункт меню

default :

//видаємо повідомлення про помилку

cout

}

//робимо паузу для перегляду результату

cout

getch();

return;

}

Контрольні питання

  1. Запис оператора розгалуження. Використання операторних дужок

  2. Запис вкладених операторів розгалуження

  3. Запис оператора вибору. Принцип його роботи

  4. Запис оператора ?

  5. Як змінити порядок виконання програми

  6. Що називають умовою в операторові?

  7. Умовна передача управління

  8. Який оператор використовується для умовної передачі управління?

  9. Яка використовується структура алгоритму?


Практична робота № 2

Тема: Створення програм з використанням операторів циклу

Мета роботи: отримати практичні навики по використанню операторів циклу в програмах на С++

Хід роботи

1. Скласти програму для знаходження значення функції вигляду:

2. Результат вивести з точністю до 3 знаків;

3. Провести табулювання функції Y=SIN X на відрізку [а,b] з кроком 0,75. Почало і кінець відрізку задати з клавіатури. При цьому програму оформити з наступними параметрами:

3.1. На екран видати заголовок у вигляді:

Аргумент (Х) Функція (Y);

3.2. Нижче в два стовпці видати значення аргументу і функції з точністю до 3 знаків;

3.3 Завдання вирішити за допомогою всіх можливих видів циклу

Вказівки до виконання завдання

#include

#include

#include

int main()

{

//очищаємо змінні

float x,M,L;

int а,b,i;

//завдання 1

//очищаємо екран

clrscr();

cout

//вводимо початкові дані

cout

cinx;

//рахуємо значення функції L

if (x

L=1-pow(x,2) /3;

else

for (L=0, b=1; b

L+=pow(sin(pow(x,b)),2);

//рахуємо значення функції М

for (M=1, i=1; i

M*=(pow(x,i) -sqrt(i));

//задаємо точність виводу до 3 знаків

cout.precision(3);

//видаємо результат

cout

//робимо паузу для перегляду

cout

getch();

//завдання 2

//очищаємо екран

clrscr();

cout

//вводимо початкові дані

cout

cinab;

//видаємо таблицю значень функції за допомогою циклу for

cout

cout

for (x=a; x

cout

//робимо паузу для перегляду

cout

getch();

//видаємо таблицю значень функції за допомогою циклу while

clrscr();

cout

cout

x=a;

while (x

{

cout

x+=0.75;

}

//робимо паузу для перегляду

cout

getch();

//видаємо таблицю значень функції за допомогою циклу do while

clrscr();

cout

cout

x=a;

do

{

cout

x+=0.75;

}

while (x

//робимо паузу для перегляду

cout

getch();

}


Контрольні питання

  1. Для вирішення яких завдань зручно застосовувати оператора switch?

  2. Що таке циклічний обчислювальний процес?

  3. Які оператори використовуються для організації циклів?

  4. Для вирішення яких завдань кожен з них зручно використовувати?

  5. Які три операції повинні проводитися в програмі при організації будь-якого циклу?

  6. Охарактеризуйте переваги, які дає цикл for.

  7. Вкажіть призначення операторів, що управляють, що дозволяють змінювати порядок роботи циклу.

  8. Охарактеризуйте переваги, які дає цикл while.


Практична робота № 3

Тема: Створення програм для обробки масивів

Мета роботи: отримати практичні навики по опису і обробці одновимірних і двовимірних масивів на мові C++

Хід роботи

1. Одновимірні масиви:

Скласти програму, що виконує наступні функції

1.1 Даний масив з 10 цілих чисел. Заповнити масив випадковими значеннями, видати масив на екран

1.2 Знайти середнє значення позитивних елементів і кількість негативних елементів

1.2 Всі елементи менше 5 зменшити мінімальний елемент масиву

2. Скласти програму, що виконує наступні функції:

2.1 Даний двовимірний масив дійсних чисел розміром 4х5. Заповнити масив випадковими числами видати на екран у вигляді матриці

2.2 У масиві знайти мінімальний елемент і додасть його до елементів першого стовпця

2.3 У масиві знайти кількість негативних елементів в непарних стовпцях і середнє значення елементів в парних стовпцях

Вказівки до виконання завдання

Одновимірні масиви

//підключаємо заголовні файли

#include

#include

#include

void main()

{

//описуємо змінні і масив

float а,b,sum,kol1,kol2;

int mas[10],i,min;

//очищаємо екран

clrscr();

//вводимо кінці відрізку

cout

cinab;

//формуємо масив і виводимо на екран

cout

randomize();

for (i=0; i

{

mas[i]=(b-a)*rand()/32767+a;

cout

}

//знаходимо середнє позитивних елементів масиву

//і кількість негативних елементів масиву

for (sum=0, kol1=0, kol2=0, i=0; i

if (mas[i]=0)

{

sum+=mas[i];

kol1++;

}

else

kol2++;

//виводимо знайдені значення на екран

cout

cout

//знаходимо мінімальне значення масиву

for (min=mas[0], i=0; i

if (mas[i]

min=mas[i];

//виводимо знайдене значення на екран

cout

//елементи, менші 5, зменшуємо на min

for (i=0; i

if (mas[i]

mas[i]=mas[i]-min;

//виводимо отриманий після зменшення масив

cout

for (i=0; i

cout

//робимо паузу для перегляду

getch();

return;

}

Двовимірні масиви

//підключаємо заголовні файли

#include

#include

#include

void main()

{

//описуємо масив і змінні

float mas[4][5],a,b,min,sum,kol1,kol2;

int i,j;

//очищаємо екран

clrscr();

//вводимо кінці відрізань

cout

cinab;

//формуємо масив і виводимо на екран

cout

cout.precision(2);

randomize();

for (i=0; i

{

for (j=0; j

{

mas[i][j]=(b-a)*rand()/32767+a;

cout.width(6);

cout

}

cout

}

//знаходимо мінімальний елемент в масиві

for (min=mas[0][0], i=0; i

for (j=0; j

if (mas[i][j]

min=mas[i][j];

cout

//додаємо min до першого стовпця масиву

for (i=0; i

mas[i][0]+=min;

//виводимо отриманий масив на екран

cout

cout.precision(2);

randomize();

for (i=0; i

{

for (j=0; j

{

cout.width(6);

cout

}

cout

}

//знаходимо середнє в парних стовпцях і

//кількість негативних елементів в непарних стовпцях

for (sum=0, kol1=0, kol2=0, i=0; i

for (j=0; j

if (j%2!=0)

{

sum+=mas[i][j];

kol1++;

}

else

if (mas[i][j]

kol2++;

//виводимо знайдені значення на екран

cout

cout

//робимо паузу для перегляду

getch();

return;

}

Контрольні питання

  1. Що таке масив? Дайте визначення.

  2. У чому полягають переваги представлення інформації у вигляді масиву?

  3. Яким чином визначається довжина масиву при його ініціалізації?

  4. Що таке покажчик? Для чого він застосовується?

  5. Як оголошується змінна типу покажчик?

  6. Чому при оголошенні покажчиків необхідно указувати тип такою, що адресується з його допомогою змінній?

  7. Для чого використовуються змінні посилального типу?

  8. Перерахуєте основну схожість і відмінності посилань і покажчиків.

  9. У яких випадках недоцільно використовувати змінні посилального типу?

  10. Перерахуєте обмеження, що накладаються на посилання.

  11. Приведіть приклад ініціалізації покажчика адресою змінної.

  12. Яке призначення операції &?


Практична робота № 4

Тема: Створення програм для обробки текстових змінних на С++.

Мета роботи: отримати практичні навики по опису і обробці текстової інформації в програмах на С++

Хід роботи

1. Організовуйте введення довільного тексту з клавіатури;

2. Виведіть початковий текст в зворотному порядку;

3. Визначити, скільки слів в тексті починається на задану букву (букву ввести з клавіатури);

4. Вивести на екран задану кількість перших і останніх символів тексту (кількість символів вводиться з клавіатури);

5. Із слів "Добре" і "ранок" отримати фразу "Добрий ранок"


Вказівки до виконання завдання

//підключаємо заголовні файли

#include

#include

#include

void main()

{

//описуємо рядок str

//і буферний рядок buf

char str[80], buf[80], ch;

int i,j,kol;

//очищаємо екран

clrscr();

//вводимо початковий текст

cout

cin.getline(str,80);

//записуємо текст в зворотному порядку

//копіюємо початковий текст в змінну buf

strcpy(buf,str);

//видаємо змінну buf в зворотному порядку

cout

//визначаємо число слів на задану букву

//записуємо в buf пропуск

strcpy(buf" ");

//до рядка buf додаємо рядок str

strcat(buf,str);

//вводимо букву для пошуку

cout

cinch;

//організовуємо цикл для пошуку слів

for (kol=0,i=0;i

//якщо перший символ пропуск, а другий задана буква

if(buf[i]==' ' && buf[i+1]==ch)

//кількість слів збільшується на 1

kol++;

//видаємо знайдену кількість на екран

cout

//виводимо на екран задане число символів

//вводимо потрібне число символів

cout

cinkol;

//виводимо перші символи тексту

//організовуємо цикл від першого символу

//до заданого числа

for (i=0;i

//видаємо поточний символ і курсор залишаємо в рядку

cout

//переходимо на новий рядок

cout

//виводимо останні символи тексту

//організовуємо цикл від заданої кількості

//і до останнього символу

for (i=strlen(str) -kol;i

//видаємо поточний символ і курсор залишаємо в рядку

cout

//переходимо на новий рядок

cout

//будуємо першу фразу

//задаємо перше слово в змінній str

strcpy(str,"Доброе");

//додаємо до тексту пропуск

strcat(str" ");

//додаємо до тексту друге слово

strcat(str,"утро");

//видаємо отриманий текст

cout

//робимо паузу для перегляду

getch();

return;

}


Контрольні питання

  1. Призначення рядків і їх опис в програмі.

  2. Як вводяться і виводяться рядки?

  3. Як привласнювати значення рядкам?

  4. Як виконати злиття рядків.

  5. Як виконати порівняння рядків.

  6. Як визначити довжину рядка?

  7. Принцип посимвольної обробки строкової змінної.

  8. Функції по роботі з рядками.

  9. У якому заголовному файлі зберігаються функції по роботі з рядками?

  10. Як в програмі використовувати змішаний алфавітно-цифровий код?

Практична робота № 5

Тема: Створення програм по обробці структур

Мета роботи: отримати практичні навики по опису і обробці структур в програмах на С++

Хід роботи

1. Об'єкт книга описується наступними властивостями: шифр, автор, назва, видавництво, рік видання. Описати масив з N книг (кількість книг в масиві ввести з клавіатури);

2. Скласти програму, яка виконує наступні функції:

2.1. Організувати введення інформації про книги;

2.2. Підрахувати, скільки книг видано в заданому році;

2.3. Вивести на екран автора і назви книг із заданим видавництвом (вводити можна довільна кількість перших символів видавництва);

2.4. Вивести на екран назви новітніх книг (максимальний рік видання). Якщо таких книг декілька, то вивести все;

Вказівки до виконання завдання

//підключаємо заголовні файли

#include

#include

#include

//описуємо структуру "книга"

struct book

{

//поля шифр і рік видання

int shifr,god;

//поля автор, назва, видавництво

char autor[20], nazv[50], izdat[15];

};

//початок головної програми

void main()

{

//описуємо масив з 30 книг

book mas[30];

//описуємо допоміжні змінні

int i,n,kol,max,god;

char izdat[15];

//очищаємо екран

clrscr();

//вводимо кількість книг

cout

cinn;

//вводимо дані про n книги

cout

for (i=0;i

{

cout

coutmas[i].shifr; cin.get();

cout

cout

cout

coutmas[i].god; cin.get();

}

//вводимо рік видання для пошуку

cout

cingod; cin.get();

//запускаємо цикл по всьому масиву книг

for (kol=0,i=0;i

//якщо рік видання книги рівний введеному року

if (mas[i].god==god)

//ту кількість збільшуємо на 1

kol++;

//видаємо знайдену кількість на екран

cout

//вводимо видавництво для пошуку книг

cout

cin.getline(izdat,15);

cout

//запускаємо цикл по всьому масиву книг

for (i=0;i

//якщо видавництво книги рівне введеному видавництву

if (strnicmp(mas[i].izdat,izdat,strlen(izdat))==0)

//виводимо на екран автора і назву книги

cout

//знаходимо максимальний рік видання книг

//запускаємо цикл по всьому масиву книг

for (max=mas[0].god,i=0;i

//якщо черговий елемент більше максимального

if (max

//запам'ятовуємо знайдене значення як максимальне

max=mas[i].god;

//виводимо знайдене максимальне значення

cout

cout

//запускаємо цикл по всьому масиву книг

for (i=0;i

//якщо рік видання книги рівний максимальному значенню

if (mas[i].god==max)

//виводимо на екран назву цієї книги

cout

//робимо паузу для перегляду

getch();

return;

}

Контрольні питання

  1. Поняття структур.

  2. Принцип опису структур?

  3. Як виконуються операції із структурами?

  4. Що таке структурна змінна?

  5. Ініціалізація структури.

  6. Доступ до елементів структури.

  7. Що таке масиви структур?

  8. Як описуються масиви структур?

  9. Вкладені структури

  10. Передача інформації про структуру функції









Практична робота № 6

Тема: Створення програм по роботі з файлами

Мета роботи: отримати практичні навики по використанню файлів в програмах на С++

Хід роботи

1. Об'єкт книга описується властивостями: шифр, автор, назва, ціна. Скласти програму, що виконує наступні функції:

1.1. Видати меню з режимами роботи:

1 - створення файлу

2 - додавання у файл

3 - книги з максимальною ціною

4 - книги вказаного автора

5 - вихід;

1.2. При виборі першого пункту створюється файл BIBLIO.DAT і записується в нього інформація про N книг;

1.3. При виборі другого пункту можна додати у файл ще M книг;

1.4. При виборі пункту 3 на екран з файлу виводяться назви книг з максимальною ціною;

1.5. При виборі пункту 4 програма підраховує кількість книг вказаного автора (автора ввести з клавіатури);



Вказівки до виконання завдання

//підключаємо заголовні файли

#include

#include

#include

#include

#include

//описуємо структуру "книга"

struct book

{

int shifr;

char autor[15], nazv[30];

float cena;

};

void main()

{

//описуємо змінну для роботи із структурою

book bk;

//описуємо вспомагательные змінні

int i,n,k,b,kol;

float maxcena;

char autor[15];

//обнуляємо ознаку завершення програми

b=0;

//поки b=0 повторюватимемо цикл видачі меню

while (b==0)

{

//очищаємо екран

clrscr();

//видаємо меню програми

cout

cout

cout

cout

cout

//запрошуємо вибір користувача з меню

coutk;

//обробляємо вибраний пункт меню

switch (k)

{

//якщо вибраний перший пункт меню

case 1:

{

//описуємо змінну для читання з файлу

ofstream file1;

//пов'язуємо змінну з файлом на диску

file1.open("biblio.dat",ios::binary);

//вводимо кількість книг

cout

cinn;

//організовуємо цикл для введення даних

for (i=0;i

{

//вводимо дані про i книгу

cout

coutbk.shifr;cin.get();

cout

cout

coutbk.cena;cin.get();

//записуємо i книгу у файл

file1.write((char*) &bk, sizeof bk);

}

//закриваємо файл

file1.close();

break;

}

//якщо вибраний другий пункт меню

case 2:

{

//змінна file1 для читання з файлу

ifstream file1;

//змінна file1 зв'язується з файлом biblio.dat

file1.open("biblio.dat",ios::binary);

//змінна file2 для запису у файл

ofstream file2;

//змінна file2 зв'язується з файлом bufer.dat

file2.open("bufer.dat",ios::binary);

//у циклі читаємо дані з file1

//і записуємо їх в file2

while (file1.read((char*) &bk, sizeof bk))

file2.write((char*) &bk, sizeof bk);

//вводимо кількість книг для додавання

cout

cinn;

//у циклі вводимо дані про i книгу

for (i=0;i

{

cout

coutbk.shifr;cin.get();

cout

cout

coutbk.cena;cin.get();

//записуємо дані про i книгу в file2

file2.write((char*) &bk, sizeof bk);

}

//закриваємо file1

file1.close();

//закриваємо file2

file2.close();

//видаляємо з диска файл biblio.dat

remove("biblio.dat");

//перейменовуємо файл buffer.dat у biblio.dat

rename("buffer.dat","biblio.dat");

break;

}

//якщо вибраний третій пункт меню

case 3:

{

//припускаємо, що максимальна ціна рівна 0

maxcena=0;

//описуємо змінну для читання з файлу

ifstream file1;

//пов'язуємо змінну file1 з файлом biblio.dat

file1.open("biblio.dat",ios::binary);

//у циклі читаємо дані з фала file1

//і знаходимо максимальну ціну

while (file1.read((char*) &bk, sizeof bk))

if (bk.cenamaxcena)

maxcena=bk.cena;

//виводимо максимальну ціну на екран

cout

cout

//розблоковуємо файл file1

file1.clear();

//переходь на початок файлу

file1.seekg(0);

//у циклі читаємо дані з фала file1

while (file1.read((char*) &bk, sizeof bk))

//якщо ціна рівна максимальному значенню

if (bk.cena==maxcena)

//виводимо на екран назву цієї книги

cout

//закриваємо файл file1

file1.close();

//робимо паузу для перегляду

cout

getch();

break;

}

//якщо вибраний четвертий пункт меню

case 4:

{

cin.get();

//вводимо автора для пошуку

cout

cout

//описуємо змінну для читання з файлу

ifstream file1;

//пов'язуємо змінну з файлом biblio.dat

file1.open("biblio.dat",ios::binary);

//припускаємо, що кількість рівна 0

kol=0;

//у циклі читаємо дані з файлу

while (file1.read((char*) &bk, sizeof bk))

//якщо автор книги рівний введеному авторові

if (strnicmp(bk.autor,autor,strlen(autor))==0)

//кількість збільшується на 1

kol++;

//виводимо кількість книг на екран

cout

//закриваємо файл file1

file1.close();

//робимо паузу для перегляду

cout

getch();

break;

}

//якщо вибраний п'ятий пункт меню

case 5:

{

//ознака виходу з циклу програми рівна 1

b=1;

break;

}

}

}

return;

}

Практична робота № 7

Тема: Створення програм з використанням функції користувача

Мета роботи: отримати практичні навики по написанню призначених для користувача функцій і їх застосуванню в головній програмі на С++

Хід роботи

1. Скласти програму для знаходження значення функції:

Для обчислення оформите у вигляді функції вираз:

2. Хай є три масиви. Сформувати масиви і вивести їх на екран. Визначити в якому масиві найбільша сума елементів, знайти суму максимальних елементів масиву і твір мінімальних елементів. Написати функції для роботи з масивом:

- формування масиву на відрізку;

- виведення масиву на екран;

- знаходження суми елементів масиву

- знаходження мінімального елементу

- знаходження максимального елементу

Використовуючи функції вирішити задачу. Хай є три масиви. Сформувати масиви і вивести їх на екран. Визначити в якому масиві найбільша сума елементів, знайти суму максимальних елементів масиву і твір мінімальних елементів.

Вказівки до виконання завдання

1. Для вирішення першого завдання програма може мати вигляд:

//підключаємо заголовні файли

#include

#include

#include

//описуємо прототип функції f1

//з двома аргументами (n,m)

float f1(float n, float m);

//початок головної програми

void main()

{

//описуємо допоміжні змінні

float x,y;

//очищаємо екран

clrscr();

//вводимо значення початкових даних для розрахунку (х)

cout

cinx;

//обчислюємо значення виразу з використанням

//функції користувача f1

y=f1(pow(x,3),2*x)+f1(4*pow(x,2),-sin(x));

//задаємо точність виведення результату

cout.precision(2);

//виводимо на екран отриманий результат

cout

//робимо паузу для перегляду

getch();

return;

}

//реалізація функції користувача

float f1(float n, float m)

{

//виходимо з функції і передаємо

//у головну програму знайдене значення

return (n+m) /2;

}


2. Для вирішення другого завдання програма може мати вигляд:

//підключаємо заголовні файли

#include

#include

#include

//прототип функції введення масиву

void vvodmas (float m[], int n);

//прототип функції виведення масиву

void vivodmas (float m[], int n);

//прототип функції знаходження

//суми елементів в масиві

float summas (float m[], int n);

//прототип функції знаходження

//максимального в масиві

float maxmas (float m[], int n);

//прототип функції знаходження

//мінімального в масиві

float minmas (float m[], int n);

//головна програма

void main()

{

//описуємо три масиви

float mas1[20],mas2[20], mas3[20];

//описуємо змінні для зберігання

//сум по трьом масивам

float s1,s2,s3;

//описуємо змінні для зберігання

//кількості елементів по трьом масивам

int kol1,kol2,kol3;

//очищаємо екран

clrscr();

//формуємо перший масив

//вводимо кількість елементів в масиві

cout

cinkol1;

//викликаємо функцію введення масиву

vvodmas(mas1,kol1);

//виводимо отриманий масив на екран

cout

vivodmas(mas1,kol1);

//формуємо другий масив

//вводимо кількість елементів в масиві

cout

cinkol2;

//викликаємо функцію введення масиву

vvodmas(mas2,kol2);

cout

//виводимо отриманий масив на екран

vivodmas(mas2,kol2);

//формуємо третій масив

//вводимо кількість елементів в масиві

cout

cinkol3;

//викликаємо функцію введення масиву

vvodmas(mas3,kol3);

cout

//виводимо отриманий масив на екран

vivodmas(mas3,kol3);

//у змінні s1,s2,s3 записуємо суми елементів масиву

s1=summas(mas1,kol1);

cout

s2=summas(mas2,kol2);

cout

s3=summas(mas3,kol3);

cout

//визначаємо, в якому масиві знайдена сума максимальна

if (s1=s2 && s1=s3)

cout

else if (s2=s1 && s2=s3)

cout

else

cout

//виводимо на екран максимальне значення в кожному масиві

cout

cout

cout

//виводимо суму максимальних значень по трьом масивам

cout

//виводимо на екран мінімальні значення в кожному масиві

cout

cout

cout

//виводимо твір мінімальних значень по трьом масивам

cout

//робимо паузу для перегляду

getch();

return;

}

//реалізація функції введення масиву

void vvodmas (float m[], int n)

{

//описуємо змінні для введення кінців відрізку

float а,b;

int i;

//вводимо кінці відрізку

cout

cinab;

//у циклі заповнюємо масив випадковими числами

for (i=0; i

m[i]=(b-a)*rand()/32767+a;

//виходимо з функції в головну програму

return;

}

//реалізація функції виведення масиву

void vivodmas (float m[], int n)

{

int i;

//задаємо точність виводу

cout.precision(3);

//у циклі виводимо масив в один рядок через пропуск

for (i=0; i

cout

//після закінчення виводу переводимо курсор на новий рядок

cout

//виходимо з функції в головну програму

return;

}

//реалізація функції знаходження суми елементів

float summas(float m[], int n)

{

//спочатку сума обнуляється

float sum=0;

int i;

//у циклі рахуємо суму елементів

for (i=0; i

sum+=m[i];

//виходимо з функції і передаємо

//у головну програму знайдену суму

return sum;

}

//реалізація знаходження максимального значення

float maxmas(float m[], int n)

{

//спочатку максимальний елемент перший

float max=m[0];

int i;

//у циклі шукаємо максимальний елемент масиву

for (i=0; i

if (max

max=m[i];

//виходимо з функції і передаємо

//у головну програму знайдений максимум

return max;

}

//реалізація знаходження мінімального значення

float minmas(float m[], int n)

{

//спочатку мінімальний елемент перший

float min=m[0];

int i;

//у циклі шукаємо мінімальний елемент масиву

for (i=0; i

if (minm[i])

min=m[i];

//виходимо з функції і передаємо

//у головну програму знайдений мінімум

return min;

}

Практична робота № 8

Тема: Створення програм з використанням модулів

Мета заняття: отримати практичні навики по створенню програмних модулів у великих програмах

Хід роботи

1. Хай є деякий об'єкт «товар». Даний об'єкт має ряд властивостей:

  • шифр;

  • назва;

  • ціна.

Над об'єктом можна виконати ряд дій:

  • введення даних про n товари і запис їх у файл;

  • додавання даних про m товари у файл;

  • пошук даних по назві товару (назва вводиться з клавіатури).

Для вибору потрібної дії на екран видати меню користувача.

Кожна дія з даними оформити у вигляді окремого програмного модуля.


Вказівки до виконання завдання

1. Оскільки програма складатиметься з декількох файлів, то спочатку рекомендується створити теку для зберігання всіх файлів. За допомогою команди Options – Directories відкрийте вікно настройки параметрів і в рядках Inclide і Lib пропишіть повний шлях до відповідних каталогів (у нашому випадку c:\bin\tc\include і c:\bin\tc\lib)

2. Для реалізації першої функції програми створимо модуль для введення n записів у файл. Модуль складається з двох файлів: заголовного файлу і файлу реалізації.

Заголовний файл може мати вигляд:

#ifndef MODUL1_H

#define MODUL1_H

//описуємо структуру для роботи з об'єктом «товар»

struct tovar

{

char shifr[10], nazv[10];

float cena;

};

//прототип функції для введення товарів у файл

void vvodtovar();

#endif

Збережіть файл під ім'ям modul1.h і скопіюйте його в каталог include середовища Turbo C++.

Файл реалізації може мати вигляд:

//підключаємо заголовні файли

#include

#include

#include

#include

//реалізація функції введення товарів у файл

void vvodtovar()

{

//описуємо лічильник циклу і кількість товарів

int i,n;

//змінна tov для роботи із структурою

tovar tov;

//очищаємо екран

clrscr();

//вводимо кількість товарів

cout

cinn;cin.get();

//відкриваємо файл для запису

ofstream f1("tovary.dat",ios::binary);

cout

//у циклі вводимо дані про товар

//і записуємо у файл

for (i=0;i

{

cout

cout

cout

couttov.cena;cin.get();

f1.write ((char*) &tov, sizeof tov);

}

//закриваємо файл

f1.close();

//видаємо повідомлення про завершення операції

cout

//робимо паузу для перегляду

getch();

//завершуємо функцію

return;

}

Збережіть файл під ім'ям modul1.cpp

3. Для реалізації другої функції створимо модуль для додавання m записів у файл. Модуль складається з двох файлів: заголовного файлу і файлу реалізації.


Заголовний файл може мати вигляд:

#ifndef MODUL2_H

#define MODUL2_H

//прототип функції для додавання товарів у файл

void addtovar();

#endif

Збережіть файл під ім'ям modul2.h і скопіюйте його в каталог include середовища Turbo C++.

Файл реалізації може мати вигляд:

//підключаємо заголовні файли

#include

#include

#include

#include

#include

#include

void addtovar()

{

//описуємо лічильник циклу і

//кількість товарів, що додаються

int i,m;

//змінна tov для роботи із структурою

tovar tov;

//переписуємо файл tovary.dat у файл buffer.dat

//відкриваємо tovary.dat для читання

ifstream f1("tovary.dat",ios::binary);

//відкриваємо buffer.dat для запису

ofstream f2("bufer.dat",ios::binary);

//у циклі читаємо дані і tovary.dat

//і записуємо в buffer.dat

while (f1.read ((char*) &tov, sizeof tov))

f2.write ((char*) &tov, sizeof tov);

//очищаємо екран

clrscr();

//вводимо кількість товарів, що додаються

cout

cinm;cin.get();

//у циклі вводимо товари і дописуємо їх в bufer.dat

cout

for (i=0;i

{

cout

cout

cout

couttov.cena;cin.get();

f2.write ((char*) &tov, sizeof tov);

}

//закриваємо обидва файли

f1.close();

f2.close();

//видаляємо файл tovary.dat

remove("tovary.dat");

//перейменовуємо файл buffer.dat у tovary.dat

rename("bufer.dat","tovary.dat");

//виводимо повідомлення про завершення операції

cout

//робимо паузу для перегляду

getch();

//кінець роботи функції

return;

}

Збережіть файл під ім'ям modul2.cpp

4. Створимо модуль для пошуку товарів по назві. Модуль складається з двох файлів: заголовного файлу і файлу реалізації.

Заголовний файл може мати вигляд:

#ifndef MODUL3_H

#define MODUL3_H

//прототип функції пошуку товарів

//по введеній назві

void poisktovar();

#endif

Збережіть файл під ім'ям modul3.h і скопіюйте його в каталог include середовища Turbo C++.

Файл реалізації може мати вигляд:

//підключаємо заголовні файли

#include

#include

#include

#include

#include

#include

void poisktovar()

{

//змінна tov для роботи із структурою

tovar tov;

//змінна nazv для введення назви шуканого товару

char nazv[20];

//очищаємо екран

clrscr();

//очищаємо буфер клавіатури

cin.get();

//вводимо назву шуканого товару

cout

cin.getline(nazv,20);

//відкриваємо файл для читання

ifstream f1("tovary.dat",ios::binary);

cout

cout

//у циклі читаємо дані з файлу

while (f1.read ((char*) &tov, sizeof tov))

//якщо назва товару співпадає з введеним значенням

if (strnicmp(tov.nazv,nazv,strlen(nazv))==0)

{

//виводимо дані про товар на екран

cout.width(10);

cout

cout.width(20);

cout

cout.width(10);

cout

}

//закриваємо файл

f1.close();

//виводимо повідомлення

cout

//робимо паузу для перегляду

getch();

//завершуємо функцію

return;

}

Збережіть файл під ім'ям modul3.cpp

5. Для використання створених модулів створимо головну програму, яка може мати вигляд:

//підключаємо заголовні файли

#include

#include

#include

#include

#include

//головна програма

int main()

{

//змінна до для вибору з меню

//змінна і для організації циклу видачі меню

int к,b=0;

//поки b=0 працює цикл

while (b==0)

{

//очищаємо екран

clrscr();

//видаємо меню користувача

cout

cout

cout

cout

//запрошуємо вибір з меню

coutk;

//обробляємо вибір

switch (k)

{

//якщо вибраний перший пункт

case 1:

{

//викликаємо функцію введення товарів у файл

vvodtovar();

//виходимо з оператора switch

break;

}

//якщо вибраний другий пункт

case 2:

{

//додає товари у файл

addtovar();

//виходимо з оператора switch

break;

}

//якщо вибраний третій пункт

case 3:

{

//викликаємо функцію пошуку товарів у файлі

poisktovar();

//виходимо з оператора switch

break;

}

//якщо вибраний четвертий пункт

case 4:

{

//змінна b=1 (завершення роботи циклу)

b=1;

//виходимо з оператора switch

break;

}

}

}

//кінець головної програми

return 0;

}

Збережіть файл під будь-яким ім'ям в каталог з рештою програмних модулів.


6. Для компіляції багатофайлової програми виконайте команду Project – Open, перейдіть в каталог з вашими створеними файлами і введіть довільне ім'я проекту. У каталозі автоматично буде створений файл проекту і з'явиться вікно Project. За допомогою клавіші Insert додайте в це вікно всі ваші файли з розширенням *.cpp.

Для відладки і запуску проекту натисніть Ctrl+F9.


Література


  1. Конспект лекцій з предмету «Об’єктно-ориєнтоване програмування»

  2. Методичні вказівки до самостійної роботи студентів з предмету «Об’єктно-ориєнтоване програмування»

  3. Методичні вказівки до практичних робіт з предмету «Об’єктно-ориєнтоване програмування»

  4. С.Прата Язык программирования С++. Лекции и упражнения. - Пер. с англ.-СПб:Символ-Плюс,2002

  5. Сабуров С.В. Языки программирования С и C++. – М: Бук-пресс, 2006

  6. Хенкеманс Д., Ли М. Программирование на C++. - Пер. с англ. - СПб: Питер, 2004

  7. Шилдт Герберт C++: руководство для начинающих, 2-е издание.: Пер. с англ. — М.; Издательский дом "Вильямс, 2005

  8. С.В. Глушаков Язык программирования С++. Учебный курс. – Харьков, «Фолио», 2001. – 289 с.: ил.

М.Ш. Динман С++. Освой на примерах. – СП6: БХВ – Петербург, 2006. – 384 с.:ил














49



Получите в подарок сайт учителя

Предмет: Информатика

Категория: Уроки

Целевая аудитория: Прочее.
Урок соответствует ФГОС

Автор: Кузьмина Любовь Леонидовна

Дата: 21.10.2019

Номер свидетельства: 523516


Получите в подарок сайт учителя

Видеоуроки для учителей

Курсы для учителей

ПОЛУЧИТЕ СВИДЕТЕЛЬСТВО МГНОВЕННО

Добавить свою работу

* Свидетельство о публикации выдается БЕСПЛАТНО, СРАЗУ же после добавления Вами Вашей работы на сайт

Удобный поиск материалов для учителей

Проверка свидетельства