Základy programování v jazyce C# pro naprosté začátečníky

Rozměr: px
Začít zobrazení ze stránky:

Download "Základy programování v jazyce C# pro naprosté začátečníky"

Transkript

1 Základy programování v jazyce C# pro naprosté začátečníky Vladimír Váňa Vana@spsejecna.cz SPŠE Ječná šk.r. 2005/ Úvod Výuka základů programování probíhající na středních školách seznamuje studenty se základními pojmy z teorie programování a vytvářením algoritmů při řešení různých, často jen ukázkových, problémů. Nedílnou součástí této výuky je i výuka syntaxe některého programovacího jazyka i vlastní programování v tomto jazyce. Často je tímto jazykem Turbo Pascal. Dny jeho slávy jsou již dávno sečteny. Současná vývojářská praxe je naprosto odlišná. Na to reagovaly vysoké školy přechodem od výuky programování v jazyce Pascal k výuce programování v jazyce Java či C#. Úspěšnost těchto jazyků zajistila, že i v českém jazyce vyšla celá řada publikací o programování v těchto jazycích. Ty mohou být používány i studenty vysokých škol. Pro začínající studenty středních škol jsou však často příliš složité, obsahují značné množství informací, ve kterém se student utápí, a přitom je látka prezentována ve zhuštěné formě, vyhovující zkušeným programátorům. Proto na základě zkušeností z výuky programování v jazyce C# na SPŠE Ječná v Praze v letech vznikl tento učební materiál. Protože učebnic a učebních textů zabývajících se základními pojmy z teorie programování a vytvářením algoritmů je k dispozici řada, je tento učební text věnován jen základům jazyka C#. Skládá se z těchto částí: Kapitola 1 - Jazyk C# Kapitola 2 - Základy programování v jazyce C#: Vytvoření prvního programu. Kapitola 3 - Základní příkazy jazyka C# (Podmínkové příkazy): Vysvětlení podmínkových příkazů. Načtení vstupních znaků, řeťězců a čísel. Převody a podmíněné příkazy. Kapitola 4 - Základní příkazy jazyka C# (Cykly ): Seznámení se s pojmem cyklus a praktické využití cyklu for. Kapitola 5 - Základní příkazy jazyka C# (Cykly - pokračování): Vysvětlení cyklů while, do...while a foreach a dále příkazů skoku goto, break a continue. Kapitola 6 - Třídy a překladač jazyka C#: Základní vlastnosti tříd, vytvoření instance, objektu, pojem static a možnosti překladače jazyka C# Dodatek 1 - Naše konzolové příklady převedené do WinForm Dodatek 2 - Pascal v DELPHI2005 (C) 2005 Vladimír Váňa 1

2 Kapitola 1. Jazyk C# Předtím, než se u počítačů objevily programovací jazyky, programovalo se přímo ve strojovém kódu, tj. většinou v binární, oktalové nebo hexadecimální reprezentaci instrukcí počítače. Všechny objekty, s nimiž počítač pracoval, byly pochopitelně označovány pouze číselně. Např. naplnění registru R16 konstantou ve strojovém jazyce mikroprocesoru ATMEL AVR má tvar: Je zřejmé, že programování ve strojovém jazyce je obtížné a nepřehledné a mohlo vyhovovat jen v úplných začátcích, kdy programy byly krátké a jednoduché. Se zdokonalováním technického vybavení rostly nároky na programy a programovat ve strojovém jazyce začalo být neúnosné. Brzo se zjistilo, že pracnost programování lze značně snížit, zrušímeli nutnost označovat objekty v instrukcích číselně (vyhovuje stroji) a zavedeme-li symbolické označování objektů (vyhovuje člověku) s tím, že vazbu symbolů na jejich vyjádření nebude provádět programátor, ale zajistí je specielní program překladač. Tak vznikly jazyky symbolických adres, v nichž mohly operační znaky instrukcí a jejich operandy označovat symboly. Současně vznikly i překladače jazyků symbolických adres (assemblery), které překládaly symbolický jazyk do strojového jazyka. Brzo se ukázalo, že programátorovi lze práci ještě více usnadnit, zbavíme-li ho závislosti na instrukční síti počítače, se kterou byl spjat i při programování v jazyce symbolických adres. Objevily se proto vyšší programovací jazyky nezávislé na počítači, které jsou navrženy tak, aby programátor instrukční soubor počítače vůbec nemusel znát. Syntaxe vyšších programovacích jazyků většinou obsahuje mj. klíčová slova převzatá z anglického jazyka. Vyšší programovací jazyky jsou implementovány řadou výrobců a pro mnoho různých procesorů a operačních systémů. Různé implementace překladačů téhož jazyka se liší rychlostí překladu, velikostí a rychlostí výsledného kódu. Definice vyššího programovacího jazyka, jeho lexikální symboly, syntaxe, sémantika, je často dána nějakou normou, ať mezinárodní (např. ANSI C, ANSI C++) nebo podnikovou (Java u SUNu). Příklady vyšších programovacích jazyků: ADA, Basic, C, C++, C#, Fortran, Java, Perl, PHP, SQL Překladače Překladač nějakého programovacího jazyka je počítačový program. Znamená to, že i překladač musel někdo naprogramovat. Tvorba překladače je velice složitá úloha a proto se při jeho tvorbě postupuje stejně, jako při řešení jiných složitých úloh = celý problém se rozloží na jednodušší problémy a ty se vyřeší. Překladač je program, jehož vstupními daty je zdrojový text, tj. např. textový soubor obsahující text programu napsaného ve vyšším programovacím jazyce, zdrojový kód. Výstupem překladače je např. výstupní binární soubor, spustitelný program počítače. (C) 2005 Vladimír Váňa 2

3 Činnost překladače může být např. takováto: 1. Lexikální analýza provede se převedení zdrojového textu na jiný, vnitřní kód. Odstraní se přitom např. nadbytečné mezery, závorky a komentáře. Provede se transformace klíčových slov, identifikátorů proměnných apod. na číselné objekty stejné délky. (např. v Pascalu klíčová slova begin, end, mají různou délku, obdobně identifikátory. Překladač místo těchto objektů bude používat čísla. Tato čísla budou mít navíc stejný počet číslic. Je to z toho důvodu, že počítači se s čísly bude lépe pracovat). 2. Syntaktická analýza = kontroluje správné použití prvků programovacího jazyka (v Pascalu musí mít každé Begin své End apod.). Syntaktická analýza je vlastně větný rozbor používaný u přirozených jazyků jako čeština, angličtina apod. 3. Sémantická analýza = zjišťuje se význam jednotlivých konstrukcí našeho programu tj. např. co se má provést např. nějaká matematická operace, přesun hodnoty do paměti či naopak z paměti apod. 4. Generace výsledného strojového kódu z mezikódu vzniklého po skončení 1., 2. a 3. Dále se ještě může provést optimalizace výsledného kódu. Již před řadou let se v Teorii překladačů objevila zajímavá myšlenka snižující množství práce, které musí vynaložit softwarový výrobce překladačů při tvorbě překladačů z několika programovacích jazyků do několika různých platforem. Chce např. vytvořit překladače jazyků Pascal, Basic, C, Fortran pro počítač PC s MS DOS, vytvoří celkem 4 překladače. Má-li ještě vytvořit překladače z těchto jazyků do WIN XP, jsou to další 4 překladače. (C) 2005 Vladimír Váňa 3

4 Jestliže se mají udělat ještě překladače pro LINUX, Solaris, BSD Unix pro všechny uvedené jazyky, znamená to vytvořit 4 x 5 = 20 překladačů. Obecně pro N jazyků na M platforem je třeba vytvořit N x M překladačů. Myšlenka na zjednodušení tvorby těchto překladačů spočívá v tom, že se definuje jakýsi společný mezijazyk a vytvoří se pro N jazyků N překladačů do tohoto mezijazyka. Dále se pro M platforem vytvoří M překladačů z mezijazyka. Vytvoří se tedy pouze M + N překladačů, což je méně než M x N překladačů při tradiční tvorbě překladačů. V našem případě by to bylo = 9, což je méně než. 4 x 5 = 20 Teoretická struktura pravděpodobně žádný výrobce SW takový projekt tvorby překladačů nerealizoval: Tomuto nápadu se nejvíce přiblížily dvě platformy: J2EE firmy SUN Microsystems a.net Framework firmy Microsoft. V současné době jsou to zároveň nejrozšířenější a nejbouřlivěji se vyvíjející platformy. Ve firemní praxi jsou nejžádanější právě programátoři pro J2EE a.net Prakticky realizované firmou SUN Microsystems: (C) 2005 Vladimír Váňa 4

5 Architektura Microsoft.NET Framework uvedeny jen jazyky z Microsoft VS.NET, existují i překladače z jiných Jazyků třetích stran, zatím asi 50 jazyků, např. i DELPHI Poznámka: předchozí popis platforem J2EE a zejména.net je silně zjednodušený. Důležitou součástí obou platforem jsou rozsáhlé knihovny tříd a dalších komponent OOP. U MS. NET (C) 2005 Vladimír Váňa 5

