Pojďte s námi PROGRAMOVAT !

1. 3. 2008

Sdílet

Ve třetí lekci programátorského kurzu uděláme z vás a jazyka C# kamarády. Pojďte s námi absolvovat exkurzi, na ...


Ve třetí lekci programátorského kurzu uděláme z vás a jazyka C# kamarády. Pojďte s námi absolvovat exkurzi, na níž se dozvíte, jak vytvořit svou první aplikaci ve Visual C# 2008 Express.



Historie jazyka C#

Ve vědeckých a odborných kruzích se začaly vést diskuse o vytvoření nového programovacího jazyka pro chystanou platformu Microsoft .NET koncem dvacátého století. Jazyk C# jakožto nový přírůstek do „rodiny jazyků C“ spatřil ve své první verzi světlo světa v roce 2002. Tehdy společnost Microsoft uvedla svou novou vývojářskou platformou .NET Framework společně s prvním „dotnet“ Visual Studiem. Jazyk C# byl již od svých prvopočátků projektován jako primární prostředek pro budování aplikací, jež poběží na platformě .NET. Krátce po svém uvedení získal C# mezi vývojáři a programátory tisíce stoupenců, jejichž řady se posléze velmi rychle rozšiřovaly a nabíraly na objemu. Známé motto, podle něhož C# spojuje všechno dobré z jazyků C++ a Visual Basic, se ukázalo jako zcela pravdivé. C# dostal do vínku bohatou porci „programátorské přívětivosti“, ovšem na druhou stranu si ponechal elegantní syntaxi, tak oblíbenou mezi vývojáři v jazyce C++. V první polovině roku 2003 se na softwarovém trhu objevilo Visual Studio .NET 2003 a v něm implementovaný jazyk C# se záhy začal označovat číselnou verzí 1.1. Novinek v této verzi ale nebylo mnoho, poněvadž C# byl již od svého úvodního vydání zkonstruován po všech stránkách smysluplně a za svou syntaktickou vybavenost si vysloužil mezi odborníky mnohá ocenění. Větší inovační boom se odehrál koncem roku 2005, kdy se jazyk C# pozvolna dostal do své 2.0 verze, která vývojářům přinesla plejádu novinek, vylepšení a zdokonalení (za všechny vzpomeňme zejména podporu generických datových typů). Téměř o dva roky později se setkáváme s C# 3.0, což je verze jazyka, s kterou se hodláme seznámit v jednotlivých lekcích tohoto programátorského kurzu. Ano, vážení přátelé, naučíte se ovládat zcela nejnovější edici jazyka C#, v níž C# předvádí takové věci, které ještě vývojáři neviděli. Ačkoliv jsme prozatím jen na začátku naší poutě, přijde čas, kdy se seznámíme se snad největší inovací C# 3.0 – unifikovaným dotazovacím jazykem LINQ (Language Integrated Query), jehož pomocí můžeme psát aplikace využívající jednotný přístup k datům, bez ohledu na jejich fyzický původ.

C# 3.0 je začleněn do produktů Visual C# 2008 a Visual C# 2008 Express. Visual C# 2008 je komerční produkt, který se prodává jako nedílná součást Visual Studia 2008 počínaje edicí Standard. Expresní vyhotovení produktu je zdarma dostupné z webových stránek společnosti Microsoft. Jste-li pravidelnými čtenáři PC Worldu, mohli jste instalaci Visual C# 2008 Express najít na DVD disku přiloženém k číslu 2/2008. Mnozí zájemci o programování se ptají, zda expresní edice Visual C# 2008 není jaksi okleštěná, především co se dovedností a možností programovacího jazyka týče. Odpověď zní: není, obě verze (komerční a volně dostupná) pracují se stejnou jazykovou specifikací. Jinými slovy, v obou verzích najdete plnokrevnou implementaci jazyka C# 3.0. Mezi vývojáři tudíž nevznikají žádné neblahé interference, každý zájemce může pracovat s nejnovějším vydáním jazyka C#.

Jazyk C# byl podroben standardizačním procesům u organizací ECMA a ISO. Jde tedy o standardizovaný programovací jazyk, podobně jako jsou standardizovány jazyky C a C++.

