06 Datové typy (Ceasarová šifra)
Datové typy
Aneb typy proměnných. Ačkoli se JavaScript tváří, že má jeden typ proměnné na všechno (na čísla i texty), není tomu tak. Na rozdíl od ostatních programovacích jazyků, si přetypopává proměnné podle potřeby (podle toho co tam zrovna cpeme).
Základní typy dat s kterými pracujeme jsou:
čísla (Numeric) = 1, 2, 3, 3.14, -5,...
řetězec (String) = "ahoj", " ", "Jakýkoli text dlouhý či krátky.",...
boolean (Boolean) = True, False, 0, 1.
Operace
Nad čísly můžeme provádět základní matematické operace jako je:
+ sčítání
- odčítání
* násobení
/ dělení
Př.1:
var prom1 = 12;
var cislo = 4;
var vysled = prom1 + cislo;
var rozd = prom1 - cislo;
var nasobinek = prom1 * cislo;
var delenak = prom1 / cislo;
Asi vás nepřekvapí že proměnná vysled bude obsahovat 16, v proměnné rozd bude 8, atd.
Řetězce můžeme rovněž sčítat. Plusko v tomto případě funguje jako lepidlo, které nám slepí dva řetězce do jednoho.
Př.2:
var pozdrav = "Ahoj";
var jmeno = "Horymír";
var veta = pozdrav+jmeno;
document.write(veta);
Mezera je to samé co písmeno, či jakýkoli jiný znak. Není-li v uvozovkách napsaná, nevypíše se. Víš jak upravit skript v př.2, aby se vypaslo "Ahoj Horymír!"?
Problém s mícháním typů
A tím se dostáváme k situaci, kdy nakombinujeme numerický typ proměnné se stringem (řetězcem, textem). Jinde by vám to neprošlo. Ale JavaScript to vyřeší jednoduše tak, že všechny proměnné typu Numeric, přetypuje pro účely sčítání na String (z 6 udělá "6") a pak to pospojuje jako řetězce. A tak se nám snadno stane, že 6+4=64
Př.3:
var cisilko = 6;
var textik = "to je:";
var mismas = textik+cisilko+4;
document.write(mismas);
document.write("<br>");
document.write(cisilko+4);
document.write("<br>"+cisilko+4);
V jednom řádku tedy nemůžeme mít operátor plus jako sčítání a zároveň jako slepování řetězců.
Další operace, aneb JavaScriptovské funkce
Kromě základních operací, které jsme si popsali výše, má JavaScript už předdefinované funkce, které můžeme využívat. Mimo jiné:
Všechna data s kterými pracujeme jsou nakonec převedena na nuly a jedničky. Protože počítač (hardware) pracuje v binární soustavě (je signál/není signál). Takže jakýkoli znak ať už číslo, nebo písmeno se musí převést na číslo (ASCII kód), které se převede do binární soustavy a počítač jej pak může uložit, nebo s ním počítat. Jak to vypadá v praxi, vidíte vpravo v ASCII tabulkce.
A my si teď uděláme jednoduchý ASCII převodník. Využijeme k tomu příkaz
String.fromCharCode(100);
který převede ascii kód v závorce do znaku (v tomto případě na "d").
Naopak funkce charCodeAt() převádí znaky na číslo ascii kodu:
var znak = "m"; znak.charCodeAt(0);
Př. 5: Vytvoř ASCII převodník, který převede číslo na znak. Můžeš využít tuto univerzální šablonu:
Šablona - univerzální formulář - inout.html
Př.6: Vytvoř šifrovací program pro Galia Julia Ceasara.
Známý římský vojevůdce Ceasar, šifroval vojenské zprávy jednoduchou šifrou, která dodnes po něm nese jméno. Princip této šifry je jednoduchý - posunout jednotlivé písmenka textu o několik pozic.
"cezar" -> "dfabs"
Vytvoř program který převede zadané písmeno na zašifrované (posunute o několik znaku dopředu či dozadu).
Šablona - univerzální formulář - inout.html
Tip: využij ascii tabulku.