6 navíc společný typový systém pro všechny jazyky této platformy, což má řadu výhod. Podrobněji se budeme platformou.net Framework zabývat v dalších učebních materiálech. Typy překladačů Kompilační překladač jako vstup vezme zdrojový kód, přeloží ho do binárního, spustitelného kódu. Při překladu je přeložen celý zdrojový kód.výsledkem je např. soubor s extenzí.exe (MS DOS, WIN). Překlad je proveden jen jednou. Při spouštění přeloženého programu již není potřeba překladač.případné syntaktické chyby ohlásí překladač již při překladu, takže vytvoření spustitelného programu je možné až po jejich odstranění. Interpretační ke spuštění programu je nutné mít interpretační překladač. Ten po startu programu přeloží část kódu, někdy i jen jeden příkaz, do strojového kódu a ten nechá počítač vykonat. Poté přeloží další část kódu a získaný binární kód opět nechá počítač provést = provádí se interpretace našeho kódu. Příkladem kompilačního překladače je např. Turbo Pascal, příkladem interpretačního řada implementací jazyka Basic. Program přeložený kompilačním překladem je rychlejší, než program interpretovaný, protože jeho běh již není zdržován překladem. Výhodou interpretovaného programu je obvykle menší spotřeba paměti neboť je přeložena vždy jen část programu. Interpretovaný program se obvykle lépe odlaďuje. V praxi se v současné době čistě interpretační překladače příliš nepoužívají. Používají se však překladače, které využívají obou principů. Příkladem je jazyk JAVA. Překladač javac překládající zdrojový kód do byte kódu je kompilační. JVM (Java Virtual Machine) pak byte kód interpretuje. Aby Java trochu omezila pomalost interpretace byte kódu, používá někdy tzv. JIT kompilátory (Just in Time),který v době zavádění programu do paměti jej přeloží do strojového kódu a ten poté vykonává. Pokud jde o platformu.net, tam je překlad vždy prováděn kompilátory JIT. Po počátečních zkušenostech s používáním vyšších programovacích jazyků se ukázalo, že programátorský styl založený na tom, že programátor si programuje naprosto svobodně, používá vymoženosti programovacího jazyka bez jakýchkoli omezení atd. není příliš efektivní. Pokud byl takový program složitější, obsahoval chyby, které se obtížně hledaly. Po čase se v programu nevyznal ani jeho tvůrce, natož někdo jiný. Změny úpravy programu byly pak velice obtížné až nemožné. Programování v té době mělo blíž k umělecké činnosti než k práci inženýrské. Proto se objevily snahy zavést na programátorskou práci určitá omezení a doporučení objevila se koncepce strukturovaného programování.nově vznikající jazyky jako např. Pascal tuto koncepci podporovaly. Program se měl členit do menších částí např. bloků, procedur či funkcí, které se daly samostatně odlaďovat. Z funkčních, odladěných, částí se pak skládal výsledný program. Tyto části se daly znovu používat i v jiných programech tzv. znovupoužitelnost kódu. Tím se šetřila programátorská práce. Požadavek na tvorbu stále složitějších programů a programových balíků vedly nakonec k tomu, že ani strukturované programování již nestačilo. Prosadila se proto koncepce Objektově orientovaného programování se svými třídami a objekty, tj. datovými strukturami obsahujícími i metody pro práci s daty těchto struktur. S OOP souvisí i zapouzdření dat, polymorfismus, dědění apod. Mezi jazyky objektově orientované patří i JAVA a C#. Kapitola 2. (C) 2005 Vladimír Váňa 6

7 Základy programování v jazyce C# Protože při vytváření programů v C# můžeme používat různé vývojové nástroje, ukážeme si teď jak pracovat s těmi nejrozšířenějšími. Syntaxe jazyka C# je ve všech případech stejná. Používáme totiž stále stejný překladač jazyka C# tj. program csc.exe, který je součástí Microsoft.NET Framework verze 1.1. K jistým změnám v syntaxi jazyka C# dojde v právě nastupující verzi 2.0, kterou bude používat např. nové Visual studio Nicméně zcela jistě zůstanou zachovány základní vlastnosti C#, tj. ty, kterými se zabýváme v této základní příručce. Základy programování v jazyce C# s použitím DELPHI2005 Předpokládám, že již máte nainstalovaný program DELPHI2005. (Popis instalace najdeme v souboru install.htm na instalačním CD.) Spustíme program DELPHI2005. Budeme vytvářet nový Project konzolovou aplikaci. V záložce File vybereme New a potom v rozvinutém menu zvolíme charakter projektu. Vybereme Console Application. Ve většině případů to po prvním spuštění DELPHI2005 po jeho nainstalování nebude tak jednoduché. Konzolová aplikace totiž není v praxi příliš častým případem vytvářeného programu a proto také nemá po nainstalování DELPHI2005 svou položku a ikonu v menu, viz. obr.1. Proto vybereme položku Other....Otevře se tím okno, viz.obr.2 (C) 2005 Vladimír Váňa 7

8 Vybereme ikonku Console Application a stiskneme OK. Tím zavoláme dialogové okno New Application, ve kterém v textboxu Name vyplníme název našeho projektu a v listboxu Location vyhledáme složku (adresář ), do kterého budeme ukládat soubory našeho projektu, obr.3. Nyní stiskneme tlačítko OK. Tím jsme vytvořili (resp. DELPHI2005 vytvořilo za nás ) první jednoduchý program. Jeho zdrojový kód je using System; namespace Program1 /// <summary> /// Summary description for Class. /// </summary> (C) 2005 Vladimír Váňa 8

9 class Class /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main(string[] args) // // TODO: Add code to start application here // Řádku obsahující class Class přepíšeme na class Prvni. Dále v Project Manageru obr.4. označíme soubor Class.cs, klikneme pravým tlačítkem myši. Tím se rozvine menu, ve kterém vybereme položku Rename a Class.cs přepíšeme na Prvni.cs. Nyní můžeme sestavit projekt a současně přeložit náš program vybráním položky Project v menu a v něm výběrem Build Program 1, popř. klávesami Shift + F9. (C) 2005 Vladimír Váňa 9

