1 Fakulta elektrotechniky a informatiky Katedra softwarových technologií 12. října 2009
Organizace výuky Přednášky Teoretické základy dle normy jazyka C Cvičení Praktické úlohy odpřednášené látky Prostřední Visual Studio 2005/2008 Povinná minimální účast 60% Zápočet Vypracování semestrální práce Úspěšné složení zápočtového testu
Organizace výuky Literatura Přednášky Herout, P.: Učebnice jazyka C Schildt, H.: Naue se sám C Kernighan, B. W., Ritchie, D. M.: The C Programming Language Předpokládané znalosti základy algoritmu, proměnná, přiřazení, výraz řídící struktury funkce a její volání: hodnotou odkazem
Cíle a historie Cíle zvládnout základy programování v jazyce C vytvořit základy pro objektové programování v C++ porozumět pointerům Historie předchůdce byl jazyk B 1972 Dennis M. Ritchie, AT&T Bell Labs jazyk C (odstranění problému jazyka B) masový úspěch UNIX přepsán celý do C 1978 - K&R Standard ( Pre-ANSI C ) 1982 - počátek standardizace jazyka a knihoven 1989 American National Standard X3.159-1989 = ANSI C (úprava jazyka dle praktických zkušeností) 1990 převzata pod ISO/IEC 9899-1990 nejnovější ISO/IEC 9899-1999 C99
Charakteristika jazyka Klady multiplatformní přenositelné zdrojové kódy napoíe OS a CPU stačí pouze C kompilátor nízkoúrovňový přímý přístup do paměti, bitové operace rychlý, vhodný pro systémové programování vývoj OS, Linux napsán kompletní v C Zápory nebezpečný slabá typová kontrola, nejednoznačná syntaxe neumožňuje přímou práci s řetězci
Způsob zpracování programu Editor vyváření a editaci kódu Preprocesor předzpracovává kód (vynechává komentáře, linkuje.h soubory, makra) výsledkem je opět textový soubor Compiler překlad zdrojového kódu do relativního kódu (jazyk rel. adres), vzniká soubor *.obj, podmíněně může vzniknout *.lis (protokol o překladu) Linker přidělí relativním adresám adresy absolutní, najde adresy na ostatní identifikátory (knihovny *.lib), výsledkem je *.exe Debugger pro nalézání chyb, vše probíhá v cyklu Editor-Compiler-Linker-Debugger
Charakteristika programu v jazyce C všechny programy se skládají z jedné nebo více funkcí povinná funkce každého programu main() příkazy končí středníkem - ; blok programu ve složených závorkách - {} řetězce v uvozovkách řetězec znaky v apostrofech x
Obecný formát funkce a funkce main Obecný formát funkce návratovýtyp jménofce(seznamparametrů) { blok příkazů } Funkce main() musí být vždy vstupní místo programu nejjednodušší funkce main void main(void) { }
Fce s návratovou hodnotou a parametry fce s návratovou hodnotou a parametry int main(int argc, char* argv[]) { return 0; } návratová hodnota parametry argc počet parametrů argv[] pole parametrů
Spuštění z příkazové řádky s parametry Příklad pžíkazové řádky C:\program.exe par1 par2 Argumenty přenesené do programu argc = 3 argv[0] = C:\program.exe argv[1] = par1 argv[2] = par2
Komentáře začátek /* konec */ Příklady komentářů /* komentar na vice radcich s vynechanim jednoho radku */ /* komnetar na jednohom radku */ vysledek = a /* promenna */ + b;
Komentáře podle C99 lze navíc použít pro jednořádkové komentáře // Příklad komentářů II vysledek = a + b; // součet a,b
Základní datové typy Celočíselné char 8b -čtení jednoho znaku/malého čísla short int 16b int 16/32b -závislé na prostředí long int 32b vše bud příklad unsigned - bez znaménka rozsah od 0 do 2 n 1 signed se znaménkem (implicitně) rozsah od - 2 n 1 do 2 n 1 1 unsigned char 0-255 signed char -128-127
Základní datové typy Celočíselné - ekvivalentní zápisy short = short int = signed short int long = long int = signed long int int = signed int
Základní datové typy Reálné float 32 b double 64 b long double 64 b Logické přímo nejsou poskytovány nenulová hodnota (nejčastěji 1) = true nulová hodnota (0) = false až od normy C99 zaveden typ _Bool Řetězce přímo nejsou poskytovány pomocí pole znaků
Velikost datového typu Příklad operátor sizeof(typ) vrací velikost datového typu v B sizeof(char); // = 1B sizeof(double); // = 8B
Klíčová slova Celkem 32 klíčových slov Klíčová slova auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if static while
Identifikátory case sensitive (Pocet POCET pocet) pouze prvních 31 znaků nesmí začínat číslem
Bílé znaky zahrnují důležité znaky nejsou na obrazovce vidět \ = escape sekvence Bílé znaky \n nová řádka (linefeed LF) \r návrat na začátek řádky (carriage return CR) \f nová stránka (formfeed FF) \t tabelátor (tab HT) \b posun doleva (backspace BS) \a písknutí (alert BEEL) \\ zpětné lomítko (backslash) \ apostrof (sigle quote) \0 nulový znak (null character NULL)