Jazyk C# 3.0, platforma .NET
Framework 3.5
a softwarové aplikace
Jazyk C# byl odjakživa velice těsně spojen s vývojově-exekuční platformou Microsoft .NET Framework. Je to proto, že aplikace vytvořené v C# mohou běžet pouze tehdy, je-li na dotyčné počítačové stanici nainstalována rovněž platforma .NET Framework. Tato platforma plní dvě hlavní poslání:

1. Nabízí tvůrcům softwarových aplikací nástroje pro snadné a rychlé budování programů.
2. Odpovídá za řízení běhu (exekuce) sestavených aplikací.

Proto budeme platformu .NET Framework 3.5 označovat jako „vývojově-
-exekuční“. Jakékoliv aplikaci, kterou
v jazyce C# 3.0 připravíme, budeme říkat „řízená aplikace“ nebo též „aplikace .NET“.
Uvedená slovní spojení jsou považována za synonyma, která sdělují, že zpracování aplikace jazyka C# 3.0 je pod dohledem platformy .NET Framework 3.5. Programy, které pro svůj běh nevyžadují .NET Framework 3.5, budeme označovat jako nativní. Do množiny nativních programů patří libovolné programy, jež nebyly napsány v jednom z .NET-kompatibilních programovacích jazyků (jako je C# 3.0, Visual Basic 2008 nebo C++/CLI). Jestliže sledujete rovněž programátorský kurz o jazyce C++, pak můžeme prohlásit, že všechny programy vytvořené v kurzu C++ jsou a budou nativní povahy. Program v C++ nepotřebuje vývojově-exekuční platformu .NET Framework 3.5, poněvadž ve svém spustitelném souboru (.exe) obsahuje strojový kód, který dovede instrukční sada CPU bez potíží zpracovat. Aplikace .NET mají jinou interní skladbu, ovšem její důkladný rozbor odložíme až na později.

Jako programátoři v jazyce C# 3.0 budeme moci vyvíjet tyto typy softwarových aplikací:

• konzolové aplikace (to jsou aplikace běžící v okně příkazového řádku),
• programy s bohatým grafickým uživatelským rozhraním (jde o typické formulářové aplikace s nabídkami, panely nástrojů, seznamy, tlačítky a dalšími vizuálními elementy),
• knihovny tříd, ovládacích prvků a komponent,
• webové aplikace a XML webové služby,
• služby systému Windows,
• řešení pro automatizaci kancelářských aplikací ze sady Office 2007,
• 2D a 3D počítačové hry s vyspělou grafikou, fyzikou a umělou inteligencí,
• a mnohé další…

Mějte na paměti, že stanete-li se vývojáři v jazyce C# 3.0, budete mít nebývale široké možnosti uplatnění. Samozřejmě než se obeznámíte se všemi důležitými oblastmi informatických věd, bude to jistý čas trvat. Když se chcete učit programovat, musíte pracovat v tzv. kumulativním režimu studia. To znamená, že vpřed postupujete po malých krůčcích a k už existující bázi znalostí pozvolna přidáváte další a další poznatky. Zcela stěžejní roli v procesu studia hraje praktická zkušenost. Řečeno jinak: programovat se naučíte pouze a jenom soustavným programováním, tedy vymýšlením algoritmů a psaním nových a nových programů. Vždy se cení, pokud se programátor nadchne pro experimentování, bádání a zkoumání nových, dosud neznámých oblastí a řešení. Když se nad tím zamyslíme, rychle dojdeme k závěru, že v tomto směru se přístup k studiu programování podobá studiu matematiky. Stejně jako se nikdo nestal skvělým matematikem za pár týdnů, nemůžeme očekávat, že se student během několika neděl promění v ostříleného programátora. POZNÁMKA Jenom pro zajímavost uvádíme, že programování a matematika k sobě mají blíže, než se možná na první pohled jeví. Ve skutečnosti jsou matematické a informatické vědy propleteny do takové míry, že vyšší studium informatiky je zcela nemožné bez více než solidního matematického zázemí. O důležitosti matematiky a cennosti vybudovaného matematického aparátu se přesvědčujeme kupříkladu v počítačové grafice, při simulaci fyzikálních jevů nebo implementaci principů fuzzy logiky.

Instalace Visual C# 2008 Express a první spuštění vývojového prostředí