10 Touto akcí spustíme překladač, který již vytvoří soubor Program1.exe, spustitelný v prostředí.net Frameworku (Později se dozvíme, že jsme vytvořili assembly, přeložili kód v jazyce C# do kódu v MSIL. Ten je před vlastním spuštěním interně přeložen do nativního kódu Justin-time kompilátorem). Takto vytvořený krátký soubor Program1.exe lze spustit z příkazové řádky, nicméně při vývoji je výhodnější ho spouštět přímo z vývojového prostředí ( tj. nyní z DELPHI2005). Lze to provést výběrem Run v menu, obr.6. V tomto menu zvolíme Run, popř. Run Without Debugging. Jak je zřejmé z obr.6., lze spuštění programu provádět i přímo klávesou F9. Tento náš program, jak jste si jistě všimli, nedělá nic. Jen se spustí v režimu Příkazové řádky a ihned se ukončí (vždyť nic nedělá). Po ukončení programu je také ukončen režim příkazové řádky. Navenek se tedy běh našeho prvního, nejjednoduššího, programu projeví jen probliknutím černého okna příkazové řádky. (C) 2005 Vladimír Váňa 10

11 Aby náš program něco dělal, doplníme ho o dvě řádky kódu, kterými nahradíme následující úsek původního kódu // // TODO: Add code to start application here // Výsledkem tedy bude zdrojový kód using System; namespace Program1 /// <summary> /// Summary description for Class. /// </summary> class Prvni /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main(string[] args) Console.WriteLine("Ahoj C#"); Console.ReadLine(); Takto upravený zdrojový kód pro jistotu uložíme (v menu vybereme File a potom Save ) a potom přeložíme již popsaným způsobem. Např. klávesami Shift + F9 či pomocí menu Project a Build Program1. Takto vytvořený Program1.exe spustíme, např. pomocí F9. Jeho činnost se projeví následujícím oknem, obr.7. (C) 2005 Vladimír Váňa 11

12 Stiskneme klávesu Enter a toto okno zmizí. Třebaže náš první program funguje, nerozumíme spoustě věcí v zdrojovém kódu. Jazyk C# je jazykem objektově orientovaným a k jeho dokonalému využívání, k využívání tříd.net Frameworku a k vytváření svých vlastních tříd, k tomu, abychom se stali MISTRY v programování v C# bychom si potřebovali osvojit koncepci objektově orientovaného programování - OOP. K tomu budou sloužit další výukové materiály. V tomto materiálu, určeném pro začátečníky se zatím bez těchto znalostí obejdeme. Zaplatíme za to tím, že nebudeme vytvářet hezké okenní aplikace či webovské ASP.NET stránky, ale jen ošklivé konzolové aplikace. Až se naučíme základy programování v C#, budeme moci pokračovat tím, že si osvojíme základní znalosti o objektovém programování, a pak nám již nebude nic bránit v tom, abychom vytvářeli hezké a užitečné aplikace s využitím veškerého dobrodiní, které nám poskytuje.net Framework i vývojová prostřed RAD. Na tomto místě učiním ještě dvě poznámky: 1. naše konzolové aplikace vytváříme ve vývojovém prostředí DELPHI2005 či MS Visual Studio, můžeme však využít i jiná prostředí např. CSharpDeveloper a dokonce i jen jednoduchý textový editor např. Poznámkový blok (Notepad). Zdrojový kód těchto programů je totiž velice jednoduchý a přehledný. 2. v příloze 1 jsem se pokusil naše cvičné konzolové programy předělat na běžné windowsovské programy (v terminologii.net nazývané WinForms). Přitom jsem je pojmenoval tak, aby bylo ihned zřejmé, jak se jmenuje WinForm program vzniklý úpravou našeho konzolového programu. Např. WinForm program odpovídající konzolové aplikaci Prog3 se jmenuje Prog3w.Můžete zkusit místo konzolových aplikacích psát rovnou odpovídající Winform aplikace. Zdrojový kód je sice o mnoho složitější, než kód konzolové aplikace, ale jeho podstatnou část vytvoří wizard vývojového prostředí. Kód, který potom dopisujeme my, je však stejně dlouhý, jako ten, který píšeme u konzolové aplikace. Nesmíme ovšem přepisovat kód vytvořený wizardem, především proto, že k tomu zatím nemáme dostatečné znalosti. Navíc to není nutné a raději si zatím této části kódu nebudeme vůbec všímat. Protože začátečníci jsou často netrpěliví a místo (C) 2005 Vladimír Váňa 12

13 konzolových aplikací by rádi psali rovnou okenní programy, může být varianta WinForm programů z dodatku 1 pro ně přijatelnější, než obyčejné, byť přehledné, konzolové programy. Poté, co jsme na začátku zvolili, že chceme vytvářet konzolovou aplikaci, nám wizard z DELPHI2005 vytvořil kostru kódu (Vývojové nástroje, na rozdíl např. MS Office, nejsou lokalizovány do češtiny, tj. komunikují s námi většinou v angličtině. Proto je používám i v tomto textu. V Delphi2005 i v VS.NET najdete velký počet wizardů průvodce tvorbou aplikace tam totiž nenajdete). Ta obsahuje právě ty prvky OOP, které neznáme, a tak tuto práci budeme i nadále nechávat na DELPHI2005. Pouze pro informaci si teď řekneme, co vlastně vytvořil. Na první řádce zdrojového kódu je uvedeno using Systém; Jaký je jeho účel? Velice zjednodušeně si můžeme představit, že se tím kódu sděluje, jakou knihovnu tříd chceme použít. V našem případě to bude knihovna System, která obsahuje nejpoužívanější třídy platformy.net. Budeme-li chtít použít několik knihoven tříd, napíšeme několik řádků kódu. Každý z nich bude začínat slovem using a za ním bude uvedeno jméno požadované knihovny. Přesnějším vysvětlením první řádky using Systém; je to, že se tím provádí importování jmenného prostoru Druhý řádek namespace Program1 říká, že třída, jejíž kód je umístěn mezi složenými závorkami, bude umístěna v jmenném prostoru Program1 (který jsme si tímto příkazem právě vytvořili). Vysvětlení pojmu jmenný prostor ponecháme do dalších učebních materiálů. Na tomto místě si jen řekneme, že jeho účel je obdobný, jako je účel složek ( adresářů) v hierarchickém souborovém systému DOSu či Windows který nám umožňuje sdružovat spolu související soubory a tím udržovat pořádek v souborovém systému. Jistě si dovedete představit nepořádek v případě, kdy by všechny soubory Vašeho PC byly umístěny v jedné složce. Řádkem s kódem class Prvni začíná kód třídy jejíž jméno je První. Kód této třídy je opět umístěn mezi závorkami. V našem případě kód této třídy obsahuje jen kód jediné metody a to statické metody Main. Kód metody Main začíná řádkem static void Main(string [] args ) a je umístěn mezi závorkami. Metoda Main je vstupním bodem programu a musí být obsažena v každém programu v C#, který je konzolovou či WinForm aplikací. Klíčová slova void a static říkají, že tato metoda je statická, tj. není to metoda nějaké konkrétní instance nějaké třídy a že nevrací žádnou hodnotu. Co znamená předchozí věta si vysvětlíme, až se budeme učit OOP. Pokud jste se někdy setkali s jazykem C, C++ či Java, znáte metodu main(). V C# jste se na rozdíl od těchto jazyků setkali s metodu, která se jmenuje stejně, ale její první písmeno je velké. Navíc teď musíme učinit jednu velice důležitou poznámku. V některých jazycích, např. v jazyce Pascal nezáleží na velikosti písmen. Tj. v Pascalu je Begin, begin, BEGIN, begin totéž. (C) 2005 Vladimír Váňa 13

14 V jazyce C#, stejně jako v dalších jazycích odvozených od jazyka C záleží na velikosti písmen, takže např. main je něco jiného než Main. Poslední věcí ze zdrojového kódu vytvořeného wizardem, kterou si vysvětlíme jsou komentáře. Komentáře v zdrojových kódech mnoha programovacích jazyků slouží zejména k tomu, aby si programátor mohl v kódu udělat nějaké své poznámky. Např. poznámky o tom, co má program nebo nějaká jeho část dělat apod. Překladač pak tyto komentáře ignoruje a nepřekládá je. Jazyk C# zná tři typy komentářů. Wizard použil dva typy komentářů. Začátek těchto dvou typů komentářů začíná // resp. /// a končí koncem řádku. V dalším textu budu v některých případech uvádět kód, ze kterého vymažu komentáře vytvořené wizardem. Bude to v případech, že se tím uvedený kód zpřehlední. Kód, kterým budeme doplňovat kód vytvořený wizardem budeme ve všech programech vytvářených a popisovaných v tomto materiálu umisťovat místo poznámek: // // TODO: Add code to start application here // Proto zatím nepotřebujeme mít znalosti OOP. Další naší specialitou bude to, že budeme mít kód programu v jediném souboru, v tomto prvním programu v souboru Program1.cs. Až budeme v budoucnosti vytvářet větší programy, bude náš projekt často zdrojový kód v několika souborech. Dokonce bude možné kombinovat soubory se zdrojovými kódy v rozdílných programovacích jazycích platformy.net Nakonec si vysvětlíme jediné dvě řádky kódu, které jsme napsali sami. Je to Console.WriteLine("Ahoj C#"); Tímto příkazem voláme metodu WriteLine. Parametrem této metody, umístěným mezi kulatými závorkami je řetězec, ohraničený uvozovkami. Tento řetězec vypíše program na konzolu, tj. do toho černého okna. Pokud bychom v těle metody Main měli jen tento řádek, program by vypsal (C) 2005 Vladimír Váňa 14

15 nápis na konzolu a ukončil by se. Takže černé okénko s našim nápisem by jen krátce probliklo a ani bychom si nestačili nápis přečíst. Proto jsme do kódu dopsali ještě řádku: Console.ReadLine(); Zde se volá metoda ReadLine, která čte znak z klávesnice. Takže náš program prvním příkazem pomocí metody WriteLine vypíše nápis a pak čeká, až stiskneme klávesu. Po stisknutí klávesy metoda ReadLine přečte znak odpovídající námi stisknuté klávesy. V našem případě je nám jedno, co tato metoda přečetla. Použili jsme ji jen kvůli tomu čekání. Po stisknutí klávesy a přečtení odpovídajícího znaku se náš program ukončí. Než budeme pokračovat v studiu jazyka C# a psát další programy, ukážeme si, jak můžeme pracovat v jiných prostředích, než bylo námi zatím používané DELPHI2005. Základy programování v jazyce C# s použitím Visual Studia.NET 2003 popř. s VC#.NET 2003 Opět předpokládáme, že již máme nainstalovaný vývojový software. Spouštíme Visual Studio Poté v menu File vybereme New a poté Project..., popř. použijeme klávesovou zkratku Ctrl+Shift+N viz. obr.8 Po výběru Project... se objeví okno New project... V něm vybereme Project type: Visual C# Project, dále Templates: Console Application a dále vyplníme jméno projektu a jeho umístění, obr.9 a stiskneme OK. (C) 2005 Vladimír Váňa 15

16 Nyní nám wizard Visual Studia připravil kód using System; namespace Program1 /// <summary> /// Summary description for Class1. /// </summary> class Class1 /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main(string[] args) // // TODO: Add code to start application here // (C) 2005 Vladimír Váňa 16

17 Nyní již můžeme dopsat vlastní kód a umístit ho místo poznámky // TODO: Add code to start application here Dopíšeme jedinou řádku Console.WriteLine("Ahoj C#"); Po případném uložení si našeho programu pomocí File a Save all můžeme přeložit náš program. Provedeme to výběrem Build a poté Rebuild Program 1, obr.10. (C) 2005 Vladimír Váňa 17

18 Po tomto výběru se provede kompilace programu, že tato akce byla úspěšná, potvrzuje obsah okna Output, obr.11 Nyní již můžeme z prostředí Visual Studia spustit výsledný Program1.exe výběrem Debug a Start Without Debuging, popř. klávesovou zkratkou Ctrl+F5, obr.12 Výsledek vidíme v konzolovém okně, obr.13 (C) 2005 Vladimír Váňa 18

19 Po stisknutí libovolné klávesy okno zmizí a program je ukončen. Pokud porovnáme vytváření programu v DELPHI2005 a v Visual Studio.NET 2003, tak vidíme, že postup je prakticky stejný. I vývojová prostředí se liší jen velice málo. Největším rozdílem, kterého jste si mohli všimnout, je to, že nemusíme psát kód, ve kterém čekáme na stisknutí klávesy, abychom mohli v klidu vidět výsledek práce svého programu v konzolovém okně. Vývojové prostředí VS.NET2003 v Debug režimu totiž předpokládá, že si budete chtít obrazovku prohlídnout. Tak Vám jen dopíše Press any key to continue a čeká na zmáčknutí klávesy. Pokud bychom chtěli, mohli bychom, stejně jako v DELPHI2005 přejmenovat jméno třídy Class1 vytvořené wizardem na nějaké jiné jméno, popř. přejmenovat jméno souboru se zdrojovým kódem. Základy programování v jazyce C# s použitím Visual Studia.NET 2005 popř. s VC#.NET 2005 Express Opět předpokládáme, že již máme nainstalovaný vývojový software. Spouštíme Visual Studio Poté v menu File vybereme New a poté Project..., popř. použijeme klávesovou zkratku Ctrl+Shift+N viz. obr.14 (takže postup stejný, jako u VS.NET 2003 ) (C) 2005 Vladimír Váňa 19

20 Po výběru Project... se objeví okno New project... V něm vybereme Project type: Visual C# Project, dále Templates: Console Application a dále vyplníme jméno projektu a jeho umístění a jméno řešení, obr.15 a stiskneme OK. (C) 2005 Vladimír Váňa 20

21 Opět nám wizard připraví kostru zdrojového kódu: Nám zbývá jen dopsat řádku vlastního kódu do těla metody Main. Výsledný kód bude (C) 2005 Vladimír Váňa 21

22 using System; using System.Collections.Generic; using System.Text; namespace Program1 class Program static void Main(string[] args) Console.WriteLine("Ahoj C#"); Spustíme překlad Bezchybný překlad je potvrzen v okně Output: (C) 2005 Vladimír Váňa 22

23 Takže můžeme výsledný program spustit z prostředí VS.NET 2005 Jeho činnost se projeví výpisem do okna konzole: (C) 2005 Vladimír Váňa 23

24 Porovnání vývojových prostředí Zatím jsme se seznámili s třemi vývojovými prostředími. Mohli jsme si všimnout, že práce s nimi je téměř totožná. DELPHI 2005 i Visual Studio.NET 2003 dokonce vytváří i stejnou kostru aplikace, obě pracují nad.net Frameworkem v.1.1. Mají i prakticky stejný vzhled prostředí. Nové Visual Studio. NET 2005 má jiný, modernější vzhled a navíc pracuje nad novější verzí.net Frameworku verze 2.0. Proto wizard importuje trochu jiné jmenné prostory: using System; using System.Collections.Generic; using System.Text; Další viditelnou změnou je to, že wizard do kostry konsolové aplikace nevložil žádné poznámky. Toto prostředí budeme používat v dalších výukových materiálech.. Zatím je zdarma k dispozice ve verzi beta 2. ( červen 2005 ). Ostrá verze ve vydání Visual C#.NET Expres má být od podzimu k dispozici opět zdarma a již teď je zřejmé, že půjde o nejdokonalejší vývojový nástroj, takže využití tohoto profesionálního nástroje bude jistě dobrou volbou i pro výuku. V tomto elementárním výukovém materiálu však budeme v dalších kapitolách používat DELPHI Chci tím ve výuce základů programování zjednodušit přechod od jazyka PASCAL (C) 2005 Vladimír Váňa 24

25 k jazyku C#. Na tomto místě se pokusím zodpovědět na vnucující se otázku, proč se místo PASCALu učit C#: Začneme historií: V prosinci 1969 profesor Nicklaus Wirth vytvořil programovací jazyk Pascal. Jeho účelem bylo usnadnit studentům si osvojit koncepci strukturovaného programování. Komerčně využitelným se však jazyk PASCAL stal až poté, co v roce 1983 Andres Hejisberg z firmy Borland uvedl TURBO Pascal. Nejprve pro OS CP/M a poté i pro počítače PC s MS DOSem. Tento produkt pro DOS, jehož vývoj byl již dávno ukončen se dodnes často používá při výuce programování. Poté, co se v praxi začala prosazovat koncepce objektově orientovaného programování doplnil A. Hejisberg svůj Turbo Pascal o prvky OOP. Další významný počin učinil A. Hejisberg, když po příchodu operačního systému Windows doplnil Turbo Pascal, který mezitím přejmenoval na Object Pascal, o visuální prvky a vytvořil slavné DELPHI. DELPHI se pak stalo na dlouhou dobu vlajkovou lodí firmy Borland. Třetím významným počinem Andrese Hejisberga bylo to, že svou erudici a zkušenosti začal zúročovat poté, co opustil firmu Borland a začal pracovat jako senior architekt firmy Microsoft na návrhu platformy.net. Počátkem roku 1998 pak začal pracovat na vývoji jazyka C#. I po odchodu A. Hejisberga pokračovala firma BORLAND ve vývoji svého produktu DELPHI a stejně jako konkurence přicházela v 1 až 2 letých cyklech s novou verzí svého produktu. Dokonce přišla s výborným nápadem implementovat úspěšné DELPHI i na platformu Linux a tento svůj nápad uskutečnila. DELPHI pro Linux uvedla pod názvem Kylix. Jako velká výhoda měla být možnost v jazyce Pascal napsaný zdrojový kód využít při tvorbě programů pro Windows i Linux. Poměrně brzy po uvedení Kylixu uvedla Kylix 2. Poslední verzí je však Kylix 3 z října Poté tento nápad opustila a raději se věnovala vývoji prostředí pro jazyk Java JBuilderu. V maximálně ročních intervalech přichází s novými verzemi JBuilderu. Když se začala prosazovat platforma Microsoft.NET, začala firma Borland nejprve v verzi DELPHI 7 a hlavně DELPHI 8 portovat tento svůj významný produkt na.net. Vítězně se prosazující platforma.net s jazykem C# v praxi nakonec zcela porazila jazyk PASCAL. Zcela zvítězily dvě platformy. Starší J2EE s jazykem Java firmy SUN Microsystems a novější Microsoft.NET s jazykem C#. Programátoři v těchto jazycích patří k nejvyhledávanějším a velká poptávka je po těch, kteří programují v obou jazycích: Javě i C#. Firma Borland nakonec reagovala na výše zmíněné skutečnosti tím, že zcela přepracovala prostředí DELPHI a v DELPHI 2005 je toto prostředí téměř dvojníkem prostředí Visual Studio. NET Hlavně ale doplnila DELPHI o jazyk C#, přičemž jeho možnosti v DELPHI 2005 jsou větší, než jazyka Pascal, který v DELPHI 2005 ještě pod názvem Delphi language ponechala Kromě toho, že firma Borland, praktický tvůrce jazyka Pascal, přechází na C# je dalším důvodem, proč ve výuce nahradit jazyk Pascal a to, že tento jazyk byl navržen s ohledem na koncepci strukturovaného procedurálního programování. Jazyk C# vznikl o mnoho let později, v době kdy zcela převládlo objektově orientované programování a událostní programování. Vznikl v době, kdy již byly zkušenosti s velice úspěšným jazykem Java a tak mohl použít klady jazyka Java a naopak se vyvarovat jejich nedostatků. Hlavním důvodem, proč učit právě C# jsou ale požadavky firemní praxe a to, že již je zřejmé, že nejde o nějakou módní novinku. Firmě Microsoft se podařilo svého korunního prince prosadit. (C) 2005 Vladimír Váňa 25

26 Kromě profesionálních vývojových nástrojů můžeme při výuce programování v C# používat i nástroje jako např. SharpDeveloper. I tato cesta může vést k úspěchu, viz např. kde si můžeme přečíst i další důvody, proč se učit C#. Než přistoupíme k další výuce programování v C#, musíme učinit ještě dvě poznámky týkající se DELPHI 2005 a VS.NET. Po překladu našich programů jsme prováděli spuštění našeho programu přímo z vývojového prostředí. VS.NET nám umožnilo, že i bez vložení řádky Console.ReadLine(); můžeme v režimu příkazové řádky sledovat činnost našeho programu. V případě, kdy budeme náš program spouštět přímo, tj. rovnou ze systému spustíme Program1.exe, dojde k tomu, že po ukončení běhu tohoto programu bude ukončen režim příkazové řádky a my uvidíme jen krátké probliknutí černé obrazovky. Proto bude rozumné na konci našich programů umisťovat řádku s Console.ReadLine(); i ve VS.NET. Další poznámka se týká upozornění, že jsme vytvořili program za použití kompilátoru v režimu Debug. Pro školní účely by to mohlo stačit. Z hlediska praxe je ale dobré si zvykat na to, že po odladění programu je vhodné vytvořit pro zákazníka konečnou verzi za použití kompilátoru v režimu Release. V DELPHI 2005 tento režim nastavíme volbou Project a poté Optioms (C) 2005 Vladimír Váňa 26

27 A vybereme možnost Release. ( v ostatních vývojových prostředích postupujeme obdobně) Nyní již máme dostatečné počáteční vědomosti týkající se práce s některým z vývojových prostředí a tak se pustíme do programování. Program2 bude jen rozšířením Programu1. Jeho zdrojový kód using System; namespace Program2 class Class static void Main(string[] args) Console.Write("ahoj"); Console.WriteLine("toto je muj"); Console.Write("novy program."); Console.Read() ; Při jeho vytváření jsme opět využili wizard a vybrali jsme konzolovou aplikaci. Z kódu vytvořeného wizardem jsme odstranili všechny poznámky a naopak jsme doplnili 4 řádky vlastního kódu. Třebaže zatím neznáme nic z OOP, můžeme k našim 4 vlastním řádkám kódu poznamenat, že v nich se provádí volání metod třídy Console. Jména těchto metod jsou umístěna za tečkou ( tzv. tečková notace).jistě jste si všimli, že pokud při psaní zdrojového kódu používáte VS.NET či DELPHI2005, zobrazí se Vám po napsání tečky za jménem třídy seznam jejich datových a funkčních členů ( metod). V DELPHI2005 to vypadá takto: (C) 2005 Vladimír Váňa 27

28 Po překladu a spuštění Programu2, se na konzoli vypíše ahojtoto je muj novy program. Určitě jste si všimli, že za slovem ahoj není mezera. Metoda Write při výpisu totiž pokračuje za předchozím textem. Metoda WriteLine vypisuje text stejně jako metoda Write, ale po výpisu textu ještě přejde na nový řádek. Od dalších programů kromě výpisu na konzoli budeme vyžadovat i další činnost. K tomu budeme v programech potřebovat proměnné ( později se dozvíme, že v jazyce C# mohou být proměnné třídy a proměnné instance). Proměnné Zatím jsme v prvních dvou programech pracovali jen s znakovými řetězci. Předpokládejme, že chceme dělat něco složitější, např. sečíst dvě čísla a výsledek vytisknout. K tomu ale budeme potřebovat místo v paměti, kam uložíme hodnoty obou sčítanců, a také místo pro uložení výsledku. Jinak řečeno, budeme potřebovat proměnné. Abychom mohli proměnné používat, musíme systému přikázat, aby je vytvořil. Musíme deklarovat proměnné. Deklarujeme ji takto: datový_typ identifikátor. Abychom mohli proměnnou používat, musíme ji inicializovat. Později si ukážeme, jak se inicializace provádí. Nejdříve si ale vyjmenujeme a popíšeme datové typy, které budeme při programování používat. Proměnné rozdělujeme do dvou skupin, podle toho, v jaké paměti se uchovávají. V zásobníkové paměti se uchovávají tzv. Hodnotové typy. Naopak v tzv. haldě se uchovávají Odkazové typy. Za definice typů používaných v prostředí.net zodpovídá jednotný typový systém ( CTS - Common Type System). Většina programovacích jazyků pro prostředí.net však často používá (C) 2005 Vladimír Váňa 28

29 alternativní názvy neboli aliasy těchto typů. Např. celé číslo v systému CTS skládající se ze čtyř bytů je označeno typem Systém.Int32. Jazyk C# používá jako přezdívku int. V použití obou názvů nejsou žádné rozdíly. V následující tabulce jsou uvedeny běžné typy CTS a jejich aliasy v C#. Typ systému CTC alias v C# popis Systém.Object object základ všech typů systému CTS Systém.String string řetězec Systém.SByte sbyte 8 bitová hodnota se znaménkem Systém.Byte byte 8 bitová hodnota bez znaménka Systém.Int16 short 16 bitová hodnota se znaménkem Systém.UInt16 ushort 16 bitová hodnota bez znaménka Systém.Int32 int 32 bitová hodnota se znaménkem Systém.UInt32 uint 32 bitová hodnota bez znaménka Systém.Int64 long 64 bitová hodnota se znaménkem Systém.UInt64 ulong 64 bitová hodnota bez znaménka Systém.Char char 16 bitový znak v kódování Unicode Systém.Single float 32 bitové reálné číslo podle standardu IEEE Systém.Double double 64 bitové reálné číslo podle standardu IEEE Systém.Boolean bool logická hodnota Systém.Decimal decimal Datový typ o 128 bitech pro výpočty s 28 nebo 29 platnými číslicemi Vyjmenovali jsme si všech 15 předdefinovaných typů, které se v jazyku C# vyskytují. Mezi nimi jsou typy object a string odkazové typy. Zbývající jsou hodnotové. U nich si nyní ukážeme, jak je definovat a následně inicializovat v programu. Pojďme si nyní postupně vysvětlit jak je definovat a následně inicializovat v programu. Definice a inicializace Ukázky definice a inicializace proměnných si ukážeme na dalším příkladu programu: using System; (C) 2005 Vladimír Váňa 29

30 namespace Program3 class Prog3 static void Main(string[] args) int i ; long l = ; float f; bool b; char ch; string s; i = 10; f = f; b = true; ch = 'A'; s = "řetězec znaků"; Console.WriteLine(i); Console.WriteLine("toto je reálné číslo f = " + f); Console.WriteLine("toto je řetězec " + s + " a jeden znak " + ch); Console.WriteLine("toto je velké číslo l=0",l); Console.WriteLine("tuto hodnotu vypíšeme na dalším řádku \n\t\"" + b + "\""); Console.ReadLine() ; V těle metody Main je nejprve definována proměnná i datového typu int. Na dalším řádku máme nejenom definici proměnné typu long, ale je jí i přiřazena hodnota, konkrétně Na dalších čtyřech řádcích jsou definice dalších proměnných. Máme tedy definováno šest (C) 2005 Vladimír Váňa 30

31 proměnných, jedna z nich je i inicializovaná. Zbývajících pět proměnných je inicializováno na dalších řádcích. Všimněme si, že v jazyce C# za číslicemi, kterými označujeme hodnoty proměnných můžeme a někdy dokonce musíme napsat určité písmeno. K reálné proměnné f, kterou jsme definovali jako float musíme za číslo napsat malé nebo velké písmeno f (F) aby tato proměnná byla definovaná jako typ float. Jinak by překladač jazyka C# vypsal chybu. Považuje každé číslo jiné než celé, za číslo typu double. Rovněž za číslem typu decimal musí následovat písmeno m nebo M. např. decimal = M. Zdá se to sice zbytečně komplikované, ale donutí nás to přemýšlet o typech použitých proměnných, a tím zmenšit možnost toho, že způsobíme chybu. Typ bool může nabývat hodnot true (pravda) nebo false (nepravda). Jako další typ jsme inicializovali char. Hodnoty typu char jsou znaky. Přestože je tento typ zvnějšku podobný typu char používanému v jazycích C a C++, je mezi nimi jeden podstatný rozdíl. Typ char v jazyce C++ zastupuje 8bitový znak, zatímco stejnojmenný typ v jazyce C# zastupuje znak o délce 16 bitů. I to je jeden z důvodů, proč v jazyce C# nelze implicitně převádět hodnoty typu char na 8bitové hodnoty typu byte. Přestože ke kódování všech znaků anglické abecedy a číslic stačí pouhých 8 bitů, stejný počet bitů je již zcela nepostačující pro kódování abeced s větším rozsahem znakových sad (např. čínštiny). Proto se v IT oboru přechází od 8bitových znakových sad k 16bitovému kódu Unicode, jehož podmnožinou je i kódování ASCII. Konkrétní hodnoty (literály) typu char jsou ohraničeny apostrofy např. 'A'. Pokusíme-li se ohraničit znak uvozovkami, bude překladač hlásit chybu.. Posledním typem v našem programu je string. String chápeme jako určitý řetězec znaků typu char, který zadáváme do uvozovek. Další příkaz, WriteLine jsme si již popsali. Metoda WriteLine umožňuje zobrazit výstup z programu. Ukázali jsme si různé možnosti použití této metody. Na první řádce se vypíše jen hodnota proměnné. Na dalším řádku se provádí spojení retězců pomocí znaménka +. Řetězec je v uvozovkách a hodnota se zobrazí po přidání + a názvu hodnoty. Všechny řetězce se spojují pomocí +. Znaménko + v tomto případě neslouží k označení operátoru sčítání čísel, ale spojení, zřetězení, řetězců. Další výpis řetězce je ukázkou použití indexů v složených závorkách. Slouží k označení míst v řetězci, do kterých metoda WriteLine umístí hodnoty proměnných, jejichž názvy jsou umístěny za čárkou uvedenou za řetězcem. U posledního použití metody WriteLine jsme použili spojení řeťězců, ale i použití některých řídících znaků. Tak \n vyjadřuje, že se má skočit na nový řádek, potom následuje \t což znamená (tabulátor) posun a nakonec jsme použili \, které zobrazí uvozovky. Výstup z našeho třetího programu bude tedy následující: 10 toto je reálné číslo f = 1,2345 toto je řetězec řetězec znaků a jeden znak A toto je velké číslo l = tuto hodnotu vypíšeme na dalším řádku True (C) 2005 Vladimír Váňa 31

32 Kromě proměnných občas potřebujeme konstanty. V podstatě jsou to proměnné, jejichž hodnoty nemůžeme při běhu programu měnit. Zapisujeme je tak, že před definici a inicializaci umístíme klíčové slovo const. Např. const int i = 10;. Abychom mohli pracovat s proměnnými, potřebujeme ještě operátory, jimi se budeme zabývat v poslední části této kapitoly. Operátory Množina operátorů v jazyce C# je až na několik výjimek identická s operátory dostupnými v jiných programovacích jazycích. Nejvíce se podobá množině operátorů v C++ a Javě. Uvedeme si tabulku základních operátorů: Operátory kategorie operátory Aritmetické + - * / % Logické & ^ ~ &&! Spojování řetězců + Inkrementace a dekrementace Posun bitů << >> Porovnání ==!= <> <= >= Přiřazení = += -= *= /= %= = ^= <<= >>= Přístup k členům (pro objekty a struktury). Indexování(pole a indexy) [] Přetypování () Podmíněný příkaz? : Tvorba objektů Typové informace Řídící přepínač new sizeof is typeof as checked unchecked Zatím není nutné si ukazovat, jak všechny tyto operátory fungují, protože ještě neznáme další prvky jazyka, např. cykly, podmíněné příkazy apod..všechny operátory se ale budeme snažit používat v našich programech. Alespoň několik jich použijeme v následujícím, posledním, programu této kapitoly. (C) 2005 Vladimír Váňa 32

33 Ještě se ale zmíníme o komentářích. Komentáře vkládáme do zdrojového kódu abychom ho tím učinili srozumitelnějším. Můžeme do nich napsat cokoli, protože překladač ignoruje vše umístěné v komentářích. Známe dva tvary komentářů: /* vše co je za lomítkem a hvězdičkou se chápe jako komentář až k jeho ukončení pomocí */ Dalším druhem komentáře je // vše co se nachází za dvěma lomítky na daném řádku Modifikací tohoto komentáře je komentář začínající /// sloužící k tvorbě dokumentace v souborech XML. Zdrojový kód slíbeného čtvrtého programu: using System; /* program Prog4 je napsán, aby předvedl použití operátorů - tento text je poznámkou, která se nepřekládá */ namespace Program4 /// <summary> /// slouží k popisu v dokumentaci k Prog4. /// </summary> class Prog4 [STAThread] //atributy jsou novinkou v C# static void Main(string[] args) int i, j, z;//toto je komentář na jednom řádku int x = 1, y = 2; string s, k, l; /* rovněž komentář ale tento může být na několika řádkách */ i = 34; j = 56; i = i + j; //toto je součet x += y; //toto je totéž, co x = x + y z = i % x; // % znamená že dostaneme zbytek po dělení j++; // operátor inkrementace, připočítává 1 k j y--; // dekrementace -- odčítá 1 od y /* ++ a -- mohou být postfixové, tj. uvedené za proměnnou, ale mohou být i prefixové ++j či --y */ Console.WriteLine(i + " " + x + " " + z + " " + j + " " + y); (C) 2005 Vladimír Váňa 33

34 Console.WriteLine("dá se to napsat i takto "); Console.WriteLine("i=0 x=1 z=2 j=3 y=4",i,x,z,j,y); s = "ahoj"; k = "C#"; l = s + k; // spojení dvou řetězců pomocí + s ahoj takto se "; Console.WriteLine("\n" + l); Console.Write(s); Console.ReadLine(); V tomto programu jsme použili jen několik základních operací. S dalšími se seznámíme v dalších programech. V zdrojovém kódu jsme umístili komentáře popisující jednotlivé operace. Výstup programu bude: dá se to napsat i takto i=90 x=3 z=0 j=57 y=1 ahojc# ahoj takto se Jediné co ještě potřebuje vysvětlení je použití řetězce string s, kterému jsme nejprve přiřadili řetězec ahoj a potom o dva řádky později jsme tento řetězec změnili. Takto měnit hodnoty řetězce je možné. Naopak není možné tentýž řetězec definovat několikrát. Například není možné: string s = "ahoj"; string s = "C#"; Na druhé straně je dovolené: string s = "ahoj"; s = "C#"; (C) 2005 Vladimír Váňa 34

35 Ještě si všimněme použití před uvozovkami. Vše co je za nimi až k uzavíracím uvozovkám se pošle na výstup. Včetně řídícího znaku nový řádek. Závěr V této kapitole jsme se seznámili s proměnnými, s operátory, příkazem WriteLine, s prací s vývojovým prostředím, s tím, jak kompilovat a spouštět programy. Rovněž jsme poznali, jak vypadá struktura konzolové aplikace, jak inicializovat proměnné a jak vypadají základní operace s proměnnými. Pokud jste již programovali v nějakém programovacím jazyce, nebylo to pro Vás nic objevného. Ale pokud jste ještě žádný programovací jazyk nepoužívali, měli byste po této kapitole pochopit alespoň trochu základy jazyka C#. Kapitola 3. Kontrola běhu programu v jazyce C# (Podmínkové příkazy) K tomu, abychom uměli alespoň základy programování v jazyce C# potřebujeme mít možnost provádět větvení algoritmu. Jinak řečeno, mít příkazy větvení, které umožňují předepsat, která část programu se má provést a to v závislosti na hodnotě určitého výrazu. Jazyk C# nám poskytuje dva takové příkazy if a switch. Podmínkové příkazy V podmínkových příkazech se při splnění podmínky vykoná námi definovaný příkaz, není-li splnění, vykoná se jiný námi definovaný příkaz. Mezi podmínkové příkazy patří if, který zjišťuje zda je splněná podmínka a příkaz switch který porovnává výrazy. Příkaz if se vyskytuje asi v každém programovacím jazyce. Jeho tvar je následujcí: if (podmínka) příkazy,které se mají provést v případě splnění podmínky else příkazy,které se mají provést v případě nesplnění podmínky Pokud by ze podmínkou následoval jen jeden příkaz, tak bychom nemuseli psát složené závorky. Je však lepší tyto složené závorky používat i v případě jediného příkazu. Výsledný kód je přehledný a snadno doplnitelný o další příkazy prováděné při splnění podmínky. Pokud chceme použít více než dvě podmínky, místo else použijeme else if. Pokusme se vytvořit jednoduchý program s použitím if, else, else if. using System; (C) 2005 Vladimír Váňa 35

36 namespace Program5 class Prog5 [STAThread] static void Main(string[] args) int i, j; i = 2; j = 20; string s = "ahoj"; if (i!= 1) // i!=(se nerovná) 1 j = 10; //změna hodnoty proměnné j Console.WriteLine("Toto je if a hodnota j = " + j); else //jinak, v opačném případě Console.WriteLine("Toto je else a hodnota j = " + j); if (s == "ahoj") //if vždy vrací booleovsku hodnotu Console.WriteLine(s); else if (s == "a") //pokud chceme mít několik podmínek použijeme else if Console.WriteLine(s); else if (s == "b") Console.WriteLine(s); Console.Read (); (C) 2005 Vladimír Váňa 36

37 V prvém if zjišťujeme zda hodnota i se nerovná jedničce. V případě nerovnosti se provede příkaz následující za složenými závorkami.tedy tuto podmínku splňuje každá hodnota různá od 1. Pokud by se, ale i rovnalo jedničce, tak se vykoná příkaz, který následuje za else. Při druhém if zjišťujeme zda se rovnají obsahy řetězců. Není-li splněná první podmínka (if), skočí se na druhé (else if), kde se zkontroluje zda je splněná podmínka. Pokud ne, tak se přesuneme na další (else if). Pokud není splněná žádná z podmínek, neprovede se žádný příkaz. Výstup je: Toto je if a hodnota j = 10 ahoj Je vidět, že se v obou případech splnila první podmínka. Pokud bychom hodnotu i nebo s změnili, tak se změní i výstup. Podmínkové příkazy lze do sebe vnořovat. Uveďme si další program ve kterém je použito vnořené if: using System; namespace Program6 class Prog6 [STAThread] static void Main(string[] args) int i; i = 7; if ((i > 1) && (i < 10)) //když hodnota bude z intervalu (1,10) if (i <= 5)// interval (1,5> Console.WriteLine("Číslo je menší nebo rovno 5"); else // interval (5,10) Console.WriteLine("Číslo je větší než 5 ale menší než 10"); (C) 2005 Vladimír Váňa 37

38 else // hodnota bude z intervalu <10, ) Console.WriteLine("Číslo je větší nebo rovné 10"); Console.ReadLine(); K příkazu if v jazyce C# musíme poznamenat, že výsledkem vyhodnocení podmínky je vždy jen true nebo false. To znamená, že v podmínce nemůžeme použít např. přiřazení nějaké hodnoty (i = 1 nebo i++). Tím se liší C# např. od jazyka C. Pro spojení dvou podmínek je použit logický operátor &&, znamenající a zároveň. V našem případě je podmínka splněná, takže pokračujeme v zjišťování dalších vnořených podmínek. Hodnota i = 7, proto výstup bude: Číslo je větší než 5 ale menší než 10. Vstup z konzole Než uvedeme další program využívající příkazy if, popíšeme si užití metody Console.Read() umožňující provádět vkládání znaků z konzole, a tím vkládat data při běhu programu. Metoda Console.Read() vrací hodnotový typ int. Zadáme-li například číslo 4 do konzoly, vrací nám tato metoda hodnotu znaku 4 v ASCII kódu.(což je 52). Pokud bychom chtěli tuto hodnotu převést na načtený znak, použili bychom kód: int i = Console.Read(); char ch = (char) i; Console.WriteLine(ch); Na prvém řádku se do proměnné i načte hodnota vloženého znaku v ASCII kódu. Na dalším řádku se provede převod, přetypování, na znak typu char. Metoda Console.Read() vždy vrací jen první znak. Pokud chceme přečíst celý řádek (řetězec znaků) musíme použít metodu Console.ReadLine(). string s = Console.ReadLine(); Console.WriteLine(s); Metody Console.Read() a Console.ReadLine() ukončujeme po stisknutí klávesy Enter. Existuje ještě další metoda Console.ReadKey (), která provádí načtení stisknuté klávesy. Převody Převod typů neboli přetypování se v jazyce C# provádí implicitně nebo explicitně. typů (C) 2005 Vladimír Váňa 38

39 int i = 1234; long l = i; float f = i; Implicitní převod dovoluje převést menší typ na typ větší. Menším či větším typem rozumíme, zda zaujímá v paměti více či méně bytů. Lze též provést převod mezi číslem celým a reálným. Implicitní převod vlastně znamená automatický převod bez použití nějakého specielního příkazu. Např. typ int můžeme převést na typ long, float, double a decimal. Typ char na ushort, int, uint, long, ulong, float, double, decimal. V případě kdy chceme převést větší typ na menší, musíme použít explicitní převod (přetypování), např.. long l = 45678; int i = (int)l; V závorkách je uveden typ, na který chceme přetypovat hodnotu proměnné uvedené za závorkou. Pokud se ale hodnota této proměnné nevejde do přetypovaného typu, uloží se do ní nesprávná hodnota. Přesto program neohlásí žádnou chybu. V dalším programu s využitím příkazů if a Console.ReadLine() naprogramujeme jednoduchou kalkulačku. using System; namespace Program7 //program kalkulačka - pozor, neprovádí se // kontrola vkládaných dat = pokud vložíme nesmysly, dojde k výjimce class Prog7 [STAThread] static void Main(string[] args) decimal i,x,y; // budeme počítat s desetinnými čísly string s; Console.WriteLine("Zadej číslo"); x = Convert.ToDecimal(Console.ReadLine());/* Console.ReadLine() vrací * string, proto ho musíme * převést na číslo pomocí * Convert.ToDecimal */ (C) 2005 Vladimír Váňa 39

Zápis programu v jazyce C#

Zápis programu v jazyce C# Zápis programu v jazyce C# Základní syntaktická pravidla C# = case sensitive jazyk rozlišuje velikost písmen Tzv. bílé znaky (Enter, mezera, tab ) ve ZK překladač ignoruje každý příkaz končí ; oddělovač

Více

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

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty. Proměnná Pojmenované místo v paměti sloužící pro uložení hodnoty. K pojmenování můžeme použít kombinace alfanumerických znaků, včetně diakritiky a podtržítka Rozlišují se velká malá písmena Název proměnné

Více

Programovací jazyk Pascal

Programovací jazyk Pascal Programovací jazyk Pascal Syntaktická pravidla (syntaxe jazyka) přesná pravidla pro zápis příkazů Sémantická pravidla (sémantika jazyka) pravidla, která každému příkazu přiřadí přesný význam Všechny konstrukce

Více

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

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: 1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.

Více

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

NPRG031 Programování II --- 2/2 Z, Zk 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

Více

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí) Programovací jazyky Programovací jazyky nižší assembler (jazyk symbolických instrukcí) vyšší imperativní (procedurální) Pascal, C/C++, Java, Basic, Python, php neimperativní (neprocedurální) Lisp, Prolog

Více

Programování v C++ Úplnej úvod. Peta (maj@arcig.cz, SPR AG 2008-9)

Programování v C++ Úplnej úvod. Peta (maj@arcig.cz, SPR AG 2008-9) Programování v C++ Úplnej úvod 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

Více

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

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

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

24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1 24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE AUTOR DOKUMENTU: MGR. MARTINA SUKOVÁ DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 UČIVO: STUDIJNÍ OBOR: PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) INFORMAČNÍ TECHNOLOGIE

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Výrazy Operátory Výrazy Verze pro akademický rok 2012/2013 1 Operace, operátory Unární jeden operand, operátor se zapisuje ve většině případů před operand, v některých případech

