Proměnné a datové typy

(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
m (formátování)
(sloučení data types of VB & C#)
Řádka 9: Řádka 9:
  
  
== Základní datové typy - Visual Basic ==
+
== Základní datové typy ==
 +
<table style="width:100%" class="wikitable">
 +
<tr>
 +
<th style="width:50%" colspan="2">VB</th>
  
'''Celočíselné:'''
+
<th style="width:50%" colspan="2">C#</th>
*Byte - zabírá 1Byte ( 0 až 255 )
+
</tr>
*Integer - celočíselná hodnota se znaménkem zabírající 2Byte (-32768 až 32767 )
+
*Long - celočíselná hodnota zabírající 4Byte (-2147483648 až 2147483647 )
+
  
 +
<tr>
 +
<th colspan="4">Celočíselné</th>
 +
</tr>
 +
<tr>
 +
<td><code>Byte</code></td>
  
'''Reálné:'''
+
<td>zabírá 1&nbsp;byte (0&ndash;255)</td>
*Decimal - celočíselná hodnota bez znaménka,lze ho použít jen pomocí Variant jehož je podtypem,zabírá 12 Byte
+
*Single - celočíselná hodnota zabírající 4 Byte (-3.402823E38 až -1.401298E-45 pro záporné hodnoty,1,401298E-45 až 3,402823E38 pro kladné hodnoty)
+
*Double - je obdobou single,ale ve dvojnásobné přesnosti ,zabírá 8 Byte
+
  
 +
<td>&nbsp;</td>
  
'''Logické:'''
+
<td>&nbsp;</td>
*Boolean - uchovává hodnoty True nebo False zabírající 2Byte
+
</tr>
  
 +
<tr>
 +
<td><code>Integer</code></td>
  
'''Nestardadní:'''
+
<td>zabírá 2&nbsp;byty, číslo se znaménkem (-32768&nbsp;32767)</td>
*Object - obsahují odkaz na objekt (adresu),zabírá 4 Byte
+
*Variant - je to 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,jestliže není proměnná nadimenzovaná pak je typu Variant,zabírá 16 Byte
+
*Date - obsahuje hodnoty datum a čas (1.leden 100 31.prosinec 9999,00:00:00 až 23:59:59),zabírá 8 Byte
+
  
 +
<td><code>int</code></td>
  
'''Řetězcové:'''
+
<td>zabírá 4&nbsp;byty</td>
*String - řetězec libov. znaků kódovaných pomocí ASCII,jeho délka je prakticky neomezena - asi 2 miliardy znaků,dále se dělí na řetězec promněnlivé délky a pevné délky
+
</tr>
  
 +
<tr>
 +
<td><code>Long</code></td>
  
== Základní datové typy - CSharp ==
+
<td>zabírá 4&nbsp;byty, celočíselná hodnota (-2147483648&nbsp;až 2147483647)</td>
  
*Celočíselné:
+
<td><code>long</code></td>
** int - celá čísla - velikost 32 bitů, od -2<sup>31</sup> až 2<sup>31</sup>-1
+
** long - celá čísla - velikost 64 bitů, od -2<sup>63</sup> až 2<sup>63</sup>-1
+
  
*Reálné:
+
<td>zabírá 8&nbsp;bytů</td>
** float - desetiná čísla - velikost 32 bitů, rozsah +- 3,4 * 10<sup>38</sup>
+
</tr>
** double - desetiná čísla - velikost 64 bitů, rozsah +- 1,7 * 10<sup>308</sup>
+
  
*Logické:
+
<tr>
** bool - logická hodnota - velikost 8 bitů, nabývá hodnot true nebo false
+
<th colspan="4">Reálné</th>
 +
</tr>
 +
 
 +
<tr>
 +
<td><code>Decimal</code></td>
 +
 
 +
<td>zabírá 14&nbsp;bytů, číslo se znaménkem, lze ho použít jen pomocí
 +
Variant, jehož je podtypem</td>
 +
 
 +
<td>&nbsp;</td>
 +
 
 +
<td>&nbsp;</td>
 +
</tr>
 +
 
 +
<tr>
 +
<td><code>Single</code></td>
 +
 
 +
<td>zabírá 4&nbsp;byty, číselná hodnota (-3.402823E38 až&nbsp;&ndash;1.401298E-45&nbsp;pro
 +
záporné hodnoty,1,401298E-45&nbsp;až 3,402823E38 pro kladné hodnoty)</td>
 +
 
 +
<td><code>float</code></td>
 +
 
 +
<td>zabírá 4&nbsp;byty</td>
 +
</tr>
 +
 
 +
<tr>
 +
<td><code>Double</code></td>
 +
 
 +
<td>zabírá 8&nbsp;bytů, obdoba <code>Single</code> s&nbsp;dvoujnásobnou
 +
přesností</td>
 +
 
 +
<td><code>double</code></td>
 +
 
 +
<td>zabírá 8&nbsp;bytů</td>
 +
</tr>
 +
 
 +
<tr>
 +
<th colspan="4">Logické</th>
 +
</tr>
 +
 
 +
<tr>
 +
<td><code>Boolean</code></td>
 +
 
 +
<td>zabírá 2&nbsp;byty, uchovává hodnotu <code>True</code> (pravda), nebo
 +
<code>False</code>&nbsp;(lež)</td>
 +
 
 +
<td><code>bool</code></td>
 +
 
 +
<td>zabírá 1&nbsp;byte, logická hodnota&nbsp;&ndash; nabývá hodnot <code>true</code>,
 +
nebo&nbsp;<code>false</code></td>
 +
</tr>
 +
 
 +
<tr>
 +
<th colspan="4">Řetězcové</th>
 +
</tr>
 +
 
 +
<tr>
 +
<td><code>String</code></td>
 +
 
 +
<td>řetězec libovolných znaků kódovaných pomocí ASCII, délka prakticky
 +
neomezena (asi 2&nbsp;miliardy znaků); dělí se na řetězec pevné a
 +
dynamické&nbsp;délky</td>
 +
 
 +
<td><code>string</code></td>
 +
 
 +
<td>posloupnost znaků (řetězec), 2&nbsp;byty na jeden znak</td>
 +
</tr>
 +
 
 +
<tr>
 +
<th colspan="4">Nestandardní</th>
 +
</tr>
 +
 
 +
<tr>
 +
<td><code>Object</code></td>
 +
 
 +
<td>zabírá 4&nbsp;byty, obsahuje odkaz na objekt (adresu objektu v&nbsp;paměti)</td>
 +
 
 +
<td><code>object</code></td>
 +
 
 +
<td>podle přiřazené hodnoty přiřazuje i&nbsp;datový typ
 +
<pre>object a;<br>a = 1;</pre>
 +
proměnná <code>a</code> je typu <code>Int32</code></td>
 +
</tr>
 +
 
 +
<tr>
 +
<td><code>Variant</code></td>
 +
 
 +
<td>zabírá 16&nbsp;bytů, obecný datový typ, který může obsahovat jeden
 +
z&nbsp;výše uvedených datových typů, proměnná tohoto typu může dynamicky
 +
měnit svůj datový&nbsp;typ</td>
 +
 
 +
<td>&nbsp;</td>
 +
 
 +
<td>&nbsp;</td>
 +
</tr>
 +
 
 +
<tr>
 +
<td><code>Date</code></td>
 +
 
 +
<td>zabírá 8&nbsp;bytů, obsahuje hodnotu odpovídající datumu a času (1.leden
 +
100&nbsp;až 31.prosinec 9999,00:00:00 až 23:59:59</td>
 +
 
 +
<td><code>DateTime</code></td>
 +
 
 +
<td>uchovává datum a čas</td>
 +
</tr>
 +
</table>
  
*Nestardadní:
 
** DateTime - datový typ ve kterém je uloženo datum a čas.
 
** object - podle přiřazené hodnoty přiřazuje i datový typ.
 
*** object a;
 
*** a = 1;
 
*** tak proměnná a je typu Int32
 
  
*Řetězcové:
 
** string - posloupnost znaků (řetězec), 16 bitů na jeden znak
 
** char - jeden znak - velikost 16 bitů, rozsah 0 až 2<sup>16</sup>-1
 
  
  

Verze z 1. 5. 2012, 18:08

  • 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

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;<br>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 proměnných
  • 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"];


Datové typy u databází

  • MySQL datové typy
    • Číselné typy
      • TINYINT: Rozsah čísel: −128 až 127 nebo 0 až 255
      • SMALLINT: Rozsah čísel: −32768 až 32767 nebo 0 až 65535
      • MEDIUMINT: Rozsah čísel: −8388608 až 8388607 nebo 0 až 16777215
      • INT: Rozsah čísel: −2147483648 až 2147483647 nebo 0 až 4294967295
      • Double: Rozsah čísel: 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é.
      • Konkrétní hodnoty rozsahu čísel si pamatovat nemusí, ale je to tu, aby jste měli představu o tom o jakých číslech mluvíte.
    • Řetězcové typy
      • VARCHAR: Rozsah: řetězec s pevně danou délkou: 0 až 255 znaků
      • TEXT: Řetězec o velké velikosti
      • Je jich mnohem více, ovšem tohle bohatě stačí znát
    • Typy pro datum a čas
      • DATE, TIME, DATETIME, TIMESTAMP, YEAR


Označování proměnných

  • Způsoby označování proměnných jsou závislé na použitém BASICu. Název proměnné (identifikátor) může být sestaven z jakékoliv kombinace písmen a číslic. Název nesmí začínat číslicí a rozlišují se malá a velká písmena. Dále nesmí být jako identifikátor použito vyhrazené slovo, které v příslušném jazyce má již svůj význam (IF, TO, GO, atd.). První znak vždy bývá písmeno, některé druhy BASICu dovolují na druhém místě pouze číslici, jiné pak číslice i písmena. Neměli by obsahovat háčky a čárky.


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

Osobní nástroje
Jmenné prostory
Varianty
Akce
Navigace
Nástroje
Databázová chyba – Maturita 2012

Databázová chyba

(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
Při dotazu do databáze došlo k syntaktické chybě. Příčinou může být chyba v programu. Poslední dotaz byl:
(SQL dotaz skryt)
z funkce „“. Databáze vrátila chybu „5: database is locked“.
Osobní nástroje
Jmenné prostory
Varianty
Akce
Navigace
Nástroje