- •Рейтингова система оцінювання знань та умінь з ооп 2012-2013 н.Р.
- •Вимоги до звіту з лабораторних робіт
- •Класи потоків Лабораторна робота 1
- •1.1 Теоретичні відомості
- •1.1.1. Методи класів потоків
- •1.1.2. Маніпулятори
- •1.1.3. Деякі методи класів файлових потоків
- •1.2 Приклад програми Умова задачі
- •Алгоритм задачі
- •Текст програми
- •Результати виконання програми
- •1.3 Варіанти завдань
- •1.4 Контрольні запитання
- •Інкапсуляція. Інтерфейси класів . Діаграми прецедентів і класів Лабораторна робота 2
- •2.1 Теоретичні відомості Етапи об’єктно-орієнтованого проектування та моделювання
- •Діаграма варіантів використання(use-case diagram)
- •Ідентифікація класів
- •Ідентифікація атрибутів
- •Ідентифікація операцій (методів)
- •Типові схеми uml діаграм
- •2.2 Програма роботи
- •2.3 Варіанти завдань
- •2.4 Приклад виконання роботи Задача
- •Об’єктно-орієнтоване проектування Зображення класів в uml
- •Ідентифікація атрибутів
- •Структура проекту
- •Інтерфейси та реалізації класів програми
- •2.5 Контрольні запитання
- •Конструктори та деструктори класів Діаграми прецедентів і класів Лабораторна робота 3
- •3.1 Теоретичні відомості
- •3.2 Програма роботи
- •3.3 Варіанти завдань
- •3.4 Приклад виконання роботи Задача
- •Реалізація конструкторів і деструкторів деяких класів
- •3.5 Контрольні запитання
- •Методи класів: аксесори, ітератори, утілити, предикатні функції . Діаграми класів, діяльності, послідовності Лабораторна робота № 4
- •4.1 Теоретичні відомості
- •4.2 Програма роботи
- •4.3 Варіанти завдань
- •4.4 Приклад виконання роботи Задача
- •Реалізація деяких методів-аксесорів, предикатних функцій, функцій-утілит, методів, які забезпечують функціональність об’єктів
- •Результати виконання роботи
- •4.5 Контрольні запитання
- •Константні та статичні члени класів. Вбудовані функції. Діаграми класів, послідовності Лабораторна робота № 5
- •5.1 Теоретичні відомості
- •5.2 Програма роботи
- •5.3 Варіанти завдань
- •5.4 Приклад виконання роботи Задача 5_1
- •Приклади деяких константних елементів даних і методів класів
- •Фрагмент результатів виконання роботи
- •Задача 5_2
- •Приклади деяких статичних елементів даних і методів класів
- •Фрагмент результатів виконання роботи
- •5.5 Контрольні запитання
- •Перевантаження операцій та функцій. Дружні функції Діаграми класів, станів і переходів Лабораторна робота 6
- •6.1 Теоретичні відомості
- •6.2 Програма роботи
- •6.3 Варіанти завдань
- •6.4 Приклад виконання роботи
- •6.5 Контрольні запитання
- •Просте успадкування класів. Поліморфізм. Віртуальні функції Діаграма класів, кооперацій. Лабораторна робота 7
- •7.1 Теоретичні відомості
- •7.2 Програма роботи
- •9.2. Приклад програми Умова задачі 9
- •Алгоритм задачі 9
- •Текст програми 9
- •Результати роботи програми 9
- •9.3. Варіанти завдань
- •9.4. Контрольні запитання
- •Методи внутрішнього сортування (сортування масивів) Лабораторна робота 10
- •Методи зовнішнього сортування (сортування файлів) Лабораторна робота 11
1.2 Приклад програми Умова задачі
Скопіювати один файл у інший, визначити розмір вихідного файлу. Використати файли потоків.
Алгоритм задачі
Увести ім’я вхідного файлу.
Увести ім’я вихідного файлу.
Скопіювати файли та визначити розмір вихідного файлу:
Відкрити вхідний файловий потік.
Якщо файл не існує, то вивести повідомлення.
Інакше відкрити файловий потік для читання.
Створити вихідний файловий потік.
Якщо файл існує, то вивести повідомлення.
Поки не кінець вхідного потоку, виконати такі дії:
Зчитувати символ з потоку.
Вивести символ на екран.
Записати символ у вихідний потік;
Вивести повідомлення про завершення копіювання.
Визначити розмір вихідного файлу.
Текст програми
#include<iostream>
#include<stdio.h>
#include<fstream>
#include<string.h>
#include<conio.h>
#include<iomanip>
using namespace std;
ifstream f1; //файловий потік введення
ofstream f2; //файловий потік виведення
///// копіювання файлу, параметри - назви вхідного(source) файлу та файлу копії(dest) /////
int copyf(const char *source,const char *dest)
{ char c; //символ, що зчитується з файлу
f1.open(source,ios::in); //відкрити вхідний потік
if (!f1) //якщо файл не існує
{ cerr<<"Error in source file "<<source<<endl; return -1; } //вивести повідомлення
f2.open(dest,ios::out); //відкрити вихідний потік
if (!f2) //якщо потік відкрити неможливо
{cerr<<"File already exist "<<dest<<endl; return -1; }
while (f1) //поки не кінець вхідного потоку
{
f1.get(с); //зчитувати з потоку по одному символу
cout<<c; //вивести символ на екран
f2<<c; } //записати символ у вихідний потік
cout<<endl<<endl<<" 1 file copied "<<"\n"; //вивести повідомлення
//визначити обсяг вихідного файлового потоку
f2.seekp(0,ios::end); //розмістити покажчик у кінці файлу
long size=f2.tellp(); //визначити значення покажчика від початку області виведення
cout<<setw(10)<<"filesize "<<dest<<" "<<size<<" bytes\n";
//виведення розміру файлу з десятої колонки екрана
f1.close(); //закрити файли
f2.close();
return 1;
}
///////////////////////-------------------------------виведення файлу копії-----------------///////////////////
void readfile(const char *source)
{ char c;
ifstream f3(source,ios::in); //відкрити вхідний потік
while (f3) //поки не кінець вхідного потоку
{ f3.get(c); //зчитувати по одному символу
if (c!='\n') //не переводити курсор на новий рядок
cout<<setw(2)<<c<<" "<<hex<<c; //вивести символ на екран
else cout<<" ";
}
cout<<endl<<" file reading "<<endl;
}
/////////////////--------------------------------головна програма-------------------------///////////////////////
void main()
{
char s[50],d[50];
int rezult=-1;
while (rezult!=1)
{
cout<<"\n"<<"input source file :"; cin>>s; //ввести ім’я вхідного потоку
cout<<"\n"<<"input destination file :"; cin>>d; //ввести ім’я вихідного потоку
rezult=copyf(s, d); //скопіювати файл
}
readfile(d); //зчитувати файл копії
getchar();
}
Після запуску програми на екрані з’являються повідомлення та результати введення даних і розрахунків.