Více

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

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace Předmět: Učební praxe Téma: Program Vyučující: Ing. Milan Káža Třída: EK3 Hodina: 19-21 Číslo: V/5 Programování v jazyce

Více

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

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: 1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.

Více

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

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 Logické operace Datový typ bool může nabýt hodnot: o true o false Relační operátory pravda, 1, nepravda, 0, hodnoty všech primitivních datových typů (int, double ) jsou uspořádané lze je porovnávat binární

Více

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

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 KAPITOLA 1 Úvod do programo vání v jazyce C++ 17 Základní pojmy 17 Proměnné a konstanty 18 Typy příkazů 18 IDE integrované vývojové

Více

Úvod do programovacích jazyků (Java)

Úvod do programovacích jazyků (Java) Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích

Více

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

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií 1 Fakulta elektrotechniky a informatiky Katedra softwarových technologií 12. října 2009 Organizace výuky Přednášky Teoretické základy dle normy jazyka C Cvičení Praktické úlohy odpřednášené látky Prostřední

Více

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

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace Předmět: Vývoj aplikací Téma: Datové typy Vyučující: Ing. Milan Káža Třída: EK3 Hodina: 5 Číslo: V/5 Programování v jazyce

Více

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

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní Základy jazyka C# doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah přednášky Architektura.NET Historie Vlastnosti

