Proměnné a datové typy

(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(+php comment)
(formátování -> operátory do tabulky)
Řádka 315: Řádka 315:
 
== Operace s proměnnými a sestavování výrazů ==
 
== Operace s proměnnými a sestavování výrazů ==
  
*Aritmetické operátory  
+
<table class="wikitable">
**CSharp:
+
<tr>
***/ * + - %
+
<th style="width:25%">VisualBasic</th>
**Visual Basic:
+
<th style="width:25%">C#</th>
***arg + arg sečte oba argumenty
+
<th>Popis</th>
***arg - arg odečte oba argumenty
+
<th>Příklad</th>
***-arg změní znaménko
+
</tr>
***arg*arg vynásobí oba argumenty
+
<tr>
***arg/arg vydělí první druhým
+
<th style="width:100%" colspan="4">Aritmetické operátory</th>
***argarg celočíselné dělení (výsledek je jen celá část podílu)
+
</tr>
***arg1 MOD arg2 zbytek po celočíselném dělení
+
<tr>
***arg1^arg2 umocnění základ arg1 mocnitelem arg2
+
<td>
 
+
<code>+</code>
*Relační
+
</td>
**CSharp:
+
<td>
***< > <= >= != ==
+
<code>+</code>
**Visual Basic:
+
</td>
***arg1 < arg2 výsledek je true , je-li arg1 menší než arg2 , jinak false
+
<td>sčítání</td>
***arg1 > arg2 výsledek je true , je-li arg1 větší než arg2 , jinak false
+
<td>
***arg1 = arg2 výsledek je true , je-li arg1 větší nebo roven arg2 , jinak false
+
<code>1 + 2</code>
***arg1 = arg2 výsledek je true , je-li arg1 roven arg2 , jinak false
+
</td>
***arg1 arg2 výsledek je true , když arg1 není roven arg2 , jinak false
+
</tr>
***Like prověří , zda se v řetězci nachází určitý vzorek
+
<tr>
***Is prověří ,zda existuje objektová proměnná daného typu , nebo zda dvě
+
<td>
**objektové proměnné obsahují odkaz na stejný objekt.
+
<code>-</code>
 
+
</td>
*Logické  
+
<td>
**CSharp:
+
<code>-</code>
***! && ||
+
</td>
**Visual Basic:
+
<td>odčítání</td>
***arg1 AND arg2 logický součin obou argumentů
+
<td>
***arg1 OR arg2 log. součet obou argumentů
+
<code>2 - 1</code>
***arg1 XOR arg2 výlučně OR (nonekvivalence) argumentů
+
</td>
***NOT arg negace arg.
+
</tr>
***arg1 IMP arg2 implikace arg.
+
<tr>
***arg1 EQV arg2 ekvivalence arg.
+
<td>
 +
<code>/</code>
 +
</td>
 +
<td>
 +
<code>/</code>
 +
</td>
 +
<td>dělení</td>
 +
<td>
 +
<code>30/10</code>
 +
</td>
 +
</tr>
 +
<tr>
 +
<td>
 +
<code>*</code>
 +
</td>
 +
<td>
 +
<code>*</code>
 +
</td>
 +
<td>násobení</td>
 +
<td>
 +
<code>3 * 3</code>
 +
</td>
 +
</tr>
 +
<tr>
 +
<td>
 +
<code>Mod</code>
 +
</td>
 +
<td>
 +
<code>%</code>
 +
</td>
 +
<td>modulo – zbytek po celočíselném dělení</td>
 +
<td>
 +
<code>7 Mod 3</code>
 +
výsledek bude
 +
<code>1</code>
 +
</td>
 +
</tr>
 +
<tr>
 +
<td>
 +
<code>\</code>
 +
</td>
 +
<td> </td>
 +
<td>celočíselné dělení</td>
 +
<td>
 +
<code>7 \ 3</code>
 +
výsledek bude
 +
<code>2</code>
 +
</td>
 +
</tr>
 +
<tr>
 +
<th style="width:100%" colspan="4">Relační (porovnávací) operátory</th>
 +
</tr>
 +
<tr>
 +
<td colspan="4">
 +
<em>
 +
Relační operátory vrací hodnotu
 +
<code>TRUE</code>
 +
, pokud vztah platí, jinak vrací
 +
<code>FALSE</code>
 +
.
 +
</em>
 +
</td>
 +
</tr>
 +
<tr>
 +
<td>
 +
<code>&lt;</code>
 +
</td>
 +
<td>
 +
<code>&lt;</code>
 +
</td>
 +
<td>menší než</td>
 +
<td>
 +
<code>1 &lt; 2</code>
 +
</td>
 +
</tr>
 +
<tr>
 +
<td>
 +
<code>></code>
 +
</td>
 +
<td>
 +
<code>></code>
 +
</td>
 +
<td>větší než</td>
 +
<td>
 +
<code>2 > 1</code>
 +
</td>
 +
</tr>
 +
<tr>
 +
<td>
 +
<code>&lt;=</code>
 +
</td>
 +
<td>
 +
<code>&lt;=</code>
 +
</td>
 +
<td>menší nebo rovno</td>
 +
<td>
 +
<code>10 &lt;= 10</code>
 +
,  
 +
<code>20 &lt;= 30</code>
 +
,
 +
</td>
 +
</tr>
 +
<tr>
 +
<td>
 +
<code>>=</code>
 +
</td>
 +
<td>
 +
<code>>=</code>
 +
</td>
 +
<td>větší nebo rovno</td>
 +
<td>
 +
<code>3 >= 3</code>
 +
,  
 +
<code>10 >= 5</code>
 +
, …
 +
</td>
 +
</tr>
 +
<tr>
 +
<td>
 +
<code>&lt;></code>
 +
</td>
 +
<td>
 +
<code>!=</code>
 +
</td>
 +
<td>není rovno</td>
 +
<td>
 +
<code>7 &lt;> 3</code>
 +
výsledek bude
 +
<code>TRUE</code>
 +
,  
 +
<code>5 &lt;> 5</code>
 +
výsledek bude 
 +
<code>FALSE</code>
 +
</td>
 +
</tr>
 +
<tr>
 +
<td>
 +
<code>=</code>
 +
</td>
 +
<td>
 +
<code>==</code>
 +
</td>
 +
<td>je rovno</td>
 +
<td>
 +
<code>10 = 10</code>
 +
→ výsledek bude
 +
<code>TRUE</code>
 +
,
 +
<br>
 +
<code>5 = 2</code>
 +
→ výsledek bude 
 +
<code>FALSE</code>
 +
</td>
 +
</tr>
 +
<tr>
 +
<td>
 +
<code>Like</code>
 +
</td>
 +
<td> </td>
 +
<td>prověří , zda se v řetězci nachází určitý vzorek</td>
 +
<td> </td>
 +
</tr>
 +
<tr>
 +
<th style="width:100%" colspan="4">Logické operátory</th>
 +
</tr>
 +
<tr>
 +
<td>
 +
<code>AND</code>
 +
</td>
 +
<td>
 +
<code>&amp;&amp;</code>
 +
</td>
 +
<td>logický součin</td>
 +
<td> </td>
 +
</tr>
 +
<tr>
 +
<td>
 +
<code>OR</code>
 +
</td>
 +
<td>
 +
<code>||</code>
 +
</td>
 +
<td>logický součet</td>
 +
<td> </td>
 +
</tr>
 +
<tr>
 +
<td>
 +
<code>XOR</code>
 +
</td>
 +
<td><code>^</code></td>
 +
<td>
 +
exkluzivní
 +
<code>OR</code>
 +
(
 +
<em>buď …, anebo …</em>
 +
)
 +
</td>
 +
<td>
 +
<code>0 XOR 0</code>
 +
 +
<code>0</code>
 +
<br>
 +
<code>0 XOR 1</code>
 +
 +
<code>1</code>
 +
<br>
 +
<code>1 XOR 0</code>
 +
 +
<code>1</code>
 +
<br>
 +
<code>1 XOR 1</code>
 +
→ 
 +
<code>0</code>
 +
</td>
 +
</tr>
 +
<tr>
 +
<td>
 +
<code>NOT</code>
 +
</td>
 +
<td>
 +
<code>!</code>
 +
</td>
 +
<td>negace argumentu</td>
 +
<td>
 +
<code>NOT TRUE</code>
 +
 +
<code>FALSE</code>
 +
<br>
 +
<code>NOT FALSE</code>
 +
→ 
 +
<code>TRUE</code>
 +
</td>
 +
</tr>
 +
</table>
  
  

Verze z 7. 5. 2012, 09:20

  • 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.
  • 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"]; // vypise 100101


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,2250738585­072014E-308; největší nenulové hodnoty jsou −±1,179769313­48623157E+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, TIMESTAMPYEAR 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)


