Lecturer(s)
|
-
Skupa Miroslav, Ing.
-
Zmeškal Ladislav, Ing. Ph.D.
-
Wachter Ladislav, Ing.
-
Habrcetl Lubor, Ing.
-
Brožek Václav, Ing.
|
Course content
|
The below itemized topics represent radii of the subject matter went through, they do not exactly correspond to scheduled lectures: (1) Introductory information, organization of the subject, recommended literature, fundamental historical information and frame of the C language, brief introduction into vocabulary and syntax, the simplest programs, program-operation environment binding. (2) Closer look onto the C language syntax, keywords, control statements (if - else, return, break, continue), loops (for, while, do). (3) Variable declaration, simple data types and their definitions, arrays, pointers, enumerations, structures, bit array, union, function data type, definition of a custom data type, definition of constants, definition of functions, assignment, input-output operations, empty statement, and unconditional jump. (4) Expressions, operators, function calls, passing arguments to functions, typecasting or explicit type conversion, conditional expression, substitution expression and substitution operators, comma expression. (5) Preprocessor of the C language, lexical convention of preprocessor, preprocessor macro definition and macros with parameters, macro recursion, predefined macros in ANSI C, including header files, conditional compilation, passing information to compiler via the pragma macro. (6) Script-driven and automatised compilation - make, preparation of makefiles, comments, rule writing, explicit and implicit rules, goal definitions, symbolic goals, macros in makefiles, operating system commands in makefiles. (7) Input-output operations, files and streams, standard streams, file operations, formatted input and output, file errors, detection and handling, advanced file operations. (8) Memory management, basic memory operations - allocation and freeing, reallocation of blocks, dynamic arrays, arrays as function arguments, character strings, string functions. (9) Character and string constants, character processing, math functions, random generator. (10) Date and time, program execution time, calendar functions, difference of time stamps. Control functions and diagnostics, debugging macros, OS command processor, forced program termination, termination functions, signals. (11) Standard ANSI C extension, error handling, working with operation environment variables, bisection searching, QuickSort sorting. Functions with variable number of arguments. (12) Linking external binary modules - linker, writing external modules in assembler, segments and segment registers of processor, assembler compilation, passing arguments to assembler subroutines. (13) Introduction to the object-oriented C++ language. Changes against the ANSI C. New syntactic elements - constant definitions, inline functions, passing arguments to function by reference, reference as return type of functions, declaration statement, type system and classes, bool data type. Overloading. Creating and freeing of object instances - new and delete operators. Name spaces. (14) Objects in C++, class definitions, object declarations. Access specifiers to object items, member functions or methods, method modifiers. Constructor and destructor. Dynamic instances of objects. Overloading operators. (15) Class inheritance, inheritance specifiers, sense and use of specifiers. Polymorphism. Abstract methods. Multiple inheritance, possible collisions. (16) Programmer's model of processor. Registers. Data types, processor endian. Interrupts. Subroutine calls. Memory models. (17) Multiplatform library for graphical user interface creating - Qt. Qt architecture. Getting, installation and particularities of program compilation using Qt. Minimalistic Qt application. Adding visual components - widgets. Event-driven application paradigm, signals and slots. Qt Designer.
|
Learning activities and teaching methods
|
Lecture supplemented with a discussion, Lecture with practical applications, E-learning, Collaborative instruction, Discussion, Laboratory work, Task-based study method, Individual study, Self-study of literature, Lecture, Lecture with visual aids
- Individual project (40)
- 40 hours per semester
- Contact hours
- 65 hours per semester
- Preparation for an examination (30-60)
- 30 hours per semester
- Practical training (number of hours)
- 30 hours per semester
|
prerequisite |
---|
Knowledge |
---|
prakticky využívat nabyté znalosti z předmětů Počítače a programování 1 a Počítače a programování 2 |
samostatně psát jednoduché programy v libovolném strukturovaném imperativním nebo objektově orientovaném programovacím jazyce (např. Java, Pascal, C#, PHP, BASIC, apod.) |
rozumět a aplikovat základní poznatky z oblasti teoretické informatiky (algoritmická složitost, množství informace, apod.) |
číst a porozumět anglicky psané dokumentaci, referenční příručce |
Skills |
---|
algoritmizovat jednoduché až středně obtížné problémy |
provádět elementární analýzu a dekompozici předloženého problému, navrhnout jeho algoritmické řešení |
spolehlivě ovládat základní vývojářské nástroje (programátorský textový editor, terminál/příkazový procesor OS, 2-panelový souborový manažer, atp.), má zkušenost s libovolným integrovaným vývojovým prostředím (např. Eclipse, apod.) |
Competences |
---|
N/A |
N/A |
learning outcomes |
---|
Knowledge |
---|
programovacího jazyka ANSI C a základní znalost objektově orientovaného rozšíření C++ (v rozsahu pro uvedení do samostatného dalšího studia) |
obecné principy imperativních programovacích jazyků se zvláštním zřetelem na nízkoúrovňové programování |
uspořádání běhového prostředí procesů z hlediska programátora (uspořádání paměti, činnost CPU, atp.) |
Skills |
---|
psát komplexní programy v jazyce ANSI C pro všechny podporované platformy |
psát multiplatformní software, zná problémy a nástrahy tvorby software nezávislého na běhovém prostředí |
orientovat se v cizím zdrojovém kódu nebo kódu tvořeném v týmu |
Competences |
---|
N/A |
teaching methods |
---|
Knowledge |
---|
Lecture |
Lecture with visual aids |
Lecture supplemented with a discussion |
Laboratory work |
E-learning |
Task-based study method |
Collaborative instruction |
Self-study of literature |
Individual study |
Interactive lecture |
Discussion |
Skills |
---|
Lecture |
Lecture with visual aids |
Lecture supplemented with a discussion |
Laboratory work |
E-learning |
Task-based study method |
Collaborative instruction |
Self-study of literature |
Individual study |
Interactive lecture |
Discussion |
Competences |
---|
Self-study of literature |
assessment methods |
---|
Knowledge |
---|
Practical exam |
Skills demonstration during practicum |
Seminar work |
Skills |
---|
Practical exam |
Seminar work |
Skills demonstration during practicum |
Competences |
---|
Continuous assessment |
Recommended literature
|
-
Herbison, S.P., Steele, G.L. Referenční příručka jazyka C. Science, 1996. ISBN 80-901475-50.
-
Herout, Pavel. Učebnice jazyka C. 1. díl. 6. vyd. České Budějovice : Kopp, 2009. ISBN 978-80-7232-383-8.
-
Kernighan, Brian W.; Ritchie, Dennis M. Programovací jazyk C. 2. vyd. Bratislava : Alfa, 1989. ISBN 80-05-00154-1.
-
Kernighan, Brian W.; Ritchie, Dennis M. The C Programming Language. 2. vyd. Prentice Hall, 1988. ISBN 978-0131103627.
-
Salus, Peter H. Imperative Programming Languages. Macmillan Technical Pub, 1998. ISBN 978-1578700097.
-
Virius, Miroslav. Jazyky C a C++ : kompletní průvodce. 2., aktualiz. vyd. Praha : Grada, 2011. ISBN 978-80-247-3917-5.
|