Více

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

Paměť počítače. alg2 1 Paměť počítače Výpočetní proces je posloupnost akcí nad daty uloženými v paměti počítače Data jsou v paměti reprezentována posloupnostmi bitů (bit = 0 nebo 1) Připomeňme: paměť je tvořena řadou 8-mi bitových

Více

Algoritmizace. Cíle předmětu

Algoritmizace. Cíle předmětu Cíle předmětu Algoritmizace naučit se sestavovat algoritmy řešení jednoduchých problémů a zapisovat je v jazyku Java Organizace předmětu přednášky (učast nepovinná, ale doporučená) cvičení střídavě u tabule

Více

URČITÝM ZPŮSOBEM PODOBNÉ

URČITÝM ZPŮSOBEM PODOBNÉ Objekty Svět se skládá z objektů! konkrétní x abstraktní hmatatelné x nehmatatelné (letadlo) x (chyba v programu) Objekty mohou obsahovat jiné objekty (tělo obsahuje buňky, letadlo součásti). Objekty URČITÝM

Více

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

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu } 5. Operátor čárka, - slouží k jistému určení pořadí vykonání dvou příkazů - oddělím-li čárkou dva příkazy, je jisté, že ten první bude vykonán dříve než příkaz druhý. Např.: i = 5; j = 8; - po překladu

