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 HODINOVÁ DOTACE: 1
Proměnné, konstanty a datové typy Proměnná Jak již bylo stručně zmíněno v kapitole Algoritmizace proměnná je místo v operační paměti počítače, které slouží pro uložení hodnoty. Hodnota, která se neuloží do paměti či bezprostředně nepoužije, je okamžitě ztracena. Takto uložených hodnot může být velké množství a je nutné se mezi nimi orientovat. Je možné si představit, že operační paměť je rozdělena na jednotlivé pojmenované části, do kterých ukládáme hodnoty. Pro každou ukládanou hodnotu musíme vyhradit místo v paměti a toto místo pojmenovat. Jméno proměnné nazýváme identifikátor. Vyhrazování místa v paměti a jeho pojmenování se nazývá deklarace proměnné. Do takto vytvořených proměnných můžeme ukládat hodnoty pomocí přiřazovacího příkazu. Příklad části operační paměti: - v proměnné A je uložena hodnota 10 - v proměnné R je uložena hodnota Ahoj - v proměnné B je uložena hodnota 4.8 A 10 R Ahoj B 4.8 Nyní si podrobně vysvětlíme použité pojmy a práci s nimi v jazyce C#. 1
1) Identifikátor proměnné Je to řetězec znaků, kterým proměnnou nazveme. Tento řetězec musí splňovat následující vlastnosti: a) Počet jeho znaků je menší než 256. b) Nesmí začínat číslicí. cislo1 správně 1cislo chybně c) Neshoduje se s žádným klíčovým slovem daného jazyka. sub int chybně chybně private chybně d) Neobsahuje pomocné znaky (?,!,., mezerník, ) počet žáků chybně pocet.zaku chybně e) Rozlišuje malá a velká písmena. soucet a Soucet jsou různé identifikátory Navíc jsou v jazyce C# jisté zvyklosti, které je vhodné dodržovat. a) Identifikátor volíme tak, aby jeho jméno vystihovalo obsah proměnné. p nevhodné počet vhodné b) Jednoslovný identifikátor zapisujeme písmeny malé abecedy. c) V identifikátoru, který se skládá z více slov, každé další slovo začíná velkým písmenem. Pocetzaku pocetzaku pocetzaku nevhodné nevhodné vhodné 2
2) Datové typy Datový typ proměnné určuje, jakou hodnotu je možné do proměnné uložit a jaké operace se s ní dají provádět. Následující tabulka uvádí přehled nejčastěji používaných datových typů jazyka C#. Druh hodnoty Název typu Poznámka Celé číslo int Desetinné číslo double Místo čárky desetinná tečka Logická hodnota bool ano = true, ne = false Textový řetězec string Hodnoty v úvozovkách Barva Color 3) Deklarace proměnné V jazyce C# se provádí formou příkazu, v němž se nejprve uvede datový typ proměnné a za mezerou její identifikátor. Tak, jako každý příkaz v jazyce C#, je i tento ukončen středníkem. datový_typ identifikátor; Příklady deklarací proměnných: int soucet; string jmenozaka; 3
4) Deklarace s inicializací Zápis, který umožňuje do proměnné ihned po jejím vzniku přiřadit počáteční hodnotu. datový_typ identifikátor=hodnota; Příklad ekvivalentních deklarace proměnné a následného přiřazení hodnoty: a) int soucet; deklarace soucet=0; inicializace b) int soucet=0; deklarace s inicializací 5) Typové konverze Používáme je v případě, kdy potřebujeme převést hodnotu na jiný datový typ. Metody pro převody datových typů se nacházejí ve třídě Convert. Nejčastěji používané konverze: a) Převod řetězce na celé číslo Convert.ToInt32(převáděný řetězec); b) Převod řetězce na desetinné číslo Convert.ToDouble(převáděný řetězec); c) Převod čísla na řetězec Convert.ToString(číslo); 4
6) Ošetření zadání hodnoty nesprávného datového typu V případě, kdy uživatel zadá vstupní data jiného datového typu, než je požadován nebo ve špatném formátu, program je ukončen oknem s chybovou hláškou. Tomuto můžeme zabránit vhodným použitím metody try-catch, která vykoná pokusný blok příkazů za slovem try pouze na zkoušku. Jestliže některý z příkazů selže, pak se namísto běhové chyby přeskočí zbytek pokusného bloku a vykonají se příkazy za slovem catch. Celý tento příkaz pak má následující syntaxi: try Pokusný blok catch Příkazy 5
7) Lokální a globální (členské) proměnné Lokální proměnné jsou deklarovány uvnitř událostní procedury a pouze uvnitř této procedury jsou použitelné. Po jejím ukončení ztrácí svou platnost. Globální (členské) proměnné jsou definovány ve třídě a svou platnost si zachovávají po celou dobu běhu programu. Konstanta Konstanty jsou v podstatě proměnné, ale nelze je na rozdíl od proměnných měnit. Definují se pomocí klíčového slova const. const datový_typ identifikátor=hodnota; Příklad definice konstanty: const double pi = 3.14; 6
Příklad: Obvod a obsah kruhu Vstupními daty následujícího programu je desetinné číslo označující poloměr kruhu. Výstupem je vypočtená hodnota obvodu a obsahu kruhu. Uživatelské rozhraní a jména jednotlivých komponent: polepolomer poleobvod poleobsah tlacitkoobvod tlacitkoobsah Formulář se jmenuje oknoprogramu. 7
Programový kód: //Pro funkci programu postačuje připojit následující dvě knihovny. using System; using System.Windows.Forms; //Dále ve jmenném prostoru WindowsFormsApplication1 pracujeme se //třídou oknoprogramu. Pojmy jmenný prostor a třída budou vysvětleny //později, prozatím si zapamatujte, že jsou nedílnou součástí //programového kódu. namespace WindowsFormsApplication1 public partial class oknoprogramu : Form const double pi = 3.14; //Konstanta pi je deklarována globálně, //aby mohla být použita v obou //událostních procedurách. Její hodnota je //reálné číslo, proto je datového typu //double. Místo desetinné čárky používá //C# tečku. public oknoprogramu() InitializeComponent(); 8
//Událostní procedura tlacitkoobvod_click se spouští, když uživatel //klikne na tlacitkoobvod. private void tlacitkoobvod_click(object sender, EventArgs e) double r; //Lokální proměnná r je určena k uložení //hodnoty poloměru kruhu //Pomocí příkazu try-catch odstraníme chyby, které by vznikly při zadání //hodnoty, kterou nelze převést na datový typ double (tedy i při zadání //prázdného řetězce znaků. try catch r = Convert.ToDouble(polePolomer.Text); //Do proměnné r se uloží obsah objektu //polepolomer převedený na reálné číslo poleobvod.text = "Chyba dat"; //Do poleobvod se //vytiskne text Chyba dat return; //Ukončení procedury tlacitkoobvod_click double o = 2 * pi * r; //Lokální proměnná o je //deklarována a současně i //inicializována poleobvod.text=convert.tostring(o); //Hodnota proměnné o je //převedena na datový //typ string a zobrazena //v objektu poleobvod 9
//Událostní procedura tlacitkoobsah_click se spouští ve chvíli, kdy uživatel //klikne na tlacitkoobsah. Další popis je stejný, jako u procedury //tlacitkoobvod_click. private void tlacitkoobsah_click(object sender, EventArgs e) double r; try r = Convert.ToDouble(polePolomer.Text); catch poleobsah.text = "Chyba dat"; return; double s = pi * r * r; poleobsah.text = Convert.ToString(s); 10