Detail předmětu

Úvod do programování

FEKT-BPC-UDPAk. rok: 2022/2023

První část předmětu je zaměřena na seznámení studentů se způsoby uložiní čísel v počítači (celá čísla, čísla s pohyblivou řádovou čárkou, standard IEEE 754-2008), kódováním znaků (ASCII, ISO-8859-X, Windows-1250, UNICODE), kódování binárních dat pomocí tisknutelných znaků (Quoted-Printable Encoding, BASE64), vysvětlení Von Neumannových principů fungování počítače, základními principy OS. Druhá část předmětu se věnuje základům programování v jazyce C. Studenti by se měli naučit používat jednoduché proměnné, operátory, přiřazovací příkazy, příkazy větvení a cyklů, používání funkcí, práci s poli, ukazateli a strukturami.

Jazyk výuky

čeština

Počet kreditů

7

Garant předmětu

Výsledky učení předmětu

Absolvent předmětu by měl být schopen:
- vyjádřit číslo v různých číselných soustavách,
- vyjádřit desetinné číslo dle standardu IEEE 754-208,
- vyjádřit znak v kódování ASCII, ISO-8859-X, UNICODE (UTF-32, UTF-16, UTF-8),
- kódovat řetšzec oktetů dle standardu BASE64 a dekódovat BASE64 text,
- používat základní příkazy OS Linux/UNIX,
- popsat základní a složené datové typy jazyka C,
- aplikovat příkazy a operátory jazyka C,
- naprogramovat a využívat funkce,
- sestavit jednoduchý algoritmus a vytvořit pro něj program v jazyce C,

Plánované vzdělávací činnosti a výukové metody

Metody vyučování zahrnují přednášky a počítačová cvičení. Student musí ve cvičeních odladit zadané úlohy.

Způsob a kritéria hodnocení

Až 50 bodů za laboratorní cvičení (2 testy za max. 25 bodů).  Minimální požadovaný počet bodů pro udělení zápočtu je 20 bodů.
Až 50 bodů za závěrečnou zkoušku. Minimální požadovaný počet bodů ze závěrčné zkoušky je 20 bodů.

Osnovy výuky

1. Úvodní informace o kurzu. Číselné soustavy, převody mezi číselnými soustavami. Aritmetické operace v binární soustavě. Reprezentace záporných čísel.
2. Reprezentace reálných čísel, standard IEEE 754-2008, BFloat16. Kódování znaků: ASCII, ISO-8859-X, Windows-1250, UNICODE.
3. UNICODE – způsoby kódování: UTF-32, UTF-16, UTF-8. Kódování binárních dat pomocí tisknutelných znaků (Quoted-Printable Encoding, BASE64).
4. Von Neumannovy principy a koncepce počítače. Algoritmus, program, proměnná, datový typ. Programovací a značkovací jazyky. Rozdělení programovacích jazyků. Historie, charakteristika, použití a standardy jazyka C.
5. Struktura programu v jazyce C. Komentáře. Identifikátory. Datové typy. Konstanty. Definice a inicializace proměnných. Konstantní proměnné.
6. Výrazy, výrazový příkaz. Arita, priorita a asociativita operátorů. Aritmetické operátory. Přiřazovací příkaz. Operátory inkrementace a dekrementace. Složené příkazy.
7. Příkaz větvení if. Relační a logické operátory. Logické výrazy. Podmíněný výraz. Příkaz switch. Cykly while a do-while.
8. Cyklus for. Příkazy break a continue. Jednorozměrná pole. Řetězce.
9. Vícerozměrná pole. Funkce: definice, deklarace, volání, předávání argumentů, návratová hodnota. Příkaz preprocesoru #define. Makra s parametry. Inline funkce.
10. Příkazy preprocesoru #include, #define, #ifdef, #ifndef, #endif. Hlavičkové soubory. Datový typ struktura. Struktura jako parametr funkce a návratová hodnota funkce. Pole struktur.
11. Ukazatele. Ukazatele a pole. Ukazatelová aritmetika. Ukazatele jako argumenty funkcí. Pole jako argumenty funkcí. Struktury a ukazatele.
12. Dynamická alokace paměti. Pole ukazatelů. Příkazový řádek a argumenty funkce main.
13. Soubory. Knihovní funkce pro práci se vstupy a výstupy.

Učební cíle

Cílem předmětu je seznámit studenty se základními způsoby reprezentace čísel a znaků v počítači, binárními operace, základními principy fungování Von Neumannova počítače a zajména se základy programování v jazyce C.

Vymezení kontrolované výuky a způsob jejího provádění a formy nahrazování zameškané výuky

Počítačová cvičení jsou povinná, řádně omluvené zmeškané počítačové cvičení lze po domluvě s vyučujícím nahradit.

Základní literatura

HEROUT, P.: Učebnice jazyka C (1. až 2. díl). 6.vyd. České Budějovice: Kopp, 2009. (CS)