Více

Jazyk C# a platforma.net

Jazyk C# a platforma.net Jazyk C# a platforma.net Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Pavel Štěpán, 2011 Syntaxe jazyka C# - 1. část BI-DNP Evropský sociální fond

Více

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

5 Přehled operátorů, příkazy, přetypování 5 Přehled operátorů, příkazy, přetypování Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně budou uvedeny detaily týkající se operátorů. Doba nutná k nastudování

Více

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

NPRG031 Programování II 1 / :47:55 NPRG031 Programování II 1 / 43 23. 2. 2016 11:47:55 Objekty Svět se skládá z objektů! Objekt = data + funkce (metody) konkrétní x abstraktní hmatatelné x nehmatatelné (letadlo) x (chyba v programu) Objekty

Více

7. Datové typy v Javě

7. Datové typy v Javě 7. Datové typy v Javě Primitivní vs. objektové typy Kategorie primitivních typů: integrální, boolean, čísla s pohyblivou řádovou čárkou Pole: deklarace, vytvoření, naplnění, přístup k prvkům, rozsah indexů

Více

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632

Více

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

6. Příkazy a řídící struktury v Javě 6. Příkazy a řídící struktury v Javě Příkazy v Javě Příkazy v Javě Řídicí příkazy (větvení, cykly) Přiřazovací příkaz = Řízení toku programu (větvení, cykly) Volání metody Návrat z metody - příkaz return