Instalační proces, jehož smyslem je nainstalovat na váš počítač vývojové prostředí produktu Visual C# 2008 Express, je dobře segmentovaný, uživatelsky přívětivý a přehledný. Instalace běžně trvá pár minut, ovšem její délka je pochopitelně ovlivněna počtem instalovaných položek. (Instalátor sám rozpozná, zda je nutno nějaké chybějící součástí doinstalovat či nikoliv.) Jelikož nepředpokládáme, že byste se s instalátorem dostali do křížku, přecházíme hned ke spuštění nainstalovaného softwaru. V nabídce Všechny programy objevíte po instalaci zástupce Microsoft Visual C# 2008 Express Edition, jehož aktivací dojde ke spuštění vývojového prostředí Visual C# 2008 Express. Doporučujeme vám zmíněného zástupce uložit také na pracovní plochu, nebo ještě lépe do panelu pro snadné spouštění programů. Visual C# 2008 Express tak bude pro vás okamžitě dosažitelný.

Po prvním spuštění Visual C# 2008 Express objevíte půvab do zeleného závoje zahaleného hlavního okna integrovaného vývojového prostředí (IDE, Integrated Development Environment). Integrované vývojové prostředí, nebo jinými slovy prostředí IDE je sadou nástrojů, které automatizují provádění programátorských úkonů. V prostředí IDE nalezneme důmyslné pomocníky, kteří nám pomohou s rychlou tvorbou softwaru podle směrnic RAD (Rapid Application Development). Setkáme se zde s editorem pro zápis zdrojového kódu, vizuálním návrhářem, kompilátorem, ladícím a spojovacím programem, elektronickou dokumentací, dynamickou nápovědou a s mnoha dalšími asistenty.

TIP Dialog New Project můžete zobrazit dalšími dvěma způsoby:

1. Pomocí nabídky:
otevřete nabídku File a klepněte na položku New Project.
2. Pomocí klávesové zkratky:
Stiskněte kombinaci kláves
Ctrl+Shift+N.

Ať už si vyberete kteroukoliv variantu, uvidíte před sebou okno New Project Visual C# 2008 Express vás přivítá s úvodní stránkou Start Page, která je složena z několika oken (obr. 1).Zcela největší část úvodní stránky zaujímá okno Visual C# Developer News, v němž se po chvíli zobrazí aktuální informační zprávy ze spřízněných RSS kanálů (musíte však být připojeni k internetu). Po malém průzkumu odhalíme další okna:

• Recent Projects: Okno obsahuje (prozatím prázdný) seznam posledně otevřených projektů jazyka C# 3.0. Významné jsou dvě hypertextová návěstí pro otevření existujícího projektu (Open Project) a založení nového projektu jazyka C# 3.0 (Create Project).

• Getting Started: Okno je naplněno hypertextovými odkazy, jimiž se můžete nechat vést při svých programátorských začátcích. Odkazy jsou propojeny se systémem elektronické dokumentace a webovým vývojářským centrem společnosti Microsoft.

• Visual C# Express Headlines: Okno uvádí krátké zprávy, věnované zpravidla novým doplňkům, produktům třetích stran nebo praktickým cvičením, která by mohla být zajímavá pro programátory pracující s jazykem C# 3.0.

Vytváření první aplikace v jazyce C# 3.0

První aplikace, kterou v jazyce C# 3.0 napíšeme, bude představovat konzolovou aplikaci. Takováto aplikace běží v okně příkazového řádku a uskutečňuje pouze základní vstupně-výstupní operace. Nenechte se prosím zmást jednoduchostí a poněkud strohým vizuálním ztvárněním aplikace – konzolové programy jsou první volbou pro začínající programátory, poněvadž umožňují abstrahovat od tvorby grafického rozhraní a zaměřit se spíše na pochopení primárních programátorských technik. Projekt nové aplikace jazyka C# 3.0 založíte klepnutím na odkaz Create Project v okně Recent Projects. Jakmile tak učiníte, objeví se dialogové okno pro založení nového projektu (New Project).
V dialogu New Project vybereme projektovou šablonu Console Application. Projektová šablona je podrobným popisem budoucí aplikace, neboť sděluje nejenom účel použití aplikace, ale determinuje také všechny její součásti. Abychom nemuseli aplikaci sami konfigurovat, raději využijeme dovedností připravené projektové šablony, která pro nás založí nový projekt odpovídajícího typu. Do textového pole Name zapíšeme název naší první aplikace. Jak zjistíte, Visual C# 2008 Express aplikaci implicitně pojmenoval, ovšem to nám pochopitelně nebrání v tom, abychom zadali svůj vlastní název. V našem případě to bude text „PrvníAplikace“, psaný bez uvozovek (obr. 2). Pokud jsme hotovi, stiskneme tlačítko OK.

