Programovací jazyk Python. Objektov orientovaný. [citováno z http://wraith.iglu.cz/python/index.php]



Podobné dokumenty
Každý datový objekt Pythonu má minimáln ti vlastnosti. Identitu, datový typ a hodnotu.

Promnné. [citováno z

IB111 Programování a algoritmizace. Programovací jazyky

Základy MIDI komunikace

Cykly Intermezzo. FOR cyklus

IB111 Úvod do programování skrze Python Přednáška 13

Efektivní uení. Žádná zpráva dobrá zpráva. (Structured training) Schopnost pracovat nezávisí od IQ. Marc Gold

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Matematika v programovacích

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

DUM. Databáze - úvod

Datový typ POLE. Jednorozmrné pole - vektor

Objektov orientovaný pístup

ORACLE DISCRETE MANUFACTURING ORACLE DISKRÉTNÍ VÝROBA

Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace

Programovací jazyky Přehled a vývoj

aj.) a ekonomiky firmy v jejich celistvosti. A tímto nástrojem jsou práv vhodn sestavené manažerské simulátory 1.

VYTVÁENÍ VÝBROVÝCH DOTAZ

Role a integrace HR systém

Algoritmizace- úvod. Ing. Tomáš Otáhal

Instalace multiimportu

RAID pod Linuxem. Struný pehled. Autor: František Ryšánek FCC Prmyslové Systémy s.r.o.

Prezentaní program PowerPoint

Problematika využití árového kódu ve vysledovatelnosti potravin. Problem areas of using barcode in food traceability

Programovací jazyky, syntaxe, sémantika, zpsoby popisu

11. Přehled prog. jazyků

ORACLE ÍZENÍ VÝROBY ORACLE WORK IN PROCESS KLÍOVÉ FUNKCE ORACLE WORK IN PROCESS

PÍRUKA A NÁVODY PRO ÚELY: - RUTINNÍ PRÁCE S DATY

Projektovéízení a strategický management - východiska programového financování - IPVZ, 2008

2.1 Pokyny k otev eným úlohám. 2.2 Pokyny k uzav eným úlohám. Testový sešit neotvírejte, po kejte na pokyn!

Správa obsahu ízené dokumentace v aplikaci SPM Vema

MATEMATIKA MATEMATIKA

Získávání znalostí z databází. Alois Kužela

Finální verze žádosti (LZZ-GP)

P ehled nep ítomnosti

Programování v C++ Úplnej úvod. Peta (maj@arcig.cz, SPR AG )

Základy programování (C#) Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1134_Základy programování (C#) _PWP

WWW poštovní klient s úložištm v MySQL databázi

A. TBOS SYSTEM. 1. Popis systému TBOS. 3. Vlastnosti: TBOS verze UNIK verze UNIK. (stará verze) (stará verze) cívka 9V. 2. Doplky.

IMPORT DAT Z TABULEK MICROSOFT EXCEL

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Pedání smny. Popis systémového protokolování. Autor: Ing. Jaroslav Halva V Plzni Strana 1/6

ORACLE MANUFACTURING SCHEDULING ORACLE HLAVNÍ PLÁNOVÁNÍ VÝROBY

ipové karty, standardy PKCS#11, PKCS#15

EXPORT DAT TABULEK V MÍŽKÁCH HROMADNÉHO PROHLÍŽENÍ

Programování. Úvod a základní principy. Martin Urza

Nkolik poznámek k ochran technických ešení

Obsah Úvod...2 Slovníek pojm Popis instalace...3 Nároky na hardware a software...3 Instalace a spouštní...3 Vstupní soubory

Ochrana osobních údaj ve spole nosti Phoenix Contact

Lepení plexi v bonici pružnými lepidly

Splajny a metoda nejmenších tverc

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě

NERVOVÁ SOUSTAVA NEURON NERVOVÁ SOUSTAVA MOZEK

Konzistentnost. Pro a proti replikaci. Vztah ke škálovatelnosti (1)

Na em se podílí? Umožuje napíklad pohyb, mnit výrazy oblieje, zadržovat stolici, psát i vykonávat rzné druhy manuální práce.

Pístupný web. Základy pístupnosti. Definice pístupné stránky. Pístupnost (accessibility) Tim Berners-Lee, zakladatel technologie www

Pístupy k informaním systémm

REDAS. Vývoj informaních systém Tvrci: Petr Kalíš Judita Hlinková,, Richard Vavrda

Postup pi importu. Zdroje: ElkoValenta, HP tronic. A. export vytvoených kategorií

krajské školící stedisko projektu

odborný seminá ke komentovanému vydání ONR "Management rizik pro organizace a systémy

1 Píklady popisu typických konstrukcí

Ruby on Rails. Bc. Tomáš Juřík Bc. Bára Huňková

Firmy hledají hvzdy. Ale ne za každou cenu

DTP Základy programování Úvod do předmětu

Univerzální ovlada LP20 DÁLKOVÝ OVLADA S MOŽNOSTÍ UENÍ SE OD PVODNÍCH OVLADA

1 Základních pojmy z oblasti programování, vyšší programovací jazyky, programovací paradigmata

Dodatek dokumentace KEO-Moderní kancelá verze 7.40

Proud ní tekutiny v rotující soustav, aneb prozradí nám vír ve výlevce, na které polokouli se nacházíme?

WWW poštovní klient s úložištm v MySQL databázi

C2184 Úvod do programování v Pythonu podzim Mgr. Stanislav Geidl Národní centrum pro výzkum biomolekul Masarykova univerzita.

Algoritmy I. Cvičení č. 2, 3 ALGI 2018/19

Dokumentaní píruka k aplikaci. Visor: Focení vzork. VisorCam. Verze 1.0

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

Informace pro autory píspvk na konferenci ICTM 2007

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

E U. Evropská unie (EU) a její instituce fakta. 1 Jsou tyto výroky pravdivé, nebo nepravdivé? 3 Kolik zemí je lenskými státy Evropské unie?

Diagnostika u voz s 2-místnými diagnostickými kódy

PRÁCE S GRAFICKÝMI VÝSTUPY SESTAV

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

INOVACE PŘEDMĚTŮ ICT. MODUL 11: PROGRAMOVÁNÍ WEBOVÝCH APLIKLACÍ Metodika

Program a životní cyklus programu

SKRIPTOVACÍ JAZYK PRO PROSTEDÍ

Aditivní barevný model RGB pidává na erné stínítko svtla 3 barev a tak skládá veškeré barvy. Pi použití všech svtel souasn tak vytvoí bílou.

Pídavný modul rozvaha lze vyvolat z hlavní nabídky po stisku tlaítka Výkazy / pídavné moduly.

OCR (optical character recognition) - rozpoznávání textu v obraze

Nový InfoFIT. Manuál k systému Alfresco DMS. Obsah. Úvod. Pihlášení do systému pes webové rozhraní

Inventury verze 1.40

"DLK 642-Lite Konfigurator" Programové vybavení pro ídicí jednotku DLK642-Lite Instalaní a programovací návod verze Aktualizace 3.11.

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

AUTOMATIZACE Úvod do programování PLC

II. Jak se p?ihlásit do diskusní skupiny

Úvod. Programovací paradigmata

Zbytky zákaznického materiálu

Gymnázium. Kromíž. Zpracování textu. Word 1 SIPVZ-modul-P0

Databázové aplikace pro internetové prostředí PHP úvod, základní princip, vkládání skriptu, komentáře, výpis na obrazovku

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY

Transkript:

Programovací jazyk Python [citováno z http://wraith.iglu.cz/python/index.php] Python je jazyk objektov orientovaný, interpretovaný, dynamický a siln typovaný, multiplatformní, s jednoduchou a itelnou syntaxí, zamený na snadné pochopení, použití a na vysokou produktivitu programování. Pvodn byl zamýšlen jako druhý jazyk k njakému systémovému. Ale postupem asu se z nj stal výkonný nástroj, a nkteí programátoi oblíbili natolik, že ho používají jako svj hlavní jazyk. O Pythonu se dále tvrdí, že je vhodný pro výuku programování, psaní prototyp aplikací, webových aplikací, aplikací typu klient/server, síových aplikací, skript, utilit, systémových program, menších GUI aplikací, práci s textovými dokumenty vetn XML, skriptování jiných aplikací a podobn. Python je jazyk s bohatými možnostmi, který dokáže být užitený jak profesionálm (jako druhý jazyk pro rychlé a snadné programování menších vcí a prototypování i skriptování vlastních aplikací), tak zaáteníkm, kterým nabízí snadnost nauení i použití a pravdpodobn i pokrytí všech jejich poteb. Jeho nejvtší omezení je, pravdpodobn, nižší výkon. Objektov orientovaný Python je objektov implementovaný (všechno v nm je objekt). Ale podporuje dobe jak objektov orientované tak i strukturované programování. To je užitené, protože objektov orientované programování (OOP) je ponkud abstraktní a s výhodou se uplatní až u vtších projekt. U drobných vcí je to povstný kanón na vrabce a jeho nevýhody pevažují nad výhodami. U drobnjších vcí se lépe uplatní procedurální technika. Python nám tak nabízí vtší flexibilitu v návrhu programu, protože se umí oproti jiným jazykm lépe pizpsobit potebám a osobním preferencím. Díky tomu pokrývá vtší spektrum úloh, na jejichž ešení se hodí. Hlavní rozdíl mezi OOP a procedurálním programováním se dá laicky poposat tak, že v procedurálním programování máme samostatná data, která se zpracovávají samostatnými funkcemi (procedury), jenž vytváíme a které mají jeden vstup a jeden výstup. V OOP oproti tomu máme objekty, které sdružují data a funkce, které s nimi pracují, v jeden celek - objekt (nazývá se to zapouzdení). Objekt mže mít adu vstup i výstup a mže si pamatovat i svoji historii. Objekty se vytváí na základ jakési šablony, které se nazývají tídy. Tídu je také možno vnímat jako uživatelsky definované komplexní datové typy. Z jedné tídy je možno odvodit podtídy, které

rodiovskou tídu specializují (napíklad z tídy íslo by mohly vzniknout podtídy celé íslo, desetinné íslo a komplexní íslo). Takto mohou vzniknout rozsáhlé hierarchie tíd. Je to velmi výhodné pi práci s rozsáhlou sadou datových typ, které mají cosi spoleného, protože potebujeme-li upravit njakou spolenou vlastnost, staí upravit rodiovskou tídu a všichni její potomci tuto úpravu zddí. Návrh objektov orientovaného programu, celý systém hierarchie tíd a podobn je náronjší, než návrh procedurálního programu. Je poteba myslet dopedu a mít s programováním njaké zkušenosti. Proto je lepší se zaít uit programovat na njakém procedurálním jazyku. U Pythonu je výhodou, že v nm mžeme zaít programovat proceduráln a postupn plynule pejít na objektový návrh. Interpretovaný jazyk Jazyky mohou být kompilované nebo interpretované. U kompilovaných jazyk se napsaný kód jednou zkompiluje (peloží) do instrukcí procesoru (binární kód). Tento binární kód (ve Windows nap. exe soubory) je možno spustit, což znamená, že procesor vykonává pedepsané instrukce. U interpretovaných jazyk je to složitjší, existují rzná ešení. Obecn se napsaný kód pekládá do tzv. bajtového kódu a tento kód pak provádí interpret jazyka. Interpret jazyka je obvykle kompilovaný program, který bajtový kód pevádí na instrukce procesoru. Peklad do bajtového kódu má adu podob. Mže ho provádt interpret jazyka na pozadí. To znamená, že takový bajtový kód je jen v operaní pamti poítae a kód programu se do bajtového kódu pevádí vždy pi jeho spuštní. To je obvyklé u skriptovacích jazyk. Výhodou je, že s napsaným programem se nemusí nic dlat, lze rovnou snadno spustit. Nevýhodou je, že peklad chvilku trvá (teba peklad OpenOffice.org trvá nkolik hodin), takže toto ešení je použitelné jen u malých prográmk, skript, kde je zpoždní zpsobené pekladem nepatrné. Alternativní ešení, které nás tímto neomezuje je, že se kód interpretovaného jazyka peloží do bajtového kódu pekladaem do souboru, podobn jako je tomu u kompilovaných jazyk. Takový peklad se provádí jen jednou a interpet jazyka dostává k dispozici rovnou bajtový kód, který umí rychle naíst. Tak to dlá teba Java. To nám umožní psát rozsáhlejší programy, ale zas je s tím víc obtžující práce. Pedstavte si, že byste ve Windows museli kompilovat bat soubory ped jejich použitím. Python tuto záležitost origináln eší tak, že oba pístupy kombinuje a bere si z nich to lepší. Peklad do bajtového kódu dlá automaticky sám interpret (snadné spouštní). Bajtový kód se ale zárove

uloží i do souboru a pi dalším spuštní programu se znova nepekládá, ale nate se z toho souboru (rychlé spuštní). Dokonce to jde tak daleko, že interpret podle asu souboru pozná, jestli jste neudlali v programu zmnu a když ano, tak ho automaticky peloží do bajtového kódu znovu. Výsledkem ešení Pythonu je, že mžete psát vtší programy a zárove je to programování tak snadné, jako u skriptovacích jazyk. Python tak lze snadno použít jak na psaní skript, tak na psaní vtších aplikací a u tch vtších aplikací navíc díky snadnému použití (absenci kompilace) zvyšuje produktivitu programování. Další obecnou vlastností interpretovaných program je, že jsou více nebo mén pomalejší než kompilované programy. Takže tu vyvstává otázka, pro se vbec interpretovanými jazyky zabývat. Odpov je jednoduchá, ten rozdíl výkonu nemusí být prakticky ani pozorovatelný a interpretované jazyky to vyvažují tím, že jsou produktivnjší (programy v nich se píší snadnji a rychleji). Nap. webovým aplikacím dominují programy psané v interpretovaných jazycích, jako je PHP nebo Java. Datové typy a typování Jazyk mže mít dynamické nebo statické typování. U statického typování se datový typ piazuje k promnné pi její deklaraci. Promnné jsou známy již pi pekladu zdrojového kódu a díky tomu již v dob pekladu lze odhalit nkterá nesprávná použití promnných a datových typ (chyby v programu). Také to umožuje lepší optimalizaci programu na výkon. Nevýhodou je, že promnná mže nést jen hodnoty jednoho datového typu a obejít toto omezení komplikuje psaní programu. U dynamického typování je datový typ sdružen s hodnotou. Hodnoty promnných vznikají až za bhu programu a tak nemohou být jejich datové typy kontrolovány pi kompilaci. Mohou ale být kontrolovány za bhu programu. U jazyk s dynamickým typováním mže nést promnná hodnotu rzných datových typ. Také u nich lze za bhu programu datové typy, teba tídy, modifikovat. To zlepšuje flexibilitu a snadnost programování, ale ztžuje optimalizaci programu na výkon. Proto jazyky s dynamickým typováním jsou obecn pomalejší. V nkterých situacích až ádov. Jazyk dále mže mít silné nebo slabé typování. Siln typovaný jazyk provádí kontrolu typ a spolehliv zjištuje jejich chybné použití (chyby v programu). Slab typovaný jazyk to nedlá a špatné použití typ neumí spolehliv detekovat. Python má dynamické a pesto silné typování: print 'Výsledek =', 1 + "1"

Výsledek = TypeError: unsupported operand type(s) for +: 'int' and 'str' Nelze nap. sítat datový typ int a str, tedy íslo a text. Pesto si ada programátor myslí, že Python se nehodí na psaní rozsáhlých nebo dležitých vcí. Ani známá teze ím dív se na chybu pijde, tím lépe neobstojí, protože u interpretovaných jazyk k prvnímu spuštní programu dochází díve, než ke kompilaci u jazyk kompilovaných a k tomu spouštní dochází astji, protože je to výrazn jednodušší, než spuštní kompilovaného programu. Asi nejúinnjší zpsob jak psát robustní programy je testování kódu, testování kódu a testování kódu. A to v jakémkoli jazyce. Python nabízí adu pomcek, jak toto testování usnadnit a automatizovat. Dále detekci chyb zlepšuje zmínná silná kontrola typ. Pedcházení chyb napomáhá struná a pehledná syntaxe (uvádí se, že na to samé je v Pythonu poteba napsat cca 5 mén kódu než v jazyce C. Dále Python pedcházení chyb napomáhá syntaktickými drobnostmi. Nap. v podmínce nesmí být piazení, takže v Pythonu nemže dojít k k asté a záludné chyb, kdy místo == napíšete omylem jen =. Nebo se k vymezování blok nepoužívají závorky, které se obas zatoulají, píkazy se nemusí ukonovat stedníky a podobn. To všechno jsou chyby, které každý programátor obas udlá, ale ne v Pythonu, tam k nim dojít nemže. To je vše k absenci statického typování, které se asto zveliuje. Syntaxe Tvrci Pythonu považují syntaxi za velmi dležitou a je ve stedu jejich zájmu. Jejich cílem je jednoduchá, pehledná a snadno srozumitelná syntaxe, která poskytuje co nejmén píležitostí k chybám. Prvním znakem syntaxe Pythonu je pímoarost. Jednoduché vci se dlají jednoduše. Napíklad natení obsahu souboru do promnné lze udlat takto snadno: obsah = open("soubor.txt").read() To je celé. Taková pímoarost vede ke krátkému kódu. Krátký kód je pehledný a snadno pochopitelný. Snáz se udržuje a je v nm mén chyb. Druhým znakem syntaxe Pythonu je odsazování.

Kdykoli pohlédnete na kód Pythonu, uvidíte, že je hezky odsazený. To proto, že odsazování kódu dle jeho struktury je v Pythonu souástí syntaxe, je povinné. V každém programovacím jazyce je poteba njak vyznaovat jeho srukturu, jeho bloky píkaz. asto se k tomu používají složené závorky (C, Java, PHP) nebo klíová slova (Pascal, VB). Python používá odsazování. Jde o to, že jak závorky tak klíová slova jsou nepehledné. Je to dobré pro peklada, ale ne pro lovka. Má-li se lovk ve svém kódu vyznat, musí odsazovat, samotné závorky mu nepomohou. Odsazování kódu patí mezi dobrou praxi u všech jazyk. Pro by ml lovk strukturu programu vyznaovat jedním zpsobem pro sebe a druhým pro peklada? Nemže se snad peklada pizpsobit lidem? Mže, Python je toho dkazem. Tetím znakem Pythonu je minimalismus. U Pythonu se tento minimalismus projevuje v co nejmenším potu podporovaných konstrukcí pro ízení programu. Poskytuje jednu konstrukci pro podmínné vykonávání vykonávání kódu (if-elifelse), jednu pro opakované vykonávání kódu s koneným potem cykl (for-else) a jednu pro opakované vykonávání kódu s podmínným potem cykl (while). To je minimální, ale dostatená sada konstrukcí pro ízení programu. Komentáe a dokumentaní etzce Python zná vcelku bžné jednoádkové komentáe, které zaínají znakem # a platí až do konce ádku. Víceádkové komentáe nezná, ale umí víceádkové textové etzce, které se používají jako komentáe. Je-li takový víceádkový etzec/komentá umístn na zaátek funkce, metody, tídy nebo modulu, tak s ním Python nakládá jako s dokumentaním etzcem.