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

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

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

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

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

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

Úvod do programování. Lekce 1

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

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

Algoritmizace a programování

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

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

Úvod do programovacích jazyků (Java)

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

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

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.

Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b

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

Algoritmizace a programování

Jazyk C Program v jazyku C má následující strukturu: konstanty nebo proměnné musí Jednoduché datové typy: Strukturované datové typy Výrazy operátory

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

Formátová specifikace má tvar (některé sekce nemají smysl pro načítání) %

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

Racionální čísla, operátory, výrazy, knihovní funkce

Základy algoritmizace a programování

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Programovací jazyk Pascal

Zápis programu v jazyce C#

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

Opakování programování

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

Racionální čísla, operátory, výrazy, knihovní funkce

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

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

Programovací jazyk C++ Hodina 1

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

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

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

Základy algoritmizace a programování

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

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í

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

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

Jazyk C# a platforma.net

5 Přehled operátorů, příkazy, přetypování

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

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

Výrazy, operace, příkazy

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

Programování v jazyce C pro chemiky (C2160) 9. Práce s PDB soubory

Algoritmizace a programování

Maturitní otázky z předmětu PROGRAMOVÁNÍ

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

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

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

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

Programování v jazyce JavaScript

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

Algoritmizace prostorových úloh

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

Operátory. Základy programování 1 Tomáš Kühr

Algoritmizace a programování

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.

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

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

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

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

Výrazy, operace, příkazy

Objektově orientované programování

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

Počítačové modelování

Struktura programu a základní prvky

První začátky s C. Struktura programu a základní prvky. Základní termíny (1) Základní termíny (2)

Algoritmizace a programování

Algoritmizace a programování

Datové typy strana 29

Funkce, intuitivní chápání složitosti

Název předmětu: Školní rok: Forma studia: Studijní obory: Ročník: Semestr: Typ předmětu: Rozsah a zakončení předmětu:

