
OHODNOŤTE ČLÁNEK
Kliknutím na hvězdičku vložíte své hodnocení
Dnes je 23.5.2012 | svátek má Vladimír | právě hraje 116 hráčů (GamePark hry: 0, Online hry: 103, Flash hry: 13) | celkový počet registrací: 1 265 189

V dnešní lekci, zatím první a spíše zkušební, se seznámíme s jazykem C#, frameworkem .NET a napíšeme si trošku netradičně svůj první program "Ahoj světe" (netradičně proto, že nebude v konzoli). Začneme trochou teorie, jak už to bývá, projdeme přes vývojové prostředí, jako které nám poslouží Visual Studio 2008 expression edition, vytvoříme si svůj program a nakonec dostanete zadání úkolu, které bude známkováno jako ve škole podle toho, jak dobře jej vytvoříte a jestli bude program fungovat korektně. Inu, dáme se do toho.
.NET Framework je platforma od firmy Microsoft vytvořená kolem roku 2000. Když říkám platforma, myslím tím prostředí, na kterém běží program, který vytvoříte. Jestliže vytváříte program v jazycích, které mají označení .NET (což je C#, J#, F#, Visual Basic.NET, popř. třeba ASP.NET), budete potřebovat platformu .NET Framework. Jestliže se pokusíte spustit program vytvořený na této platformě na počítači, kde není nainstalovaný .NET Framework, program se nespustí a vyhodí chybovou hlášku. Proč? .NET Framework se skládá z více částí, neboli modulů. Nebudu zabíhat příliš do detailů, neboť toto není až tak podstatné a detailně by tohle vysvětlování zabralo přes dvacet stránek, proto se o některých modulech zmíním jen okrajově.
.NET Framework obsahuje jazyk IL, modul typů a specifikací CLS, překladač JIT a BCL (basic class libary), což je knihovna tříd potřebná pro vytváření programů (neboť vy jakožto programátoři budete nejčastěji využívat již naprogramované knihovny, vytvářet své vlastní budete umět až později). Dobře, to jsme si řekli, co .NET Framework obsahuje, ale jak to funguje?
Zjednodušeně, když napíšete kód v C#, nejdříve ho musíte zkompilovat. To obstarává prostředí, v našem případě Visual Studio. Tím to však zdaleka nekončí a celý proces začíná. Ze všeho nejprve se musí kompilovaný kód převést do jazyka IL, což je jazyk vytvořený Microsoftem. Je zde proto, aby mezi sebou byly kompatibilní všechny .NET jazyky. I když program bude vypadat jinak v C# a jinak třeba ve Visual Basic.NET, po kompilaci do IL kódu bude vypadat úplně totožně (pokud bude dělat to samé, samozřejmě). Jak je to možné? Právě díky modulu CLS, který zaručuje správné přiřazení funkcí a tříd a korektní překompilování do IL jazyka. Jestliže má prostředí překompilovaný kód do IL, předává kód samotnému frameworku a ten, pomocí svého interního JIT kompilátoru převede kód do nativního kódu spustitelného procesorem. Ten pak program vykoná.
Samozřejmě shrnout fungování .NET Frameworku do pár odstavců je přímo bestialita,proto pro všechny zájemce, kteří chtějí proniknout hlouběji do samotného .NET Frameworku doporučuji buď tento odkaz, anebo rovnou doporučuji knihu C# 2005 Profesionálně, kde je toto téma popsáno na cca 70 stránek.
Jak jsem již řekl, náš kurz bude zaměřen na programování C# ve Visual Studiu(dále jen VS). První krok, který bude potřeba, je stáhnutí VS ze stránek Microsoftu. To můžete buď zde (naše verze je vcssetup.exe), anebo zde, kde stahujete přímo .ISO soubor. Když už máte Visual Studio stáhnuté a nainstalované, podíváme se na uživatelské rozhraní.
Nyní si zapněte Visual Studio 2008 Express Edition, klepněte na file -> new -> project a v následujícím okně vyberte v části okna Project Types C# (pokud ještě nemáte vybráno) a v levé části klikněte na Windows Forms application. Tím dáváme najevo, že chceme vytvářet klasickou formulářovou aplikaci tak, jak je v systému Windows známe. (na obrázku pod tímto odstavcem mám navíc pár možností, např. určení cesty souboru hned při jeho vytváření. To expression edice nemá. Je to dáno tím, že já mám Visual Studio 2008 Professional edition, ne Express Edition. Pro. Edice stojí okolo 17 tisíc, ale umožňuje věci, které Express E. neumožňuje. Prozatím nám však postačí EE verze).
Po startu se vám zobrazí toto:
Všimněte si podškrtnutých a zakroužkovaných věcí. Pokud se podíváme v pravo nahoru, podškrtl jsem okno Solutin Explorer. To proto, aby jste si uvědomili, že tohle okno se jměnuje Solution Explorer. Často na něj budu v textu odkazovat, proto je dobré mít to na paměti. V něm je uloženo řešení a samotné soubory řešení (program je soubor instrukcí, jenž řeší nějaký problém, proto řešení). Pod Solution Explorerem máme Properties - Vlastnosti. Pokud toto okno nemáte zobrazeno, klikněte na View (menu nahoře) -> Properties Window. Zde měníme vlastnosti různých komponent formulářů i samotného formuláře, např. co bude napsané na tlačítku a podobně. Přesuneme se k prvnímu zakroužkovanému prvku a to je Form1.cs [design] záložka. Záložky jsou již známé z různých programů od webových broswerů až po ICQ, či podobné programy. Když tvoříte program, tvoříte jej ve dvou krocích (již ve Visual Studiu). První je, že navrhujete design, druhý krok je, že dáváte funkčnost tlačítkům a píšete, co se má udělat, když se zmáčkne tohle, nebo když uživatel udělá tamto. Ještě to podrobněji rozebereme, ovšem teď je důležité, aby jste věděli, že se momentálně nacházíte v návrhu designu aplikace a že existuje i druhý mód. Inu a poslední důležitá část je toolbox, na který když najedete, zobrazí se vám spousta věcí, které můžete umístit na formulář, např. tlačítka, textové dialogy a podobně. Zatím si nic na formulář nedávejte, k tomu také dojdeme, ovšem je dobré, aby jste věděli, kde Toolbox je.
Již přibližně víte, kde co máte dělat a to je dobře. Zatím jsme postavili poměrně solidní základ na tvorbu první aplikace. Sluší se ale předem říct, že psaní aplikace není to jediné, co patří k programování. Programování aplikace je složitá činnost, která vyžaduje více, než jen znalost syntaxe a prostředí. Jak tedy vytvořit aplikaci? Postupujeme v několika krocích (ne nezbytně všech):
Naším cílem je vytvořit program, jenž po zmáčknutí tlačítka vypíše do textového pole text "Ahoj, Světe". Je to klasický začátečnický program. My jej však neuděláme do konzole, protože ta samozřejmě neobsahuje žádné tlačítka, ale zpestříme si tvorbu programu a vytvoříme jej přímo v grafické podobě.
Již jsem řekl, že po zmáčknutí tlačítka aplikace vypíše to textového pole text "Ahoj, Světe". Z toho logicky vyplívá, že na formuláři budou dva prvky. Jeden bude textové pole, druhý bude tlačítko. Najeďte teď do vašeho Visual Studia a klepněte na Toolbox. Najděte položku Button a dvakrát na ni klepněte. Na formuláři se objeví tlačítko. Pokud chcete, můžete klepnout na položku Button jen jednou (tlačítko držte) a přesunout ji na kteroukoliv část formuláře. Této metodě se říká Drag & drop a většina programátorů ji preferuje (ale špatně není ani dvojtý klik na položku). Jestliže máme tlačítko na formuláři, posuneme jej trochu níže (klasicky, chytneme tlačítko a šoupneme ho dolů) a vrhneme se na textové pole. Zase klepneme na Toolbox a vytvoříme stejným způsobem, jako položku tlačítko, položku Text box.
Nyní máme na formuláři 2 prvky. Textbox a button. Když zmáčkneme F5, program se spustí, ale nic nebude dělat. Proto jej musíme "oživit". Ještě předtím ale změníme ošklivý nápis na tlačítku (přece nechceme mít v aplikaci tlačítko, na kterém je "button") a jména prvků.
Klepněte na tlačítko Button 1 a podívejte se na okno vlastností (v pravo dole pod Solution Explorerem). Najděte ve vlastnostech položku Text a změňte hodnotu z button1 na "Pozdrav". Když to potvrdíte enterem, na formuláři se tlačítko button1 změní na tlačítko Pozdrav. To je ale jen nápis na tlačítku, proto najděte ještě další vlastnost a to vlastnost (name). Tahle vlastnost je velmi důležitá, protože se na ni budeme odkazovat v zápisu kódu. Změňte ji z button1 na pozdrav (pozor na velké a malé písmena, název tlačítka je pozdrav s malým p).
Zase potvrdíme enterem a vrhneme se na textové pole. Zde změníme jen jméno, protože text je zadán uživatelem, či programem. Takže najděte zase vlastnost (name) a změňte ji na txtUvitani. Proč takhle? Správně by se měl každý prvek jmenovat způsobem [zkratka]Nazev. Náš prvek je Textbox, proto má zkratku txt a název je uvítání, proto je to txtUvitani. Zase pozor na velké a malé písmena. Náš program by zatím měl vypadat nějak takto.
Všimněte si dvou věcí. Zaprvé, mám aktivní tlačítko. Klepněte proto na své tlačítko také. A zadruhé, mám označený malý blesk v okně vlastností. Tento blesk přidává do programu procedury. Procedura je reakce, která se provede v závislosti na uživatelově akci. Např. pokud uživatel zmáčkne tlačítko, provede se procedura Click. Klepněte proto na ikonku blesku a vyberte proceduru click. Dvakrát klepněte na její jméno (jen jméno, tzn. 2x klepnout na Click) a Visual Studio vás "vyhodí" do textového režimu. Zde začínáme psát kód. Váš kód by měl vypadat takto:
Tento text vygenerovalo Visual Studio samo o sobě. Může se drobně lišit, např. v namespace, kde můžete mít jinou hodnotu. Vysvětlíme si kód po částech.
První část je část, kde jsou vyp sány příkazy začínající na using xy. Tyto příkazy importují knihovny, např. knihovnu System. Z těchto knihoven čerpáte funkce, procedury a objekty, se kterými pracujete. Např. "using System.Windows.Forms;" značí, že vytváříme formulářovou aplikaci, na které mohou být umístěny tlačítka a textová pole (mimo mnoho dalších samozřejmě).
Další část kódu vypisuje namespace a class form. Tím se nyní nebudeme zabývat, není to podstatné pro běh programu. Tuto část kódu si vysvětlíme později (zatím je to stále jen úvod). Zajímavá část kódu je ale private void pozdrav_Click(object sender, EventArgs e). To je procedura, kterou jsme přidali dvojtým klepnutím na proceduru Click. Syntaxí se zatím nezabývejte, i to si můžeme vysvětlit později. Klepněte však hned za první hranatou závorku, zmáčkněte enter a vepište následující příkaz:
Za domácí úkol máte pozměnit aplikaci tak, aby obsahovala i druhé tlačítko. Pojmenujte jej jak chcete a text si vytvořte také jaký chcete. To tlačítko by mělo fungovat jako mazací tlačítko, čili při jeho zmáčknutí by měl z textového pole txtUvitani zmizet pozdrav "Ahoj, Světe". Není to vůbec těžké, napovím vám, že v příkaz bude velmi podobný tomu, který jsme už napsali, samozřejmě v procedůře jiného, vámi vytvořeného tlačítka. Pokud budete bezmocní, ptejte se v komentářích. Text vašeho úkolu můžete uvádět v komentářích (zatím je to pouze krátký program, takže je to možné).
ANKETA
Celkem: 551 hlasů
V této anketě jste již hlasovali.
Buď jste v této anketě již hlasovali, nebo hlasoval někdo se stejnou IP adresou. Pokud chcete hlasovat, zaregistrujte se prosím.
OHODNOŤTE ČLÁNEK
Kliknutím na hvězdičku vložíte své hodnoceníPOSLEDNÍ KOMENTÁŘE
Celkem komentářů: 50 Mr.Killer
02.01.09, 01:20
31. re: #27 · [ Andriel ]
Pripada ti "najit" jednu standardni metodu slozity ? Jak muzes vubec programovat :) Krome toho ta metoda muze delat nejaky veci navic jako treba prekresleni coz sice tady momentalne neni, ale pointa je doufam jasna, proste kdyz uz tam ta metoda je, tak by se mela pouzit.
noonea ![]()
![]()
![]()
![]()
02.01.09, 01:39
32. Mr.Killer
Ano, když jsem byl v takové pozici, kde jsem čuměl na Visual Studio a snažil se zapamatovat, jaké části GUI VS se jak říká, tak pro mě bylo složité najít jednu metodu. Ani mě nenapadlo, že je potřeba hledat nějaké metody. V tomto případě je z této pozice daleko jednodušší napsat, že text = ničemu, než najít, jak programu říct "vyčisti to". Tvůj příspěvek beru jako provokativní. Zkus se vžít do role člověka, co vidí tyhle věci poprvé. Ještě před chvílí hrál CoD a teď má začít myslet? Z ničeho nic? To přijde až později...
Těším se na tvou příští jedničku u dalšího článku, který mi zabere tolik času, protože tvé pravidlo "Andriel = hodnocení článku 1" je mi velmi dobře známo. Bohužel.
Mr.Killer
02.01.09, 02:33
33. re: #32 · [ Andriel ]
1) Kazdy lepsi IDE (ano i to M$ :)) zobrazuje nabidku relevantnich moznosti pro aktualni kontext takze je skoro nemozny ty metody prehlidnout.
2) Clovek co chce programovat musi byt samostatny, musi u toho myslet (zadny az priste) a umet hledat.
3) Cely podle tutorialu s kompletnim postupem by byla nuda :)
btw: oznacit lehkou narazku za provokativni prispevek ? :)
Jo a clanek jsem jeste nehodnotil ale tak ted uz je to jasny :) (todle uz bylo lehce provokativni :))
noonea ![]()
![]()
![]()
![]()
02.01.09, 09:59
34. Re:
Ach bože, to fakt nemá cenu. Jestli chceš mít takovéhle hloupé narážky, tak pod můj článek ani nepiš a spokoj se s tím svým tichým smíchem a jedničkou. Nechápeš, že člověk, co to vidí poprvé není programátor a nechápeš, že kdyby každý psal polovičaté návody se slovy "hledejte", tak by se nikdo nic nenaučil (to jde udělat až když má člověk nějaký základní rozhled, ne když teprve nainstaloval prostředí). Tohle hraničí s ignorancí.
A.l.i.3.n ![]()
![]()
![]()
02.01.09, 10:13
35. Hehe
Podle mě je naprostá blbost používát metodu clear, když to jde mnohem jednodušeji. A to, "že to může dělat i něco jiného" je spíš na škodu, než k užitku.
A přestaňte flejmovat, rači se zabývejte mim problémem s nekonečným cyklem :-)
CikoCZE ![]()
![]()
02.01.09, 12:08
36. Timer
Co místo nekonečného cyklu použít timer?
A.l.i.3.n ![]()
![]()
![]()
02.01.09, 12:31
37. Re: Timer
Jj to mě taky napadlo, ale zajímalo mě, jestli jde použít i nekonečný cyklus ... asi to nepůjde.
Mr.Killer
02.01.09, 13:12
38. re: #34 · [ Andriel ]
To ze vsechny lidi povazujes za idioty, co nejsou schopni bez tutorialu neco udelat neznamena, ze idioty vsichni jsou. Ty to teda pises pro blbce (kteri toho stejne nechaji) a ja bych (podle tebe asi zvedl uroven) to psal pro vsechny normalni myslici lidi.
noonea ![]()
![]()
![]()
![]()
02.01.09, 14:18
39. Mr.Killer
Naposledy. Nedělám z lidí idioty, ale nemám na ně přehnané nároky v tom, o čem nemusí mít ani tušení. Když se podíváš do knih o C#, co tam vidíš? Ano, pěkně postupně vše vysvětleno stejně jako vysvětluji já. A to nejsou jen knížky typu "programming for dummies", ale třeba i kniha C# Programujeme profesionálně, která je pro středně pokročilé, takhle téměř "vodí za ručičku".
Jak říkám, tvé komentáře mají jediný účel a to naštvat mě, nejlépe znehodnotit můj článek. Je to to jediné, o co ti jde a mě už to leze krkem. Pokud bys to napsal jinak, tak to jinak NAPIŠ. Jsem rád, že jsi ohromně šťastný, protože jsem díky tobě "opravdu překopal" celý článek a opravdu jsi něco změnil. Opravdu jsi mě velmi naštval (nevím, jak večer budu moct spát) a opravdu to příště budu dělat jinak, po tvém (protože jsi přece neomezený imperátor. Možná i terminátor, kdo ví). Co na to říct...
A.l.i.3.n ![]()
![]()
![]()
02.01.09, 15:02
40. vcsetup.exe
Když už si to celé překopával mohl si i upravit ten vcsetup.exe na vcssetup.exe, aby si chudáci nováčci nestahovali C++ a nedivili se, že jim to nefunguje :-D
Mr.Killer
02.01.09, 15:11
41. re: #39 · [ Andriel ]
Nemyslim si ze to co jsem napsal jsou "prehnane naroky". To je vsechno. Kdyby ses toho tak nechyt, tak jsme si mohli tuhle "diskuzi" usetrit :)
btw: vidim ze si venoval cely odstavec textu tomu, o co mi jde, to "opravdu pomaha" zmenit muj pristup k tobe. Takze nashledanou u pristiho clanku :)
<HergotH> 05.01.09, 18:13
42. navíc je to hrozně zajímavej jazyk a systém
jenže člověk je od přírody ještitnej a je známo, že programátoři jsou líná pakáž. Tedy - strašně bych chtěl, hrozně, ale neudělám v Ckřížátku nic, páč sem pekelně línej javista :)
KillThePavca 07.01.09, 22:16
43. Stranka s navodem na C++
http://spam.tym.sk/?id=50041&MladaAmaterka
ma!kl 09.01.09, 18:10
44. jo
chtel bych
yankee, 11.01.09, 14:38
45. bral bych
:) maikle
Scaaro ![]()
![]()
![]()
![]()
21.07.09, 13:14
48. :)
Jsem se divil ze mi ten kod nejak nesedí .. :-) ja to delal ve visual bacisu .. :D ale podarilo se i tak .. Už se tešim na pokracovaní ..
Martin12350 13.08.09, 12:07
49. Pomoc ...
Ahojky potřeboval bych menší pomoc ... tvoje rady jsou dobré všechno je hezké ale jak začnu psát ty kódy (txt.Uvitani.Text= "Ahoj, Světe"; tak potom jak chci ten program zkusit napíše mi chybnou konzoli ... Myslel jsem si že je to NET Framework ale jak jsem ho zkusil nainstalovat zjistil jsem že už tam je, tak že nevím kde dělám chybu, jinak ještě před tím než ty kódy začnu psát tak ten program jede, tak že posím pomoc :((
Martin12350 13.08.09, 19:48
50. Aha
Aha tak nic už mi to šlape .)
El-bob ![]()
![]()
![]()
![]()
23.08.09, 14:46
51. Taky dobry
Kazdy pokracovani je vetsinou blbost tohle se ti povedlo
Cookie32 ![]()
![]()
![]()
![]()
09.11.11, 19:14
53. Mazec
Díky fakt perfektní návod, doufám že jich bude čím dál tím víc :D

REDAKCE BLOGU
Celkem redaktorů: 1