Charakteristika zdrojového kódu první aplikace

Visual C# 2008 Express vytvoří nový projekt konzolové aplikace a hlavní zdrojový soubor Program.cs otevře v editoru zdrojového kódu. Zdrojový soubor je označení pro soubor se zdrojovým kódem jazyka C# 3.0. Všechny zdrojové soubory jazyka C# 3.0 mají příponu .cs (totožnou koncovku mají rovněž zdrojové soubory jazyka C# ve verzích 1.0, 1.1 a 2.0). Visual C# 2008 Express zcela autonomně vygeneroval následující zdrojový kód: using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace PrvníAplikace
{
class Program
{
static void Main(string[] args)
{
}
}
}
Podívejme se, z čeho se kód skládá. První čtyři řádky představují import jmenných prostorů pomocí direktiv using. Jmenné prostory nebo též prostory jmen jsou logickými celky, v nichž se nacházejí funkčně příbuzné entity. Jmenné prostory si můžete představit jako složky s jistým obsahem. V programování jsou ve jmenných prostorech nejčastěji kategoricky uspořádány datové typy. Když použijeme v souvislosti se jmenným prostorem direktivu using, zavedeme do našeho zdrojového kódu vše, co se v dotyčném jmenném prostoru nachází. Všimněte si, že direktiva using je v jazyce C# 3.0 příkazem, neboť její znění je ukončeno středníkem. Všechny příkazy jazyka C# 3.0 jsou zakončeny středníky, podobně jako je tomu v jazycích C a C++. Za direktivami using přichází deklarace jmenného prostoru pomocí klíčového slova namespace. Editor zdrojového kódu jazyka C# 3.0 barevně zvýrazňuje různé části zapsaného kódu. Klíčová slova jazyka jsou modrou barvou. Klíčové slovo je rezervované slovo jazyka, které má svůj specifický význam. Klíčová slova mohou být podle platných syntaktických pravidel kombinována, poté je jejich význam závislý na kontextu, v němž jsou užita.
Visual C# 2008 Express generuje pro každou novou aplikaci výchozí (kořenový) jmenný prostor, jehož název je identický s názvem založeného aplikačního projektu. To se děje i v našem případě: jmenný prostor se jmenuje PrvníAplikace. Každý jmenný prostor má svou hlavičku a tělo. Hlavička kořenového jmenného prostoru se skládá z klíčového slova namespace a identifikátoru, čili názvu jmenného prostoru. Tělo jmenného prostoru je tvořeno blokem, jenž je ohraničen složenými závorkami ({}). První složená závorka ({) je otevírací, zatímco druhá složená závorka (}) je uzavírací. Pokud bychom z výše zobrazeného zdrojového kódu vyjmuli pouze kořenový jmenný prostor, získali bychom toto: namespace PrvníAplikace
{

}
Veškeré ostatní součásti naší první aplikace jsou situovány ve výchozím jmenném prostoru. Pokud říkáme, že něco se nachází ve jmenném prostoru, pak tím dáváme najevo, že daná entita je vložena do těla tohoto jmenného prostoru. Ve jmenném prostoru PrvníAplikace se nachází deklarace třídy s názvem Program: class Program
{
static void Main(string[] args)
{
}
}
Třída je termínem z objektově orientované filozofie vývoje softwaru a v podstatě reprezentuje šablonu, podle které budou zakládány softwarové objekty.
POZNÁMKA Jazyk C# 3.0 je objektově orientovaným programovacím jazykem. Ačkoliv prozatím ještě nejsme tak daleko, abychom mohli fundovaně diskutovat o objektově orientovaném programování, C# 3.0 je natolik silně spojen s filozofií OOP, že s některými konstrukcemi přicházíme do kontaktu i při tak triviálním úkolu, jako je založení první konzolové aplikace. Vzhledem k tomu, že není naším cílem komplikovat výklad, domluvme se, že se prozatím seznámíme pouze s třídou, kterou budeme chápat jako předlohu pro generování softwarových objektů. Získané objekty pak budeme moci použít pro uskutečnění různých akcí.

