Programování v C++
Úplnej úvod
Peta (
[email protected], SPR AG 2008-9)
Co se naučíte? ●
tak samozřejmě C++, s důrazem na: ●
dynamické datové struktury
●
Objektově Orientované Programování
●
STL (standardní knihovna šablon)
●
vytváření vlastních šablon
●
●
algoritmizace ●
●
Objektově Orientované Programování (ano, je tu dvakrát, ale to proto, že je nejdůležitější)
= pochopení a použití některých složitějších algoritmů a schopnost vytvářet vlastní a klidně i složitější programy
další s programováním spojené věci ●
Bude upřěsněno podle toho, co a jak a kdy mě napadne:-) Peta (
[email protected], SPR AG 2008-9)
Jak vás oznámkuju? ●
●
●
●
10% malé písemky na počítačích, napsat nebo pochopit kód ~10-30 řádků 40% větší písemka nakonec, možná taky s počítačem, napsat, pochopit a vysvětlit delší a kompilovanější části kódu 50% projekt, což je váš větší program ~stovky řádků, v prvním pololetí určitě každý sám za sebe, v druhém pololetí možná i dohromady... bonusových až 20% za vaši prezentaci o hodinách
Peta (
[email protected], SPR AG 2008-9)
OK, ale jakou známku dostanu? ●
nad 70% jednička
●
60-70% dvojka
●
50-60% trojka
●
stupnice níž neexistuje, řešilo by se individuálně
●
a neklasifikace = neodevzdáte projekt ●
doklasifikace, když ho odevzdáte
Peta (
[email protected], SPR AG 2008-9)
A ještě kde mě najdete: ●
na AG viz rozvrh
●
mailem na
[email protected]
●
Jabber (GTalk, etc) na
[email protected]
●
ICQ # 274247800
●
ofc piště a mailujte když něco potřebujete
●
●
když vám něco není jasný
●
když máte připomínky, nápady, dotazy, atd
nebo můžete nechat komentáře na stránkách předmětu ●
které jsou tak důležité, že jim nechám následující slide Peta (
[email protected], SPR AG 2008-9)
Stránky předmětu
http://peeeta.wordpress.com/category/teaching/spr/
Peta (
[email protected], SPR AG 2008-9)
Teď vážně
Úvod do programování
Peta (
[email protected], SPR AG 2008-9)
Co nás čeká? ●
shrneme si základní teoretické znalosti ●
●
většinu znáte z IVT (pamatujete?)
řekneme si základní vlastnosti C++ ● ●
ještě nebudeme programovat pouze si ukážeme, jak to bude krásné, až programovat budeme:-)
Peta (
[email protected], SPR AG 2008-9)
Nižší a Vyšší Jazyky ●
počítač rozumí jen strojovému kódu (binární čísla) ●
Assembler = čísla strojového kódu nahrazena zkratrkami názvů instrukcí
●
člověk ale potřebuje vyšší míru abstrakce
●
vyšší jazyky tuto abstrakci dovolují ●
●
jenže těm zase nerozumí procesor
je potřeba je nějak přeložit do strojového kódu ●
kompilace
●
interpretace
●
hybridní jazyky Peta (
[email protected], SPR AG 2008-9)
OMG WTF ROFL: (Linux Asm) SECTION
.data msg db len equ
"Hello, world!",0xa ; $ - msg
SECTION
.text global main
main:
mov eax,4 mov ebx,1 mov ecx,msg mov edx,len int 0x80 mov eax,1 mov ebx,0 int 0x80
; write system call ; file (stdou) ; string ; strlen ; call kernel ; exit system call ; call kernel
Peta (
[email protected], SPR AG 2008-9)
Kompilované jazyky ●
●
kompilátor (překladač) je program, který se spustí nad celým zdrojovým kódem. Celý program je tak najednou přeložen do strojového kódu, který pak může být sám o sobě spuštěn výhody: ●
●
nevýhody ●
●
●
vysoká rychlost
dlouhá doba kompilace pro větší projekty (například OS (Linux) v řádu dní na běžném PC) špatná přenositelnost mezi platformami
C/C++, Pascal Peta (
[email protected], SPR AG 2008-9)
Interpretované jazyky ●
●
●
místo programu se spustí interpret, který vezme zdrojový kód programu a jeho aktuální řádek vždy přeloží a spustí výhody ●
výborná přenositelnost
●
odpadá problém zdlouhavé kompilace
nevýhody ●
●
mnohonásobně pomalejší než kompilovaný program
PHP, BASIC, částečně Python
Peta (
[email protected], SPR AG 2008-9)
Hybridní jazyky ●
●
●
●
program je nejprve kompilován do tzv. bytecode (u .NET intermediate language), což je strojový kód pro univerzální počítač (virtual machine) bytecode je pak interpretován na konkrétním hardware (překlad z bytecode do strojového kódu je mnohem snazší než přímo z jazyka) Výhody a nevýhody ●
výborná přenositelnost jako interpretované jazyky
●
není tak pomalé ( v současnosti Java asi 1.2x pomalejší než C)
Java, .NET jazyky (C++, Delphi, C#), částečně Python Peta (
[email protected], SPR AG 2008-9)
Obecně o C++ ●
kompilovaný ●
●
typový ●
●
každý proměnná musí mít přesně definovaný typ, který se za běhu programu nesmí měnit
objektově orientovaný (mimo jiné) ●
●
kromě C++ pro .NET
podporuje vícenásobnou dědičnost
velice volná definice ●
“všechno je dovoleno, jen něco málo je zakázáno”
Peta (
[email protected], SPR AG 2008-9)
Elementy C++ ●
literály (konstanty)
●
operátory
●
identifikátory (jména proměnných a funkcí)
●
klíčová slova
●
komentáře
Peta (
[email protected], SPR AG 2008-9)
Literály (konstanty) ●
●
Čísla ●
1, 45, 10, 0x1f (hexadecimální prefix 0x)
●
1.125
Znaky ●
●
'a', '/n'
řetězce ●
“Ja jsem retezec”
Peta (
[email protected], SPR AG 2008-9)
Operátory ●
●
Unární operátory ●
Jeden vstup a jeden výstup
●
Negace (!), mínus (-)
Binární operátory ●
Dva vstupy a jeden výstup
●
Matematické operátory +,-,*,/, % (zbytek po dělení)
●
Operátor přiřazení = (levé straně pravou)
●
Relační (porovnávací operátory) ● ● ●
Rovná se (==) Nerovná se (!=) Větší, menší, větší rovno, menší rovno (>, <, <=, >=)
Peta (
[email protected], SPR AG 2008-9)
Identifikátory ●
názvy proměnných a funkcí
●
jsou case sensitive (tj. záleží na velikosti písmen)
●
první znak musí být písmeno nebo podrtžítko, další znaky mohou být čísla, písmena, nebo podtržítko
Peta (
[email protected], SPR AG 2008-9)
Klíčová slova ●
●
●
slova rezervovaná jazykem, tedy taková slova, jejichž význam nesmí být předefinován také case sensitive typicky označují řídící struktury programovacího jazyka a control flow operace (další přednáška)
Peta (
[email protected], SPR AG 2008-9)
Komentáře ●
Jednořádkový začíná // a končí s novou řádkou
int i=1; // Tohle je deklarace promenne int j=2; ●
Víceřádkový začíná /* a končí */
int i=1; /* Tohle je deklarace promenne int j=2; porad jsme v komentari */ ●
Komentáře není možné vnořovat
int i=1; /* zacatek 1 /* zacatek 2 konec vsech*/ */
Peta (
[email protected], SPR AG 2008-9)
Oddechněte si, ...
Pro dnešek vše...
Peta (
[email protected], SPR AG 2008-9)