The course mission is to acquaint students with this low-level universal language (currently one of the most common programming languages), its syntax and specifics (particularly in terms of data access); as well as impart an understanding of basic programming structures, the philosophy of variable types and relevant operators (including the potential of pointers in memory access), and further develop practical skills with an emphasis on appropriate use of this tool (i.e. language construction). At the programming level, course content focuses on the basic tools of the C language, variables, constants, commands, operators, if statements, loops, and the use of both user-defined and library functions. In addition to this basic tool, the course also places great emphasis on working with files, sorting algorithms, and standard input / output operations.
Teaching will be designed to reflect the different levels of learners at the start of the course. Instruction and basic exercises will be based on the assumption that the learner has minimal programming experience. For more advanced learners, more complex or challenging problems will be prepared, most of which will fall within the topics currently covered, but will place higher demands on the design of the solution algorithm.
Last update: Štípek Jiří, PhDr., Ph.D. (15.12.2024)
Cílem předmětu v oblasti algoritmizace je seznámit studenty se základy algoritmizace, algoritmickými konstrukcemi, vybranými způsoby a prostředky zápisu algoritmů a vybranými algoritmy. V oblasti programování je cílem předmětu seznámit studenty s jazykem C, s jeho syntaxí, základními programovými konstrukcemi, filozofií datových typů a příslušných operací, problematikou ukazatelů a dále rozvinutí praktických dovedností s důrazem na adekvátní využívání prostředků, resp. konstrukcí jazyka. Obsahově je předmět orientován na základní prostředky jazyka C, proměnné, konstanty, příkazy, operátory, podmíněné příkazy, cykly, ukazatele, práci s polem a funkce (včetně vybraných knihovních funkcí). Vedle využití základních prostředků jazyka se předmět dále věnuje vstupně výstupním operacím (zejm. práci se souborem) a implementaci vybraných algoritmů a datových struktur.
Výuka bude vedena tak, aby zohleňovala různou úroveň studujících na vstupu. Výklad a základní cvičení budou vycházet z předpokladu, že studující má minimální zkušenosti z programováním. Pro pokročilejší studující budou připraveny komplexnější či náročnější úlohy, které většinově budou spadat do aktuálně probíraných temat, ale budou klást vyšší nároky při návrhu algoritmu řešení.
Last update: Štípek Jiří, PhDr., Ph.D. (15.12.2024)
Descriptors - Czech
Příprava na výuku
Doba očekávané přípravy na 1 hodinu přednášky – 30 minut
Doba očekávané přípravy na 1 cvičení – 20 minut
Doba očekávané přípravy na 1 hodinu praxe – 0 minut
Samostudium literatury (za semestr) – 30 hodin
Práce se studijními materiály (za semestr) – 10 hodin
Plnění průběžných úkolů (za semestr) – 10 hodin
Plnění předmětu
Seminární práce – 0 hodin
Příprava na zápočet – 0 hodin
Příprava na zkoušku a zkouška – 25 hodin
Last update: Battistová Eva, PaedDr. (02.02.2022)
Course completion requirements - Czech
Podmínky pro úspěšné zakončení předmětu
První podmínkou pro úspěšné zakončení předmětu je odevzdání úkolů, které budou zadávány a odevzdávány průběžně prostřednictvím VLE Moodle, přičemž je nutné dosáhnout celkového průměrného hodnocení úkolů alespoň 80 %. Neodevzdané úkoly se započítávají do průměru s hodnocením 0 %. Všechny úkoly bude možné na základě hodnocení přepracovat a odevzdat znovu (termín pro přepracovanou verzi bude adekvátně posunut).
Druhou podmínkou je úspěšné složení zkoušky. Zkouška má praktickou a ústní část. Ústní část je podmíněna úspěšným složením praktické části (tj. hodnocení praktické části nejméně 50 %).
praktická část zkoušky: vypracování úloh dle zadání, které bude realizováno prezenční formou v předem vypsaných termínech v SIS ve zkouškovém období. Závěrečném zadání, které studující obdrží bude obsahovat 4 - 6 jednodušších úloh a jeho úkolem bude naprogramovat funkční řešení ve stanoveném časovém limitu.
ústní část zkoušky: V ústní části zkoušky se požadují znalosti programovacího jazyka v rozsahu dle sylabu předmětu a algoritmů, které byly probírány v hodinách. Součástí zkoušky může být i rozprava nad řešením úloh z praktické části.
Last update: Štípek Jiří, PhDr., Ph.D. (28.01.2023)
Literature - Czech
Základní literatura:
GONZALEZ-MORRIS, G., HORTON, I. Beginning C: From Beginner to Pro. B.m.: Apress. 2020.
HANÁK, J. Programování v jazyce C. Praha: Computer Media, 2011.
HEROUT, P. Učebnice jazyka C. Praha: Kopp, 2009.
PROKOP, J. Algoritmy v jazyku C a C++. Praha: Grada, 2012.
VIRIUS, M. Jazyky C a C++. Praha: Grada, 2011.
VIRIUS, M. Základy algoritmizace. Praha: ČVUT, 2008.
Last update: Štípek Jiří, PhDr., Ph.D. (18.01.2024)
Syllabus - Czech
Algoritmizace
Algoritmy a algoritmizace
Algoritmické konstrukce a struktury
Programování v jazyce C
Základy jazyka
Řídící struktury
Datové typy
Funkce
Ukazatele
Jednorozměrné pole
Textové řetězce
Práce se souborem
Vícerozměrná pole
Last update: Štípek Jiří, PhDr., Ph.D. (26.01.2023)
Learning resources - Czech
Pro podporu výuky bude využito VLE Moodle (virtuální vzdělávací prostředí). Odkaz na kurz a klíč k zápisu budou sděleny na první výuce a následně zaslány účastníkům kurzu e-mailem prostřednictvím SIS.
Last update: Štípek Jiří, PhDr., Ph.D. (26.01.2023)
Learning outcomes - Czech
1. Porozumět základům programování v jazyce C o Vysvětlit principy procedurálního programování a roli jazyka C. o Používat vývojové prostředí pro psaní, kompilaci a ladění programů.
2. Pracovat s proměnnými a datovými typy o Deklarovat a používat základní datové typy (int, float, char, double). o Aplikovat aritmetické, relační a logické operátory. o Aplikovat přetypování.
3. Používat podmíněné výrazy a větvení programu o Implementovat podmínky pomocí příkazů if, if-else a switch-case. o Rozhodovat o průběhu programu na základě uživatelského vstupu nebo jiných podmínek.
4. Ovládat cykly pro opakování operací o Používat základní cykly for, while a do-while. o Rozumět rozdílům mezi jednotlivými typy cyklů a jejich vhodnému použití. o Implementovat vnořené cykly pro složitější iterace.
5. Definovat a používat funkce o Vytvářet vlastní funkce se vstupními parametry a návratovou hodnotou. o Rozumět rozdílu mezi lokálními a globálními proměnnými. o Používat rekurzivní funkce pro řešení specifických problémů.
6. Pracovat s poli o Deklarovat a používat jednorozměrná a vícerozměrná pole. o Iterovat pole pomocí cyklů a upravovat jejich hodnoty.
7. Manipulovat se znaky a řetězci o Používat pole znaků k reprezentaci textových řetězců. o Aplikovat standardní funkce pro práci s řetězci (strlen, strcpy, strcmp atd.).
8. Pracovat se soubory o Otevřít, číst, zapisovat a uzavírat soubory v jazyce C. o Používat textové i binární soubory pro ukládání dat.
9. Ladit programy a identifikovat chyby o Rozpoznat a opravit běhové, syntaktické a logické chyby. o Používat ladicí nástroje pro diagnostiku problémů v kódu.
10. Vytvářet jednoduché programy řešící reálné problémy o Kombinovat naučené koncepty pro vytvoření ucelených aplikací. o Uplatňovat principy dobré struktury kódu a dokumentace.
Last update: Štípek Jiří, PhDr., Ph.D. (07.02.2025)