IAJCE Přednáška č. 6. logický celek, řešící dílčí část problému Příklad velmi špatného zápisu programu na výpočet obsahu obdélníku

Podobné dokumenty
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

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

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

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Zápis programu v jazyce C#

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

IAJCE Přednáška č. 7. řízení semaforu na křižovatce = přepínání červená/oranžová/zelená

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

PŘETĚŽOVÁNÍ OPERÁTORŮ

Řídicí struktury. alg3 1

KTE / ZPE Informační technologie

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

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

Objektově orientované programování

URČITÝM ZPŮSOBEM PODOBNÉ

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

IAJCE Přednáška č. 8. double tprumer = (t1 + t2 + t3 + t4 + t5 + t6 + t7) / 7; Console.Write("\nPrumerna teplota je {0}", tprumer);

Mnohotvarost (polymorfizmus)

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

Algoritmizace a programování

NMIN201 Objektově orientované programování 2016/17 1 / :03:29

NPRG031 Programování II 1 / :47:55

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

Struktura programu v době běhu

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

DSL manuál. Ing. Jan Hranáč. 27. října V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

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

Úvod do programovacích jazyků (Java)

Výčtový typ strana 67

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

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

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

Seminář Java II p.1/43

C# konzole Podíl dvou čísel, podmínka IF

Příkazy preprocesoru - Před překladem kódu překladačem mu předpřipraví kód preprocesor - Preprocesor vypouští nadbytečné (prázdné) mezery a řádky -

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

IUJCE Přednáška č. 11. další prvky globální proměnné, řízení viditelnosti proměnných, funkcí

1. Téma 03 - Rozhodování

C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++

Generické programování

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

Základní stavební prvky algoritmu

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

Obsah přednášky. Postup při vytváření objektů. Postup při vytváření objektů. Alokace paměti. Inicializace hodnot atributů

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 <->

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/

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

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

dovolují dělení velkých úloh na menší = dekompozice

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

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39

KTE / ZPE Informační technologie

Algoritmizace. Cíle předmětu

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

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE REALIZACE PŘEKLADAČE I

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

Úvod do programování. Lekce 5

Programovací jazyk C++ Hodina 1

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

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++

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

Jazyk C# a platforma.net

Úvod do programování. Lekce 1

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

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

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

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

Výrazy, operace, příkazy

ALGORITMIZACE A PROGRAMOVÁNÍ

Obsah přednášky. Příkaz for neúplný. Příkaz for příklady. Cyklus for each (enhanced for loop) Příkaz for příklady

Ukazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný

Jazyk C# (seminář 3)

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

Základy programování (IZP)

- dělají se také pomocí #define - podobné (použitím) funkcím - předpřipravená jsou např. v ctype.h. - jak na vlastní makro:

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

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

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

Příkazy a řídicí struktury v Javě. Tomáš Pitner, upravil Marek Šabo

Opakování programování

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

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik;

Algoritmizace a programování

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

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

Algoritmizace a programování

Pole stručný úvod do začátku, podrobně později - zatím statická pole (ne dynamicky) - číslují se od 0

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

Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9

Více o konstruktorech a destruktorech

Funkce, procedury, složitost

IRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33

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

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY

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

"Václav Klaus". public class Clovek { protected String jmeno; protected int roknarozeni; public Clovek(String j, int rn) {

Algoritmizace a programování

Řídicí příkazy KAPITOLA 3. Vstup znaků z klávesnice

Transkript:

Podprogramy zásady: jednu věc programovat pouze jednou podprogram logický celek, řešící dílčí část problému Příklad velmi špatného zápisu programu na výpočet obsahu obdélníku // nacteni strany 1 double str1; Console.Write("Zadej 1.stranu: "); str1 = Double.Parse(Console.ReadLine()); // nacteni strany 2 double str2; Console.Write("Zadej 2.stranu: "); str2 = Double.Parse(Console.ReadLine()); // vypocet a tisk Console.WriteLine("Obsah = 0", str1 * str2); řešení s podprogramem static double NactiStranu(int kterou) double strana; Console.Write("Zadej 0.stranu: ", kterou); strana = Double.Parse(Console.ReadLine()); return strana; podprogram prakticky stejné // nacteni stran double str1 = NactiStranu(1); double str2 = NactiStranu(2); Console.WriteLine("Obsah = 0", str1 * str2); podprogramy o non OOP jazyky (C, Pascal,...) procedury, funkce o OOP jazyky (C#, Java,...) metody 1

základní terminologie identifikátor metody lokální proměnná definice metody psát vždy typ návratové hodnoty formální parametr(y) static double NactiStranu(int kterou) double strana; Console.Write("Zadej 0.stranu: ", kterou); strana = Double.Parse(Console.ReadLine()); return strana; hlavička metody tělo metody výstup návratové hodnoty // nacteni stran výsledek výrazu návratová hodnota typu... skutečný parametr(y) double str1 = NactiStranu(1); volání metody double str2 = NactiStranu(2); Console.WriteLine("Obsah = 0", str1 * str2); 2

Volání metod Program v C# 1 nebo více metod běh programu v operačním systému hlavní metoda programu MS Windows Obdelnik.exe Main() NactiStranu(1) NactiStranu() volá také Console.Write(), Console.ReadLine(), Double.Parse NactiStranu(2) o hloubka volání není omezena volání a parametry: přiřazení hodnot skutečných parametrů do proměnných formálních parametrů o princip skutečného běhu Main() min. příkladu // double str1 = NactiStranu(1); double str1; int kterou = 1; double strana; Console.Write("Zadej 0.stranu: ", kterou); strana = Double.Parse(Console.ReadLine()); str1 = strana; return // double str2 = NactiStranu(2); double str2; int kterou = 2; double strana; Console.Write("Zadej 0.stranu: ", kterou); strana = Double.Parse(Console.ReadLine()); str2 = strana; Console.WriteLine("Obsah = 0", str1 * str2); 3

Definice vlastních metod analýza: 1) Co bude předmětem činnosti metody jméno metody, algoritmus metody 2) Jaké vstupní informace bude potřebovat počet a datový typ formálních parametrů 3) Co bude výsledkem činnosti typ návratové hodnoty počet a typ parametrů neomezen Návratová hodnota metody o syntaxe: return vyraz; return // např. return 2*3.14*R o sémantika: metoda vrací hodnotu vyraz, po tomto příkazu se metoda ihned ukončí static int Metoda() return 10; Console.WriteLine("Nikdy se neprovede"); o return v Main() ukončí program o datový typ neomezen metody dle počtu parametrů o s 1 nebo více parametry o bez parametrů o s proměnným počtem parametrů metody dle návratové hodnoty o vracející hodnotu o nevracející hodnotu 4

