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

Podobné dokumenty
URČITÝM ZPŮSOBEM PODOBNÉ

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

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

Objektově orientované programování

Zápis programu v jazyce C#

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

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

Jazyk C# a platforma.net

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

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

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

Úvod do programovacích jazyků (Java)

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

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

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

Programovací jazyk Pascal

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

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

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

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

Algoritmizace a programování

Řídicí struktury. alg3 1

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

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

6 Příkazy řízení toku

Programovací jazyk C++ Hodina 1

Opakování programování

Příklady: (y + (sin(2*x) + 1)*2)/ /2 * 5 = 8.5 (1+3)/2 * 5 = /(2 * 5) = 1.3. Pavel Töpfer, 2017 Programování 1-3 1

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

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

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

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

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

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

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

Výrazy, operace, příkazy

Programování v Javě I. Únor 2009

Programování v Javě I. Leden 2008

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

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/

Jazyk C# a platforma.net

JAZYK C# ÚVOD. Literatura. Jazyk C# .NET Framework

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

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

Základy programování (IZP)

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

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

Algoritmizace a programování

Ukazka knihy z internetoveho knihkupectvi

Seminář Java II p.1/43

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

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

2 Datové typy v jazyce C

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:

ADT/ADS = abstraktní datové typy / struktury

Proměnné a datové typy

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

7. Datové typy v Javě

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

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

Algoritmizace a programování

Úvod do programování. Lekce 1

PREPROCESOR POKRAČOVÁNÍ

Úvod do programování v jazyce Java

Algoritmizace. Cíle předmětu

Algoritmizace a programování

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

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

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

Výčtový typ strana 67

NMIN102 Programování /2 Z, Zk

ZPRO v "C" Ing. Vít Hanousek. verze 0.3

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

KTE / ZPE Informační technologie

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

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

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

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

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

Jazyk PL/SQL Úvod, blok

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

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

První kapitola úvod do problematiky

Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.

Data, výrazy, příkazy

Stručný obsah První týden Druhý týden 211 Třetí týden 451 Rejstřík 787

Úvod do programovacích jazyků (Java)

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

1. Téma 03 - Rozhodování

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

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

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

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

Výrazy, operace, příkazy

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

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem

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

V dalších letech se pak začaly objevovat první normy pro jazyk C++ (ISO/IEC 14882:1998; ISO/IEC 9899:1999; ISO/IEC 14882:2003; ISO/IEC 14882:2011).

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

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

Transkript:

NPRG031 Programování II --- 2/2 Z, Zk paralelka Y St 14:00-15:30 v S3 Pavel Töpfer Kabinet software a výuky informatiky MFF UK MFF Malostranské nám., 4. patro, pracovna 404 pavel.topfer@mff.cuni.cz http://ksvi.mff.cuni.cz/~topfer Pavel Töpfer, 2016 Programování II - 1 1

Plán na letní semestr Základní prostředky jazyka C# (příkazy datové typy, pole, řetězce, třídy, struktury, soubory, vlastnosti, rozhraní, kolekce, výjimky, ) Objektové programování Prostředí Visual Studio, druhy aplikací a jejich vývoj Událostmi řízené programování - ne detaily, od toho je předmět NPRG035 Jazyk C# a platforma.net (povinně volitelný ve 2. ročníku) Počítačová simulace, realizace simulačního modelu Dynamické programování Grafy reprezentace grafu v programu, programová realizace základních grafových algoritmů - částečný obsahový překryv se souběžně vyučovaným předmětem NTIN060 Algoritmy a datové struktury I (jiný pohled na věc) Pavel Töpfer, 2016 Programování II - 1 2

Literatura Pavel Töpfer: Algoritmy a programovací techniky, Prometheus Praha 1995, 2. vyd. 2007 Miroslav Virius: C# pro zelenáče, Neocortex Praha 2002 Eric Gunnerson: Začínáme programovat v C#, Computer Press Praha 2001 Jeft Kent: Visual C# 2005 bez předchozích znalostí, Computer Press Brno 2007 Pavel Töpfer, 2016 Programování II - 1 3

Užitečné odkazy http://www.cs.vsb.cz/behalek/vyuka/pcsharp/text/ studijní materiály VŠB TU Ostrava http://msdn.microsoft.com/en-us/vstudio/hh341490 download Visual Studio, tutoriály o C# a Visual Studiu http://www.microsoft.com/en-us/download/details.aspx?id=7029 C# Language Specification 5.0 http://artax.karlin.mff.cuni.cz/~mper7437/programovani/instalace2013.pdf stručný návod k instalaci Visual Studia Pavel Töpfer, 2016 Programování II - 1 4

