1 / 25

Informatika I 9 . přednáška

Informatika I 9 . přednáška. RNDr. Jiří Dvořák, CSc. dvorak @uai.fme.vutbr.cz. Obsah přednášky. Vývoj programovacích technik Strukturované programování Modulární programování Objektově orientované programování. Vývoj programovacích technik. Strukturované programování

kuper
Download Presentation

Informatika I 9 . přednáška

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Informatika I9. přednáška RNDr. Jiří Dvořák, CSc. dvorak@uai.fme.vutbr.cz

  2. Obsah přednášky • Vývoj programovacích technik • Strukturované programování • Modulární programování • Objektově orientované programování Informatika I: přednáška 9

  3. Vývoj programovacích technik • Strukturované programování • Modulární programování • Objektově orientované programování S tímto vývojem je spojeno: • zvyšování úrovně abstrakce • posilování principu ukrývání dat a implementačních detailů Cílem těchto technik je zefektivnit tvorbu programů a zajistit, že vytvořené programy budou mít jasnou a srozumitelnou strukturu a budou snadno ověřitelné a rozšiřitelné. Informatika I: přednáška 9

  4. Strukturované programování Zásady a postupy strukturovaného programování: • postup shora dolů při tvorbě programu • používání doporučených datových a příkazových struktur • nepoužívání (resp. minimalizace používání) příkazu goto • členění programu do podprogramů • grafická úprava programu, zvýrazňující jeho strukturu • používání výstižných identifikátorů a účelných komentářů Informatika I: přednáška 9

  5. Příkaz goto v Pascalu Příkaz goto (příkaz skoku) způsobí předání řízení na příkaz označený návěštím. ... gotonávěští; ... návěští: příkaz; ... Návěští je identifikátor nebo celé číslo bez znaménka od 0 do 9999 a musí být deklarováno v nejblíže nadřazeném bloku deklarací labelnávěští; Příkaz skoku i označený příkaz se musejí nacházet v témž bloku. To znamená, že nejsou možné skoky dovnitř bloku nebo ven z bloku. Označený příkaz může být prázdný a tudíž je možné návěštím označit také koncové end nějaké příkazové struktury. Informatika I: přednáška 9

  6. Možnosti náhrady příkazu gotov Borland a Object Pascalu Použití příkazu goto je vhodné např. tehdy, když se jedná o ukončení procedury či programu skokem na konec příslušného bloku nebo o předčasné ukončení cyklu skokem na příkaz bezprostředně následující za příkazem cyklu. Pro tyto účely však existují následující náhrady: break Tento příkaz způsobí předčasné ukončení cyklu; výpočet pokračuje příkazem bezprostředně následujícím za příkazem cyklu. exit Tento příkaz způsobí ukončení právě prováděného programu nebo podprogramu (procedury nebo funkce). Informatika I: přednáška 9

  7. Modulární programování Modulární programování spočívá v členění programu do programových modulů (jednotek), které jsou samostatně kompilovatelné. program moduly procedury a funkce . . . . . . Informatika I: přednáška 9

  8. Struktura modulu • Jméno modulu • Rozhraní (interface) modulu • dovoz modulu • vývoz modulu • deklarace veřejných konstant, proměnných a typů • specifikace veřejných operací (procedur a funkcí) • Implementační část modulu • deklarace soukromých konstant, proměnných a typů • specifikace a implementace soukromých operací • implementace veřejných operací Informatika I: přednáška 9

  9. Program používající programové jednotky program jméno_programu; uses seznam jmen jednotek; deklarace návěští; definice konstant; definice typů; deklarace proměnných; deklarace procedur a funkcí; begin příkaz1; příkaz2; . . . end. Pozn.: V Pascalu se moduly označují jako jednotky (units). Informatika I: přednáška 9

  10. Struktura programové jednotky unit jméno_jednotky; interface uses seznam jmen jiných jednotek; veřejnédeklarace konstant, typů a proměnných; hlavičkyveřejných procedur a funkcí; implementation uses seznam jmen dalších jednotek; soukromé deklarace; implementace veřejných procedur a funkcí; begin inicializační příkazy; {tyto příkazy se provedou jednou před prvým použitím jednotky} end. Informatika I: přednáška 9

  11. Jednotka pro práci s komplexními čísly unit KomplexniCisla; {Při definici operaci nad komplexnimi cisly se vyuziva toho, ze v Object Pascalu funkce mohou mit strukturovany typ} interface type TComplex=record Re,Im:real; end; function Hodnota(Re,Im:real):TComplex; {Slouzi pro nastaveni hodnoty komplexniho cisla} function Soucet(X,Y:TComplex):TComplex; function Rozdil(X,Y:TComplex):TComplex; function Soucin(X,Y:TComplex):TComplex; function Podil(X,Y:TComplex):TComplex; function Nasobek(A:real;X:TComplex):TComplex; {Vypocita soucin realneho a komplexniho cisla} function AbsHodn(X:TComplex):real; Informatika I: přednáška 9

  12. procedure Cti(var X:TComplex); {Z klavesnice se cte realna a imaginarni slozka jako dvojice cisel typu real; cisla jsou oddelena mezerou a dvojice je ukoncena radkem.} procedure CtiTF(var T:TextFile; var X:TComplex); {Z textoveho souboru se cte realna a imaginarni slozka jako dvojice cisel typu real; cisla jsou oddelena mezerou a dvojice je ukoncena radkem.} procedure Pis(X:TComplex;PocZ,PocD:integer); {Komplexni cislo se vypise na obrazovku ve tvaru (Re,Im), pricemz se neprechazi na novy radek. PocZ je pocet znaku a PocD počet desetinnych mist. Je-li PocD zaporne, pouzije se semilogaritmicky tvar.} procedure PisTF(var T:TextFile; X:TComplex; PocZ,PocD:integer); {Kazde komplexni cislo se zapisuje do textoveho souboru na novy radek jako dvojice hodnot Re a Im oddelenych mezerou.PocZ a PocD mají stejny vyznam jako v predchozim pripade.} Informatika I: přednáška 9

  13. implementation function Hodnota(Re,Im:real):TComplex; begin Hodnota.Re:=Re; Hodnota.Im:=Im; end; function Soucet(X,Y:TComplex):TComplex; begin Soucet.Re:=X.Re+Y.Re; Soucet.Im:=X.Im+Y.Im; end; function Rozdil(X,Y:TComplex):TComplex; begin Rozdil.Re:=X.Re-Y.Re; Rozdil.Im:=X.Im-Y.Im; end; function Soucin(X,Y:TComplex):TComplex; begin Soucin.Re:=X.Re*Y.Re-X.Im*Y.Im; Soucin.Im:=X.Re*Y.Im+X.Im*Y.Re; end; Informatika I: přednáška 9

  14. function Podil(X,Y:TComplex):TComplex; var Pom:real; begin Pom:=sqr(Y.Re)+sqr(Y.Im); Podil.Re:=(X.Re*Y.Re+X.Im*Y.Im)/Pom; Podil.Im:=(X.Im*Y.Re-X.Re*Y.Im)/Pom; end; function Nasobek(A:real;X:TComplex):TComplex; begin Nasobek.Re:=A*X.Re; Nasobek.Im:=A*X.Im; end; function AbsHodn(X:TComplex):real; begin AbsHodn:=sqrt(sqr(X.Re)+sqr(X.Im)); end; procedure Cti(var X:TComplex); begin readln(X.Re,X.Im); end; Informatika I: přednáška 9

  15. procedure CtiTF(var T:TextFile; var X:TComplex); begin readln(T,X.Re,X.Im); end; procedure Pis(X:TComplex;PocZ,PocD:integer); begin if PocD<0 then write('(',X.Re,',',X.Im,')') else write('(',X.Re:PocZ:PocD, ',',X.Im:PocZ:PocD,')'); end; procedure PisTF(var T:TextFile; X:TComplex; PocZ,PocD:integer); begin if PocD<0 then write(T,X.Re,' ',X.Im) else write(T,X.Re:PocZ:PocD, ' ',X.Im:PocZ:PocD); writeln; end; end. Informatika I: přednáška 9

  16. Sečítání komplexních čísel program ScitaniKompCisel; {$APPTYPE CONSOLE} {Cisla se ctou z textoveho souboru a soucet se vypisuje na obrazovku} uses KomplexniCisla; var X,Suma:TComplex; Vstup:textfile; Jmeno:string; begin writeln('Zadej vstupni soubor'); readln(Jmeno); assignfile(Vstup,Jmeno); reset(Vstup); Informatika I: přednáška 9

  17. Suma:=Hodnota(0,0); while not seekeof(Vstup) do begin CtiTF(Vstup,X); Suma:=Soucet(Suma,X); end; write('Soucet= '); Pis(Suma,8,2); writeln; closefile(Vstup); writeln('Stiskni Enter'); readln; end. Informatika I: přednáška 9

  18. Objektově orientované programování Objektově orientované programování je přístup k tvorbě programů, založený na využití objektů a jejich vlastností. Zahrnuje analýzu problému, návrh struktury programu i způsob psaní programu. Základní pojmy: objekt, třída (objektový typ), posílání zpráv, zapouzdření, dědičnost, polymorfismus. Informatika I: přednáška 9

  19. Objekt Objekt je programová struktura, obsahující jak data, tak metody, které s těmito daty pracují. Zapouzdření(encapsulation) znamená, že data objektu jsou přístupná pouze prostřednictvím metod tohoto objektu. metody data Informatika I: přednáška 9

  20. Třída (class) Třídaje skupina objektů, které mají stejné vlastnosti (atributy, datové složky) a stejné chování (metody). Objekt, který patří do určité třídy, se nazývá instance této třídy. Atributy (datové složky): • atributy třídy • atributy instancí Metody: • metody třídy (např. konstruktor) • metody instancí (např. destruktor) Informatika I: přednáška 9

  21. Dědičnost (inheritance) Od jedné třídy (bázové, rodičovské) můžeme odvodit třídu jinou (odvozenou, dceřinnou). Dceřinná třída (potomek) dědí všechny složky své rodičovské třídy (předka) a k nim může přidat svoje vlastní. Zděděné metody je možno předefinovat. Potomek může v programu vždy zastoupit předka (i nepřímého). Naopak to možné není. Dědičnost může být: • jednoduchá (třída má jednoho rodiče) • vícenásobná (třída má více rodičů) Informatika I: přednáška 9

  22. Třídy, objekty a dědičnost M1 Třída T A1, A2 vytvoření instance Atributy: A1, A2 M2 Metody: M1, M2 odvození třídy M1 M3 Třída T1 (od T) A1, A2, A3 Atributy: A3 Metody: M1, M3 M2 Informatika I: přednáška 9

  23. Skládání tříd a objektů m1 Třída T1 vytvoření instance a1, a2 Atributy: a1, a2 m3 m2 Metody: m1,m2,m3 M1 m1 Třída T2 a1, a2 Atributy: A typu T1 m3 m2 Metody: M1, M2 M2 Informatika I: přednáška 9

  24. Posílání zpráv Objekty spolu komunikují tak, že si navzájem posílají zprávy. Obvykle to znamená, že jeden objekt (odesilatel zprávy) volá metodu jiného objektu (příjemce zprávy). Časná vazba(early binding): Příjemce zprávy je určen v okamžiku kompilace. Pozdní vazba (late binding): Příjemce zprávy je určen až za běhu programu. Pomocí pozdní vazby se realizuje polymorfismus(mnohotvarost). To znamená, že určitá metoda se může v různých kontextech chovat různě. Informatika I: přednáška 9

  25. Jazyky pro OOP • Jazyky čistě objektové (Smalltalk, Actor, CLOS, … ) • Jazyky podporující OOP, ale umožňující programovat i neobjektově (Borland Pascal, Object Pascal, C++, … ) Informatika I: přednáška 9

More Related