- •Історія розвитку обчислювальної техніки та мов програмування
- •Сутність програмування. Компілятори, інтерпретатори, лінкери, дебагери.
- •Елементи мови Pascal (Delphi) (алфавіт, лексеми …)
- •Скалярні типи даних мови Pascal
- •Вказівники
- •Текстовий тип.
- •Операції над скалярними типами даних мови Pascal (Delphi).
- •Поясніть структуру та складові частини консольного проекту Delphi
- •Описову(декларативну)
- •Виконувану(імперативну).
- •Опишіть призначення вікон середовища Delphi
- •Методи розв’язання нелінійних рівнянь. Метод половинного ділення.
- •Методи розв’язання нелінійних рівнянь. Метод Ньютона.
- •Оператори безумовного та умовного переходів.
- •Процедури.
- •Функції.
- •Алгоритми. Їхні властивості. Форми представлення алгоритму.
- •Поясніть символіку блок-схем.
- •Формальні та фактичні параметри підпрограм.
- •Основні властивості та події графічних елементів управління Delphi.
- •Масиви Delphi.
- •Опишіть компоненти, з якими Ви працювали в Delphi.
- •Записи (Record) та їхнє використання.
- •Методи розв’язання слар. Метод Крамера.
- •Поясніть своїми словами алгоритм Гауса.
- •Графіка Delphi.
- •24. Математичні та алгоритмічні аспекти побудови графіків функцій.
- •25.Модулі (Unit).
- •26.Вказівники. Динамічна пам’ять.
- •Сегмент коду
25.Модулі (Unit).
Модуль – це програма, яка компілюється автономно і налічує типи даних, константи, змінні, процедури та ф-ї.
Найчастіше це бібліотеки ф-й , які розробляють окремі розробники і які компілюються незалежно і приєднуються до проекту за допомогою оператора Uses. У вихідному тексті компілятор вимагає щоб ім’я модуля і ім’я файлу (де зберігається текст цього модуля) співпадало.
Unit < ім’я модуля >
Interface
[Uses <список модулів, що розділено крапками>;]
<розділ глобальних описів>
<розділ заголовків процедур і ф-й>
Implementation
[Uses < список модулів, що розділено крапками>;]
<розділ глобальних описів >
<розділ реалізації процедур і ф-й>
Initialization
<оператори ініціалізуючой частини модуля>
Finalization
<Оператори завершаючої частини модуля >
End.
Як правило в Interface описуються дані, змінні, поля, заголовки процедур і ф-й з обов’язковою вказівкою типів кожного з параметрів, якщо вони є.
В Implementation ми повторюємо заголовки, але параметри і їхні типи не вказуємо. Потім ідуть тіла процедур і ф-й разом з їх локальними параметрами.
Розділ Initialization(1) і Finalization(2) є необов’язкові:
містить дії, які виконуються одноразово на початку роботи нашої програми
працює в самому кінці роботи програми і закриває відкриті канали зв’язку чи файли.
Типи Модулів:
форма – це модуль разом із пов’язаним із нею вікном
модулі динамічних бібліотек (dll) – універсальний засіб узгодження підпрограм, які написано різними мовами програмування
пакети – це спец. Чином відкомпільовані dll-бібліотеки.
модулі пакетів команд – фрагмент програми. Який виконується паралельно.
26.Вказівники. Динамічна пам’ять.
Вказівник - змінна, значенням якої є адреса певної комірки оперативної пам’яті. Є вказівники типізовані і не типізовані.
Типізовані пов’язані з певним типом даних:
Var p1:^Integer;
P2:^Real;
Вказівники , які не пов’язані із жодним типом даних (Pointer) – Не типізовані.
Під час запуску нашої програми їй в пам’яті виділяється до 4 Гб віртуальної пам’яті. Кожна програма в оперативній пам’яті займає певну кіл-ть байт. За своїм функціональним призначенням ця порція байт має 3 сегменти
Сегмент коду
сегмент даних – робочі поля в яких зберігаються змінні
сегмент стеку – робоча область, яка побудована за правилом магазину автомата. Там зберіг. Регістри процесора і параметри процедур і ф-й під час її виконання.
Решта Оперативної пам’яті є вільна і доступна програмісту – вона носить назву динамічна пам’ять.
Динамічна пам’ять виділяється процедурою и New:
Var pR:^Real;
Begin
New(pR);
End;
Для звільнення пам’яті використовують процедуру
Dispose(pR);
pR:=Nill;
Nill – нульова адреса.
Практика
Тиркутник1
program truckutnuk;
var a,b,c,x1,y1,x2,y2,x3,y3,nx,ny,n,a_n,b_n,c_n,p,an,bn,cn,s,p_an,p_bn,p_cn:real;
begin
writeln('VVedit koordunatu vershun trkytnuka x1= y1= x2= y2= x3= y3= ');
readln(x1,y1,x2,y2,x3,y3);
a:=sqrt(sqr(x2-x1)+sqr(y2-y1));
b:=sqrt(sqr(x3-x2)+sqr(y3-y2));
c:=sqrt(sqr(x3-x1)+sqr(y3-y1));
p:=(a+b+c)/2;
s:=sqrt(p*(p-a)*(p-b)*(p-c));
writeln('Vvedit koordunatu tochku nx= ny=');
read(nx,ny);
bn:=sqrt(sqr(x2-nx)+sqr(y2-ny));
an:=sqrt(sqr(x1-nx)+sqr(y1-ny));
cn:=sqrt(sqr(x3-nx)+sqr(y3-ny));
p_an:=(an+bn+a)/2;
p_bn:=(bn+cn+b)/2;
p_cn:=(cn+an+c)/2;
a_n:=sqrt(p_an*(p_an-a)*(p_an-an)*(p_an-bn));
b_n:=sqrt(p_bn*(p_bn-b)*(p_bn-bn)*(p_bn-cn));
c_n:=sqrt(p_cn*(p_cn-c)*(p_cn-an)*(p_cn-cn));
n:=a_n+b_n+c_n;
if abs(n-s)<1e-8 then
begin
writeln('TochkA Znaxodutsya y trukytnuky:)',n);
end
else
begin
writeln('Xa Xa XA ne PopAv:((');
end;
readln;
end.
2. трикутник 2
Program turk2;
var a,b,c,x1,x2,x3,y1,y2,y3,nx,ny,n,a_n,b_n,c_n,p,an,bn,cn,
s,p_an,p_bn,p_cn:real;
Function dovj(x2,x1,y2,y1:real):real;
Begin
dovj:=sqrt(sqr(x2-x1)+sqr(y2-y1));
End;
Procedure plosha(a,b,c:real;var s:real);
var p:real;
Begin
p:=(a+b+c)/2;
s:=sqrt(p*(p-a)*(p-b)*(p-c));
End;
Begin
writeln('Vvedit koordunatu vershun trukutnuka x1 x2 x3 y1 y2 y3');
readln(x1,y1,x2,y2,x3,y3);
plosha(dovj(x2,x1,y2,y1), dovj(x3,x2,y3,y2),dovj(x3,x1,y3,y1), s);
writeln('Vvedit koordunatu tochku nx= ny=');
read(nx,ny);
plosha(dovj(x1,nx,y1,ny),dovj(x2,nx,y2,ny),dovj(x2,x1,y2,y1), a_n);
plosha(dovj(x2,nx,y2,ny),dovj(x3,nx,y3,ny),dovj(x3,x2,y3,y2), b_n);
plosha(dovj(x3,nx,y3,ny),dovj(x1,nx,y1,ny),dovj(x3,x1,y3,y1) ,c_n);
n:=a_n+b_n+c_n;
if abs(n-s)<1e-8 then
begin
writeln('TochkA Znaxodutsya y trukytnuky:)',n);
end
else
begin
writeln('Xa Xa XA ne PopAv:((');
end;
readln;
end.
3. Квадрад
program a1;
var a,b,c,x1,x2,x,D:real;
Begin
writeln('vvedit a b c ');
read(a,b,c);
if a=0 then
begin
x:=-c/b;
write('x= ',x);
end;
if b=0 then
begin
x:=sqrt(-c*a);
write('x',x);
end;
if c=0 then
begin
x1:=0;
x2:=-b/a;
writeln('x1= x2= ',x1,x2);
end else
begin
D:=sqr(b)-4*a*c;
if D<0 then
begin
writeln('diysnuh kor nema VO!');
end;
x1:=-b-sqrt(D)/2*a;
x2:=-b+sqrt(D)/2*a;
writeln('x1= x2= ',x1,x2);
end;
End.
4. МПД
program polovunka;
Var a,b,c,Fa,Fb,Fc:real;
Const Eps=1.0e-6;
function f(x:real):real;
Begin
f:=cos(x);
end;
Begin
Writeln('Vvedi a b');
readln(a,b);
Fa:=f(a);
Fb:=f(b);
If Abs(Fa)<=Eps then
Begin
c:=a;
writeln('Zadano korin x=',c);
End;
If Abs(Fb)<=Eps then
Begin
c:=b;
writeln('Zadano korin x=',c);
end;
While (b-a)>Eps do
Begin
c:=a+(b-a)/2.0;
Fc:=c;
If Fa*Fc<0 then
begin
a:=c;
end else
If Fb*Fc<0 then
begin
b:=c;
end
End;
writeln('Zadano korin x=',c);
End.
5. Ньютон
Program Nuton;
var xn,xn1:real;
lich:integer;
Const Eps=1e-6;
Function f(x:real):real;
begin
f:=sin(x);
end;
Function fp(x:real):real;
begin
fp:=cos(x);
end;
Begin
xn:=3.0;
lich:=0;
Repeat
xn1:=xn-f(xn)/fp(xn);
inc(lich);
Until abs(xn1-xn)>Eps;
Writeln('Korin rivnyanya=',xn1,'iteracij',lich);
End.