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

Podobné dokumenty
Algoritmy I. Cvičení č.1 ALGI 2015/16

Algoritmy I. Cvičení č.1, 2 ALGI 2016/17

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

Algoritmizace prostorových úloh

Algoritmizace prostorových úloh

Úvod do programování - Java

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

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

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

Algoritmizace a programování

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole

6 Příkazy řízení toku

Zápis programu v jazyce C#

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

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

Programovací jazyk Pascal

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

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

Řídicí struktury. alg3 1

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

Strukturu lze funkci předat: (pole[i])+j. switch(výraz) velikost ukazatele

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

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

Vlastnosti algoritmu. elementárnost. determinovanost. rezultativnost. konečnost. hromadnost. efektivnost

Úvod do programování. Lekce 1

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

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

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

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

Úvod do programovacích jazyků (Java)

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

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

Objektově orientované programování

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

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

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

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

Základy algoritmizace a programování

6. Příkazy a řídící struktury v Javě

Algoritmizace a programování

Základy algoritmizace a programování

3. přednáška. Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti

Úvod do programování. Lekce 3

Programové konvence, dokumentace a ladění. Programování II 2. přednáška Alena Buchalcevová

Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01

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

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

2 Datové typy v jazyce C

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5

MPASM a IDE pro vývoj aplikací MCU (Microchip)

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

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

Identifikátory označují objekty v programu používané (proměnné, typy, podprogramy).

DTP Základy programování Úvod do předmětu

Programovací jazyk. - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi)

Algoritmizace a programování

Algoritmizace a programování

Základy programování (IZP)

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

Opakování programování

Začínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů

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

První kapitola úvod do problematiky

Pole a Funkce. Úvod do programování 1 Tomáš Kühr

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

Úvod do programování

Funkce pokročilé možnosti. Úvod do programování 2 Tomáš Kühr

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

Funkce, podmíněný příkaz if-else, příkaz cyklu for

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

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

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

Algoritmizace. Cíle předmětu

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

Základy programování (IZP)

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

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

Střední odborná škola a Střední odborné učiliště, Hořovice

2. lekce Algoritmus, cyklus Miroslav Jílek

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

Java Cvičení 01. CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics

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

Algoritmy a datové struktury

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

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

Úvod. Programovací paradigmata

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

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

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

PODPROGRAMY PROCEDURY A FUNKCE

Práce se soubory. Základy programování 2 Tomáš Kühr

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

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

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY

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

Řídící struktury, if, while, switch

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

Překladač a jeho struktura

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: Ukončí program. Nula znamená, že vše proběhlo bez chyby.

Transkript:

Algoritmy I Cvičení č. 2, 3 1

ALG I, informace Cvičící RNDr. Eliška Ochodková, Ph.D., kancelář EA439 eliska.ochodkova@vsb.cz www.cs.vsb.cz/ochodkova Přednášející doc. Mgr. Jiří Dvorský, Ph.D., kancelář EA441 jiri.dvorsky@vsb.cz www.cs.vsb.cz/dvorsky 2

Programátorské desatero Programování je lidská činnost, vyžaduje tedy trénink. Programování není cíl, ale prostředek k dosažení cíle. Programování vyžaduje pochopení algoritmizovaného problému. Programátor přemýšlí. Programátor pracuje samostatně. Programátor čte, zejména dokumentaci. Programátor se stále učí nové věci. Programátor testuje to, čemu ještě nerozumí. Programátor umí improvizovat. Programátor optimalizuje. Programátor musí umět přecházet plynule mezi více jazyky. Programátor umí hledat chyby. Programátor hledá chyby, aby se poučil. Programátor umí číst cizí kód. Je to poučné. Programátor píše slušně. Programátor si musí poradit s více editory. Programátor musí umět přečíst kód i bez zvýrazněné syntaxe. 3

ALG I, informace Instalace (odkazy na webové stránce cvičícího a přednášejícího) Zadání cvičení na mém webu Přednášky - web cvičícího Literatura tamtéž 4

