<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://www.multimediaexpo.cz/mmecz/skins/common/feed.css?270"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="cs">
		<id>http://www.multimediaexpo.cz/mmecz/index.php?action=history&amp;feed=atom&amp;title=C_%28programovac%C3%AD_jazyk%29</id>
		<title>C (programovací jazyk) - Historie editací</title>
		<link rel="self" type="application/atom+xml" href="http://www.multimediaexpo.cz/mmecz/index.php?action=history&amp;feed=atom&amp;title=C_%28programovac%C3%AD_jazyk%29"/>
		<link rel="alternate" type="text/html" href="http://www.multimediaexpo.cz/mmecz/index.php?title=C_(programovac%C3%AD_jazyk)&amp;action=history"/>
		<updated>2026-08-01T08:35:54Z</updated>
		<subtitle>Historie editací této stránky</subtitle>
		<generator>MediaWiki 1.16.5</generator>

	<entry>
		<id>http://www.multimediaexpo.cz/mmecz/index.php?title=C_(programovac%C3%AD_jazyk)&amp;diff=636614&amp;oldid=prev</id>
		<title>Sysop: 1 revizi</title>
		<link rel="alternate" type="text/html" href="http://www.multimediaexpo.cz/mmecz/index.php?title=C_(programovac%C3%AD_jazyk)&amp;diff=636614&amp;oldid=prev"/>
				<updated>2014-05-02T07:19:20Z</updated>
		
		<summary type="html">&lt;p&gt;1 revizi&lt;/p&gt;
&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='1' style=&quot;background-color: white; color:black;&quot;&gt;← Starší verze&lt;/td&gt;
		&lt;td colspan='1' style=&quot;background-color: white; color:black;&quot;&gt;Verze z 2. 5. 2014, 07:19&lt;/td&gt;
		&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Sysop</name></author>	</entry>

	<entry>
		<id>http://www.multimediaexpo.cz/mmecz/index.php?title=C_(programovac%C3%AD_jazyk)&amp;diff=636613&amp;oldid=prev</id>
		<title>Sysop: Nahrazení textu</title>
		<link rel="alternate" type="text/html" href="http://www.multimediaexpo.cz/mmecz/index.php?title=C_(programovac%C3%AD_jazyk)&amp;diff=636613&amp;oldid=prev"/>
				<updated>2011-10-19T15:41:18Z</updated>
		
		<summary type="html">&lt;p&gt;Nahrazení textu&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nová stránka&lt;/b&gt;&lt;/p&gt;&lt;div&gt;'''C''' je [[programovací jazyk]], který vyvinuli [[Ken Thompson]] a [[Dennis Ritchie]] pro potřeby [[operační systém|operačního systému]] [[Unix]]. V současné době je to jeden z nejpopulárnějších jazyků, zřejmě nejčastější pro psaní [[systémový software|systémového softwaru]], ale velmi rozšířený i pro [[aplikace]].&lt;br /&gt;
