Proměnné a datové typy
(překlep) |
(e explicitní deklarace) |
||
Řádka 169: | Řádka 169: | ||
=== Explicitní === | === Explicitní === | ||
− | * Pro proměnnou rezervujeme | + | * Předem určíme, jaké proměnné budeme používat. |
+ | * Pro proměnnou rezervujeme prostor v paměti pro uložení její hodnoty za běhu programu | ||
+ | * Explicitní deklarace proměnné se zapisuje před jejím vlastním použitím, zpravidla na začátku procedury události, programu, funkce. | ||
+ | * Ve VisualBasicu začíná deklarace příkazem <code>Dim</code> (v podstatě znamená dimenze nebo dimenzovat) | ||
+ | * V deklaraci můžeme sdělit jaký typ dat budeme do proměnné ukládat (<code>Integer</code>, <code>Double</code>, <code>String</code>,...) | ||
+ | * Neuvedeme-li ve Visual Basicu v deklaraci typ proměnné (typ dat) je automaticky použit typ <code>Variant</code> - ten může obsahovat data libovolného typu a velikosti | ||
− | + | '''Příklad explicitní deklarace''' | |
− | + | <table class="wikitable"> | |
+ | <tr><th style="width:50%">Visual Basic</th><th style="width:50%">C#</th></tr> | ||
+ | <tr> | ||
+ | <td style="vertical-align:top;"> | ||
+ | <code>Dim Prijmeni As String</code><br> | ||
+ | <code>Prijmeni = "Karel IV"</code> | ||
− | + | ''Explicitní deklarace proměnné <code>Prijmeni</code>, která je datového typu <code>String</code>, ve VisualBasicu.'' | |
− | + | </td> | |
+ | <td style="vertical-align:top;"> | ||
+ | <code>string Prijmeni = "Karel IV";</code> | ||
− | + | ''Explicitní deklarace proměnné <code>Prijmeni</code>, která je datového typu <code>string</code>, v C#.'' | |
− | + | </td> | |
+ | </tr> | ||
+ | <tr> | ||
+ | <td colspan="2"> | ||
+ | S takto deklarovanými proměnnými můžeme následně dále pracovat, např. přiřadit novou hodnotu:<br> | ||
+ | <code>Prijmeni = "Novotný"</code> | ||
+ | </td> | ||
+ | </tr> | ||
+ | </table> | ||
=== Implicitní === | === Implicitní === | ||
− | *Jedná se o deklaraci proměnné bez příkazu Dim. Implicitní deklarace znamená, že proměnnou přímo použijeme v programu (viz příklad). Implicitní deklarace má výhodu rychlejšího zápisu programového kódu, ale nese s sebou určitá rizika. Hlavním rizikem je to, že VBA při použití implicitních deklarací nepovažuje za chybu případný překlep ve jménu proměnné a považuje překlep za deklaraci nové proměnné. | + | * Jedná se o deklaraci proměnné bez příkazu Dim. Implicitní deklarace znamená, že proměnnou přímo použijeme v programu (viz příklad). Implicitní deklarace má výhodu rychlejšího zápisu programového kódu, ale nese s sebou určitá rizika. Hlavním rizikem je to, že VBA při použití implicitních deklarací nepovažuje za chybu případný překlep ve jménu proměnné a považuje překlep za deklaraci nové proměnné. |
*<b>CSharp tuto deklaraci proměnné nepodporuje. V CSharpu lze provést deklaraci proměnné pouze explicitně.</b> | *<b>CSharp tuto deklaraci proměnné nepodporuje. V CSharpu lze provést deklaraci proměnné pouze explicitně.</b> | ||
*Příklad implicitní deklarace proměnné Jmeno | *Příklad implicitní deklarace proměnné Jmeno |
Verze z 7. 5. 2012, 13:40
- základní datové typy v jazyce C#
- explicitní a implicitní deklarace proměnných
- konstanta
- pole (velikost pole, rozměr pole, index, asociativní pole)
- datové typy u databází
- označování proměnných
- operace s proměnnými a sestavování výrazů
- priorita operátorů
Obsah |
Základní datové typy
Konkrétní hodnoty rozsahu čísel si pamatovat nemusíte, je to tu, aby jste měli představu o tom, o jakých číslech mluvíte.
VB | C# | ||
---|---|---|---|
Celočíselné | |||
Byte |
zabírá 1 byte (0–255) | ||
Integer |
zabírá 2 byty, číslo se znaménkem (-32768 až 32767) | int |
zabírá 4 byty |
Long |
zabírá 4 byty, celočíselná hodnota (-2147483648 až 2147483647) | long |
zabírá 8 bytů |
Reálné | |||
Decimal |
zabírá 14 bytů, číslo se znaménkem, lze ho použít jen pomocí Variant, jehož je podtypem | ||
Single |
zabírá 4 byty, číselná hodnota (-3.402823E38 až –1.401298E-45 pro záporné hodnoty, 1,401298E-45 až 3,402823E38 pro kladné hodnoty) | float |
zabírá 4 byty |
Double |
zabírá 8 bytů, obdoba Single s dvoujnásobnou
přesností |
double |
zabírá 8 bytů |
Logické | |||
Boolean |
zabírá 2 byty, uchovává hodnotu True (pravda), nebo
False (lež) |
bool |
zabírá 1 byte, logická hodnota – nabývá hodnot true ,
nebo false |
Řetězcové | |||
String |
řetězec libovolných znaků kódovaných pomocí ASCII, délka prakticky
neomezena (asi 2 miliardy znaků); dělí se na řetězec pevné a dynamické délky |
string |
posloupnost znaků (řetězec), 2 byty na jeden znak |
Nestandardní | |||
Object |
zabírá 4 byty, obsahuje odkaz na objekt (adresu objektu v paměti) | object |
podle přiřazené hodnoty přiřazuje i datový typ
object a; a = 1;proměnná a je typu Int32 |
Variant |
zabírá 16 bytů, obecný datový typ, který může obsahovat jeden
z výše uvedených datových typů, proměnná tohoto typu může dynamicky měnit svůj datový typ |
||
Date |
zabírá 8 bytů, obsahuje hodnotu odpovídající datumu a času (1.leden 100 až 31.prosinec 9999,00:00:00 až 23:59:59 | DateTime |
uchovává datum a čas |
Explicitní a implicitní deklarace proměnných
Explicitní
- Předem určíme, jaké proměnné budeme používat.
- Pro proměnnou rezervujeme prostor v paměti pro uložení její hodnoty za běhu programu
- Explicitní deklarace proměnné se zapisuje před jejím vlastním použitím, zpravidla na začátku procedury události, programu, funkce.
- Ve VisualBasicu začíná deklarace příkazem
Dim
(v podstatě znamená dimenze nebo dimenzovat) - V deklaraci můžeme sdělit jaký typ dat budeme do proměnné ukládat (
Integer
,Double
,String
,...) - Neuvedeme-li ve Visual Basicu v deklaraci typ proměnné (typ dat) je automaticky použit typ
Variant
- ten může obsahovat data libovolného typu a velikosti
Příklad explicitní deklarace
Visual Basic | C# |
---|---|
Explicitní deklarace proměnné |
Explicitní deklarace proměnné |
S takto deklarovanými proměnnými můžeme následně dále pracovat, např. přiřadit novou hodnotu: |
Implicitní
- Jedná se o deklaraci proměnné bez příkazu Dim. Implicitní deklarace znamená, že proměnnou přímo použijeme v programu (viz příklad). Implicitní deklarace má výhodu rychlejšího zápisu programového kódu, ale nese s sebou určitá rizika. Hlavním rizikem je to, že VBA při použití implicitních deklarací nepovažuje za chybu případný překlep ve jménu proměnné a považuje překlep za deklaraci nové proměnné.
- CSharp tuto deklaraci proměnné nepodporuje. V CSharpu lze provést deklaraci proměnné pouze explicitně.
- Příklad implicitní deklarace proměnné Jmeno
Jmeno = "Pepa"
Konstanta
- Konstanty jsou symboly reprezentující v programu neměnnou hodnotu. Konstantě může být přiřazen řetězec, nebo číslo.
- Příklad konstant v jazyce C#:
const int months = 12, weeks = 52, days = 365;
- Uživatel si může nadefinovat svou konstantu příkazem
const
. Definice vlastních konstant má tuto syntaxi (ve VisualBasicu):
[Public|Private] Const název konstanty [As typ] = výraz ' např.: Const Months As Integer = 12 Const Weeks As Integer = 52 Public Const Days As Integer = 365 Private Const MyTitle As String = "HELP"
Pole
- kolekce hodnot (čísel, textových řetězců, ...) daného datového typu
- Velikost pole - odpovídá počtu jeho prvků. U jednorozměrného pole je tedy dána maximální hodnotou indexu. U pole dvourozměrného odpovídá součinu maximálních hodnot obou indexů.
' Jednorozměrné pole - 3 indexy (0-2) => velikost pole = 3; jedna se v podstate o 'seznam hodnot' pole1(0) = 18 pole1(1) = 45 pole1(2) = 10 ' Dvourozměrné pole - indexy 2x3 (0-1, 0-2) => velikost pole = 2*3 = 6; jedna se v podstate o 'tabulku hodnot' s dvema radky a tremi sloupci pole2(0,0) = 18 pole2(0,1) = 45 pole2(0,2) = 12 pole2(1,0) = 16 pole2(1,1) = pole(0,2) ' tj. nastavi prvku s indexem (1,1) stejnou hodnotu jakou obsahuje prvek s indexem (0,2) - tj. 12 pole2(1,2) = 60
- Index (také nazýván jako klíč) - jednoznačně identifikuje prvek v poli
- většinou je indexem celé číslo, indexy většinou začínají číslem 0
- pomocí indexu lze přistupovat ke konkrétnímu prvku v poli a dále s tímto prvkem pracovat ("vrať mi 3. prvek pole", "nastav 60. prvku v poli hodnotu XYZ")
- jak se s indexy pracuje (ve VisualBasicu) ukazuje příklad u předchozího bodu (Velikost pole)
- Deklarace pole
VisualBasic | C# |
---|---|
|
|
- Asociativní pole
- je pole jehož prvky nejsou indexovány pomocí posloupnosti celých čísel, ale pomocí klíčů. Klíčem může být číslo (v nesekvenční posloupnosti), textový řetězec a jiné.
Příklad asociativního pole v jazyce PHP:
$foo = array( "a" => "1", "b" => "10", "c" => "100", 1254 => "apple item", "name" => "John Doe" ); echo $foo["c"] . $foo["b"] . $foo["a"] . $foo[1254] . $foo["name"]; // vypise text 100101apple itemJohn Doe
Datové typy u databází
- MySQL datové typy
Číselné typy | |
---|---|
Název | Rozsah čísel |
TINYINT |
−128 až 127 nebo 0 až 255 |
SMALLINT |
−32768 až 32767 nebo 0 až 65535 |
MEDIUMINT |
−8388608 až 8388607 nebo 0 až 16777215 |
INT |
−2147483648 až 2147483647 nebo 0 až 4294967295 |
DOUBLE |
nejmenší nenulové hodnoty jsou ±2,2250738585072014E-308; největší nenulové hodnoty jsou −±1,17976931348623157E+308. Je-li sloupec UNSIGNED , jsou záporné hodnoty zakázané. |
Řetězcové typy | |
Název | Velikost |
VARCHAR |
řetězec s pevně danou délkou – od 0 do 255 znaků |
TEXT |
řetězec o velké velikosti |
a spousta dalších řetězcových typů... | |
Typy pro datum a čas | |
DATE , TIME , DATETIME ,
TIMESTAMP , YEAR |
typy pro reprezentaci datumu a času |
Označování proměnných
- To jak proměnnou označíme (pojmenujeme) závisí na použitém programovacím jazyce. Obecně lze pojmenovat proměnnou podle následujících pravidel (tato pravidla většinou platí i pro pojmenování funkcí a procedur):
- název proměnné (identifikátor) může být sestaven z libovolné kombinace písmen a číslic a případně dalších znaků (většinou se používá ještě podtržítko
_
) - název nesmí začínat číslicí
- rozlišují se malá a velká písmena
- jako identifikátor nesmí být použito klíčové (vyhrazené) slovo daného programovacího jazyka (
if
,then
,for
,else
, ...) - název by neměl obsahovat háčky a čárky (může způsobovat problémy)
- název proměnné (identifikátor) může být sestaven z libovolné kombinace písmen a číslic a případně dalších znaků (většinou se používá ještě podtržítko
Operace s proměnnými a sestavování výrazů
VisualBasic | C# | Popis | Příklad |
---|---|---|---|
Aritmetické operátory | |||
|
|
sčítání |
|
|
|
odčítání |
|
|
|
dělení |
|
|
|
násobení |
|
|
|
modulo – zbytek po celočíselném dělení |
|
|
celočíselné dělení |
|
|
Relační (porovnávací) operátory | |||
Relační operátory vrací hodnotu
|
|||
|
|
menší než |
|
|
|
větší než |
|
|
|
menší nebo rovno |
|
|
|
větší nebo rovno |
|
|
|
není rovno |
|
|
|
je rovno |
|
|
prověří , zda se v řetězci nachází určitý vzorek | ||
Logické operátory | |||
|
|
logický součin | |
|
|
logický součet | |
|
^ |
exkluzivní
|
|
|
|
negace argumentu |
|
Priorita operátorů
Určuje pořadí vyhodnocování částí výrazu. Nejvyšší prioritu mají operátory aritmetické, pak následují relační a nejnižší prioritu u kombinovaných výrazů mají logické operátory.
V rámci aritmetických operátorů mají vyšší prioritu *
a /
před +
a -
.