Rozdíl mezi podprogramem a knihovnou – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Rozdíl mezi podprogramem a knihovnou – Pascal – Fórum – Programujte.comRozdíl mezi podprogramem a knihovnou – Pascal – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
Gooo0
Newbie
17. 1. 2015   #1
-
0
-

Zdravím

Uměl by někdo vysvětlit rozdíl mezi podprogramem a knihovnou? Já si to v knize čtu pořád dokola, přiznám se že mám problém rozlišit rozdíl i mezi procedurou a funkcí (oboje podle toho jak to chápu, dělá to stejné), ale stejný případ mám i v rozlišení podprogramu jako takového a knihovnou.

Podprogram je nějaká část kódu, která vykonává opakovaný příkaz v algoritmu a voláme ji. To ale přece je i funkce knihovny, jen s tím rozdílem, že knihovna je samostatný soubor, jsou v ní nadeklarovány identifikátory proměnných a druhá část knihovny může být třeba upravována kýmkoli, když dodrží stejnou sémantiku.

Mám v tom guláš?

Nahlásit jako SPAM
IP: 178.72.244.–
KIIV
~ Moderátor
+43
God of flame
17. 1. 2015   #2
-
0
-

Rozdil mezi procedurou a funkci je jen v tom, ze funkce vraci hodnotu (jako ze muzes udelat   promenna := funkce(x) )

Rozdil mezi procedurou a knihovnou je v tom, ze v knihovne muze byt tech procedur hodne (a taky funkce, konstanty a tak), obvykle maji spolecne "tema" - treba crt pro praci s textovou obrazovkou, graph pro praci s grafikou (jednoduchou), .... 

Mimochodem podprogram je vcelku to same jako procedura..

Nahlásit jako SPAM
IP: 94.113.95.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Kit+15
Guru
17. 1. 2015   #3
-
0
-

#1 Gooo
Procedura je podprogram, který něco vykonává.

Funkce je podprogram, který zjišťuje hodnotu.

Knihovna je skupina podprogramů.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Gooo0
Newbie
24. 1. 2015   #4
-
0
-

#3 Kit
Takze se da rici, ze funkce mi dava jen jeden vysledek a ten je uschovan v nazvu funkce a procedura mi muze vratit vice vysledku v promennych? Potom uplne nechapu smysl funkce, kdyz procedura udela minimalne to stejne a navic mi da moznost vice vysledku.

jeste se zeptam na dalsi vec. Jaky je rozdil mezi semantikou a syntaxi. Ve vyukovych clancich na netu jsem ten rozdil nasel, ale neumim to pochopit, takze jen odrikam naucenou vetu...

Nahlásit jako SPAM
IP: 178.72.244.–
JoDiK
~ Anonymní uživatel
987 příspěvků
25. 1. 2015   #5
-
0
-

#4 Gooo
Přesněji řečeno, funkce může vracet spoustu výsledků stejně jako procedura. Ale navíc vrací jednu hodnotu svým jménem a to se nedá nahradit procedurou, protože funkci (na rozdíl od procedury) můžeš volat ve výrazu.

Například mějme funkce sin, cos a sqr. Chceme vypsat výsledek výpočtu sin(cosx-sinx)^2:

writeln('Vysledek: ', sin(sqr(cos(x)-sin(x)));

Kdybys neměl funkce ale procedury, u kterých se výsledek vrací druhým parametrem (např, sin(uhel, vysledek); ), tento samý zápis by musel vypada třeba takto:

cos(x,vc);

sin(x,vs);

srq(vc-vs,vq);

sin(vq,cv);

writeln('Vysledek: ', cv);

Teď už je ti smysl funkce jasnější?

Nahlásit jako SPAM
IP: 88.103.228.–
JoDiK
~ Anonymní uživatel
987 příspěvků
25. 1. 2015   #6
-
0
-

#4 Gooo
No a sémantika a syntaxe? Velmi zjednodušeně:

sémantika - význam

syntaxe - pravopis

Takže například chceš, aby program vypsal výsledek nějakého výpočtu - hodnotu uloženou v proměnné x. Tak do programu (kde je nadeklarovaná proměnná x a nějaký výpočet třeba x:=2*pi;) napíšeš příkaz:

writeln('x');

Syntaxticky je to správně, překladač nehlásí žádnou chybu a program jde spustit. Ale místo číselného výsledku (hodnoty proměnné) ti to vypíše písmenko x. Sémantika (neboli význam) zápisu  'x' je znak (písmenko) x. Zatímco sémantika (význam) zápisu x je hodnota proměnné. Takže jsi měl napsat:

writeln(x);

To je opět syntakticky správně a už také sémanticky správně a program vypíše 6.28

Nahlásit jako SPAM
IP: 88.103.228.–
Kit+15
Guru
28. 1. 2015   #7
-
0
-

#4 Gooo
Procedura nevrací žádný výsledek. Je to příkaz, co se má udělat.

Nahlásit jako SPAM
IP: 147.229.242.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
JoDiK
~ Anonymní uživatel
987 příspěvků
28. 1. 2015   #8
-
0
-

#7 Kit
A na to jsi přišel jak?

Procedura nevrací žádný výsledek.

Například standardní procedura GetDir (zkopírováno z nápovědy Borland Pascal):

GetDir (procedura)

Vrací aktuální adresář určené diskové jednotky.

Deklarace

procedure GetDir(D: Byte; var S: String);

Nebo GetTime...

GetTime (procedura)     (jednotka Dos a jednotka WinDos)

Vrací aktuální čas, nastavený v operačním systému.

Deklarace

procedure GetTime(var Hour, Minute, Second, Sec100: Word);

Nahlásit jako SPAM
IP: 88.103.236.–
Kit+15
Guru
28. 1. 2015   #9
-
0
-

#8 JoDiK
procedure GetDir(D: Byte; var S: String);

Nic nevrací - je to  příkaz, aby název aktuálního adresáře byl uložen do stringu S. Nikde není výsledek, nedá se tedy použít ve výrazu.

Totéž GetTime() - v manuálu mají chybu. Místo "Vrací aktuální čas, ..." patří "Uloží aktuální čas do proměnných v parametrech". Opět nic nevrací.

Nahlásit jako SPAM
IP: 147.229.242.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
JoDiK
~ Anonymní uživatel
987 příspěvků
28. 1. 2015   #10
-
0
-

#9 Kit
Aha, tak to jo, jde tedy jen o formální záležitost s názvoslovím. U tebe procedury nevrací hodnoty, ony je jen ukládají do proměnných. OK.

Pro mě cokoliv procedura zjistí nebo vypočítá, to předává = "vrací" volajícímu programu prostřednictvím parametrů...

Nahlásit jako SPAM
IP: 88.103.236.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 5 hostů

Podobná vlákna

Rozdíl mezi == a is — založil Ahoj3

Rozdíl mezi C, C++ a C# — založil Murmand

Rozdíl mezi zápisy — založil Tomas

Rozdil mezi class a id — založil Václav Žitek

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý