Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kolokvium.doc
Скачиваний:
33
Добавлен:
25.11.2019
Размер:
164.86 Кб
Скачать

25.Модулі (Unit).

Модуль – це програма, яка компілюється автономно і налічує типи даних, константи, змінні, процедури та ф-ї.

Найчастіше це бібліотеки ф-й , які розробляють окремі розробники і які компілюються незалежно і приєднуються до проекту за допомогою оператора Uses. У вихідному тексті компілятор вимагає щоб ім’я модуля і ім’я файлу (де зберігається текст цього модуля) співпадало.

Unit < ім’я модуля >

Interface

[Uses <список модулів, що розділено крапками>;]

<розділ глобальних описів>

<розділ заголовків процедур і ф-й>

Implementation

[Uses < список модулів, що розділено крапками>;]

<розділ глобальних описів >

<розділ реалізації процедур і ф-й>

Initialization

<оператори ініціалізуючой частини модуля>

Finalization

<Оператори завершаючої частини модуля >

End.

Як правило в Interface описуються дані, змінні, поля, заголовки процедур і ф-й з обов’язковою вказівкою типів кожного з параметрів, якщо вони є.

В Implementation ми повторюємо заголовки, але параметри і їхні типи не вказуємо. Потім ідуть тіла процедур і ф-й разом з їх локальними параметрами.

Розділ Initialization(1) і Finalization(2) є необов’язкові:

  1. містить дії, які виконуються одноразово на початку роботи нашої програми

  2. працює в самому кінці роботи програми і закриває відкриті канали зв’язку чи файли.

Типи Модулів:

  1. форма – це модуль разом із пов’язаним із нею вікном

  2. модулі динамічних бібліотек (dll) – універсальний засіб узгодження підпрограм, які написано різними мовами програмування

  3. пакети – це спец. Чином відкомпільовані dll-бібліотеки.

  4. модулі пакетів команд – фрагмент програми. Який виконується паралельно.

26.Вказівники. Динамічна пам’ять.

Вказівник - змінна, значенням якої є адреса певної комірки оперативної пам’яті. Є вказівники типізовані і не типізовані.

Типізовані пов’язані з певним типом даних:

Var p1:^Integer;

P2:^Real;

Вказівники , які не пов’язані із жодним типом даних (Pointer) – Не типізовані.

Під час запуску нашої програми їй в пам’яті виділяється до 4 Гб віртуальної пам’яті. Кожна програма в оперативній пам’яті займає певну кіл-ть байт. За своїм функціональним призначенням ця порція байт має 3 сегменти

  1. Сегмент коду

  2. сегмент даних – робочі поля в яких зберігаються змінні

  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.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]