- •“Київський політехнічний інститут” обчислювальна техніка та програмування - 1
- •Обчислювальна техніка та програмування - 1
- •Символи кодової таблиці ascii
- •Умовні переходи на мові "паскаль"
- •1: Begin
- •Цикли на мові "паскаль"
- •Підпрограми на мові "паскаль"
- •Function Alfha(a,b:real; c:byte):real;
- •Function Beta:integer;
- •Procedure Sorter (a,b:real; c:byte; Var X,y:real);
- •Procedure Beep;
- •Uses crt;
- •Window (x1,y1,x2,y2);
- •Window (10,5,45,15);
- •Window (1,1,80,25);
- •TextColor (yellow);
- •TextColor (14);
- •Текстові та типізовані файли мови "паскаль"
- •Assign (f1, ’Data.Pas’);
- •Reset (f2);
- •Rewrite (f2);
- •Seek (f2, 7);
- •FileSize (f2),
- •FilePos (f2).
- •Побудова графіків функцій на мові "паскаль"
- •MoveTo (200, 100);
- •SetLineStyle (0,0,1);
- •OutText (’Текст для виводу’);
- •OutTextXy (200,100,’Текст для виводу’);
- •SetTextStyle (0,0,0);
- •SetTextJustify (1,1);
- •PutPixel (150,50,green);
- •ClearDevice;
- •Бібліотечний модуль на мові "паскаль"
- •Interface
- •Implementation
- •Динамічні змінні мови "паскаль"
- •SetFillStyle (1, white);
- •Об’єктно-орієнтоване програмування на мові "паскаль"
- •New (Person, Init);
- •Destructor Done; Virtual;
- •Dispose (Person, Done);
- •Форматований ввід та вивід даних на мові “cі”
- •Printf(“керуючий рядок”,аргумент1,аргумент2, ...);
- •Scanf(“керуючий рядок”,аргумент1,аргумент2,...);
- •Scanf(“%d %f %c %s”,&I,&j,&k,l);
- •Scanf(“%d %*d %d”, &I,&j);
- •Scanf(“%d,%d”,&n,&m);
- •Оператори організації переходів на мові "сі"
- •1.2. Для організації умовного переходу по одному із багатьох варіантів доцільно використовувати оператор switch. Він має наступний формат:
- •Організація циклів на мові "сі"
- •Одновимірні та двовимірні масиви на мові "сі"
- •Char b[30];
- •Char a[10][20];
- •Записи, вкладені записи, масиви записів на мові "сі"
- •Int month;
- •Int year;};
- •Int class, age;};
- •Робота із бінарними та текстовими файлами
- •File *lst;
- •Int fflush (вказівник_на_файл);
- •Int fgetc(вказівник_на_файл);
- •Int fputc(вказівник_на_файл);
- •Int fread (вказівник_на_масив, розмір_об’єкта, кількість_об’єктів , вказівник_на_файл);
- •Int fwrite(вказівник_на_масив, розмір_об’єкта, кількіст_об’єктів , вказівник_на_файл);
- •Int fseek(вказівник_файла, зміщення, поч. Значення);
- •3. Контрольні запитання
- •Робота з функціями на мові “сі”
- •Тип_функції назва_функції(тип1 параметр1, ..., тип_n параметр_n);
- •Int main(int argc, char *argv)
- •3.1. Який синтаксис функцій у мові “сі”.
- •Комп’ютерний практикум № 17 графічний режим екрану на мові “ci”
- •Initgraph(int *driver, int *mode, char *path);
- •Void *pimage;
- •Void *malloc(об'єм_пам’яті_в_байтах);
- •Imagesize(x1,y1,x2,y2);
- •Putimage(x1, y1, вказівник, вид_вставки);
- •Вирішення диференційних рівнянь методом ейлера
- •Основи роботи в середовищі “turbo pascal 7.0” та “turbo c 3.0”
- •Комп’ютерний практикум № 17. Графічний режим екрану
New (Person, Init);
Для звільненнядинамічної пам'яті особливо від ієрархічного класу об'єктів зручно застосовувати спеціальний методDestructor (деструктор), який виконує функцію “прибиральника сміття”. За згодою він має ім'яDoneі як будь-які методи може унаслідуватися. НайчастішеDestructorописується як віртуальний метод
Destructor Done; Virtual;
з порожнім тілом
Destructor TPerson.Done;
Begin
End.
Для зручності виклик деструктора та звільнення динамічної пам'яті об'єднується в одну команду
Dispose (Person, Done);
1.4. При вирішенні задач за допомогою ООП спочатку створюється ієрархічний клас об'єктів, причому батьківський об'єкт повинен уміщувати тільки загальні дані та методи, а дочірні об'єкти – дані та методи, які їх розширюють та уточнюють.
1.5. Приклад 1. На основі батьківського динамічного об'єкта “Персона”, віртуальний метод якого обчислює ідеальну вагу W людини за її зростом G по формулі W=G*100-100, створити два дочірні динамічні об’єкти “Жінка” й “Чоловік” та уточнити ідеальну вагу жінки та чоловіка за формулами Ww=W*0,85 та Wm=W*0,9 відповідно.
Program Weight_OOP;
Uses Crt;
{Опис об’єкта “Персона”}
Type TPerson=object
Name :string [15];
Growth :real;
Constructor Init;
Destructor Done; Virtual;
Procedure Read_Date;
Procedure Write_Date;
Function Weight :real; Virtual;
end;
Constructor TPerson.Init;
begin
Name:= ' ';
Growth:= 0.0;
end;
Destructor TPerson.Done;
begin
end;
Procedure TPerson.Read_Date;
begin
Write (' ІМ"Я ? ');
Readln (Name);
Write (' ЗРІСТ, м ? ');
Readln (Growth);
end;
Procedure TPerson.Write_Date;
begin
ClrScr;
Writeln (' ІМ"Я: ',Name);
Writeln (' ІДЕАЛЬНА ВАГА: ',Weight:5:1,' кГ');
end;
Function TPerson.Weight :real;
begin
Weight:=Growth*100-100;
end;
{Опис об’єкта “Жінка”}
Type TWoman= object (TPerson)
Function Weight :real; Virtual;
end;
Function TWoman.Weight :real;
begin
Weight:=TPerson.Weight*0.85;
end;
{Опис об’єкта “Чоловік”}
Type TMan= object (TPerson)
Function Weight :real; Virtual;
end;
Function Tman.Weight :real;
begin
Weight:=TPerson.Weight*0.9;
end;
Var
Woman :^TWoman;
Man :^TMan;
Ch :char;
Begin
TextColor (yellow);
TextBackGround (lightgray);
ClrScr;
New (Woman,Init);
New (Man,Init);
{Визначення статі людини}
Write (' СТАТЬ (Ч/Ж) ? ');
Repeat
Ch:=ReadKey;
Until (Ch='Ж') or (Ch='ж') or (Ch='Ч') or (CH='ч');
Writeln;
{Реалізація методів у залежності від статі людини}
If (Ch='Ж') or (Ch='ж') then
with Woman^ do
begin
Read_Date;
TextColor (red);
Write_Date;
end
else
with Man^ do
begin
Read_Date;
TextColor (blue);
Write_Date;
end;
Dispose (Woman, Done);
Dispose (Man, Done);
Readln;
End.
ЗАВДАННЯ НА РОБОТУ
Розробити та запустити у роботу програму на мові програмування "Паскаль", яка вирішує задачу відповідно до заданого нижче варіанта.
2.1. На основі базового динамічного об'єкта, який реалізує функцію y=А*соs(D*х), створити два підлеглі динамічні об'єкти та обчислити за допомогою віртуальних методів функції y1=А*соs(D*х)+В*sin(C*х) та y2=А*соs(D*х)*(К+2) відповідно при зміні аргументу Х від нуля до 10 із кроком 0,1. Параметри функцій увести з клавіатури.
2.2. На основі базового динамічного об'єкта, який реалізує функцію у=В*(1-е-t/T1), створити два підлеглі динамічні об'єкти та обчислити за допомогою віртуальних методів функції y1=В*(1-е-t/T1)+А*соs(D*t) та y2=В*(1-е-t/T1)*sin(K*t) відповідно при зміні аргументу t від нуля до 8 із кроком 0,05. Параметри функцій увести з клавіатури.
2.3. На основі базового динамічного об'єкта, який реалізує функцію y=С-K*z, створити два підлеглі динамічні об'єкти та обчислити за допомогою віртуальних методів функції y1=(С-K*z)+А*соs(z) та y2=(С-K*z)-В*(1-е-z) відповідно при зміні аргументу Z від нуля до 20 із кроком 0,5. Параметри функцій увести з клавіатури.
2.4. На основі базового динамічного об'єкта, який реалізує функцію y=А*sin(B*х), створити два підлеглі динамічні об'єкти та обчислити за допомогою віртуальних методів функції y1=А*sin(B*х)-С*соs(2*х) та y2=А*sin(B*х)-D*х2 відповідно при зміні аргументу Х від нуля до 16 із кроком 0,2. Параметри функцій увести з клавіатури.
2.5. На основі базового динамічного об'єкта, який реалізує функцію y=D*е-t/T, створити два підлеглі динамічні об'єкти та обчислити за допомогою віртуальних методів функції y1=D*е-t/T+соs(C*t) та y2=D*е-t/T-соs(A*t) відповідно при зміні аргументу t від нуля до 12 із кроком 0,06. Параметри функцій увести з клавіатури.
2.6. На основі базового динамічного об'єкта, який реалізує функцію y=A*z, створити два підлеглі динамічні об'єкти та обчислити за допомогою віртуальних методів функції y1=A*z+В*соs(z) та y2=A*z-D*(1-е-z) відповідно при зміні аргументу Z від нуля до 10 із кроком 0,02. Параметри функцій увести з клавіатури.
2.7. На основі базового динамічного об'єкта, який реалізує функцію y=А*соs(z), створити два підлеглі динамічні об'єкти та обчислити за допомогою віртуальних методів функції y1=А*соs(z)*sin(C*z) та y2=А*соs(z)+В*z відповідно при зміні аргументу Z від нуля до 17 із кроком 0,1. Параметри функцій увести з клавіатури.
2.8. На основі базового динамічного об'єкта, який реалізує функцію y=В*(1-е-t), створити два підлеглі динамічні об'єкти та обчислити за допомогою віртуальних методів функції y1=В*(1-е-t)*соs(D*t) та y=В*(1-е-t)+соs(C*t) відповідно при зміні аргументу t від нуля до 13 із кроком 0,1. Параметри функцій увести з клавіатури.
2.9. На основі базового динамічного об'єкта, який реалізує функцію y=K*z+А, створити два підлеглі динамічні об'єкти та обчислити за допомогою віртуальних методів функції y1=(K*z+А)+соs(B*z) та y2=(K*z+А)-С*е-z відповідно при зміні аргументу Z від нуля до 4 із кроком 0,01. Параметри функцій увести з клавіатури.
2.10. На основі базового динамічного об'єкта, який реалізує функцію y=А*sin(B*х+1), створити два підлеглі динамічні об'єкти та обчислити за допомогою віртуальних методів функції y1=А*sin(B*х+1)-В та y2=А*sin(B*х+1)-(х2+С) відповідно при зміні аргументу Х від нуля до 8 із кроком 0,04. Параметри функцій увести з клавіатури.
КОНТРОЛЬНІ ЗАПИТАННЯ
Якими трьома властивостями характеризується об’єктно-орієнтоване програмування.
Як реалізується кожна із властивостей об’єктно-орієнтованого програмування при описі об'єкта.
Як визначається належність метода до об'єкта.
Чим відрізняються статичні та віртуальні методи.
Як описуються віртуальні методи.
Для чого служить конструктор.
Як виділяється та звільняється динамічна пам'ять для динамічних об'єктів.
Як виділяється динамічна пам'ять для об'єктів із віртуальними методами.
Для чого служить деструктор та як він описується.
Комп’ютерний практикум № 10