1 / 36

Počítače a programování 1

Počítače a programování 1. P řednáška 3 7 .10.2013 Jiří Šebesta. T ÉMA. Číselné soustavy Základní struktura programu Algoritmy Data a proměnné. Číselné soustavy (1/2). Používané soustavy :. Obecná definice vyjádření :. Číselné soustavy (2/2).

cole
Download Presentation

Počítače a programování 1

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Počítače a programování 1 Přednáška 3 7.10.2013 Jiří Šebesta

  2. TÉMA Číselné soustavy Základní struktura programu Algoritmy Data a proměnné

  3. Číselné soustavy (1/2) Používané soustavy : Obecná definice vyjádření :

  4. Číselné soustavy (2/2) Používají se symboly 0 – 9, pro soustavy se základem nad 10 se přidávají písmena z abecedy: např. pro hexadecimální soustavu: A = 10 B = 11 C = 12 D = 13 E = 14 F = 15 Příklad hexadecimálního vyjádření : Číslo 0x3CF0 reprezentuje hodnotu: 3 · 4096 + 12 · 256 + 15 · 16 = 15600

  5. Základní struktura programu (1/10) Jak program v C vytváříme? Co je program? Jazyk symbolických adres = assembler = zčitelněný strojový (spustitelný) kód strojový (spustitelný) kód - instrukce (JSA) = operační kód - operandy (data, adresy)

  6. Základní struktura programu (2/10) komentáře hlavička hlavní funkce //precompiled header files #include <stdio.h>//standard inputs/outputs int main(void) // header of main function { // body of main function char c; // variable declaration printf("ahoj"); // printing fuct. (stdio.h) scanf("%c", &c);//wait until key pressed(stdio.h) return 0; } tělo (definice) funkce vložené hlavičkové soubory knihoven deklarace proměnných volané knihovní funkce příkaz návratu z funkce s předáním návratové hodnoty (0)

  7. Základní struktura programu (3/10) • KONZOLOVÁ APLIKACE (platformově nezávislá) – ANSI C/C++ • APLIKACE PLATFORMOVĚ ZÁVISLÁ (pro konkrétní OS s využitím jeho funkcí, pro konkrétní kontrolér s využitím jeho konkrétních periferií) – rozsáhlé knihovní funkce, např. API, MFC, Active X • Integrovaná vývojová prostředí IDE • – kompletní nástroje pro tvorbu aplikací + průvodci (Wizards) pro nastavení projektu, například v MS Visual Studiu • – open sourcová prostředí, např. Code::Blocks nebo Eclipse nebo CodeLite (není třeba licence) Způsoby řešení aplikací v C/C++:

  8. Základní struktura programu (4/10) nový projekt • Project otevřít už vytvořený projekt projekty pro jednočipy AVR 8 bitový ARM 32 bitový Code::Blocks – náš pracovní nástroj konzolová aplikace = textový výstup v DOS boxu

  9. Nastavení jazyka překladače Základní struktura programu (5/10)

  10. Nastavení jména projektu Základní struktura programu (6/10)

  11. Nastavení kompilátoru Základní struktura programu (7/10) GNU – otevřený svobodný software (pakůň) GCC = GNU Compiler Collection

  12. Debug verze vs. release verze Základní struktura programu (8/10) DEBUG – ladící verze – dokonalé ladění ale neoptimalizováno RELEASE – finální verze – optimalizovaný kód pro distribuci

  13. ladění a spuštění aplikace – menu DEBUG Základní struktura programu (9/10) spustí ladění zastavuje se na ladících zarážkách zastaví ladění (program se může zacyklovat) krokuje v programu podle zdrojáku bez vstupu do funkcí vložení ladící zarážky krokuje v programu včetně vstupu do funkcí, předčasně lze funkci opustit Příklad: Ex01.c

  14. Kde Code::Blocks stáhnout ?? Základní struktura programu (10/10) UŽITEČNÉ CZ WEBY:http://www.fit.vutbr.cz/~martinek/clang/ http://www.sallyx.org/sally/c/codeblocks/

  15. Algoritmus definuje postup činností (operací) „programu“ nad daty Algoritmy (1/6) • Základní rysy algoritmu: Konečnost – algoritmus se skládá z jednotlivých kroků, jejichž počet musí být konečný Vstupy/výstupy – algoritmus musí mít definovaný jednoznačné vstupy a výstupy (data, např. soubor) Determinovanost – algoritmus musí být přesně a jasně definovaný Efektivita – algoritmus musí být efektivní a optimálně využívat možnosti systému, na kterém je prováděn (efektivita z hlediska výkonného času vs. efektivita z hlediska využití operační paměti, příp. velikosti kódu)

  16. Univerzálnost – algoritmus musí být schopen pracovat s požadovanou množinou dat v definovaném rozsahu Algoritmy (2/6) • Základní elementy algoritmu: • Proměnné • Začátek algoritmu • Konec algoritmu • Kroky algoritmu • Podprogramy • Podmínky (binární relace) • Rozhodování • Sekvence • Cykly • Skoky (minimalizovat)

  17. Prostředky pro definicialgoritmu: Algoritmy (3/6) • Slovní – přirozená forma: textový (myšlenkový) návod, vyhláška, zákon – často nepřesná definice, pak převod do programovacího jazyka není možný • Grafický – vývojový diagram – přehledného znázornění složitějších algoritmů včetně větvení pomocí definova-ných značek s popisem a orientovaných spojnic • Symbolický – popis algoritmu pomocí přesně definované syntaxe (klíčová slova programovacího jazyka, který bude využit; metajazyk – generativní gramatika)

  18. Vývojový diagram - značky: Algoritmy (4/6) Začátek/konec algoritmu Ruční vstup Zobrazení výstupu Běžný příkaz Zpracování souboru Podmíněné větvení Uložení dat do souboru Cyklus s určeným počtem opakování Podprogram Cyklus s podmínkou na konci Spojovací značka Cyklus s podmínkou na začátku Spojovací čára

  19. Vývojový diagram - značky: Algoritmy (5/6) Pro program, který vypočítá kořeny libovolné kvadratické rovnice: ax2 + bx + c=0 Hodnoty koeficientů načtěte z konzolového okna. Vyjdou-li kořeny komplexní, vypište chybové hlášení.

  20. Algoritmy (6/6) float a, b, c, y1, y2, r; printf("a =");scanf("%f", &a); printf("b ="); scanf("%f", &b); printf("c ="); scanf("%f", &c); getchar(); r = b*b-4*a*c; if(r>=0) { y1 = (-b+sqrt(fabs(r)))/(2*a); y2 = (-b-sqrt(fabs(r)))/(2*a); printf("\n 1st root: %.3f", y1); printf("\n 2nd root: %.3f", y2); } else printf("\nResult is not real"); Příklad:Ex02.c

  21. Data – vstupní – I (Input), výstupní – O (Output) , pomocná (použité pro mezivýsledky algoritmu) Data a proměnné (1/15) • Zdroje a cíle dat • – soubor (I/O – binární, textový), klávesnice (I), konzola (O), tiskárna (O), komunikační brána (port) (I/O) • - často jsou funkce pro práci se zdroji a cíli dat definovány jako funkce pro práci se souborem • Druhy dat (proměnných) – numerické (celá nebo racionální čísla), znaky a řetězce (řetězec je pole znaků zakončené znakem NULL), pole (jednorozměrná = vektory, vícerozměrná = matice, 3D matice, …), ukazatel (odkaz na pozici v paměti), struktura (definovaná zapouzdřená množina proměnných různých typů)

  22. Proměnná = pojmenované místo v paměti s požadovanou velikostí (v Bytech) • GLOBÁLNÍ– platí v celém programu • LOKÁLNÍ – platí jen v těle dané funkce Data a proměnné (2/15) // precompiled header files #include <stdio.h>// standard inputs and outputs int a = 5; // global variable int main(void) // main function { int b = 10; // local variable char c; printf("global: %d\r\n ", a); printf("local: %d\r\n ", b); scanf("%c ", &c); return 0; } Příklad: Ex03.c

  23. Numerické typy Data a proměnné (3/15)

  24. Numerické typy bez desetinnéčárky pro celá čísla Data a proměnné (4/15) - bezznaménkové (unsigned) - uložení v paměti - znaménkové (signed) - uložení v paměti

  25. Příklad pro unsigned char (8 bitů) Data a proměnné (5/15) • Příklad pro signed char (8 bitů) – standardní vyjádření

  26. Doplňkové kódování • Příklad pro signed char (8 bitů) – doplňkové vyjádření Data a proměnné (6/15) • Od absolutní hodnoty kódo-vaného záporného čísla je ode-čtena jednička, číslo je převede-no do dvojkové soustavy a je provedena jeho negace. • Jednodušší hardware ALU

  27. Numerické typy s desetinnou čárkou pro racionální čísla Data a proměnné (7/15) - uložení v paměti (obecně podle IEEE754 normy) S je hodnota znaménkového bitu E je binární hodnota v exponentu Mje binární hodnota v mantise

  28. Numerické typy s desetinnou čárkou pro racionální čísla Data a proměnné (8/15) Float (4 byty) Double (8 bytů)

  29. Float (4 byty) Data a proměnné (9/15)

  30. Double (8 bytů) Data a proměnné (10/15)

  31. Pole Data a proměnné (11/15) #include"stdio.h" int main( void) { int A[5] = {0, 1, 2, 3, 4}; int B[3][2] = {0, 1, 2, 3, 4, 5}; int i,j; char c; for( i=0; i<5; i++) printf("A[%d] = %d\r\n", i, A[i]); B[0][0] = A[4]; for(i=0; i<3; i++) { for( j=0; j<2; j++) printf("B[%d,%d] = %d\r\n", i, j, B[i][j]); } scanf("%c", &c); return 0; } Příklad: Ex04.c

  32. Data a proměnné (12/15) • NTS (Null Terminated Strings) : posledním znakemnull – spec. znak v C/C++’\0’ • Složky pole:ukazatele na znaky Řetězec: pole znaků (v paměti: 1 byte/znak – kód ASCII)

  33. Data a proměnné (13/15) Řetězec jako pole ASCII kódů znaků v paměti :

  34. Data a proměnné (14/15) \b - backspace BS \f - form feed FF (také clear screen) \n - new line NL \r - carriage return CR \t - horizontal tab HT \v - vertical tab (ne ve všech verzích) \“ - znak uvozovka (ne ve všech verzích) \' - znak apostrof \\ - znak zpětného lomítka\ddd - znak ddd, kde ddd je ASCII kód znaku v oktalové soustavě \xhhh - znak hhh, kde hhh je ASCII kód znaku v hexadecimální soustavě Speciální znaky:

  35. Typy proměnných – ukazatel(= adresa proměnné v paměti) Data a proměnné (15/15) #include <stdio.h> intmain(void) { float x = 3.14, y = 2.27; float* p; // address of float variable p = &x; // address of x to p *p = y; // content of y on address in p return 0; } Příklad: Ex05.c

  36. TÉMA NÁSLEDUJÍCÍ PŘEDNÁŠKY Výrazy Aritmetické konverze Operátory Příkazyif-else a for DĚKUJI ZA POZORNOST

More Related