&lt;br /&gt;
== Vlastnosti ==&lt;br /&gt;
C je nízkoúrovňový, kompilovaný, relativně minimalistický [[programovací jazyk]]. Je dostatečně mocný na většinu systémového programování ([[ovladač zařízení|ovladače]] a [[kernel|jádro]] [[operační systém|OS]]) a zbytek lze dořešit tzv. inline assemblerem, tedy metodou zápisu [[assembler]]u přímo do kódu. [[Zdrojový kód]] C je přitom mnohem čitelnější než assembler, je jednodušší ho zapsat a navíc je snáze přenositelný na jiné architektury. Proto jsou často [[operační systém]]y, [[překladač]]e, [[Knihovna (programování)|knihovny]] a [[interpret (software)|interpretry]] [[vysokoúrovňový jazyk|vysokoúrovňových jazyků]] implementovány právě v C.&lt;br /&gt;
&lt;br /&gt;
Ukládání dat je v C řešeno třemi základními způsoby: statickou alokací paměti (při překladu), automatickou alokací paměti na [[zásobník (informatika)|zásobníku]] a dynamickou alokací na [[halda (paměť)|haldě]] (heap) pomocí [[knihovní funkce|knihovních funkcí]]. Jazyk disponuje jen minimální abstrakcí nad alokací: s pamětí se pracuje přes datový typ zvaný [[Ukazatel (informatika)|ukazatel]], který drží odkaz na paměťový prostor daného typu proměnné, ale je na něm možné provádět aritmetické operace (tyto operace ale neoperují s ukazateli přímo na úrovni jednotlivých bajtů, nýbrž přihlíží k velikosti datového typu, na který ukazují - existují ale také ukazatele typu &amp;lt;code&amp;gt;void *&amp;lt;/code&amp;gt;, které mohou odkazovat na jakýkoliv typ dat uložený v paměti.). Ukazatelé tedy existují nezávisle na [[proměnná|proměnných]], na které odkazují, a je na odpovědnosti programátora, aby neukazovaly na paměť nealokovanou. &lt;br /&gt;
&lt;br /&gt;
Ukazatele jsou velmi mocným nástrojem, protože C jazyk povoluje ukazatele nejen na data, ale i na funkce. Současně jsou ukazatele z hlediska přenositelnosti a rizika zhroucení programu při jejich nesprávném použití [[Achillova pata|Achillovou patou]] jazyka. Na druhou stranu, programátorovi je dána plná zodpovědnost za alokace paměti, není zde tedy závislost na automatickém dealokátoru paměti ([[garbage collector]]), jehož činnost nemá v jazycích vyšší úrovně šanci ovlivnit.&lt;br /&gt;
&lt;br /&gt;
Jazyky [[Java (programovací jazyk)|Java]] a [[C Sharp|C#]], oba odvozené od C, používají méně univerzální způsob odkazování alokovaných proměnných, který snižuje pravděpodobnost chyby v programu. Jazyk [[C++]], původně rozšíření jazyka C, si ovšem ukazatele zachoval.&lt;br /&gt;
&lt;br /&gt;
Mnoho dalších moderních programovacích jazyků přebírá způsob zápisu (neboli [[syntax]]i) z jazyka C. Patří mezi ně například zmíněná [[Java (programovací jazyk)|Java]] či [[Perl]] a [[PHP]].&lt;br /&gt;
&lt;br /&gt;
== Historie ==&lt;br /&gt;
=== Počátky ===&lt;br /&gt;
&lt;br /&gt;
Vývoj jazyka C začal v [[Bell Labs|Bellových laboratořích]] [[AT&amp;amp;T]] mezi léty [[1969]] a [[1973]]. Ritchie tvrdí, že nejpřínosnější období bylo v roce [[1972]]. Pojmenování „C“ zvolili, protože mnoho vlastností přebírali ze staršího jazyka zvaného „[[Jazyk B|B]]“, jehož název byl zase odvozen od jazyka BCPL (ale to není jisté, neboť Thompson také vytvořil jazyk Bon na poctu své ženy Bonnie).&lt;br /&gt;
&lt;br /&gt;
V roce [[1973]] se stal jazyk C dostatečně stabilním. Většina zdrojového kódu [[kernel|jádra]] [[Unix]]u, původně napsaného v assembleru [[PDP-11]], byla přepsána do C. Unix tedy patří mezi první operační systémy, které byly napsané v jiném než strojovém jazyce či assembleru. Předchozí byl například systém [[Multics]] (napsaný v [[PL/I]]) a [[TRIPOS]] (napsaný v BCPL).&lt;br /&gt;
&lt;br /&gt;
=== K&amp;amp;amp;R C ===&lt;br /&gt;
V roce [[1978]], Ritchie a [[Brian Kernighan]] vydali první vydání knihy ''[[The C Programming Language]]''. Tato kniha, mezi programátory C známá jako „K&amp;amp;amp;R“, sloužila po mnoho let jako neformální [[specifikace]] jazyka. Verze C, kterou takto popsali, bývá označována jako „K&amp;amp;amp;R&amp;amp;nbsp;C“. (Druhé vydání knihy popisovalo novější standard [[ANSI C]].)&lt;br /&gt;
&lt;br /&gt;
K&amp;amp;amp;R zavedli následující vlastnosti jazyka:&lt;br /&gt;
&lt;br /&gt;
* datový typ &amp;lt;code&amp;gt;struct&amp;lt;/code&amp;gt;&lt;br /&gt;
* datový typ &amp;lt;code&amp;gt;long int&amp;lt;/code&amp;gt;&lt;br /&gt;
* datový typ &amp;lt;code&amp;gt;unsigned int&amp;lt;/code&amp;gt;&lt;br /&gt;
* Operátor &amp;lt;code&amp;gt;=+&amp;lt;/code&amp;gt; byl změněn na &amp;lt;code&amp;gt;+=&amp;lt;/code&amp;gt;, a podobně (&amp;lt;code&amp;gt;=+&amp;lt;/code&amp;gt; mátl [[Lexikální analýza|lexikální analyzér]] překladače C).&lt;br /&gt;
&lt;br /&gt;
K&amp;amp;amp;R C je považován za základní normu, kterou musejí obsahovat všechny překladače jazyka C. Ještě mnoho let po uvedení ANSI C to byl „nejmenší společný jmenovatel“, který využívali programátoři v jazyce C kvůli maximální přenositelnosti, protože zdaleka ne všechny překladače plně podporovaly ANSI C.&lt;br /&gt;
&lt;br /&gt;
V několika letech následujících po uvedení K&amp;amp;amp;R&amp;amp;nbsp;C bylo uvedeno a přidáno několik „neoficiálních“ vlastností jazyka, které byly podporovány překladači od AT&amp;amp;amp;T a některých dalších dodavatelů. Změny zahrnují:&lt;br /&gt;
&lt;br /&gt;
* datový typ &amp;lt;code&amp;gt;void *&amp;lt;/code&amp;gt; a funkce vracející &amp;lt;code&amp;gt;void&amp;lt;/code&amp;gt;&lt;br /&gt;
* funkce vracející typ &amp;lt;code&amp;gt;struct&amp;lt;/code&amp;gt; nebo &amp;lt;code&amp;gt;union&amp;lt;/code&amp;gt;&lt;br /&gt;
* položky ve &amp;lt;code&amp;gt;struct&amp;lt;/code&amp;gt; se ukládají do odděleného jmenného prostoru pro každý &amp;lt;code&amp;gt;struct&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;!-- co to je? * [[assignment]] for &amp;lt;code&amp;gt;struct&amp;lt;/code&amp;gt; data types --&amp;gt;&lt;br /&gt;
* modifikátor &amp;lt;code&amp;gt;const&amp;lt;/code&amp;gt;&lt;br /&gt;
* standardní knihovnu zahrnující většinu funkcí implementovaných různými dodavateli&lt;br /&gt;
* výčtový typ [[enumeration]]&lt;br /&gt;
* datový typ &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ANSI C a ISO C ===&lt;br /&gt;
&lt;br /&gt;
V pozdních sedmdesátých letech začalo C nahrazovat [[BASIC]] jako přední [[programovací jazyk]] pro [[mikropočítač]]e. Během osmdesátých let bylo přejato pro použití na platformě [[IBM PC]] a jeho popularita se značně zvýšila.&lt;br /&gt;
Tou dobou [[Bjarne Stroustrup]] a další v Bellových laboratořích začali pracovat na rozšiřování C o [[Objektově orientované programování|objektově orientované]] prvky. Jazyk, který vytvořili, zvaný [[C++]], je dnes nejrozšířenější programovací jazyk pro [[aplikace]]&lt;br /&gt;
na [[Microsoft Windows]]; C zůstává stále populárnější ve světě Unixu.&lt;br /&gt;
&lt;br /&gt;
V roce [[1983]] se [[American National Standards Institute]] (ANSI) dohodla na sestavení komise X3J11, aby vytvořila standardní specifikaci C. Po dlouhém a pracném procesu byl standard dokončen v roce [[1989]] a schválen jako ANSI X3.159-1989 „Programming Language C“. Tato verze jazyka je často stále označována jako [[ANSI C]]. &lt;br /&gt;
V roce [[1990]] byl standard ANSI C (s drobnými změnami) adoptován institucí [[International Organization for Standardization]] (ISO) jako „ISO 9899|ISO/IEC 9899:1990“.&lt;br /&gt;
&lt;br /&gt;
Jedním z cílů standardizačního procesu ANSI C byl vytvořit nadmnožinu K&amp;amp;amp;R&amp;amp;nbsp;C zahrnující mnoho „neoficiálních vlastností“.&lt;br /&gt;
Navíc standardizační komise přidala několik vlastností jako [[funkční prototyp]]y (vypůjčené z C++) a schopnější [[preprocesor]].&lt;br /&gt;
&lt;br /&gt;
ANSI C je dnes podporováno téměř všemi rozšířenými překladači. Většina kódu psaného v současné době v C je založena na ANSI C. Jakýkoli program napsaný ''pouze'' ve standardním C je přeložitelný a spustitelný na jakékoli [[platforma|platformě]], která odpovídá tomuto standardu. Nicméně mnoho programů se dá přeložit pouze na jedné platformě nebo jedním překladačem, kvůli použití nestandardních knihoven, např. pro grafiku, a také některé překladače v implicitním módu neodpovídají standardu ANSI C.&lt;br /&gt;
&lt;br /&gt;
=== C99 ===&lt;br /&gt;
Po standardizaci jazyka v roce [[1989]] se většina vývoje soustředila na jazyk [[C++]]. Přesto však na konci 90. let došlo k vydání dokumentu ISO 9899:1999 (obvykle nazývaný C99), který byl následně v březnu 2000 přijat i jako ANSI standard.&lt;br /&gt;
&lt;br /&gt;
C99 představil několik nových vlastností, které byly mnohdy v překladačích už implementovány jako rozšíření:&lt;br /&gt;
&lt;br /&gt;
* Inline funkce&lt;br /&gt;
* Proměnné mohou být deklarovány kdekoli (jako v [[C++]]), v C89 mohly být deklarovány pouze na začátku bloku&lt;br /&gt;
* Několik nových datových typů, včetně &amp;lt;code&amp;gt;long long int&amp;lt;/code&amp;gt; (tj. 64 bitový integer), &amp;lt;code&amp;gt;bool&amp;lt;/code&amp;gt; (logický ano/ne typ) nebo typ &amp;lt;code&amp;gt;complex&amp;lt;/code&amp;gt; určený na reprezentaci komplexních čísel.&lt;br /&gt;
* Pole s nekonstantní velikostí&lt;br /&gt;
* Podpora pro zakomentování jednoho řádku &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt;, tak jako v jazycích [[C++]] nebo [[BCPL]]&lt;br /&gt;
* Nové knihovní funkce, hlavně ve formě náhrady za funkce náchylné na [[přetečení zásobníku]], např. &amp;lt;code&amp;gt;snprintf()&amp;lt;/code&amp;gt;&lt;br /&gt;
* Nové [[Hlavičkový soubor|hlavičkové soubory]], např. &amp;lt;code&amp;gt;stdint.h&amp;lt;/code&amp;gt;&lt;br /&gt;
* Variadická makra (makra [[C preprocesor]]u s proměnným počtem argumentů)&lt;br /&gt;
* Klíčové slovo &amp;lt;code&amp;gt;restrict&amp;lt;/code&amp;gt;, které v deklaraci pointeru specifikuje, že na paměť odkazovanou tímto pointerem nepřistupuje žádný jiný pointer (např. &amp;lt;code&amp;gt;int* restrict foo;&amp;lt;/code&amp;gt;), díky čemuž kompilátor může produkovat optimalizovanější kód; zajištění, aby tomu skutečně tak bylo, je na programátorovi (při nedodržení je chování programu nedefinované)&lt;br /&gt;
&lt;br /&gt;
Standard C99 je v některých ohledech přísnější než původní standard C89; například je zakázáno odkazovat na stejnou paměť ukazateli jiných typů. Toto umožňuje vylepšenou optimalizaci, ale může způsobit problémy s kompilací starších programů.&lt;br /&gt;
&lt;br /&gt;
Žádný kompilátor zatím neobsahuje kompletní implementaci C99, přestože některé jsou poměrně blízko ([[GCC]]). Firmy jako Microsoft nebo [[Borland]] neprojevily velký zájem o implementaci C99, především kvůli tomu, že většinu nových vlastností poskytuje C++ a to často nekompatibilně s C99 (datový typ complex v C99 versus třída complex v C++).&lt;br /&gt;
&lt;br /&gt;
== „Hello, World!“ v C ==&lt;br /&gt;
&lt;br /&gt;
Následující jednoduchá aplikace vypíše „[[hello world|Hello, World!]]“ na standardní výstup (většinou obrazovku, ale může to být i do souboru nebo na jiné hardwarové zařízení nebo dokonce i [[bit bucket]], což závisí na nastavení standardního výstupu v době spuštění programu). Jedna z verzí se poprvé objevila v K&amp;amp;amp;R.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
# include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
    printf(&amp;quot;Hello, World!\n&amp;quot;);&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;!-- popis kódu vynechán z angličtiny --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ==Relation to C++==  vynecháno z angličtiny --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Charakteristika jazyka C ==&lt;br /&gt;
&lt;br /&gt;
=== Datové typy ===&lt;br /&gt;
[[Programovací jazyk]] C má tyto [[datový typ|datové typy]]:&lt;br /&gt;
* char - Používá se pro znaky&lt;br /&gt;
* int - Používá se pro celá čísla&lt;br /&gt;
* float - Používá se pro desetinné číslo s plovoucí řádovou čárkou&lt;br /&gt;
* double - Používá se pro desetinné číslo s plovoucí řádovou čárkou s dvojnásobnou přesností&lt;br /&gt;
* void - Používá se pokud nepotřebujeme žádnou hodnotu (např. u funkcí)&lt;br /&gt;
&lt;br /&gt;
=== Řídící příkazy ===&lt;br /&gt;
Řídící příkazy určují průběh zpracovávání programu. Jako takové tvoří páteř programů.&lt;br /&gt;
&lt;br /&gt;
==== if ====&lt;br /&gt;
Příkaz '''if''' je jedním z příkazů jazyka C pro větvení programu (někdy nazývané také jako ''podmíněné příkazy''). Jeho činnost je určena výsledkem testu podmínky, která je vyhodnocena jako pravdivá, nebo nepravdivá. Jednoduše řečeno, podmíněné činí rozhodnutí na základě vyhodnocení nějaké podmínky.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
if (výraz)&lt;br /&gt;
	příkaz;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
příklad:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* Když je hodnota proměnné i rovna jedna, provede se vypsání textu. */&lt;br /&gt;
if (i==1)&lt;br /&gt;
    printf(&amp;quot;\nHodnota promenne 'i' je jedna.&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== if - else ====&lt;br /&gt;
K příkazu '''if''' můžete přidat '''else'''. Pokud tak učiníte, tak programu řeknete, co má dělat, i pokud bude podmínka nepravdivá. Konstrukce poté může vypadat takto:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
if (výraz)&lt;br /&gt;
	příkaz1;&lt;br /&gt;
else&lt;br /&gt;
	příkaz2;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. příklad:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* Podle velikosti promenne j se provede prikaz vypisujici informace o jeji hodnote. */&lt;br /&gt;
if (j&amp;lt;3)&lt;br /&gt;
    printf(&amp;quot;\nHodnota promenne j je mensi nez tri.&amp;quot;);&lt;br /&gt;
else&lt;br /&gt;
    printf(&amp;quot;\nHodnota promenne j je vetsi nebo rovna trem.&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. příklad:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
# include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* Program, který ze tří celých čísel vybere největší. */&lt;br /&gt;
&lt;br /&gt;
int nej(int a, int b, int c)&lt;br /&gt;
{&lt;br /&gt;
  int vysl;&lt;br /&gt;
  if (a&amp;gt;b)&lt;br /&gt;
  {&lt;br /&gt;
    if (a&amp;gt;c)&lt;br /&gt;
      vysl = a;&lt;br /&gt;
    else&lt;br /&gt;
      vysl = c;&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    if (b&amp;gt;c)&lt;br /&gt;
      vysl = b;&lt;br /&gt;
    else&lt;br /&gt;
      vysl = c;&lt;br /&gt;
  }&lt;br /&gt;
  return(vysl);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  int a;&lt;br /&gt;
  int b;&lt;br /&gt;
  int c;&lt;br /&gt;
  printf(&amp;quot;Tento program vyhodnoti nejvyssi ze tri zadanych cisel.\n&amp;quot;);&lt;br /&gt;
  printf(&amp;quot;Zadej prvni cislo:&amp;quot;);&lt;br /&gt;
  scanf(&amp;quot;%d&amp;quot;, &amp;amp;a);&lt;br /&gt;
  printf(&amp;quot;Zadej druhe cislo:&amp;quot;);&lt;br /&gt;
  scanf(&amp;quot;%d&amp;quot;, &amp;amp;b);&lt;br /&gt;
  printf(&amp;quot;Zadej treti cislo:&amp;quot;);&lt;br /&gt;
  scanf(&amp;quot;%d&amp;quot;, &amp;amp;c);&lt;br /&gt;
  printf(&amp;quot;Nejvetsi cislo je: %d\n&amp;quot;, nej(a,b,c));&lt;br /&gt;
  return(0);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Vývojový diagram k příkladu:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Soubor:Vyvojovy diagram program c tri cisla.png|700px]]&lt;br /&gt;
&lt;br /&gt;
==== switch ====&lt;br /&gt;
Příkaz '''switch''' slouží k výběru jedné z několika větví programu, která se má provést v závislosti na nějaké celočíselné hodnotě. Jeho formát je následující:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
switch (celočíselný výraz)&lt;br /&gt;
{&lt;br /&gt;
	case hodnota1:&lt;br /&gt;
		příkazy1;&lt;br /&gt;
		break;&lt;br /&gt;
	case hodnota2:&lt;br /&gt;
		příkazy2;&lt;br /&gt;
		break;&lt;br /&gt;
	...&lt;br /&gt;
	default:&lt;br /&gt;
		příkazy pro všechny ostatní případy;&lt;br /&gt;
		break;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Podle hodnoty celočíselného výrazu se vybere jedna z větví '''case'''. Je-li hodnota výrazu rovna hodnotě1, provedou se příkazy1, je-li rovna hodnotě2, provedou se příkazy2, atd. 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. Chceme-li tedy pro každou hodnotu provádět jedinou větev, je '''break''' nutný na konci každé větve kromě poslední. Větev '''default''' (je-li přítomna) se vykoná v případě, že hodnota výrazu není rovna ani jedné z hodnot uvedených za příkazy '''case'''. Obvykle se uvádí jako poslední, není to však vyžadováno.&lt;br /&gt;
&lt;br /&gt;
Příklad&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
# define CZ 1&lt;br /&gt;
# define EN 2&lt;br /&gt;
# define DE 3&lt;br /&gt;
int jazyk;&lt;br /&gt;
...&lt;br /&gt;
/* V zavislosti na hodnote promenne 'jazyk' se vypise pozdrav v ruznych jazycich. */&lt;br /&gt;
switch ( jazyk )&lt;br /&gt;
{&lt;br /&gt;
    case CZ:&lt;br /&gt;
        printf(&amp;quot;\nNazdar svete!&amp;quot;);&lt;br /&gt;
        break;&lt;br /&gt;
    case EN:&lt;br /&gt;
        printf(&amp;quot;\nHello world!&amp;quot;);&lt;br /&gt;
        break;&lt;br /&gt;
    case DE:&lt;br /&gt;
        printf(&amp;quot;\nHalo Welt!&amp;quot;);&lt;br /&gt;
        break;&lt;br /&gt;
    default:&lt;br /&gt;
        /* Kdyz nezname jazyk, vypiseme text anglicky */&lt;br /&gt;
        printf(&amp;quot;\n(Language unknown =&amp;gt; english).&amp;quot;);&lt;br /&gt;
        printf(&amp;quot;\nHello world!&amp;quot;);&lt;br /&gt;
        break;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Cyklus for ====&lt;br /&gt;
Příkaz [[for cyklus|cyklu '''for''']] je jedním ze tří příkazů cyklu v jazyku C. Umožňuje opakovat jeden, nebo více příkazů. Cyklus for je mnohými programátory v jazyku C považován za jeho nejpružnější příkaz. Cyklus for se používá pro zadaný počet opakování příkazu, nebo bloku příkazu. Jeho obecný formát pro opakování jednoho příkazu vypadá takto:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
for (inicializace; test podmínky; inkrementace)&lt;br /&gt;
	příkaz;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Příklad:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* Vypis druhych a tretich mocnin cisel 1 az 10 */&lt;br /&gt;
int i;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
/* - cyklus je zahajen s hodnotou i = 1, &lt;br /&gt;
 * - po provedeni tela cyklu se hodnota i zvysi o 1 (prikaz 'i++'), &lt;br /&gt;
 * - dokud je i mensi nebo rovno 10 dochazi k opakovanemu provadeni tela cyklu a prikazu 'i++'&lt;br /&gt;
 * - po provedeni cyklu s hodnotou i rovnou 10 se i zvysi na 11 (prikaz 'i++'), podminka i&amp;lt;=10&lt;br /&gt;
 *   se vyhodnoti jako nepravdiva a program pokracuje prikazy nasledujicimi za telem cyklu.&lt;br /&gt;
 */&lt;br /&gt;
for ( i=1; i&amp;lt;=10; i++ )&lt;br /&gt;
{&lt;br /&gt;
    printf(&amp;quot;\nDruha mocnina cisla %d je %d.&amp;quot;, i, i*i );&lt;br /&gt;
    printf(&amp;quot;\nTreti mocnina cisla %d je %d.&amp;quot;, i, i*i*i );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Cyklus while ====&lt;br /&gt;
[[While-do cyklus|Cyklus while]] je cyklus s podmínkou na začátku. Napřed se testuje podmínka, je-li platná, pak se provede tělo cyklu a znovu se testuje podmínka. Není-li platná, program pokračuje za cyklem. Není-li tedy podmínka platná při prvním příchodu na cyklus, neprovede se cyklus ani jednou. Jeho formát vypadá takto:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
while (test podmínky)&lt;br /&gt;
	příkaz;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Příklad:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* Vypis druhych a tretich mocnin od 1 do 10. */&lt;br /&gt;
int i;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
i = 1;&lt;br /&gt;
while (i &amp;lt;= 10)&lt;br /&gt;
{&lt;br /&gt;
    printf(&amp;quot;\nDruha mocnina cisla %d je %d.&amp;quot;, i, i*i);&lt;br /&gt;
    printf(&amp;quot;\nTreti mocnina cisla %d je %d.&amp;quot;, i, i*i*i);&lt;br /&gt;
    i++;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Cyklus do-while ====&lt;br /&gt;
[[Do-while cyklus|Cyklus do-while]] je cyklus s podmínkou na konci. Napřed se provede tělo cyklu, pak se testuje podmínka. Je-li platná, cyklus se provede znovu. Není-li platná, program pokračuje za cyklem. Tento cyklus se tedy provede vždy nejméně jednou. Jeho formát vypadá takto:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
do&lt;br /&gt;
	příkaz;&lt;br /&gt;
while (test podmínky);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příkazy break a continue ====&lt;br /&gt;
Příkaz '''break''' slouží k okamžitému opuštění cyklu, bez ohledu na platnost podmínky. Příkaz '''continue''' slouží ke skoku na konec cyklu a znovu testování podmínky (v cyklu for skočí na inkrementaci, pak se znovu testuje podmínka, v cyklech while a do-while skočí na test podmínky). Jejich syntaxe je jednoduchá:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
break;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
continue;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Příklad:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* Cyklus while(1) by byl normalne nekonecny, ale je ukoncen podminenym provedenim prikazu break. */&lt;br /&gt;
int i;&lt;br /&gt;
...&lt;br /&gt;
i=1;&lt;br /&gt;
while(1)&lt;br /&gt;
{&lt;br /&gt;
  printf(&amp;quot;\n%d na druhou je %d.&amp;quot;, i, i*i );&lt;br /&gt;
  i++;&lt;br /&gt;
  if( i &amp;gt; 10 )&lt;br /&gt;
  {&lt;br /&gt;
    printf( &amp;quot;\nHodnota i je %d, padla.&amp;quot;, i );&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Související články ==&lt;br /&gt;
* [[C preprocesor]]&lt;br /&gt;
* [[Překladač]]&lt;br /&gt;
* [[GCC|Sada kompilátorů vytvořených v rámci projektu GNU]]&lt;br /&gt;
* [[Volatile]]&lt;br /&gt;
&lt;br /&gt;
== Příbuzné jazyky ==&lt;br /&gt;
Jazyky [[C++]] a [[Objective-C]] vznikly jako odpověď na vlnu popularity [[objektově orientované programování|objektově orientovaného programování]] (OOP) v 80. letech 20. století. Obě tato rozšíření jazyka C byla nejprve implementována ve formě preprocesoru, tedy zdrojový kód byl nejprve přeložen do C a poté zkompilován kompilátorem jazyka C. Kromě toho vzniklo velké množství jazyků, které sice s jazykem C nejsou příbuzné, ale které částečně přejaly syntaxi jazyka ([[Java (programovací jazyk)|Java]], [[C Sharp|C#]], [[D (programovací jazyk)|D]]) nebo dokonce jména některých knihovních funkcí ([[PHP]]).&lt;br /&gt;
&lt;br /&gt;
=== C++ ===&lt;br /&gt;
Jazyk [[C++]] je odvozen z jazyka C, není s ním ale úplně kompatibilní. Rozdíl, který způsobuje nejvíce problémů s kompilací je způsoben tím, že C++ definuje mnohem striktnější pravidla pro [[přetypování]] datových typů. Kromě OOP implementuje C++ také [[generické programování|generické]] a [[procedurální programování]].&lt;br /&gt;
&lt;br /&gt;
=== Objective-C ===&lt;br /&gt;
[[Objective-C]] je odvozen z jazyků C a [[Smalltalk]], přičemž s C je úplně kompatibilní (tedy je možné zkompilovat libovolný zdrojový text s překladačem Objective-C). Syntaxe týkající se preprocesoru, výrazů, deklarací funkcí a volání funkcí je odvozena z C, zatímco objektově orientované programování je odvozeno z jazyka Smalltalk.&lt;br /&gt;
&lt;br /&gt;
== Literatura ==&lt;br /&gt;
&lt;br /&gt;
* [[Brian Kernighan|Brian W. Kernighan]], [[Dennis Ritchie|Dennis M. Ritchie]]: ''[[The C Programming Language]]'', Second Edition, Prentice-Hall, 1988, ISBN 0-13-110370-9&lt;br /&gt;
* [[Pavel Herout]]: [http://kopp.cz/www/index.php?product=160&amp;amp;aln=cz ''Učebnice jazyka C''], KOPP, 2004, IV. přepracované vydání, ISBN 80-7232-220-6&lt;br /&gt;
* [http://kmdec.fjfi.cvut.cz/~virius/liter/litCpp.htm Literatura k jazykům C a C++]&lt;br /&gt;
&lt;br /&gt;
== Externí odkazy ==&lt;br /&gt;
* [http://www.lysator.liu.se/c/rat/title.html Specifikace ANSI C] (v angličtině)&lt;br /&gt;
* [http://www.fsid.cvut.cz/cz/U201/skrc.html Skripta jazyka C] (v češtině - autor: doc.Ing.Jiří Vogel,CSc., pro Fakultu strojní ČVUT)&lt;br /&gt;
* [http://www.linuxsoft.cz/article.php?id_article=370 Seriál o jazycích C a C++ na linuxsoft.cz] (v češtině - autor: Mgr.Jan Němec)&lt;br /&gt;
* [http://www.cellperformance.com/mike_acton/2006/05/demystifying_the_restrict_keyw.html Objasnění klíčového slova &amp;lt;code&amp;gt;restrict&amp;lt;/code&amp;gt; v C99] (v angličtině)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Článek z Wikipedie}}&lt;br /&gt;
[[Kategorie:Počítačové jazyky]]&lt;br /&gt;
[[Kategorie:Programovací jazyk C]]&lt;/div&gt;</summary>
		<author><name>Sysop</name></author>	</entry>

	</feed>