První program // Pokud překladač narazí na výskyt #include, zpřístupní funkce dané knihovny. #include <stdio.h> // hlavní funkce programu int main() { // na konzoli vypíšeme 'Hello world' a odřádkujeme printf("hello world\n"); } // návratová hodnota 0 return 0; 5

Kompilační překladač Překlad ze zdrojového jazyka (např. C++) do cílového jazyka (Absolutní binární kód, přemístitelný binární kód (.obj,.o), jazyk symbolických instrukcí) C++ je kompilovaný jazyk Ze zdrojového souboru.cpp se sestaví tzv. přemístitelný modul (.obj), poté se linkuje do spustitelného (.exe) souboru a pak je spuštěn. 6

Konvence Komentáře Na začátku každého zdrojového souboru (třídy) uveďte: - stručný popis zdrojového souboru (třídy), - autora či autory, - označení verze (pořadové číslo či datum poslední změny). Před každou funkcí by měl být její popis doplněný o popis významu jednotlivých parametrů a návratových hodnot. Vlastní kód můžete rovněž doplnit o komentář, zejména pokud jste začátečníci. 7

Konvence Identifikátory ( C like jazyky jsou tzv. case senzitivní jazyky pozor tedy na malá a velká písmena!) Prvním symbolem smí být pouze písmeno nebo podtržítko, poté následuje libovolná kombinace písmen, číslic a podtržítek Klíčová slova se píšou malými písmeny! Jména proměnných a funkcí pište malými písmeny s využitím podtržítek Nevhodné je používat dva stejné identifikátory rozlišené jen velikostí písmen (suma x SUMA) 8

Konvence Srozumitelnosti přispívá vhodná volba názvů proměnných, funkcí, tříd, šablon a jiných entit. Mnemotechnické názvy - např. pocet_bodu nebo soucet() - jsou rozhodně vhodnější než názvy, které nic neříkají - jako nb nebo S(). Šetřit na délce názvů přinese víc problémů než úspor. Funkce main vrací vždy hodnotu typu int. Občas (i v učebnicích) můžete spatřit deklaraci void main(), ale ta neodpovídá žádné z norem jazyka C, ani normě jazyka C++. 9

Konvence Formátování Na jednom řádku by měl být jeden příkaz, deklarace jedné proměnné. Obsah bloku odsaďte vždy o 3 či 4 mezery. V rámci jednoho bloku by měly být všechny příkazy odsazeny stejně (většina IDE odsazuje sama). Otevírací závorka bloku je obvykle na konci řádku (nebo na začátku dalšího, nemíchat oba přístupy), uzavírací samostatná na řádku. V řídících strukturách vždy používejte složené závorky pro bloky (a to i v případě, že v bloku je pouze jeden příkaz). Používejte mezeru před otevírací závorkou a okolo operátorů. 10

Konvence Formátování Doporučuje se, aby délka řádku nepřekročila 120 znaků (jazyk poskytuje dostatek možností, jak zkrátit dlouhé řádky pro zápis na potřebnou délku). Tabulátor přitom považujte ve shodě s obvyklými programy pro výpis textu za 8 mezer, ale raději se mu vyhněte úplně. Podobně výstupy formátujte tak, aby byly optimalizovány pro terminál o 24 řádcích po 120 znacích. Na konci má program zanechat kursor na novém řádku. 11

Základní pojmy Datový typ určuje jakých hodnot může nabývat objekt daného datového typu a množinu přípustných operací nad tímto datovým typem. Objektem rozumíme konstantu, proměnnou, výraz a podprogramy. Datový typ také určuje, kolik místa (bajtů) bude v paměti pro např. proměnnou tohoto typu vyhrazeno. 12

Základní pojmy Konstanta - veličina, která nemění hodnotu během řešení problému. Může být použita dvěma způsoby: přímo (63, ), pojmenováním (označení identifikátorem), (pi jméno konstanty 3.14 ). Proměnná - veličina, která může měnit hodnotu během řešení problému. Proměnná se zavádí deklarací (pojmenováním a určením datového typu konkrétní proměnné, event. určením počáteční hodnoty) int i, k; int j = 1; 13

