http://wiki.wowresource.eu/api.php?action=feedcontributions&user=Megi&feedformat=atomWoWResource Wiki - Příspěvky uživatele [cs]2024-03-28T13:53:38ZPříspěvky uživateleMediaWiki 1.30.2http://wiki.wowresource.eu/index.php?title=Unknown_database_(Ascent)&diff=198Unknown database (Ascent)2007-12-02T16:46:53Z<p>Megi: New page: http://img156.imageshack.us/img156/9162/chybaascentht3.png Tato chyba znamená že ascent se snaží použít databázi která neexistuje.v configu si opravte jméno DB. [[Category:Asc...</p>
<hr />
<div>http://img156.imageshack.us/img156/9162/chybaascentht3.png<br />
<br />
<br />
Tato chyba znamená že ascent se snaží použít databázi která neexistuje.v configu si opravte jméno DB.<br />
<br />
<br />
[[Category:Ascent Problémy]]</div>Megihttp://wiki.wowresource.eu/index.php?title=Tvorba_Vlastn%C3%ADho_Questu_(MaNGOS)&diff=192Tvorba Vlastního Questu (MaNGOS)2007-12-02T15:22:50Z<p>Megi: New page: Jak na to? snadno: Jednoduse v DB, otevrete si databazi mangos, tabulku creature_template .. najdete si pozadovane NPC a prepiste jmeno, restartujte server a je to. [[Category:MaNGOS Pro...</p>
<hr />
<div>Jak na to? snadno:<br />
<br />
Jednoduse v DB, otevrete si databazi mangos, tabulku creature_template .. najdete si pozadovane NPC a prepiste jmeno, restartujte server a je to.<br />
<br />
[[Category:MaNGOS Problémy]]</div>Megihttp://wiki.wowresource.eu/index.php?title=P%C5%99ejmenov%C3%A1n%C3%AD_NPC_(MaNGOS)&diff=190Přejmenování NPC (MaNGOS)2007-12-02T15:14:21Z<p>Megi: New page: Jak na to? snadno: Jednoduse v DB, otevrete si databazi mangos, tabulku creature_template .. najdete si pozadovane NPC a prepiste jmeno, restartujte server a je to. [[Category:MaNGOS Pro...</p>
<hr />
<div>Jak na to? snadno:<br />
<br />
Jednoduse v DB, otevrete si databazi mangos, tabulku creature_template .. najdete si pozadovane NPC a prepiste jmeno, restartujte server a je to.<br />
<br />
[[Category:MaNGOS Problémy]]</div>Megihttp://wiki.wowresource.eu/index.php?title=L70ETC_(MaNGOS)&diff=187L70ETC (MaNGOS)2007-12-02T15:13:34Z<p>Megi: </p>
<hr />
<div>Jedná se o koncertující horďáckou skupinu.<br />
<br />
jejich ID:<br />
<br />
23624 - Troll<br />
<br />
23623 - Tauren<br />
<br />
23619 - Undead<br />
<br />
23625 - Orc<br />
<br />
23626 - Blood Elf<br />
<br />
[[Category:MaNGOS Problémy]]</div>Megihttp://wiki.wowresource.eu/index.php?title=L70ETC_(MaNGOS)&diff=186L70ETC (MaNGOS)2007-12-02T15:12:22Z<p>Megi: New page: Jedná se o koncertující horďáckou skupinu. jejich ID: 23624 - Troll 23623 - Tauren 23619 - Undead 23625 - Orc 23626 - Blood Elf</p>
<hr />
<div>Jedná se o koncertující horďáckou skupinu.<br />
<br />
jejich ID:<br />
<br />
23624 - Troll<br />
<br />
23623 - Tauren<br />
<br />
23619 - Undead<br />
<br />
23625 - Orc<br />
<br />
23626 - Blood Elf</div>Megihttp://wiki.wowresource.eu/index.php?title=Jak_nau%C4%8Dit_NPC_mluvit_(MaNGOS)&diff=185Jak naučit NPC mluvit (MaNGOS)2007-12-02T15:11:32Z<p>Megi: New page: Jednoduše,stačí upravit tabulku jménem "creature_movement". (text1 - text4). Category:MaNGOS Problémy</p>
<hr />
<div>Jednoduše,stačí upravit tabulku jménem "creature_movement". (text1 - text4).<br />
<br />
<br />
[[Category:MaNGOS Problémy]]</div>Megihttp://wiki.wowresource.eu/index.php?title=Hlavn%C3%AD_strana&diff=176Hlavní strana2007-12-01T23:33:12Z<p>Megi: </p>
<hr />
<div>'''Vítejte na WoWResource Wiki.'''<br />
<br />
----<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<!------- SESTERSKÉ PROJEKTY -------> <br />
<div style="margin-left:-1px; width: 99.9%; background-color: rgb(255, 254, 255); text-align:center; border: 1px rgb(210, 210, 240) solid; margin-bottom: 5px"><br />
<div style="height: 16pt; background-color: rgb(210, 210, 240); border: 0px; border-bottom: 1px rgb(170, 170, 200); border-style: solid; font: 11pt; font-weight: bolder; position: relative;"><br />
<div style="position: absolute; top: 0; left: 0;">[[Soubor:Nuvola_apps_kdf.gif|32px]]</div><br />
<div style="padding-left: 35px;">[[Special:Categories|Zákládní kategorie]]</div></div><br />
<div style="margin-left:.5em; margin-top:.8em"><br />
<br />
<center><br />
[[:Category:Emulátory|Emulátory]] - [[:Category:Utility|Utility]] - [[:Category:MaNGOS Problémy|MaNGOS Problémy]] - [[:Category:Ascent Problémy|Ascent Problémy]] - [[:Category:SQL Chyby|SQL Chyby]] - [[:Category:Programování|Programování ]] - [[:Category:Scripty|Scripty]] - [[:Category:Ostatní|Ostatní]]</div>Megihttp://wiki.wowresource.eu/index.php?title=Hlavn%C3%AD_strana&diff=175Hlavní strana2007-12-01T23:32:54Z<p>Megi: </p>
<hr />
<div>'''Vítejte na WoWResource Wiki.'''<br />
<br />
----<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<!------- SESTERSKÉ PROJEKTY -------> <br />
<div style="margin-left:-1px; width: 99.9%; background-color: rgb(255, 254, 255); text-align:center; border: 1px rgb(210, 210, 240) solid; margin-bottom: 5px"><br />
<div style="height: 16pt; background-color: rgb(210, 210, 240); border: 0px; border-bottom: 1px rgb(170, 170, 200); border-style: solid; font: 11pt; font-weight: bolder; position: relative;"><br />
<div style="position: absolute; top: 0; left: 0;">[[Soubor:Nuvola_apps_kdf.gif|32px]]</div><br />
<div style="padding-left: 35px;">[[Special:Categories|Zákládní kategorie]]</div></div><br />
<div style="margin-left:.5em; margin-top:.8em"><br />
<br />
<center><br />
[[:Category:Emulátory|Emulátory]] - [[:Category:Utility|Utility]] - [[:Category:MaNGOS Problémy|MaNGOS Problémy]] - [[:Category:MaNGOS Problémy|MaNGOS Problémy]] - [[:Category:SQL Chyby|SQL Chyby]] - [[:Category:Programování|Programování ]] - [[:Category:Scripty|Scripty]] - [[:Category:Ostatní|Ostatní]]</div>Megihttp://wiki.wowresource.eu/index.php?title=Hlavn%C3%AD_strana&diff=173Hlavní strana2007-12-01T23:32:13Z<p>Megi: </p>
<hr />
<div>'''Vítejte na WoWResource Wiki.'''<br />
<br />
----<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<!------- SESTERSKÉ PROJEKTY -------> <br />
<div style="margin-left:-1px; width: 99.9%; background-color: rgb(255, 254, 255); text-align:center; border: 1px rgb(210, 210, 240) solid; margin-bottom: 5px"><br />
<div style="height: 16pt; background-color: rgb(210, 210, 240); border: 0px; border-bottom: 1px rgb(170, 170, 200); border-style: solid; font: 11pt; font-weight: bolder; position: relative;"><br />
<div style="position: absolute; top: 0; left: 0;">[[Soubor:Nuvola_apps_kdf.gif|32px]]</div><br />
<div style="padding-left: 35px;">[[Special:Categories|Zákládní kategorie]]</div></div><br />
<div style="margin-left:.5em; margin-top:.8em"><br />
<br />
<center><br />
[[:Category:Emulátory|Emulátory]] - [[:Category:Utility|Utility]] - [[:Category:MaNGOS Problémy|MaNGOS Problémy]] - [[:Category:Ascent problémy|Ascent problémy]] - [[:Category:SQL Chyby|SQL Chyby]] - [[:Category:Programování|Programování ]] - [[:Category:Scripty|Scripty]] - [[:Category:Ostatní|Ostatní]]</div>Megihttp://wiki.wowresource.eu/index.php?title=Hlavn%C3%AD_strana&diff=172Hlavní strana2007-12-01T23:32:03Z<p>Megi: </p>
<hr />
<div>'''Vítejte na WoWResource Wiki.'''<br />
<br />
----<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<!------- SESTERSKÉ PROJEKTY -------> <br />
<div style="margin-left:-1px; width: 99.9%; background-color: rgb(255, 254, 255); text-align:center; border: 1px rgb(210, 210, 240) solid; margin-bottom: 5px"><br />
<div style="height: 16pt; background-color: rgb(210, 210, 240); border: 0px; border-bottom: 1px rgb(170, 170, 200); border-style: solid; font: 11pt; font-weight: bolder; position: relative;"><br />
<div style="position: absolute; top: 0; left: 0;">[[Soubor:Nuvola_apps_kdf.gif|32px]]</div><br />
<div style="padding-left: 35px;">[[Special:Categories|Zákládní kategorie]]</div></div><br />
<div style="margin-left:.5em; margin-top:.8em"><br />
<br />
<center><br />
[[:Category:Emulátory|Emulátory]] - [[:Category:Utility|Utility]] - [[:Category:MaNGOS Problémy|MaNGOS Problémy]] - - [[:Category:SQL Chyby|SQL Chyby]] - [[:Category:Programování|Programování ]] - [[:Category:Scripty|Scripty]] - [[:Category:Ostatní|Ostatní]]</div>Megihttp://wiki.wowresource.eu/index.php?title=Kategorie:Ascent_Probl%C3%A9my&diff=167Kategorie:Ascent Problémy2007-12-01T23:29:25Z<p>Megi: Removing all content from page</p>
<hr />
<div></div>Megihttp://wiki.wowresource.eu/index.php?title=Kategorie:Ascent_Probl%C3%A9my&diff=166Kategorie:Ascent Problémy2007-12-01T23:29:18Z<p>Megi: New page: j</p>
<hr />
<div>j</div>Megihttp://wiki.wowresource.eu/index.php?title=Hlavn%C3%AD_strana&diff=160Hlavní strana2007-12-01T23:19:31Z<p>Megi: </p>
<hr />
<div>'''Vítejte na WoWResource Wiki.'''<br />
<br />
----<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<!------- SESTERSKÉ PROJEKTY -------> <br />
<div style="margin-left:-1px; width: 99.9%; background-color: rgb(255, 254, 255); text-align:center; border: 1px rgb(210, 210, 240) solid; margin-bottom: 5px"><br />
<div style="height: 16pt; background-color: rgb(210, 210, 240); border: 0px; border-bottom: 1px rgb(170, 170, 200); border-style: solid; font: 11pt; font-weight: bolder; position: relative;"><br />
<div style="position: absolute; top: 0; left: 0;">[[Soubor:Nuvola_apps_kdf.gif|32px]]</div><br />
<div style="padding-left: 35px;">[[Special:Categories|Zákládní kategorie]]</div></div><br />
<div style="margin-left:.5em; margin-top:.8em"><br />
<br />
<center><br />
[[:Category:Emulátory|Emulátory]] - [[:Category:Utility|Utility]] - [[:Category:MaNGOS Problémy|MaNGOS Problémy]] - [[:Category:Ascent problémy|Ascent problémy]] - [[:Category:SQL Chyby|SQL Chyby]] - [[:Category:Programování|Programování ]] - [[:Category:Scripty|Scripty]] - [[:Category:Ostatní|Ostatní]]</div>Megihttp://wiki.wowresource.eu/index.php?title=Hlavn%C3%AD_strana&diff=159Hlavní strana2007-12-01T23:19:02Z<p>Megi: </p>
<hr />
<div>'''Vítejte na WoWResource Wiki.'''<br />
<br />
----<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<!------- SESTERSKÉ PROJEKTY -------> <br />
<div style="margin-left:-1px; width: 99.9%; background-color: rgb(255, 254, 255); text-align:center; border: 1px rgb(210, 210, 240) solid; margin-bottom: 5px"><br />
<div style="height: 16pt; background-color: rgb(210, 210, 240); border: 0px; border-bottom: 1px rgb(170, 170, 200); border-style: solid; font: 11pt; font-weight: bolder; position: relative;"><br />
<div style="position: absolute; top: 0; left: 0;">[[Soubor:Nuvola_apps_kdf.gif|32px]]</div><br />
<div style="padding-left: 35px;">[[Special:Categories|Zákládní kategorie]]</div></div><br />
<div style="margin-left:.5em; margin-top:.8em"><br />
<br />
<center><br />
[[:Category:Emulátory|Emulátory]] - [[:Category:Utility|Utility]] - [[Category:MaNGOS Problémy|MaNGOS Problémy]] - [[:Category:Ascent problémy|Ascent problémy]] - [[:Category:SQL Chyby|SQL Chyby]] - [[:Category:Programování|Programování ]] - [[:Category:Scripty|Scripty]] - [[:Category:Ostatní|Ostatní]]</div>Megihttp://wiki.wowresource.eu/index.php?title=Hlavn%C3%AD_strana&diff=158Hlavní strana2007-12-01T23:18:28Z<p>Megi: </p>
<hr />
<div>'''Vítejte na WoWResource Wiki.'''<br />
<br />
----<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<!------- SESTERSKÉ PROJEKTY -------> <br />
<div style="margin-left:-1px; width: 99.9%; background-color: rgb(255, 254, 255); text-align:center; border: 1px rgb(210, 210, 240) solid; margin-bottom: 5px"><br />
<div style="height: 16pt; background-color: rgb(210, 210, 240); border: 0px; border-bottom: 1px rgb(170, 170, 200); border-style: solid; font: 11pt; font-weight: bolder; position: relative;"><br />
<div style="position: absolute; top: 0; left: 0;">[[Soubor:Nuvola_apps_kdf.gif|32px]]</div><br />
<div style="padding-left: 35px;">[[Special:Categories|Zákládní kategorie]]</div></div><br />
<div style="margin-left:.5em; margin-top:.8em"><br />
<br />
<center><br />
[[:Category:Emulátory|Emulátory]] - [[:Category:Utility|Utility]] - [[Category:MaNGOS Problémy|MaNGOS Problémy]]<br />
- [[:Category:Ascent problémy|Ascent problémy]] - [[:Category:SQL Chyby|SQL Chyby]] - [[:Category:Programování|Programování ]] - [[:Category:Scripty|Scripty]] - [[:Category:Ostatní|Ostatní]]</div>Megihttp://wiki.wowresource.eu/index.php?title=Hlavn%C3%AD_strana&diff=157Hlavní strana2007-12-01T23:18:10Z<p>Megi: </p>
<hr />
<div>'''Vítejte na WoWResource Wiki.'''<br />
<br />
----<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<!------- SESTERSKÉ PROJEKTY -------> <br />
<div style="margin-left:-1px; width: 99.9%; background-color: rgb(255, 254, 255); text-align:center; border: 1px rgb(210, 210, 240) solid; margin-bottom: 5px"><br />
<div style="height: 16pt; background-color: rgb(210, 210, 240); border: 0px; border-bottom: 1px rgb(170, 170, 200); border-style: solid; font: 11pt; font-weight: bolder; position: relative;"><br />
<div style="position: absolute; top: 0; left: 0;">[[Soubor:Nuvola_apps_kdf.gif|32px]]</div><br />
<div style="padding-left: 35px;">[[Special:Categories|Zákládní kategorie]]</div></div><br />
<div style="margin-left:.5em; margin-top:.8em"><br />
<br />
<center><br />
[[:Category:Emulátory|Emulátory]] - [[:Category:Utility|Utility]] - [[Category:MaNGOS Problémy]]<br />
- [[:Category:Ascent problémy|Ascent problémy]] - [[:Category:SQL Chyby|SQL Chyby]] - [[:Category:Programování|Programování ]] - [[:Category:Scripty|Scripty]] - [[:Category:Ostatní|Ostatní]]</div>Megihttp://wiki.wowresource.eu/index.php?title=Hlavn%C3%AD_strana&diff=156Hlavní strana2007-12-01T23:17:04Z<p>Megi: </p>
<hr />
<div>'''Vítejte na WoWResource Wiki.'''<br />
<br />
----<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<!------- SESTERSKÉ PROJEKTY -------> <br />
<div style="margin-left:-1px; width: 99.9%; background-color: rgb(255, 254, 255); text-align:center; border: 1px rgb(210, 210, 240) solid; margin-bottom: 5px"><br />
<div style="height: 16pt; background-color: rgb(210, 210, 240); border: 0px; border-bottom: 1px rgb(170, 170, 200); border-style: solid; font: 11pt; font-weight: bolder; position: relative;"><br />
<div style="position: absolute; top: 0; left: 0;">[[Soubor:Nuvola_apps_kdf.gif|32px]]</div><br />
<div style="padding-left: 35px;">[[Special:Categories|Zákládní kategorie]]</div></div><br />
<div style="margin-left:.5em; margin-top:.8em"><br />
<br />
<center><br />
[[:Category:Emulátory|Emulátory]] - [[:Category:Utility|Utility]] - [[:Category:MaNGOS problémy|MaNGOS problémy]] - [[:Category:Ascent problémy|Ascent problémy]] - [[:Category:SQL Chyby|SQL Chyby]] - [[:Category:Programování|Programování ]] - [[:Category:Scripty|Scripty]] - [[:Category:Ostatní|Ostatní]]</div>Megihttp://wiki.wowresource.eu/index.php?title=Hlavn%C3%AD_strana&diff=155Hlavní strana2007-12-01T23:16:54Z<p>Megi: </p>
<hr />
<div>'''Vítejte na WoWResource Wiki.'''<br />
<br />
----<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<!------- SESTERSKÉ PROJEKTY -------> <br />
<div style="margin-left:-1px; width: 99.9%; background-color: rgb(255, 254, 255); text-align:center; border: 1px rgb(210, 210, 240) solid; margin-bottom: 5px"><br />
<div style="height: 16pt; background-color: rgb(210, 210, 240); border: 0px; border-bottom: 1px rgb(170, 170, 200); border-style: solid; font: 11pt; font-weight: bolder; position: relative;"><br />
<div style="position: absolute; top: 0; left: 0;">[[Soubor:Nuvola_apps_kdf.gif|32px]]</div><br />
<div style="padding-left: 35px;">[[Special:Categories|Zákládní kategorie]]</div></div><br />
<div style="margin-left:.5em; margin-top:.8em"><br />
<br />
<center><br />
[[:Category:Emulátory|Emulátory]] - [[:Category:Utility|Utility]] - - [[:Category:Ascent problémy|Ascent problémy]] - [[:Category:SQL Chyby|SQL Chyby]] - [[:Category:Programování|Programování ]] - [[:Category:Scripty|Scripty]] - [[:Category:Ostatní|Ostatní]]</div>Megihttp://wiki.wowresource.eu/index.php?title=Zm%C4%9Bna_MOTD_(MaNGOS)&diff=152Změna MOTD (MaNGOS)2007-12-01T23:13:23Z<p>Megi: </p>
<hr />
<div>Pro změnu uvítací zprávy v mangosu,musíte v mangosd.conf změnit následující :<br />
<br />
# Message of the Day. Displayed at worldlogin for every user ('@' for a newline).<br />
Motd = "Zde napište vaše uvítání"<br />
<br />
<br />
<br />
<br />
[[Category:MaNGOS Problémy]]</div>Megihttp://wiki.wowresource.eu/index.php?title=Zm%C4%9Bna_MOTD_(MaNGOS)&diff=151Změna MOTD (MaNGOS)2007-12-01T23:13:14Z<p>Megi: </p>
<hr />
<div>Pro změnu uvítací zprávy v mangosu,musíte v mangosd.conf změnit následující :<br />
<br />
# Message of the Day. Displayed at worldlogin for every user ('@' for a newline).<br />
Motd = "Zde napište vaše uvítání"</div>Megihttp://wiki.wowresource.eu/index.php?title=Kategorie:MaNGOS_Probl%C3%A9my&diff=148Kategorie:MaNGOS Problémy2007-12-01T23:06:25Z<p>Megi: Removing all content from page</p>
<hr />
<div></div>Megihttp://wiki.wowresource.eu/index.php?title=Kategorie:MaNGOS_Probl%C3%A9my&diff=147Kategorie:MaNGOS Problémy2007-12-01T23:06:17Z<p>Megi: New page: u</p>
<hr />
<div>u</div>Megihttp://wiki.wowresource.eu/index.php?title=Zm%C4%9Bna_MOTD_(MaNGOS)&diff=146Změna MOTD (MaNGOS)2007-12-01T23:05:58Z<p>Megi: New page: Pro změnu uvítací zprávy v mangosu,musíte v mangosd.conf změnit následující : # Message of the Day. Displayed at worldlogin for every user ('@' for a newline). Motd = "Zde napiš...</p>
<hr />
<div>Pro změnu uvítací zprávy v mangosu,musíte v mangosd.conf změnit následující :<br />
<br />
# Message of the Day. Displayed at worldlogin for every user ('@' for a newline).<br />
Motd = "Zde napište vaše uvítání"<br />
<br />
<br />
<br />
<br />
<br />
<br />
[[Category:MaNGOS Problémy]]</div>Megihttp://wiki.wowresource.eu/index.php?title=Hlavn%C3%AD_strana&diff=142Hlavní strana2007-12-01T23:00:03Z<p>Megi: </p>
<hr />
<div>'''Vítejte na WoWResource Wiki.'''<br />
<br />
----<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<!------- SESTERSKÉ PROJEKTY -------> <br />
<div style="margin-left:-1px; width: 99.9%; background-color: rgb(255, 254, 255); text-align:center; border: 1px rgb(210, 210, 240) solid; margin-bottom: 5px"><br />
<div style="height: 16pt; background-color: rgb(210, 210, 240); border: 0px; border-bottom: 1px rgb(170, 170, 200); border-style: solid; font: 11pt; font-weight: bolder; position: relative;"><br />
<div style="position: absolute; top: 0; left: 0;">[[Soubor:Nuvola_apps_kdf.gif|32px]]</div><br />
<div style="padding-left: 35px;">[[Special:Categories|Zákládní kategorie]]</div></div><br />
<div style="margin-left:.5em; margin-top:.8em"><br />
<br />
<center><br />
[[:Category:Emulátory|Emulátory]] - [[:Category:Utility|Utility]] - [[:Category:MaNGOS problémy|MaNGOS problémy]] - [[:Category:Ascent problémy|Ascent problémy]] - [[:Category:SQL Chyby|SQL Chyby]] - [[:Category:Programování|Programování ]] - [[:Category:Scripty|Scripty]] - [[:Category:Ostatní|Ostatní]]</div>Megihttp://wiki.wowresource.eu/index.php?title=Hlavn%C3%AD_strana&diff=141Hlavní strana2007-12-01T22:59:45Z<p>Megi: </p>
<hr />
<div>'''Vítejte na WoWResource Wiki.'''<br />
<br />
----<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<!------- SESTERSKÉ PROJEKTY -------> <br />
<div style="margin-left:-1px; width: 99.9%; background-color: rgb(255, 254, 255); text-align:center; border: 1px rgb(210, 210, 240) solid; margin-bottom: 5px"><br />
<div style="height: 16pt; background-color: rgb(210, 210, 240); border: 0px; border-bottom: 1px rgb(170, 170, 200); border-style: solid; font: 11pt; font-weight: bolder; position: relative;"><br />
<div style="position: absolute; top: 0; left: 0;">[[Soubor:Nuvola_apps_kdf.gif|32px]]</div><br />
<div style="padding-left: 35px;">[[Special:Categories|Zákládní kategorie]]</div></div><br />
<div style="margin-left:.5em; margin-top:.8em"><br />
<br />
<center><br />
[[:Category:Emulátory|Emulátory]] - [[:Category:Utility|Utility]] - [[:Category:MaNGOS problémy|MaNGOS problémy]] - [[:Category:Ascent problémy|Ascent problémy]] - [[:Category:SQL Chyby]|SQL Chyby]] - [[:Category:Programování|Programování ]] - [[:Category:Scripty|Scripty]] - [[:Category:Ostatní|Ostatní]]</div>Megihttp://wiki.wowresource.eu/index.php?title=Hlavn%C3%AD_strana&diff=140Hlavní strana2007-12-01T22:59:18Z<p>Megi: </p>
<hr />
<div>'''Vítejte na WoWResource Wiki.'''<br />
<br />
----<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<!------- SESTERSKÉ PROJEKTY -------> <br />
<div style="margin-left:-1px; width: 99.9%; background-color: rgb(255, 254, 255); text-align:center; border: 1px rgb(210, 210, 240) solid; margin-bottom: 5px"><br />
<div style="height: 16pt; background-color: rgb(210, 210, 240); border: 0px; border-bottom: 1px rgb(170, 170, 200); border-style: solid; font: 11pt; font-weight: bolder; position: relative;"><br />
<div style="position: absolute; top: 0; left: 0;">[[Soubor:Nuvola_apps_kdf.gif|32px]]</div><br />
<div style="padding-left: 35px;">[[Special:Categories|Zákládní kategorie]]</div></div><br />
<div style="margin-left:.5em; margin-top:.8em"><br />
<br />
<center><br />
[[:Category:Emulátory|Emulátory]] - [[:Category:Utility|Utility]] - [[:Category:MaNGOS problémy|MaNGOS problémy]] - [[:Category:Ascent problémy|Ascent problémy]] - [[:Category:SQL Chyby]|SQL Chyby]][[:Category:Programování|Programování ]] - [[:Category:Scripty|Scripty]] - [[:Category:Ostatní|Ostatní]]</div>Megihttp://wiki.wowresource.eu/index.php?title=Python&diff=139Python2007-11-28T19:27:29Z<p>Megi: </p>
<hr />
<div>'''Python''' je [[interpret (software)|interpretovaný]] [[objektově orientované programování|objektově orientovaný]] [[programovací jazyk]], který v roce [[1990]] navrhl [[Guido van Rossum]]. Python je vyvíjen jako [[Open source software|open source]] projekt, který zdarma nabízí instalační balíky pro většinu běžných [[platforma|platforem]] ([[Unix]], [[Microsoft Windows|Windows]], [[Mac OS]]); ve většině [[Linuxová distribuce|distribucí]] systému [[Linux]] je Python součástí základní instalace.<br />
<br />
Mimo jiné je v něm [[implementace|implementován]] aplikační server [[Zope]], [[instalátor]] a většina konfiguračních nástrojů Linuxové distribuce firmy [[Red Hat]].<br />
<br />
== Vlastnosti ==<br />
<br />
Python je dynamický interpretovaný jazyk. Někdy bývá zařazován mezi takzvané [[skriptovací jazyk]]y. Jeho možnosti jsou ale větší. Python byl navržen tak, aby umožňoval tvorbu rozsáhlých, plnohodnotných aplikací (včetně [[grafické uživatelské rozhraní|grafického uživatelského rozhraní]]).<br />
<br />
Python je hybridní jazyk (nebo také ''víceparadigmatický''), to znamená, že umožňuje při psaní programů používat nejen [[objektově orientované programování|objektově orientované]] paradigma, ale i [[procedurální programování|procedurální]] a v omezené míře i [[funkcionální programování|funkcionální]], podle toho komu co vyhovuje nebo se pro danou úlohu hodí nejlépe. Python má díky tomu vynikající vyjadřovací schopnosti. Kód programu je ve srovnání s jinými jazyky krátký a dobře čitelný.<br />
<br />
K význačným vlastnostem jazyka Python patří jeho jednoduchost z hlediska učení. Bývá dokonce považován za jeden z nejvhodnějších programovacích jazyků pro začátečníky. Tato skutečnost je dána tím, že jedním z jeho silných inspiračních zdrojů byl programovací jazyk [[ABC (programovací jazyk)|ABC]], který byl jako jazyk pro výuku a pro použití začátečníky přímo vytvořen. Python ale současně bourá zažitou představu, že ''jazyk vhodný pro výuku není vhodný pro praxi a naopak''. Podstatnou měrou k tomu přispívá čistota a jednoduchost [[syntax]]e, na kterou se při vývoji jazyka hodně dbá.<br />
<br />
Význačnou vlastností jazyka Python je produktivnost z hlediska rychlosti psaní programů. Týká se to jak nejjednodušších programů, tak aplikací velmi rozsáhlých. U jednoduchých programů se tato vlastnost projevuje především stručností zápisu. U velkých aplikací je produktivnost podpořena rysy, které se používají při [[programování ve velkém]], jako jsou například přirozená podpora [[prostor jmen|prostorů jmen]], používání [[výjimky|výjimek]], standardně dodávané prostředky pro psaní testů ([[unit testing]]) a dalšími. S vysokou produktivností souvisí dostupnost a snadná použitelnost široké škály knihovních modulů, umožňujících snadné řešení úloh z řady oblastí.<br />
<br />
Python se snadno vkládá do jiných aplikací (embedding), kde pak slouží jako jejich skriptovací jazyk. Tím lze aplikacím psaným v [[kompilovaný programovací jazyk|kompilovaných programovacích jazycích]] dodávat chybějící pružnost. Jiné aplikace nebo aplikační knihovny mohou naopak implementovat rozhraní, které umožní jejich použití v roli pythonovského modulu. Jinými slovy, pythonovský program je může využívat jako modul dostupný přímo z jazyka Python (tj. extending, viz sekce [[#Spolupráce s jinými aplikacemi|Spolupráce s jinými aplikacemi]]).<br />
<br />
[[Programování]] v Pythonu klade velký důraz na produktivitu práce [[programátor]]a. Myšlenky návrhu jazyka jsou shrnuty ve [[filosofie Pythonu|filosofii Pythonu]].<br />
<br />
== Spolupráce s jinými programovacími jazyky ==<br />
<br />
=== C a C++ ===<br />
Klasický Python je implementován v [[C (programovací jazyk)|jazyce C]] (označuje se někdy jako CPython). V něm probíhá další vývoj jazyka Python. Verze jazyka Python jsou zveřejňovány jak v podobě [[zdrojový kód|zdrojového kódu]], tak v podobě přeložených instalačních balíků pro různé cílové platformy.<br />
<br />
Dostupnost zdrojového kódu a vlastnosti [[C (programovací jazyk)|jazyka C]] umožňují zabudovat interpret jazyka Python do jiné aplikace psané v jazycích [[C (programovací jazyk)|C]] nebo [[C++]]. Takto zabudovaný [[interpret (software)|interpret]] jazyka Python pak představuje nástroj pro pružné rozšiřování [[funkčnost]]i výsledné aplikace ''zvenčí''. Existuje i projekt pro užší spolupráci s C++ nazvaný [[Boost.Python]]<br />
<br />
Z těchto důvodů — a s přihlédnutím k obecně vysokému výkonu aplikací psaných v jazyce C — je CPython nejpoužívanější implementací jazyka Python.<br />
<br />
=== Java ===<br />
<br />
Existuje implementace Pythonu v jazyce [[Java]], která se jmenuje [[Jython]]. Kód napsaný v Jythonu běží v [[Java virtual machine|JVM]] Javy a může používat všechny knihovny prostředí Java. V Javě lze naopak používat všechny knihovny napsané v Jythonu.<br />
<br />
Nevýhodou Jythonu je, že je několik verzí pozadu za implementací CPython. Například v době vypuštění verze CPython 2.4.3 (březen 2006) byla k dispozici teprve verze Jython 2.1. Řada význačných vlastností jazyka Python se přitom objevuje až od verze 2.2. Při používání Jython z javovských aplikací ale nemusí být otázka nedostupnosti novějších rysů tak palčivá.<br />
<br />
=== Prostředí .NET/Mono ===<br />
<br />
Pracuje se na implementaci Pythonu pro prostředí [[.NET]]/[[Mono (platforma)|Mono]]. Ta je známa pod jménem [[IronPython]].<br />
<br />
Za výhody lze považovat to, že se Python tímto stává jedním z jazyků pro platformu [[.NET]]. To současně znamená, že jej lze přímo využívat ve všech jazycích platformy [[.NET]]. Vzhledem k významu, jaký platformě [[.NET]] přikládá firma [[Microsoft]], lze očekávat, že význam implementace [[IronPython]] dále poroste. Vzhledem k vlastnostem jazyka Python lze také předpokládat, že se implementace [[IronPython]] stane dlouhodobě podporovanou.<br />
<br />
Nevýhodou implementace [[IronPython]] je zatím její nevyzrálost (v dubnu 2007 byla vydána verze 1.1). Negativně může být vnímána i skutečnost, že implementace [[IronPython]] je vyvíjena firmou [[Microsoft]] a dostupnost zdrojového kódu je svázána s přísnější licencí, než je tomu u implementace CPython.<br />
<br />
== Výkon ==<br />
<br />
Výkon aplikací napsaných v Pythonu je dobrý, protože výkonově kritické knihovny jsou implementovány v jazyce [[C (programovací jazyk)|C]], s kterým Python výborně spolupracuje. I samotný jazyk je na tom v porovnání s jinými interpretovanými jazyky dobře. Je např. 3 až 5 krát rychlejší než [[PHP]]. Pro Python navíc existuje snadno použitelná knihovna [[Psyco]], která [[transparence|transparentně]] [[optimalizace|optimalizuje]] kód Pythonu na výkon. Některé operace jsou pomocí Psyco urychleny až řádově<ref name="gp4psyco">http://shootout.alioth.debian.org/gp4sandbox/benchmark.php?test=all&lang=python&lang2=psyco</ref>.<br />
<br />
== Spolupráce s jinými aplikacemi ==<br />
<br />
Jak již bylo řečeno, Python se snadno vkládá do jiných aplikací, kde pak slouží jako jejich skriptovací jazyk. Lze ho najít např. v [[3D]] programu [[Blender]], v kancelářském balíku [[OpenOffice.org]], v [[textový editor|textovém editoru]] [[Vim]]. Lze jej alternativně použít jako skriptovací jazyk aplikace [[GIMP]], existují pythonovská aplikační rozhraní pro celou řadu dalších projektů — například pro [[ImageMagick]]. Varianta [[Jython]] (implementace Pythonu v [[Java|Javě]] — viz dále) jej umožňuje používat jako skriptovací jazyk všude tam, kde lze používat skripty v [[Java|Javě]] — například v editoru [[jEdit]].<br />
<br />
== Příklady ==<br />
Ukázkový program [[Hello world]] vypadá velmi jednoduše:<br />
<source lang="python"><br />
print "Hello, World!"<br />
</source><br />
<br />
Program pro výpočet obsahu kruhu ze zadaného poloměru by mohl vypadat například takto:<br />
<source lang="python"><br />
# toto je komentář a interpret jej ignoruje<br />
<br />
import math # zpřístupní modul s matematickými funkcemi a konstantami (sin, cos, pi atp.)<br />
<br />
vstup = raw_input("Zadejte polomer: ") # zobrazí výzvu a načte nějaký řetězec<br />
r = float(vstup) # převede řetězec na desetiné číslo<br />
S = r**2 * math.pi # umocní r na 2 a vynásobí jej pí<br />
print "Výsledek je:", S # zobrazí výsledek<br />
</source><br />
<br />
Výpočet faktoriálu v porovnání s jazykem C:<br />
<br />
{| width="100%"<br />
!width="50%"|Program v jazyce Python<br />
!width="50%"|Odpovídající program [[C (programovací jazyk)|v jazyce C]]<br />
|-<br />
|<br />
<!-- <source> nelze donutit ponechat prázdné řádky, proto <pre> --><br />
<pre><br />
def factorial(x):<br />
if x <= 0:<br />
return 1<br />
else:<br />
return x * factorial(x - 1)<br />
&nbsp;<br />
</pre><br />
|<br />
<pre><br />
int factorial(int x) {<br />
if (x <= 0)<br />
return 1;<br />
else<br />
return x * factorial(x - 1);<br />
}<br />
</pre><br />
|}<br />
<br />
== Charakteristika a použití jazyka ==<br />
<br />
=== Interaktivita ===<br />
Jazyk python umožňuje interaktivní programování v příkazovém interpretu. Řádkový vstup je v takovém případě typicky uvozen znaky <code>>>></code>. Je-li očekáván další řádek vstupu při neukončené syntaxi, řádek začíná znaky <code>...</code>. Uvede-li se pouze proměnná, vypíše se její hodnota, respektive reprezentace. Proměnná <code>_</code> obsahuje poslední takto použitou hodnotu.<br />
<source lang="python"><br />
>>> a = 1 + 2<br />
>>> a<br />
3<br />
>>> def f(c, n):<br />
... return c * n<br />
... <br />
>>> f(a, 5)<br />
15<br />
>>> f('x', a)<br />
'xxx'<br />
>>> len(_)<br />
3<br />
</source><br />
<br />
=== Proměnná je pojmenovaným odkazem na objekt ===<br />
Každá proměnná se chápe jako pojmenovaný odkaz na objekt. Přesněji řečeno, jméno proměnné je svázáno s jinak bezejmenným objektem. Příkaz přiřazení nezajistí okopírování hodnoty navázaného objektu. Provede se pouze svázání nového jména s původním objektem.<br />
<source lang="python"><br />
a = [1, 2]<br />
b = a<br />
</source><br />
Jména ''a'' i ''b'' jsou nyní svázána se stejným objektem. Pokud objekt může být měněn, pak se změna provedená přes jméno ''b'' projeví i při následném přístupu přes jméno ''a''. Příklad – zrušíme první prvek seznamu přes jméno ''b'' a zobrazíme obsah seznamu přes jméno ''a'':<br />
<source lang="python"><br />
del b[0]<br />
print a<br />
</source><br />
Zobrazí se<br />
<source lang="python"><br />
[2]<br />
</source><br />
<br />
=== Funkce se uchovává jako objekt ===<br />
Funkce se chová jako běžný objekt, dokud není zavolána.<br />
<source lang="python"><br />
def funkce():<br />
print 'Python'<br />
<br />
f = funkce<br />
p = [1, 2, 'test', f]<br />
p[3]()<br />
</source><br />
Lze s ní manipulovat, ukládat do proměnných, polí, objektů. Přesněji řečeno, manipuluje se s odkazem na objekt funkce. S objektem funkce je možné podle potřeby svázat i nové jméno.<br />
<br />
=== Do složených datových struktur se ukládají odkazy ===<br />
Do složených datových struktur se ukládají odkazy na objekty, nikoliv objekty samotné. Typ objektu není svázán s odkazem. Z toho vyplývá, že například do jednoho seznamu je možné současně uložit odkazy na objekty libovolného typu:<br />
<source lang="python"><br />
a = [1, 2, 'pokus', u"UNICODE", ('a tak', u'dále...'), {'4':44, 5:55}]<br />
</source><br />
<br />
=== Proměnné není nutné deklarovat ===<br />
V jiných jazycích se při deklaraci proměnné uvádí souvislost jména proměnné s typem ukládané hodnoty. V jazyce Python je proměnná jen pojmenovaným odkazem na nějaký objekt. Typ objektu je ale vázán na odkazovaný objekt, nikoliv na jméno. Potřeba deklarace proměnné ve významu určení souvisejícího typu dat tedy odpadá.<br />
<br />
Existence, či neexistence jména přímo nesouvisí s existencí či neexistencí hodnotového objektu. Význam deklarace proměnné ve smyslu popisu existence související hodnoty tedy rovněž odpadá. Proměnná, jako pojmenovaný odkaz, vzniká v okamžiku, kdy se jméno objeví na levé straně přiřazovacího příkazu. Jméno proměnné může být později svázáno dalším přiřazením s jiným objektem zcela jiného typu.<br />
<source lang="python"><br />
p = 1<br />
p2 = ""<br />
p3 = p<br />
</source><br />
<br />
=== Členské proměnné tříd mohou vznikat až za běhu ===<br />
Mezi běžné praktiky při vytváření objektu patří i založení používaných členských proměnných. Tento obrat se ale v jazyce Python chápe jako užitečná technika, nikoliv jako nutnost. Členské proměnné (čili proměnné uvnitř objektu) mohou vznikat až za běhu.<br />
<source lang="python"><br />
class pokus: pass #prázdná třída<br />
<br />
obj = pokus()<br />
obj.field1 = 33<br />
obj.field2 = 'str'<br />
</source><br />
<br />
Existují ale techniky, které umožňují prostředky jazyka zamezit možnost dodatečného přidávání členských proměnných.<br />
<br />
=== Typy nelze libovolně míchat ===<br />
Při operacích nad objekty se provádí silná typová kontrola. Narozdíl od kompilovaných jazyků se ale provádí až za běhu aplikace.<br />
<br />
=== Ortogonalita operátorů ===<br />
Při vývoji jazyka se kladl a klade důraz na to, aby operátory nebyly vázány na specifické datové typy (pokud je to možné). Přípustnost použití operátoru pro konkrétní operandy se navíc vyhodnocuje až za běhu. Prakticky to znamená, že například následující funkci, která v těle používá operátor ''plus'', je možné předat jednak číselné a jednak řetězcové argumenty:<br />
<source lang="python"><br />
def dohromady(a, b):<br />
return a + b<br />
<br />
dohromady(2, 3) # vrátí 5<br />
dohromady("ahoj", ' nazdar') # vrátí 'ahoj nazdar'<br />
</source><br />
<br />
Nejde jen o zajímavou hříčku. Běžné pythonovské funkce tím získávají vlastnosti, kterými se zabývá [[generické programování]].<br />
<br />
== Python 3000 ==<br />
Autor Pythonu si uvědomil, že se při návrhu jazyka dopustil určitých chyb a rozhodl se je napravit v nové verzi 3, označované jako Python 3000 (Py3k)<ref name="Artima_Python3000StatusUpdate">http://www.artima.com/weblogs/viewpost.jsp?thread=208549</ref><ref name="PEP3000">http://www.python.org/dev/peps/pep-3000/</ref>. Ta nebude zpětně kompatibilní, proto v následující verzi řady 2 (2.6) budou použita varování při použití syntaxe, která nebude ve verzi 3 platná. Jednou z nejviditelnějších změn je převedení příkazu <code>print</code> na funkci. Konstrukce <code>print "hello"</code> bude neplatná, správný zápis bude <code>print("hello")</code>. Dalším příkladem porušení zpětné kompatibility je zavedení nové syntaxe pro oktalová čísla. Ta se doposud zapisují s nulou na začátku, např. <code>0777</code>. Tento formát se stane neplatným a nový bude analogický se zápisem hexadecimálních čísel (<code>0x1ff</code>). Správný zápis bude tedy <code>0o777</code>. Podobně bude možné zapisovat i čísla v binární soustavě.<br />
<pre><br />
>>> 012<br />
File "<stdin>", line 1<br />
012<br />
^<br />
SyntaxError: invalid token<br />
>>> 10 == 0xa == 0o12 == 0b1010<br />
True<br />
</pre><br />
<br />
Další důležitou změnou je chování operátoru dělení <code>/</code> při použití s celými čísly:<br />
<source lang="python"><br />
# python 2.x<br />
>>> 5 / 2<br />
2<br />
>>> 5 / 2 == 5 // 2<br />
True<br />
<br />
# python 3.x<br />
>>> 5 / 2<br />
2.5<br />
>>> 5 // 2<br />
2<br />
</source><br />
Řetězce se změní na typ unicode (<code>"hruška"</code> bude ekvivalentní s dnešní <code>u"hruška"</code>). Pro osmibitové řetězce bude zaveden nový typ <code>bytes</code> (např. <code>b"hruska"</code>). Názvy proměnných už nebudou omezena na [[ASCII]] sadu a budou také v unicode. Funkce <code>raw_input</code> bude přejmenována na <code>input</code> (současný <code>input()</code> zmizí), také iterativní varianty funkcí a metod nahradí svoje předchůdce, které vracely seznamy, takže například funkce <code>range</code> bude v podstatě dnešní <code>xrange</code>, analogicky tomu bude s <code>file.readlines()</code>/<code>file.xreadlines()</code>. Podobně další funkce, vracející list, budou vracet iterátor - např. <code>dict.keys()</code>:<br />
<source lang="python"><br />
# python 2.x<br />
>>> d = { 'a': 1, 'b': 7 }<br />
>>> d.keys()<br />
['a', 'b']<br />
<br />
# python 3.x<br />
>>> d.keys()<br />
<dict_keys object at 0xb7c08540&><br />
>>> [ x for x in d.keys() ] # nebo list(d.keys())<br />
['a', 'b']<br />
</source><br />
Zmizí <code>dict.has_key()</code>.<br />
Zápis množin se zjednoduší, <code>set([1, 2])</code> bude možné napsat <code>{1, 2}</code>. Dále například přibyde řetězcům nová metoda <code>format</code> jako alternativa ke současnému formátování řetězců procentovou notací.<br />
<source lang="python"><br />
"ID: %s (%s, %s)" % ("0s9d8f", 0, 3)<br />
# či<br />
"ID: %(id)s (%(x)s, %(y)s)" % ('x': 0, 'y': 3, 'id': "0s9d8f")<br />
<br />
# bude možné psát jako<br />
<br />
"ID: {0} ({1}, {2})".format("0s9d8f", 0, 3)<br />
# a<br />
"ID: {id} ({x}, {y})".format(x=0, y=3, id="0s9d8f")<br />
</source><br />
<br />
Vydání první stabilní verze Pythonu 3 je plánováno na léto roku [[2008]].<br />
<br />
== Odkazy ==<br />
<br />
<br />
<br />
=== Externí odkazy ===<br />
<br />
* [http://www.python.org/ www.python.org] – Domovská stránka projektu (anglicky, [http://www.python.org/doc/NonEnglish.html#czech některé česky])<br />
* [http://www.py.cz/ www.py.cz] – PyCZ, komunitní český web<br />
* [http://www.boost.org/libs/python/doc/index.html Boost.Python] — C++ knihovna pro spolupráci mezi C++ a Pythonem<br />
'''Dokumentace, učebnice:'''<br />
* [http://docs.python.org/tut/tut.html Originální tutorial] – anglicky<br />
* [http://docs.python.org/doc Originální dokumentace] – anglicky<br />
* [http://www.py.cz/UcebniceJazykaPython Učebnice jazyka Python (aneb Létající cirkus)] – český překlad<br />
* [http://www.root.cz/serialy/letajici-cirkus/ Létající cirkus], [http://www.root.cz/zpravicky/serial-letajici-cirkus-v-pdf/ PDF] – Seriál na ROOT.CZ, 21 dílů,<br />
* [http://www.freenetpages.co.uk/hp/alan.gauld/czech3/index.html Jak se naučit programovat] (překlad [http://www.freenetpages.co.uk/hp/alan.gauld/ Learning to Program]) [http://www.skil.cz/python/index.html ''aktuální pracovní verze'']<br />
* [http://wraith.iglu.cz/python Python – programování zábavou] – kvalitní český web o Pythonu, základy, ukázky, praxe<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
[[Category:Programování]]</div>Megihttp://wiki.wowresource.eu/index.php?title=Python&diff=138Python2007-11-28T19:27:01Z<p>Megi: </p>
<hr />
<div>'''Python''' je [[interpret (software)|interpretovaný]] [[objektově orientované programování|objektově orientovaný]] [[programovací jazyk]], který v roce [[1990]] navrhl [[Guido van Rossum]]. Python je vyvíjen jako [[Open source software|open source]] projekt, který zdarma nabízí instalační balíky pro většinu běžných [[platforma|platforem]] ([[Unix]], [[Microsoft Windows|Windows]], [[Mac OS]]); ve většině [[Linuxová distribuce|distribucí]] systému [[Linux]] je Python součástí základní instalace.<br />
<br />
Mimo jiné je v něm [[implementace|implementován]] aplikační server [[Zope]], [[instalátor]] a většina konfiguračních nástrojů Linuxové distribuce firmy [[Red Hat]].<br />
<br />
== Vlastnosti ==<br />
<br />
Python je dynamický interpretovaný jazyk. Někdy bývá zařazován mezi takzvané [[skriptovací jazyk]]y. Jeho možnosti jsou ale větší. Python byl navržen tak, aby umožňoval tvorbu rozsáhlých, plnohodnotných aplikací (včetně [[grafické uživatelské rozhraní|grafického uživatelského rozhraní]]).<br />
<br />
Python je hybridní jazyk (nebo také ''víceparadigmatický''), to znamená, že umožňuje při psaní programů používat nejen [[objektově orientované programování|objektově orientované]] paradigma, ale i [[procedurální programování|procedurální]] a v omezené míře i [[funkcionální programování|funkcionální]], podle toho komu co vyhovuje nebo se pro danou úlohu hodí nejlépe. Python má díky tomu vynikající vyjadřovací schopnosti. Kód programu je ve srovnání s jinými jazyky krátký a dobře čitelný.<br />
<br />
K význačným vlastnostem jazyka Python patří jeho jednoduchost z hlediska učení. Bývá dokonce považován za jeden z nejvhodnějších programovacích jazyků pro začátečníky. Tato skutečnost je dána tím, že jedním z jeho silných inspiračních zdrojů byl programovací jazyk [[ABC (programovací jazyk)|ABC]], který byl jako jazyk pro výuku a pro použití začátečníky přímo vytvořen. Python ale současně bourá zažitou představu, že ''jazyk vhodný pro výuku není vhodný pro praxi a naopak''. Podstatnou měrou k tomu přispívá čistota a jednoduchost [[syntax]]e, na kterou se při vývoji jazyka hodně dbá.<br />
<br />
Význačnou vlastností jazyka Python je produktivnost z hlediska rychlosti psaní programů. Týká se to jak nejjednodušších programů, tak aplikací velmi rozsáhlých. U jednoduchých programů se tato vlastnost projevuje především stručností zápisu. U velkých aplikací je produktivnost podpořena rysy, které se používají při [[programování ve velkém]], jako jsou například přirozená podpora [[prostor jmen|prostorů jmen]], používání [[výjimky|výjimek]], standardně dodávané prostředky pro psaní testů ([[unit testing]]) a dalšími. S vysokou produktivností souvisí dostupnost a snadná použitelnost široké škály knihovních modulů, umožňujících snadné řešení úloh z řady oblastí.<br />
<br />
Python se snadno vkládá do jiných aplikací (embedding), kde pak slouží jako jejich skriptovací jazyk. Tím lze aplikacím psaným v [[kompilovaný programovací jazyk|kompilovaných programovacích jazycích]] dodávat chybějící pružnost. Jiné aplikace nebo aplikační knihovny mohou naopak implementovat rozhraní, které umožní jejich použití v roli pythonovského modulu. Jinými slovy, pythonovský program je může využívat jako modul dostupný přímo z jazyka Python (tj. extending, viz sekce [[#Spolupráce s jinými aplikacemi|Spolupráce s jinými aplikacemi]]).<br />
<br />
[[Programování]] v Pythonu klade velký důraz na produktivitu práce [[programátor]]a. Myšlenky návrhu jazyka jsou shrnuty ve [[filosofie Pythonu|filosofii Pythonu]].<br />
<br />
== Spolupráce s jinými programovacími jazyky ==<br />
<br />
=== C a C++ ===<br />
Klasický Python je implementován v [[C (programovací jazyk)|jazyce C]] (označuje se někdy jako CPython). V něm probíhá další vývoj jazyka Python. Verze jazyka Python jsou zveřejňovány jak v podobě [[zdrojový kód|zdrojového kódu]], tak v podobě přeložených instalačních balíků pro různé cílové platformy.<br />
<br />
Dostupnost zdrojového kódu a vlastnosti [[C (programovací jazyk)|jazyka C]] umožňují zabudovat interpret jazyka Python do jiné aplikace psané v jazycích [[C (programovací jazyk)|C]] nebo [[C++]]. Takto zabudovaný [[interpret (software)|interpret]] jazyka Python pak představuje nástroj pro pružné rozšiřování [[funkčnost]]i výsledné aplikace ''zvenčí''. Existuje i projekt pro užší spolupráci s C++ nazvaný [[Boost.Python]]<br />
<br />
Z těchto důvodů — a s přihlédnutím k obecně vysokému výkonu aplikací psaných v jazyce C — je CPython nejpoužívanější implementací jazyka Python.<br />
<br />
=== Java ===<br />
<br />
Existuje implementace Pythonu v jazyce [[Java]], která se jmenuje [[Jython]]. Kód napsaný v Jythonu běží v [[Java virtual machine|JVM]] Javy a může používat všechny knihovny prostředí Java. V Javě lze naopak používat všechny knihovny napsané v Jythonu.<br />
<br />
Nevýhodou Jythonu je, že je několik verzí pozadu za implementací CPython. Například v době vypuštění verze CPython 2.4.3 (březen 2006) byla k dispozici teprve verze Jython 2.1. Řada význačných vlastností jazyka Python se přitom objevuje až od verze 2.2. Při používání Jython z javovských aplikací ale nemusí být otázka nedostupnosti novějších rysů tak palčivá.<br />
<br />
=== Prostředí .NET/Mono ===<br />
<br />
Pracuje se na implementaci Pythonu pro prostředí [[.NET]]/[[Mono (platforma)|Mono]]. Ta je známa pod jménem [[IronPython]].<br />
<br />
Za výhody lze považovat to, že se Python tímto stává jedním z jazyků pro platformu [[.NET]]. To současně znamená, že jej lze přímo využívat ve všech jazycích platformy [[.NET]]. Vzhledem k významu, jaký platformě [[.NET]] přikládá firma [[Microsoft]], lze očekávat, že význam implementace [[IronPython]] dále poroste. Vzhledem k vlastnostem jazyka Python lze také předpokládat, že se implementace [[IronPython]] stane dlouhodobě podporovanou.<br />
<br />
Nevýhodou implementace [[IronPython]] je zatím její nevyzrálost (v dubnu 2007 byla vydána verze 1.1). Negativně může být vnímána i skutečnost, že implementace [[IronPython]] je vyvíjena firmou [[Microsoft]] a dostupnost zdrojového kódu je svázána s přísnější licencí, než je tomu u implementace CPython.<br />
<br />
== Výkon ==<br />
<br />
Výkon aplikací napsaných v Pythonu je dobrý, protože výkonově kritické knihovny jsou implementovány v jazyce [[C (programovací jazyk)|C]], s kterým Python výborně spolupracuje. I samotný jazyk je na tom v porovnání s jinými interpretovanými jazyky dobře. Je např. 3 až 5 krát rychlejší než [[PHP]]. Pro Python navíc existuje snadno použitelná knihovna [[Psyco]], která [[transparence|transparentně]] [[optimalizace|optimalizuje]] kód Pythonu na výkon. Některé operace jsou pomocí Psyco urychleny až řádově<ref name="gp4psyco">http://shootout.alioth.debian.org/gp4sandbox/benchmark.php?test=all&lang=python&lang2=psyco</ref>.<br />
<br />
== Spolupráce s jinými aplikacemi ==<br />
<br />
Jak již bylo řečeno, Python se snadno vkládá do jiných aplikací, kde pak slouží jako jejich skriptovací jazyk. Lze ho najít např. v [[3D]] programu [[Blender]], v kancelářském balíku [[OpenOffice.org]], v [[textový editor|textovém editoru]] [[Vim]]. Lze jej alternativně použít jako skriptovací jazyk aplikace [[GIMP]], existují pythonovská aplikační rozhraní pro celou řadu dalších projektů — například pro [[ImageMagick]]. Varianta [[Jython]] (implementace Pythonu v [[Java|Javě]] — viz dále) jej umožňuje používat jako skriptovací jazyk všude tam, kde lze používat skripty v [[Java|Javě]] — například v editoru [[jEdit]].<br />
<br />
== Příklady ==<br />
Ukázkový program [[Hello world]] vypadá velmi jednoduše:<br />
<source lang="python"><br />
print "Hello, World!"<br />
</source><br />
<br />
Program pro výpočet obsahu kruhu ze zadaného poloměru by mohl vypadat například takto:<br />
<source lang="python"><br />
# toto je komentář a interpret jej ignoruje<br />
<br />
import math # zpřístupní modul s matematickými funkcemi a konstantami (sin, cos, pi atp.)<br />
<br />
vstup = raw_input("Zadejte polomer: ") # zobrazí výzvu a načte nějaký řetězec<br />
r = float(vstup) # převede řetězec na desetiné číslo<br />
S = r**2 * math.pi # umocní r na 2 a vynásobí jej pí<br />
print "Výsledek je:", S # zobrazí výsledek<br />
</source><br />
<br />
Výpočet faktoriálu v porovnání s jazykem C:<br />
<br />
{| width="100%"<br />
!width="50%"|Program v jazyce Python<br />
!width="50%"|Odpovídající program [[C (programovací jazyk)|v jazyce C]]<br />
|-<br />
|<br />
<!-- <source> nelze donutit ponechat prázdné řádky, proto <pre> --><br />
<pre><br />
def factorial(x):<br />
if x <= 0:<br />
return 1<br />
else:<br />
return x * factorial(x - 1)<br />
&nbsp;<br />
</pre><br />
|<br />
<pre><br />
int factorial(int x) {<br />
if (x <= 0)<br />
return 1;<br />
else<br />
return x * factorial(x - 1);<br />
}<br />
</pre><br />
|}<br />
<br />
== Charakteristika a použití jazyka ==<br />
<br />
=== Interaktivita ===<br />
Jazyk python umožňuje interaktivní programování v příkazovém interpretu. Řádkový vstup je v takovém případě typicky uvozen znaky <code>>>></code>. Je-li očekáván další řádek vstupu při neukončené syntaxi, řádek začíná znaky <code>...</code>. Uvede-li se pouze proměnná, vypíše se její hodnota, respektive reprezentace. Proměnná <code>_</code> obsahuje poslední takto použitou hodnotu.<br />
<source lang="python"><br />
>>> a = 1 + 2<br />
>>> a<br />
3<br />
>>> def f(c, n):<br />
... return c * n<br />
... <br />
>>> f(a, 5)<br />
15<br />
>>> f('x', a)<br />
'xxx'<br />
>>> len(_)<br />
3<br />
</source><br />
<br />
=== Proměnná je pojmenovaným odkazem na objekt ===<br />
Každá proměnná se chápe jako pojmenovaný odkaz na objekt. Přesněji řečeno, jméno proměnné je svázáno s jinak bezejmenným objektem. Příkaz přiřazení nezajistí okopírování hodnoty navázaného objektu. Provede se pouze svázání nového jména s původním objektem.<br />
<source lang="python"><br />
a = [1, 2]<br />
b = a<br />
</source><br />
Jména ''a'' i ''b'' jsou nyní svázána se stejným objektem. Pokud objekt může být měněn, pak se změna provedená přes jméno ''b'' projeví i při následném přístupu přes jméno ''a''. Příklad – zrušíme první prvek seznamu přes jméno ''b'' a zobrazíme obsah seznamu přes jméno ''a'':<br />
<source lang="python"><br />
del b[0]<br />
print a<br />
</source><br />
Zobrazí se<br />
<source lang="python"><br />
[2]<br />
</source><br />
<br />
=== Funkce se uchovává jako objekt ===<br />
Funkce se chová jako běžný objekt, dokud není zavolána.<br />
<source lang="python"><br />
def funkce():<br />
print 'Python'<br />
<br />
f = funkce<br />
p = [1, 2, 'test', f]<br />
p[3]()<br />
</source><br />
Lze s ní manipulovat, ukládat do proměnných, polí, objektů. Přesněji řečeno, manipuluje se s odkazem na objekt funkce. S objektem funkce je možné podle potřeby svázat i nové jméno.<br />
<br />
=== Do složených datových struktur se ukládají odkazy ===<br />
Do složených datových struktur se ukládají odkazy na objekty, nikoliv objekty samotné. Typ objektu není svázán s odkazem. Z toho vyplývá, že například do jednoho seznamu je možné současně uložit odkazy na objekty libovolného typu:<br />
<source lang="python"><br />
a = [1, 2, 'pokus', u"UNICODE", ('a tak', u'dále...'), {'4':44, 5:55}]<br />
</source><br />
<br />
=== Proměnné není nutné deklarovat ===<br />
V jiných jazycích se při deklaraci proměnné uvádí souvislost jména proměnné s typem ukládané hodnoty. V jazyce Python je proměnná jen pojmenovaným odkazem na nějaký objekt. Typ objektu je ale vázán na odkazovaný objekt, nikoliv na jméno. Potřeba deklarace proměnné ve významu určení souvisejícího typu dat tedy odpadá.<br />
<br />
Existence, či neexistence jména přímo nesouvisí s existencí či neexistencí hodnotového objektu. Význam deklarace proměnné ve smyslu popisu existence související hodnoty tedy rovněž odpadá. Proměnná, jako pojmenovaný odkaz, vzniká v okamžiku, kdy se jméno objeví na levé straně přiřazovacího příkazu. Jméno proměnné může být později svázáno dalším přiřazením s jiným objektem zcela jiného typu.<br />
<source lang="python"><br />
p = 1<br />
p2 = ""<br />
p3 = p<br />
</source><br />
<br />
=== Členské proměnné tříd mohou vznikat až za běhu ===<br />
Mezi běžné praktiky při vytváření objektu patří i založení používaných členských proměnných. Tento obrat se ale v jazyce Python chápe jako užitečná technika, nikoliv jako nutnost. Členské proměnné (čili proměnné uvnitř objektu) mohou vznikat až za běhu.<br />
<source lang="python"><br />
class pokus: pass #prázdná třída<br />
<br />
obj = pokus()<br />
obj.field1 = 33<br />
obj.field2 = 'str'<br />
</source><br />
<br />
Existují ale techniky, které umožňují prostředky jazyka zamezit možnost dodatečného přidávání členských proměnných.<br />
<br />
=== Typy nelze libovolně míchat ===<br />
Při operacích nad objekty se provádí silná typová kontrola. Narozdíl od kompilovaných jazyků se ale provádí až za běhu aplikace.<br />
<br />
=== Ortogonalita operátorů ===<br />
Při vývoji jazyka se kladl a klade důraz na to, aby operátory nebyly vázány na specifické datové typy (pokud je to možné). Přípustnost použití operátoru pro konkrétní operandy se navíc vyhodnocuje až za běhu. Prakticky to znamená, že například následující funkci, která v těle používá operátor ''plus'', je možné předat jednak číselné a jednak řetězcové argumenty:<br />
<source lang="python"><br />
def dohromady(a, b):<br />
return a + b<br />
<br />
dohromady(2, 3) # vrátí 5<br />
dohromady("ahoj", ' nazdar') # vrátí 'ahoj nazdar'<br />
</source><br />
<br />
Nejde jen o zajímavou hříčku. Běžné pythonovské funkce tím získávají vlastnosti, kterými se zabývá [[generické programování]].<br />
<br />
== Python 3000 ==<br />
Autor Pythonu si uvědomil, že se při návrhu jazyka dopustil určitých chyb a rozhodl se je napravit v nové verzi 3, označované jako Python 3000 (Py3k)<ref name="Artima_Python3000StatusUpdate">http://www.artima.com/weblogs/viewpost.jsp?thread=208549</ref><ref name="PEP3000">http://www.python.org/dev/peps/pep-3000/</ref>. Ta nebude zpětně kompatibilní, proto v následující verzi řady 2 (2.6) budou použita varování při použití syntaxe, která nebude ve verzi 3 platná. Jednou z nejviditelnějších změn je převedení příkazu <code>print</code> na funkci. Konstrukce <code>print "hello"</code> bude neplatná, správný zápis bude <code>print("hello")</code>. Dalším příkladem porušení zpětné kompatibility je zavedení nové syntaxe pro oktalová čísla. Ta se doposud zapisují s nulou na začátku, např. <code>0777</code>. Tento formát se stane neplatným a nový bude analogický se zápisem hexadecimálních čísel (<code>0x1ff</code>). Správný zápis bude tedy <code>0o777</code>. Podobně bude možné zapisovat i čísla v binární soustavě.<br />
<pre><br />
>>> 012<br />
File "<stdin>", line 1<br />
012<br />
^<br />
SyntaxError: invalid token<br />
>>> 10 == 0xa == 0o12 == 0b1010<br />
True<br />
</pre><br />
<br />
Další důležitou změnou je chování operátoru dělení <code>/</code> při použití s celými čísly:<br />
<source lang="python"><br />
# python 2.x<br />
>>> 5 / 2<br />
2<br />
>>> 5 / 2 == 5 // 2<br />
True<br />
<br />
# python 3.x<br />
>>> 5 / 2<br />
2.5<br />
>>> 5 // 2<br />
2<br />
</source><br />
Řetězce se změní na typ unicode (<code>"hruška"</code> bude ekvivalentní s dnešní <code>u"hruška"</code>). Pro osmibitové řetězce bude zaveden nový typ <code>bytes</code> (např. <code>b"hruska"</code>). Názvy proměnných už nebudou omezena na [[ASCII]] sadu a budou také v unicode. Funkce <code>raw_input</code> bude přejmenována na <code>input</code> (současný <code>input()</code> zmizí), také iterativní varianty funkcí a metod nahradí svoje předchůdce, které vracely seznamy, takže například funkce <code>range</code> bude v podstatě dnešní <code>xrange</code>, analogicky tomu bude s <code>file.readlines()</code>/<code>file.xreadlines()</code>. Podobně další funkce, vracející list, budou vracet iterátor - např. <code>dict.keys()</code>:<br />
<source lang="python"><br />
# python 2.x<br />
>>> d = { 'a': 1, 'b': 7 }<br />
>>> d.keys()<br />
['a', 'b']<br />
<br />
# python 3.x<br />
>>> d.keys()<br />
<dict_keys object at 0xb7c08540&><br />
>>> [ x for x in d.keys() ] # nebo list(d.keys())<br />
['a', 'b']<br />
</source><br />
Zmizí <code>dict.has_key()</code>.<br />
Zápis množin se zjednoduší, <code>set([1, 2])</code> bude možné napsat <code>{1, 2}</code>. Dále například přibyde řetězcům nová metoda <code>format</code> jako alternativa ke současnému formátování řetězců procentovou notací.<br />
<source lang="python"><br />
"ID: %s (%s, %s)" % ("0s9d8f", 0, 3)<br />
# či<br />
"ID: %(id)s (%(x)s, %(y)s)" % ('x': 0, 'y': 3, 'id': "0s9d8f")<br />
<br />
# bude možné psát jako<br />
<br />
"ID: {0} ({1}, {2})".format("0s9d8f", 0, 3)<br />
# a<br />
"ID: {id} ({x}, {y})".format(x=0, y=3, id="0s9d8f")<br />
</source><br />
<br />
Vydání první stabilní verze Pythonu 3 je plánováno na léto roku [[2008]].<br />
<br />
== Odkazy ==<br />
<br />
<br />
<br />
=== Externí odkazy ===<br />
<br />
{{Wikibooks|Programming:Python}}<br />
* [http://www.python.org/ www.python.org] – Domovská stránka projektu (anglicky, [http://www.python.org/doc/NonEnglish.html#czech některé česky])<br />
* [http://www.py.cz/ www.py.cz] – PyCZ, komunitní český web<br />
* [http://www.boost.org/libs/python/doc/index.html Boost.Python] — C++ knihovna pro spolupráci mezi C++ a Pythonem<br />
'''Dokumentace, učebnice:'''<br />
* [http://docs.python.org/tut/tut.html Originální tutorial] – anglicky<br />
* [http://docs.python.org/doc Originální dokumentace] – anglicky<br />
* [http://www.py.cz/UcebniceJazykaPython Učebnice jazyka Python (aneb Létající cirkus)] – český překlad<br />
* [http://www.root.cz/serialy/letajici-cirkus/ Létající cirkus], [http://www.root.cz/zpravicky/serial-letajici-cirkus-v-pdf/ PDF] – Seriál na ROOT.CZ, 21 dílů,<br />
* [http://www.freenetpages.co.uk/hp/alan.gauld/czech3/index.html Jak se naučit programovat] (překlad [http://www.freenetpages.co.uk/hp/alan.gauld/ Learning to Program]) [http://www.skil.cz/python/index.html ''aktuální pracovní verze'']<br />
* [http://wraith.iglu.cz/python Python – programování zábavou] – kvalitní český web o Pythonu, základy, ukázky, praxe<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
[[Category:Programování]]</div>Megihttp://wiki.wowresource.eu/index.php?title=Python&diff=137Python2007-11-28T19:25:28Z<p>Megi: </p>
<hr />
<div>'''Python''' je [[interpret (software)|interpretovaný]] [[objektově orientované programování|objektově orientovaný]] [[programovací jazyk]], který v roce [[1990]] navrhl [[Guido van Rossum]]. Python je vyvíjen jako [[Open source software|open source]] projekt, který zdarma nabízí instalační balíky pro většinu běžných [[platforma|platforem]] ([[Unix]], [[Microsoft Windows|Windows]], [[Mac OS]]); ve většině [[Linuxová distribuce|distribucí]] systému [[Linux]] je Python součástí základní instalace.<br />
<br />
Mimo jiné je v něm [[implementace|implementován]] aplikační server [[Zope]], [[instalátor]] a většina konfiguračních nástrojů Linuxové distribuce firmy [[Red Hat]].<br />
<br />
== Vlastnosti ==<br />
<br />
Python je dynamický interpretovaný jazyk. Někdy bývá zařazován mezi takzvané [[skriptovací jazyk]]y. Jeho možnosti jsou ale větší. Python byl navržen tak, aby umožňoval tvorbu rozsáhlých, plnohodnotných aplikací (včetně [[grafické uživatelské rozhraní|grafického uživatelského rozhraní]]).<br />
<br />
Python je hybridní jazyk (nebo také ''víceparadigmatický''), to znamená, že umožňuje při psaní programů používat nejen [[objektově orientované programování|objektově orientované]] paradigma, ale i [[procedurální programování|procedurální]] a v omezené míře i [[funkcionální programování|funkcionální]], podle toho komu co vyhovuje nebo se pro danou úlohu hodí nejlépe. Python má díky tomu vynikající vyjadřovací schopnosti. Kód programu je ve srovnání s jinými jazyky krátký a dobře čitelný.<br />
<br />
K význačným vlastnostem jazyka Python patří jeho jednoduchost z hlediska učení. Bývá dokonce považován za jeden z nejvhodnějších programovacích jazyků pro začátečníky. Tato skutečnost je dána tím, že jedním z jeho silných inspiračních zdrojů byl programovací jazyk [[ABC (programovací jazyk)|ABC]], který byl jako jazyk pro výuku a pro použití začátečníky přímo vytvořen. Python ale současně bourá zažitou představu, že ''jazyk vhodný pro výuku není vhodný pro praxi a naopak''. Podstatnou měrou k tomu přispívá čistota a jednoduchost [[syntax]]e, na kterou se při vývoji jazyka hodně dbá.<br />
<br />
Význačnou vlastností jazyka Python je produktivnost z hlediska rychlosti psaní programů. Týká se to jak nejjednodušších programů, tak aplikací velmi rozsáhlých. U jednoduchých programů se tato vlastnost projevuje především stručností zápisu. U velkých aplikací je produktivnost podpořena rysy, které se používají při [[programování ve velkém]], jako jsou například přirozená podpora [[prostor jmen|prostorů jmen]], používání [[výjimky|výjimek]], standardně dodávané prostředky pro psaní testů ([[unit testing]]) a dalšími. S vysokou produktivností souvisí dostupnost a snadná použitelnost široké škály knihovních modulů, umožňujících snadné řešení úloh z řady oblastí.<br />
<br />
Python se snadno vkládá do jiných aplikací (embedding), kde pak slouží jako jejich skriptovací jazyk. Tím lze aplikacím psaným v [[kompilovaný programovací jazyk|kompilovaných programovacích jazycích]] dodávat chybějící pružnost. Jiné aplikace nebo aplikační knihovny mohou naopak implementovat rozhraní, které umožní jejich použití v roli pythonovského modulu. Jinými slovy, pythonovský program je může využívat jako modul dostupný přímo z jazyka Python (tj. extending, viz sekce [[#Spolupráce s jinými aplikacemi|Spolupráce s jinými aplikacemi]]).<br />
<br />
[[Programování]] v Pythonu klade velký důraz na produktivitu práce [[programátor]]a. Myšlenky návrhu jazyka jsou shrnuty ve [[filosofie Pythonu|filosofii Pythonu]].<br />
<br />
== Spolupráce s jinými programovacími jazyky ==<br />
<br />
=== C a C++ ===<br />
Klasický Python je implementován v [[C (programovací jazyk)|jazyce C]] (označuje se někdy jako CPython). V něm probíhá další vývoj jazyka Python. Verze jazyka Python jsou zveřejňovány jak v podobě [[zdrojový kód|zdrojového kódu]], tak v podobě přeložených instalačních balíků pro různé cílové platformy.<br />
<br />
Dostupnost zdrojového kódu a vlastnosti [[C (programovací jazyk)|jazyka C]] umožňují zabudovat interpret jazyka Python do jiné aplikace psané v jazycích [[C (programovací jazyk)|C]] nebo [[C++]]. Takto zabudovaný [[interpret (software)|interpret]] jazyka Python pak představuje nástroj pro pružné rozšiřování [[funkčnost]]i výsledné aplikace ''zvenčí''. Existuje i projekt pro užší spolupráci s C++ nazvaný [[Boost.Python]]<br />
<br />
Z těchto důvodů — a s přihlédnutím k obecně vysokému výkonu aplikací psaných v jazyce C — je CPython nejpoužívanější implementací jazyka Python.<br />
<br />
=== Java ===<br />
<br />
Existuje implementace Pythonu v jazyce [[Java]], která se jmenuje [[Jython]]. Kód napsaný v Jythonu běží v [[Java virtual machine|JVM]] Javy a může používat všechny knihovny prostředí Java. V Javě lze naopak používat všechny knihovny napsané v Jythonu.<br />
<br />
Nevýhodou Jythonu je, že je několik verzí pozadu za implementací CPython. Například v době vypuštění verze CPython 2.4.3 (březen 2006) byla k dispozici teprve verze Jython 2.1. Řada význačných vlastností jazyka Python se přitom objevuje až od verze 2.2. Při používání Jython z javovských aplikací ale nemusí být otázka nedostupnosti novějších rysů tak palčivá.<br />
<br />
=== Prostředí .NET/Mono ===<br />
<br />
Pracuje se na implementaci Pythonu pro prostředí [[.NET]]/[[Mono (platforma)|Mono]]. Ta je známa pod jménem [[IronPython]].<br />
<br />
Za výhody lze považovat to, že se Python tímto stává jedním z jazyků pro platformu [[.NET]]. To současně znamená, že jej lze přímo využívat ve všech jazycích platformy [[.NET]]. Vzhledem k významu, jaký platformě [[.NET]] přikládá firma [[Microsoft]], lze očekávat, že význam implementace [[IronPython]] dále poroste. Vzhledem k vlastnostem jazyka Python lze také předpokládat, že se implementace [[IronPython]] stane dlouhodobě podporovanou.<br />
<br />
Nevýhodou implementace [[IronPython]] je zatím její nevyzrálost (v dubnu 2007 byla vydána verze 1.1). Negativně může být vnímána i skutečnost, že implementace [[IronPython]] je vyvíjena firmou [[Microsoft]] a dostupnost zdrojového kódu je svázána s přísnější licencí, než je tomu u implementace CPython.<br />
<br />
== Výkon ==<br />
<br />
Výkon aplikací napsaných v Pythonu je dobrý, protože výkonově kritické knihovny jsou implementovány v jazyce [[C (programovací jazyk)|C]], s kterým Python výborně spolupracuje. I samotný jazyk je na tom v porovnání s jinými interpretovanými jazyky dobře. Je např. 3 až 5 krát rychlejší než [[PHP]]. Pro Python navíc existuje snadno použitelná knihovna [[Psyco]], která [[transparence|transparentně]] [[optimalizace|optimalizuje]] kód Pythonu na výkon. Některé operace jsou pomocí Psyco urychleny až řádově<ref name="gp4psyco">http://shootout.alioth.debian.org/gp4sandbox/benchmark.php?test=all&lang=python&lang2=psyco</ref>.<br />
<br />
== Spolupráce s jinými aplikacemi ==<br />
<br />
Jak již bylo řečeno, Python se snadno vkládá do jiných aplikací, kde pak slouží jako jejich skriptovací jazyk. Lze ho najít např. v [[3D]] programu [[Blender]], v kancelářském balíku [[OpenOffice.org]], v [[textový editor|textovém editoru]] [[Vim]]. Lze jej alternativně použít jako skriptovací jazyk aplikace [[GIMP]], existují pythonovská aplikační rozhraní pro celou řadu dalších projektů — například pro [[ImageMagick]]. Varianta [[Jython]] (implementace Pythonu v [[Java|Javě]] — viz dále) jej umožňuje používat jako skriptovací jazyk všude tam, kde lze používat skripty v [[Java|Javě]] — například v editoru [[jEdit]].<br />
<br />
== Příklady ==<br />
Ukázkový program [[Hello world]] vypadá velmi jednoduše:<br />
<source lang="python"><br />
print "Hello, World!"<br />
</source><br />
<br />
Program pro výpočet obsahu kruhu ze zadaného poloměru by mohl vypadat například takto:<br />
<source lang="python"><br />
# toto je komentář a interpret jej ignoruje<br />
<br />
import math # zpřístupní modul s matematickými funkcemi a konstantami (sin, cos, pi atp.)<br />
<br />
vstup = raw_input("Zadejte polomer: ") # zobrazí výzvu a načte nějaký řetězec<br />
r = float(vstup) # převede řetězec na desetiné číslo<br />
S = r**2 * math.pi # umocní r na 2 a vynásobí jej pí<br />
print "Výsledek je:", S # zobrazí výsledek<br />
</source><br />
<br />
Výpočet faktoriálu v porovnání s jazykem C:<br />
<br />
{| width="100%"<br />
!width="50%"|Program v jazyce Python<br />
!width="50%"|Odpovídající program [[C (programovací jazyk)|v jazyce C]]<br />
|-<br />
|<br />
<!-- <source> nelze donutit ponechat prázdné řádky, proto <pre> --><br />
<pre><br />
def factorial(x):<br />
if x <= 0:<br />
return 1<br />
else:<br />
return x * factorial(x - 1)<br />
&nbsp;<br />
</pre><br />
|<br />
<pre><br />
int factorial(int x) {<br />
if (x <= 0)<br />
return 1;<br />
else<br />
return x * factorial(x - 1);<br />
}<br />
</pre><br />
|}<br />
<br />
== Charakteristika a použití jazyka ==<br />
<br />
=== Interaktivita ===<br />
Jazyk python umožňuje interaktivní programování v příkazovém interpretu. Řádkový vstup je v takovém případě typicky uvozen znaky <code>>>></code>. Je-li očekáván další řádek vstupu při neukončené syntaxi, řádek začíná znaky <code>...</code>. Uvede-li se pouze proměnná, vypíše se její hodnota, respektive reprezentace. Proměnná <code>_</code> obsahuje poslední takto použitou hodnotu.<br />
<source lang="python"><br />
>>> a = 1 + 2<br />
>>> a<br />
3<br />
>>> def f(c, n):<br />
... return c * n<br />
... <br />
>>> f(a, 5)<br />
15<br />
>>> f('x', a)<br />
'xxx'<br />
>>> len(_)<br />
3<br />
</source><br />
<br />
=== Proměnná je pojmenovaným odkazem na objekt ===<br />
Každá proměnná se chápe jako pojmenovaný odkaz na objekt. Přesněji řečeno, jméno proměnné je svázáno s jinak bezejmenným objektem. Příkaz přiřazení nezajistí okopírování hodnoty navázaného objektu. Provede se pouze svázání nového jména s původním objektem.<br />
<source lang="python"><br />
a = [1, 2]<br />
b = a<br />
</source><br />
Jména ''a'' i ''b'' jsou nyní svázána se stejným objektem. Pokud objekt může být měněn, pak se změna provedená přes jméno ''b'' projeví i při následném přístupu přes jméno ''a''. Příklad – zrušíme první prvek seznamu přes jméno ''b'' a zobrazíme obsah seznamu přes jméno ''a'':<br />
<source lang="python"><br />
del b[0]<br />
print a<br />
</source><br />
Zobrazí se<br />
<source lang="python"><br />
[2]<br />
</source><br />
<br />
=== Funkce se uchovává jako objekt ===<br />
Funkce se chová jako běžný objekt, dokud není zavolána.<br />
<source lang="python"><br />
def funkce():<br />
print 'Python'<br />
<br />
f = funkce<br />
p = [1, 2, 'test', f]<br />
p[3]()<br />
</source><br />
Lze s ní manipulovat, ukládat do proměnných, polí, objektů. Přesněji řečeno, manipuluje se s odkazem na objekt funkce. S objektem funkce je možné podle potřeby svázat i nové jméno.<br />
<br />
=== Do složených datových struktur se ukládají odkazy ===<br />
Do složených datových struktur se ukládají odkazy na objekty, nikoliv objekty samotné. Typ objektu není svázán s odkazem. Z toho vyplývá, že například do jednoho seznamu je možné současně uložit odkazy na objekty libovolného typu:<br />
<source lang="python"><br />
a = [1, 2, 'pokus', u"UNICODE", ('a tak', u'dále...'), {'4':44, 5:55}]<br />
</source><br />
<br />
=== Proměnné není nutné deklarovat ===<br />
V jiných jazycích se při deklaraci proměnné uvádí souvislost jména proměnné s typem ukládané hodnoty. V jazyce Python je proměnná jen pojmenovaným odkazem na nějaký objekt. Typ objektu je ale vázán na odkazovaný objekt, nikoliv na jméno. Potřeba deklarace proměnné ve významu určení souvisejícího typu dat tedy odpadá.<br />
<br />
Existence, či neexistence jména přímo nesouvisí s existencí či neexistencí hodnotového objektu. Význam deklarace proměnné ve smyslu popisu existence související hodnoty tedy rovněž odpadá. Proměnná, jako pojmenovaný odkaz, vzniká v okamžiku, kdy se jméno objeví na levé straně přiřazovacího příkazu. Jméno proměnné může být později svázáno dalším přiřazením s jiným objektem zcela jiného typu.<br />
<source lang="python"><br />
p = 1<br />
p2 = ""<br />
p3 = p<br />
</source><br />
<br />
=== Členské proměnné tříd mohou vznikat až za běhu ===<br />
Mezi běžné praktiky při vytváření objektu patří i založení používaných členských proměnných. Tento obrat se ale v jazyce Python chápe jako užitečná technika, nikoliv jako nutnost. Členské proměnné (čili proměnné uvnitř objektu) mohou vznikat až za běhu.<br />
<source lang="python"><br />
class pokus: pass #prázdná třída<br />
<br />
obj = pokus()<br />
obj.field1 = 33<br />
obj.field2 = 'str'<br />
</source><br />
<br />
Existují ale techniky, které umožňují prostředky jazyka zamezit možnost dodatečného přidávání členských proměnných.<br />
<br />
=== Typy nelze libovolně míchat ===<br />
Při operacích nad objekty se provádí silná typová kontrola. Narozdíl od kompilovaných jazyků se ale provádí až za běhu aplikace.<br />
<br />
=== Ortogonalita operátorů ===<br />
Při vývoji jazyka se kladl a klade důraz na to, aby operátory nebyly vázány na specifické datové typy (pokud je to možné). Přípustnost použití operátoru pro konkrétní operandy se navíc vyhodnocuje až za běhu. Prakticky to znamená, že například následující funkci, která v těle používá operátor ''plus'', je možné předat jednak číselné a jednak řetězcové argumenty:<br />
<source lang="python"><br />
def dohromady(a, b):<br />
return a + b<br />
<br />
dohromady(2, 3) # vrátí 5<br />
dohromady("ahoj", ' nazdar') # vrátí 'ahoj nazdar'<br />
</source><br />
<br />
Nejde jen o zajímavou hříčku. Běžné pythonovské funkce tím získávají vlastnosti, kterými se zabývá [[generické programování]].<br />
<br />
== Python 3000 ==<br />
Autor Pythonu si uvědomil, že se při návrhu jazyka dopustil určitých chyb a rozhodl se je napravit v nové verzi 3, označované jako Python 3000 (Py3k)<ref name="Artima_Python3000StatusUpdate">http://www.artima.com/weblogs/viewpost.jsp?thread=208549</ref><ref name="PEP3000">http://www.python.org/dev/peps/pep-3000/</ref>. Ta nebude zpětně kompatibilní, proto v následující verzi řady 2 (2.6) budou použita varování při použití syntaxe, která nebude ve verzi 3 platná. Jednou z nejviditelnějších změn je převedení příkazu <code>print</code> na funkci. Konstrukce <code>print "hello"</code> bude neplatná, správný zápis bude <code>print("hello")</code>. Dalším příkladem porušení zpětné kompatibility je zavedení nové syntaxe pro oktalová čísla. Ta se doposud zapisují s nulou na začátku, např. <code>0777</code>. Tento formát se stane neplatným a nový bude analogický se zápisem hexadecimálních čísel (<code>0x1ff</code>). Správný zápis bude tedy <code>0o777</code>. Podobně bude možné zapisovat i čísla v binární soustavě.<br />
<pre><br />
>>> 012<br />
File "<stdin>", line 1<br />
012<br />
^<br />
SyntaxError: invalid token<br />
>>> 10 == 0xa == 0o12 == 0b1010<br />
True<br />
</pre><br />
<br />
Další důležitou změnou je chování operátoru dělení <code>/</code> při použití s celými čísly:<br />
<source lang="python"><br />
# python 2.x<br />
>>> 5 / 2<br />
2<br />
>>> 5 / 2 == 5 // 2<br />
True<br />
<br />
# python 3.x<br />
>>> 5 / 2<br />
2.5<br />
>>> 5 // 2<br />
2<br />
</source><br />
Řetězce se změní na typ unicode (<code>"hruška"</code> bude ekvivalentní s dnešní <code>u"hruška"</code>). Pro osmibitové řetězce bude zaveden nový typ <code>bytes</code> (např. <code>b"hruska"</code>). Názvy proměnných už nebudou omezena na [[ASCII]] sadu a budou také v unicode. Funkce <code>raw_input</code> bude přejmenována na <code>input</code> (současný <code>input()</code> zmizí), také iterativní varianty funkcí a metod nahradí svoje předchůdce, které vracely seznamy, takže například funkce <code>range</code> bude v podstatě dnešní <code>xrange</code>, analogicky tomu bude s <code>file.readlines()</code>/<code>file.xreadlines()</code>. Podobně další funkce, vracející list, budou vracet iterátor - např. <code>dict.keys()</code>:<br />
<source lang="python"><br />
# python 2.x<br />
>>> d = { 'a': 1, 'b': 7 }<br />
>>> d.keys()<br />
['a', 'b']<br />
<br />
# python 3.x<br />
>>> d.keys()<br />
<dict_keys object at 0xb7c08540&><br />
>>> [ x for x in d.keys() ] # nebo list(d.keys())<br />
['a', 'b']<br />
</source><br />
Zmizí <code>dict.has_key()</code>.<br />
Zápis množin se zjednoduší, <code>set([1, 2])</code> bude možné napsat <code>{1, 2}</code>. Dále například přibyde řetězcům nová metoda <code>format</code> jako alternativa ke současnému formátování řetězců procentovou notací.<br />
<source lang="python"><br />
"ID: %s (%s, %s)" % ("0s9d8f", 0, 3)<br />
# či<br />
"ID: %(id)s (%(x)s, %(y)s)" % ('x': 0, 'y': 3, 'id': "0s9d8f")<br />
<br />
# bude možné psát jako<br />
<br />
"ID: {0} ({1}, {2})".format("0s9d8f", 0, 3)<br />
# a<br />
"ID: {id} ({x}, {y})".format(x=0, y=3, id="0s9d8f")<br />
</source><br />
<br />
Vydání první stabilní verze Pythonu 3 je plánováno na léto roku [[2008]].<br />
<br />
== Odkazy ==<br />
<br />
=== Reference ===<br />
<br />
<references/><br />
<br />
=== Externí odkazy ===<br />
<br />
{{Wikibooks|Programming:Python}}<br />
* [http://www.python.org/ www.python.org] – Domovská stránka projektu (anglicky, [http://www.python.org/doc/NonEnglish.html#czech některé česky])<br />
* [http://www.py.cz/ www.py.cz] – PyCZ, komunitní český web<br />
* [http://www.boost.org/libs/python/doc/index.html Boost.Python] — C++ knihovna pro spolupráci mezi C++ a Pythonem<br />
'''Dokumentace, učebnice:'''<br />
* [http://docs.python.org/tut/tut.html Originální tutorial] – anglicky<br />
* [http://docs.python.org/doc Originální dokumentace] – anglicky<br />
* [http://www.py.cz/UcebniceJazykaPython Učebnice jazyka Python (aneb Létající cirkus)] – český překlad<br />
* [http://www.root.cz/serialy/letajici-cirkus/ Létající cirkus], [http://www.root.cz/zpravicky/serial-letajici-cirkus-v-pdf/ PDF] – Seriál na ROOT.CZ, 21 dílů,<br />
* [http://www.freenetpages.co.uk/hp/alan.gauld/czech3/index.html Jak se naučit programovat] (překlad [http://www.freenetpages.co.uk/hp/alan.gauld/ Learning to Program]) [http://www.skil.cz/python/index.html ''aktuální pracovní verze'']<br />
* [http://wraith.iglu.cz/python Python – programování zábavou] – kvalitní český web o Pythonu, základy, ukázky, praxe<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
[[Category:Programování]]</div>Megihttp://wiki.wowresource.eu/index.php?title=Python&diff=136Python2007-11-28T19:24:50Z<p>Megi: </p>
<hr />
<div>{| class="infobox" style="width: 25em; text-align: left;"<br />
|-<br />
| colspan="2" style="text-align:center;" |<br />
|- style="vertical-align:top;"<br />
! Charakter jazyka:<br />
| víceparadigmatický<br />
|- style="vertical-align:top;"<br />
! Objevil se:<br />
| 1990<br />
|- style="vertical-align:top;"<br />
! Navrhl jej:<br />
| [[Guido van Rossum]]<br />
|- style="vertical-align:top;"<br />
! Vývoj realizuje:<br />
| [http://www.python.org/psf/ Python Software Foundation]<br />
|- style="vertical-align:top;"<br />
! Stabilní verze:<br />
| 2.5.1 / [[18. duben|18. dubna]] [[2007]]<br />
|- style="vertical-align:top;"<br />
! Vývojová verze:<br />
| 3.0a1 (alfa) / [[31. srpen|31. srpna]] [[2007]]<br />
|- style="vertical-align:top;"<br />
! Typová kontrola:<br />
| silná, dynamická<br />
|- style="vertical-align:top;"<br />
! Hlavní implementace:<br />
| '''CPython''', [[Jython]], [[IronPython]], [[PyPy]]<br />
|- class="hiddenStructure{{{data 3}}}" style="vertical-align:top;"<br />
! Dialekty:<br />
| [[Stackless Python]], [[RPython]]<br />
|- class="hiddenStructure{{{data 3}}}" style="vertical-align:top;"<br />
! Ovlivněn jazyky:<br />
| [[ABC (programovací jazyk)|ABC]], [[Perl]], [[Lisp]], [[Smalltalk]], [[Tcl]]<br />
|- class="hiddenStructure{{{data 3}}}" style="vertical-align:top;"<br />
! Ovlivnil jazyky:<br />
| [[Ruby]], [[Boo (programovací jazyk)|Boo]], [[Groovy]]<br />
|- style="vertical-align:top;"<br />
! Operační systém:<br />
| různé [[platforma|platformy]]<br />
|- style="vertical-align:top;"<br />
! Licence:<br />
| [http://www.python.org/psf/license/ Python Software Foundation License]<br />
|- style="vertical-align:top;"<br />
! Website:<br />
| [http://www.python.org www.python.org]<br />
|- style="vertical-align:top;"<br />
|}<br />
<br />
<br />
'''Python''' je [[interpret (software)|interpretovaný]] [[objektově orientované programování|objektově orientovaný]] [[programovací jazyk]], který v roce [[1990]] navrhl [[Guido van Rossum]]. Python je vyvíjen jako [[Open source software|open source]] projekt, který zdarma nabízí instalační balíky pro většinu běžných [[platforma|platforem]] ([[Unix]], [[Microsoft Windows|Windows]], [[Mac OS]]); ve většině [[Linuxová distribuce|distribucí]] systému [[Linux]] je Python součástí základní instalace.<br />
<br />
Mimo jiné je v něm [[implementace|implementován]] aplikační server [[Zope]], [[instalátor]] a většina konfiguračních nástrojů Linuxové distribuce firmy [[Red Hat]].<br />
<br />
== Vlastnosti ==<br />
<br />
Python je dynamický interpretovaný jazyk. Někdy bývá zařazován mezi takzvané [[skriptovací jazyk]]y. Jeho možnosti jsou ale větší. Python byl navržen tak, aby umožňoval tvorbu rozsáhlých, plnohodnotných aplikací (včetně [[grafické uživatelské rozhraní|grafického uživatelského rozhraní]]).<br />
<br />
Python je hybridní jazyk (nebo také ''víceparadigmatický''), to znamená, že umožňuje při psaní programů používat nejen [[objektově orientované programování|objektově orientované]] paradigma, ale i [[procedurální programování|procedurální]] a v omezené míře i [[funkcionální programování|funkcionální]], podle toho komu co vyhovuje nebo se pro danou úlohu hodí nejlépe. Python má díky tomu vynikající vyjadřovací schopnosti. Kód programu je ve srovnání s jinými jazyky krátký a dobře čitelný.<br />
<br />
K význačným vlastnostem jazyka Python patří jeho jednoduchost z hlediska učení. Bývá dokonce považován za jeden z nejvhodnějších programovacích jazyků pro začátečníky. Tato skutečnost je dána tím, že jedním z jeho silných inspiračních zdrojů byl programovací jazyk [[ABC (programovací jazyk)|ABC]], který byl jako jazyk pro výuku a pro použití začátečníky přímo vytvořen. Python ale současně bourá zažitou představu, že ''jazyk vhodný pro výuku není vhodný pro praxi a naopak''. Podstatnou měrou k tomu přispívá čistota a jednoduchost [[syntax]]e, na kterou se při vývoji jazyka hodně dbá.<br />
<br />
Význačnou vlastností jazyka Python je produktivnost z hlediska rychlosti psaní programů. Týká se to jak nejjednodušších programů, tak aplikací velmi rozsáhlých. U jednoduchých programů se tato vlastnost projevuje především stručností zápisu. U velkých aplikací je produktivnost podpořena rysy, které se používají při [[programování ve velkém]], jako jsou například přirozená podpora [[prostor jmen|prostorů jmen]], používání [[výjimky|výjimek]], standardně dodávané prostředky pro psaní testů ([[unit testing]]) a dalšími. S vysokou produktivností souvisí dostupnost a snadná použitelnost široké škály knihovních modulů, umožňujících snadné řešení úloh z řady oblastí.<br />
<br />
Python se snadno vkládá do jiných aplikací (embedding), kde pak slouží jako jejich skriptovací jazyk. Tím lze aplikacím psaným v [[kompilovaný programovací jazyk|kompilovaných programovacích jazycích]] dodávat chybějící pružnost. Jiné aplikace nebo aplikační knihovny mohou naopak implementovat rozhraní, které umožní jejich použití v roli pythonovského modulu. Jinými slovy, pythonovský program je může využívat jako modul dostupný přímo z jazyka Python (tj. extending, viz sekce [[#Spolupráce s jinými aplikacemi|Spolupráce s jinými aplikacemi]]).<br />
<br />
[[Programování]] v Pythonu klade velký důraz na produktivitu práce [[programátor]]a. Myšlenky návrhu jazyka jsou shrnuty ve [[filosofie Pythonu|filosofii Pythonu]].<br />
<br />
== Spolupráce s jinými programovacími jazyky ==<br />
<br />
=== C a C++ ===<br />
Klasický Python je implementován v [[C (programovací jazyk)|jazyce C]] (označuje se někdy jako CPython). V něm probíhá další vývoj jazyka Python. Verze jazyka Python jsou zveřejňovány jak v podobě [[zdrojový kód|zdrojového kódu]], tak v podobě přeložených instalačních balíků pro různé cílové platformy.<br />
<br />
Dostupnost zdrojového kódu a vlastnosti [[C (programovací jazyk)|jazyka C]] umožňují zabudovat interpret jazyka Python do jiné aplikace psané v jazycích [[C (programovací jazyk)|C]] nebo [[C++]]. Takto zabudovaný [[interpret (software)|interpret]] jazyka Python pak představuje nástroj pro pružné rozšiřování [[funkčnost]]i výsledné aplikace ''zvenčí''. Existuje i projekt pro užší spolupráci s C++ nazvaný [[Boost.Python]]<br />
<br />
Z těchto důvodů — a s přihlédnutím k obecně vysokému výkonu aplikací psaných v jazyce C — je CPython nejpoužívanější implementací jazyka Python.<br />
<br />
=== Java ===<br />
<br />
Existuje implementace Pythonu v jazyce [[Java]], která se jmenuje [[Jython]]. Kód napsaný v Jythonu běží v [[Java virtual machine|JVM]] Javy a může používat všechny knihovny prostředí Java. V Javě lze naopak používat všechny knihovny napsané v Jythonu.<br />
<br />
Nevýhodou Jythonu je, že je několik verzí pozadu za implementací CPython. Například v době vypuštění verze CPython 2.4.3 (březen 2006) byla k dispozici teprve verze Jython 2.1. Řada význačných vlastností jazyka Python se přitom objevuje až od verze 2.2. Při používání Jython z javovských aplikací ale nemusí být otázka nedostupnosti novějších rysů tak palčivá.<br />
<br />
=== Prostředí .NET/Mono ===<br />
<br />
Pracuje se na implementaci Pythonu pro prostředí [[.NET]]/[[Mono (platforma)|Mono]]. Ta je známa pod jménem [[IronPython]].<br />
<br />
Za výhody lze považovat to, že se Python tímto stává jedním z jazyků pro platformu [[.NET]]. To současně znamená, že jej lze přímo využívat ve všech jazycích platformy [[.NET]]. Vzhledem k významu, jaký platformě [[.NET]] přikládá firma [[Microsoft]], lze očekávat, že význam implementace [[IronPython]] dále poroste. Vzhledem k vlastnostem jazyka Python lze také předpokládat, že se implementace [[IronPython]] stane dlouhodobě podporovanou.<br />
<br />
Nevýhodou implementace [[IronPython]] je zatím její nevyzrálost (v dubnu 2007 byla vydána verze 1.1). Negativně může být vnímána i skutečnost, že implementace [[IronPython]] je vyvíjena firmou [[Microsoft]] a dostupnost zdrojového kódu je svázána s přísnější licencí, než je tomu u implementace CPython.<br />
<br />
== Výkon ==<br />
<br />
Výkon aplikací napsaných v Pythonu je dobrý, protože výkonově kritické knihovny jsou implementovány v jazyce [[C (programovací jazyk)|C]], s kterým Python výborně spolupracuje. I samotný jazyk je na tom v porovnání s jinými interpretovanými jazyky dobře. Je např. 3 až 5 krát rychlejší než [[PHP]]. Pro Python navíc existuje snadno použitelná knihovna [[Psyco]], která [[transparence|transparentně]] [[optimalizace|optimalizuje]] kód Pythonu na výkon. Některé operace jsou pomocí Psyco urychleny až řádově<ref name="gp4psyco">http://shootout.alioth.debian.org/gp4sandbox/benchmark.php?test=all&lang=python&lang2=psyco</ref>.<br />
<br />
== Spolupráce s jinými aplikacemi ==<br />
<br />
Jak již bylo řečeno, Python se snadno vkládá do jiných aplikací, kde pak slouží jako jejich skriptovací jazyk. Lze ho najít např. v [[3D]] programu [[Blender]], v kancelářském balíku [[OpenOffice.org]], v [[textový editor|textovém editoru]] [[Vim]]. Lze jej alternativně použít jako skriptovací jazyk aplikace [[GIMP]], existují pythonovská aplikační rozhraní pro celou řadu dalších projektů — například pro [[ImageMagick]]. Varianta [[Jython]] (implementace Pythonu v [[Java|Javě]] — viz dále) jej umožňuje používat jako skriptovací jazyk všude tam, kde lze používat skripty v [[Java|Javě]] — například v editoru [[jEdit]].<br />
<br />
== Příklady ==<br />
Ukázkový program [[Hello world]] vypadá velmi jednoduše:<br />
<source lang="python"><br />
print "Hello, World!"<br />
</source><br />
<br />
Program pro výpočet obsahu kruhu ze zadaného poloměru by mohl vypadat například takto:<br />
<source lang="python"><br />
# toto je komentář a interpret jej ignoruje<br />
<br />
import math # zpřístupní modul s matematickými funkcemi a konstantami (sin, cos, pi atp.)<br />
<br />
vstup = raw_input("Zadejte polomer: ") # zobrazí výzvu a načte nějaký řetězec<br />
r = float(vstup) # převede řetězec na desetiné číslo<br />
S = r**2 * math.pi # umocní r na 2 a vynásobí jej pí<br />
print "Výsledek je:", S # zobrazí výsledek<br />
</source><br />
<br />
Výpočet faktoriálu v porovnání s jazykem C:<br />
<br />
{| width="100%"<br />
!width="50%"|Program v jazyce Python<br />
!width="50%"|Odpovídající program [[C (programovací jazyk)|v jazyce C]]<br />
|-<br />
|<br />
<!-- <source> nelze donutit ponechat prázdné řádky, proto <pre> --><br />
<pre><br />
def factorial(x):<br />
if x <= 0:<br />
return 1<br />
else:<br />
return x * factorial(x - 1)<br />
&nbsp;<br />
</pre><br />
|<br />
<pre><br />
int factorial(int x) {<br />
if (x <= 0)<br />
return 1;<br />
else<br />
return x * factorial(x - 1);<br />
}<br />
</pre><br />
|}<br />
<br />
== Charakteristika a použití jazyka ==<br />
<br />
=== Interaktivita ===<br />
Jazyk python umožňuje interaktivní programování v příkazovém interpretu. Řádkový vstup je v takovém případě typicky uvozen znaky <code>>>></code>. Je-li očekáván další řádek vstupu při neukončené syntaxi, řádek začíná znaky <code>...</code>. Uvede-li se pouze proměnná, vypíše se její hodnota, respektive reprezentace. Proměnná <code>_</code> obsahuje poslední takto použitou hodnotu.<br />
<source lang="python"><br />
>>> a = 1 + 2<br />
>>> a<br />
3<br />
>>> def f(c, n):<br />
... return c * n<br />
... <br />
>>> f(a, 5)<br />
15<br />
>>> f('x', a)<br />
'xxx'<br />
>>> len(_)<br />
3<br />
</source><br />
<br />
=== Proměnná je pojmenovaným odkazem na objekt ===<br />
Každá proměnná se chápe jako pojmenovaný odkaz na objekt. Přesněji řečeno, jméno proměnné je svázáno s jinak bezejmenným objektem. Příkaz přiřazení nezajistí okopírování hodnoty navázaného objektu. Provede se pouze svázání nového jména s původním objektem.<br />
<source lang="python"><br />
a = [1, 2]<br />
b = a<br />
</source><br />
Jména ''a'' i ''b'' jsou nyní svázána se stejným objektem. Pokud objekt může být měněn, pak se změna provedená přes jméno ''b'' projeví i při následném přístupu přes jméno ''a''. Příklad – zrušíme první prvek seznamu přes jméno ''b'' a zobrazíme obsah seznamu přes jméno ''a'':<br />
<source lang="python"><br />
del b[0]<br />
print a<br />
</source><br />
Zobrazí se<br />
<source lang="python"><br />
[2]<br />
</source><br />
<br />
=== Funkce se uchovává jako objekt ===<br />
Funkce se chová jako běžný objekt, dokud není zavolána.<br />
<source lang="python"><br />
def funkce():<br />
print 'Python'<br />
<br />
f = funkce<br />
p = [1, 2, 'test', f]<br />
p[3]()<br />
</source><br />
Lze s ní manipulovat, ukládat do proměnných, polí, objektů. Přesněji řečeno, manipuluje se s odkazem na objekt funkce. S objektem funkce je možné podle potřeby svázat i nové jméno.<br />
<br />
=== Do složených datových struktur se ukládají odkazy ===<br />
Do složených datových struktur se ukládají odkazy na objekty, nikoliv objekty samotné. Typ objektu není svázán s odkazem. Z toho vyplývá, že například do jednoho seznamu je možné současně uložit odkazy na objekty libovolného typu:<br />
<source lang="python"><br />
a = [1, 2, 'pokus', u"UNICODE", ('a tak', u'dále...'), {'4':44, 5:55}]<br />
</source><br />
<br />
=== Proměnné není nutné deklarovat ===<br />
V jiných jazycích se při deklaraci proměnné uvádí souvislost jména proměnné s typem ukládané hodnoty. V jazyce Python je proměnná jen pojmenovaným odkazem na nějaký objekt. Typ objektu je ale vázán na odkazovaný objekt, nikoliv na jméno. Potřeba deklarace proměnné ve významu určení souvisejícího typu dat tedy odpadá.<br />
<br />
Existence, či neexistence jména přímo nesouvisí s existencí či neexistencí hodnotového objektu. Význam deklarace proměnné ve smyslu popisu existence související hodnoty tedy rovněž odpadá. Proměnná, jako pojmenovaný odkaz, vzniká v okamžiku, kdy se jméno objeví na levé straně přiřazovacího příkazu. Jméno proměnné může být později svázáno dalším přiřazením s jiným objektem zcela jiného typu.<br />
<source lang="python"><br />
p = 1<br />
p2 = ""<br />
p3 = p<br />
</source><br />
<br />
=== Členské proměnné tříd mohou vznikat až za běhu ===<br />
Mezi běžné praktiky při vytváření objektu patří i založení používaných členských proměnných. Tento obrat se ale v jazyce Python chápe jako užitečná technika, nikoliv jako nutnost. Členské proměnné (čili proměnné uvnitř objektu) mohou vznikat až za běhu.<br />
<source lang="python"><br />
class pokus: pass #prázdná třída<br />
<br />
obj = pokus()<br />
obj.field1 = 33<br />
obj.field2 = 'str'<br />
</source><br />
<br />
Existují ale techniky, které umožňují prostředky jazyka zamezit možnost dodatečného přidávání členských proměnných.<br />
<br />
=== Typy nelze libovolně míchat ===<br />
Při operacích nad objekty se provádí silná typová kontrola. Narozdíl od kompilovaných jazyků se ale provádí až za běhu aplikace.<br />
<br />
=== Ortogonalita operátorů ===<br />
Při vývoji jazyka se kladl a klade důraz na to, aby operátory nebyly vázány na specifické datové typy (pokud je to možné). Přípustnost použití operátoru pro konkrétní operandy se navíc vyhodnocuje až za běhu. Prakticky to znamená, že například následující funkci, která v těle používá operátor ''plus'', je možné předat jednak číselné a jednak řetězcové argumenty:<br />
<source lang="python"><br />
def dohromady(a, b):<br />
return a + b<br />
<br />
dohromady(2, 3) # vrátí 5<br />
dohromady("ahoj", ' nazdar') # vrátí 'ahoj nazdar'<br />
</source><br />
<br />
Nejde jen o zajímavou hříčku. Běžné pythonovské funkce tím získávají vlastnosti, kterými se zabývá [[generické programování]].<br />
<br />
== Python 3000 ==<br />
Autor Pythonu si uvědomil, že se při návrhu jazyka dopustil určitých chyb a rozhodl se je napravit v nové verzi 3, označované jako Python 3000 (Py3k)<ref name="Artima_Python3000StatusUpdate">http://www.artima.com/weblogs/viewpost.jsp?thread=208549</ref><ref name="PEP3000">http://www.python.org/dev/peps/pep-3000/</ref>. Ta nebude zpětně kompatibilní, proto v následující verzi řady 2 (2.6) budou použita varování při použití syntaxe, která nebude ve verzi 3 platná. Jednou z nejviditelnějších změn je převedení příkazu <code>print</code> na funkci. Konstrukce <code>print "hello"</code> bude neplatná, správný zápis bude <code>print("hello")</code>. Dalším příkladem porušení zpětné kompatibility je zavedení nové syntaxe pro oktalová čísla. Ta se doposud zapisují s nulou na začátku, např. <code>0777</code>. Tento formát se stane neplatným a nový bude analogický se zápisem hexadecimálních čísel (<code>0x1ff</code>). Správný zápis bude tedy <code>0o777</code>. Podobně bude možné zapisovat i čísla v binární soustavě.<br />
<pre><br />
>>> 012<br />
File "<stdin>", line 1<br />
012<br />
^<br />
SyntaxError: invalid token<br />
>>> 10 == 0xa == 0o12 == 0b1010<br />
True<br />
</pre><br />
<br />
Další důležitou změnou je chování operátoru dělení <code>/</code> při použití s celými čísly:<br />
<source lang="python"><br />
# python 2.x<br />
>>> 5 / 2<br />
2<br />
>>> 5 / 2 == 5 // 2<br />
True<br />
<br />
# python 3.x<br />
>>> 5 / 2<br />
2.5<br />
>>> 5 // 2<br />
2<br />
</source><br />
Řetězce se změní na typ unicode (<code>"hruška"</code> bude ekvivalentní s dnešní <code>u"hruška"</code>). Pro osmibitové řetězce bude zaveden nový typ <code>bytes</code> (např. <code>b"hruska"</code>). Názvy proměnných už nebudou omezena na [[ASCII]] sadu a budou také v unicode. Funkce <code>raw_input</code> bude přejmenována na <code>input</code> (současný <code>input()</code> zmizí), také iterativní varianty funkcí a metod nahradí svoje předchůdce, které vracely seznamy, takže například funkce <code>range</code> bude v podstatě dnešní <code>xrange</code>, analogicky tomu bude s <code>file.readlines()</code>/<code>file.xreadlines()</code>. Podobně další funkce, vracející list, budou vracet iterátor - např. <code>dict.keys()</code>:<br />
<source lang="python"><br />
# python 2.x<br />
>>> d = { 'a': 1, 'b': 7 }<br />
>>> d.keys()<br />
['a', 'b']<br />
<br />
# python 3.x<br />
>>> d.keys()<br />
<dict_keys object at 0xb7c08540&><br />
>>> [ x for x in d.keys() ] # nebo list(d.keys())<br />
['a', 'b']<br />
</source><br />
Zmizí <code>dict.has_key()</code>.<br />
Zápis množin se zjednoduší, <code>set([1, 2])</code> bude možné napsat <code>{1, 2}</code>. Dále například přibyde řetězcům nová metoda <code>format</code> jako alternativa ke současnému formátování řetězců procentovou notací.<br />
<source lang="python"><br />
"ID: %s (%s, %s)" % ("0s9d8f", 0, 3)<br />
# či<br />
"ID: %(id)s (%(x)s, %(y)s)" % ('x': 0, 'y': 3, 'id': "0s9d8f")<br />
<br />
# bude možné psát jako<br />
<br />
"ID: {0} ({1}, {2})".format("0s9d8f", 0, 3)<br />
# a<br />
"ID: {id} ({x}, {y})".format(x=0, y=3, id="0s9d8f")<br />
</source><br />
<br />
Vydání první stabilní verze Pythonu 3 je plánováno na léto roku [[2008]].<br />
<br />
== Odkazy ==<br />
<br />
=== Reference ===<br />
<br />
<references/><br />
<br />
=== Externí odkazy ===<br />
<br />
{{Wikibooks|Programming:Python}}<br />
* [http://www.python.org/ www.python.org] – Domovská stránka projektu (anglicky, [http://www.python.org/doc/NonEnglish.html#czech některé česky])<br />
* [http://www.py.cz/ www.py.cz] – PyCZ, komunitní český web<br />
* [http://www.boost.org/libs/python/doc/index.html Boost.Python] — C++ knihovna pro spolupráci mezi C++ a Pythonem<br />
'''Dokumentace, učebnice:'''<br />
* [http://docs.python.org/tut/tut.html Originální tutorial] – anglicky<br />
* [http://docs.python.org/doc Originální dokumentace] – anglicky<br />
* [http://www.py.cz/UcebniceJazykaPython Učebnice jazyka Python (aneb Létající cirkus)] – český překlad<br />
* [http://www.root.cz/serialy/letajici-cirkus/ Létající cirkus], [http://www.root.cz/zpravicky/serial-letajici-cirkus-v-pdf/ PDF] – Seriál na ROOT.CZ, 21 dílů,<br />
* [http://www.freenetpages.co.uk/hp/alan.gauld/czech3/index.html Jak se naučit programovat] (překlad [http://www.freenetpages.co.uk/hp/alan.gauld/ Learning to Program]) [http://www.skil.cz/python/index.html ''aktuální pracovní verze'']<br />
* [http://wraith.iglu.cz/python Python – programování zábavou] – kvalitní český web o Pythonu, základy, ukázky, praxe<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
[[Category:Programování]]</div>Megihttp://wiki.wowresource.eu/index.php?title=Pascal&diff=134Pascal2007-11-28T19:22:38Z<p>Megi: </p>
<hr />
<div>'''Pascal''' je název [[programovací jazyk|programovacího jazyka]], určeného hlavně k výuce [[programování]]. Jeho název byl zvolen na počest francouzského filosofa, matematika a fyzika [[Blaise Pascal]]a.<br />
<br />
Návrh programovacího jazyka Pascal pochází ze začátku 70. let od profesora [[Niklaus Wirth|Niklause Wirtha]] z Vysoké školy technické v [[Curych]]u. Autor sledoval návrhem jazyka tyto cíle:<br />
* vytvořit jazyk vhodný pro výuku programování, který by byl založen na omezeném počtu srozumitelných konstrukcí,<br />
* navrhnout strukturu jazyka tak, aby bylo snadné implementovat Pascal na většině tehdejších počítačů.<br />
<br />
První verze Pascalu byla publikována r. [[1971]], o 3 roky později ([[1974]]) byla uveřejněna opravená definice jazyka. V roce [[1981]] byla vydána norma [[Mezinárodní organizace pro normalizaci|ISO]]. Vedle toho vznikla řada komerčních implementací Pascalu, které se od Pascalu dle normy ISO více či méně odchylovaly, zejména zavedením dalších konstrukcí zjednodušujících praktické programování. V oblasti [[Osobní počítač|PC]] dosáhla patrně největšího úspěchu implementace Turbo Pascal firmy [[Borland]].<br />
Objektové rozšíření Pascalu se pak stalo i základem systému [[Delphi]] téže firmy.<br />
<br />
== Syntaxe ==<br />
<br />
Veškeré Pascalovské programy začínají klíčovým slovem ''Program'' a volitelným výčtem vnitřních souborových deskriptorů. Následuje blok kódu, označený klíčovými slovy ''Begin'' a ''End''. Malá a velká písmena nejsou v Pascalu rozlišována. Příkazy jsou oddělovány středníky, tečka ukončuje program.<br />
<br />
program HelloWorld(output);<br />
<br />
begin<br />
WriteLn('Hello, World!');<br />
end.<br />
<br />
Pascal je ve své původní formě čistým procedurálním jazykem s klasickým výčtem ''if'', ''while'', ''for'' a podobných konstrukcí. Pascal je [[Strukturované programování|strukturovaný]] programovací jazyk, což znamená, že program je uspořádán mezi standardní příkazy, ideálně bez použití instrukce ''goto''.<br />
<br />
while a <> b do<br />
begin<br />
WriteLn('Cekam...');<br />
end;<br />
<br />
if a > b then<br />
begin<br />
WriteLn('Podminka splnena');<br />
end<br />
else <br />
begin<br />
WriteLn('Podminka je nepravdiva');<br />
end;<br />
<br />
for i := 1 to 10 do <br />
WriteLn('Iterace: ', i:1);<br />
<br />
repeat<br />
a := a + 1;<br />
until a = 10;<br />
<br />
Pascal člení programy na procedury a funkce.<br />
<br />
program muj(output);<br />
<br />
procedure vypis(var i: integer);<br />
<br />
function dalsi(i: integer): integer;<br />
begin<br />
dalsi := i + 1;<br />
end;<br />
<br />
begin<br />
WriteLn('Celkem: ', i);<br />
i := dalsi(i);<br />
end;<br />
<br />
begin<br />
i := 1;<br />
while i <= 10 do <br />
vypis(i);<br />
end.<br />
<br />
Procedury i funkce lze zanořovat do libovolné hloubky. Konstrukce ''program'' je logicky nejzazší blok.<br />
<br />
Každý blok může mít své deklarace značek pro goto (label), konstant, typů, proměnných a jiných procedur a funkcí, které musí být přesně v tomto pořadí.<br />
<br />
Pascal podporuje celá čísla (integer), znaky (char) a boolovské výrazy (boolean) jako jednoduché datové typy a přidává nový typ: výčet.<br />
<br />
program mujprog;<br />
var<br />
a: integer;<br />
b: char;<br />
c: boolean;<br />
d: (jedna, dve, tri, ctyri, pet);<br />
<br />
Lze vytvořit i interval kteréhokoli výše uvedeného typu.<br />
<br />
var<br />
x: 1..10;<br />
y: 'a'..'z';<br />
z: two..four;<br />
<br />
Pomocí deklarace type lze vytvářet typy z existujících typů.<br />
<br />
program mujdalsiprog;<br />
<br />
type<br />
x = integer;<br />
y = x;<br />
...<br />
<br />
Z jednoduchých typů lze vytvářet typy složitější.<br />
<br />
type <br />
a = array [1..10] of integer;<br />
b = record<br />
a: integer;<br />
b: char;<br />
end;<br />
c = file of a;<br />
<br />
Řetězce jsou pole znaků, začínající číselným indexem 1.<br />
<br />
== Program Hello world ==<br />
<br />
Tradiční program [[Hello world]] vypadá v jazyku Pascal takto:<br />
<br />
program HelloWorld(input, output);<br />
<br />
begin<br />
WriteLn('Hello, World!');<br />
end.<br />
<br />
== Historie ==<br />
<br />
První [[Překladač|kompilátor]] Pascalu byl navržen v Curychu pro počítače řady [[CDC 6000]] a do provozu byl uveden v roce [[1970]].<br />
<br />
První kompilátor Pascalu napsaný v [[Severní Amerika|Severní Americe]] vznikl na Illinoiské univerzitě pod vedením [[Donald B. Gillies|Donalda B. Gilliese]] pro počítač [[PDP-11]] a generoval nativní [[strojový kód]].<br />
<br />
Za účelem rychlého rozšíření jazyka vznikl v Curychu tzv. ''compiler porting kit'', zahrnující kompilátor do „virtuálního“ strojového kódu (nebo přesněji mezikódu) a simulátor toho kódu. Z této sady vznikl P-systém. Ačkoli byl tento systém navržen, aby umožnil vznik kompilátorů do pravých strojových kódů, minimálně jeden systém, pozoruhodná implementace [[USCD]], jej využila k vytvoření interpretačního systému [[USCD p-System]].<br />
<br />
[[IP Pascal]] byl implementací používající [[Micropolis DOS]], rychle se však přesunul na [[CP/M]] běžící na [[Z80]].<br />
<br />
Začátkem 80. let byl UCSD Pascal portován pro počítače [[Apple II]] a [[AppleIII]], aby tak poskytl strukturovanou alternativu k interpretům [[BASIC]]u, dodávaným spolu s počítačem.<br />
<br />
V 80. letech také napsal [[Anders Hejlsberg]] kompilátor [[Blue Label Pascal]] pro počítač [[Nascom-2]]. Později začal pracovat pro [[Borland]] a svůj kompilátor přepsal na [[Turbo Pascal]] pro [[x86|IBM PC]]. Nový kompilátor prodával za $49.95, což byla mnohem nižší cena než za jakou prodával původní Blue Label Pascal.<br />
<br />
Laciný kompilátor společnosti Borland měl velký vliv na komunitu okolo Pascalu, která se koncem 80. let zaměřila především na IBM PC. Mnoho počítačových nadšenců ve svém hledání strukturované alternativy k BASICu tento produkt používalo. Turbo Pascal, dostupný pouze na této architektuře, překládal přímo do strojového kódu [[Intel 8088]], čímž docílil mnohem větší rychlosti než interpretované návrhy.<br />
<br />
S verzí Turbo Pascal 5.5 přidal Borland podporu pro [[objektově orientované programování]]. Později se Borland rozhodl, že je potřeba komplikovanějších vlastností a začal pracovat na [[Delphi]], přičemž vycházel z návrhu jazyka [[Object Pascal]] společnosti [[Apple]]. V raných verzích nazýval tento jazyk rovněž Object Pascal, později jméno změnil na programovací jazyk Delphi.<br />
<br />
== Související odkazy ==<br />
<br />
* [[Object Pascal]]<br />
* [[Delphi]]<br />
<br />
== Externí odkazy ==<br />
<br />
* [http://pascal-central.com/ Pascal Central] – zdroje ohledně jazyka Pascal<br />
* [http://pascaltools.wz.cz/ Pascal tools] – upravovač zdrojových kódů programů vytvořených v Pascalu<br />
* [http://www.pbm.com/~lindahl/real.programmers.html Real Programmers Don't Use Pascal] – vtip proč „skuteční programátoři“ nepoužívají Pascal<br />
* [http://www.moorecad.com/standardpascal Standard Pascal] – Zdroje a historie původního, standardního Pascalu<br />
* [http://www.swissdelphicenter.ch/en/niklauswirth.php Pascal and its Successors] – článek Niklause Wirtha o vývoji jazyků Pascal, [[Modula-2]] a [[Oberon (programovací jazyk)|Oberon]]<br />
* [http://www.trsek.com www.trsek.com] - Množství zdrojových kódu v Pascalu. Od her až po algoritmizaci výpočtu PI.<br />
<br />
překladače:<br />
<br />
* [http://www.freepascal.org/ Free Pascal]<br />
* [http://www.gnu-pascal.de/gpc/h-index.html GNU Pascal]<br />
* [http://www.lazarus.freepascal.org/ Projekt Lazarus]<br />
* [http://www.bloodshed.net/devpascal.html Dev-Pascal]<br />
* [http://www.turbo-pascal.com/ Turbo-Pascal.com]<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
[[Category:Programování]]</div>Megihttp://wiki.wowresource.eu/index.php?title=PHP&diff=133PHP2007-11-28T19:20:22Z<p>Megi: </p>
<hr />
<div>'''PHP''' ([[rekurzivní zkratka]] ''PHP: Hypertext Preprocessor'', „PHP: [[Hypertext]]ový [[preprocesor]]“, původně ''Personal Home Page'') je [[skriptovací jazyk|skriptovací]] [[programovací jazyk]], určený především pro programování dynamických [[internet]]ových stránek. Nejčastěji se začleňuje přímo do struktury jazyka [[HTML]], [[XHTML]] či [[WML]], což je velmi výhodné pro tvorbu webových aplikací. PHP lze ovšem také použít i k tvorbě konzolových a desktopových aplikací.<br />
<br />
Samotná [[Wikipedie]] je naprogramována v PHP.<br />
<br />
PHP skripty jsou prováděny na straně [[server]]u, k uživateli je přenášen až výsledek jejich činnosti. [[Syntax]]e jazyka kombinuje hned několik programovacích jazyků ([[Perl]], [[C (programovací jazyk)|C]], [[Pascal (programovací jazyk)|Pascal]] a [[Java]]). PHP je nezávislý na [[platforma|platformě]], skripty fungují bez úprav na mnoha různých [[operační systém|operačních systémech]]. Obsahuje rozsáhlé knihovny funkcí pro zpracování textu, grafiky, práci se soubory, přístup k většině databázových serverů (mj. [[MySQL]], [[ODBC]], [[Oracle]], [[PostgreSQL]], [[MSSQL]]), podporu celé řady internetových protokolů ([[Hyper Text Transfer Protocol|HTTP]], [[Simple Mail Transfer Protocol|SMTP]], [[SNMP]], [[File Transfer Protocol|FTP]], [[Internet Message Access Protocol|IMAP]], [[POP3]], [[LDAP]], …)<br />
<br />
PHP se stalo velmi oblíbeným především díky jednoduchosti použití a tomu, že kombinuje vlastnosti více programovacích jazyků a nechává tak vývojáři částečnou svobodu v syntaxi. V kombinaci s databázovým serverem (především s [[MySQL]] nebo [[PostgreSQL]]) a webovým serverem [[Apache HTTP Server|Apache]] je často využíván k tvorbě [[webová aplikace|webových aplikací]]. Díky velmi častému nasazení na serverch se vžila zkratka [[LAMP]] – tedy spojení [[Linux]], [[Apache]], [[MySQL]] a PHP nebo [[Perl]].<br />
<br />
S verzí PHP&nbsp;5 se výrazně zlepšil přístup k [[objektově orientované programování|objektově orientovanému programování]] podobný [[Java|Javě]].<br />
<br />
== Historie ==<br />
Od roku [[1994]] je PHP jedním z nejpoužívanějších způsobů tvorby dynamicky generovaných [[World Wide Web|WWW]] stránek. Jeho tvůrce ([[Rasmus Lerdorf]]) jej vytvořil pro svou osobní potřebu přepsáním z Perlu do jazyka C. Sada skriptů byla vydána ještě v témže roce pod názvem ''Personal Home Page Tools'', zkráceně PHP.<br />
<br />
V polovině roku se systém PHP spojil s programem ''Form Interpreter'' stejného autora. Tak vzniklo PHP/FI 2.0. Zeev Suraski a Andi Gutmans v roce [[1997]] přepsali [[parser]] a zformovali tak základ PHP3. Současně byl název změněn na dnešní podobu ''PHP Hypertext Preprocessor''. PHP3 vyšlo v roce [[1998]], bylo rychlejší, obsahovalo více funkcí. Také běželo i pod operačním systémem [[Microsoft Windows|Windows]].<br />
<br />
V roce [[2000]] vychází PHP verze 4, o čtyři roky později pak verze 5 s vylepšeným objektovým přístupem, podobným jazyku Java.<br />
<br />
==Ukázka kódu==<br />
Takto v PHP vypadá skript [[Hello world]]:<br />
<source lang="php"><br />
<?php<br />
echo "Ahoj, světe!";<br />
?><br />
</source><br />
<br />
==Typické vlastnosti jazyka PHP==<br />
* Jazyk PHP je dynamicky typový, tzn. že datový typ [[proměnná|proměnné]] se určí v okamžiku přiřazení hodnoty.<br />
* Díky tomu má PHP dva typy porovnání, '==' stejný jako v C, a '===' který platí jen když jsou oba dva výrazy stejného typu.<br />
* Pole jsou heterogenní, mohou tedy obsahovat jakékoli údaje, stejně tak jako jejich indexy.<br />
* Řetězce lze uzavírat jak do uvozovek (obsah je parsován), tak do apostrofů (obsah není parsován).<br />
<source lang="php"><br />
// Zde je v proměnné string (tečka je operátor spojování řetězců)<br />
$retez = "Ahoj, světe".', mám se dobře'." a nevadí, že střídám oddělovače";<br />
<br />
// Zde je v proměnné číslo (int)<br />
$cislo = 100;<br />
<br />
// Do proměnné je možne dát pole, které obsahuje jak čísla, tak znaky či další pole<br />
$pole = array('a', 'b', 1, 2, array('první' => 'podpole', 'vytištěno'));<br />
<br />
// Nenahlásí chybu (jenom varovaní) a vytiskne 'Array'<br />
print($pole);<br />
<br />
// Vytiskne obsah proměnné pole<br />
print_r($pole);<br />
<br />
// Test porovavání<br />
$cislo = 100;<br />
$retez = '100';<br />
<br />
// Toto porovnání ('==') platí díky automatické typové konverzi<br />
if ($retez == $cislo)<br />
{<br />
echo 'Jsou stejné';<br />
}<br />
<br />
// Ale porovnání pomocí '===' neplatí, neboť nejsou stejné typy<br />
if ($retez === $cislo)<br />
{<br />
echo 'To by nešlo';<br />
}<br />
</source><br />
* PHP do verze 4.2.0 automaticky přejímalo veškeré proměnné (považovalo je za globální) poslané jakoukoliv metodou ([[POST]], [[GET]], [[HTTP cookie|COOKIE]], ale i [[SESSION]]) (pokud administrátor serveru tuto funkci nevypnul) a umožňovalo s nimi dále pracovat. <br />
* od verze 4.2.0 lze hodnotu získat ze superglobálních proměnných s garancí původu informace (máme zaručeno, že data byla odeslána požadovanou metodou). Administrátor serveru má stále možnost používání globálních proměnných povolit, ale z bezpečnostních důvodů se to silně nedoporučuje.<br />
<source lang="php"><br />
// odešlu formulář metodou POST, kde do pole s názvem jmeno vepíšu 'Tom'<br />
echo $jmeno; // vrátí 'Tom', funguje pouze v případě povolených globálních proměnných<br />
echo $_POST['jmeno']; // vrátí 'Tom', superglobální proměnné fungují i při vypnutých globálních proměnných<br />
echo $_GET['jmeno']; // vypíše se chybové hlášení o neexistenci proměnné a vrátí NULL<br />
// NULL je zvláštní hodnota libovolného typu proměnných pro stav 'nedefinováno'<br />
</source><br />
<br />
== Historie jazyka ==<br />
{| class="wikitable"<br />
|-<br />
!Verze<br />
!style="width:10em"|Datum<br />
|-<br />
|PHP 1.0<br />
|[[8. červen|8. června]] [[1995]]<br />
|-<br />
|PHP 2.0 (PHP/FI)<br />
|[[16. duben|16. dubna]] [[1996]]<br />
|-<br />
|PHP 3.0<br />
|[[6. červen|6. června]] [[1998]]<br />
|-<br />
|PHP 4.0<br />
|[[22. květen|22. května]] [[2000]]<br />
|-<br />
|PHP 4.1<br />
|[[10. prosinec|10. prosince]] [[2001]]<br />
|-<br />
|PHP 4.2<br />
|[[22. duben|22. dubna]] [[2002]]<br />
|-<br />
|PHP 4.3<br />
|[[27. prosinec|27. prosince]] [[2002]]<br />
|-<br />
|PHP 4.4<br />
|[[11. červenec|11. července]] [[2005]]<br />
|-<br />
|PHP 5.0<br />
|[[13. červenec|13. července]] [[2004]]<br />
|-<br />
|PHP 5.1<br />
|[[25. listopad|25. listopadu]] [[2005]]<br />
|-<br />
|PHP 5.2<br />
|[[2. listopad|2. listopadu]] [[2006]]<br />
|}<br />
<br />
==Externí odkazy==<br />
* [http://www.php.net/ www.php.net] – Oficiální stránky PHP<br />
** [http://cz.php.net/ cz.php.net] – Částečně přeložený český mirror<br />
** [http://talks.php.net talks.php.net] - Různé prezentace o PHP<br />
*[http://www.linuxsoft.cz/php/ Seriál o PHP na serveru linuxsoft.cz]<br />
*[http://interval.cz/vyvoj-aplikaci/php/ Články o PHP na serveru Interval.cz]<br />
*[http://php.interval.cz Knihovna PHP] - příručka PHP pro každého (česky)<br />
*[http://php.interval.cz/objektove-orientovane-programovani-oop-v-php/ Objektově orientované programování (OOP) v PHP] - kompletní příručka založená na PHP5 (česky)<br />
*[http://www.jakpsatweb.cz/php/jak-zacit.html PHP pro začátečníky na serveru Jakpsatweb.cz]<br />
*[http://php.vrana.cz/ PHP triky] - Weblog o elegantním programování v PHP pro mírně pokročilé<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
[[Category:Programování]]</div>Megihttp://wiki.wowresource.eu/index.php?title=Delphi&diff=132Delphi2007-11-28T19:19:34Z<p>Megi: </p>
<hr />
<div><br />
'''Delphi''' je [[vývojové prostředí|integrované grafické vývojové prostředí]] firmy [[Borland]] určené pro tvorbu aplikací na platformě [[Microsoft Windows|MS Windows]] v jazyce [[Object Pascal]] (objektové nástavbě [[Pascal (programovací jazyk)|Pascal]]). Obsahuje systém [[RAD]] (Rapid Application Development), který umožňuje vizuální návrh [[grafické uživatelské rozhraní|grafického uživatelského rozhraní]], na jehož základě je automaticky vytvářena kostra [[zdrojový kód|zdrojového kódu]], což výrazně urychluje vývojový cyklus. <br />
<br />
Programování v Delphi je z velké části založeno na použití komponent. Komponenta je malý program (balíček funkcí), který vykonává určitou činnost (například zobrazuje text nebo obrázky, přehrává multimédia, komunikuje s databází, zprostředkovává FTP přenos, atd…).<br />
<br />
Velkou předností Delphi proti některým konkurenčním produktům jsou knihovny komponent, které jsou jejich součástí (např. VCL, CLX, Indy …). Dodávané komponenty významně usnadňují tvorbu aplikací. Další komponenty lze stáhnout z internetu (některé jsou zadarmo, některé se musí koupit). V Delphi lze vytvářet vlastní komponenty.<br />
<br />
== Související články ==<br />
* [[Kylix]] – projekt snažící se umožnit přenos aplikací v Delphi z Windows na platformu [[Linux]], v roce 2006 ukončen<br />
* [[C++Builder]] – obdoba Delphi pracující s jazykem [[C++]]<br />
* [[Eclipse (vývojové prostředí)|Eclipse]] – vývojové prostředí pro jazyk [[Java]]<br />
* [[Delphi for PHP]] - vývojové prostředí pro [[PHP]] s technologií [[AJAX]]<br />
<br />
== Externí odkazy ==<br />
* [http://www.codegear.com/ www.codegear.com] – domovské stránky společnosti [[CodeGear]], která převzala po společnosti Borland vývoj nástrojů RAD<br />
* [http://www.borland.com/ www.borland.com] – domovské stránky společnosti [[Borland]]<br />
* [http://www.borland.cz/ www.borland.cz] – české stránky<br />
* [http://www.lazarus.freepascal.org/ www.lazarus.freepascal.org] Lazarus - opensource IDE pro FreePascal (multiplatformní alternativa k Delphi)<br />
* [http://www.turboexplorer.com/delphi www.turboexplorer.com] – domovské stránky Turbo Delphi<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
[[Category:Programování]]</div>Megihttp://wiki.wowresource.eu/index.php?title=Delphi&diff=131Delphi2007-11-28T19:19:08Z<p>Megi: </p>
<hr />
<div>{{Název s křížkem|C#}}<br />
'''C#''' (vyslovované anglicky jako '''C Sharp''', /siː ʃʌɹp/, doslova to označuje [[nota|notu]] cis) je vysoko úrovňový [[objektově orientované programování|objektově orientovaný]] [[programovací jazyk]] vyvinutý firmou [[Microsoft]] zároveň s platformou [[.NET Framework]], později schválený standardizačními komisemi [[ECMA]] a [[Mezinárodní organizace pro normalizaci|ISO]]. Microsoft založil C# na jazycích [[C++]] a [[Java]] (a je tedy nepřímým potomkem jazyka [[C (programovací jazyk)|C]], ze kterého čerpá syntaxi).<br />
<br />
C# se využívá hlavně k tvorbě databázových programů, webových aplikací, [[webová služba|webových služeb]], formulářových aplikací ve [[Microsoft Windows|Windows]] apod.<br />
<br />
==Cíle jazyka ==<br />
Standard ECMA definuje současný design C# takto:<br />
* C# je jednoduchý, moderní, mnohaúčelový a objektově orientovaný programovací jazyk.<br />
* Jazyk a jeho implementace poskytuje podporu pro principy [[softwarové inženýrství|softwarového inženýrství]] jako jsou: hlídání hranic polí, detekce použití neinicializovaných proměnných a automatický [[garbage collector]]. Důležité jsou také jeho vlastnosti jako: robustnost, trvanlivost a programátorská produktivita.<br />
* Jazyk je vhodný pro vývoj softwarových komponent distribuovaných v různých prostředích.<br />
* Přenositelnost zdrojového kódu je velmi důležitá, obzvláště pro ty programátory kteří jsou obeznámeni s [[C (programovací jazyk)|C]] a [[C++]].<br />
* Mezinárodní podpora je též důležitá.<br />
<br />
==Používané platformy==<br />
<br />
Jazyk C# je navržen tak, aby co nejvíce zohledňoval strukturu [[Common Language Infrastructure]]&nbsp;(CLI), se kterou je používán. Většina základních typů v C# přímo odpovídá základním typům v platformě CLI. Návrh jazyka ale nevyžaduje, aby [[překladač]] generoval [[Common Intermediate Language]] (CIL) nebo jíný konkrétní formát. Teoreticky je možné, aby překladač vytvářel strojový kód podobný běžným překladačům jazyka C++ a jiných, ale v praxi všechny překladače jazyka C# generují CLI.<br />
<br />
== Historie a verze jazyka ==<br />
<br />
=== C# 1.0 ===<br />
<br />
První verze vydaná v roce společně s .NET Frameworkem 1.0 obsahovala základní podporu objektového programování, ve které vycházela z jazyka C++ a zkušeností s jejich aktualizací v jazyce Java.<br />
<br />
=== C# 2.0 ===<br />
<br />
Na další verzi se čekalo až do konce roku 2005. Mezi její nové vlastnosti patří:<br />
<br />
* Nativní podpora generik vycházející z podpory na úrovni CLI.<br />
* Částečné a statické třídy.<br />
* Iterátory.<br />
* Anonymní metody pro pohodlnější užívání delegátů (odkazů na metody).<br />
* Nullovatelné hodnotové typy a operátor koalescence.<br />
<br />
=== C# 3.0 ===<br />
<br />
Vyjde v roce 2008 společně s .NET Frameworkem 3.5 a Visual Studiem 2008, jeho specifikace je však již hotová. Bude obsahovat poměrně revoluční změny, které však nebudou vyžadovat změnu podkladového IL, takže aplikace v něm psané půjdou spouštět i na počítačích vybavených toliko druhým Frameworkem.<br />
<br />
* [[LINQ]] (Language Integrated Query) zavede několik nových klíčových slov převzatých z jazyka SQL, za pomocí kterých se půjde dotazovat na objekty reprezentující databáze, XML soubory, nebo cokoliv dalšího.<br />
* Lambda metody jsou jednodušší metodou zápisu anonymních metod.<br />
* Inicializátory objektů a kolekcí.<br />
* Rozšiřující metody.<br />
* Anonymní třídy umožňující např. rychlé vytvoření objektů přenášejících informace vyžádané z databáze přes LINQ.<br />
* Klíčové slovo var, nutná to podmínka pro využití anonymních tříd.<br />
* Výrazové stromy (expression trees) umožňující za jistých podmínek kompilátoru místo vyhodnocení výrazu vytvoření jeho objektové reprezentace.<br />
<br />
== „Ahoj, světe!“ ==<br />
Následující jednoduchá aplikace vypíše „[[Ahoj světe|Ahoj, světe!]]“ na [[standardní výstup]] [[konzolová aplikace|konzolové aplikace]].<br />
<br />
<source lang="csharp"><br />
using System;<br />
<br />
namespace MojeKonzolováAplikace<br />
{<br />
class HlavníTřída<br />
{<br />
static void Main(string[] args)<br />
{<br />
Console.WriteLine("Ahoj, světe!");<br />
}<br />
}<br />
}<br />
</source><br />
<br />
Rozeberme krátce jednotlivé příkazy. Třídy, základní jednotky objektového programování, jsou v C# rozděleny pro lepší orientaci a jednoznačnost názvů do jmenných prostorů. Na počátku zdrojového kódu jmenujeme příkazem using jmenné prostory, jež budeme používat — nebudeme pak muset rozepisovat jejich název, všechny třídy z nich jsou nám hned přístupny.<br />
<br />
Na dalším řádku příkazem namespace říkáme, že chceme zařadit kód vymezený následujícími složenými závorkami do jmenného prostoru MojeKonzolováAplikace. Hned poté definujeme klíčovým slovem class třídu Hlavní třída, její obsah bude opět vymezen dalšími složenými závorkami. Kód není nutné odsazovat (bílé znaky se ignorují), jen je to praktické.<br />
<br />
Všimněme si také, že identifikátory mohou obsahovat písmenka s háčky a čárkami — je tomu tak již od prvních verzí jazyka.<br />
<br />
== Vývojová prostředí ==<br />
* [[Microsoft Visual Studio|Microsoft Visual Studio]] – oficiální nástroj od společnosti [[Microsoft|Microsoft]]<br />
* [[Turbo Csharp Explorer|Turbo C# Explorer]] – nástroj od společnosti [[Borland]] <br />
* [[SharpDevelop|SharpDevelop]] – OpenSource nástroj fungující jen v [[Microsoft Windows]]<br />
* [[MonoDevelop]] – [[multiplatformní software|multiplatformní]] OpenSource nástroj využívající [[Mono (platforma)|Mono]] a [[Gtk Sharp|Gtk#]]<br />
* [[Baltík|Baltík]] – Programovací nástroj pro začátečníky v C#<br />
<br />
== Externí odkazy ==<br />
* [http://www.zive.cz/h/Programovani/AR.asp?ARI=134680 Srovnání Visual C#, Turbo C# a SharpDevelop na serveru zive.cz]<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
[[Category:Programování]]</div>Megihttp://wiki.wowresource.eu/index.php?title=C_Sharp&diff=130C Sharp2007-11-28T19:17:43Z<p>Megi: </p>
<hr />
<div>'''C#''' (vyslovované anglicky jako '''C Sharp''', /siː ʃʌɹp/, doslova to označuje [[nota|notu]] cis) je vysoko úrovňový [[objektově orientované programování|objektově orientovaný]] [[programovací jazyk]] vyvinutý firmou [[Microsoft]] zároveň s platformou [[.NET Framework]], později schválený standardizačními komisemi [[ECMA]] a [[Mezinárodní organizace pro normalizaci|ISO]]. Microsoft založil C# na jazycích [[C++]] a [[Java]] (a je tedy nepřímým potomkem jazyka [[C (programovací jazyk)|C]], ze kterého čerpá syntaxi).<br />
<br />
C# se využívá hlavně k tvorbě databázových programů, webových aplikací, [[webová služba|webových služeb]], formulářových aplikací ve [[Microsoft Windows|Windows]] apod.<br />
<br />
==Cíle jazyka ==<br />
Standard ECMA definuje současný design C# takto:<br />
* C# je jednoduchý, moderní, mnohaúčelový a objektově orientovaný programovací jazyk.<br />
* Jazyk a jeho implementace poskytuje podporu pro principy [[softwarové inženýrství|softwarového inženýrství]] jako jsou: hlídání hranic polí, detekce použití neinicializovaných proměnných a automatický [[garbage collector]]. Důležité jsou také jeho vlastnosti jako: robustnost, trvanlivost a programátorská produktivita.<br />
* Jazyk je vhodný pro vývoj softwarových komponent distribuovaných v různých prostředích.<br />
* Přenositelnost zdrojového kódu je velmi důležitá, obzvláště pro ty programátory kteří jsou obeznámeni s [[C (programovací jazyk)|C]] a [[C++]].<br />
* Mezinárodní podpora je též důležitá.<br />
<br />
==Používané platformy==<br />
<br />
Jazyk C# je navržen tak, aby co nejvíce zohledňoval strukturu [[Common Language Infrastructure]]&nbsp;(CLI), se kterou je používán. Většina základních typů v C# přímo odpovídá základním typům v platformě CLI. Návrh jazyka ale nevyžaduje, aby [[překladač]] generoval [[Common Intermediate Language]] (CIL) nebo jíný konkrétní formát. Teoreticky je možné, aby překladač vytvářel strojový kód podobný běžným překladačům jazyka C++ a jiných, ale v praxi všechny překladače jazyka C# generují CLI.<br />
<br />
== Historie a verze jazyka ==<br />
<br />
=== C# 1.0 ===<br />
<br />
První verze vydaná v roce společně s .NET Frameworkem 1.0 obsahovala základní podporu objektového programování, ve které vycházela z jazyka C++ a zkušeností s jejich aktualizací v jazyce Java.<br />
<br />
=== C# 2.0 ===<br />
<br />
Na další verzi se čekalo až do konce roku 2005. Mezi její nové vlastnosti patří:<br />
<br />
* Nativní podpora generik vycházející z podpory na úrovni CLI.<br />
* Částečné a statické třídy.<br />
* Iterátory.<br />
* Anonymní metody pro pohodlnější užívání delegátů (odkazů na metody).<br />
* Nullovatelné hodnotové typy a operátor koalescence.<br />
<br />
=== C# 3.0 ===<br />
<br />
Vyjde v roce 2008 společně s .NET Frameworkem 3.5 a Visual Studiem 2008, jeho specifikace je však již hotová. Bude obsahovat poměrně revoluční změny, které však nebudou vyžadovat změnu podkladového IL, takže aplikace v něm psané půjdou spouštět i na počítačích vybavených toliko druhým Frameworkem.<br />
<br />
* [[LINQ]] (Language Integrated Query) zavede několik nových klíčových slov převzatých z jazyka SQL, za pomocí kterých se půjde dotazovat na objekty reprezentující databáze, XML soubory, nebo cokoliv dalšího.<br />
* Lambda metody jsou jednodušší metodou zápisu anonymních metod.<br />
* Inicializátory objektů a kolekcí.<br />
* Rozšiřující metody.<br />
* Anonymní třídy umožňující např. rychlé vytvoření objektů přenášejících informace vyžádané z databáze přes LINQ.<br />
* Klíčové slovo var, nutná to podmínka pro využití anonymních tříd.<br />
* Výrazové stromy (expression trees) umožňující za jistých podmínek kompilátoru místo vyhodnocení výrazu vytvoření jeho objektové reprezentace.<br />
<br />
== „Ahoj, světe!“ ==<br />
Následující jednoduchá aplikace vypíše „[[Ahoj světe|Ahoj, světe!]]“ na [[standardní výstup]] [[konzolová aplikace|konzolové aplikace]].<br />
<br />
<source lang="csharp"><br />
using System;<br />
<br />
namespace MojeKonzolováAplikace<br />
{<br />
class HlavníTřída<br />
{<br />
static void Main(string[] args)<br />
{<br />
Console.WriteLine("Ahoj, světe!");<br />
}<br />
}<br />
}<br />
</source><br />
<br />
Rozeberme krátce jednotlivé příkazy. Třídy, základní jednotky objektového programování, jsou v C# rozděleny pro lepší orientaci a jednoznačnost názvů do jmenných prostorů. Na počátku zdrojového kódu jmenujeme příkazem using jmenné prostory, jež budeme používat — nebudeme pak muset rozepisovat jejich název, všechny třídy z nich jsou nám hned přístupny.<br />
<br />
Na dalším řádku příkazem namespace říkáme, že chceme zařadit kód vymezený následujícími složenými závorkami do jmenného prostoru MojeKonzolováAplikace. Hned poté definujeme klíčovým slovem class třídu Hlavní třída, její obsah bude opět vymezen dalšími složenými závorkami. Kód není nutné odsazovat (bílé znaky se ignorují), jen je to praktické.<br />
<br />
Všimněme si také, že identifikátory mohou obsahovat písmenka s háčky a čárkami — je tomu tak již od prvních verzí jazyka.<br />
<br />
== Vývojová prostředí ==<br />
* [[Microsoft Visual Studio|Microsoft Visual Studio]] – oficiální nástroj od společnosti [[Microsoft|Microsoft]]<br />
* [[Turbo Csharp Explorer|Turbo C# Explorer]] – nástroj od společnosti [[Borland]] <br />
* [[SharpDevelop|SharpDevelop]] – OpenSource nástroj fungující jen v [[Microsoft Windows]]<br />
* [[MonoDevelop]] – [[multiplatformní software|multiplatformní]] OpenSource nástroj využívající [[Mono (platforma)|Mono]] a [[Gtk Sharp|Gtk#]]<br />
* [[Baltík|Baltík]] – Programovací nástroj pro začátečníky v C#<br />
<br />
== Externí odkazy ==<br />
* [http://www.zive.cz/h/Programovani/AR.asp?ARI=134680 Srovnání Visual C#, Turbo C# a SharpDevelop na serveru zive.cz]<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
[[Category:Programování]]</div>Megihttp://wiki.wowresource.eu/index.php?title=C_Sharp&diff=129C Sharp2007-11-28T19:17:31Z<p>Megi: </p>
<hr />
<div>{{C#}}<br />
'''C#''' (vyslovované anglicky jako '''C Sharp''', /siː ʃʌɹp/, doslova to označuje [[nota|notu]] cis) je vysoko úrovňový [[objektově orientované programování|objektově orientovaný]] [[programovací jazyk]] vyvinutý firmou [[Microsoft]] zároveň s platformou [[.NET Framework]], později schválený standardizačními komisemi [[ECMA]] a [[Mezinárodní organizace pro normalizaci|ISO]]. Microsoft založil C# na jazycích [[C++]] a [[Java]] (a je tedy nepřímým potomkem jazyka [[C (programovací jazyk)|C]], ze kterého čerpá syntaxi).<br />
<br />
C# se využívá hlavně k tvorbě databázových programů, webových aplikací, [[webová služba|webových služeb]], formulářových aplikací ve [[Microsoft Windows|Windows]] apod.<br />
<br />
==Cíle jazyka ==<br />
Standard ECMA definuje současný design C# takto:<br />
* C# je jednoduchý, moderní, mnohaúčelový a objektově orientovaný programovací jazyk.<br />
* Jazyk a jeho implementace poskytuje podporu pro principy [[softwarové inženýrství|softwarového inženýrství]] jako jsou: hlídání hranic polí, detekce použití neinicializovaných proměnných a automatický [[garbage collector]]. Důležité jsou také jeho vlastnosti jako: robustnost, trvanlivost a programátorská produktivita.<br />
* Jazyk je vhodný pro vývoj softwarových komponent distribuovaných v různých prostředích.<br />
* Přenositelnost zdrojového kódu je velmi důležitá, obzvláště pro ty programátory kteří jsou obeznámeni s [[C (programovací jazyk)|C]] a [[C++]].<br />
* Mezinárodní podpora je též důležitá.<br />
<br />
==Používané platformy==<br />
<br />
Jazyk C# je navržen tak, aby co nejvíce zohledňoval strukturu [[Common Language Infrastructure]]&nbsp;(CLI), se kterou je používán. Většina základních typů v C# přímo odpovídá základním typům v platformě CLI. Návrh jazyka ale nevyžaduje, aby [[překladač]] generoval [[Common Intermediate Language]] (CIL) nebo jíný konkrétní formát. Teoreticky je možné, aby překladač vytvářel strojový kód podobný běžným překladačům jazyka C++ a jiných, ale v praxi všechny překladače jazyka C# generují CLI.<br />
<br />
== Historie a verze jazyka ==<br />
<br />
=== C# 1.0 ===<br />
<br />
První verze vydaná v roce společně s .NET Frameworkem 1.0 obsahovala základní podporu objektového programování, ve které vycházela z jazyka C++ a zkušeností s jejich aktualizací v jazyce Java.<br />
<br />
=== C# 2.0 ===<br />
<br />
Na další verzi se čekalo až do konce roku 2005. Mezi její nové vlastnosti patří:<br />
<br />
* Nativní podpora generik vycházející z podpory na úrovni CLI.<br />
* Částečné a statické třídy.<br />
* Iterátory.<br />
* Anonymní metody pro pohodlnější užívání delegátů (odkazů na metody).<br />
* Nullovatelné hodnotové typy a operátor koalescence.<br />
<br />
=== C# 3.0 ===<br />
<br />
Vyjde v roce 2008 společně s .NET Frameworkem 3.5 a Visual Studiem 2008, jeho specifikace je však již hotová. Bude obsahovat poměrně revoluční změny, které však nebudou vyžadovat změnu podkladového IL, takže aplikace v něm psané půjdou spouštět i na počítačích vybavených toliko druhým Frameworkem.<br />
<br />
* [[LINQ]] (Language Integrated Query) zavede několik nových klíčových slov převzatých z jazyka SQL, za pomocí kterých se půjde dotazovat na objekty reprezentující databáze, XML soubory, nebo cokoliv dalšího.<br />
* Lambda metody jsou jednodušší metodou zápisu anonymních metod.<br />
* Inicializátory objektů a kolekcí.<br />
* Rozšiřující metody.<br />
* Anonymní třídy umožňující např. rychlé vytvoření objektů přenášejících informace vyžádané z databáze přes LINQ.<br />
* Klíčové slovo var, nutná to podmínka pro využití anonymních tříd.<br />
* Výrazové stromy (expression trees) umožňující za jistých podmínek kompilátoru místo vyhodnocení výrazu vytvoření jeho objektové reprezentace.<br />
<br />
== „Ahoj, světe!“ ==<br />
Následující jednoduchá aplikace vypíše „[[Ahoj světe|Ahoj, světe!]]“ na [[standardní výstup]] [[konzolová aplikace|konzolové aplikace]].<br />
<br />
<source lang="csharp"><br />
using System;<br />
<br />
namespace MojeKonzolováAplikace<br />
{<br />
class HlavníTřída<br />
{<br />
static void Main(string[] args)<br />
{<br />
Console.WriteLine("Ahoj, světe!");<br />
}<br />
}<br />
}<br />
</source><br />
<br />
Rozeberme krátce jednotlivé příkazy. Třídy, základní jednotky objektového programování, jsou v C# rozděleny pro lepší orientaci a jednoznačnost názvů do jmenných prostorů. Na počátku zdrojového kódu jmenujeme příkazem using jmenné prostory, jež budeme používat — nebudeme pak muset rozepisovat jejich název, všechny třídy z nich jsou nám hned přístupny.<br />
<br />
Na dalším řádku příkazem namespace říkáme, že chceme zařadit kód vymezený následujícími složenými závorkami do jmenného prostoru MojeKonzolováAplikace. Hned poté definujeme klíčovým slovem class třídu Hlavní třída, její obsah bude opět vymezen dalšími složenými závorkami. Kód není nutné odsazovat (bílé znaky se ignorují), jen je to praktické.<br />
<br />
Všimněme si také, že identifikátory mohou obsahovat písmenka s háčky a čárkami — je tomu tak již od prvních verzí jazyka.<br />
<br />
== Vývojová prostředí ==<br />
* [[Microsoft Visual Studio|Microsoft Visual Studio]] – oficiální nástroj od společnosti [[Microsoft|Microsoft]]<br />
* [[Turbo Csharp Explorer|Turbo C# Explorer]] – nástroj od společnosti [[Borland]] <br />
* [[SharpDevelop|SharpDevelop]] – OpenSource nástroj fungující jen v [[Microsoft Windows]]<br />
* [[MonoDevelop]] – [[multiplatformní software|multiplatformní]] OpenSource nástroj využívající [[Mono (platforma)|Mono]] a [[Gtk Sharp|Gtk#]]<br />
* [[Baltík|Baltík]] – Programovací nástroj pro začátečníky v C#<br />
<br />
== Externí odkazy ==<br />
* [http://www.zive.cz/h/Programovani/AR.asp?ARI=134680 Srovnání Visual C#, Turbo C# a SharpDevelop na serveru zive.cz]<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
[[Category:Programování]]</div>Megihttp://wiki.wowresource.eu/index.php?title=C_Sharp&diff=128C Sharp2007-11-28T19:17:15Z<p>Megi: </p>
<hr />
<div>{{Název s křížkem|C#}}<br />
'''C#''' (vyslovované anglicky jako '''C Sharp''', /siː ʃʌɹp/, doslova to označuje [[nota|notu]] cis) je vysoko úrovňový [[objektově orientované programování|objektově orientovaný]] [[programovací jazyk]] vyvinutý firmou [[Microsoft]] zároveň s platformou [[.NET Framework]], později schválený standardizačními komisemi [[ECMA]] a [[Mezinárodní organizace pro normalizaci|ISO]]. Microsoft založil C# na jazycích [[C++]] a [[Java]] (a je tedy nepřímým potomkem jazyka [[C (programovací jazyk)|C]], ze kterého čerpá syntaxi).<br />
<br />
C# se využívá hlavně k tvorbě databázových programů, webových aplikací, [[webová služba|webových služeb]], formulářových aplikací ve [[Microsoft Windows|Windows]] apod.<br />
<br />
==Cíle jazyka ==<br />
Standard ECMA definuje současný design C# takto:<br />
* C# je jednoduchý, moderní, mnohaúčelový a objektově orientovaný programovací jazyk.<br />
* Jazyk a jeho implementace poskytuje podporu pro principy [[softwarové inženýrství|softwarového inženýrství]] jako jsou: hlídání hranic polí, detekce použití neinicializovaných proměnných a automatický [[garbage collector]]. Důležité jsou také jeho vlastnosti jako: robustnost, trvanlivost a programátorská produktivita.<br />
* Jazyk je vhodný pro vývoj softwarových komponent distribuovaných v různých prostředích.<br />
* Přenositelnost zdrojového kódu je velmi důležitá, obzvláště pro ty programátory kteří jsou obeznámeni s [[C (programovací jazyk)|C]] a [[C++]].<br />
* Mezinárodní podpora je též důležitá.<br />
<br />
==Používané platformy==<br />
<br />
Jazyk C# je navržen tak, aby co nejvíce zohledňoval strukturu [[Common Language Infrastructure]]&nbsp;(CLI), se kterou je používán. Většina základních typů v C# přímo odpovídá základním typům v platformě CLI. Návrh jazyka ale nevyžaduje, aby [[překladač]] generoval [[Common Intermediate Language]] (CIL) nebo jíný konkrétní formát. Teoreticky je možné, aby překladač vytvářel strojový kód podobný běžným překladačům jazyka C++ a jiných, ale v praxi všechny překladače jazyka C# generují CLI.<br />
<br />
== Historie a verze jazyka ==<br />
<br />
=== C# 1.0 ===<br />
<br />
První verze vydaná v roce společně s .NET Frameworkem 1.0 obsahovala základní podporu objektového programování, ve které vycházela z jazyka C++ a zkušeností s jejich aktualizací v jazyce Java.<br />
<br />
=== C# 2.0 ===<br />
<br />
Na další verzi se čekalo až do konce roku 2005. Mezi její nové vlastnosti patří:<br />
<br />
* Nativní podpora generik vycházející z podpory na úrovni CLI.<br />
* Částečné a statické třídy.<br />
* Iterátory.<br />
* Anonymní metody pro pohodlnější užívání delegátů (odkazů na metody).<br />
* Nullovatelné hodnotové typy a operátor koalescence.<br />
<br />
=== C# 3.0 ===<br />
<br />
Vyjde v roce 2008 společně s .NET Frameworkem 3.5 a Visual Studiem 2008, jeho specifikace je však již hotová. Bude obsahovat poměrně revoluční změny, které však nebudou vyžadovat změnu podkladového IL, takže aplikace v něm psané půjdou spouštět i na počítačích vybavených toliko druhým Frameworkem.<br />
<br />
* [[LINQ]] (Language Integrated Query) zavede několik nových klíčových slov převzatých z jazyka SQL, za pomocí kterých se půjde dotazovat na objekty reprezentující databáze, XML soubory, nebo cokoliv dalšího.<br />
* Lambda metody jsou jednodušší metodou zápisu anonymních metod.<br />
* Inicializátory objektů a kolekcí.<br />
* Rozšiřující metody.<br />
* Anonymní třídy umožňující např. rychlé vytvoření objektů přenášejících informace vyžádané z databáze přes LINQ.<br />
* Klíčové slovo var, nutná to podmínka pro využití anonymních tříd.<br />
* Výrazové stromy (expression trees) umožňující za jistých podmínek kompilátoru místo vyhodnocení výrazu vytvoření jeho objektové reprezentace.<br />
<br />
== „Ahoj, světe!“ ==<br />
Následující jednoduchá aplikace vypíše „[[Ahoj světe|Ahoj, světe!]]“ na [[standardní výstup]] [[konzolová aplikace|konzolové aplikace]].<br />
<br />
<source lang="csharp"><br />
using System;<br />
<br />
namespace MojeKonzolováAplikace<br />
{<br />
class HlavníTřída<br />
{<br />
static void Main(string[] args)<br />
{<br />
Console.WriteLine("Ahoj, světe!");<br />
}<br />
}<br />
}<br />
</source><br />
<br />
Rozeberme krátce jednotlivé příkazy. Třídy, základní jednotky objektového programování, jsou v C# rozděleny pro lepší orientaci a jednoznačnost názvů do jmenných prostorů. Na počátku zdrojového kódu jmenujeme příkazem using jmenné prostory, jež budeme používat — nebudeme pak muset rozepisovat jejich název, všechny třídy z nich jsou nám hned přístupny.<br />
<br />
Na dalším řádku příkazem namespace říkáme, že chceme zařadit kód vymezený následujícími složenými závorkami do jmenného prostoru MojeKonzolováAplikace. Hned poté definujeme klíčovým slovem class třídu Hlavní třída, její obsah bude opět vymezen dalšími složenými závorkami. Kód není nutné odsazovat (bílé znaky se ignorují), jen je to praktické.<br />
<br />
Všimněme si také, že identifikátory mohou obsahovat písmenka s háčky a čárkami — je tomu tak již od prvních verzí jazyka.<br />
<br />
== Vývojová prostředí ==<br />
* [[Microsoft Visual Studio|Microsoft Visual Studio]] – oficiální nástroj od společnosti [[Microsoft|Microsoft]]<br />
* [[Turbo Csharp Explorer|Turbo C# Explorer]] – nástroj od společnosti [[Borland]] <br />
* [[SharpDevelop|SharpDevelop]] – OpenSource nástroj fungující jen v [[Microsoft Windows]]<br />
* [[MonoDevelop]] – [[multiplatformní software|multiplatformní]] OpenSource nástroj využívající [[Mono (platforma)|Mono]] a [[Gtk Sharp|Gtk#]]<br />
* [[Baltík|Baltík]] – Programovací nástroj pro začátečníky v C#<br />
<br />
== Externí odkazy ==<br />
* [http://www.zive.cz/h/Programovani/AR.asp?ARI=134680 Srovnání Visual C#, Turbo C# a SharpDevelop na serveru zive.cz]<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
[[Category:Programování]]</div>Megihttp://wiki.wowresource.eu/index.php?title=C%2B%2B&diff=127C++2007-11-28T19:15:50Z<p>Megi: </p>
<hr />
<div>'''C++''' je [[objektově orientované programování|objektově orientovaný]] [[programovací jazyk]], který vyvinul [[Bjarne Stroustrup]] a další v [[Bell Labs|Bellových laboratořích]] [[AT&T]] rozšířením [[C (programovací jazyk)|jazyka C]]. C++ podporuje několik programovacích stylů (paradigmat) jako je procedurální programování, objektově orientované programování a generické programování, není tedy jazykem čistě objektovým. V současné době patří C++ mezi nejrozšířenější programovací jazyky.<br />
== Historie ==<br />
=== Název C++ ===<br />
Starší verze jazyka, společně označované jako „C with Classes“ ([[čeština|česky]] C s třídami), byly používány od roku 1980. Jméno „C++“ vymyslel Rick Mascitti v létě 1983. Toto jméno zdůrazňuje evoluční povahu změn oproti jazyku [[C (programovací jazyk)|C]]; „++“ je operátor inkrementu v [[C (programovací jazyk)|C]]. Poněkud kratší jméno „C+“ je syntaktická chyba, bylo též použito jako jméno jiného nesouvisejícího jazyka.<br />
<br />
=== Kompatibilita s jazykem C ===<br />
Jazyk [[C (programovací jazyk)|C]] je až na několik jasně definovaných výjimek podmnožinou C++. Jak uvádí [[Bjarne Stroustrup]], všechny programy uvedené ve slavné učebnici jazyka C ''[[The C Programming Language]]'' od [[Brian W. Kernighan|Briana W. Kernighana]] a [[Dennis M. Ritchie|Dennise M. Ritchieho]] jsou zároveň programy v C++.<br />
<br />
První překladače C++ byly [[preprocesor]]y, které překládaly z C++ do čistého C. Považovat jazyk C++ za pouhé rozšíření jazyka [[C (programovací jazyk)|C]] by ale bylo chybou, protože není s jazykem C zcela kompatibilní. Některé programy v jazyce C nelze překládat překladači pro C++.<br />
<br />
== „Hello, World!“ ==<br />
Následující jednoduchá aplikace vypíše „[[Hello world|Hello, world!]]“ na [[standardní výstup]].<br />
<source lang="cpp"><br />
#include <iostream> // includuje hlavickovy soubor iostream (pro in-stream a out-stream)<br />
<br />
using namespace std; // obor nazvu<br />
<br />
int main() //hlavni funkce programu, zacatek vlastniho tela programu<br />
{<br />
cout << "Hello, world!" << endl; // vystup na standardní výstup ktera vypise: Hello, world!<br />
return 0; // konec programu, funkce return vraci nejakou hodnotu v nasem pripade 0<br />
}<br />
</source><br />
<br />
== Argumenty funkce ''main'' ==<br />
Tato aplikace vypíše všechny argumenty funkce ''main''.<br />
<source lang="cpp"><br />
#include <iostream><br />
<br />
using namespace std;<br />
<br />
int main(int argc, char *argv[])<br />
{<br />
for(int i = 0; i < argc; ++i)<br />
{<br />
cout << i + 1 << ": " << argv[i] << endl;<br />
}<br />
}<br />
</source><br />
<br />
== Vlastnosti jazyka a rozdíly proti jazyku C ==<br />
<br />
=== Objekty ===<br />
Koncepce objektů jazyka C++ byla převzata z jazyka [[Simula 67]]. [[Objekt (programování)|Objekty]] (třídy) jsou pojaty jako přirozené rozšíření datových struktur jazyka C o možnost vkládání členských funkcí. C++ umožňuje řídit viditelnost složek objektů pro ostatní části programu. Pro objekty je možná vícenásobná dědičnost.<br />
<br />
Příklad definice třídy:<br />
<source lang="cpp"><br />
class Komplex {<br />
double x; // datové složky objektu<br />
double y; // datové složky objektu<br />
<br />
public: // následující části objektu budou viditelné i mimo objekt<br />
Komplex(); // konstruktor - funkce volaná automaticky při vytvoření objektu<br />
~Komplex(); // destruktor - funkce volaná automaticky při rušení objektu<br />
<br />
double r() const { return sqr(x*x+y*y) }; // funkce třídy<br />
};<br />
<br />
void f() {<br />
// deklarace dvou objektů dané třídy:<br />
Komplex A;<br />
Komplex B;<br />
<br />
// následují další příkazy…<br />
}<br />
</source><br />
<br />
==== Dědičnost ====<br />
Pod tímto pojmem se skrývá asi ta největší zbraň [[Objektově orientované programování|OOP]]. Hlavní myšlenka dědičnosti je znovupoužitelnost, to znamená, že můžeme vytvářet nové třídy založené na třídě, která již byla definována, místo toho abychom museli znovu psát již jednou napsaný kód jen s jinými typy proměnných. Díky dědičnosti je možné napsat kód jednou pro obecnější typ a poté ho používat pro všechny jeho potomky.<br />
<br />
=== Šablony ===<br />
Šablony dále rozšiřují znovupoužitelnost kódu, neboť umožňují napsat kód se zcela obecným (neurčeným) datovým typem. Jsou užitečné především pro základní typy, které v C++ nejsou objekty: mnohé jiné jazyky mohou dosáhnout stejné funkcionality použitím kořene objektové hierarchie.<br />
<br />
=== Přetěžování (Polymorfizmus) funkcí a operátorů ===<br />
Jazyk C++ umožňuje deklarovat více funkcí se stejným názvem. Kompilátor určí správné použití podle počtu a typu parametrů. Tato technika se nazývá přetěžování funkcí.<br />
Velmi silnou vlastností jazyka je i možnost přetěžovat standardní operátory (například '+' nebo '=') a tak přirozeně využívat tyto operátory pro nově vytvářené třídy a tvorbu [[abstraktní datový typ|abstraktních datových typů]].<br />
<br />
===Standardní knihovna===<br />
Standard jazyka C++ z roku [[1998]] se skládá ze dvou částí: popis jazyka a standardní knihovny. Standardní knihovna jazyka C++ obsahuje mírně modifikovanou verzi standardní knihovny jazyka [[C (programovací jazyk)|C]] a [[Standard Template Library]] (STL).<br />
<br />
====Standard Template Library====<br />
STL obsahuje velké množství užitečných datových struktur a algoritmů, jako například vektory (vylepšené pole), spojové seznamy, iterátory, zobecněné [[ukazatel]]e, (multi)mapy, (multi)sety. Všechny tyto struktury mají konzistentní rozhraní. S použitím šablon je pak možné programovat generické algoritmy schopné pracovat s kterýmkoliv kontejnerem nebo sekvencí definovanou iterátory.<br />
<br />
Používání standardní knihovny – například používání std::vector nebo std::string místo polí ve stylu jazyka C – může vést k bezpečnějšímu a lépe škálovatelnému softwaru.<br />
<br />
STL byla původně vytvořena a používána firmou [[Hewlett-Packard]] a později také [[Silicon Graphics]]. Standard se na ni neodkazuje jako na „STL“, ale jen jako na část standardní knihovny, přesto mnoho lidí stále používá tento pojem na odlišení od ostatních častí knihovny.<br />
<br />
Většina [[kompilátor]]ů poskytuje implementaci standardu C++ včetně STL. Existují také implementace standardu nezávislé na kompilátoru (např. [http://stlport.sf.net STLPort]). Jiné projekty také vytvářejí různé zákaznické implementace knihovny jazyka a STL s různými cíly návrhu.<br />
<br />
== Literatura ==<br />
<br />
* [http://www.research.att.com/~bs/3rd.html The C++ Programming Language]: [[Bjarne Stroustrup]], special ed., Addison-Weslye, ISBN 0-201-70073-5, 2000<br />
* The C++ Standard, Incorporating Technical Corrigendum 1, BS ISO/IEC 14882:2003 (2nd ed.), John Wiley & Sons, ISBN 0-470-84674-7<br />
* [[Brian Kernighan|Brian W. Kernighan]], [[Dennis Ritchie|Dennis M. Ritchie]]: ''[[The C Programming Language]]'', Second Edition, Prentice-Hall, ISBN 0-13-110370-9 1988<br />
* [http://kmdec.fjfi.cvut.cz/~virius/publ-list.html#CPP Programování v C++]: Miroslav Virius, [http://web.cvut.cz/ph/ Vydavatelství ČVUT], druhé vydání, ISBN 80-01-02978-6 2004<br />
* Naučte se C++ za 21 dní: Jesse Liberty, [http://www.cpress.cz/ Computer Press], ISBN 80-7226-774-4, 2002<br />
* Programovací jazyk C++ pro zelenáče: Petr Šaloun, [http://www.neo.cz Neokortex] s.r.o., ISBN 80-86330-18-4, 2005<br />
* Rozumíme C++: Andrew Koenig, Barbara E. Moo, [http://www.cpress.cz/ Computer Press], ISBN 80-7226-656-X, 2003<br />
* [http://gama.fsv.cvut.cz/~cepek/uvodc++/uvodc++-2004-09-11.pdf Úvod do C++]: Prof. Ing. Aleš Čepek, CSc., Vydavatelství ČVUT, 2004<br />
<br />
== Externí odkazy ==<br />
* [http://www.research.att.com/~bs/ http://www.research.att.com/~bs/] - domovská stránka Bjarne Stroustrupa; mimo jiné uvádí historii C++, odpovědi na často kladené otázky a podrobný glosář. Jde o základní zdroj informací a odkazů věnovaných C++.<br />
* [http://www.builder.cz/ www.builder.cz] – Informační server o programování<br />
<br />
=== Vývojové nástroje ===<br />
* [http://www.gnu.org/software/gcc/gcc.html gcc] (''GNU Compiler Collection'') - [[Multiplatformní software|multiplatformní]] [[překladač]] pro jazyky [[C (programovací jazyk)|C]], '''C++''', [[Java]] a další ([[svobodný software]]) - viz [[GCC]]<br />
* [http://www.codeblocks.org/ Code::Blocks] - free multiplatformní [[C (programovací jazyk)|C]]/[[C++]] vývojové prostředí<br />
* [http://www.anjuta.org Anjuta] - vývojové prostředí pro operační systém [[GNU]]/[[Linuxové jádro|Linux]] napsané v [[GTK+]] ([[GNOME]]) ([[svobodný software]]) - viz [[Anjuta]]<br />
* [http://www.bloodshed.net/devcpp.html Bloodshed Dev-C++] - vývojové prostředí pro [[Microsoft Windows|Windows]] ([[svobodný software]]) - viz [[Dev-C++]]<br />
* [http://www.borland.cz/products/cbuilder/index.html Borland C++Builder] - vizuální vývojové prostředí pro platformu [[Microsoft Windows|Windows]] i [[Linux]] (přenositelnost zdrojového kódu) - viz [[C++Builder]])<br />
* [http://msdn.microsoft.com/visualc/ MS Visual C++] - vývojové prostředí společnosti [[Microsoft]] - viz [[Visual C++]]<br />
<br />
<br />
[[Kategorie:Programování]]</div>Megihttp://wiki.wowresource.eu/index.php?title=C%2B%2B&diff=126C++2007-11-28T19:14:50Z<p>Megi: </p>
<hr />
<div>'''C++''' je [[objektově orientované programování|objektově orientovaný]] [[programovací jazyk]], který vyvinul [[Bjarne Stroustrup]] a další v [[Bell Labs|Bellových laboratořích]] [[AT&T]] rozšířením [[C (programovací jazyk)|jazyka C]]. C++ podporuje několik programovacích stylů (paradigmat) jako je procedurální programování, objektově orientované programování a generické programování, není tedy jazykem čistě objektovým. V současné době patří C++ mezi nejrozšířenější programovací jazyky.<br />
== Historie ==<br />
=== Název C++ ===<br />
Starší verze jazyka, společně označované jako „C with Classes“ ([[čeština|česky]] C s třídami), byly používány od roku 1980. Jméno „C++“ vymyslel Rick Mascitti v létě 1983. Toto jméno zdůrazňuje evoluční povahu změn oproti jazyku [[C (programovací jazyk)|C]]; „++“ je operátor inkrementu v [[C (programovací jazyk)|C]]. Poněkud kratší jméno „C+“ je syntaktická chyba, bylo též použito jako jméno jiného nesouvisejícího jazyka.<br />
<br />
=== Kompatibilita s jazykem C ===<br />
Jazyk [[C (programovací jazyk)|C]] je až na několik jasně definovaných výjimek podmnožinou C++. Jak uvádí [[Bjarne Stroustrup]], všechny programy uvedené ve slavné učebnici jazyka C ''[[The C Programming Language]]'' od [[Brian W. Kernighan|Briana W. Kernighana]] a [[Dennis M. Ritchie|Dennise M. Ritchieho]] jsou zároveň programy v C++.<br />
<br />
První překladače C++ byly [[preprocesor]]y, které překládaly z C++ do čistého C. Považovat jazyk C++ za pouhé rozšíření jazyka [[C (programovací jazyk)|C]] by ale bylo chybou, protože není s jazykem C zcela kompatibilní. Některé programy v jazyce C nelze překládat překladači pro C++.<br />
<br />
== „Hello, World!“ ==<br />
Následující jednoduchá aplikace vypíše „[[Hello world|Hello, world!]]“ na [[standardní výstup]].<br />
<br />
<br />
<source lang="cpp"><br />
<br />
#include <iostream> // includuje hlavickovy soubor iostream (pro in-stream a out-stream)<br />
<br />
using namespace std; // obor nazvu<br />
<br />
int main() //hlavni funkce programu, zacatek vlastniho tela programu<br />
{<br />
cout << "Hello, world!" << endl; // vystup na standardní výstup ktera vypise: Hello, world!<br />
return 0; // konec programu, funkce return vraci nejakou hodnotu v nasem pripade 0<br />
}<br />
</source><br />
<br />
== Argumenty funkce ''main'' ==<br />
Tato aplikace vypíše všechny argumenty funkce ''main''.<br />
<br />
<br />
<source lang="cpp"><br />
#include <iostream><br />
<br />
using namespace std;<br />
<br />
int main(int argc, char *argv[])<br />
{<br />
for(int i = 0; i < argc; ++i)<br />
{<br />
cout << i + 1 << ": " << argv[i] << endl;<br />
}<br />
}<br />
</source><br />
<br />
== Vlastnosti jazyka a rozdíly proti jazyku C ==<br />
<br />
=== Objekty ===<br />
Koncepce objektů jazyka C++ byla převzata z jazyka [[Simula 67]]. [[Objekt (programování)|Objekty]] (třídy) jsou pojaty jako přirozené rozšíření datových struktur jazyka C o možnost vkládání členských funkcí. C++ umožňuje řídit viditelnost složek objektů pro ostatní části programu. Pro objekty je možná vícenásobná dědičnost.<br />
<br />
Příklad definice třídy:<br />
<br />
<br />
<source lang="cpp"><br />
class Komplex {<br />
double x; // datové složky objektu<br />
double y; // datové složky objektu<br />
<br />
public: // následující části objektu budou viditelné i mimo objekt<br />
Komplex(); // konstruktor - funkce volaná automaticky při vytvoření objektu<br />
~Komplex(); // destruktor - funkce volaná automaticky při rušení objektu<br />
<br />
double r() const { return sqr(x*x+y*y) }; // funkce třídy<br />
};<br />
<br />
void f() {<br />
// deklarace dvou objektů dané třídy:<br />
Komplex A;<br />
Komplex B;<br />
<br />
// následují další příkazy…<br />
}<br />
</source><br />
<br />
==== Dědičnost ====<br />
Pod tímto pojmem se skrývá asi ta největší zbraň [[Objektově orientované programování|OOP]]. Hlavní myšlenka dědičnosti je znovupoužitelnost, to znamená, že můžeme vytvářet nové třídy založené na třídě, která již byla definována, místo toho abychom museli znovu psát již jednou napsaný kód jen s jinými typy proměnných. Díky dědičnosti je možné napsat kód jednou pro obecnější typ a poté ho používat pro všechny jeho potomky.<br />
<br />
=== Šablony ===<br />
Šablony dále rozšiřují znovupoužitelnost kódu, neboť umožňují napsat kód se zcela obecným (neurčeným) datovým typem. Jsou užitečné především pro základní typy, které v C++ nejsou objekty: mnohé jiné jazyky mohou dosáhnout stejné funkcionality použitím kořene objektové hierarchie.<br />
<br />
=== Přetěžování (Polymorfizmus) funkcí a operátorů ===<br />
Jazyk C++ umožňuje deklarovat více funkcí se stejným názvem. Kompilátor určí správné použití podle počtu a typu parametrů. Tato technika se nazývá přetěžování funkcí.<br />
Velmi silnou vlastností jazyka je i možnost přetěžovat standardní operátory (například '+' nebo '=') a tak přirozeně využívat tyto operátory pro nově vytvářené třídy a tvorbu [[abstraktní datový typ|abstraktních datových typů]].<br />
<br />
===Standardní knihovna===<br />
Standard jazyka C++ z roku [[1998]] se skládá ze dvou částí: popis jazyka a standardní knihovny. Standardní knihovna jazyka C++ obsahuje mírně modifikovanou verzi standardní knihovny jazyka [[C (programovací jazyk)|C]] a [[Standard Template Library]] (STL).<br />
<br />
====Standard Template Library====<br />
STL obsahuje velké množství užitečných datových struktur a algoritmů, jako například vektory (vylepšené pole), spojové seznamy, iterátory, zobecněné [[ukazatel]]e, (multi)mapy, (multi)sety. Všechny tyto struktury mají konzistentní rozhraní. S použitím šablon je pak možné programovat generické algoritmy schopné pracovat s kterýmkoliv kontejnerem nebo sekvencí definovanou iterátory.<br />
<br />
Používání standardní knihovny – například používání std::vector nebo std::string místo polí ve stylu jazyka C – může vést k bezpečnějšímu a lépe škálovatelnému softwaru.<br />
<br />
STL byla původně vytvořena a používána firmou [[Hewlett-Packard]] a později také [[Silicon Graphics]]. Standard se na ni neodkazuje jako na „STL“, ale jen jako na část standardní knihovny, přesto mnoho lidí stále používá tento pojem na odlišení od ostatních častí knihovny.<br />
<br />
Většina [[kompilátor]]ů poskytuje implementaci standardu C++ včetně STL. Existují také implementace standardu nezávislé na kompilátoru (např. [http://stlport.sf.net STLPort]). Jiné projekty také vytvářejí různé zákaznické implementace knihovny jazyka a STL s různými cíly návrhu.<br />
<br />
== Literatura ==<br />
<br />
* [http://www.research.att.com/~bs/3rd.html The C++ Programming Language]: [[Bjarne Stroustrup]], special ed., Addison-Weslye, ISBN 0-201-70073-5, 2000<br />
* The C++ Standard, Incorporating Technical Corrigendum 1, BS ISO/IEC 14882:2003 (2nd ed.), John Wiley & Sons, ISBN 0-470-84674-7<br />
* [[Brian Kernighan|Brian W. Kernighan]], [[Dennis Ritchie|Dennis M. Ritchie]]: ''[[The C Programming Language]]'', Second Edition, Prentice-Hall, ISBN 0-13-110370-9 1988<br />
* [http://kmdec.fjfi.cvut.cz/~virius/publ-list.html#CPP Programování v C++]: Miroslav Virius, [http://web.cvut.cz/ph/ Vydavatelství ČVUT], druhé vydání, ISBN 80-01-02978-6 2004<br />
* Naučte se C++ za 21 dní: Jesse Liberty, [http://www.cpress.cz/ Computer Press], ISBN 80-7226-774-4, 2002<br />
* Programovací jazyk C++ pro zelenáče: Petr Šaloun, [http://www.neo.cz Neokortex] s.r.o., ISBN 80-86330-18-4, 2005<br />
* Rozumíme C++: Andrew Koenig, Barbara E. Moo, [http://www.cpress.cz/ Computer Press], ISBN 80-7226-656-X, 2003<br />
* [http://gama.fsv.cvut.cz/~cepek/uvodc++/uvodc++-2004-09-11.pdf Úvod do C++]: Prof. Ing. Aleš Čepek, CSc., Vydavatelství ČVUT, 2004<br />
<br />
== Externí odkazy ==<br />
* [http://www.research.att.com/~bs/ http://www.research.att.com/~bs/] - domovská stránka Bjarne Stroustrupa; mimo jiné uvádí historii C++, odpovědi na často kladené otázky a podrobný glosář. Jde o základní zdroj informací a odkazů věnovaných C++.<br />
* [http://www.builder.cz/ www.builder.cz] – Informační server o programování<br />
<br />
=== Vývojové nástroje ===<br />
* [http://www.gnu.org/software/gcc/gcc.html gcc] (''GNU Compiler Collection'') - [[Multiplatformní software|multiplatformní]] [[překladač]] pro jazyky [[C (programovací jazyk)|C]], '''C++''', [[Java]] a další ([[svobodný software]]) - viz [[GCC]]<br />
* [http://www.codeblocks.org/ Code::Blocks] - free multiplatformní [[C (programovací jazyk)|C]]/[[C++]] vývojové prostředí<br />
* [http://www.anjuta.org Anjuta] - vývojové prostředí pro operační systém [[GNU]]/[[Linuxové jádro|Linux]] napsané v [[GTK+]] ([[GNOME]]) ([[svobodný software]]) - viz [[Anjuta]]<br />
* [http://www.bloodshed.net/devcpp.html Bloodshed Dev-C++] - vývojové prostředí pro [[Microsoft Windows|Windows]] ([[svobodný software]]) - viz [[Dev-C++]]<br />
* [http://www.borland.cz/products/cbuilder/index.html Borland C++Builder] - vizuální vývojové prostředí pro platformu [[Microsoft Windows|Windows]] i [[Linux]] (přenositelnost zdrojového kódu) - viz [[C++Builder]])<br />
* [http://msdn.microsoft.com/visualc/ MS Visual C++] - vývojové prostředí společnosti [[Microsoft]] - viz [[Visual C++]]<br />
<br />
<br />
<br />
[[Kategorie:Programování]]</div>Megihttp://wiki.wowresource.eu/index.php?title=C%2B%2B&diff=125C++2007-11-28T19:13:55Z<p>Megi: </p>
<hr />
<div>'''C++''' je [[objektově orientované programování|objektově orientovaný]] [[programovací jazyk]], který vyvinul [[Bjarne Stroustrup]] a další v [[Bell Labs|Bellových laboratořích]] [[AT&T]] rozšířením [[C (programovací jazyk)|jazyka C]]. C++ podporuje několik programovacích stylů (paradigmat) jako je procedurální programování, objektově orientované programování a generické programování, není tedy jazykem čistě objektovým. V současné době patří C++ mezi nejrozšířenější programovací jazyky.<br />
== Historie ==<br />
=== Název C++ ===<br />
Starší verze jazyka, společně označované jako „C with Classes“ ([[čeština|česky]] C s třídami), byly používány od roku 1980. Jméno „C++“ vymyslel Rick Mascitti v létě 1983. Toto jméno zdůrazňuje evoluční povahu změn oproti jazyku [[C (programovací jazyk)|C]]; „++“ je operátor inkrementu v [[C (programovací jazyk)|C]]. Poněkud kratší jméno „C+“ je syntaktická chyba, bylo též použito jako jméno jiného nesouvisejícího jazyka.<br />
<br />
=== Kompatibilita s jazykem C ===<br />
Jazyk [[C (programovací jazyk)|C]] je až na několik jasně definovaných výjimek podmnožinou C++. Jak uvádí [[Bjarne Stroustrup]], všechny programy uvedené ve slavné učebnici jazyka C ''[[The C Programming Language]]'' od [[Brian W. Kernighan|Briana W. Kernighana]] a [[Dennis M. Ritchie|Dennise M. Ritchieho]] jsou zároveň programy v C++.<br />
<br />
První překladače C++ byly [[preprocesor]]y, které překládaly z C++ do čistého C. Považovat jazyk C++ za pouhé rozšíření jazyka [[C (programovací jazyk)|C]] by ale bylo chybou, protože není s jazykem C zcela kompatibilní. Některé programy v jazyce C nelze překládat překladači pro C++.<br />
<br />
== „Hello, World!“ ==<br />
Následující jednoduchá aplikace vypíše „[[Hello world|Hello, world!]]“ na [[standardní výstup]].<br />
<br />
<br />
<source lang="cpp"><br />
#include <iostream> // includuje hlavickovy soubor iostream (pro in-stream a out-stream)<br />
<br />
using namespace std; // obor nazvu<br />
<br />
int main() //hlavni funkce programu, zacatek vlastniho tela programu<br />
{<br />
cout << "Hello, world!" << endl; // vystup na standardní výstup ktera vypise: Hello, world!<br />
return 0; // konec programu, funkce return vraci nejakou hodnotu v nasem pripade 0<br />
}<br />
</source><br />
<br />
== Argumenty funkce ''main'' ==<br />
Tato aplikace vypíše všechny argumenty funkce ''main''.<br />
<br />
<br />
<source lang="cpp"><br />
#include <iostream><br />
<br />
using namespace std;<br />
<br />
int main(int argc, char *argv[])<br />
{<br />
for(int i = 0; i < argc; ++i)<br />
{<br />
cout << i + 1 << ": " << argv[i] << endl;<br />
}<br />
}<br />
</source><br />
<br />
== Vlastnosti jazyka a rozdíly proti jazyku C ==<br />
<br />
=== Objekty ===<br />
Koncepce objektů jazyka C++ byla převzata z jazyka [[Simula 67]]. [[Objekt (programování)|Objekty]] (třídy) jsou pojaty jako přirozené rozšíření datových struktur jazyka C o možnost vkládání členských funkcí. C++ umožňuje řídit viditelnost složek objektů pro ostatní části programu. Pro objekty je možná vícenásobná dědičnost.<br />
<br />
Příklad definice třídy:<br />
<br />
<br />
<source lang="cpp"><br />
class Komplex {<br />
double x; // datové složky objektu<br />
double y; // datové složky objektu<br />
<br />
public: // následující části objektu budou viditelné i mimo objekt<br />
Komplex(); // konstruktor - funkce volaná automaticky při vytvoření objektu<br />
~Komplex(); // destruktor - funkce volaná automaticky při rušení objektu<br />
<br />
double r() const { return sqr(x*x+y*y) }; // funkce třídy<br />
};<br />
<br />
void f() {<br />
// deklarace dvou objektů dané třídy:<br />
Komplex A;<br />
Komplex B;<br />
<br />
// následují další příkazy…<br />
}<br />
</source><br />
<br />
==== Dědičnost ====<br />
Pod tímto pojmem se skrývá asi ta největší zbraň [[Objektově orientované programování|OOP]]. Hlavní myšlenka dědičnosti je znovupoužitelnost, to znamená, že můžeme vytvářet nové třídy založené na třídě, která již byla definována, místo toho abychom museli znovu psát již jednou napsaný kód jen s jinými typy proměnných. Díky dědičnosti je možné napsat kód jednou pro obecnější typ a poté ho používat pro všechny jeho potomky.<br />
<br />
=== Šablony ===<br />
Šablony dále rozšiřují znovupoužitelnost kódu, neboť umožňují napsat kód se zcela obecným (neurčeným) datovým typem. Jsou užitečné především pro základní typy, které v C++ nejsou objekty: mnohé jiné jazyky mohou dosáhnout stejné funkcionality použitím kořene objektové hierarchie.<br />
<br />
=== Přetěžování (Polymorfizmus) funkcí a operátorů ===<br />
Jazyk C++ umožňuje deklarovat více funkcí se stejným názvem. Kompilátor určí správné použití podle počtu a typu parametrů. Tato technika se nazývá přetěžování funkcí.<br />
Velmi silnou vlastností jazyka je i možnost přetěžovat standardní operátory (například '+' nebo '=') a tak přirozeně využívat tyto operátory pro nově vytvářené třídy a tvorbu [[abstraktní datový typ|abstraktních datových typů]].<br />
<br />
===Standardní knihovna===<br />
Standard jazyka C++ z roku [[1998]] se skládá ze dvou částí: popis jazyka a standardní knihovny. Standardní knihovna jazyka C++ obsahuje mírně modifikovanou verzi standardní knihovny jazyka [[C (programovací jazyk)|C]] a [[Standard Template Library]] (STL).<br />
<br />
====Standard Template Library====<br />
STL obsahuje velké množství užitečných datových struktur a algoritmů, jako například vektory (vylepšené pole), spojové seznamy, iterátory, zobecněné [[ukazatel]]e, (multi)mapy, (multi)sety. Všechny tyto struktury mají konzistentní rozhraní. S použitím šablon je pak možné programovat generické algoritmy schopné pracovat s kterýmkoliv kontejnerem nebo sekvencí definovanou iterátory.<br />
<br />
Používání standardní knihovny – například používání std::vector nebo std::string místo polí ve stylu jazyka C – může vést k bezpečnějšímu a lépe škálovatelnému softwaru.<br />
<br />
STL byla původně vytvořena a používána firmou [[Hewlett-Packard]] a později také [[Silicon Graphics]]. Standard se na ni neodkazuje jako na „STL“, ale jen jako na část standardní knihovny, přesto mnoho lidí stále používá tento pojem na odlišení od ostatních častí knihovny.<br />
<br />
Většina [[kompilátor]]ů poskytuje implementaci standardu C++ včetně STL. Existují také implementace standardu nezávislé na kompilátoru (např. [http://stlport.sf.net STLPort]). Jiné projekty také vytvářejí různé zákaznické implementace knihovny jazyka a STL s různými cíly návrhu.<br />
<br />
== Literatura ==<br />
<br />
* [http://www.research.att.com/~bs/3rd.html The C++ Programming Language]: [[Bjarne Stroustrup]], special ed., Addison-Weslye, ISBN 0-201-70073-5, 2000<br />
* The C++ Standard, Incorporating Technical Corrigendum 1, BS ISO/IEC 14882:2003 (2nd ed.), John Wiley & Sons, ISBN 0-470-84674-7<br />
* [[Brian Kernighan|Brian W. Kernighan]], [[Dennis Ritchie|Dennis M. Ritchie]]: ''[[The C Programming Language]]'', Second Edition, Prentice-Hall, ISBN 0-13-110370-9 1988<br />
* [http://kmdec.fjfi.cvut.cz/~virius/publ-list.html#CPP Programování v C++]: Miroslav Virius, [http://web.cvut.cz/ph/ Vydavatelství ČVUT], druhé vydání, ISBN 80-01-02978-6 2004<br />
* Naučte se C++ za 21 dní: Jesse Liberty, [http://www.cpress.cz/ Computer Press], ISBN 80-7226-774-4, 2002<br />
* Programovací jazyk C++ pro zelenáče: Petr Šaloun, [http://www.neo.cz Neokortex] s.r.o., ISBN 80-86330-18-4, 2005<br />
* Rozumíme C++: Andrew Koenig, Barbara E. Moo, [http://www.cpress.cz/ Computer Press], ISBN 80-7226-656-X, 2003<br />
* [http://gama.fsv.cvut.cz/~cepek/uvodc++/uvodc++-2004-09-11.pdf Úvod do C++]: Prof. Ing. Aleš Čepek, CSc., Vydavatelství ČVUT, 2004<br />
<br />
== Externí odkazy ==<br />
* [http://www.research.att.com/~bs/ http://www.research.att.com/~bs/] - domovská stránka Bjarne Stroustrupa; mimo jiné uvádí historii C++, odpovědi na často kladené otázky a podrobný glosář. Jde o základní zdroj informací a odkazů věnovaných C++.<br />
* [http://www.builder.cz/ www.builder.cz] – Informační server o programování<br />
<br />
=== Vývojové nástroje ===<br />
* [http://www.gnu.org/software/gcc/gcc.html gcc] (''GNU Compiler Collection'') - [[Multiplatformní software|multiplatformní]] [[překladač]] pro jazyky [[C (programovací jazyk)|C]], '''C++''', [[Java]] a další ([[svobodný software]]) - viz [[GCC]]<br />
* [http://www.codeblocks.org/ Code::Blocks] - free multiplatformní [[C (programovací jazyk)|C]]/[[C++]] vývojové prostředí<br />
* [http://www.anjuta.org Anjuta] - vývojové prostředí pro operační systém [[GNU]]/[[Linuxové jádro|Linux]] napsané v [[GTK+]] ([[GNOME]]) ([[svobodný software]]) - viz [[Anjuta]]<br />
* [http://www.bloodshed.net/devcpp.html Bloodshed Dev-C++] - vývojové prostředí pro [[Microsoft Windows|Windows]] ([[svobodný software]]) - viz [[Dev-C++]]<br />
* [http://www.borland.cz/products/cbuilder/index.html Borland C++Builder] - vizuální vývojové prostředí pro platformu [[Microsoft Windows|Windows]] i [[Linux]] (přenositelnost zdrojového kódu) - viz [[C++Builder]])<br />
* [http://msdn.microsoft.com/visualc/ MS Visual C++] - vývojové prostředí společnosti [[Microsoft]] - viz [[Visual C++]]<br />
<br />
<br />
<br />
[[Kategorie:Programování]]</div>Megihttp://wiki.wowresource.eu/index.php?title=C%2B%2B&diff=124C++2007-11-28T19:12:44Z<p>Megi: </p>
<hr />
<div>'''C++''' je [[objektově orientované programování|objektově orientovaný]] [[programovací jazyk]], který vyvinul [[Bjarne Stroustrup]] a další v [[Bell Labs|Bellových laboratořích]] [[AT&T]] rozšířením [[C (programovací jazyk)|jazyka C]]. C++ podporuje několik programovacích stylů (paradigmat) jako je procedurální programování, objektově orientované programování a generické programování, není tedy jazykem čistě objektovým. V současné době patří C++ mezi nejrozšířenější programovací jazyky.<br />
== Historie ==<br />
=== Název C++ ===<br />
Starší verze jazyka, společně označované jako „C with Classes“ ([[čeština|česky]] C s třídami), byly používány od roku 1980. Jméno „C++“ vymyslel Rick Mascitti v létě 1983. Toto jméno zdůrazňuje evoluční povahu změn oproti jazyku [[C (programovací jazyk)|C]]; „++“ je operátor inkrementu v [[C (programovací jazyk)|C]]. Poněkud kratší jméno „C+“ je syntaktická chyba, bylo též použito jako jméno jiného nesouvisejícího jazyka.<br />
<br />
=== Kompatibilita s jazykem C ===<br />
Jazyk [[C (programovací jazyk)|C]] je až na několik jasně definovaných výjimek podmnožinou C++. Jak uvádí [[Bjarne Stroustrup]], všechny programy uvedené ve slavné učebnici jazyka C ''[[The C Programming Language]]'' od [[Brian W. Kernighan|Briana W. Kernighana]] a [[Dennis M. Ritchie|Dennise M. Ritchieho]] jsou zároveň programy v C++.<br />
<br />
První překladače C++ byly [[preprocesor]]y, které překládaly z C++ do čistého C. Považovat jazyk C++ za pouhé rozšíření jazyka [[C (programovací jazyk)|C]] by ale bylo chybou, protože není s jazykem C zcela kompatibilní. Některé programy v jazyce C nelze překládat překladači pro C++.<br />
<br />
== „Hello, World!“ ==<br />
Následující jednoduchá aplikace vypíše „[[Hello world|Hello, world!]]“ na [[standardní výstup]].<br />
<source lang="cpp"><br />
#include <iostream> // includuje hlavickovy soubor iostream (pro in-stream a out-stream)<br />
<br />
using namespace std; // obor nazvu<br />
<br />
int main() //hlavni funkce programu, zacatek vlastniho tela programu<br />
{<br />
cout << "Hello, world!" << endl; // vystup na standardní výstup ktera vypise: Hello, world!<br />
return 0; // konec programu, funkce return vraci nejakou hodnotu v nasem pripade 0<br />
}<br />
</source><br />
<br />
== Argumenty funkce ''main'' ==<br />
Tato aplikace vypíše všechny argumenty funkce ''main''.<br />
<source lang="cpp"><br />
#include <iostream><br />
<br />
using namespace std;<br />
<br />
int main(int argc, char *argv[])<br />
{<br />
for(int i = 0; i < argc; ++i)<br />
{<br />
cout << i + 1 << ": " << argv[i] << endl;<br />
}<br />
}<br />
</source><br />
<br />
== Vlastnosti jazyka a rozdíly proti jazyku C ==<br />
<br />
=== Objekty ===<br />
Koncepce objektů jazyka C++ byla převzata z jazyka [[Simula 67]]. [[Objekt (programování)|Objekty]] (třídy) jsou pojaty jako přirozené rozšíření datových struktur jazyka C o možnost vkládání členských funkcí. C++ umožňuje řídit viditelnost složek objektů pro ostatní části programu. Pro objekty je možná vícenásobná dědičnost.<br />
<br />
Příklad definice třídy:<br />
<source lang="cpp"><br />
class Komplex {<br />
double x; // datové složky objektu<br />
double y; // datové složky objektu<br />
<br />
public: // následující části objektu budou viditelné i mimo objekt<br />
Komplex(); // konstruktor - funkce volaná automaticky při vytvoření objektu<br />
~Komplex(); // destruktor - funkce volaná automaticky při rušení objektu<br />
<br />
double r() const { return sqr(x*x+y*y) }; // funkce třídy<br />
};<br />
<br />
void f() {<br />
// deklarace dvou objektů dané třídy:<br />
Komplex A;<br />
Komplex B;<br />
<br />
// následují další příkazy…<br />
}<br />
</source><br />
<br />
==== Dědičnost ====<br />
Pod tímto pojmem se skrývá asi ta největší zbraň [[Objektově orientované programování|OOP]]. Hlavní myšlenka dědičnosti je znovupoužitelnost, to znamená, že můžeme vytvářet nové třídy založené na třídě, která již byla definována, místo toho abychom museli znovu psát již jednou napsaný kód jen s jinými typy proměnných. Díky dědičnosti je možné napsat kód jednou pro obecnější typ a poté ho používat pro všechny jeho potomky.<br />
<br />
=== Šablony ===<br />
Šablony dále rozšiřují znovupoužitelnost kódu, neboť umožňují napsat kód se zcela obecným (neurčeným) datovým typem. Jsou užitečné především pro základní typy, které v C++ nejsou objekty: mnohé jiné jazyky mohou dosáhnout stejné funkcionality použitím kořene objektové hierarchie.<br />
<br />
=== Přetěžování (Polymorfizmus) funkcí a operátorů ===<br />
Jazyk C++ umožňuje deklarovat více funkcí se stejným názvem. Kompilátor určí správné použití podle počtu a typu parametrů. Tato technika se nazývá přetěžování funkcí.<br />
Velmi silnou vlastností jazyka je i možnost přetěžovat standardní operátory (například '+' nebo '=') a tak přirozeně využívat tyto operátory pro nově vytvářené třídy a tvorbu [[abstraktní datový typ|abstraktních datových typů]].<br />
<br />
===Standardní knihovna===<br />
Standard jazyka C++ z roku [[1998]] se skládá ze dvou částí: popis jazyka a standardní knihovny. Standardní knihovna jazyka C++ obsahuje mírně modifikovanou verzi standardní knihovny jazyka [[C (programovací jazyk)|C]] a [[Standard Template Library]] (STL).<br />
<br />
====Standard Template Library====<br />
STL obsahuje velké množství užitečných datových struktur a algoritmů, jako například vektory (vylepšené pole), spojové seznamy, iterátory, zobecněné [[ukazatel]]e, (multi)mapy, (multi)sety. Všechny tyto struktury mají konzistentní rozhraní. S použitím šablon je pak možné programovat generické algoritmy schopné pracovat s kterýmkoliv kontejnerem nebo sekvencí definovanou iterátory.<br />
<br />
Používání standardní knihovny – například používání std::vector nebo std::string místo polí ve stylu jazyka C – může vést k bezpečnějšímu a lépe škálovatelnému softwaru.<br />
<br />
STL byla původně vytvořena a používána firmou [[Hewlett-Packard]] a později také [[Silicon Graphics]]. Standard se na ni neodkazuje jako na „STL“, ale jen jako na část standardní knihovny, přesto mnoho lidí stále používá tento pojem na odlišení od ostatních častí knihovny.<br />
<br />
Většina [[kompilátor]]ů poskytuje implementaci standardu C++ včetně STL. Existují také implementace standardu nezávislé na kompilátoru (např. [http://stlport.sf.net STLPort]). Jiné projekty také vytvářejí různé zákaznické implementace knihovny jazyka a STL s různými cíly návrhu.<br />
<br />
== Literatura ==<br />
<br />
* [http://www.research.att.com/~bs/3rd.html The C++ Programming Language]: [[Bjarne Stroustrup]], special ed., Addison-Weslye, ISBN 0-201-70073-5, 2000<br />
* The C++ Standard, Incorporating Technical Corrigendum 1, BS ISO/IEC 14882:2003 (2nd ed.), John Wiley & Sons, ISBN 0-470-84674-7<br />
* [[Brian Kernighan|Brian W. Kernighan]], [[Dennis Ritchie|Dennis M. Ritchie]]: ''[[The C Programming Language]]'', Second Edition, Prentice-Hall, ISBN 0-13-110370-9 1988<br />
* [http://kmdec.fjfi.cvut.cz/~virius/publ-list.html#CPP Programování v C++]: Miroslav Virius, [http://web.cvut.cz/ph/ Vydavatelství ČVUT], druhé vydání, ISBN 80-01-02978-6 2004<br />
* Naučte se C++ za 21 dní: Jesse Liberty, [http://www.cpress.cz/ Computer Press], ISBN 80-7226-774-4, 2002<br />
* Programovací jazyk C++ pro zelenáče: Petr Šaloun, [http://www.neo.cz Neokortex] s.r.o., ISBN 80-86330-18-4, 2005<br />
* Rozumíme C++: Andrew Koenig, Barbara E. Moo, [http://www.cpress.cz/ Computer Press], ISBN 80-7226-656-X, 2003<br />
* [http://gama.fsv.cvut.cz/~cepek/uvodc++/uvodc++-2004-09-11.pdf Úvod do C++]: Prof. Ing. Aleš Čepek, CSc., Vydavatelství ČVUT, 2004<br />
<br />
== Externí odkazy ==<br />
* [http://www.research.att.com/~bs/ http://www.research.att.com/~bs/] - domovská stránka Bjarne Stroustrupa; mimo jiné uvádí historii C++, odpovědi na často kladené otázky a podrobný glosář. Jde o základní zdroj informací a odkazů věnovaných C++.<br />
* [http://www.builder.cz/ www.builder.cz] – Informační server o programování<br />
<br />
=== Vývojové nástroje ===<br />
* [http://www.gnu.org/software/gcc/gcc.html gcc] (''GNU Compiler Collection'') - [[Multiplatformní software|multiplatformní]] [[překladač]] pro jazyky [[C (programovací jazyk)|C]], '''C++''', [[Java]] a další ([[svobodný software]]) - viz [[GCC]]<br />
* [http://www.codeblocks.org/ Code::Blocks] - free multiplatformní [[C (programovací jazyk)|C]]/[[C++]] vývojové prostředí<br />
* [http://www.anjuta.org Anjuta] - vývojové prostředí pro operační systém [[GNU]]/[[Linuxové jádro|Linux]] napsané v [[GTK+]] ([[GNOME]]) ([[svobodný software]]) - viz [[Anjuta]]<br />
* [http://www.bloodshed.net/devcpp.html Bloodshed Dev-C++] - vývojové prostředí pro [[Microsoft Windows|Windows]] ([[svobodný software]]) - viz [[Dev-C++]]<br />
* [http://www.borland.cz/products/cbuilder/index.html Borland C++Builder] - vizuální vývojové prostředí pro platformu [[Microsoft Windows|Windows]] i [[Linux]] (přenositelnost zdrojového kódu) - viz [[C++Builder]])<br />
* [http://msdn.microsoft.com/visualc/ MS Visual C++] - vývojové prostředí společnosti [[Microsoft]] - viz [[Visual C++]]<br />
<br />
{{Softwarový pahýl}}<br />
{{Programovací jazyky}}<br />
<br />
[[Kategorie:Programování]]<br />
<br />
[[af:C++]]<br />
[[an:C++]]<br />
[[ar:سي++]]<br />
[[az:C++]]<br />
[[bat-smg:C++]]<br />
[[be:C++]]<br />
[[bg:C++]]<br />
[[bn:সি++]]<br />
[[br:Areg C++]]<br />
[[bs:C++]]<br />
[[ca:C++]]<br />
[[da:C++]]<br />
[[de:C++]]<br />
[[el:C++]]<br />
[[en:C++]]<br />
[[eo:C++]]<br />
[[es:C++]]<br />
[[et:C++]]<br />
[[eu:C++]]<br />
[[fa:سی++]]<br />
[[fi:C++]]<br />
[[fr:C++]]<br />
[[gl:C++]]<br />
[[he:C++]]<br />
[[hr:C++]]<br />
[[hu:C++]]<br />
[[hy:C++ ի Հիմունքները]]<br />
[[id:C++]]<br />
[[is:C++]]<br />
[[it:C++]]<br />
[[ja:C++]]<br />
[[ka:C++]]<br />
[[ko:C++]]<br />
[[la:C++]]<br />
[[lb:C++]]<br />
[[lt:C++]]<br />
[[ml:സി++]]<br />
[[nl:C++]]<br />
[[nn:C++]]<br />
[[no:C++]]<br />
[[pl:C++]]<br />
[[pt:C++]]<br />
[[ro:C++]]<br />
[[ru:C++]]<br />
[[simple:C++]]<br />
[[sk:C++]]<br />
[[sl:C++]]<br />
[[sq:C++]]<br />
[[sr:C++]]<br />
[[sv:C++]]<br />
[[ta:சி++]]<br />
[[tg:C++]]<br />
[[th:ภาษาซีพลัสพลัส]]<br />
[[tk:C++]]<br />
[[tr:C++]]<br />
[[uk:C++]]<br />
[[vi:C++]]<br />
[[vls:C++]]<br />
[[zh:C++]]<br />
[[zh-yue:C++]]</div>Megihttp://wiki.wowresource.eu/index.php?title=C%2B%2B&diff=123C++2007-11-28T19:11:25Z<p>Megi: </p>
<hr />
<div>'''C++''' je [[objektově orientované programování|objektově orientovaný]] [[programovací jazyk]], který vyvinul [[Bjarne Stroustrup]] a další v [[Bell Labs|Bellových laboratořích]] [[AT&T]] rozšířením [[C (programovací jazyk)|jazyka C]]. C++ podporuje několik programovacích stylů (paradigmat) jako je procedurální programování, objektově orientované programování a generické programování, není tedy jazykem čistě objektovým. V současné době patří C++ mezi nejrozšířenější programovací jazyky.<br />
== Historie ==<br />
=== Název C++ ===<br />
Starší verze jazyka, společně označované jako „C with Classes“ ([[čeština|česky]] C s třídami), byly používány od roku 1980. Jméno „C++“ vymyslel Rick Mascitti v létě 1983. Toto jméno zdůrazňuje evoluční povahu změn oproti jazyku [[C (programovací jazyk)|C]]; „++“ je operátor inkrementu v [[C (programovací jazyk)|C]]. Poněkud kratší jméno „C+“ je syntaktická chyba, bylo též použito jako jméno jiného nesouvisejícího jazyka.<br />
<br />
=== Kompatibilita s jazykem C ===<br />
Jazyk [[C (programovací jazyk)|C]] je až na několik jasně definovaných výjimek podmnožinou C++. Jak uvádí [[Bjarne Stroustrup]], všechny programy uvedené ve slavné učebnici jazyka C ''[[The C Programming Language]]'' od [[Brian W. Kernighan|Briana W. Kernighana]] a [[Dennis M. Ritchie|Dennise M. Ritchieho]] jsou zároveň programy v C++.<br />
<br />
První překladače C++ byly [[preprocesor]]y, které překládaly z C++ do čistého C. Považovat jazyk C++ za pouhé rozšíření jazyka [[C (programovací jazyk)|C]] by ale bylo chybou, protože není s jazykem C zcela kompatibilní. Některé programy v jazyce C nelze překládat překladači pro C++.<br />
<br />
== „Hello, World!“ ==<br />
Následující jednoduchá aplikace vypíše „[[Hello world|Hello, world!]]“ na [[standardní výstup]].<br />
<source lang="cpp"><br />
#include <iostream> // includuje hlavickovy soubor iostream (pro in-stream a out-stream)<br />
<br />
using namespace std; // obor nazvu<br />
<br />
int main() //hlavni funkce programu, zacatek vlastniho tela programu<br />
{<br />
cout << "Hello, world!" << endl; // vystup na standardní výstup ktera vypise: Hello, world!<br />
return 0; // konec programu, funkce return vraci nejakou hodnotu v nasem pripade 0<br />
}<br />
</source><br />
<br />
== Argumenty funkce ''main'' ==<br />
Tato aplikace vypíše všechny argumenty funkce ''main''.<br />
<source lang="cpp"><br />
#include <iostream><br />
<br />
using namespace std;<br />
<br />
int main(int argc, char *argv[])<br />
{<br />
for(int i = 0; i < argc; ++i)<br />
{<br />
cout << i + 1 << ": " << argv[i] << endl;<br />
}<br />
}<br />
</source><br />
<br />
== Vlastnosti jazyka a rozdíly proti jazyku C ==<br />
<br />
=== Objekty ===<br />
Koncepce objektů jazyka C++ byla převzata z jazyka [[Simula 67]]. [[Objekt (programování)|Objekty]] (třídy) jsou pojaty jako přirozené rozšíření datových struktur jazyka C o možnost vkládání členských funkcí. C++ umožňuje řídit viditelnost složek objektů pro ostatní části programu. Pro objekty je možná vícenásobná dědičnost.<br />
<br />
Příklad definice třídy:<br />
<source lang="cpp"><br />
class Komplex {<br />
double x; // datové složky objektu<br />
double y; // datové složky objektu<br />
<br />
public: // následující části objektu budou viditelné i mimo objekt<br />
Komplex(); // konstruktor - funkce volaná automaticky při vytvoření objektu<br />
~Komplex(); // destruktor - funkce volaná automaticky při rušení objektu<br />
<br />
double r() const { return sqr(x*x+y*y) }; // funkce třídy<br />
};<br />
<br />
void f() {<br />
// deklarace dvou objektů dané třídy:<br />
Komplex A;<br />
Komplex B;<br />
<br />
// následují další příkazy…<br />
}<br />
</source><br />
<br />
==== Dědičnost ====<br />
Pod tímto pojmem se skrývá asi ta největší zbraň [[Objektově orientované programování|OOP]]. Hlavní myšlenka dědičnosti je znovupoužitelnost, to znamená, že můžeme vytvářet nové třídy založené na třídě, která již byla definována, místo toho abychom museli znovu psát již jednou napsaný kód jen s jinými typy proměnných. Díky dědičnosti je možné napsat kód jednou pro obecnější typ a poté ho používat pro všechny jeho potomky.<br />
<br />
=== Šablony ===<br />
Šablony dále rozšiřují znovupoužitelnost kódu, neboť umožňují napsat kód se zcela obecným (neurčeným) datovým typem. Jsou užitečné především pro základní typy, které v C++ nejsou objekty: mnohé jiné jazyky mohou dosáhnout stejné funkcionality použitím kořene objektové hierarchie.<br />
<br />
=== Přetěžování (Polymorfizmus) funkcí a operátorů ===<br />
Jazyk C++ umožňuje deklarovat více funkcí se stejným názvem. Kompilátor určí správné použití podle počtu a typu parametrů. Tato technika se nazývá přetěžování funkcí.<br />
Velmi silnou vlastností jazyka je i možnost přetěžovat standardní operátory (například '+' nebo '=') a tak přirozeně využívat tyto operátory pro nově vytvářené třídy a tvorbu [[abstraktní datový typ|abstraktních datových typů]].<br />
<br />
===Standardní knihovna===<br />
Standard jazyka C++ z roku [[1998]] se skládá ze dvou částí: popis jazyka a standardní knihovny. Standardní knihovna jazyka C++ obsahuje mírně modifikovanou verzi standardní knihovny jazyka [[C (programovací jazyk)|C]] a [[Standard Template Library]] (STL).<br />
<br />
====Standard Template Library====<br />
STL obsahuje velké množství užitečných datových struktur a algoritmů, jako například vektory (vylepšené pole), spojové seznamy, iterátory, zobecněné [[ukazatel]]e, (multi)mapy, (multi)sety. Všechny tyto struktury mají konzistentní rozhraní. S použitím šablon je pak možné programovat generické algoritmy schopné pracovat s kterýmkoliv kontejnerem nebo sekvencí definovanou iterátory.<br />
<br />
Používání standardní knihovny – například používání std::vector nebo std::string místo polí ve stylu jazyka C – může vést k bezpečnějšímu a lépe škálovatelnému softwaru.<br />
<br />
STL byla původně vytvořena a používána firmou [[Hewlett-Packard]] a později také [[Silicon Graphics]]. Standard se na ni neodkazuje jako na „STL“, ale jen jako na část standardní knihovny, přesto mnoho lidí stále používá tento pojem na odlišení od ostatních častí knihovny.<br />
<br />
Většina [[kompilátor]]ů poskytuje implementaci standardu C++ včetně STL. Existují také implementace standardu nezávislé na kompilátoru (např. [http://stlport.sf.net STLPort]). Jiné projekty také vytvářejí různé zákaznické implementace knihovny jazyka a STL s různými cíly návrhu.<br />
<br />
== Literatura ==<br />
<br />
* [http://www.research.att.com/~bs/3rd.html The C++ Programming Language]: [[Bjarne Stroustrup]], special ed., Addison-Weslye, ISBN 0-201-70073-5, 2000<br />
* The C++ Standard, Incorporating Technical Corrigendum 1, BS ISO/IEC 14882:2003 (2nd ed.), John Wiley & Sons, ISBN 0-470-84674-7<br />
* [[Brian Kernighan|Brian W. Kernighan]], [[Dennis Ritchie|Dennis M. Ritchie]]: ''[[The C Programming Language]]'', Second Edition, Prentice-Hall, ISBN 0-13-110370-9 1988<br />
* [http://kmdec.fjfi.cvut.cz/~virius/publ-list.html#CPP Programování v C++]: Miroslav Virius, [http://web.cvut.cz/ph/ Vydavatelství ČVUT], druhé vydání, ISBN 80-01-02978-6 2004<br />
* Naučte se C++ za 21 dní: Jesse Liberty, [http://www.cpress.cz/ Computer Press], ISBN 80-7226-774-4, 2002<br />
* Programovací jazyk C++ pro zelenáče: Petr Šaloun, [http://www.neo.cz Neokortex] s.r.o., ISBN 80-86330-18-4, 2005<br />
* Rozumíme C++: Andrew Koenig, Barbara E. Moo, [http://www.cpress.cz/ Computer Press], ISBN 80-7226-656-X, 2003<br />
* [http://gama.fsv.cvut.cz/~cepek/uvodc++/uvodc++-2004-09-11.pdf Úvod do C++]: Prof. Ing. Aleš Čepek, CSc., Vydavatelství ČVUT, 2004<br />
<br />
== Externí odkazy ==<br />
* [http://www.research.att.com/~bs/ http://www.research.att.com/~bs/] - domovská stránka Bjarne Stroustrupa; mimo jiné uvádí historii C++, odpovědi na často kladené otázky a podrobný glosář. Jde o základní zdroj informací a odkazů věnovaných C++.<br />
* [http://www.builder.cz/ www.builder.cz] – Informační server o programování<br />
<br />
=== Vývojové nástroje ===<br />
* [http://www.gnu.org/software/gcc/gcc.html gcc] (''GNU Compiler Collection'') - [[Multiplatformní software|multiplatformní]] [[překladač]] pro jazyky [[C (programovací jazyk)|C]], '''C++''', [[Java]] a další ([[svobodný software]]) - viz [[GCC]]<br />
* [http://www.codeblocks.org/ Code::Blocks] - free multiplatformní [[C (programovací jazyk)|C]]/[[C++]] vývojové prostředí<br />
* [http://www.anjuta.org Anjuta] - vývojové prostředí pro operační systém [[GNU]]/[[Linuxové jádro|Linux]] napsané v [[GTK+]] ([[GNOME]]) ([[svobodný software]]) - viz [[Anjuta]]<br />
* [http://www.bloodshed.net/devcpp.html Bloodshed Dev-C++] - vývojové prostředí pro [[Microsoft Windows|Windows]] ([[svobodný software]]) - viz [[Dev-C++]]<br />
* [http://www.borland.cz/products/cbuilder/index.html Borland C++Builder] - vizuální vývojové prostředí pro platformu [[Microsoft Windows|Windows]] i [[Linux]] (přenositelnost zdrojového kódu) - viz [[C++Builder]])<br />
* [http://msdn.microsoft.com/visualc/ MS Visual C++] - vývojové prostředí společnosti [[Microsoft]] - viz [[Visual C++]]<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
[[Category:Programování]]</div>Megihttp://wiki.wowresource.eu/index.php?title=MaNGOS&diff=122MaNGOS2007-11-28T19:09:02Z<p>Megi: </p>
<hr />
<div>'''MaNGOS''' ('''Ma'''ssive '''N'''etwork '''G'''ame '''O'''bject '''S'''erver) je [[open source]], [[multiplatformní software|multiplatformní]], [[Objektově orientované programování|objektově orientovaný]] serverový projekt, hostovaný na [[SourceForge.net]] (od [[21. září]] [[2006]]) pod licencí [[GNU General Public License|GPL]]. Tento projekt je jeden z hlavních otevřených [[server]][[emulátor| emulatorů]], které podporují síťový protokol hry [[World of Warcraft]]. Je používán k vytváření privátních serverů.<br />
<br />
MaNGOS je napsán [[C++]] a [[C Sharp|C#]] a může být provozován pod dvěma různými databázovými prostředími, [[MySQL]] a [[SQLite]]. <br />
<br />
== Historie ==<br />
<br />
MaNGOS projekt byl založen v [[září]] roku [[2005]] Danielem (theluda). První verze byla vypuštěna [[13. září]] [[2005]]; je založen na zdrojových kódech [[emulátor| emulátoru]] WoW Daemon 0.9.0 který byl napsán v [[C++]].<br />
<br />
<br />
=== Oficiální stránky ===<br />
<br />
* [http://sourceforge.net/projects/mangos Oficiální stránky MaNGOSu na SourceForge.net]<br />
* [http://www.mangosproject.org/ Oficiální Fórum MaNGOSu]<br />
* [https://mangosproject.org/trac/MaNGOS/wiki/LicenseTerms MaNGOS's Terms of Use]<br />
* [http://www.mangosproject.org/ChangeLog.xml ChangeLog MaNGOSu]<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
[[Category:Emulátory]]</div>Megihttp://wiki.wowresource.eu/index.php?title=MaNGOS&diff=121MaNGOS2007-11-28T19:07:31Z<p>Megi: </p>
<hr />
<div>'''MaNGOS''' ('''Ma'''ssive '''N'''etwork '''G'''ame '''O'''bject '''S'''erver) je [[open source]], [[multiplatformní software|multiplatformní]], [[Objektově orientované programování|objektově orientovaný]] serverový projekt, hostovaný na [[SourceForge.net]] (od [[21. září]] [[2006]]) pod licencí [[GNU General Public License|GPL]]. Tento projekt je jeden z hlavních otevřených [[server]][[emulátor| emulatorů]], které podporují síťový protokol hry [[World of Warcraft]]. Je používán k vytváření privátních serverů.<br />
<br />
MaNGOS je napsán [[C++]] a [[C Sharp|C#]] a může být provozován pod dvěma různými databázovými prostředími, [[MySQL]] a [[SQLite]]. <br />
<br />
== Historie ==<br />
<br />
MaNGOS projekt byl založen v [[září]] roku [[2005]] Danielem (theluda). První verze byla vypuštěna [[13. září]] [[2005]]; je založen na zdrojových kódech [[emulátor| emulátoru]] WoW Daemon 0.9.0 který byl napsán v [[C++]].<br />
<br />
<br />
=== Oficiální stránky ===<br />
<br />
* [http://sourceforge.net/projects/mangos Oficiální stránky MaNGOSu na SourceForge.net]<br />
* [http://www.mangosproject.org/ Oficiální Fórum MaNGOSu]<br />
* [https://mangosproject.org/trac/MaNGOS/wiki/LicenseTerms MaNGOS's Terms of Use]<br />
* [http://www.mangosproject.org/ChangeLog.xml Aktuálních 38 revizí MaNGOSu]<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
[[Category:Emulátory]]</div>Megihttp://wiki.wowresource.eu/index.php?title=Ascent&diff=120Ascent2007-11-28T19:05:35Z<p>Megi: </p>
<hr />
<div>'''Ascent''', dříve známý jako Antrix, je [[open source]], [[multiplatformní software|multiplatformní]], [[Objektově orientované programování|objektově orientovaný]] serverový projekt podporující síťový protokol hry [[World of Warcraft]]. Je šířený pod licencí [[GNU General Public License|GPL]] a SVN repozitář je hostován na [[Emupedia.com]].<br />
<br />
Ascent je napsán [[C++]] a může být provozován pod dvěma různými databázovými prostředími, [[MySQL]] a [[PostgreSQL]].<br />
<br />
== Historie ==<br />
<br />
Obdobně jako [[MaNGOS]] je založen na zdrojových kódech [[emulátor| emulátoru]] WoW Daemon 0.9.0 který byl napsán v [[C++]]. <br />
<br />
Zpočátku byl vyvíjen pouze pro potřeby Burlexova privátního serveru, ale časem byly zdrojové kódy leaknuty, které byly následně vydány nezatížené licencí pod názvem Antrix. Později byl vývojový team zreformován, projekt přejmenován na Ascent a zdrojove kody se začaly šířit pod [[GNU General Public License|GPL]].<br />
<br />
== Oficiální stránky ==<br />
<br />
* [http://www.ascentemu.com Oficiální stránky Ascentu]<br />
* [http://www.ascentemu.com/forums/ Oficiální Fórum Ascentu]<br />
* [http://www.ascentemu.com/wiki/index.php/Main_Page Ascent Wiki]<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
[[Category:Emulátory]]</div>Megihttp://wiki.wowresource.eu/index.php?title=Ascent&diff=119Ascent2007-11-28T19:05:10Z<p>Megi: </p>
<hr />
<div><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
{{Infobox Software<br />
| jméno = Ascent<br />
| popis = Multiplatformní objektově orientovaný [[MMORPG]] server<br />
| developer = Ascent Team (v čele s Burlexem) a komunita Ascentu<br />
| aktuální verze = 2.4<br />
| datum aktuální verze = [[22. listopadu]], [[2007]]<br />
| připravovaná verze = 2.5<br />
| datum připravované verze = [[2007]]<br />
| operační systém = [[Multiplatformní software]]<br />
| typ software = [[MMORPG]] [[Server]]<br />
| licence = [[GNU General Public License|GPL]]<br />
| web = [http://www.ascentemu.com/ www.ascentemu.com]<br />
| logo =<br />
}}<br />
'''Ascent''', dříve známý jako Antrix, je [[open source]], [[multiplatformní software|multiplatformní]], [[Objektově orientované programování|objektově orientovaný]] serverový projekt podporující síťový protokol hry [[World of Warcraft]]. Je šířený pod licencí [[GNU General Public License|GPL]] a SVN repozitář je hostován na [[Emupedia.com]].<br />
<br />
Ascent je napsán [[C++]] a může být provozován pod dvěma různými databázovými prostředími, [[MySQL]] a [[PostgreSQL]].<br />
<br />
== Historie ==<br />
<br />
Obdobně jako [[MaNGOS]] je založen na zdrojových kódech [[emulátor| emulátoru]] WoW Daemon 0.9.0 který byl napsán v [[C++]]. <br />
<br />
Zpočátku byl vyvíjen pouze pro potřeby Burlexova privátního serveru, ale časem byly zdrojové kódy leaknuty, které byly následně vydány nezatížené licencí pod názvem Antrix. Později byl vývojový team zreformován, projekt přejmenován na Ascent a zdrojove kody se začaly šířit pod [[GNU General Public License|GPL]].<br />
<br />
== Oficiální stránky ==<br />
<br />
* [http://www.ascentemu.com Oficiální stránky Ascentu]<br />
* [http://www.ascentemu.com/forums/ Oficiální Fórum Ascentu]<br />
* [http://www.ascentemu.com/wiki/index.php/Main_Page Ascent Wiki]<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
[[Category:Emulátory]]</div>Megihttp://wiki.wowresource.eu/index.php?title=Ascent&diff=118Ascent2007-11-27T20:06:03Z<p>Megi: </p>
<hr />
<div>[[Category:Emulátory]]</div>Megihttp://wiki.wowresource.eu/index.php?title=Ascent&diff=117Ascent2007-11-27T20:05:28Z<p>Megi: Removing all content from page</p>
<hr />
<div></div>Megihttp://wiki.wowresource.eu/index.php?title=Ascent&diff=116Ascent2007-11-27T20:05:10Z<p>Megi: New page: k</p>
<hr />
<div>k</div>Megihttp://wiki.wowresource.eu/index.php?title=Kategorie:Programov%C3%A1n%C3%AD&diff=115Kategorie:Programování2007-11-27T15:57:06Z<p>Megi: Removing all content from page</p>
<hr />
<div></div>Megi