Každý program jazyka C# 3.0 obsahuje alespoň jednu třídu. Této třídě se říká hlavní třída a v případě naší konzolové aplikace se jmenuje Program. Deklarace třídy je uvedena klíčovým slovem class, za nímž stojí identifikátor (název) třídy. Podobně jako jmenné prostory, i třídy mají své hlavičky a svá těla. Hlavička třídy je tvořena klíčovým slovem class a názvem třídy. Tělo třídy je pak vymezeno blokem, jejž ohraničují složené závorky. V těle třídy Program sídlí metoda Main, která zastává pozici vstupního bodu programu. Každý program má svůj vstupní bod, který je syntakticky reprezentován metodou, jejíž zpracování je nastartováno v okamžiku, kdy je program spuštěn. V jazyce C# 3.0 je hlavní metodou Main (na rozdíl od jazyka C++, kde jde o metodu main). C# 3.0 rozlišuje mezi velkými a malými písmeny, a proto je nezbytně nutné, aby byl název hlavní metody psán s velkým počátečním písmenem. Zdrojový kód metody Main je následující: static void Main(string[] args)
{

}
Opět podobně jako u jmenných prostorů a tříd, také u metod dovedeme identifikovat jejich hlavičky a těla. Hlavička metody Main je poněkud komplikovanější, naštěstí ji nyní nebudeme podrobně analyzovat. Nás spíše zajímá samotné tělo metody. A proč? Protože do těla hlavní metody Main můžeme zapsat příkazy, které budou určovat chování naší první konzolové aplikace. Za účelem zobrazení uvítací zprávy upravíme tělo metody Main takto: static void Main(string[] args)
{
Console.WriteLine("Vítá vás jazyk C# 3.0!");
}
Do těla metody Main jsme umístili jeden příkaz, který volá metodu WriteLine třídy Console. Když této metodě předáme text, metoda zabezpečí jeho zobrazení v konzolovém okně. Text tvoří uvítací zpráva, která je uzavřena ve dvojitých uvozovkách. Bude dobré, když si zapamatuje, že text obklopený dvojitými uvozovkami se nazývá textový řetězec. Editor zdrojového kódu formátuje textové řetězce červenou barvou, takže je lze snadno rozpoznat. Vždy, když budeme volat nějakou metodu, zapíšeme nejprve její název, za kterým budou následovat závorky. Tyto závorky mohou být buď prázdné, anebo v nich smí být uvedena vstupní hodnota, případné hodnoty, které metodě předáváme. V naší ukázce odevzdáváme metodě WriteLine jeden textový řetězec, proto se v závorkách nachází pouze on. Pokud volaná metoda patří třídě, pak ji voláme podle tohoto vzoru: Třída.Metoda(VstupníHodnota); čili názvy třídy a metody jsou odděleny tečkou (přesněji tečkovým operátorem).

Přeložení a spuštění první aplikace

Když budeme chtít naší první aplikaci spustit, musíme nejprve zabezpečit překlad (kompilaci) zapsaného zdrojového kódu jazyka C# 3.0. To uděláme takto: otevřeme nabídku Build a klepneme na položku Build Solution (nebo jednoduše stiskneme klávesu F6). Jestliže je vše v pořádku, ve stavovém řádku hlavního okna Visual C# 2008 Express se objeví zpráva „Build succeeded“. Naopak, zobrazí-li se chybové hlášení, zkontrolujte zapsaný zdrojový kód, poněvadž je v něm s největší pravděpodobností chyba. Opravte ji a opět přeložte zdrojový kód aplikace.
Program spustíme příkazem Start Without Debugging z nabídky Debug, anebo klávesovou zkratkou Ctrl+F5. Výborně, aplikace funguje, jak má (obr. 3). Okno konzoly uzavřete stiskem libovolné klávesy. 8 0071/VAC o