Základní pojmy Výraz se skládá z operátorů, operandů a speciálních znaků (např. závorky). Operandem může být: konstanta, proměnná, výraz, volání podprogramu. Operand je tvořen opět výrazem: (a + b) / 2 a => c i = 2 Příkazy popisují jednotlivé kroky algoritmu a jejich návaznosti. Rozlišujeme jednoduché a strukturované příkazy. Celý algoritmus lze chápat jako jeden příkaz: Příkaz přiřazení i = 2; 14

Řídící struktury Jednoduché příkazy příkaz přiřazení (operátor přiřazení = ), (čtení a výpis (čtení a výpis je zpravidla realizován jako volání podprogramu)). Strukturované příkazy sekvence (posloupnost), selekce (podmínka), cyklus. 15

Algoritmy I Cvičení č. 2, 3 Řídicí struktury (příkazy pro řízení toku příkazů) 17

Sekvence (posloupnost) Sekvence - příklad (Algoritmus na výpočet průměru dvou daných celých čísel) int main() { int scit1 = 5; int scit2 = 2; int prumer 0; prumer = (scit1+ scit2) / 2; printf( Prumer je: %d, prumer); } return 0; 19

Ternární operátor Ternární operátor slouží k vytvoření tzv. podmíněného výrazu, syntaxe: log_vyraz? výraz1 : výraz2 Zapíšeme-li například tento podmíněný výraz: cislo1 < 5? cislo2++ : cislo2-- hodnota proměnné cislo2 se zvýší o jedničku (provede se výraz1) pokud je hodnota proměnné cislo1 menší než 5 (podmínka (log_vyraz) je splněna). Pokud je hodnota proměnné cislo1 větší nebo rovna 5 (tedy podmínka není splněna), hodnota proměnné cislo2 se sníží (provede se vyraz2). 22 10

Cyklus Cyklus je část algoritmu, která je opakovaně prováděna po splnění určité podmínky (řídící podmínka cyklu). Opakující se kroky nazýváme tělo cyklu. Dva typy cyklů: indukční tělo cyklu se provede po splnění řídící podmínky cyklu nebo dojde k předání řízení za tělo cyklu (cyklus s testem před vykonáním těla cyklu, cyklus s testem za tělem cyklu), iterační - počet opakování těla cyklu závisí na hodnotě řídící proměnné cyklu. 23

Cyklus - 1.příklad int i = 1; while (i <= 10) { // příkazy i++; } Cyklus 25

Cyklus - 2.příklad int i = 1; do { // příkazy i++; } while (i <= 10); Cyklus 27

Cyklus Cyklus s pevným počtem opakování for (výraz_start; výraz_stop; výraz_iter) { tělo cyklu } 28

Cyklus Cyklus - 3.příklad for (int i = 1; i <= 10; i++) { } // příkazy 29 for (int i = 2; i <= 100; i += 2) { // příkazy }

Switch Příkaz switch na základě hodnoty výrazu provádí příslušnou větev příkazu, výraz musí být typu int. Syntaxe: switch (výraz) { case konstanta1: case konstanta2: příkaz1; break; case konstanta3: příkaz2; break; case konstanta4: příkaz3; break; //... default: příkaz; break; } 30

int main() { int cislo = 0; switch (cislo) { case 1 : case 2 : case 3 : printf( Zadano cislo 1, 2 nebo 3. \n ); break; case 4 : printf( Zadano cislo 4. \n ); break; default : printf( Zadano neco jineho. ); break; } return 0; } 31

Příkazy break a continue Příkazy break a continue ovlivňují průběh zpracování příkazů v rámci cyklu (příkaz break se používá i v příkazu switch). výsledkem použití příkazu break bude skok za konec tohoto cyklu, continue způsobí, že je přeskočen zbytek těla cyklu a znovu se testuje podmínka cyklu (provede se iterace cyklu). 32

Příkaz return Příkazy return ukončí provádění metody (funkce), v metodě main() ukončí return provádění celého programu. Pomocí return se také vrací nějaká hodnota, viz později funkce (metody). 33