Více

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

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek 8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek 1/41 Základní příkazy Všechny příkazy se píšou malými písmeny! Za většinou příkazů musí být středník (;)! 2/41 Základní příkazy

Více

Ahoj mami. Uložení dat v počítači. Příklady kódování dat. IAJCE Přednáška č. 4

Ahoj mami. Uložení dat v počítači. Příklady kódování dat. IAJCE Přednáška č. 4 Uložení dat v počítači Data = užitečné, zpracovávané informace Kódování (formát) dat = způsob uložení v počítači (nutno vše převést na čísla ve dvojkové soustavě) Příklady kódování dat Text každému znaku

Více

Objektově orientované programování

Objektově orientované programování 10. října 2011 Pragmatické informace Volitelný předmět, zápočet: zápočtový program(s dokumentací), aktivní účast na cvičení(body v CodExu), praktický test, zkouška: zkoušková písemka na objektový návrh

Více

ALGORITMIZACE A PROGRAMOVÁNÍ

ALGORITMIZACE A PROGRAMOVÁNÍ Metodický list č. 1 Algoritmus a jeho implementace počítačovým programem Základním cílem tohoto tematického celku je vysvětlení pojmů algoritmus a programová implementace algoritmu. Dále je cílem seznámení

Více

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

Lekce 6 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C Identifikační údaje školy Číslo projektu Název projektu Číslo a název šablony Autor Tematická oblast Číslo a název materiálu Anotace Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace

Více

ČÁST 1. Základy 32bitového programování ve Windows

ČÁST 1. Základy 32bitového programování ve Windows Obsah Úvod 13 ČÁST 1 Základy 32bitového programování ve Windows Kapitola 1 Nástroje pro programování ve Windows 19 První program v Assembleru a jeho kompilace 19 Objektové soubory 23 Direktiva INVOKE 25

Více

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

NMIN201 Objektově orientované programování 2016/17 1 / :03:29 NMIN201 Objektově orientované programování 2016/17 1 / 42 21. 11. 2016 11:03:29 Objekty Svět se skládá z objektů! konkrétní x abstraktní hmatatelné x nehmatatelné (letadlo) x (chyba v programu) Objekty

Více

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

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5 Obsah Obsah 1 Programovací jazyk Pascal 1 1.1 Struktura programu v Pascalu.................... 1 2 Proměnné 2 2.1 Vstup a výstup............................ 3 3 Operátory a některé matematické funkce 5

Více

Úvod do programování. Lekce 1

Úvod do programování. Lekce 1 Úvod do programování Lekce 1 Základní pojmy vytvoření spustitelného kódu editor - psaní zdrojových souborů preprocesor - zpracování zdrojových souborů (vypuštění komentářů atd.) kompilátor (compiler) -

Více

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

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu: Čtvrtek 8 prosince Pascal - opakování základů Struktura programu: 1 hlavička obsahuje název programu, použité programové jednotky (knihovny), definice konstant, deklarace proměnných, všechny použité procedury

Více

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

C# konzole Podíl dvou čísel, podmínka IF C# konzole Podíl dvou čísel, podmínka IF Tematická oblast Datum vytvoření 2013 Ročník 3 Stručný obsah Způsob využití Autor Kód Internetové technologie, programování Výpočet podílu v konzolové aplikaci

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Řídicí struktury jazyka Java Struktura programu Příkazy jazyka Blok příkazů Logické příkazy Ternární logický operátor Verze pro akademický rok 2012/2013 1 Struktura programu

Více

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

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech 7 Formátovaný výstup, třídy, objekty, pole, chyby v programech Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost formátovanému výstupu,

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Struktura programu Vytvoření nové aplikace Struktura programu Základní syntaktické elementy První aplikace Verze pro akademický rok 2012/2013 1 Nová aplikace NetBeans Ve vývojovém

Více

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY Stručný úvod do programování v jazyce C 1.díl České vysoké učení technické Fakulta elektrotechnická A1B14MIS Mikroprocesory pro výkonové systémy 06 Ver.1.10 J. Zděnek,

Více

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

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7 Pascal Katedra aplikované kybernetiky Ing. Miroslav Vavroušek Verze 7 Proměnné Proměnná uchovává nějakou informaci potřebnou pro práci programu. Má ve svém oboru platnosti unikátní jméno. (Připadne, musí

Více

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

Programovací jazyk. - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi) Programovací jazyk - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi) Odlišnosti implementace od normy - odchylky např.: nepovinná hlavička programu odlišná

Více

Sada 1 - Základy programování

Sada 1 - Základy programování S třední škola stavební Jihlava Sada 1 - Základy programování 05. Turbopascal, prostředí TP6, struktura programu v TP Digitální učební materiál projektu: SŠS Jihlava šablony registrační číslo projektu:cz.1.09/1.5.00/34.0284

Více

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