Znaky. IAJCE Přednáška č. 10. každému znaku je nutné přiřadit nějaké číslo (nezáporné přímé mapování znak <->

Část I. Část 1 Základy programování v C. Přehled témat. Základy programování v C. Jazyk C

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

Základy programování v C

Paměť počítače. alg2 1

7. Datové typy v Javě

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

Standardní vstup a výstup

Programovanie v jazyku C - ti to zratam...

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Inovace bakalářského studijního oboru Aplikovaná chemie

ALGORITMIZACE A PROGRAMOVÁNÍ

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

Data, výrazy, příkazy

Základy programování v C

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

- speciální symboly + - * / =., < > <> <= >= a další. Klíčová slova jsou chráněnými útvary, které nelze použít ve významu identifikátorů.

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

Sada 1 - PHP. 03. Proměnné, konstanty

Úvod do jazyka C. Zdroje: Herout: Učebnice jazyka C, Kopp, České Budějovice, 2001 Schildt H: Nauč se sám C, Softpress, Praha, 2001

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

Algoritmizace a programování

Transkript:

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

Vladimír Beneš Petrovický K101 katedra matematiky, statistiky a informačních technologií vedoucí katedry E-mail: vbenes@bivs.cz Telefon: 251 114 534, 731 425 276 Konzultační hodiny: středa 14:00 16:00 Ak. rok 2012/2013 vbp 2. ze 44

Hodinová dotace Prezenční studium 1 semestr 2/2 KZ 6 kreditů Kombinované studium 1 semestr 12/4 KZ 6 kreditů Ak. rok 2012/2013 vbp 3. ze 44

Požadavky ke klasifikovanému zápočtu Prezenční studium Kombinované studium Kompletní vypracování dané úlohy (přihlášení v ISu) Analýza úlohy Algoritmizace Odladěný zdrojový kód programu v jazyce C++ Ak. rok 2012/2013 vbp 4. ze 44

Studijní literatura Literatura základní HEROUT, Pavel. Učebnice jazyka C. České Budějovice : Kopp, 1997. ISBN 80-85828-21-9. BENEŠ, Vladimír. Algoritmizace a programování. Elektronická studijní opora. Praha : BIVŠ, 2011. PRATA, Stephen. Mistrovství v C++. Brno : Computer Press, 2004. ISBN 80-251-0098-7. Literatura doporučená KADLEC, Václav. Učíme se programovat v jazyce C. Praha : Computer Press, 2002. ISBN 80-7226-715-9. MILKOVÁ, E. a kol. Algoritmy, základní konstrukce v příkladech a jejich vizualizace. Hradec Králové : Gaudeamus, 2010. KNUTH, Donald, E. Umění programování.1. díl, Základní algoritmy. Brno : Computer Press, 2008,. ISBN 978-80-251-2025-5. Ak. rok 2012/2013 vbp 5. ze 44

Obsah Algoritmizace Algoritmus Zápis algoritmu Některé základní algoritmy Programování Historie jazyka C/C++ Syntaxe základních příkazů jazyka C++ Programovací prostředí Ladění úlohy Ak. rok 2012/2013 vbp 6. ze 44

II Programování 1 Ak. rok 2012/2013 vbp 7. ze 44

PROGRAMOVÁNÍ 1 C/C++ Ak. rok 2012/2013 vbp 8. ze 44

Programování je proces zahrnující činnosti od: návrhu algoritmu, psaní, testování a ladění zdrojového kódu počítačového programu, včetně následné údržby. Ak. rok 2012/2013 vbp 9. ze 44

Zpracování programu Algoritmizace a programování Start EDITOR 1 Moduly.OBJ relativních adres Knihovní moduly.lib Protokol.LST Zdrojový kód.c PREPROCESOR COMPILER? 1 ano ne LINKER ne? Program.EXE ne? ano ano Stop DEBUGGER Ak. rok 2012/2013 vbp 10. ze 44

Jednotlivé programy, kterými je zdrojový text zpracován (1) Editor Preprocesor Compiler Příprava a opravy zdrojového textu (soubor.c) Součást překladače, předzpracovává (upravuje) zdrojový soubor pro kompilátor Překládá zdrojový soubor do relativního kódu počítače (adresy proměnných a funkcí nejsou ještě známy a jsou zapsány v.obj souboru relativně). Vedlejším produktem je soubor.lis (protokol). Ak. rok 2012/2013 vbp 11. ze 44

Jednotlivé programy, kterými je zdrojový text zpracován (2) Linker Debugger Sestavovací program přiřadí relativním adresám adresy absolutní a provede všechny odkazy na dosud neznámé identifikátory (např. knihovní funkce volané z knihovního souboru.lib). Výsledkem práce linkeru je spustitelný soubor.exe Ladící program slouží pro ladění, tj. nalézání chyb, které nastávají při běhu programu ( odvšivovač ). Ak. rok 2012/2013 vbp 12. ze 44

Základní pojmy v jazyce C/C++ Zdrojové a hlavičkové soubory zdrojový soubor.c nutno doplnit vložením souborů hlavičkové soubory (header).h #include <stdio.h> #include <conio.h> #include <math.h> Ak. rok 2012/2013 vbp 13. ze 44

Základní pojmy v jazyce C/C++ Štábní kultura snadná orientace ve zdrojovém textu programu bílé znaky (white spaces) = oddělovací znaky mezera tabelátor nový řádek Ak. rok 2012/2013 vbp 14. ze 44

Základní pojmy v jazyce C/C++ Identifikátory jazyk C je case sensitive jazyk rozlišují se malá a velká písmena prom, Prom, PROM klíčová slova (if, for, ) musí být malými písmeny je možné používat podtržítko _ (_prom, prom_x, prom_) délka identifikátoru není omezena (ANSI C rozeznává 32 znaků) Ak. rok 2012/2013 vbp 15. ze 44

Základní pojmy v jazyce C/C++ Štábní kultura běžně používané významové identifikátory i j k - indexy, parametry cyklů c ch - znaky m n - čítače f r - reálná čísla p_ - začátek identifikátoru pointeru (ukazatel) s - řetězec Ak. rok 2012/2013 vbp 16. ze 44

Základní pojmy v jazyce C/C++ Komentáře přehlednost programu (ale i ladící prvek) nedoplňovat komentáře, až zbude čas // jednořádkový komentář /* toto je komentář blokový */ /* toto je komentář /* toto je vložený komentář*/ */ /* * výrazný víceřádkový komentář */ Ak. rok 2012/2013 vbp 17. ze 44

Jednoduché datové typy a přiřazení Pascal INTEGER CHAR REAL C int long int short int char float double log double Ak. rok 2012/2013 vbp 18. ze 44

Jednoduché datové typy a přiřazení Definice proměnných příkaz, který udělí proměnné určitého typu jméno a paměť globální (vně funkce) lokální (uvnitř funkce) Deklarace proměnných příkaz, který pouze udává typ proměnné a její jméno Ak. rok 2012/2013 vbp 19. ze 44

Jednoduché datové typy a přiřazení Definice proměnných Pascal C VAR i : INTEGER; int i; c : CHAR; char c, ch; f, g : REAL; float f, g; Ak. rok 2012/2013 vbp 20. ze 44

Jednoduché datové typy a přiřazení Definice proměnných int i; /* globální proměnná */ main() { int j; /* lokální proměnná */ } Ak. rok 2012/2013 vbp 21. ze 44

Jednoduché datové typy a přiřazení Přiřazení česky anglicky symbolicky prakticky výraz expression výraz i * 2 + 3 přiřazení assigment l-hodnota = výraz j = i * 2 + 3 příkaz statement l-hodnota = výraz; j = i * 2 + 3; Ak. rok 2012/2013 vbp 22. ze 44

Jednoduché datové typy a přiřazení Několikanásobné přiřazení k = j = i = 2; vyhodnocuje se zprava doleva, tedy: k = (j = (i = 2)); Ak. rok 2012/2013 vbp 23. ze 44

Hlavní program (= hlavní funkce) main() /* bez středníku!!! */ { int i, j; } i = 5; j = -1; j = j +2 * i; Ak. rok 2012/2013 vbp 24. ze 44

Hlavní program (= hlavní funkce) TÉŽ MOŽNO inicializovat proměnné přímo v definici main() /* bez středníku!!! */ { int i = 5, j = -1; } j = j +2 * i; Ak. rok 2012/2013 vbp 25. ze 44

Konstanty Celočíselné dekadické (posloupnost číslic, z nichž první nesmí být 0) oktalové (číslice 0 následovaná posl. oktal. číslic (0 7) hexadecimální (číslice 0 následovaná zankem x (nebo X) a posloupností hexadecimálních číslic (0 9, a f, A F) dekadické 15, 0, 1 oktalové 065, 015, 0, 01 hexadecimální 0x12, 0X3A, 0x0, 0x1, 0Xcd Ak. rok 2012/2013 vbp 26. ze 44

Konstanty Reálné mohou začínat a končit tečkou implicitně jsou typu double 15. 156.88.84 3.14 5e6 7E23 konstanta typu float se definuje pomocí přípony f (nebo F) 3.14f (nebo 3.14F) konstanta typu log double se definuje pomocí přípony l (nebo L) 12e3 (nebo 12E3) Ak. rok 2012/2013 vbp 27. ze 44

Konstanty Znakové hodnota znakové konstanty (ordinální číslo) je odvozena z odpovídající kódové tabulky (ASCII) velikost znakové konstanty je typu int (ne char) jsou uzavřeny mezi apostrofy a * 4 zápis neviditelné konstanty \012 \007 (tzv. escape sekvence) Ak. rok 2012/2013 vbp 28. ze 44

Konstanty Escape sekvence sekvence hodnota význam \n 0x0A new line (nová řádka) \r 0x0D carriage return (návrat na zač. ř.) \f 0x0C formfeed (nová řádka) \t 0x09 tabulátor \b 0x08 backspace (posun doleva) \a 0x07 BELL (písknutí) Ak. rok 2012/2013 vbp 29. ze 44

Konstanty Escape sekvence sekvence hodnota význam \\ 0x5C backslash (zpětné lomítko) \ 0x2C single quote (apostrof) \0 0x00 nul character NUL (nulový zn.) Poznámka: NUL není NULL (nulový pointer) Ak. rok 2012/2013 vbp 30. ze 44

Konstanty Řetězcové konstanty (literály) v řetězcových konstantách se používá pro zobrazení znaku uvozovky (double quote) escape sekvence \ ale uvozovky jako znaková konstanta: Toto je řetězcová konstanta Ak. rok 2012/2013 vbp 31. ze 44

Konstanty Řetězcové konstanty (literály) ekvivalentní zápis dlouhé řetězcové konstanty Velmi dlouhý řetězec znaků Velmi dlouhý řetězec znaků Velmi dlouhý řetězec znaků Ak. rok 2012/2013 vbp 32. ze 44

Aritmetické výrazy Výraz ukončený středníkem se stává příkazem!!! i = 2 výraz s přiřazením i = 2; příkaz pouhý středník = prázdný příkaz (null statement) pozor na použití v příkazech cyklu for nebo while Ak. rok 2012/2013 vbp 33. ze 44

Aritmetické výrazy Unární operátory unární plus + unární mínus - oba operátory se používají v běžném významu Ak. rok 2012/2013 vbp 34. ze 44

Aritmetické výrazy Binární operátory sčítání + odčítání - násobení * reálné dělení / celočíselné dělení / (záleží na typu operandů) dělení modulo % Ak. rok 2012/2013 vbp 35. ze 44

Aritmetické výrazy Speciální unární operátory inkrement ++ dekrement -- Pozor: výraz musí být l-hodnota, tedy proměnná nelze tedy 45++ --(i + j) Ak. rok 2012/2013 vbp 36. ze 44

Aritmetické výrazy Speciální unární operátory oba operátory se dají použít jako předpona (prefix) i jako přípona (surfix) ++výraz (inkrementování před použitím) výraz je nejprve zvětšen o 1 a pak je nová hodnota vrácena jako hodnota výrazu výraz++ (inkrementování po použití) je vrácena původní hodnota výrazu a pak je výraz zvětšen o 1 Ak. rok 2012/2013 vbp 37. ze 44

Aritmetické výrazy Speciální unární operátory např.: int i = 5, j = 1, k; i++; i bude 6 j = ++i; j bude 7, i bude 7 j = i++; j bude 7, i bude 8 k = --j + 2; k bude 8, j bude 6 (i bude 8) Ak. rok 2012/2013 vbp 38. ze 44

Terminálový vstup a výstup Vstup a výstup znaku nutný hlavičkový soubor stdio.h #include <stdio.h> funkce putchar() výstup jednoho znaku funkce getchar() vstup jednoho znaku Ak. rok 2012/2013 vbp 39. ze 44

Terminálový vstup a výstup #include <stdio.h> // vstup a výstup znaku PŘÍKLAD void main() { int c; } c = getchar(); putchar(c); putchar( \n ); Ak. rok 2012/2013 vbp 40. ze 44

Formátovaný vstup a výstup funkce scanf() pro formátovaný vstup funkce printf() pro formátovaný výstup proměnný počet parametrů (1x řídící řetězec formátu a seznam proměnných) Ak. rok 2012/2013 vbp 41. ze 44

Formátovaný vstup a výstup řídící řetězec formátu obsahuje formátové specifikace začínají znakem % určují formát vstupu, resp. výstupu znakové posloupnosti nezačínají znakem % vypíší se tak, jak jsou zapsány je možné použít českou diakritiku používají se pouze pro funkci printf() Ak. rok 2012/2013 vbp 42. ze 44

Formátovaný vstup a výstup formátové specifikace uváděné se znakem % 1 c znak d dekadické číslo signed int ld dekadické číslo signed log u dekadické číslo unsigned int lu dekadické číslo unsigned log f float lf double Lf log double Ak. rok 2012/2013 vbp 43. ze 44

Formátovaný vstup a výstup formátové specifikace uváděné se znakem % 2 x X o s hexadecimální číslo malými písmeny (1a2c) hexadecimální číslo velkými písmeny (1A2C) oktalové číslo řetězec (string) i int Ak. rok 2012/2013 vbp 44. ze 44

Formátovaný vstup a výstup PŘÍKLAD float a, b, c; printf( \n Řešíme kvadratickou rovnici ); printf( \n Zadej parametry a, b, c: ); scanf ( %f %f %f, &a, &b, &c);!!! operátor &, resp. jsou tzv. bitové operátory Ak. rok 2012/2013 vbp 45. ze 44

Děkuji za pozornost Ak. rok 2012/2013 vbp 46. ze 44