Zápočet v LS - o udělení rozhoduje cvičící * domácí úkoly, příp. písemky, práce na cvičeních * zápočtový program v C# (náročnější než v ZS, s GUI) + písemná dokumentace k zápočtovému programu * praktický zápočtový test u počítače (odladění programu v C#) Zkouška v LS - k účasti na zkoušce není nutné předchozí získání započtu - zahrnuje i algoritmické učivo předmětu NPRG030 Programování I - část písemná a ústní (zkouška není u počítačů) * písemná část je praktická (vyřešení rozsáhlejšího algoritmického problému) * v ústní části diskuse o řešení písemky + teorie Pavel Töpfer, 2016 Programování II - 1 5

Přechod od Pascalu k jazyku C# Používání mezer a řádkování - volné, stejně jako v Pascalu - doporučená a prostředím podporovaná indentace Identifikátory - case-sensitivní (rozlišuje malá a velká písmena) - možnost používat diakritiku - klíčová slova malými písmeny - jména standardních tříd, metod a vlastností pascalská notace např. Math, DivideByZeroException, Main, WriteLine, - konvence pro vlastní identifikátory: proměnné malými písmeny, konstanty velkými písmeny, soukromé metody začínají malým písmenem = velbloudí notace, veřejné velkým písmenem = pascalská notace např. i, MAX, soucetcisel, SoucetCisel, Pavel Töpfer, 2016 Programování II - 1 6

Struktura programu Celý program se skládá ze tříd, vše se deklaruje a používá uvnitř tříd (proměnné, konstanty, funkce, ). Položky deklarované ve třídě: datové složky třídy = členské proměnné metody = členské funkce Prozatím: celý program je tvořen jedinou statickou třídou (její obsah tedy odpovídá celému pascalskému programu) Příště: jak jinak to může vypadat (a zpravidla vypadá) se třídami Pavel Töpfer, 2016 Programování II - 1 7

Proměnné - zápis deklarace syntaxe: int alfa; float a1, a2; - umístění deklarace: BUĎ členská proměnná třídy (tzn. datová složka objektu) NEBO lokální kdekoliv ve funkci, ale nesmí zakrýt jinou stejnojmennou deklaraci uvedenou v téže funkci (pozor na kolize!) - lokální platnost deklarace v bloku, kde je uvedena - možnost inicializace v rámci deklarace: int alfa = 15; - v programu nelze použít nedefinovanou hodnotu proměnné (kontrola při překladu) Pavel Töpfer, 2016 Programování II - 1 8

Konstanty - syntaxe jako inicializované proměnné, specifikátor const: const int ALFA = 15; - číselné konstanty podobné jako v Pascalu (různé typy) - konstanty typu char v apostrofech: a typu string v uvozovkách: aaa Pavel Töpfer, 2016 Programování II - 1 9

Typy Hodnotové - proměnná hodnotového typu obsahuje přímo uložená data (při dosazení se kopíruje hodnota) Referenční - proměnná referenčního typu obsahuje odkaz na svoje data (při dosazení se kopíruje pouze adresa) Dvě různé proměnné referenčního typu mohou odkazovat na stejný objekt. K němu pak lze přistupovat střídavě pomocí obou těchto proměnných. Pavel Töpfer, 2016 Programování II - 1 10

Hodnotové typy: celé číslo int System.Int32 32 bitů další typy: byte, sbyte, short, ushort, uint, long, ulong desetinné číslo double System.Double 64 bitů další typy: float, decimal logická hodnota bool znak char System.Char 16 bitů Unicode výčtový typ enum struktura struct Referenční typy: pole [ ] System.Array znakový řetězec string System.String třída class (standardní třídy, např. ArrayList, StringBuilder, List<>) Pavel Töpfer, 2016 Programování II - 1 11

Aritmetické výrazy - obvyklé symboly operací i priority stejné jako v Pascalu + - * / - symbol / představuje reálné i celočíselné dělení (zvolí se podle typu argumentů) - znak % pro modulo (zbytek po celočíselném dělení) - klíčová slova checked, unchecked určení, zda se má kontrolovat aritmetické přetečení v celočíselné aritmetice (implicitně se nekontroluje, počítá se modulo rozsah) - použití jako checked(výraz) nebo checked{blok} - standardní matematické funkce statické metody třídy Math Pavel Töpfer, 2016 Programování II - 1 12

Středník - ukončuje každý příkaz (musí být i za posledním příkazem bloku!) - nesmí být za blokem ani za hlavičkou funkce - odděluje sekce v hlavičce for-cyklu Čárka - odděluje deklarace více proměnných téhož typu - odděluje parametry v deklaraci funkce i při volání funkce - odděluje indexy u vícerozměrného pole Komentáře - víceřádkové /* xxx */ - jednořádkové // xxx do konce řádku - dokumentační /// xxx do konce řádku Blok (složený příkaz) - závorky { } místo pascalského begin end Pavel Töpfer, 2016 Programování II - 1 13

Dosazovací příkaz - syntaxe: proměnná = výraz; např. i = 2*i + 10; - příkaz modifikace hodnoty: i++; ++i; i--; --i; i += 10; i -= 10; i *= 10; i /= 10; i %= 10; př.: a += 2 * b[i++]; Pavel Töpfer, 2016 Programování II - 1 14