Doporučená literatura

KERNIGHAN, B. W., RITCHIE, D. M.: Programovací jazyk C. Brno: Computer Press, 2006. 286 s. ISBN 80-251-0897-X. (CS)
KADLEC, V.: Učíme se programovat v jazyce C. Computer Press: Praha, 2002. 294 s. ISBN 80-7226-715-9. (CS)

Zařazení předmětu ve studijních plánech

  • Program BPC-AMT bakalářský, 1. ročník, zimní semestr, povinný

Typ (způsob) výuky

 

Přednáška

26 hod., nepovinná

Vyučující / Lektor

Osnova

1. Úvod do předmětu. Číselné soustavy, převody mezi číselnými soustavami. Aritmetické operace v binární soustavě. Reprezentace záporných čísel.
2. Reprezentace desetinných čísel, standard IEEE 754-2008. Von Neumannovy principy a koncepce počítače. Strojová instrukce. Operační systém (OS), role OS, abstrakce poskytované OS.
3. Kódování znaků: ASCII, ISO-8859-X, Windows-1250, UNICODE (UTF-32, UTF-16, UTF-8). Kódování BASE64. Algoritmus, popis algoritmů pomocí vývojových diagramů.
4. Programovací a značkovací jazyky. Rozdělení programovacích jazyků. Historie a standardy jazyka C. Základní struktura programu v jazyce C.
5. Proměnné v jazyce C, identifikátory proměnných. Jednoduché datové typy v jazyce C. Definice a inicializace proměnných. Globální a lokální proměnné. Rozsahy platnosti proměnných. Konstanty. Konstantní proměnné.
6. Výrazy a příkazy. Priorita, asociativita a arita operátorů. Binární a unární aritmetické operátory. Přiřazovací příkaz, L-hodnota, R-hodnota. Operátory inkrementace a dekrementace. Složené příkazy. Bloky a definice proměnných.
7. Příkazy větvení if - else. Relační a logické operátory. Logické výrazy. Podmíněný výraz. Příkaz cyklu while.
8. Příkazy cyklů do-while a for. Příkazy break a continue. Příkaz switch. Pole. Řetězce.
9. Funkce – definice, volání, předávání parametrů, návratová hodnota, stack frame. Příkazy preprocesoru #include, #define, #ifdef, #ifndef, #endif. Makra s parametry. Hlavičkové soubory.
10. Ukazatele. Operátor sizeof. Ukazatele a pole. Dynamická alokace. Ukazatele a argumenty funkcí. Pole jako parametr funkce.
11. Datový typ struktura. Přístup k prvkům struktury. Inicializace struktur. Struktura jako parametr funkce a návratová hodnota funkce.
12. Ukazatel na ukazatel. Pole ukazatelů. Parametry funkce main(). API. ABI. Knihovny funkcí a varianty jejich sestavení (dynamická a statická). Standardní knihovní funkce jazyka C.
13. Funkce pro práci se standardním vstupem a výstupem: scanf(), printf().

Cvičení na počítači

39 hod., povinná

Vyučující / Lektor

Osnova

1. Úvodní informace. Příklady na převod mezi desítkovou, dvojkovou, šestnáctkovou a osmičkovou soustavou. Sčítání, odčítání ve dvojkové soustavě.
2. Příklady na reprezentaci čísel ve 2. doplňku. Násobení a dělení ve dvojkové soustavě.
3. Příklady na vyjádření čísel s pohyblivou řádovou čárkou dle standardu IEEE 754-2008. Příklady na kódování znaků dle standardů ASCII, ISO-8859-2 a UNICODE (UTF-32, UTF-16, UTF-8). Příklad výpočtu kontrolního součtu pole bytů.
4. Popis algoritmu na výpočet kvadratické rovnice a algoritmu bublinkového třídění pomocí vývojového diagramu.
5. Shell, základní příkazy pro práci v OS Linux/UNIX.
6. 1. test. Seznámení s vývojovými prostředími. Program na výpočet kořenů kvadratické rovnice.
7. Příklady na realizaci podmíněného větvení if – else, podmíněný výraz a cyklus while.
8. Příklady na práci s poli s využitím cyklů. Příklady na práci s řetězci znaků.
9. Příklady na použití funkcí v programu (definici a volání funkce). Příklady na použití maker s parametry.
10. 2. test.
11. Příklady na použití datového typu struktura. Příklady na předávání struktur funkcím hodnotou a pomocí ukazatelů.
12. Příklady na použití parametrů funkce main() a proměnných prostředí. Příklady na dynamickou alokaci a použití knihovních funkcí.
13. Příklad na projekt sestávající se z více zdrojových souborů. Umístění deklarace funkce do hlavičkového souboru, ošetření proti vícenásobnému vložení. Knihovny funkcí a varianty jejich sestavení (dynamická a statická). Program make.