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.
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...
#3Kit
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...
#4Gooo
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:
#4Gooo
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