<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Programování Archivy - Studijni-svet.cz</title>
	<atom:link href="https://studijni-svet.cz/tag/programovani/feed/" rel="self" type="application/rss+xml" />
	<link>https://studijni-svet.cz/tag/programovani/</link>
	<description>Studijní materiály do školy a k maturitě</description>
	<lastBuildDate>Mon, 05 Aug 2024 12:47:12 +0000</lastBuildDate>
	<language>cs</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://studijni-svet.cz/wp-content/uploads/2024/08/apple-touch-icon-150x150.png</url>
	<title>Programování Archivy - Studijni-svet.cz</title>
	<link>https://studijni-svet.cz/tag/programovani/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>PHP &#8211; prostředí</title>
		<link>https://studijni-svet.cz/php-prostredi/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Mon, 05 Aug 2024 12:17:12 +0000</pubDate>
				<category><![CDATA[Informatika]]></category>
		<category><![CDATA[Programování]]></category>
		<guid isPermaLink="false">https://studijni-svet.cz/?p=26987</guid>

					<description><![CDATA[<p>&#160; Otázka: PHP &#8211; prostředí Předmět: Informatika, Programování Přidal(a): cadys &#160; Úvod Jazyk PHP je skriptovací jazyk na úrovní backendu, který komunikuje s databází, ale dokážeme pomocí něj vytvářet I funkce, dynamické prostředí a frontend. Uvozuje se tagem &#60;?php a končí ?&#62;. Pomocí php můžeme i zobrazovat html a css &#60;?php echo “&#60;div style=“Your_mother“&#62;Hello world ... <a title="PHP &#8211; prostředí" class="read-more" href="https://studijni-svet.cz/php-prostredi/" aria-label="Číst více o PHP &#8211; prostředí">Read more</a></p>
<p>Článek <a href="https://studijni-svet.cz/php-prostredi/">PHP &#8211; prostředí</a> se nejdříve objevil na <a href="https://studijni-svet.cz">Studijni-svet.cz</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" class="alignleft" src="http://www.studijni-svet.cz/wp-content/uploads/ICONS/PREDMETY/Ostatni.png" alt="informatika" /></p>
<p>&nbsp;</p>
<p><strong>Otázka: </strong>PHP &#8211; prostředí</p>
<p><strong>Předmět: </strong>Informatika, Programování</p>
<p><strong>Přidal(a):</strong> cadys</p>
<p>&nbsp;</p>
<p><span id="more-26987"></span></p>
<p><strong>Úvod</strong></p>
<ul>
<li>Jazyk PHP je <strong>skriptovací</strong> jazyk na úrovní backendu, který komunikuje s databází, ale dokážeme pomocí něj vytvářet I funkce, dynamické prostředí a frontend. Uvozuje se tagem <strong>&lt;?php a končí ?&gt;</strong>. Pomocí php můžeme i zobrazovat html a css &lt;?php echo “&lt;div style=“Your_mother“&gt;Hello world &lt;br/&gt;&lt;div/&gt;“?&gt;.</li>
<li>PHP se řadí do rodiny C-like jazyků, není však typovaný. Existuje spoustu knihoven a frameworků (FW NETTE, symphony). Téměř 80 procent stránek užívá PHP – jazyk na komunikaci se servrem.</li>
<li>Pro instalaci a použití php si musíme nainstalovat tzw WAMP (Windows, Apache, MySQL, PHP). Jedná se o softwarový balíček, který obsahuje veškeré potřebné komponenty pro vytvoření funkčního serveru na počítači Windows. Existuje také LAMP (Linux). Spouštíme si tak vlastní lokální server na svém počítači.</li>
</ul>
<p>&nbsp;</p>
<p><strong>Pojmy</strong></p>
<ul>
<li><strong>Apache</strong>:</li>
<li style="list-style-type: none;">
<ul>
<li>Apache je populární open-source webový server, který poskytuje prostředky pro zpracování HTTP požadavků a poskytování webových stránek a aplikací uživatelům. WAMP obsahuje Apache server, který může být jednoduše nakonfigurován a spuštěn na Windows.</li>
</ul>
</li>
<li><strong>MySQL</strong>:</li>
<li style="list-style-type: none;">
<ul>
<li>MySQL je open-source relační databázový systém, který umožňuje ukládání, správu a zpracování dat ve webových aplikacích. WAMP zahrnuje MySQL jako součást balíčku, což umožňuje uživatelům vytvářet a testovat webové aplikace, které vyžadují databázi.</li>
</ul>
</li>
<li><strong>PHP</strong>:</li>
<li style="list-style-type: none;">
<ul>
<li>PHP je populární skriptovací jazyk určený pro vývoj dynamických webových stránek a aplikací. WAMP obsahuje PHP interpret, který umožňuje uživatelům psát skripty a programy v PHP a spouštět je na lokálním webovém serveru.</li>
<li>Fungování WAMP je poměrně jednoduché. Po instalaci WAMP stačí spustit aplikaci a následně spustit Apache server a MySQL databázi. Poté můžete vytvářet a testovat webové aplikace vytvořené v PHP pomocí Apache serveru a přistupovat k databázi MySQL pro ukládání a zpracování dat. WAMP poskytuje uživatelům prostředí, ve kterém mohou vytvářet a testovat webové aplikace na jejich vlastním počítači před jejich nasazením na produkční server.</li>
</ul>
</li>
</ul>
<p>&nbsp;</p>
<p><strong>Zápis</strong></p>
<ul>
<li><strong>Komentář</strong> se píše /* a ukončuje se */, pro jednořádkový se píše //</li>
<li>Každý příkaz musí <strong>končit</strong> <strong>;</strong></li>
<li><strong>Proměnná</strong> se definuje pomocí $var = “String“. “ pokračování, tečka spojuje řetězce“;</li>
<li><strong>Konstanta</strong> se definuje pomocí define(“Name_const“,“value – číslo bez uvozovek“);</li>
<li><strong>Pole</strong>  $age=array(&#8222;Peter&#8220;=&gt;&#8220;35&#8220;);
<ul>
<li>echo &#8222;Peter is &#8220; . $age[&#8218;Peter&#8216;] . &#8220; years old.&#8220;;</li>
</ul>
</li>
<li><strong>Expanze proměnné</strong> znamená, že když je proměnná v echu a je ohraničena uvozovkami, vypíše se její hodnota, avšak pokud je echo uvozeno apostrofy, proměnná se nevypíše a zobrazí se jen holý text</li>
<li>Chceme-li zahrnout např. funkce ze souboru function.php nebo navigační lištu stránky, použijeme příkaz require “function.php“; pokud chceme, aby se soubor provedl nebo vypsal pouze jednou např. při připojení databáze, napíšeme require_once “connect_db.php“;</li>
<li><strong>Phpinfo()</strong> vypíše info o stávající verzi php</li>
<li>Pro vypsání proměnné můžeme použít i fci print(). Pokud chceme vypsat pole, musíme napsat print_r(). Pole definujeme jako $pole = array(prvek1, prvek2,…); Pole může obsahovat i podpole. $pole = array(&#8218;a&#8216;, &#8218;b&#8216;, 1, 2, array(&#8218;první&#8216; =&gt; &#8218;podpole&#8216;, &#8218;vytištěno&#8216;)); podpole má klíčovou hodnotu první. Získám jí pomocí print($pole[4][první]);</li>
<li><strong>===</strong> provede krom hodnoty čísla i kontrolu typu</li>
</ul>
<p>&nbsp;</p>
<p><strong>Řídící struktury</strong></p>
<ul>
<li>Prostě funkce.</li>
</ul>
<p>&nbsp;</p>
<p><strong>Předdefinované fce</strong></p>
<ul>
<li>V PHP existuje několik předdefinovaných globálních proměnných, které jsou automaticky dostupné ve všech skriptech bez ohledu na jejich umístění. Tyto proměnné poskytují informace o prostředí, aktuálním požadavku a další užitečné informace. Zde je seznam některých z nejčastěji používaných předdefinovaných proměnných v PHP:</li>
<li style="list-style-type: none;">
<ul>
<li>$_GET: Obsahuje data získaná z řetězce dotazu (query string) v URL adrese požadavku GET.</li>
<li>$_POST: Obsahuje data odeslaná formulářem metodou POST.</li>
<li>$_REQUEST: Obsahuje data odeslaná formulářem metodou GET nebo POST, stejně jako data z cookies.</li>
<li>$_SESSION: Obsahuje data o relaci aktuálního uživatele. Umožňuje ukládat a získávat informace o uživateli přes více stránek.</li>
<li>$_COOKIE: Obsahuje hodnoty cookies poslané klientem do serveru.</li>
<li>$_FILES: Obsahuje informace o nahrávaných souborech pomocí HTML formuláře typu &#8222;file&#8220;.</li>
<li>$_SERVER: Obsahuje informace o serveru a běžícím skriptu, jako jsou cesty k souborům, hlavičky HTTP požadavku a další.</li>
<li>$_ENV: Obsahuje informace o prostředí serveru, například proměnné prostředí nastavené v konfiguračním souboru serveru.</li>
<li>$_SESSION: Obsahuje data o aktuální relaci uživatele.</li>
<li>$_GLOBALS: Obsahuje odkazy na všechny globální proměnné v PHP skriptu.</li>
</ul>
</li>
<li>Tyto proměnné jsou velmi užitečné při práci s webovými formuláři, správě relací, zpracování nahrávaných souborů a získávání informací o prostředí serveru a běžícího skriptu.</li>
</ul>
<p>&nbsp;</p>
<pre><code class="language-php"><span class="hljs-meta">&lt;?php</span>
<span class="hljs-title function_ invoke__">define</span>(<span class="hljs-string">"BR"</span>, <span class="hljs-string">"&lt;br/&gt;\n"</span>);

<span class="hljs-comment">// klasicky C-like for cyklus</span>
<span class="hljs-keyword">for</span> (<span class="hljs-variable">$x</span> = <span class="hljs-number">0</span>; <span class="hljs-variable">$x</span> &lt;= <span class="hljs-number">10</span>; <span class="hljs-variable">$x</span>++) {
    <span class="hljs-keyword">echo</span> <span class="hljs-string">"The number is: <span class="hljs-subst">$x</span> "</span> . BR;
}

<span class="hljs-comment">// foreach cyklus</span>
<span class="hljs-variable">$colors</span> = <span class="hljs-keyword">array</span>(<span class="hljs-string">"red"</span>, <span class="hljs-string">"green"</span>, <span class="hljs-string">"blue"</span>, <span class="hljs-string">"yellow"</span>);
<span class="hljs-keyword">foreach</span> (<span class="hljs-variable">$colors</span> <span class="hljs-keyword">as</span> <span class="hljs-variable">$value</span>) {
    <span class="hljs-keyword">echo</span> <span class="hljs-string">"<span class="hljs-subst">$value</span> "</span> . BR;
}

<span class="hljs-comment">// foreach cyklus nad asoc. polem</span>
<span class="hljs-variable">$people</span> = <span class="hljs-keyword">array</span>(<span class="hljs-string">"Josef"</span> =&gt; <span class="hljs-string">"47"</span>, <span class="hljs-string">"Martin"</span> =&gt; <span class="hljs-string">"45"</span>, <span class="hljs-string">"Joe"</span> =&gt; <span class="hljs-string">"43"</span>);
<span class="hljs-keyword">foreach</span> (<span class="hljs-variable">$people</span> <span class="hljs-keyword">as</span> <span class="hljs-variable">$name</span> =&gt; <span class="hljs-variable">$age</span>) {
    <span class="hljs-keyword">echo</span> <span class="hljs-string">"<span class="hljs-subst">$name</span> <span class="hljs-subst">$age</span>"</span> . BR;
}

<span class="hljs-comment">// switch</span>
<span class="hljs-variable">$favcolor</span> = <span class="hljs-string">"red"</span>;
<span class="hljs-keyword">switch</span> (<span class="hljs-variable">$favcolor</span>) {
    <span class="hljs-keyword">case</span> <span class="hljs-string">"red"</span>:
        <span class="hljs-keyword">echo</span> <span class="hljs-string">"Your favorite color is red!"</span> . BR;
        <span class="hljs-keyword">break</span>;
    <span class="hljs-keyword">case</span> <span class="hljs-string">"blue"</span>:
        <span class="hljs-keyword">echo</span> <span class="hljs-string">"Your favorite color is blue!"</span> . BR;
        <span class="hljs-keyword">break</span>;
    <span class="hljs-keyword">case</span> <span class="hljs-string">"green"</span>:
        <span class="hljs-keyword">echo</span> <span class="hljs-string">"Your favorite color is green!"</span> . BR;
        <span class="hljs-keyword">break</span>;
    <span class="hljs-keyword">default</span>:
        <span class="hljs-keyword">echo</span> <span class="hljs-string">"Your favorite color is neither red, blue, nor green!"</span> . BR;
}

<span class="hljs-comment">// if-then-elseif-else</span>
<span class="hljs-variable">$hour</span> = <span class="hljs-title function_ invoke__">date</span>(<span class="hljs-string">"H"</span>); <span class="hljs-comment">// do $hour hodina z aktualniho casu</span>
<span class="hljs-keyword">if</span> (<span class="hljs-variable">$hour</span> &lt; <span class="hljs-string">"10"</span>) {
    <span class="hljs-keyword">echo</span> <span class="hljs-string">"Have a good morning!"</span> . BR;
} <span class="hljs-keyword">elseif</span> (<span class="hljs-variable">$hour</span> &lt; <span class="hljs-string">"20"</span>) {
    <span class="hljs-keyword">echo</span> <span class="hljs-string">"Have a good day!"</span> . BR;
} <span class="hljs-keyword">else</span> {
    <span class="hljs-keyword">echo</span> <span class="hljs-string">"Have a good night!"</span> . BR;
}
<span class="hljs-meta">?&gt;</span></code></pre>
<p>&nbsp;</p>
<p><strong>Session</strong></p>
<ul>
<li>Http je bezstavový protokol, proto po vykonání příkazu a doručení stránky uživateli práce pro server končí a ten ji zapomíná.</li>
<li>Někdy si potřebujeme informace o např. uživateli uchovat. Proto se používá tzv. session (sezení). Spouští se pomocí <strong>session_start()</strong>. http tak uloží informace do tzv. cookies (sušenek) který pak www prohlížeč serveru vždy pošle a ten tedy ví, o jakého uživatele se jedná a ví potřebné informace. Tyto informace se pak ukládají do super globální proměnné <strong>$</strong><strong>_SESSION[atribut]</strong><strong>,</strong> která je dostupné ze všech funkcí i stránkách dokumentu, který tuto session obsahuje (viditelná).</li>
<li>Pokud session chceme ukončit, použijeme <strong>session_destroy</strong>(). Pokud v doméně běží více php aplikací využívající session, musíme session pojmenovávat =&gt; session-name().</li>
</ul>
<p>&nbsp;</p>
<p><strong>Formuláře</strong></p>
<ul>
<li>Odeslat informace z formuláře můžeme pomocí dvou metod &#8211; Get a Post.</li>
<li>Do metody get se vejde jen určité množství znaků a ukládá se příkazového řádku prohlížeče – je lehce napadnutelné a omezená délka.</li>
<li>Do metody post se vejde delší množství znaků a není vidět. Jsou totiž odeslána na standartní vstup (asi serveru).</li>
</ul>
<p>&nbsp;</p>
<div class="code-header" tabindex="-1"><strong><span class="code-lang">HTML</span></strong></div>
<div class="code" tabindex="-1">
<pre><code class="language-html"><span class="hljs-tag">&lt;<span class="hljs-name">form</span> <span class="hljs-attr">method</span>=<span class="hljs-string">"get"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text"</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"filter"</span>/&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"submit"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"Submit"</span>/&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">form</span>&gt;</span>
</code></pre>
</div>
<div class="code-footer"></div>
<p><strong>PHP</strong></p>
<div class="code" tabindex="-1">
<pre><code class="language-php"><span class="hljs-meta">&lt;?php</span>
<span class="hljs-comment">// Načteme hodnotu z filtrovacího pole</span>
<span class="hljs-variable">$filter</span> = <span class="hljs-keyword">isset</span>(<span class="hljs-variable">$_GET</span>[<span class="hljs-string">"filter"</span>]) ? <span class="hljs-variable">$_GET</span>[<span class="hljs-string">"filter"</span>] : <span class="hljs-string">''</span>;

<span class="hljs-comment">// Zobrazíme hodnotu filtru</span>
<span class="hljs-keyword">echo</span> <span class="hljs-string">"Hodnota filtru: "</span> . <span class="hljs-title function_ invoke__">htmlspecialchars</span>(<span class="hljs-variable">$filter</span>);
<span class="hljs-meta">?&gt;

</span></code></pre>
<div tabindex="-1"></div>
<div tabindex="-1">
<div class="code-header" tabindex="-1"><strong><span class="code-lang">HTML</span></strong></div>
<div class="code" tabindex="-1">
<pre><code class="language-html"><span class="hljs-tag">&lt;<span class="hljs-name">form</span> <span class="hljs-attr">method</span>=<span class="hljs-string">"post"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text"</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"filter"</span>/&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"submit"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"Submit"</span>/&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">form</span>&gt;</span>
</code></pre>
</div>
<div class="code-footer"></div>
<p><strong>PHP</strong></p>
<div class="code" tabindex="-1">
<pre><code class="language-php"><span class="hljs-keyword"><span class="hljs-meta">&lt;?php</span>
if</span> (<span class="hljs-variable">$_SERVER</span>[<span class="hljs-string">"REQUEST_METHOD"</span>] == <span class="hljs-string">"POST"</span>) {
    <span class="hljs-comment">// Načteme hodnotu z filtrovacího pole a ochráníme proti XSS útokům</span>
    <span class="hljs-variable">$filter</span> = <span class="hljs-title function_ invoke__">htmlspecialchars</span>(<span class="hljs-variable">$_POST</span>[<span class="hljs-string">"filter"</span>]);
    <span class="hljs-keyword">echo</span> <span class="hljs-string">"Zadaný filtr: "</span> . <span class="hljs-variable">$filter</span>;
}
<span class="hljs-meta">?&gt;</span></code></pre>
</div>
</div>
<h2 tabindex="-1"></h2>
<div class="code" tabindex="-1">
<p>Článek <a href="https://studijni-svet.cz/php-prostredi/">PHP &#8211; prostředí</a> se nejdříve objevil na <a href="https://studijni-svet.cz">Studijni-svet.cz</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Základní programové konstrukce</title>
		<link>https://studijni-svet.cz/zakladni-programove-konstrukce/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Wed, 10 Jun 2020 08:49:48 +0000</pubDate>
				<category><![CDATA[Informatika]]></category>
		<category><![CDATA[Programování]]></category>
		<guid isPermaLink="false">https://studijni-svet.cz/?p=10137</guid>

					<description><![CDATA[<p>&#160; Otázka: Základní programové konstrukce Předmět: Programování, Informatika Přidal(a): Ondřej Rethy &#160; Proměnné Jedná se o místo v paměti, které je určené pro uložení dat Každá proměnná má svůj datový typ (v některých jazycích povinné deklarovat při založení, např. C#, Java) Typová kontrola podle typového systému Statická (Java, C#) Proměnné je přiřazen datový typ a ... <a title="Základní programové konstrukce" class="read-more" href="https://studijni-svet.cz/zakladni-programove-konstrukce/" aria-label="Číst více o Základní programové konstrukce">Read more</a></p>
<p>Článek <a href="https://studijni-svet.cz/zakladni-programove-konstrukce/">Základní programové konstrukce</a> se nejdříve objevil na <a href="https://studijni-svet.cz">Studijni-svet.cz</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" class="alignleft" src="http://www.studijni-svet.cz/wp-content/uploads/ICONS/PREDMETY/Ostatni.png" alt="informatika" /></p>
<p>&nbsp;</p>
<p><strong> Otázka: </strong>Základní programové konstrukce</p>
<p><strong> Předmět:</strong> Programování, Informatika</p>
<p><strong> Přidal(a): </strong>Ondřej Rethy</p>
<p><span id="more-10137"></span></p>
<p>&nbsp;</p>
<h2><strong>Proměnné</strong></h2>
<ul>
<li>Jedná se o místo v paměti, které je určené pro uložení dat</li>
<li>Každá proměnná má svůj datový typ (v některých jazycích povinné deklarovat při založení, např. C#, Java)</li>
<li>Typová kontrola podle typového systému
<ul>
<li>Statická (Java, C#)
<ul>
<li>Proměnné je přiřazen datový typ a podle něj i rozsah a typ informace kterou může uchovávat</li>
<li>Například integer nemůže uchovávat string</li>
</ul>
</li>
<li>Dynamická (Python)
<ul>
<li>Samotné hodnoty mají datový typ, nikoliv proměnné</li>
<li>Tyto typy jsou kontrovány až za běhu programu</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li>Deklarace datového typu
<ul>
<li>Explicitní
<ul>
<li>Zapisuje se před vlastní použitím proměnné
<ul>
<li>int priklad;<br />
priklad = 5;</li>
</ul>
</li>
</ul>
</li>
<li>Implicitní
<ul>
<li>Proměnou použijeme v podprogramu</li>
<li>Jedná se o deklaraci &#8222;za běhu&#8220;</li>
<li>Implicitní deklarace má rychlejší zápis programového kódu
<ul>
<li>int funkce()<br />
{<br />
<strong>return</strong> 5;<br />
}<br />
int priklad = funkce();</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>&nbsp;</p>
<h2><strong>Operátory</strong></h2>
<p><strong>Aritmetické</strong></p>
<ul>
<li><strong>+</strong>, <strong>&#8211; </strong>… sčítání a odčítání</li>
<li><strong>*</strong>,<strong> / </strong>… násobení a dělení</li>
<li><strong>% </strong>… modulo (zbytek po dělení)</li>
<li><strong>++x</strong> … preinkrementace</li>
<li><strong>x++ </strong>… postinkrementace</li>
<li><strong>&#8211;x </strong>… predekrementace</li>
<li><strong>x&#8211; </strong>… postdekrementace</li>
</ul>
<p><strong>Logické</strong></p>
<ul>
<li><strong>&amp;&amp;</strong>, <strong>|| </strong>&#8230; logické AND, logické OR</li>
<li><strong>! </strong>&#8230; logické NOT</li>
</ul>
<p><strong>Bitové</strong></p>
<ul>
<li><strong>&amp;</strong>,<strong>| </strong>&#8230; bitové AND, bitové OR</li>
<li><strong>~ </strong>&#8230; bitové NOT</li>
<li><strong>&lt;&lt;</strong>,<strong> &gt;&gt; </strong>… bitový posun vlevo a vpravo</li>
</ul>
<p><strong>Relační</strong></p>
<ul>
<li><strong>&lt;</strong>, <strong>&gt;</strong> … porovnání menší a větší</li>
<li><strong>&lt;=</strong>, <strong>&gt;=</strong> … porovnání menší nebo rovno a větší nebo rovno</li>
<li><strong>==</strong> … porovnání rovnosti</li>
<li><strong>!=</strong> … porovnání nerovnosti</li>
</ul>
<p><strong>Přístupové</strong></p>
<ul>
<li>[] … indexer</li>
<li><strong>. </strong>… přísup ke členům</li>
<li><strong>() </strong>… invokace</li>
</ul>
<p>&nbsp;</p>
<p><strong>Ostatní</strong></p>
<table>
<tbody>
<tr>
<td width="272"><strong>Název</strong></td>
<td width="193"><strong>Symbol</strong></td>
</tr>
<tr>
<td width="272">operátor přiřazení</td>
<td width="193">=</td>
</tr>
<tr>
<td width="272">lambda operátor</td>
<td width="193">=&gt;</td>
</tr>
<tr>
<td width="272">ternární operátor</td>
<td width="193">?:</td>
</tr>
<tr>
<td width="272">operátor nullového sjednocení</td>
<td width="193">??</td>
</tr>
<tr>
<td width="272">kvalifikátor aliasu oboru názvů</td>
<td width="193">::</td>
</tr>
<tr>
<td width="272">await operátor</td>
<td width="193">await</td>
</tr>
<tr>
<td width="272">default operátor</td>
<td width="193">default</td>
</tr>
<tr>
<td width="272">delegate operátor</td>
<td width="193">delegate</td>
</tr>
<tr>
<td width="272">nameof operátor</td>
<td width="193">nameof</td>
</tr>
<tr>
<td width="272">new operátor</td>
<td width="193">new</td>
</tr>
<tr>
<td width="272">sizeof operátor</td>
<td width="193">sizeof</td>
</tr>
<tr>
<td width="272">stackalloc operátor</td>
<td width="193">stackalloc</td>
</tr>
<tr>
<td width="272">true/false operátor</td>
<td width="193">true/false</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p><strong>Priorita operátorů</strong></p>
<table>
<tbody>
<tr>
<td width="287"><strong>Operátory</strong></td>
<td width="201"><strong>Kategorie nebo název</strong></td>
</tr>
<tr>
<td width="287"><u>x. y</u>, x?. y, x? [ y], f (x), a[i], x++, x&#8211;,                              new, typeof, checked, unchecked, default, nameof,</p>
<p>delegate, sizeof, stackalloc, x -&gt; y</td>
<td width="201"> primární</td>
</tr>
<tr>
<td width="287"><u>+ x</u>, -x, !x, ~ x, ++x, &#8211;x, (T) x, await, &amp; x, * x, true a false</td>
<td width="201"> unární</td>
</tr>
<tr>
<td width="287"><u>x * y</u>, x/y, x% y</td>
<td width="201">multiplikativní</td>
</tr>
<tr>
<td width="287">x + y, x – y</td>
<td width="201">přičítáním</td>
</tr>
<tr>
<td width="287">x &lt;&lt; y, x &gt;&gt; y</td>
<td width="201"> posunu</td>
</tr>
<tr>
<td width="287">x&lt; y, x &gt; y, x &lt;= y, x &gt; = y, is, as</td>
<td width="201">relační testování a testování typu</td>
</tr>
<tr>
<td width="287">x == y, x != y</td>
<td width="201"> rovnost</td>
</tr>
<tr>
<td width="287">x &amp; y</td>
<td width="201"> logický operátor AND nebo bitový logický operátor AND</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<table>
<tbody>
<tr>
<td width="272"><strong>Operátory</strong></td>
<td width="200"><strong>Kategorie nebo název</strong></td>
</tr>
<tr>
<td width="272">x ^ y</td>
<td width="200"> logická hodnota XOR nebo bitový logický operátor</p>
<p>XOR</td>
</tr>
<tr>
<td width="272">x | y</td>
<td width="200"> logická OR logická logická hodnota nebo</td>
</tr>
<tr>
<td width="272">x &amp;&amp; y</td>
<td width="200">podmiňovací operátor AND</td>
</tr>
<tr>
<td width="272">x || y</td>
<td width="200"> podmiňovací operátor OR</td>
</tr>
<tr>
<td width="272">x?? y</td>
<td width="200">operátor slučování null</td>
</tr>
<tr>
<td width="272">r ? t : f</td>
<td width="200"> podmíněný operátor</td>
</tr>
<tr>
<td width="272">x = y, x + = y, x ^ = y, x &lt; &lt; = y, x &gt; &gt; = y ,=&gt;</td>
<td width="200"> přiřazení a deklarace lambda</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<h2><strong>Datové typy</strong></h2>
<ul>
<li>Hodnotové
<ul>
<li>Instance hodnotových typů (proměnné) jsou ukládány na zásobník programu a program s nimi pracuje přímo</li>
<li>Obsahují pouze hodnotu daného typu</li>
</ul>
</li>
<li>Referenční
<ul>
<li>Referenční datové typy neuchovávají přímo hodnotu samotnou, nýbrž odkaz na místo v paměti</li>
</ul>
</li>
</ul>
<p>&nbsp;</p>
<p><strong>a) Hodnotové</strong></p>
<p><strong>Logické</strong></p>
<ul>
<li><strong>bool</strong> … hodnoty true, false</li>
</ul>
<p><strong>Čísla </strong></p>
<ul>
<li><strong>byte </strong>… 8bitové beznaménkové celé číslo 0 – 255</li>
<li><strong>ushort </strong>… 16bitové beznaménkové celé číslo 0 – 65535</li>
<li><strong>uint </strong>… 32bitové beznaménkové celé číslo 0 – 4294967295</li>
<li><strong>ulong …</strong> 64bitové beznaménkové celé číslo 0 – 18446744073709551615</li>
<li><strong>sbyte … </strong>8bitové znaménkové celé číslo -128 – 127</li>
<li><strong>short … </strong>16bitové znaménkové celé číslo -32768 – 32767</li>
<li><strong>int … </strong>32bitové znaménkové celé číslo -2147483648 – 2147483647</li>
<li><strong>long …</strong> 64bitové znaménkové celé číslo -9223372036854775808 – 9223372036854775807</li>
<li><strong>float </strong>… 32bitové znaménkové reálné číslo (1bit znaménko, 8bit exponent a 23bit mantisa)</li>
<li><strong>double …</strong> 64bitové znaménkové reálné číslo (1bit znaménko, 11bit exponent a 52bit mantisa)</li>
</ul>
<p>&nbsp;</p>
<p><strong>b) Referenční</strong></p>
<ul>
<li><strong>string </strong>… slouží k uložení textů
<ul>
<li>Jedná se o alias ke třídě System.String()</li>
<li>Lze jí přímo naplnit (bez použití new)</li>
<li>Při porovnání se porovnává hodnota objektů, nikoliv hodnota odkazů, jak tomu je u ostatních tříd</li>
</ul>
</li>
<li><strong>object </strong>… ostatní třídy rozšiřují tuto třídu
<ul>
<li>Alias třídy System.Object()</li>
<li>Object je tedy společným základem pro ostatní typy</li>
</ul>
</li>
<li><strong>třída (class)</strong></li>
<li><strong>rozhraní (interface)</strong></li>
<li><strong>pole</strong></li>
<li><strong>delegát (delegate)</strong></li>
</ul>
<p>&nbsp;</p>
<h2><strong>Základní programové konstrukce</strong></h2>
<ul>
<li>Větvení (if, switch/case)
<ul>
<li>Úplné/Neúplné</li>
<li>Vícenásobné</li>
</ul>
</li>
<li>Cyklus (for, while)
<ul>
<li>Podmínka na začátku</li>
<li>Podmínka na konci</li>
<li>Známý počet průchodů</li>
</ul>
</li>
</ul>
<p>&nbsp;</p>
<p><strong>Podprogram</strong></p>
<ul>
<li>logický celek programu</li>
<li>část programu definovaná před startem programu</li>
<li>po startu hlavního programu je podprogram z hlavního programu spouštěn</li>
</ul>
<p>&nbsp;</p>
<p><strong>Využití podprogramů</strong></p>
<ul>
<li>zkrácení, zpřehlednění a zjednodušení hlavního programu</li>
<li>rozdělení algoritmu na více jednodušších částí</li>
<li>jednoduché kontrola a odstranění chyb</li>
<li>správné rozdělení programu na podprogramy je součástí programátorského umění</li>
<li>zkušení programátoři si vyvíjí celeé knihovny podprogramů &#8211; programové jednotky</li>
</ul>
<p>&nbsp;</p>
<p><strong>Volání podprogramu</strong></p>
<ul>
<li>podprogram je volán svým jménem</li>
<li>volání probíhá z hlavního programu nebo z nadřazeného podprogramu</li>
</ul>
<p>Článek <a href="https://studijni-svet.cz/zakladni-programove-konstrukce/">Základní programové konstrukce</a> se nejdříve objevil na <a href="https://studijni-svet.cz">Studijni-svet.cz</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Algoritmus, algoritmická složitost</title>
		<link>https://studijni-svet.cz/algoritmus-algoritmicka-slozitost/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Wed, 10 Jun 2020 08:44:43 +0000</pubDate>
				<category><![CDATA[Informatika]]></category>
		<category><![CDATA[Programování]]></category>
		<guid isPermaLink="false">https://studijni-svet.cz/?p=10134</guid>

					<description><![CDATA[<p>&#160; Otázka: Algoritmus, algoritmická složitost Předmět: Programování, Informatika Přidal(a): Ondřej Rethy &#160; Algoritmus Z obecného hlediska se jedná o &#8222;přesný návod nebo postup pro vyřešení konkrétní úlohy&#8220; Název je od perského matematika Al-Chorezmí (9. století) Teoretický princip řešení programu (nejen programu, ale i například skládání rubikovy kostky) Například kuchařka je též algoritmus pro kuchaře na ... <a title="Algoritmus, algoritmická složitost" class="read-more" href="https://studijni-svet.cz/algoritmus-algoritmicka-slozitost/" aria-label="Číst více o Algoritmus, algoritmická složitost">Read more</a></p>
<p>Článek <a href="https://studijni-svet.cz/algoritmus-algoritmicka-slozitost/">Algoritmus, algoritmická složitost</a> se nejdříve objevil na <a href="https://studijni-svet.cz">Studijni-svet.cz</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" class="alignleft" src="http://www.studijni-svet.cz/wp-content/uploads/ICONS/PREDMETY/Ostatni.png" alt="informatika" /></p>
<p>&nbsp;</p>
<p><strong> Otázka: </strong>Algoritmus, algoritmická složitost</p>
<p><strong> Předmět:</strong> Programování, Informatika</p>
<p><strong> Přidal(a): </strong>Ondřej Rethy</p>
<p><span id="more-10134"></span></p>
<p>&nbsp;</p>
<h2>Algoritmus</h2>
<ul>
<li>Z obecného hlediska se jedná o &#8222;přesný návod nebo postup pro vyřešení konkrétní úlohy&#8220;</li>
<li>Název je od perského matematika Al-Chorezmí (9. století)</li>
<li>Teoretický princip řešení programu (nejen programu, ale i například skládání rubikovy kostky)</li>
<li>Například kuchařka je též algoritmus pro kuchaře na přípravu jídla</li>
<li>Základní vlastnosti algoritmu
<ul>
<li>Elementárnost
<ul>
<li>Rozložit problém na co nejmenší prvky a ty poté řešit</li>
<li>Například úklid pokoje
<ul>
<li>Nejdříve sebrat oblečení, poté utřít prach, poté vyluxuovat, přemístit věci atd.</li>
</ul>
</li>
</ul>
</li>
<li>Konečnost
<ul>
<li>Algoritmus musí končit</li>
<li>Například úklid pokoje
<ul>
<li>Algoritmus musí někdy dojít k závěru, že je pokoj uklizen</li>
</ul>
</li>
</ul>
</li>
<li>Obecnost
<ul>
<li>Algoritmus by měl být obecný, tzn. Aby šel použít na více podobných řešení.</li>
<li>Například úklid pokoje
<ul>
<li>Musí jít tedy na všechny typy a rozměry pokojů</li>
</ul>
</li>
</ul>
</li>
<li>Determinovanost
<ul>
<li>Stejné úkony udělají za stejný čas</li>
<li>Například úklid pokoje
<ul>
<li>Necháme 2 roboty uklízet identický pokoj s identickým nepořádkem =&gt; Výsledek bude naprosto identický a za stejný čas</li>
</ul>
</li>
</ul>
</li>
<li>Determinismus
<ul>
<li>Každá část znamená přesně danou věc</li>
<li>V programování se s tím nemusíme tolik často setkávat</li>
<li>Například úklid pokoje
<ul>
<li>Sebrat oblečení musí přesně znamenat sebrat oblečení tím a tím způsobem.</li>
</ul>
</li>
</ul>
</li>
<li>Výstup
<ul>
<li>Každý algoritmus by měl být výsledek</li>
<li>Například úklid pokoje
<ul>
<li>Chceme aby tento algoritmus měl jako výsledek uklizený pokoj</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>Metody návrhu
<ul>
<li>Shora dolů (X-&gt;x)
<ul>
<li>postup řešení rozkládáme na jednodušší operace, až dospějeme k elementárním krokům.</li>
</ul>
</li>
<li>Zdola nahoru (x-&gt;X)
<ul>
<li>z elementárních kroků vytváříme prostředky, které nakonec umožní zvládnout požadovaný problém.</li>
</ul>
</li>
<li>Kombinace obou
<ul>
<li>obvyklý postup shora dolů doplníme &#8222;částečným krokem&#8220; zdola nahoru tím, že se například použijí knihovny funkcí nebo vyšší programovací jazyk</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>&nbsp;</p>
<h2>Algoritmická složitost</h2>
<ul>
<li>Udává rychlost algoritmu vzhledem k množině vstupních dat</li>
<li>Dvě hlavní zaměření
<ul>
<li>Paměť</li>
<li>Čas</li>
</ul>
</li>
<li>Faktorialová, exponenciální, kubická, kvadratická, lineární, logaritmická</li>
</ul>
<p>&nbsp;</p>
<h2>Rekurze</h2>
<ul>
<li>Je volání funkce z funkce, která ještě nedokončila svůj průběh</li>
<li>Z důvodu konečnosti musí být volání podmíněné (memory overflow)</li>
<li>Funkci můžeme volat:
<ul>
<li>Přímo</li>
<li>Nepřímo</li>
</ul>
</li>
<li>Podprogram může být volán jednou nebo vícekrát
<ul>
<li>Lineární rekurze</li>
<li>Stromová struktura (zakořeněný strom, binární)</li>
</ul>
</li>
</ul>
<p>&nbsp;</p>
<h2>Náhodnost</h2>
<ul>
<li>Náhodné algoritmy se snaží nalézt řešení problému náhodným rozhodováním o svém postupu</li>
<li>Při vytváření musíme dokončit všechny, směry, kterými se může program vydat</li>
<li>Program se rozhoduje několika způsoby:
<ul>
<li>V každém uzlu rozhodne postup náhodně</li>
<li>Na začátku vybere jeden z deterministických algoritmů</li>
</ul>
</li>
<li>Generování pseudonáhodných čísel – Kongurentní generátor</li>
</ul>
<p>Článek <a href="https://studijni-svet.cz/algoritmus-algoritmicka-slozitost/">Algoritmus, algoritmická složitost</a> se nejdříve objevil na <a href="https://studijni-svet.cz">Studijni-svet.cz</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
