sobota 24. mája 2014

Programovacie jazyky


  • popíšte etapy tvorby programu
  • vysvetlite pojem kompilátor, interpreter
  • popíšte základné delenie programovacích jazykov
  • popíšte prostredia programovacieho jazyka
  • popíšte štruktúru programu
  • vytvorte program podľa zadania



Základné termíny


  • Program – postupnosť príkazov (inštrukcií) programovacieho jazyka, ktorou popisujeme, ako má počítač (procesor) riešiť určitú úlohu. 
  • Príkazy – sú vety jazyka, ktoré prikazujú procesoru vykonať isté presne stanovené činnosti (napr. príkaz vstupu, výstupu, priradenia). Príkazy spracovávajú nejaké objekty (premenné, konštanty, výrazy). 
  • Premenná je objekt (pomenované pamäťové miesto), ktorý obsahuje konkrétnu hodnotu (číslo, znaky), ktorá sa počas behu programu môže meniť. 
  • Konštanta je objekt, ktorý má počas realizácie programu jedinú konkrétnu hodnotu. 
  • Výraz je predpis pre získanie hodnoty. Obsahuje operandy (premenné, konštanty, ...), operátoty (+, -, *, /, <, >, ...) a zátvorky. 
  • Identifikátor je názov objektu programu (premennej, konštanty, podprogramu, ...). Doporučuje sa voliť mnemotechnické identifikátory, t. j. také, ktoré približujú hodnotu, ktorá je v nich uložená. 


 Etapy tvorby programov


1. Zadanie úlohy a presné vymedzenie problému. Rozbor problému ( čo ideme riešiť, presne
sformulujeme zadanie problému a samozrejme aj požiadavky kladené na program). Výsledkom
rozboru je popis vstupných a výstupných informácií a vzťahov medzi nimi.

2. Navrhneme postup riešenia – vytvoríme algoritmus – všeobecný zápis návodu riešenia ( ako
riešiť, metódy a spôsoby riešenia). Výsledkom návrhu riešenia je zápis jednotlivých krokov
(príkazov) algoritmu a to buď v algoritmickom jazyku alebo graficky pomocou vývojového
diagramu alebo štruktúrogramu. Ak sa vyskytnú viaceré možnosti riešenia, snažíme sa zistiť,
ktorý je najefektívnejší. Pokúšame sa odhadnúť prácnosť naprogramovania každého z nich a po
zohľadnení oboch týchto kritérií si jeden spôsob vyberieme.

3. Realizácia (prepis algoritmu do programovacieho jazyka – tie majú rôznu syntax – súbor
príkazov a pravidiel, kými sa v ňom zapisujú programy)
Ladenie a testovanie – ladenie programu (oprava chýb syntaktických a logických, novšie
verzie, prispôsobenie softvéru požiadavkám používateľa)

4. Dokumentácia a údržba. Ak je program dobrý a chceme ho ponúknuť aj iným ľuďom, je
dobré, ak sa k nemu vytvorí minimálne pomocník. Vhodná je aj dokumentácia, ktorú môžu
využiť iní programátori, kde opíšete, ako ste pristupovali k riešeniu jednotlivých problémov atď.
Ak sa program uchytí, postaráme sa o jeho údržbu (modifikácie, vylepšenia) a podporu
(napríklad možnosť napísať vám mail a opýtať sa na niečo).

Kompilátor


Kompilátor alebo kompilujúci program alebo prekladač je program, ktorý dokáže preložiť zdrojový kód napísaný v niektorom programovacom jazyku do iného programovacieho jazyka, najčastejšie do strojového kódu. Ak prekladač vykonáva preklad z vyššieho programovacieho jazyka do nižšieho, hovoríme, že ide o preklad nadol. Ak preklad prebieha z nižšieho programovacieho jazyka do vyššieho, hovoríme, že ide o [preklad nahor] a takýto prekladač voláme dekompilátor alebo opačný kompilátor. Ak je zdrojový a cieľový jazyk približne rovnako mohutný, takýto prekladač nazývame predkompilátor alebo kompilátor 1:1. AK je cieľom prekladu získanie optimálneho kódu, takémuto prekladaču hovoríme o optimalizačný kompilátor.

Program preložený do strojového kódu len málokedy obsahuje všetky procedúry a funkcie potrebné na jeho spustenie. Mnohé funkcie a procedúry sa nachádzajú vo vopred preložených súboroch, ktoré nazývame knižnice. Aby bolo možné program spustiť, je potrebné prepojiť relatívne odkazy na procedúry a funkcie so skutočnými adresami. Túto činnosť vykonáva spájací program, ktorý tiež nazývame linker.
Alternatívnym spôsobom vykonávania kódu je interpretácia zdrojového kódu v čase behu programu. Program, ktorý tento preklad zabezpečuje, sa nazýva interpreter. Existujú aj kombinované riešenia, kedy sa najprv prekladá do pomocného kódu, ktorý sa interpretuje v čase behu (napr. Java).
Kompilátor poväčšine vykonáva niekoľko, prípadne všetky z nasledujúcich činností: lexikálna analýza, preprocesing, parsing, sémantická analýza, generovanie kódu a jeho optimalizácia.

