====== Otázky pro testy ======
Testy budou složeny z otázek v tomto seznamu a to tak, že se bude jednat o výběr dosud probrané látky.
Termíny testů:
* 1. test - 7. týden (3-7.11.2025)
* 2. test - 12. týden (8-12.12.2025)
===== Kompilace =====
* [2] Jaké znáte překladače jazyka C?
* [2] Popište proces vytvoření spustitelného programu ze zdrojových souborů jazyka C.
* [1] Jaký rozdíl mezi použitím ''#include '' a ''#include “soubor.h”''?
* [2] Co je úkolem preprocesoru?
* [2] Jaký je rozdíl mezi produktem kompilátoru a produktem linkeru?
===== Datové typy =====
* [2] Jak zjistı́me velikost datové reprezentace základnı́ch celočíselných typů v jazyce C?
* Co je to endianita?
* Jak je v paměti počítače reprezentován datový typ ''float'' (IEEE 754)?
* Jak v C přistupujeme k datovým položkám složeného typu (''struct'')?
* Deklarujte ukazatel na proměnnou datového typu ''int''.
* Vysvětlete, jaký je v C rozdíl mezi proměnnou typu ukazatel, proměnnou a polem z hlediska uložení v paměti.
* Deklarujte pole variabilní délky n, kterou načtete ze standardního vstupu.
* Deklarujte ukazatel na proměnnou datového typu ''int''.
* Jaký je rozdíl mezi konstantním ukazatelem a ukazatelem na konstantní hodnotu?
* Jak jsou v C reprezentovány textové řetězce?
* Stručně popište typ ''union'' používaný v jazyce C.
* Jak přistoupit na položku number proměnné data typu struktura?
* Jak přistoupit na položku number proměnné data typu ukazatel na strukturu?
* [2] Jak lze rozlišit literál datového typu ''double'' a ''float''?
* [2] Jak lze rozlišit literál datového typu ''long'' a ''int''?
* Inicializujte 2D pole velikosti 3x3 čísly 1 - 9 jdoucími vzestupně.
* Co je hodnotou proměnné typu ukazatel?
* Jakým způsobem lze v C zjistit délku textového řetězce?
* [2] Co ovlivňuje u celočíselných typů modifikátor ''unsigned''?
* K čemu slouží operátor ''typedef''?
===== Standardní vstup a výstup =====
* [1] Patří funkce ''printf'' a ''scanf'' mezi příkazy programovacího jazyka C?
* [3] Jaké jsou možné návratové hodnoty funkce ''scanf''?
* Jak v C zajistíte načtení textového řetězce ze souboru aniž byste překročili alokovanou paměť určenou pro uložení řetězce?
* Jak v C zajistíte načtení řetězce, který bude obsahovat bílý znak?
* [3] Jak lze vynutit u funkce ''printf'' vypsání znaménka u číselných datových typů?
* Co je to bílý znak? Je možné ho načíst pomocí funkce ''scanf''?
* [2] Vypište funkce pro vypsání dat na standardní výstupu a stručně popište jejich činnost (max. jedna věta u každé funkce).
* [2] Vypište funkce pro načtení dat ze standardního vstupu a stručně popište jejich činnost (max. jedna věta u každé funkce).
* [3] Jak lze poznat, že při čtení standardního vstupu nepřijdou již další data (tj. bylo např. dosaženo konce souboru přesměrovaného na standardní vstup)?
* Jaký je rozdíl mezi zápisem na standardní výstup a na standardní chybový výstup?
* [3] Má funkce printf návratovou hodnotu? Pokud ano, jaký je její význam?
* Bude fungovat následující zápis čtení ''scanf("%i", a)''? Pokud ano, jak vypadá deklarace proměnné a tisk načteného obsahu?
* Jak lze bezpečně načíst pomocí ''scanf'' jeden odstavec textu obecné délky? Uveďte příklad.
===== Řídicí struktury =====
* Jakého datového typu může být řídící proměnná cyklu ''for''?
* Jaký je rozdíl mezi cykly ''while'' a ''do-while''?
* Co způsobí příkaz ''continue''?
* Co způsobí příkaz ''break''?
* Popište funkci ternárního operátoru.
* Jak je v příkazu větvení ''switch'' ošetřena varianta, která nevyhovuje podmínce žádné z větví?
* Jaký je rozdíl mezi větením programu pomocí příkazu ''if'' a pomocí příkazu ''switch''?
* Co je to blok a jaký je jeho význam v jazyce C?
===== Nesetříděno =====
* Jak lze v jazyce C realizovat předání parametru funkci odkazem?
* Co je to literál a co tímto pojmem označujeme?
* Co znamená klíčové slovo ''volatile''?
* K čemu slouží modifikátor ''const''?
* Jaký význam má klíčové slovo ''extern'' v závislosti na kontextu?
* Jaký význam má klíčové slovo ''static'' v závislosti na kontextu?
* Jaké typy paměti dle způsobu alokace rozlišujeme v jazyce C?
* Vyjmenujte čtyři specifikátory paměťových tříd.
* Jak v C alokujete dynamickou paměť pro uložení posloupnosti 20 hodnot typu ''int'' ? Jak následně takové pole zvětšíte pro uložení dalších 10 položek?
* Jak se v C předává pole funkcím?
* Jakého datováho typu je návratová hodnota funkce ''malloc''?
* Jaký je rozdíl mezi funkcemi ''malloc'' a ''calloc''?
* Jak lze v programu zjistit jeho jméno?
* Jak jsou v programu zpracovány argumenty příkazové řádky?
* Charakterizujte stučně paměťové třídy (max. jedna věta pro každou paměťovou třídu)
* Popište jak v C probíhá volání funkce ''int doit(int r)''? Jaká data jsou předávána do/z funkce a kam jsou hodnoty ukládány?
* Jakými dvěma způsoby lze v C vytvářet konstanty?
* Jakým způsobem otevřete soubor pro čtení? Napište krátký (1-3 řádkový) kód?
* Jakým způsobem otevřete soubor pro zápis? Napište krátký (1-3 řádkový) kód?
* Jaké znáte logické operátory jazyka C? Jak se zapisují?
* Jaké znáte bitové operátory jazyka C? Jak se zapisují?
* Jak v C realizujete dělení a násobení dvěma s využitím operátorů bitového posunu?
* Co je v jazyce C pointerová (ukazatelová) aritmetika a jak se používá?
* Jak se v jazyce C používá operátor přetypování?
* Jak v C zapíšete konstantní ukazatel na konstantní hodnotu, např., typu double?
* Co je v C ukazatel na funkci? K čemu slouží a jak definujete proměnou typu ukazatel na funkci?
* Můžeme v C při definici proměnné typu pole, proměnnou přímo inicializovat? Pokud ano, jak?
* Můžeme v C při definici proměnné typu struct inicializovat pouze určitou položku?
* Co vrací operátor sizeof?
* Charakterizujte rozdíl mezi polem a spojovým seznamem.
* Navrhněte datovou strukturu(y) pro vytvoření spojového seznamu
* Charakterizujte abstraktní datový typ. Co se pod tímto pojmem myslí?
* Charakterizujte základní rozdíly mezi zásobníkem a frontou?
* Vysvětlete princip rekurze např. na výpočtu faktoriálů. Charakterizujte hlavní rozdíly mezi rekurzivním a iterativním výpočtem.