Podmíněný příkaz - podmínka = výraz typu bool v závorkách if (a == 5) b = 17; if (a == 5) b = 17; else b = 18; - relační operátory: ==!= < > <= >= - logické spojky && and (zkrácené vyhodnocování) or (zkrácené vyhodnocování) & and (úplné vyhodnocování) or (úplné vyhodnocování)! not ^ xor Pavel Töpfer, 2016 Programování II - 1 15

Cykly while a do-while - cyklus while stejný jako while-cyklus v Pascalu (podmínka je opět celá v závorce a nepíše se do ) while (podmínka) příkaz; - cyklus do-while má podmínku na konci jako cyklus repeat-until v Pascalu, ale význam podmínky je proti Pascalu obrácený, tzn. dokud podmínka platí, cyklus se provádí - více příkazů v těle cyklu musí být uzavřeno v bloku { } do příkaz while (podmínka); Pavel Töpfer, 2016 Programování II - 1 16

For-cyklus - syntaxe: for (inicializace; podmínka pokračování; příkaz iterace) příkaz těla for (int i = 0; i < N; i++) a[i] = 3*i+1; - příkaz iterace nemůže být blok { }, příkaz těla ano - pokud v sekci inicializace deklarujeme novou řídicí proměnnou, jejím rozsahem platnosti je tento for-cyklus - některá sekce může být prázdná (třeba i všechny) for (; i < N;) { } //while-cyklus for (;;) { } //věčný cyklus, přeruší break Pavel Töpfer, 2016 Programování II - 1 17

- sémantika for-cyklu for(a; B; C) D A; while (B) {D; C} Pavel Töpfer, 2016 Programování II - 1 18

Ukončení cyklu - příkazy break; continue; - stejný význam jako v Pascalu Pavel Töpfer, 2016 Programování II - 1 19

Příkaz switch - analogie pascalského příkazu case - varianta se může rozhodovat podle hodnoty výrazu celočíselného, typu char, výčtového typu nebo také typu string - sekce označeny case, za každým slovem case je jediná konstanta, ale pro více variant case může být společný blok příkazů - blok příkazů v sekci case není v závorkách { } - jednou sekcí (ne nutně poslední) může být default: - je povinnost ukončit každou sekci case (i sekci default) příkazem break, příp. return nebo goto (pozor: v C, C++, Javě se může propadat mezi sekcemi častý zdroj chyb!) Pavel Töpfer, 2016 Programování II - 1 20

int j, i =...; switch (i) { case 1: i++; break; case 2: case 3: i--; break; default: i=20; j=7; break; } Pavel Töpfer, 2016 Programování II - 1 21

Funkce - pascalské procedury a funkce metody (členské funkce) nějaké třídy - procedura funkce typu void - v deklaraci i při volání vždy píšeme ( ), i když nemá žádné parametry - na pořadí deklarací nezáleží (není třeba žádná deklarace forward) - ve funkci nelze lokálně definovat jinou funkci, strukturu nebo třídu, lze tam ale deklarovat lokální proměnné (ve třídě lze ovšem deklarovat jinou třídu a ta může mít své metody) Pavel Töpfer, 2016 Programování II - 1 22

- funkce mohou vracet i složitější typy (např. objekty) - return hodnota; definování návratové hodnoty a zároveň ukončení výpočtu funkce ( exit ), v případě funkcí typu void pouze: return; - předávání parametrů: hodnotou standardně odkazem specifikátor ref u parametru v hlavičce i při volání výstupní specifikátor out u parametru v hlavičce i při volání (out je také odkazem, nemusí ale mít vstupní hodnotu, v těle funkce se do něj musí dosadit hodnota) specifikátor ref nebo out se opakuje u každého parametru, který je tímto způsobem předáván Pavel Töpfer, 2016 Programování II - 1 23

static int Soucet(int a, int b, out bool velky) { velky = a + b > 1000; return a + b; } static void Main(string[] args) { bool v; int s = Soucet(15, 2394, out v); if (v) Console.WriteLine("velky {0}", s); else Console.WriteLine("maly {0}", s); } Pavel Töpfer, 2016 Programování II - 1 24

Výchozí metoda Main ( ) - plní funkci hlavního programu (určuje začátek a konec výpočtu) - je to statická metoda nějaké třídy (nic mimo třídy neexistuje) - často se pro ni vytváří samostatná třída - obvykle jediná v aplikaci je tak jednoznačně určeno, kde má začít výpočet - může jich být i více, pak se ale při kompilaci musí přepínačem specifikovat, ze které třídy se má použít Main() při spuštění programu - syntaxe: static void Main(string[] args) Pavel Töpfer, 2016 Programování II - 1 25

using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication1 { class Program { XXX FUNKCE XXX static void Main(string[] args) { XXX HLAVNÍ PROGRAM XXX } } } XXX FUNKCE XXX Pavel Töpfer, 2016 Programování II - 1 26