Proměnné a datové typy
(Rozdíly mezi verzemi)
(→Označování proměnných: přepsáno do obecné roviny) |
|||
Řádka 72: | Řádka 72: | ||
<td>zabírá 4 byty, číselná hodnota (-3.402823E38 až –1.401298E-45 pro | <td>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)</td> | + | záporné hodnoty, 1,401298E-45 až 3,402823E38 pro kladné hodnoty)</td> |
<td><code>float</code></td> | <td><code>float</code></td> | ||
Řádka 194: | Řádka 194: | ||
*Příklad konstant v jazyce C#: | *Příklad konstant v jazyce C#: | ||
const int months = 12, weeks = 52, days = 365; | const int months = 12, weeks = 52, days = 365; | ||
− | *Konstant2 je přiřazen řetězec nebo číslo,které se nemění.Uživatel si může nadefinovat svou konstantu příkazem const.Definice vlastních konstant má tuto syntaxi: | + | *Konstant2 je přiřazen řetězec nebo číslo, které se nemění.Uživatel si může nadefinovat svou konstantu příkazem const.Definice vlastních konstant má tuto syntaxi: |
[Public|Private] Const název konstanty [As typ] = výraz | [Public|Private] Const název konstanty [As typ] = výraz | ||
Řádka 200: | Řádka 200: | ||
== Pole == | == Pole == | ||
− | *kolekce hodnot (čísel, textových řetězců, ...) daného datového typu | + | * 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ů. | + | * '''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ů. |
− | *'''Index''' | + | * '''Index''' - při deklaraci proměnných může být identifikátor proměnné opatřen indexovým rozsahem, to je, že řada po sobě jdoucích prvků (paměťových míst) je nazvána stejným jménem, rozlišena číslem a vložena do pole, indexový rozsah udává jeden rozměr pole, teoreticky může být pole velké o <code>n*n</code> prvcích |
** příklad deklarace pole v CSharpu: | ** příklad deklarace pole v CSharpu: | ||
***<code>int[] poleJedenIndex = new int[10]; </code> | ***<code>int[] poleJedenIndex = new int[10]; </code> |
Verze z 1. 5. 2012, 19:22
- 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í
- Pro proměnnou rezervujeme za běhu programu prostor v paměti pro uložení proměnné. Explicitní deklarace proměnné se zapisuje před jejím vlastním použitím, zpravidla na začátku procedury události. Deklarace začíná příkazem Dim (v podstatě znamená dimenze nebo dimenzovat). V deklaraci můžeme sdělit VBA jaký typ dat budeme používat (není povinné). Neuvedeme-li v deklaraci typ proměnné je automaticky použit implicitní typ dat Variant - může obsahovat data libovolného typu a velikosti.
- Příklad přiřazení explicitní deklarace proměnné ve Visual Basicu Prijmeni datového typu String
Dim Prijmeni As String
- Příklad přiřazení explicitní deklarace proměnné ve CSharpu Prijmeni datového typu String i s přiřazením hodnoty
string Prijmeni = "Karel IV";
- Příklad přiřazení hodnoty do proměnné Prijmeni
Prijmeni = "Karel IV"
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.
- Příklad konstant v jazyce C#:
const int months = 12, weeks = 52, days = 365;
- Konstant2 je přiřazen řetězec nebo číslo, které se nemění.Uživatel si může nadefinovat svou konstantu příkazem const.Definice vlastních konstant má tuto syntaxi:
[Public|Private] Const název konstanty [As typ] = výraz
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ů.
- Index - při deklaraci proměnných může být identifikátor proměnné opatřen indexovým rozsahem, to je, že řada po sobě jdoucích prvků (paměťových míst) je nazvána stejným jménem, rozlišena číslem a vložena do pole, indexový rozsah udává jeden rozměr pole, teoreticky může být pole velké o
n*n
prvcích- příklad deklarace pole v CSharpu:
int[] poleJedenIndex = new int[10];
- deklaruje pole s názvem poleJedenIndex o velikosti 10 prvků, indexem budou čísla od 0 do 9, každý jeden prvek bude datového typu Int32
- příklad deklarace pole ve Visual Basicu:
Dim MePole(10) As Integer
- deklaruje pole s názvem MePole o velikosti 10 prvků, každý jeden prvek pole bude datového typu Integer
- Pole může být indexováno od 0 nebo od 1. Způsob indexování závisí na nastavení příkazu Option Base. Není-li specifikován příkaz Option Base = 1, začínají se všechna pole indexovat od nuly.
- příklad deklarace pole v CSharpu:
- 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"); echo $foo["c"] . $foo["b"] . $foo["a"];
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ů
- Aritmetické operátory
- CSharp:
- / * + - %
- Visual Basic:
- arg + arg sečte oba argumenty
- arg - arg odečte oba argumenty
- -arg změní znaménko
- arg*arg vynásobí oba argumenty
- arg/arg vydělí první druhým
- argarg celočíselné dělení (výsledek je jen celá část podílu)
- arg1 MOD arg2 zbytek po celočíselném dělení
- arg1^arg2 umocnění základ arg1 mocnitelem arg2
- CSharp:
- Relační
- CSharp:
- < > <= >= != ==
- Visual Basic:
- arg1 < arg2 výsledek je true , je-li arg1 menší než arg2 , jinak false
- arg1 > arg2 výsledek je true , je-li arg1 větší než arg2 , jinak false
- arg1 = arg2 výsledek je true , je-li arg1 větší nebo roven arg2 , jinak false
- arg1 = arg2 výsledek je true , je-li arg1 roven arg2 , jinak false
- arg1 arg2 výsledek je true , když arg1 není roven arg2 , jinak false
- Like prověří , zda se v řetězci nachází určitý vzorek
- Is prověří ,zda existuje objektová proměnná daného typu , nebo zda dvě
- objektové proměnné obsahují odkaz na stejný objekt.
- CSharp:
- Logické
- CSharp:
- ! && ||
- Visual Basic:
- arg1 AND arg2 logický součin obou argumentů
- arg1 OR arg2 log. součet obou argumentů
- arg1 XOR arg2 výlučně OR (nonekvivalence) argumentů
- NOT arg negace arg.
- arg1 IMP arg2 implikace arg.
- arg1 EQV arg2 ekvivalence arg.
- CSharp:
- Bitové
bit1 bit2 výsledek 0 0 1 0 1 1 1 0 0 1 1 1
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 -
.