Operace s proměnnými a sestavování výrazů

VisualBasic C# Popis Příklad
Aritmetické operátory

+

+

sčítání

1 + 2

-

-

odčítání

2 - 1

/

/

dělení

30/10

*

*

násobení

3 * 3

Mod

%

modulo – zbytek po celočíselném dělení

7 Mod 3 výsledek bude 1

\

  celočíselné dělení

7 \ 3 výsledek bude 2

Relační (porovnávací) operátory

Relační operátory vrací hodnotu TRUE , pokud vztah platí, jinak vrací FALSE .

<

<

menší než

1 < 2

>

>

větší než

2 > 1

<=

<=

menší nebo rovno

10 <= 10 , 20 <= 30 ,…

>=

>=

větší nebo rovno

3 >= 3 , 10 >= 5 , …

<>

!=

není rovno

7 <> 3 → výsledek bude TRUE , 5 <> 5 → výsledek bude  FALSE

=

==

je rovno

10 = 10 → výsledek bude TRUE ,
5 = 2 → výsledek bude  FALSE

Like

  prověří , zda se v řetězci nachází určitý vzorek  
Logické operátory

AND

&&

logický součin  

OR

||

logický součet  

XOR

^

exkluzivní OR ( buď …, anebo … )

0 XOR 00
0 XOR 11
1 XOR 01
1 XOR 1 →  0

NOT

!

negace argumentu

NOT TRUEFALSE
NOT FALSE →  TRUE


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 -.

Osobní nástroje
Jmenné prostory
Varianty
Akce
Navigace
Nástroje