IUJCE 07/08 Přednáška č. 1

Podobné dokumenty
Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Zápis programu v jazyce C#

Lekce 6 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C

Programovací jazyk C++ Hodina 1

Programování v C++ 1, 1. cvičení

Základy jazyka C. Základy programování 1 Martin Kauer (Tomáš Kühr)

Programovací jazyk C(++) C++ area->vm_mm->locked_vm -= len >> PAGE_SHIFT;

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

Bitové operátory a bitová pole. Úvod do programování 2 Tomáš Kühr

IUJCE 07/08 Přednáška č. 4. v paměti neexistuje. v paměti existuje

Základy jazyka C. Základy programování 1 Tomáš Kühr

AUTHOR : Robert Follner DATE. Abstrakt ABSTRACT: Několik poznatků autora (Robert Follner) z programování

Opakování programování

Základní datové typy, proměnné - deklarujeme předem - C je case sensitive rozlišuje malá a velká písmena v názvech proměnných a funkcí

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

- tzv. standardní vstupní a výstupní proud (input / output stream)

Objektově orientované programování

Operační systémy. Cvičení 4: Programování v C pod Unixem

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

PROGRAMOVÁNÍ V C++ CVIČENÍ

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

Odvozené a strukturované typy dat

Preprocesor a koncepce (větších) programů. Úvod do programování 2 Tomáš Kühr

2 Datové typy v jazyce C

Úvod do programovacích jazyků (Java)

Operační systémy. Cvičení 3: Programování v C pod Unixem

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LEXIKÁLNÍ ANALÝZA

Výrazy, operace, příkazy

Koncepce (větších) programů. Základy programování 2 Tomáš Kühr

Základy jazyka C. Základy programování 1 Martin Kauer (Tomáš Kühr)

Algoritmizace a programování

ZPRO v "C" Ing. Vít Hanousek. verze 0.3

Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Datové typy pro reálná čísla

Ahoj mami. Uložení dat v počítači. Příklady kódování dat. IAJCE Přednáška č. 4

- jak udělat konstantu long int: L long velka = 78L;

Algoritmizace a programování

Proměnná a její uložení v paměti

int => unsigned int => long => unsigned long => float => double => long double - tj. bude-li:

IUJCE Přednáška č. 11. další prvky globální proměnné, řízení viditelnosti proměnných, funkcí

Základy programování (IZP)

Preprocesor. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016

2 Základní funkce a operátory V této kapitole se seznámíme s použitím funkce printf, probereme základní operátory a uvedeme nejdůležitější funkce.

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Úvod do programování. Lekce 1

Výrazy, operace, příkazy

Prezentace a vysvětlení programového prostředí NXC

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth

Základy algoritmizace a programování

Úvod do programování - Java. Cvičení č.4

Lekce 19 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C

Ukazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný

9. lekce Úvod do jazyka C 4. část Funkce, rekurze Editace, kompilace, spuštění Miroslav Jílek

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Data, výrazy, příkazy

NPRG031 Programování II --- 2/2 Z, Zk

Datové typy pro reálná čísla

IUJCE 07/08 Přednáška č. 6

C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++

Algoritmy I. Cvičení č. 2, 3 ALGI 2018/19

Základy programování (IZP)

Algoritmizace a programování

- dělají se také pomocí #define - podobné (použitím) funkcím - předpřipravená jsou např. v ctype.h. - jak na vlastní makro:

7: #include <stdio.h> //standardni knihovna

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

Základy jazyka C. Úvod do programování 1 Tomáš Kühr

Formátové specifikace formátovací řetězce

6. lekce Úvod do jazyka C knihovny datové typy, definice proměnných základní struktura programu a jeho editace Miroslav Jílek

IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

ADT/ADS = abstraktní datové typy / struktury

Programování v jazyce C pro chemiky (C2160) 12. Specifické problémy při vývoji vědeckého softwaru

8 Třídy, objekty, metody, předávání argumentů metod

V dalších letech se pak začaly objevovat první normy pro jazyk C++ (ISO/IEC 14882:1998; ISO/IEC 9899:1999; ISO/IEC 14882:2003; ISO/IEC 14882:2011).

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Jazyk C++, některá rozšíření oproti C

Řešení sady 1. Úvod do programování 1 Tomáš Kühr

Příkazy preprocesoru - Před překladem kódu překladačem mu předpřipraví kód preprocesor - Preprocesor vypouští nadbytečné (prázdné) mezery a řádky -

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016

Algoritmizace a programování

Algoritmizace a programování

Struktura programu, proměnné, konstanty, výrazy v jazycích C a C#

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky

Jazyk C# a platforma.net

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY

Programování MCU ve vyšších programovacích jazycích

Programovanie v jazyku C - ti to zratam...

Aplikace Embedded systémů v Mechatronice. Michal Bastl A2/713a

Třídy a struktury v C++

BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky

Pokročilé programování v jazyce C pro chemiky (C3220) Úvod do jazyka C++

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Př. další použití pointerů

Např.: // v hlavičkovém souboru nebo na začátku // programu (pod include): typedef struct { char jmeno[20]; char prijmeni[20]; int rok_nar; } CLOVEK;

10 Práce s řetězci - pokračování

Zápis programu v C a základní řídicí struktury

Transkript:

Úvod do předmětu Literatura Záznamy přednášek a vaše poznámky Harbison, S. P., Steele, G. L.: Referenční příručka jazyka C Herout, P.: Učebnice jazyka C Kernighan, B. W., Ritchie, D. M.: The C Programming Language Předpokládané znalosti nutné: o algoritmus, proměnná, přiřazení výraz o řídící struktury o metody parametry, návratová hodnoty výhodné: o metody volání hodnotou a odkazem o pole jako referenční proměnná Cíle číst a psát programy v C s využitím standardních knihoven porozumět pointerům naučit se využít výhod jazyka C a nepodlehnout jeho nevýhodám Poznámky Historie Když něčemu nerozumím, okamžitě se přihlásím předchůdce = jazyk B 1972 Dennis M. Ritchie, AT&T Bell Labs jazyk C (odstranění problémů jazyka B) masový úspěch UNIX přepsán celý do C 1970 1978: K&R Standard ( Pre-ANSI C ) o shrnuto v [Kernighan, Ritchie] 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ší standard ISO/IEC 9899:1999 = C99) 1

+ / jazyka C + multiplatformní pro vše, co má CPU, existuje C kompilátor přenositelný kód pro jednu platformu platný i pro jiné o napříč OS, napříč CPU 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) standardizovaný nebezpečný slabá typová kontrola, nejednoznačná syntaxe nízkoúrovňový Kompilátory pro PC (Intel x86) Intel C compiler GCC (GNU Compiler Collection) o kvalitní, free (GPL licence) nejen C/C++ kompilátor o napříč OS (Windows, Linux, Unix, Solaris,...) o napříč CPU (x86, ARM, AVR, SPARC,...) o 100% C99 kompatibilní Microsoft C/C++ compiler o C99 pouze částečně, ANSI C jen tak tak Kompilátor vs. IDE o IDE pouze frontend kompilátoru 2

První programy Nejjednodušší program Hlavní fce programu OS volá jako první Blok void main(void) Funkce bez parametrů program s předáním informací o svém běhu OS int main(void) return 0; Předána OS lze testovat v dávkových souborech (*.bat) o v MS-DOS proměnná ERRORLEVEL, 0 = OK Program s parametry na příkazovém řádku počet parametrů int main(int argc, char* argv[]) return 0; Pole: parametry na příkazové řádce o Příklad příkazové řádky: C:\adresar\program.exe param1 param2 argc: 3 argv[0]: "C:\adresar\program.exe" argv[1]: "param1" argv[2]: "param2" 3

Hello Word Příkaz preprocesoru: vlož soubor hlavičkový soubor knihovny pro I/O operace #include <stdio.h> int main(int argc, char* argv[]) printf("hello world\n"); return 0; Nebo int main(void)... funkce s knihovny stdio: výstup na stdout odřádkování o hlavičkový soubor (header file), hlavička o stdio = STandarD Input Output o stdout = STandarD OUTput = standardní výstup, obvykle obrazovka ( konzole, příkazový řádek) Zdrojový kód txt soubor (obvykle *.c) bílé znaky: ENTER, mezera, tabelátor... překladač ignoruje Základní syntaxe dle ANSI C case sensitive příkazy ukončeny ; všechna klíčová slova a funkce ze standardní knihovny = malá písmena řetězce "v uvozovkách" znaky v apostrofech 'x' Komentáře začátek /* komentar zapsany na vice radek s vynechanim jednoho radku */ konec 4

/* komentar na jednom radku */ vysledek = a /* promenna */ + b; o nelze vhnízděné komentáře /* aaaa /* bbb */ aaa */ C99 (C++) komentáře navíc // o konec = konec řádku vysledek = a + b; // nejaka operace Klíčová slova 32 slov 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 (Plat, PLAT, plat = různé) význam pouze prvních 31 znaků (zbytek překladačem ignorován) lze použít: aa zz _ 0 až 9 (nesmí být na začátku) Základní datové typy Celočíselné lze pouze short lze pouze long Win32 (Linux) MS-DOS (Turbo C) AVR (GCC) char 8 b 8 b 8 b short int 16 b 16 b 16 b int 32 b 16 b 16 b long int 32 b 32 b 32 b 5

vše buď o unsigned bez znaménka o signed se znaménkem (implicitně, kromě char dle překladače) Reálné shrnutí příklady ekvivalentních zápisů: short = short int = signed short int int = signed int long = long int = signed long int poznámky o C99 long long = 64 b o velikost datových typů vždy platí: char = 8 b unsigned = signed short <= int <= long float 32 b dle IEEE 754, jednoduchá přesnost double 64 b dle IEEE 754, dvojnásobná přesnost long double 64 b Win 32 = double Zjištění velikosti limits.h float.h operátor sizeof(typ) vrací velikost typu v B parametry celočíselných datových typů #define CHAR_BIT 8 /* number of bits in a char */ #define SCHAR_MIN (-128) /* minimum signed char value */ #define SCHAR_MAX 127 /* maximum signed char value */ #define UCHAR_MAX 0xff /* maximum unsigned char value */ parametry reálných datových typů #define DBL_DIG 15 /* # of decimal digits of precision */ #define DBL_EPSILON 2.2204460492503131e-016 /* smallest such that 1.0+DBL_EPSILON!= 1.0 */ #define DBL_MANT_DIG 53 /* # of bits in mantissa */ #define DBL_MAX 1.7976931348623158e+308 /* max value */ #define DBL_MAX_10_EXP 308 /* max decimal exponent */ #define DBL_MAX_EXP 1024 /* max binary exponent */ #define DBL_MIN 2.2250738585072014e-308 /* min positive value */ 6

Zajímavost The International Obfuscated C Code Contest vítězové http://fly.srk.fer.hr/ioccc/winners.html 1998 David Lowe Rozšíření jazyka nad rámec standardů každý kompilátor své vlastní, viz dokumentace Př.: Microsoft specific výjimky v C puts("hello"); try puts("in try"); try puts("in try"); RAISE_AN_EXCEPTION(); finally puts("in finally"); except( puts("in filter"), EXCEPTION_EXECUTE_HANDLER ) puts("in except"); puts("world") 7