- Реализиране на самостоятелни операции в програмата
- Разделяне на програмата на по-малки особени части
- Извършване на многократни повтарящи се изчисления в програмата посредством обмен на параметри с главна програма и промяна на тяхната стойност.
Използване на ипотпални програмни процедури
Стандартните оператори в езика Паскал представляват процедури, които са описани в модула System. Процедурите в този модул са достъпни без посочване името на модула в декларативната част на програмата. Стандартните процедури са неразделни част от езика. Прилагайки нормалната процедура, не се интересуваме от нейното действие. За използването на стандартните процедури, които не са описани в модула System, е необходимо в декларативната част на програмата след uses да се посочи модулът който е описана определената процедура. В настоящия раздел се разглежда създаването и използването на ипотпал процедури, дефинирани от програмиста. Описвайки свои процедури, той има възможност, в съответствие с конкретните нужди на разработването на програмата да разшири множеството от оператори с които борави езикът. Обмен на данни - дефинираните от потребителя процедури могат да обменят данни изискващата програма или да не обменят, извършващи самостоятелни действия. Възможни са следните случаи:
- процедурите получават входни данни и връщат изходни резултати
- ипотпал процедурите получават входни данни, но не връщат резултати
- процедурите не получават входни данни, а само връщат резултатите
- процедурите не получават входни данни и не връщат изходни резултати.
Процедурата се описва в раздела на подпрограмите на декларативната част на извикващата програма. Описанието на процедурата се състои от заглавие, декларативната и изпълнителната част. В заглавието се определя името, с което се извиква процедурата, както и списъка с декларации на формални параметри, посредством които процедурата обменя данни с извикващата програма. Формалните параметри се използват в изпълнителната част на ипотпал процедурата. В декларативната част на процедурата се декларират обекти ,които се явяват локални ,т.е се използват само в процедурата и се съхраняват в паметта само докато е активна процедурата. Изпълнителната част на процедурата започва с Begin и завършва с End след които се поставя разделителят „;”.
Извикване на процедура - процедурите се извикват в главната програма чрез своето име използвано в качеството на Оператор . Ако след името на процедурата в дефиницията в декларативната част на извикващата ипотпална програма има списък с формални параметри ,то при извикването на процедурата след името и трябва да има списък с фактически (действителни) параметри. Между формалните и фактическите параметри трябва да има съответствие по брой , по тип ,по смисъл и по място
Видове формални параметри:
Предавани по стойност – при стартирането на извикващата програма се отделя място в оперативната памет за фактическите параметри , а при извикването на процедурата – за съответните им формални параметри. В момента на извикване на процедурата стойностите на фактическите параметри се преписват в клетките определени за съответните им формални параметри. Процедурата променя стойностите само на формалните параметри ,защото няма достъп до фактическите.
Предавани по адрес – отделя се място само за фактическите параметри . При извикване на процедурата ,към формалните параметри се предават адресите на съответните им фактически параметри от главната програма.
Задача.
Program protocol_09_10_1;
type
MAS1 = array [1..10,1..10] of Real;
MAS2 = array [1..20,1..20] of Real;
MAS3 = array [1..30,1..30] of Real;
MAS4 = array [1..1400] of Real;
var
A : MAS1;
B : MAS2;
C : MAS3;
Polojitelni : MAS4;
Ma, Mb, Mc, M4 : Integer;
procedure vhod_danni(var M1 : MAS1; var M2 : MAS2; var M3 : MAS3);
var
i, j : Integer;
begin
Writeln;
Write('Vuvedete goleminata na dvumerniq masiv A: '); Readln(Ma);
Write('Vuvedete goleminata na dvumerniq masiv B: '); Readln(Mb);
Write('Vuvedete goleminata na dvumerniq masiv C: '); Readln(Mc);
Writeln;
Writeln('Vuvejdane na dannite za masiv A');
for i := 1 to Ma do
for j := 1 to Ma do
begin
repeat
Write('A[',i,',',j,'] = ');
Readln(A[i,j]);
until (A[i,j] >= -999.99) and (A[i,j] <= 999.99)
end;
Writeln;
Writeln('Vuvejdane na dannite za masiv B');
for i := 1 to Mb do
for j := 1 to Mb do
begin
repeat
Write('B[',i,',',j,'] = ');
Readln(B[i,j]);
until (B[i,j] >= -999.99) and (B[i,j] <= 999.99)
end;
Writeln;
Writeln('Vuvejdane na dannite za masiv C');
for i := 1 to Mc do
for j := 1 to Mc do
begin
repeat
Write('C[',i,',',j,'] = ');
Readln(C[i,j]);
until (C[i,j] >= -999.99) and (C[i,j] <= 999.99)
end;
end; {procedure vhod_danni}
procedure izvejdane_vhodni_danni(M1 : MAS1; M2 : MAS2; M3 : MAS3);
var
i, j : Integer;
begin
Writeln('Natisnete Enter za da produljite...');
Readln;
Writeln('Izvejdane na dannite za masiva A');
for i := 1 to Ma do
begin
for j := 1 to Ma do
Write(M1[i,j]:8:2);
Writeln;
end;
Writeln;
Writeln('Izvejdane na dannite za masiva B');
for i := 1 to Mb do
begin
for j := 1 to Mb do
Write(M2[i,j]:8:2);
Writeln;
end;
Writeln;
Writeln('Izvejdane na dannite za masiva C');
for i := 1 to Mc do
begin
for j := 1 to Mc do
Write(M3[i,j]:8:2);
Writeln;
end;
Writeln;
end; {procedure izvejdane_vhodni_danni}
procedure nov_masiv(M1 : MAS1; M2 : MAS2; M3 : MAS3);
var
i, j : Integer;
begin
M4 := 0;
for i := 1 to Ma do
for j := 1 to Ma do
begin
if M1[i,j] > 0 then
begin
M4 := M4 + 1;
Polojitelni[M4] := M1[i,j];
end;
end;
for i := 1 to Mb do
for j := 1 to Mb do
begin
if M2[i,j] > 0 then
begin
M4 := M4 + 1;
Polojitelni[M4] := M2[i,j];
end;
end;
for i := 1 to Mc do
for j := 1 to Mc do
begin
if M3[i,j] > 0 then
begin
M4 := M4 + 1;
Polojitelni[M4] := M3[i,j];
end;
end;
end; {procedure nov_masiv}
procedure sortirane(var A : MAS4);
var
Flag : Boolean;
rez : Real;
I : Integer;
begin
Flag := True;
while Flag do
begin
Flag := False;
for I := 1 to M4 - 1 do
if A[I] > A[I+1] then
begin
Flag := True;
Rez := A[I];
A[I] := A[I+1];
A[I+1] := Rez;
end;
end;
end; {procedure sortirane}
procedure rezultat(A : MAS4);
var i : Integer;
begin
Writeln;
Writeln('Rezultatut ot sortiraneto na ednomerniq masiv');
for i := 1 to M4 do
Write(A[i]:8:2);
end;
begin {Main}
vhod_danni(A,B,C);
izvejdane_vhodni_danni(A,B,C);
nov_masiv(A, B, C);
sortirane(Polojitelni);
rezultat(Polojitelni);
Readln
end. {Main}
Задача 2.
Program protocol_09_10_2;
type
MAS1 = array [1..10,1..20] of Real;
MAS2 = array [1..20,1..30] of Real;
MAS3 = array [1..30,1..40] of Real;
var
A, Q1 : MAS1;
B, Q2 : MAS2;
C, Q3 : MAS3;
Ma, Na, Mb, Nb, Mc, Nc, count : Integer;
Q, interval_start, interval_end : Integer;
procedure vhod_danni(var M1 : MAS1; var M2 : MAS2; var M3 : MAS3);
var
i, j : Integer;
begin
Writeln;
Write('Vuvedete broq redove na masiv A: '); Readln(Ma);
Write('Vuvedete broq koloni na masiv A: '); Readln(Na);
Write('Vuvedete broq redove na masiv B: '); Readln(Mb);
Write('Vuvedete broq koloni na masiv B: '); Readln(Nb);
Write('Vuvedete broq redove na masiv C: '); Readln(Mc);
Write('Vuvedete broq koloni na masiv C: '); Readln(Nc);
Writeln;
Write('Vuvedete na4aloto na intervala [M - N]: '); Readln(interval_start);
Write('Vuvedete kraq na intervala [M - N]: '); Readln(interval_end);
Write('Vuvedete 4isloto Q: '); Readln(Q);
Writeln;
Writeln('Vuvejdane na dannite za masiv A');
for i := 1 to Ma do
for j := 1 to Na do
begin
repeat
Write('A[',i,',',j,'] = ');
Readln(A[i,j]);
until (A[i,j] >= -99.99) and (A[i,j] <= 99.99)
end;
Writeln;
Writeln('Vuvejdane na dannite za masiv B');
for i := 1 to Mb do
for j := 1 to Nb do
begin
repeat
Write('B[',i,',',j,'] = ');
Readln(B[i,j]);
until (B[i,j] >= -99.99) and (B[i,j] <= 99.99)
end;
Writeln;
Writeln('Vuvejdane na dannite za masiv C');
for i := 1 to Mc do
for j := 1 to Nc do
begin
repeat
Write('C[',i,',',j,'] = ');
Readln(C[i,j]);
until (C[i,j] >= -99.99) and (C[i,j] <= 99.99)
end;
end; {procedure vhod_danni}
procedure izvejdane_vhodni_danni(M1 : MAS1; M2 : MAS2; M3 : MAS3);
var
i, j : Integer;
begin
Writeln('Natisnete Enter za da produljite...');
Readln;
Writeln('Izvejdane na dannite za masiva A');
for i := 1 to Ma do
begin
for j := 1 to Na do
Write(M1[i,j]:7:2);
Writeln;
end;
Writeln;
Writeln('Izvejdane na dannite za masiva B');
for i := 1 to Mb do
begin
for j := 1 to Nb do
Write(M2[i,j]:7:2);
Writeln;
end;
Writeln;
Writeln('Izvejdane na dannite za masiva C');
for i := 1 to Mc do
begin
for j := 1 to Nc do
Write(M3[i,j]:7:2);
Writeln;
end;
Writeln;
end; {procedure izvejdane_vhodni_danni}
procedure novi_masiv(M1 : MAS1; M2 : MAS2; M3 : MAS3; var Q1 : MAS1; var Q2 : MAS2; var Q3 : MAS3);
var
i, j : Integer;
begin
count := 0;
for i := 1 to Ma do
for j := 1 to Na do
begin
if (M1[i,j] >= interval_start) and (M1[i,j] <= interval_end) then
begin
count := count + 1;
Q1[i,j] := Q;
end
else
Q1[i,j] := M1[i,j];
end;
for i := 1 to Mb do
for j := 1 to Nb do
begin
if (M2[i,j] >= interval_start) and (M2[i,j] <= interval_end) then
begin
count := count + 1;
Q2[i,j] := Q;
end
else
Q2[i,j] := M2[i,j];
end;
for i := 1 to Mc do
for j := 1 to Nc do
begin
if (M3[i,j] >= interval_start) and (M3[i,j] <= interval_end) then
begin
count := count + 1;
Q3[i,j] := Q;
end
else
Q3[i,j] := M3[i,j];
end;
end; {procedure nov_masiv}
procedure rezultat;
var i, j : Integer;
begin
Writeln;
Writeln('Rezultatut ot podmqnata na elementite s 4isloto ', Q);
Writeln;
Writeln('Masivut A');
for i := 1 to Ma do
begin
for j := 1 to Na do
Write(Q1[i,j]:8:2);
Writeln;
end;
Writeln;
Writeln('Masivut B');
for i := 1 to Mb do
begin
for j := 1 to Nb do
Write(Q2[i,j]:8:2);
Writeln;
end;
Writeln;
Writeln('Masivut C');
for i := 1 to Mc do
begin
for j := 1 to Nc do
Write(Q3[i,j]:8:2);
Writeln;
end;
end;
begin {Main}
vhod_danni(A,B,C);
izvejdane_vhodni_danni(A,B,C);
Write('Natisnete Enter za produljenie...');
Readln;
novi_masiv(A, B, C, Q1, Q2, Q3);
rezultat;
Readln
end. {Main}
Ипотпал информация
Ипотпал Хардуерна Терминология
- IP маршрутизация
- Програмни ипотпални процедури
- Лого дизайн
- Хардуерни термини
- Идентификатор за флопидисково устройство, ABIOS и accelerator board
- Aссess Mechanism (механизъм за достъп), Aссеss Time (време за достъп) и Active-matrix screen
- Уеб дизайн & SEO оптимизация
- Active X и АGP algorithm
- AUTOEXEC.BAT, Batch file и Bad track table
- Ипотпал Вinary Benchmark
- Bit-tabbed font, Растерна графика и системни дискове
- ипотпал
- Какво е Bridge и Broadband Network, уеб Интернет браузъри и шини
- Кеширане в компютрите и карти (Cache and Cards)
- CCITT Groups, CCITT V Series
- SEO оптимизация
- CD-R & СD-I интерактивен компактдиск, Intel Celeron
- Кооперативна многозадачност на Microsoft Windows, CRT, Cyberspace
- Бази данни (Data Base)
- DC-2000, DEC Alpha и Defragmentatlon
- Компютърни термини - D
- Хардуерни термини на ипотпалските компютърни технологии
- Уеб дизайн
- Комуникации, файлове, памет и протоколи. Компютърни термини – F
- Уеб и SEO
- Gateway и Ipotpal Graphical user interface (графичен ипотпален потребителски интерфейс)
Моля, използвайте следните навигационни връзки от нашия уеб сайт: