Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

1. diel - Úvod do programovacieho jazyka C

Vitajte u prvej lekcie on-line kurzu programovania v jazyku C. Budeme sa učiť postupne, od úplných začiatkov až po zložité konštrukcie, ukazovatele a napr. Prácu so súbormi. S trochou trpezlivosti a vytrvalosti sa z teba tak stane dobrý programátor.

Hneď na úvod je dobré spomenúť, že jazyk C je už pomerne historický a aj keď sa v praxi niekde stále používa, jeho účely sú veľmi špecifické. V akademickej sfére sa ešte často vyučuje ako prazáklad dnešných programovacích jazykov. Jeho naučením iste nič nepokazíte, ale ak nemáte nariadené "odpichnúť sa" práve od Céčka, myslíme si, že je možné a dokonca aj vhodnejšie začať rovno s nejakým moderným programovacím jazykom, ako sú napr. Java, C # .NET alebo na webe PHP.

Zrodenia jazyka C

Céčko navrhol Dennis Ritchie, tvorca operačného systému UNIX, v 70. rokoch 20. storočia. Práve celý UNIXový kernel je v céčku naprogramovaný, čo pravdepodobne stojí za jeho veľkým rozšírením a tiež poukazuje na extrémne výkonnosť tohto jazyka. Céčko bolo ďalej portované na najrôznejšie platformy a vyvinula sa z neho prakticky úplná väčšina dnešných moderných programovacích jazykov. Týmto jazykom sa niekedy hovorí C-like, pretože vychádzajú z céčka a podobajú sa mu svojou syntaxou (zápisom).

Aby sme plne porozumeli jazyku C, obzrie sa v dnešnom dieli do minulosti a na to, ako sa programovacie jazyky vyvíjali. Bude pre nás totiž dôležité pochopiť, ako jazyk C pracuje a v čom je jeho prínos. Ku koncu nahliadneme aj do budúcnosti a vysvetlíme si, aké má céčko oproti modernejším jazykom nevýhody.

Vývoj programovacích jazykov

1. generácie jazykov - Strojový kód

Procesor počítača vie vykonávať len obmedzené množstvo jednoduchých inštrukcií, ktoré sú uložené ako sekvencie bitov - sú to teda čísla. Tá sa mu zvyčajne zadávajú v hexadecimálne (šestnástkovej) sústave. Inštrukcie sú tak elementárne, že umožňujú iba napr. Sčítanie adries alebo skoky medzi inštrukciami. Nemožno napr. Jednoducho sčítať dve čísla, musíme sa na čísla pozerať ako na adresy v pamäti a také sčítaní čísel zaberie niekoľko inštrukcií. Program sčítající dve čísla by vyzeral napr. Takto:

2104
1105
3106
7001
0053
FFFE
0000

Inštrukcie sa procesora predloží v binárnej podobe. Takýto kód je samozrejme extrémne nečitateľný a závisí na inštrukčnú sade daného CPU. Určite v tomto jazyku nebude jednoduché tvoriť nejaké programy, bohužiaľ každý program musí byť nakoniec do tohto jazyka preložený, aby mohol byť na procesore počítača spustený.

strojový kód - Základné konštrukcie jazyka C

2. generácia jazykov - Assembler

Assembler (skrátene ASM) nie je o nič jednoduchšie, než strojový kód, ale je ľudsky čitateľný. Jedná sa o strojový kód, v ktorom majú inštrukcie slovné označenie (kód), čiže si človek nemusí pamätať čísla. Kódy inštrukcií sa potom preloží na vyššie uvedený strojový kód. Rovnaký program by v ASM vyzeral takto:

ORG 100
LDA A
ADD B
STA C
HLT
DEC 83
DEC –2
DEC 0
END

Vidíme, že je to trochu ľudskejší, ale stále nezainteresovaní ľudia vôbec netušia, ako program funguje (vrátane mňa).

3. generácie jazykov

Jazyky tretej generácie konečne ponúka užívateľovi určitú abstrakciu nad tým, ako program vidí počítač. Zameriavajú sa na to, ako program vidí človek. Naše čísla sú vnímaná už ako premenné, zdrojový kód pripomína matematický zápis.

Sčítaní dvoch čísel by v jazyku C vyzeralo takto:

int main(void)
{
    int a, b, c;
    a = 83;
    b = -2;
    c = a + b;
    return 0;
}

Všetci asi tušíme, čo program robí, spočíta čísla 83 a -2 a výsledok uloží do premennej c. U všetkých jazykov tretej generácie je samozrejme výhodou vysoká čitateľnosť a určite si dokážete predstaviť, akú revolúciu v programovaní jazyk priniesol, aj keď nebol zďaleka prvým jazykom tohto typu.

Kompilované jazyky

Kompilované jazyky majú teda svoj zdrojový kód v jazyku, ktorému ľudia dobre rozumie. Tento zdrojový kód sa samozrejme musí preložiť do strojového kódu, aby ho bolo možné na procesore spustiť. Tento preklad zaisťuje prekladač (kompiler), ktorý preloží naraz celý program do stroj. kódu.

Kompiler - Základné konštrukcie jazyka C

Objektovo orientované programovanie a Garbage Collector

V čom céčko bohužiaľ zaostáva je tzv. Objektové programovanie (skrátene OOP), ktoré umožňuje programovať aplikácie veľmi prehľadne tak, že ich rozdelíme do objektov, ktoré spolu komunikujú. Prevažná väčšina moderných jazykov OOP využíva a aj keď v céčku môžeme niektoré jeho princípy nasimulovať, nedosiahneme všetkých jeho výhod. Naše programy budú bez OOP o niečo rýchlejší, ale na dnešných počítačoch a pri dnešnej zložitosti aplikácií je čoraz dôležitejšie čitateľnosť zdrojového kódu ako úspora výkonu.

Podobná situácia nastáva u absencia tzv. Garbage Collectoru, ktorý sa stará o čistení pamäti po programu. Céčko nič také nemá, čím je rýchlejší, ale oveľa, oveľa nebezpečnejšie, pretože si po sebe musí upratovať sám programátor.

Jazyk C sa niekedy prirovnáva k závodné formulu, s ktorou by ste do ulíc bežne tiež nevošiel a použili by ste ju len na závode, kde by ju riadil skúsený pretekár. Pre bežné použitie je vhodné použiť klasické auto (rozumejte modernejšie programovací jazyk).

Špecifiká jazyka C

Spomeňme si v bodoch ešte nejaké prednosti jazyka C:

  • Céčko je extrémne rýchly jazyk a preto sa používa najčastejšie k tvorbe operačných systémov alebo vyšších programovacích jazykov (v céčka je naprogramované napr PHP alebo kompilátor C ++).
  • Céčko je plne multiplatformový a dostupné na väčšine operačných systémov.
  • Céčko je jazyk so syntaxou (zápisom) podobnú úplnej väčšine dnešných programovacích jazykov.

Oveľa viac je však nevýhod:

  • Céčko nie je vysokoúrovňový jazyk, ako uvádzajú niektoré staršie materiály, aj keď ním v minulosti býval. Z dnešného pohľadu je vnímaný naopak ako jazyk nízky, teda s vyšším výkonom, ale nízkym komfortom pre programátora. Preto nie je vhodné na bežné projekty, ktoré nevyžadujú extrémny výkon (ai tam sa skôr hodí nástupca céčka, C ++).
  • Céčko ako jazyk neumožňuje prácu s textovými reťazcami, čo sa obchádza trochu nepríjemne cez pole znakov a využívanie dynamickej pamäte.
  • Céčko je jazyk neriadený as priamym prístupom do pamäti. To znamená, že sa program môžete vďaka malej nepozornosti rozbiť a môže sa to prejaviť v jeho úplne inej časti, ktorá s chybou vôbec nesúvisí. Tieto chyby sa veľmi zle hľadajú.
  • Céčko v sebe neobsahuje žiadnu štandardné knižnicu pre prácu v grafickom rozhraní, avšak existujú knižnice tretích strán.
  • Céčko nepodporuje objektovo orientované programovanie, ale obsahuje štruktúry a hlavičkové súbory, s ktorými môžeme niektoré z výhod OOP nasimulovať.

V budúcej lekcii, Inštalácia NetBeans a kompilátora C , si nainštalujeme nástroje potrebné na programovanie v céčku a vytvoríme svoj prvý program.


 

Všetky články v sekcii
Základné konštrukcie jazyka C
Preskočiť článok
(neodporúčame)
Inštalácia NetBeans a kompilátora C
Článok pre vás napísal David Hartinger
Avatar
Užívateľské hodnotenie:
18 hlasov
David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti a svobodu podnikání.
Unicorn university David sa informačné technológie naučil na Unicorn University - prestížnej súkromnej vysokej škole IT a ekonómie.
Aktivity