Metody s parametry vracející hodnotu nejčastěji Napište metodu, která vypočte objem válce double polomer = 10.3, vyska = 5.0; double objem = ObjemValce(polomer, vyska); double dalsiobjem = objem + ObjemValce(2 * polomer, 2.1); static double ObjemValce(double R, double v) return Math.PI * R * R * v; Další příklady double NactiStranu(int kterou) bool JePrechodnyRok(int rok) double Prepona(double odvesna1, double odvesna2) Příklady z.net double Math.Sin(double uhel) 5

Metody s parametry nevracející hodnotu velmi často Příklad: napište metodu, která vytiskne pro osobu daného jména počet vypitých piv. V případě, že bude počet piv menší než nula, vytiskne se chybová zpráva. int frantovypiva = 5; TiskPoctuPiv("Franta", frantovypiva); TiskPoctuPiv("Pepa", frantovypiva - 2); TiskPoctuPiv("Martin", -88); nelze ve výrazech, pouze samostatně jako příkaz nic nevrací static void TiskPoctuPiv(string jmeno, int pocetpiv) if (pocetpiv < 0) Console.WriteLine("0 nemohl vypit 1 piv!!!", jmeno, pocetpiv); else Console.Write("0 vypil ", jmeno); switch (pocetpiv) case 1: Console.WriteLine("1 pivo"); break; case 2: case 3: case 4: Console.WriteLine("0 piva", pocetpiv); break; default: // 5 a více Console.WriteLine("0 piv", pocetpiv); break; žádné return, nebo return; 6

Metody bez parametrů vracející hodnotu méně často Napište metodu, simulující hod kostkou for (int i = 0; i < 10; i++) Console.WriteLine(HodKostkou()); žádné void static int HodKostkou() Random generator = new Random(DateTime.Now.Millisecond); System.Threading.Thread.Sleep(10); int nahodnecislo = generator.next(1, 7); return nahodnecislo;!!! tisk návratové hodnoty Příklad z. NET vrací string int prom = Int32.Parse(Console.ReadLine()); Metody bez parametrů nevracející hodnotu zřídka Napište metodu, která vytiskne chybovou zprávu TiskChyboveZpravy(); static void TiskChyboveZpravy() Console.WriteLine("***********************************"); Console.WriteLine("Doslo k chybe"); Console.WriteLine("***********************************"); 7

Závěrečné poznámky na pořadí definic metod ve ZK nezáleží static void Main() // kod Main static void M1() // kod M1 static void M2() // kod M2 static void M2() // kod M2 static void Main() // kod Main static void M1() // kod M1 definice metody musí ležet uvnitř třídy (zatím ) definice metody nesmí ležet uvnitř definice metody jiné static void Metoda() // kod Metoda // kod Main() volání počet a datový typ parametrů musí souhlasit s hlavičkou (max. implicitní konverze) int vyska= 5; double polomer = 10.0; double objem = ObjemValce(polomer, vyska, 10.3); double objem1 = ObjemValce(3.5); static double ObjemValce(double R, double v) return Math.PI * R * R * v; identifikátory metod první písmeno velké impl. konverze int double příliš mnoho parametrů málo parametrů 8

Více return Počet není omezen Napište metodu, která vrátí větší číslo ze dvou argumentů typu int, a pokud jsou shodné, vrátí nulu klasické řešení static int Porov(int x1, int x2) int temp; if (x1 > x2) temp = x1; else if (x2 > x1) temp = x2; else temp = 0; return temp; více return static int Porov(int x1, int x2) if (x1 > x2) return x1; if (x2 > x1) return x2; return 0; 9