9.3.2010 Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h> 9.3.2010 Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include int main(void) { int dcislo, kolikbcislic = 0, mezivysledek = 0, i; int vysledek[1000]; printf("zadejte

Více

Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace

Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace Číslo projektu Číslo materiálu Autor Průřezové téma Předmět CZ.1.07/1.5.00/34.0565 VY_32_INOVACE_284_Programovací_jazyky

Více

Programování v jazyce VISUAL BASIC.NET

Programování v jazyce VISUAL BASIC.NET GYMNÁZIUM ŠTERNBERK Programování v jazyce VISUAL BASIC.NET JAROSLAV ZAVADIL 1. ČÁST ŠTERNBERK 2009 1 / 51 1. kapitola Úvod V následujících kapitolách se seznámíme s ukázkou programování ve vyšším programovacím

Více

Programovací jazyk C++ Hodina 1

Programovací jazyk C++ Hodina 1 Programovací jazyk C++ Hodina 1 Používané překladače Bloodshed Dev C++ http://www.bloodshed.net/devcpp.html CodeBlocks http://www.codeblocks.org pokud nemáte již nainstalovaný překladač, stáhněte si instalátor

Více

Překladač a jeho struktura

Překladač a jeho struktura Překladač a jeho struktura Překladače, přednáška č. 1 Šárka Vavrečková Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz http://fpf.slu.cz/ vav10ui Poslední aktualizace: 23. září 2008 Definice

Více

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky. PHP - úvod Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky. Klíčové pojmy: PHP, webový prohlížeč, HTTP, FTP Základní pojmy služba WWW = 1990 první prototyp serveru, od roku 1994

Více

Řídicí struktury. alg3 1

Řídicí struktury. alg3 1 Řídicí struktury Řídicí struktura je programová konstrukce, která se skládá z dílčích příkazů a předepisuje pro ně způsob provedení Tři druhy řídicích struktur: posloupnost, předepisující postupné provedení

Více

Opakování programování

Opakování programování Opakování programování HW návaznost - procesor sběrnice, instrukční sada, optimalizace rychlosti, datové typy, operace (matematické, logické, podmínky, skoky, podprogram ) - paměti a periferie - adresování

Více

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí) Programovací jazyky Programovací jazyky nižší assembler (jazyk symbolických instrukcí) vyšší imperativní (procedurální) Pascal, C/C++, Java, Basic, Python, php neimperativní (neprocedurální) Lisp, Prolog

Více

Výčtový typ strana 67

Výčtový typ strana 67 Výčtový typ strana 67 8. Výčtový typ V této kapitole si ukážeme, jak implementovat v Javě statické seznamy konstant (hodnot). Příkladem mohou být dny v týdnu, měsíce v roce, planety obíhající kolem slunce

Více

6 Příkazy řízení toku

6 Příkazy řízení toku 6 Příkazy řízení toku Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost příkazům pro řízení toku programu. Pro všechny tyto základní

Více

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

IUJCE 07/08 Přednáška č. 1 Úvod do předmětu Literatura Záznamy přednášek a vaše poznámky Harbison, S. P., Steele, G. L.: Referenční příručka jazyka C Herout, P.: Učebnice jazyka C Kernighan, B. W., Ritchie, D. M.: The C Programming

Více

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných Tematický celek 03 3.1 Proměnné Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace. 3.1.1 Deklarace proměnných Dim jméno_proměnné [As typ] - deklarace uvnitř procedury platí pouze pro

Více

C# bez předchozích znalostí

C# bez předchozích znalostí C# bez předchozích znalostí Vyšlo také v tištěné verzi Objednat můžete na www.cpress.cz www.albatrosmedia.cz Pavel Bory C# bez předchozích znalostí e-kniha Copyright Albatros Media a. s., 2016 Všechna

Více

Seminář Java II p.1/43

Seminář Java II p.1/43 Seminář Java II Seminář Java II p.1/43 Rekapitulace Java je case sensitive Zdrojový kód (soubor.java) obsahuje jednu veřejnou třídu Třídy jsou organizovány do balíků Hierarchie balíků odpovídá hierarchii

Více

IB111 Programování a algoritmizace. Programovací jazyky

IB111 Programování a algoritmizace. Programovací jazyky IB111 Programování a algoritmizace Programovací jazyky Programovací jazyky Programovací jazyk Prostředek pro zápis algoritmů, jež mohou být provedeny na počítači Program Zápis algoritmu v programovacím

Více

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

8 Třídy, objekty, metody, předávání argumentů metod 8 Třídy, objekty, metody, předávání argumentů metod Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost třídám a objektům, instančním

Více

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

JAZYK C# ÚVOD. Literatura. Jazyk C# .NET Framework JAZYK C# ÚVOD Literatura 1. VIRIUS, M. Od C++ k C#. České Budějovice: KOPP, 2002. 235 s. Cena 199 Kč. ISBN 80-7232-176-5. 2. NAGEL CH. et al. C# 2005. Programujeme profesionálně. Brno: Computer Press,

Více

Úvod Seznámení s předmětem Co je.net Vlastnosti.NET Konec. Programování v C# Úvodní slovo 1 / 25

Úvod Seznámení s předmětem Co je.net Vlastnosti.NET Konec. Programování v C# Úvodní slovo 1 / 25 Programování v C# Úvodní slovo 1 / 25 Obsah přednášky Seznámení s předmětem Co je.net Vlastnosti.NET 2 / 25 Kdo je kdo Petr Vaněček vanecek@pf.jcu.cz J 502 Václav Novák vacnovak@pf.jcu.cz?? Při komunikaci

Více

Středoškolská technika 2017 PROGRAM NA GENEROVÁNÍ PRVOČÍSEL

Středoškolská technika 2017 PROGRAM NA GENEROVÁNÍ PRVOČÍSEL Středoškolská technika 2017 Setkání a prezentace prací středoškolských studentů na ČVUT PROGRAM NA GENEROVÁNÍ PRVOČÍSEL Vojtěch Pchálek Střední škola technická Kouřílkova 8, Přerov ANOTACE Bratr, který

Více

Základy programování. Úloha: Eratosthenovo síto. Autor: Josef Hrabal Číslo: HRA0031 Datum: 28.11.2009 Předmět: ZAP

Základy programování. Úloha: Eratosthenovo síto. Autor: Josef Hrabal Číslo: HRA0031 Datum: 28.11.2009 Předmět: ZAP Základy programování Úloha: Eratosthenovo síto Autor: Josef Hrabal Číslo: HRA0031 Datum: 28.11.2009 Předmět: ZAP Obsah 1 Zadání úkolu: 3 1.1 Zadání:............................... 3 1.2 Neformální zápis:.........................

Více

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání Čtvrtek 3. listopadu Makra v Excelu Obecná definice makra: Podle definice je makro strukturovanou definicí jedné nebo několika akcí, které chceme, aby MS Excel vykonal jako odezvu na nějakou námi definovanou

Více

Úvod do programovacích jazyků (Java)

Úvod do programovacích jazyků (Java) Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích

Více

DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA

DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA ze sady: 03 tematický okruh sady: Tvorba skript a maker ze šablony: 10 Algoritmizace a programování určeno pro: 4. ročník vzdělávací obor: vzdělávací

Více

Hromadná korespondence

Hromadná korespondence Kapitola dvanáctá Hromadná korespondence Učební text Mgr. Radek Hoszowski Hromadná korespondence Hromadná korespondence Představíme si jednoduchý nástroj, který nám může ušetřit velké množství práce. Je

Více

4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody

4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody 4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina Cyklické odkazy a iterativní výpočty

Více

11. Přehled prog. jazyků

11. Přehled prog. jazyků Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 11 1 Základy algoritmizace 11. Přehled prog. jazyků doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze

Více

VISUAL BASIC. Práce se soubory

VISUAL BASIC. Práce se soubory VISUAL BASIC Práce se soubory Práce se soubory 1/2 2 Vstupní data pro programy bývají uloženy do souborů Vstupy pro výpočet, nastavení vzhledu aplikace Výsledky práce programu je potřeba uchovat uložit

Více

Příklad : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni!

Příklad : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni! Java práce s řetězci Trochu povídání.. Řetězce jsou v Javě reprezentovány instancemi tříd StringBuffer a String. Tyto třídy jsou součástí balíčku java.lang, tudíž je možno s nimi pracovat ihned bez nutného

Více

Operátory, výrazy. Tomáš Pitner, upravil Marek Šabo

Operátory, výrazy. Tomáš Pitner, upravil Marek Šabo Operátory, výrazy Tomáš Pitner, upravil Marek Šabo Operátor "Znaménko operace", pokyn pro vykonání operace při vyhodnocení výrazu. V Javě mají operátory napevno daný význam, nelze je přetěžovat jako v

Více

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Číslo a název šablony Číslo didaktického materiálu Druh didaktického materiálu Autor Jazyk Téma sady didaktických materiálů Téma didaktického materiálu Vyučovací předmět Cílová skupina (ročník) Úroveň

Více

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina 5a. Makra Visual Basic pro Microsoft Escel Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina Cyklické odkazy a iterativní výpočty Zde bude stránka o cyklických odkazech a iteracích.

Více

Datové typy strana 29

Datové typy strana 29 Datové typy strana 29 3. Datové typy Jak již bylo uvedeno, Java je přísně typový jazyk, proto je vždy nutno uvést datový typ datového atributu, formálního parametru metody, návratové hodnoty metody nebo

Více

Programujeme v softwaru Statistica

Programujeme v softwaru Statistica Programujeme v softwaru Statistica díl první Newsletter Statistica ACADEMY Téma: Programování, makra, skripty Typ článku: Návody Jistě jste se při práci v softwaru Statistica dostali do situace, kdy bylo

Více

Registrační číslo projektu: CZ.1.07/1.5.00/34.0185. Název projektu: Moderní škola 21. století. Zařazení materiálu: Ověření materiálu ve výuce:

Registrační číslo projektu: CZ.1.07/1.5.00/34.0185. Název projektu: Moderní škola 21. století. Zařazení materiálu: Ověření materiálu ve výuce: STŘEDNÍ ODBORNÁ ŠKOLA A STŘEDNÍ ODBORNÉ UČILIŠTĚ NERATOVICE Školní 664, 277 11 Neratovice, tel.: 315 682 314, IČO: 683 834 95, IZO: 110 450 639 Ředitelství školy: Spojovací 632, 277 11 Neratovice tel.:

Více

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

Základy jazyka C. Základy programování 1 Martin Kauer (Tomáš Kühr) Základy jazyka C Základy programování 1 Martin Kauer (Tomáš Kühr) Organizační záležitosti Konzultace Pracovna 5.076 Úterý 15:00 16:30 Emailem martin.kauer@upol.cz Web předmětu http://tux.inf.upol.cz/~kauer/index.php?content=var&class=zp1

Více

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632

Více

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické Jak v Javě primitivní datové typy a jejich reprezentace BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické Obsah Celočíselný datový typ Reálný datový typ Logický datový typ, typ Boolean

Více

for (int i = 0; i < sizeof(hodnoty) / sizeof(int); i++) { cout<<hodonoty[i]<< endl; } cin.get(); return 0; }

for (int i = 0; i < sizeof(hodnoty) / sizeof(int); i++) { cout<<hodonoty[i]<< endl; } cin.get(); return 0; } Pole Kdybychom v jazyce C++chtěli načíst větší počet čísel nebo znaků a všechny bylo by nutné všechny tyto hodnoty nadále uchovávat v paměti počítače, tak by bylo potřeba v paměti počítače alokovat stejný

Více

ADT/ADS = abstraktní datové typy / struktury

ADT/ADS = abstraktní datové typy / struktury DT = datové typy obor hodnot, které může proměnná nabývat, s operacemi na tomto oboru určen: obor hodnot + výpočetní operace např. INT = { 2 147 483 648 až +2 147 483 647} + {+,,*,/,} ADT/ADS = abstraktní

Více

1. Programování proti rozhraní

1. Programování proti rozhraní 1. Programování proti rozhraní Cíl látky Cílem tohoto bloku je seznámení se s jednou z nejdůležitější programátorskou technikou v objektově orientovaném programování. Tou technikou je využívaní rozhraní

Více

Nápověda k aplikaci EA Script Engine

Nápověda k aplikaci EA Script Engine Nápověda k aplikaci EA Script Engine Object Consulting s.r.o. 2006 Obsah Nápověda k aplikaci EA Script Engine...1 1. Co je EA Script Engine...2 2. Důležité upozornění pro uživatele aplikace EA Script Engine...3

Více

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

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 Jazyk C Program v jazyku C má následující strukturu: Direktivy procesoru Globální definice (platné a známé v celém programu) Funkce Hlavička funkce Tělo funkce je uzavřeno mezi složené závorky { Lokální

Více

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

PŘETĚŽOVÁNÍ OPERÁTORŮ PŘETĚŽOVÁNÍ OPERÁTORŮ Jazyk C# podobně jako jazyk C++ umožňuje přetěžovat operátory, tj. rozšířit definice některých standardních operátorů na uživatelem definované typy (třídy a struktury). Stejně jako

Více

Úvod do programování 6. hodina

Úvod do programování 6. hodina Úvod do programování 6. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015 Umíme z minulé hodiny Algoritmy Třídění pole: Selection

Více

Seznámení s prostředím dot.net Framework

Seznámení s prostředím dot.net Framework Základy programování v jazyce C# Seznámení s prostředím dot.net Framework PL-Prostředí dot.net - NET Framework Je základním stavebním prvkem, na kterém lze vytvářet software. Jeho součásti a jádro je založené

Více

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

14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod. Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání

Více

Matematika v programovacích

Matematika v programovacích Matematika v programovacích jazycích Pavla Kabelíková am.vsb.cz/kabelikova pavla.kabelikova@vsb.cz Úvodní diskuze Otázky: Jaké programovací jazyky znáte? S jakými programovacími jazyky jste již pracovali?

Více

Základy programování (C#) Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1134_Základy programování (C#) _PWP

Základy programování (C#) Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1134_Základy programování (C#) _PWP Základy programování (C#) Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1134_Základy programování (C#) _PWP Název školy: Číslo a název projektu: Číslo a název šablony klíčové aktivity: Označení

Více

Virtuální počítač. Uživatelský program Překladač programovacího jazyka Operační systém Interpret makroinstrukcí Procesor. PGS K.

Virtuální počítač. Uživatelský program Překladač programovacího jazyka Operační systém Interpret makroinstrukcí Procesor. PGS K. Virtuální počítač Uživatelský program Překladač programovacího jazyka Operační systém Interpret makroinstrukcí Procesor Virtuální počítač Překladač Překladač : Zdrojový jazyk Cílový jazyk Analytická část:

Více

Základní datové typy, proměnné - deklarujeme předem - C je case sensitive rozlišuje malá a velká písmena v názvech proměnných a funkcí

Základní datové typy, proměnné - deklarujeme předem - C je case sensitive rozlišuje malá a velká písmena v názvech proměnných a funkcí 02 Jazyk C - je imperativní říkáme, co se má udělat, voláme příkazy - další imperativní jazyky: Pascal, Java, C/C++ apod. - na rozdíl od jazyků deklarativních např. Prolog, Haskell, Scheme, Lisp (funkcionální

Více

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

Úvod do programování - Java. Cvičení č.4 Úvod do programování - Java Cvičení č.4 1 Sekvence (posloupnost) Sekvence je tvořena posloupností jednoho nebo více příkazů, které se provádějí v pevně daném pořadí. Příkaz se začne provádět až po ukončení

Více