- •Алгоритмічні мови та програмування Методичні вказівки
- •Алгоритмічні мови та програмування Методичні вказівки
- •03056, Київ, вул..Політехнічна, 12, корп. 17
- •Порядок виконання роботи
- •Загальні відомості для виконання лабораторної роботи
- •0X число (шістнадцяткове),
- •0 Число(число (вісімкове),
- •Результат виконання
- •Порядок виконання роботи
- •Порядок виконання роботи
- •Порядок виконання роботи
- •Додаток 1
- •Додаток 2
- •Порядок виконання роботи
- •Порядок виконання роботи
- •Доступ до елемента масиву
- •Запис вектора у стовпець (рядок) масиву
- •Зміна стовпців масиву
- •Додаткові засоби
- •Теоретична частина
- •Порядок виконання роботи
- •Теоретична частина
- •Порядок виконання роботи
- •Додаток
- •Порядок виконання роботи
- •Результати виконання програми
- •Результати виконання програми
- •Порядок виконання роботи
- •Добирання формул за дослiдними даними згiдно методу найменших квадратiв
- •Порядок виконання роботи
- •Порядок виконання роботи
- •Додаток 1
- •Додаток 2
- •Додаток 3
- •Порядок виконання роботи
- •//Функція
- •//Динамічні масиви
- •Порядок виконання роботи
- •Порядок виконання роботи
- •Порядок виконання роботи
- •Порядок виконання роботи
Порядок виконання роботи
А.При пiдготовцi :
1.Ознайомитися із додатком А ,де наведені основні оператори відкриття та закриття файлів, запису та читання. Приклади роботи із бінарними файлами у додатку В.
2.Розробити програму №1,у якій реалізувати наступне завдання:
- створити на диску текстовий файл для запису одновимірного масиву символів шляхом відкриття файлу для запису (файл створюється автоматично після відкриття );
- записати із клавіатури у файл послідовно символи рядка
прізвищеім’япо-батьковіденьнародження.
, запис закінчувати введенням крапки;
- визначити розмір файлу – кількість записаних символів;
- закрити файл ;
- відкрити файл для читання;
- прочитати і вивести на екран ім’я та день , використовуючи функцію
seekg для встановлення вказівника файлу ;
- полічити у файлі кількість літер , однакових із першою літерою імені;
- закрити файл ;
- відкрити файл для дописування і додати дату вступу до університету;
- закрити файл і перевірити за допомогою текстового редактора правильність виконання дописування ;
- відкрити файл для читання і знову полічити кількість символів; наскільки збільшилася їх кількість ?;
- закрити файл .
3. Розробити програму №2, у якій реалізувати наступне завдання:
- підготувати масив структур із n = 7 елементів (склад структур
у таблиці №15.1); визначити розмір структури та функціональну залежність адреси елементу масиву від його індексу ;
- відкрити (створити) бінарний файл для запису числових значень масиву структур із клавіатури;
- визначити розмір файлу , значення якого дописати у кінець файлу;
- закрити файл ;
- відкрити файл для читання;
- прочитати елементи n1 і n2 масиву структур , вивести значення на екран , обчислити суму їх float складових (значення n1 і n2 у таблиці №1 );
- закрити файл ;
- відкрити файл для читання-запису;
- складові цілого типу усіх елементів масиву збільшити на 1( алгоритм такий : читання – збільшення – запис);
- поміняти місцями n1 і n2 елементи масиву ;
- закрити файл ;
3.Підготувати шаблон звіту.
В.У лабораторii:
1.Виконати підготовлені програми .
2.Результати виконання дій з файлами записати у звіт із поясненнями та зробити належні висновки.
Змiст звiту:
1.Програми . Результати виконання.
2. Результати виконання та відповідні висновки.
3.Пропозиції по роботі.
Таблиця №15.1
Варіант |
тип |
тип |
тип |
тип |
n1 |
n2 |
1 |
float |
float |
double |
int |
2 |
7 |
2 |
float |
long |
double |
int |
3 |
6 |
3 |
float |
int |
long |
double |
4 |
5 |
4 |
float |
double |
int |
long |
1 |
7 |
5 |
double |
float |
int |
long |
2 |
6 |
6 |
double |
int |
float |
long |
3 |
5 |
7 |
double |
long |
float |
int |
3 |
7 |
8 |
double |
double |
int |
float |
3 |
6 |
9 |
long |
double |
float |
int |
3 |
4 |
10 |
long |
float |
int |
double |
4 |
7 |
11 |
long |
long |
double |
float |
5 |
6 |
12 |
long |
int |
float |
double |
6 |
4 |
13 |
int |
double |
long |
float |
7 |
3 |
14 |
int |
float |
double |
long |
4 |
6 |
15 |
int |
long |
double |
float |
4 |
5 |
16 |
int |
int |
float |
long |
5 |
7 |
17 |
float |
double |
long |
int |
5 |
6 |
18 |
float |
long |
int |
double |
6 |
7 |
19 |
double |
int |
long |
float |
2 |
3 |
20 |
double |
float |
long |
int |
2 |
4 |
21 |
long |
double |
float |
long |
2 |
5 |
22 |
long |
float |
double |
int |
1 |
6 |
23 |
long |
int |
double |
float |
1 |
5 |
24 |
int |
double |
float |
long |
1 |
4 |
25 |
int |
float |
long |
double |
1 |
3 |
26 |
int |
long |
float |
double |
1 |
2 |
27 |
float |
double |
float |
long |
1 |
7 |
28 |
double |
float |
double |
long |
4 |
7 |
29 |
long |
long |
float |
int |
7 |
3 |
30 |
int |
int |
double |
float |
4 |
6 |
ДОДАТОК А
Бібліотека fstream.h
(додаткові бібліотеки : для використання маніпуляторів iomanip.h та cstdlib.h для виходу із програми операторами exit (число) )
Текстові файли
1. відкриття текстового файлу name.dat для запису
a) ofstream fout ; fout.open ( “name.dat”);
b) ofstream fout ( “name.dat”);
c) ofstream fout ; fout.open ( “name.dat”,ios::out);
вказівник файлу встановлюється на початок файлу
переміщення вказівника файлу
fout.seekp ( offset, ios::beg | cur|end );
його позиція = fout.tellp();
запис fout << змінна;
вивантаження буфера fout у файл під час виконання програми fout.flush();
закриття файлу fout.close();
2. відкриття текстового файлу name.dat для читання
a) ifstream fin ; fin.open ( “name.dat”);
b) ifstream fin ( “name.dat”);
c) ifstream fin ; fin.open ( “name.dat”,ios::in);
d) ifstream fin ; fin.open ( “name.dat”,ios::in);
if(!fin) //якщо помилка відкриття
{
cerr << ”\n Open file failed”; exit(0);
}
вказівник файлу встановлюється на початок файлу;
переміщення вказівника файлу
fin.seekg ( offset, ios::beg | cur|end );
його позиція = fin.tellg();
читання fin >> змінна;
закриття файлу fin.close();
3. відкриття текстового файлу name.dat для запису-читання
fstream finout (( “name.dat”, ios::in | ios::out );
4. відкриття текстового файлу name.dat для дописування у його кінець
ofstream fout ; fout.open ( “name.dat”, ios::app );
Бінарні файли
1. відкриття бінарного файлу name.dat або name.bin для запису
a) ofstream fout ; fout.open ( “name.dat”, ofstream::binary );
b) ofstream fout ( “name.bin”, ofstream::binary );
запис у файл значення змінної var
fout.write ( (const char*) &var, sizeof var) ;
fout.write ( (const char*) &ім’я_змінної, sizeof (тип_змінної) ) ;
закриття файлу fout.close();
2. відкриття бінарного файлу name.dat або name.bin для читання
а) ifstream fin ( “name.dat”, ofstream::binary);
b) ifstream fin ; fin.open ( “name.dat”, ofstream::binary);
розмір файлу length
fin.seekg ( 0, ios::end ); length = fin.tellg();
кількість однотипних записів n = length/ sizeof (тип_даних);
читання значення
fin.read ( (char*) &ім’я_змінної, sizeof (тип_змінної) ) ;
закриття файлу fin.close();
3. відкриття бінарного файлу name.dat для запису-читання
fstream finout ( ( “name.dat”, ios::in | ios::out | ios::binary );
ДОДАТОК B
Приклади роботи із бінарними файлами
Програма 1
#include <iostream.h>
#include <fstream.h>
#include <iomanip.h>
#include <conio.h>
#define n 5
int main ()
{
int a[n] = 1, 2, 3, 4, 5, a1[n], a2[n], i;
float b[n] = 11., 12., 13., 14., 15., b1[n], b2[n];
double c[n] = 21.l, 22.l, 23.l, 24.l, 25.l, c1[n], c2[n];
clrscr();
//file creating for writing the 3 arrays
ofstream out ("binfile.bin", ofstream::binary);
ofstream cout1 ("contr.dat");
//запис масивів у файл
for ( i = 0; i < n; i ++)
out.write ( (char*)&a[i], 2 );
for ( i = 0; i < n; i ++)
out.write ( (char*)&b[i], 4 );
for ( i = 0; i < n; i ++)
out.write ( (char*)&c[i], 8 );
out.close();
//file opens for reading
ifstream fin;
fin.open ( "binfile.bin", ios::in | ios::binary );
if ( !fin ) //control of opening
{ cout1 << "Open file failed"; return 1; }
//читання значень елементів масивів із контрольним виведенням //на екран (cout) або у файл контрою (cout1)
//values for a1 array
cout1 << "\n array a1 = ";
for ( i = 0; i < n; i ++)
{
fin.read ( (char*)&a1[i], 2 );
cout1 << a1[i] << " ";
}
//values for b1 array
cout1 << "\n array b1 = ";
for ( i = 0; i < n; i ++)
{
fin.read ( (char*)&b1[i], 4 );
cout1 << b1[i] << " ";
}
//values for c1 array
cout1 << "\n array c1 = ";
for ( i = 0; i < n; i ++)
{
fin.read ( (char*)&c1[i], 8 );
cout1 << c1[i] << " ";
}
//file dimension
fin.seekg ( 0, ios::end );
cout1 << "\n CP = " << fin.tellg();
//читання заданих елементів масивів
//current position CP for reading value for a2[2]
fin.seekg ( 4, ios::beg );
cout1 << "\n CP = " << fin.tellg();
fin.read ( (char*)&a2[2], 2 );
cout1 << "\n a2[2] = " << a2[2];
//current position CP for reading value for b2[1]
fin.seekg ( 8, ios::cur );
cout1 << "\n CP = " << fin.tellg();
fin.read ( (char*)&b2[1], 4 );
cout1 << "\n b2[1] = " << b2[1];
//current position CP for reading value for c2[3]
fin.seekg( 54, ios::beg );
cout1 << "\n CP = " << fin.tellg();
fin.read ( (char*)&c2[3], 8 );
//виведення формату значення елемента масиву
union test
{
float x;
long y;
} p;
p.x = b2[1]; cout1 << "\n b2[1] = " << hex << p.y;
// reading value for z
double z;
cout1 << "\n CP = " << dec << fin.tellg();
fin.read ( (char*)&z, 8 );
cout1 << "\n z=" << z;
fin.close();
//file opens for data appending
ofstream fout ( "binfile.bin", ios::out | ios::app | ios::binary );
//модифікація масиву а та запис його у кінець файлу
for ( i = 0; i < n; i ++)
{
a[i] += 5;
fout.write ( (char*)&a[i], 2 );
}
fout.close();
//file opens for data inserting
ofstream ffout ( "binfile.bin", ios::ate | ios::binary );
ffout.seekp (0, ios::beg ); //file start
for ( i = 0; i < n; i ++)
{
a[i] += 50;
ffout.write ( (char*)&a[i], 2 );
}
ffout.close();
//file opens for data writing (CP=10)
//after all data cleaning
fout.open ( "binfile.bin", ios::out | ios::binary );
fout.seekp ( 10, ios::beg );
cout1 << "\n CP = " << fout.tellp(); for ( i = 0; i < n; i ++)
{
a[i] += 100;
fout.write ( (char*)&a[i], 2 );
}
fout.close();
cout1.close(); return 0;
}
Результати виконання програми 1
Вміст файлу контролю contr.dat
array a1 = 1 2 3 4 5
array b1 = 11 12 13 14 15
array c1 = 21 22 23 24 25
CP = 70
CP = 4
a2[2] = 3
CP = 14
b2[1] = 12
CP = 54
b2[1] = 41400000
CP = 62
z=25
CP = 10
Програма 2
#include <iostream.h>
#include <fstream.h>
#include <conio.h>
#define n 3
struct lab13
{ int x1; long x2; float x3; double x4; };
int main ()
{
lab13 arr[n] = {1, 2, 3., 4., 5, 6, 7., 8., 9, 10, 11., 12.}, temp1, temp2;
int i , l; long value;
unsigned size = sizeof(lab13), size1 = size*n;
clrscr();
//file creating for writing the array arr
ofstream out(" \\strar.dat", ofstream::binary );
for ( i = 0; i < n; i ++)
out.write ( (char*)&arr[i], size );
out.write ( (char*)&size1, 2 );
out.close();
//file opens for reading
ifstream fin;
fin.open (" \\strar.dat", ios::in | ios::binary );
if (!fin) //control of opening
{
cout << "Open file failed"; return 0;
}
// control input
cout << "\n array arr\n";
for(i = 0; i < n; i ++)
{
l = size*i;
fin.seekg ( l, ios::beg );
fin.read ( (char*)&temp2, size );
cout << " " << temp2.x1 << " " << temp2.x2 \
<< " " << temp2.x3 << " " << temp2.x4 <<endl;
}
fin.close();
//file opens for data inserting
fstream finout (" \\strar.dat", ios::in | os::out | ios::binary );
//arr[0].long reading , adding 10 ,writing
finout.seekp ( 2, ios::beg );
finout.read ( (char*)&value, 2 );
value += 10;
finout.seekg ( 2, ios::beg );
finout.write ( (char*)&value, 2 );
cout << "\n Value = " << value <<endl;
// control output
cout << "\n array arr\n";
for(i = 0; i < n; i ++)
{
l = size*i;
finout.seekp ( l, ios::beg );
finout.read ( (char*)&temp2, size );
cout << " " << temp2.x1 << " " << temp2.x2\
<< " " << temp2.x3 << " " << temp2.x4 <<endl;
}
finout.close();
getch();
return 1;
}
Результати виконання програми 2
array
1 2 3 4
5 6 7 8
9 10 11 12
Value = 12
array
1 12 3 4
5 6 7 8
9 10 11 12
Лабораторна робота № 16
РОЗРАХУНОК РЕЖИМУ РОБОТИ ТРАНЗИСТОРА
Мета роботи - вивчення методiв розрахунку режиму транзисторних ступенiв та складання програми визначення колекторного струму транзистора при використаннi сiм'ї його iдеалiзованих вихiдних характеристик.