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:
PROGRAMOVÁNÍ 2. ROČNÍK (PRG2)
STUDIJNÍ OBOR:
INFORMAČNÍ TECHNOLOGIE
HODINOVÁ DOTACE:
1
Vytvoření dokumentu bylo financováno ze zdrojů Evropského sociálního fondu a státního rozpočtu ČR. Název projektu: Výuka programování na střední škole pro praxi, Registrační číslo projektu: CZ.1.07/1.1.32/02.0007
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 R B
10 Ahoj 4.8
Nyní si podrobně vysvětlíme použité pojmy a práci s nimi v jazyce C#. Vytvoření dokumentu bylo financováno ze zdrojů Evropského sociálního fondu a státního rozpočtu ČR. Název projektu: Výuka programování na střední škole pro praxi, Registrační číslo projektu: CZ.1.07/1.1.32/02.0007 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 chybně int 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é
Vytvoření dokumentu bylo financováno ze zdrojů Evropského sociálního fondu a státního rozpočtu ČR. Název projektu: Výuka programování na střední škole pro praxi, Registrační číslo projektu: CZ.1.07/1.1.32/02.0007 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 Celé číslo Desetinné číslo Logická hodnota Textový řetězec Barva
Název typu int double bool string Color
Poznámka Místo čárky desetinná tečka ano = true, ne = false Hodnoty v úvozovkách
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;
Vytvoření dokumentu bylo financováno ze zdrojů Evropského sociálního fondu a státního rozpočtu ČR. Název projektu: Výuka programování na střední škole pro praxi, Registrační číslo projektu: CZ.1.07/1.1.32/02.0007 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);
Vytvoření dokumentu bylo financováno ze zdrojů Evropského sociálního fondu a státního rozpočtu ČR. Název projektu: Výuka programování na střední škole pro praxi, Registrační číslo projektu: CZ.1.07/1.1.32/02.0007 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 }
Vytvoření dokumentu bylo financováno ze zdrojů Evropského sociálního fondu a státního rozpočtu ČR. Název projektu: Výuka programování na střední škole pro praxi, Registrační číslo projektu: CZ.1.07/1.1.32/02.0007 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;
Vytvoření dokumentu bylo financováno ze zdrojů Evropského sociálního fondu a státního rozpočtu ČR. Název projektu: Výuka programování na střední škole pro praxi, Registrační číslo projektu: CZ.1.07/1.1.32/02.0007 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.
Vytvoření dokumentu bylo financováno ze zdrojů Evropského sociálního fondu a státního rozpočtu ČR. Název projektu: Výuka programování na střední škole pro praxi, Registrační číslo projektu: CZ.1.07/1.1.32/02.0007 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(); }
Vytvoření dokumentu bylo financováno ze zdrojů Evropského sociálního fondu a státního rozpočtu ČR. Název projektu: Výuka programování na střední škole pro praxi, Registrační číslo projektu: CZ.1.07/1.1.32/02.0007 8
//Událostní procedura tlacitkoObvod_Click se spouští, když uživatel //klikne na tlacitkoObvod. private void tlacitkoObvod_Click(object sender, EventArgs e) {
//Lokální proměnná r je určena k uložení //hodnoty poloměru kruhu
double r;
//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 { r = Convert.ToDouble(polePolomer.Text);
//Do proměnné r se uloží obsah objektu //polePolomer převedený na reálné číslo } catch { poleObvod.Text = "Chyba dat";
return;
//Do poleObvod se //vytiskne text Chyba dat
//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
}
Vytvoření dokumentu bylo financováno ze zdrojů Evropského sociálního fondu a státního rozpočtu ČR. Název projektu: Výuka programování na střední škole pro praxi, Registrační číslo projektu: CZ.1.07/1.1.32/02.0007 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); } } }
Vytvoření dokumentu bylo financováno ze zdrojů Evropského sociálního fondu a státního rozpočtu ČR. Název projektu: Výuka programování na střední škole pro praxi, Registrační číslo projektu: CZ.1.07/1.1.32/02.0007 10