Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
Základy algoritmizace a programování Pˇrednáška 1 Olga Majlingová ˇ Katedra matematiky, CVUT v Praze
21. záˇrí 2009
OM
ZAPG
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
Obsah
1
Úvodní informace
2
Algoritmus a algoritmizace
3
Od algoritmu k programu
4
Jazyk C
OM
ZAPG
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
ˇ Organizace pˇredmetu
Pˇrednášky 1. – 5. Základní konstrukce C 6. – 8. Numerické algoritmy ˇ 9. – 12. Nekteré konstrukce MATLABu
Cviˇcení Navazují na pˇrednášky.
OM
ZAPG
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
Klasifikovaný zápoˇcet
ˇ Podmínky udelení zápoˇctu: hodnocení E : První test hodnocení D,C : + Druhý test hodnocení B,A : + Semestrální práce
OM
ZAPG
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
Klasifikovaný zápoˇcet
ˇ Podmínky udelení zápoˇctu: hodnocení E : První test hodnocení D,C : + Druhý test hodnocení B,A : + Semestrální práce
OM
ZAPG
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
Klasifikovaný zápoˇcet
ˇ Podmínky udelení zápoˇctu: hodnocení E : První test hodnocení D,C : + Druhý test hodnocení B,A : + Semestrální práce
OM
ZAPG
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
Doporuˇcená literatura
web: http://marian.fsik.cvut.cz/ ˜ zapg ˇ Resumé pˇrednášek, informace k pˇredmetu, aktuální informace... Herout, P.:Uˇcebnice jazyka C Kernighan, B.W., Ritchie, D.M. Programovací jazyk C
OM
ZAPG
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
ˇ Cíle pˇredmetu
být schopen cˇ íst a psát jednoduché programy v C ˇ základním konstrukcím jayzka C a umet ˇ je použít rozumet být schopen použít MATLAB pro ˇrešení jednoduchých úloh
OM
ZAPG
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
Algoritmus
Tvoˇríme-li program, musíme nejprve sami znát podrobný postup neboli algoritmus ˇrešení úlohy. Algoritmus chápeme jako pˇresný popis výpoˇctového procesu, ˇ který vede od menitelných výchozích údaju˚ k požadovanému výsledku. Algoritmus má formu posloupnosti jednoduchých pravidel elementárních kroku˚ (operací). Kroky algoritmu musí být tak podrobné, aby byly srozumitelné tomu, kdo má podle algoritmu postupovat.
OM
ZAPG
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
Algoritmizace a programování ˇ Program pro poˇcítaˇc musí splnovat všechny znaky algoritmu. K zápisu programu se používá programovací jazyk. Pˇrípravu ˇ programu obvykle delíme na dveˇ etapy: Algoritmizace ˇ V prub ˚ ehu analýzy úlohy nebo po jejím ukonˇcení sestavíme algoritmus ˇrešení, který mužeme ˚ znázornit napˇr. graficky, napˇr. ve formeˇ vývojového diagramu. Programování Podle zápisu algoritmu sestavíme program v programovacím jazyku.
OM
ZAPG
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
Algoritmizace Pˇri algoritmizaci pro poˇcítaˇc cˇ leníme postup ˇrešení úlohy na tak podrobné kroky (operace), aby šly jednoduše vyjádˇrit programovacím jazykem. Pˇri ˇrešení numerických úloh jde o operace: výpoˇcet hodnoty aritmetického výrazu, kde se smí ˇ vyskytovat operace sˇcítání, odˇcítání, násobení, delení a výpoˇcty hodnot elementárních funkcí (sin x, log x, x n , ax ) srovnání dvou hodnot podle velikosti, tj. rozhodnutí o ˇ pravdivosti relací rovno, nerovno, vetší, menší urˇcení pravdivostní hodnoty logického výrazu, k jehož sestavení bylo užito logických spojek konjunkce, disjunkce, negace ˇ pˇriˇrazení hodnoty promenné OM
ZAPG
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
ˇ Promenné a konstanty ˇ ˇ Konstanty: hodnoty, které se v prub ˚ ehu výpoˇctu nemení. Napˇr. cˇ ísla ... 1, 1.2, 2.718281828 nebo pojmenované konstanty (π) ˇ ˇ ˇ Promenné:pam et’ová místa, oznaˇcená jménem promenné (identifikátorem) jednoduché: kam se vejde jedna hodnota. v: p: ˇ složené: kam se vejde nekolik hodnot. OM
ZAPG
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
Pˇríklad algoritmizace Úloha: Urˇcit, zda pˇrirozené cˇ íslo N je prvoˇcíslo. Vstupní data: cˇ íslo N. Výstupní data (výsledek): ANO nebo NE.
ˇ et, ˇ že pˇrirozené cˇ íslo je prvoˇcíslo Musíme ved ˇ když má práveˇ 2 delitele: jedniˇcku a samo sebe.
ˇ Také víme, že cˇ íslo a je delitelné cˇ íslem b, ˇ když zbytek po delení je nula.
OM
ZAPG
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
Analyzujeme úlohu 1. pˇreˇcteme N ˇ 2. zjistíme zbytek po po delení cˇ ísla N cˇ íslem 2 3. když je zbytek 0, máme výsledek: NE, konˇcíme v opaˇcném pˇrípadeˇ pokraˇcujeme ˇ 4. zjistíme zbytek po po delení cˇ ísla N cˇ íslem 3 5. když je zbytek 0, máme výsledek: NE, konˇcíme v opaˇcném pˇrípadeˇ pokraˇcujeme ... ˇ zjistíme zbytek po delení cˇ ísla N cˇ íslem K když je zbytek 0, máme výsledek: NE, konˇcíme v opaˇcném pˇrípadeˇ pokraˇcujeme ... jak dlouho? OM
ZAPG
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
ˇ Algoritmus (není dokonalý! PROC?) 1. Pˇreˇcteme N. Pˇrejdeme ke kroku 2. 2. Když N je rovno 2 pˇrejdeme ke kroku 8, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 3. ˇ 3. Když zbytek po delení cˇ ísla N cˇ íslem 2 je 0 pˇrejdeme ke kroku 9, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 4. ˇ 4. Promenné K pˇriˇradíme 3. Pˇrejdeme ke kroku 5. ˇ 5. Když zbytek po delení cˇ ísla N cˇ íslem K je 0 pˇrejdeme ke kroku 9, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 6. ˇ 6. Hodnotu K zvetšíme o 2. Pˇrejdeme ke kroku 7. 7. Když je pravdivé : K ∗ K < N pˇrejdeme ke kroku 5, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 8. 8. Tiskneme ANO. Pˇrejdeme ke kroku 10. 9. Tiskneme NE. Pˇrejdeme ke kroku 10. OM ZAPG 10. KONEC
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
ˇ Algoritmus (není dokonalý! PROC?) 1. Pˇreˇcteme N. Pˇrejdeme ke kroku 2. 2. Když N je rovno 2 pˇrejdeme ke kroku 8, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 3. ˇ 3. Když zbytek po delení cˇ ísla N cˇ íslem 2 je 0 pˇrejdeme ke kroku 9, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 4. ˇ 4. Promenné K pˇriˇradíme 3. Pˇrejdeme ke kroku 5. ˇ 5. Když zbytek po delení cˇ ísla N cˇ íslem K je 0 pˇrejdeme ke kroku 9, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 6. ˇ 6. Hodnotu K zvetšíme o 2. Pˇrejdeme ke kroku 7. 7. Když je pravdivé : K ∗ K < N pˇrejdeme ke kroku 5, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 8. 8. Tiskneme ANO. Pˇrejdeme ke kroku 10. 9. Tiskneme NE. Pˇrejdeme ke kroku 10. OM ZAPG 10. KONEC
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
ˇ Algoritmus (není dokonalý! PROC?) 1. Pˇreˇcteme N. Pˇrejdeme ke kroku 2. 2. Když N je rovno 2 pˇrejdeme ke kroku 8, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 3. ˇ 3. Když zbytek po delení cˇ ísla N cˇ íslem 2 je 0 pˇrejdeme ke kroku 9, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 4. ˇ 4. Promenné K pˇriˇradíme 3. Pˇrejdeme ke kroku 5. ˇ 5. Když zbytek po delení cˇ ísla N cˇ íslem K je 0 pˇrejdeme ke kroku 9, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 6. ˇ 6. Hodnotu K zvetšíme o 2. Pˇrejdeme ke kroku 7. 7. Když je pravdivé : K ∗ K < N pˇrejdeme ke kroku 5, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 8. 8. Tiskneme ANO. Pˇrejdeme ke kroku 10. 9. Tiskneme NE. Pˇrejdeme ke kroku 10. OM ZAPG 10. KONEC
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
ˇ Algoritmus (není dokonalý! PROC?) 1. Pˇreˇcteme N. Pˇrejdeme ke kroku 2. 2. Když N je rovno 2 pˇrejdeme ke kroku 8, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 3. ˇ 3. Když zbytek po delení cˇ ísla N cˇ íslem 2 je 0 pˇrejdeme ke kroku 9, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 4. ˇ 4. Promenné K pˇriˇradíme 3. Pˇrejdeme ke kroku 5. ˇ 5. Když zbytek po delení cˇ ísla N cˇ íslem K je 0 pˇrejdeme ke kroku 9, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 6. ˇ 6. Hodnotu K zvetšíme o 2. Pˇrejdeme ke kroku 7. 7. Když je pravdivé : K ∗ K < N pˇrejdeme ke kroku 5, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 8. 8. Tiskneme ANO. Pˇrejdeme ke kroku 10. 9. Tiskneme NE. Pˇrejdeme ke kroku 10. OM ZAPG 10. KONEC
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
ˇ Algoritmus (není dokonalý! PROC?) 1. Pˇreˇcteme N. Pˇrejdeme ke kroku 2. 2. Když N je rovno 2 pˇrejdeme ke kroku 8, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 3. ˇ 3. Když zbytek po delení cˇ ísla N cˇ íslem 2 je 0 pˇrejdeme ke kroku 9, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 4. ˇ 4. Promenné K pˇriˇradíme 3. Pˇrejdeme ke kroku 5. ˇ 5. Když zbytek po delení cˇ ísla N cˇ íslem K je 0 pˇrejdeme ke kroku 9, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 6. ˇ 6. Hodnotu K zvetšíme o 2. Pˇrejdeme ke kroku 7. 7. Když je pravdivé : K ∗ K < N pˇrejdeme ke kroku 5, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 8. 8. Tiskneme ANO. Pˇrejdeme ke kroku 10. 9. Tiskneme NE. Pˇrejdeme ke kroku 10. OM ZAPG 10. KONEC
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
ˇ Algoritmus (není dokonalý! PROC?) 1. Pˇreˇcteme N. Pˇrejdeme ke kroku 2. 2. Když N je rovno 2 pˇrejdeme ke kroku 8, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 3. ˇ 3. Když zbytek po delení cˇ ísla N cˇ íslem 2 je 0 pˇrejdeme ke kroku 9, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 4. ˇ 4. Promenné K pˇriˇradíme 3. Pˇrejdeme ke kroku 5. ˇ 5. Když zbytek po delení cˇ ísla N cˇ íslem K je 0 pˇrejdeme ke kroku 9, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 6. ˇ 6. Hodnotu K zvetšíme o 2. Pˇrejdeme ke kroku 7. 7. Když je pravdivé : K ∗ K < N pˇrejdeme ke kroku 5, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 8. 8. Tiskneme ANO. Pˇrejdeme ke kroku 10. 9. Tiskneme NE. Pˇrejdeme ke kroku 10. OM ZAPG 10. KONEC
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
ˇ Algoritmus (není dokonalý! PROC?) 1. Pˇreˇcteme N. Pˇrejdeme ke kroku 2. 2. Když N je rovno 2 pˇrejdeme ke kroku 8, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 3. ˇ 3. Když zbytek po delení cˇ ísla N cˇ íslem 2 je 0 pˇrejdeme ke kroku 9, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 4. ˇ 4. Promenné K pˇriˇradíme 3. Pˇrejdeme ke kroku 5. ˇ 5. Když zbytek po delení cˇ ísla N cˇ íslem K je 0 pˇrejdeme ke kroku 9, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 6. ˇ 6. Hodnotu K zvetšíme o 2. Pˇrejdeme ke kroku 7. 7. Když je pravdivé : K ∗ K < N pˇrejdeme ke kroku 5, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 8. 8. Tiskneme ANO. Pˇrejdeme ke kroku 10. 9. Tiskneme NE. Pˇrejdeme ke kroku 10. OM ZAPG 10. KONEC
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
ˇ Algoritmus (není dokonalý! PROC?) 1. Pˇreˇcteme N. Pˇrejdeme ke kroku 2. 2. Když N je rovno 2 pˇrejdeme ke kroku 8, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 3. ˇ 3. Když zbytek po delení cˇ ísla N cˇ íslem 2 je 0 pˇrejdeme ke kroku 9, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 4. ˇ 4. Promenné K pˇriˇradíme 3. Pˇrejdeme ke kroku 5. ˇ 5. Když zbytek po delení cˇ ísla N cˇ íslem K je 0 pˇrejdeme ke kroku 9, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 6. ˇ 6. Hodnotu K zvetšíme o 2. Pˇrejdeme ke kroku 7. 7. Když je pravdivé : K ∗ K < N pˇrejdeme ke kroku 5, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 8. 8. Tiskneme ANO. Pˇrejdeme ke kroku 10. 9. Tiskneme NE. Pˇrejdeme ke kroku 10. OM ZAPG 10. KONEC
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
ˇ Algoritmus (není dokonalý! PROC?) 1. Pˇreˇcteme N. Pˇrejdeme ke kroku 2. 2. Když N je rovno 2 pˇrejdeme ke kroku 8, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 3. ˇ 3. Když zbytek po delení cˇ ísla N cˇ íslem 2 je 0 pˇrejdeme ke kroku 9, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 4. ˇ 4. Promenné K pˇriˇradíme 3. Pˇrejdeme ke kroku 5. ˇ 5. Když zbytek po delení cˇ ísla N cˇ íslem K je 0 pˇrejdeme ke kroku 9, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 6. ˇ 6. Hodnotu K zvetšíme o 2. Pˇrejdeme ke kroku 7. 7. Když je pravdivé : K ∗ K < N pˇrejdeme ke kroku 5, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 8. 8. Tiskneme ANO. Pˇrejdeme ke kroku 10. 9. Tiskneme NE. Pˇrejdeme ke kroku 10. OM ZAPG 10. KONEC
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
ˇ Algoritmus (není dokonalý! PROC?) 1. Pˇreˇcteme N. Pˇrejdeme ke kroku 2. 2. Když N je rovno 2 pˇrejdeme ke kroku 8, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 3. ˇ 3. Když zbytek po delení cˇ ísla N cˇ íslem 2 je 0 pˇrejdeme ke kroku 9, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 4. ˇ 4. Promenné K pˇriˇradíme 3. Pˇrejdeme ke kroku 5. ˇ 5. Když zbytek po delení cˇ ísla N cˇ íslem K je 0 pˇrejdeme ke kroku 9, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 6. ˇ 6. Hodnotu K zvetšíme o 2. Pˇrejdeme ke kroku 7. 7. Když je pravdivé : K ∗ K < N pˇrejdeme ke kroku 5, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 8. 8. Tiskneme ANO. Pˇrejdeme ke kroku 10. 9. Tiskneme NE. Pˇrejdeme ke kroku 10. OM ZAPG 10. KONEC
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
ˇ Algoritmus (není dokonalý! PROC?) 1. Pˇreˇcteme N. Pˇrejdeme ke kroku 2. 2. Když N je rovno 2 pˇrejdeme ke kroku 8, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 3. ˇ 3. Když zbytek po delení cˇ ísla N cˇ íslem 2 je 0 pˇrejdeme ke kroku 9, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 4. ˇ 4. Promenné K pˇriˇradíme 3. Pˇrejdeme ke kroku 5. ˇ 5. Když zbytek po delení cˇ ísla N cˇ íslem K je 0 pˇrejdeme ke kroku 9, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 6. ˇ 6. Hodnotu K zvetšíme o 2. Pˇrejdeme ke kroku 7. 7. Když je pravdivé : K ∗ K < N pˇrejdeme ke kroku 5, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 8. 8. Tiskneme ANO. Pˇrejdeme ke kroku 10. 9. Tiskneme NE. Pˇrejdeme ke kroku 10. OM ZAPG 10. KONEC
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
ˇ Algoritmus (není dokonalý! PROC?) 1. Pˇreˇcteme N. Pˇrejdeme ke kroku 2. 2. Když N je rovno 2 pˇrejdeme ke kroku 8, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 3. ˇ 3. Když zbytek po delení cˇ ísla N cˇ íslem 2 je 0 pˇrejdeme ke kroku 9, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 4. ˇ 4. Promenné K pˇriˇradíme 3. Pˇrejdeme ke kroku 5. ˇ 5. Když zbytek po delení cˇ ísla N cˇ íslem K je 0 pˇrejdeme ke kroku 9, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 6. ˇ 6. Hodnotu K zvetšíme o 2. Pˇrejdeme ke kroku 7. 7. Když je pravdivé : K ∗ K < N pˇrejdeme ke kroku 5, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 8. 8. Tiskneme ANO. Pˇrejdeme ke kroku 10. 9. Tiskneme NE. Pˇrejdeme ke kroku 10. OM ZAPG 10. KONEC
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
ˇ Algoritmus (není dokonalý! PROC?) 1. Pˇreˇcteme N. Pˇrejdeme ke kroku 2. 2. Když N je rovno 2 pˇrejdeme ke kroku 8, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 3. ˇ 3. Když zbytek po delení cˇ ísla N cˇ íslem 2 je 0 pˇrejdeme ke kroku 9, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 4. ˇ 4. Promenné K pˇriˇradíme 3. Pˇrejdeme ke kroku 5. ˇ 5. Když zbytek po delení cˇ ísla N cˇ íslem K je 0 pˇrejdeme ke kroku 9, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 6. ˇ 6. Hodnotu K zvetšíme o 2. Pˇrejdeme ke kroku 7. 7. Když je pravdivé : K ∗ K < N pˇrejdeme ke kroku 5, v opaˇcném pˇrípadeˇ pˇrejdeme ke kroku 8. 8. Tiskneme ANO. Pˇrejdeme ke kroku 10. 9. Tiskneme NE. Pˇrejdeme ke kroku 10. OM ZAPG 10. KONEC
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
Testování algoritmu
Zvolíme si cˇ íslo N = ... a budeme postupovat podle uvedeného algoritmu. Jaká N jsou vhodná? Najdeme nedokonalosti?
OM
ZAPG
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
Od algoritmu k programu myšlenka
algoritmus
6 ?
editor 6
-
pˇrekladaˇc
gramatika
-
linker
funkce
?
?
OM
ZAPG
-
OS
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
Od algoritmu k programu myšlenka
algoritmus
6 ?
editor 6
-
pˇrekladaˇc
gramatika
-
linker
funkce
?
?
OM
ZAPG
-
OS
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
Od algoritmu k programu myšlenka
algoritmus
6 ?
editor 6
-
pˇrekladaˇc
gramatika
-
linker
funkce
?
?
OM
ZAPG
-
OS
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
Od algoritmu k programu myšlenka
algoritmus
6 ?
editor 6
-
pˇrekladaˇc
gramatika
-
linker
funkce
?
?
OM
ZAPG
-
OS
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
Od algoritmu k programu myšlenka
algoritmus
6 ?
editor 6
-
pˇrekladaˇc
gramatika
-
linker
funkce
?
?
OM
ZAPG
-
OS
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
Od algoritmu k programu myšlenka
algoritmus
6 ?
editor 6
-
pˇrekladaˇc
gramatika
-
linker
funkce
?
?
OM
ZAPG
-
OS
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
Od algoritmu k programu myšlenka
algoritmus
6 ?
editor 6
-
pˇrekladaˇc
gramatika
-
linker
funkce
?
?
OM
ZAPG
-
OS
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
Od algoritmu k programu myšlenka
algoritmus
6 ?
editor 6
-
pˇrekladaˇc
gramatika
-
linker
funkce
?
?
OM
ZAPG
-
OS
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
Jazyk C Zápis programu: prostý textový soubor (ASCII) mezery, tabulátory,... pˇrekladaˇc ignoruje mezery a tabulátory slouží ke zvýšení cˇ itelnosti – nešetˇrit mezerami! pˇríkazy se ukonˇcují stˇredníkem IDENTIFIKÁTORY (jména) : pouze aA..zZ, _ , cˇ íslice 0..9 nesmí zaˇcínat cˇ íslicí rozlišují se velká a malá písmena !!! (id, Id, ID jsou 3 ruzné ˚ identifikátory) všechna klíˇcová slova a názvy funkcí ze standardní knihovny jsou malými písmeny OM
ZAPG
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
Nejjednodušší program
main() {} ˇ o trochu vetší: int main() { return 0 ; }
OM
ZAPG
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
Program, který umí psát
#include<stdio.h> main() { printf("Hello world!"); }
OM
ZAPG
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
ˇ Promenné a zápis výrazu˚ ˇ Promenné musíme deklarovat: int a, b; float c; Aritmetické výrazy: sˇcítání +
odˇcítání -
násobení ∗ ˇ delení /
POZOR: celoˇcíselné nebo reálné
ˇ zbytek po delení %
POZOR: pouze pro celoˇcíselné
ˇ umocnování ... NENÍ! ZLOMKY! a=5*3-12%4;
a/b*c nebo a/(b*c)! b = 1/3*3;
OM
c=1/3*3;
ZAPG
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
Pˇriˇrazení ˇ PROMENNÁ int a = a = b = a =
=
VÝRAZ
;
a, b, c; 5; b = 2; c = 3; a + b ; a - b ; a - b ;
c = c + 1; a = c ; c = a ;
a = b ; b = c ; c = a ; OM
ZAPG
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
Program, který umí také cˇ íst # include<stdio.h> main() { int a; float x; printf("Zadejte celé ˇ císlo!"); scanf("%d",&a); printf("Zadejte reálné ˇ císlo!"); scanf("%f",&x); printf("Zadali jste %d a %f", a, f); printf("Zadejte 1 celé a 1 reálné ˇ císlo!"); scanf("%d%f",&a,&x); printf("Zadali jste %d a %5.3f", a, f); } OM
ZAPG
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
Použtí matematických funkcí ve výrazech
MATEMATICKÁ KNIHOVNA: #include<math.h> mocnina: odmocnina: goniometrické: inverzní: logaritmy:
pow(co, na_ kolikátou); sqrt(x); sin(x); cos(x); tan(x); asin(x); acos(x); atan(x); log(x); log10(x);
OM
ZAPG
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
Prográmek pro výpoˇcet obsahu˚ a obvodu˚ # include<stdio.h> # include<math.h> main() { float a,b,o_c,S, o; printf("Zadejte stranu ctverce"); scanf("%f",&a); o_c = 4∗ a; S=pow(a,2); printf("Ctverec:o=%5.3f, S=%6.4f",o_c,S); printf("Zadejte strany obdelnika"); scanf("%f%f",&a,&b); o = (a+b) ∗ 2 ; printf("Obdelnik o=%6.4f,S=%5.3f" o,a∗b); } OM
ZAPG
Úvodní informace Algoritmus a algoritmizace Od algoritmu k programu Jazyk C
Dále ...
Na pˇríští pˇrednášce: Logické výrazy ˇ Vetvení (pˇríkazy if - else, switch) Cykly
OM
ZAPG