Interpreter


Interpreter je počítačový program, ktorý interpretuje iný program napísaný v nejakom programovacom jazyku. Interpretre môžu program interpretovať riadok po riadku alebo preložia program do nejakého medzikódu a tento medzikód potom vykonávajú. Ak je v programe syntaktická chyba, prvý druh interpretra vykoná program po túto syntaktickú chybu a zahlási chybu na príslušnom riadku, druhý druh interpretra program nezačne vykonávať a počas prekladu do medzikódu zahlási chybu.
Programy vykonávané interpretrom bežia väčšinou pomalšie, ako kompilované programy.
Interpreter môže byť vo všeobecnosti interpretátorom ľubovoľného formalizovaného jazyka, napríklad interpreter matematických výrazov.

Základné delenie programovacích jazykov



  • Nižšie programovacie jazyky (Assembler, strojový kód) - vykonávajú strojové inštrukcie
  • Vyššie programovacie jazyky (Pascal, Basic, Prolog, Lisp, Algol, Fortran) - prekladané do strojového kódu
  • Procedurálne (Pascal, C, Basic, PHP, Perl) - k riešeniu využívajú algoritmus
  • Logické (Prolog) - logické výroky - v praxi nevyužiteľné (napr. tvorba umelej inteligencie)
  • Funkcionálne (Lisp, Haskell, Miranda) - program je sústava zložitých funkcií (matematika) 
  • Interpretované a kompilované jazyky

Interpretované jazyky sú prekladané až počas behu programu. Sú pomalšie, ale nemajú tak veľké formálne požiadavky (nie je potreba inicializovať premennú, jej dátový typ sa môže počas behu meniť, ukazovatele sú zbytočné). Prekladajú sa interpreterom, ten inštrukcie zároveň pri preklade vykonáva. Hlavnou nevýhodou týchto jazykov je, že sa musia vždy spúšťať v interpreteri. Do tejto skupiny patrí väčšina verzií Basicu a všetky skriptovacie jazyky (PHP, Python, ...).

Kompilované jazyky sú celé preložené a až potom môžu byť spustené. Sú rýchlejšie, majú vyššie nároky na formálnu správnosť kódu. Prekladajú sa kompilátorom, výsledkom prekladu je (väčšinou) .exe súbor. Patrí sem väčšina klasických programovacích jazykov. 

Teoreticky môže mať jeden programovací jazyk verziu interpretovanú i kompilovanú.

Objektovo orientovaným programovaním sa bežne označuje prístup, keď programátor definuje nielen typ dátových štruktúr (atribúty), ale aj operácie ktoré sa dajú nad nimi vykonávať (metódy).

Procedurálne jazyky nemusia obsahovať objekty s vlastnosťami a udalosťami, sú programovacie jazyky, kde najvyššou zložkou býva procedúra alebo jednotka zahrňujúca jeden alebo viac procedúr.

Vo funkcionálnych jazykoch je množina funkcií komunikujúcich predávaním hodnôt. Často sa využívajú na zápis matematických algoritmov a na výučbu.

Jazyky pre logické programovanie využívajú matematický zápis.

Prostredia programovacích jazykov


Vývojové prostredie (často sa používa skratka IDE z ang. Integrated development environment) je software uľahčujúci prácu programátorov, väčšinou zameraný na jeden konkrétny programovací jazyk. Obsahuje editor zdrojového kódu, kompilátor, prípadne interpret a väčšinou i debugger. Niektoré obsahujú systém pre rýchly vývoj aplikácií (zvaný RAD), ktorý slúži pre vizuálny návrh grafického používateľského rozhrania. Pokiaľ ide o nástroj pre objektovo orientované programovanie, môže obsahovať aj object browser.

Štruktúra programu



hlavička programu: program meno;
blok:
deklaračná časť
príkazová časť:
begin
príkaz 1;
príkaz 2;

príkaz n;
end.

Deklarácia premenných


VAR (medzera) IDENTIFIKÁTOR:údajový typ;

Príklad:

VAR A:INTEGER; - premenná A bude nadobúdať celočíselné hodnoty
VAR X:REAL; - premenná X bude nadobúdať hodnoty na množine reálnych čísiel
VAR C:CHAR; - premenná C bude nadobúdať akékoľvek znakové hodnoty
VAR A,B: INTEGER; - premenné A a B budú nadobúdať celočíselné hodnoty
X,Z:REAL; - X a Z budú nadobúdať hodnoty na množine reálnych čísiel
C:CHAR; - C bude nadobúdať znakové hodnoty


Príklad PROGRAM


Vytvorte program, ktorý vypočíta súčet N prirodzených čísel, pričom hodnotu N definuje používateľ.

Program SUCETCISEL;

var i, súčet: integer;

Begin
    Writeln('Zadaj cislo N:');
    Readln (n);
    sucet:=0;
    i:=1;
    While (i<=n) do begin
          sucet:=sucet;
          i:=i+1;
          end;
    Writeln('Sucet prvych ',n,' cisel je: ',sucet);
    Readln;
End.




Žiadne komentáre:

Zverejnenie komentára