(strukturované programování v imperativním jazyce, datové a řídicí struktury programovacích jazyků, datové typy, procedury a funkce, bloková a modulární struktura programu)
Program je posloupnost příkazů, které jsou postupně prováděny:
příkaz 1;příkaz 2;…….;příkaz n;
Během provádění programu se počáteční stav počítače postupně modifikuje, dokud se nedosáhne cílového stavu. Jsou to většiny „běžných“ jazyků (Basic, Pascal, C, C++, Java…).
Označuje programovací techniku, kdy se implementovaný algoritmus rozděluje na dílčí úlohy, které se spojují v jeden celek. Každý celek se může skládat z menších bloků. Na nejnižší úrovni jsou bloky složeny z příkazů programovacího jazyka nebo volání funkcí. K implementaci v programu se používá řídících struktur.
Všechny příkazy se provedou postupně
Příkaz se provede v závislosti na splnění/nesplnění podmínky
if (podmínka) { //když podmínka splněna }else { //když podmínka nesplněna }
switch (n) { case 1 : case 2 : case 3 : ... break; case 4 : ... break; default: ... ; // tato vetev bude provedena pokud zadna podminka nevyhovuje, uvádí se na konci }
Příkaz break na konci každé větve není povinný, ale pokud tam není, začne se po skončení větve provádět další větev v pořadí bez ohledu na hodnotu výrazu (tak jako 1,2 v našem příkladě).
V závislosti na splnění podmínky se část programu vykoná vícekrát
Existují tyto druhy cyklů:
„Elegantní“ způsob, jak naprogramovat nekonečný cyklus v jazyku C/C++/C# je použít for cyklus bez inicializace, podmínky i inkrementu:
for (;;) { //tělo cyklu }
while (true) { //tělo cyklu }
int i = 0; while ( i < 3 ) { // dokud i < 3 cout << i; // vypise hodnotu i i++; }
int i = 0; do { // opakuj cout << i; // vypise hodnotu i i++; }while (i < 3); // dokud je i < 3
for ( i=0; i < 3; i++ ) { //inicializátor; podmínka; inkrementace //tělo cyklu }
Společně s cykly bývají často používány příkazy:
Principiálně existují 2 druhy skoků:
v dnešní době se však už skoky používají jen výjimečně.
Hlavním cílem je zjednodušit a zpřehlednit program, který provádí operace s datovým typem. Jsou-li všechny komponenty dané struktury téhož typu, označujeme strukturu homogenní, v opačném případě heterogenní.
Rozdělení:
Datový typ definuje druh proměnných. Je určen oborem hodnot a zároveň typickými výpočetními operacemi, které lze s daty provádět.
Tři základní skupiny:
typedef struct { int vek; char *jmeno; enum { muz, zena } pohlavi; } Osoba;
Abstraktní datový typ je implementačně nezávislá specifikace struktury dat s operacemi povolenými na této struktuře.
Základní ADT jsou například:
Zabudované ADT Protože některé abstraktní datové typy jsou velmi užitečné a běžně používané, některé programovací jazyky používají tyto ADT jako primitivní datové typy, které jsou přidány do jejich knihoven. Například v Perlu je možné pole považovat za implementaci seznamu, standardní knihovny C++ a Javy zase nabízejí implementaci seznamu, zásobníku, fronty a řetězců.
Vlastnosti abstraktního datového typu Nejdůležitější vlastnosti abstraktního typu dat jsou:
Typy operací
Na abstraktním datovém typu rozlišujeme tři druhy operací: konstruktor, selektor a modifikátor. Operace, která ze zadaných parametrů vytváří novou hodnotu abstraktního datového typu, se nazývá konstruktor. Úkolem konstruktoru je sestavení platné vnitřní reprezentace hodnoty na základě dodaných parametrů. Operace označovaná jako selektor slouží k získání hodnot, které tvoří složky nebo vlastnosti konkrétní hodnoty abstraktního datového typu, a konečně operace typu modifikátor provádí změnu hodnoty datového typu.
Datový typ, který je možné parametrizovat jiným typem. V jazyce Pascal to může být např. typ pole s parametrem a jaké prvky budou v poli uloženy (např. array of char). Mnohem větší možnosti, jak parametrizovat typy, poskytuje systém šablon v C++ nebo generické typy uvedené v jazycích Java 5, či C# 2.0.
Genericita
Programovací jazyk podporuje genericitu, pokud umožňuje parametrizovat datové typy. Parametrizované datové typy se nazývají generické datové typy. Typickým příkladem zabudovaného generického typu je typ pole.
Deklaraci: Data = array [0 .. 4] of Real lze chápat jako parametrizaci typu array typem Real a intervalem 0 .. 4.
Tvoří posloupnost instrukcí, které potřebujeme v programu provádět na různých souborech dat, nebo na různých místech v programu. Procedura nebo funkce může být po deklaraci použita kdekoliv v následujícím bloku programu.
Rozdíl:
Funkce je operace, u které podle daného vstupu požadujeme určitý výstup. Vstupem rozumíme parametry a výstupem návratovou hodnotu.
int secti(int a, int b){ // funkce neco vraci return a+b; }
Volání funkce secti(1,1) vrátí hodnotu 2:
cout << secti(1,1) << endl;
Procedura má stejnou konstrukci jako funkce, s tím rozdílem, že nevrací žádnou hodnotu (nemá return). Místo návratového typu má „void“.
void pozdrav(){ // procedura nic nevraci cout << "ahoj" << endl; }
Volání této procedury nevrátí hodnotu, pouze na obrazovku vypíše ahoj:
pozdrav();
Blok je řídící struktura, která kromě příkazů obsahuje též deklarace (ty platí pouze v daném bloku). Deklarace provedené uvnitř bloku ztrácí mimo blok platnost. Blok má 2 části: deklarační a příkazovou. Bloky mohou být do sebe vnořovány, přičemž věc deklarovaná v bloku je viditelná ve vnořeném bloku také.
Modul je programová jednotka, která na rozdíl od bloku umožňuje, aby v ní deklarované proměnné a metody byly použitelné i v jiných modulech.
Skládá se ze dvou částí:
Příkladem modulu může být například knihovna v C.
Tuto otázku už jsem si vypracovával dřív a bohužel si nepamatuju, kde jsem čerpal, ale určitě minimálně ze stránek doktora Pitnera: Tomáš Pitner - Homepage.
Dále jsem našel článek o blokové a modulární struktuře programu s příklady v C, takže kdo chce vědět víc než jen vysvětlení těchto dvou struktur, ať se podívá sem.
Programování - WIKI Datové typy - WIKI Datová stuktura - WIKI Řídící sruktura - WIKI Bloková struktura programu Modulární struktura programu
Evoluce programovacích jazyků - tohle nakreslete a není co řešit A jak vyšité
Ludvík Vidlák, 98532 <99%> ICQ:235006787
Pokud má někdo nějaké připomínky, ať to hned upraví, nebo napíše do diskuze:-)
Díky