ASCII tabulka a kódování znaků

Cíle hodiny

  • Porozumět principům znakových sad a kódování

  • Seznámit se s ASCII tabulkou

  • Ukázat si omezení ASCII a přechod k Unicode

  • Praktické příklady v programování

Úvod

  • Počítač pracuje s čísly, nikoliv přímo s písmeny.

  • Každý znak je reprezentován číslem (kódem).

  • Systém přiřazování čísel znakům = znaková sada.

ASCII

  • ASCII = American Standard Code for Information Interchange

  • Rok vzniku: 1963 (ANSI X3.4)

  • 7 bitů → 128 znaků

  • Obsahuje:

    • Velká a malá písmena A–Z

    • Číslice 0–9

    • Interpunkci

    • Řídící znaky (např. CR, LF, ESC)

ASCII tabulka (výřez)

DecHexZnakPopis

65

41

A

Velké A

66

42

B

Velké B

97

61

a

Malé a

98

62

b

Malé b

ASCII tabulka (výřez)

DecHexZnakPopis

48

30

0

Číslice nula

13

0D

CR

Carriage Return

10

0A

LF

Line Feed

Řídící znaky

  • Nepředstavují tisknutelné znaky

  • Slouží k řízení zařízení (tiskárny, terminály)

  • Příklady:

    • BEL (7) → zvukový signál

    • CR (13) → návrat na začátek řádku

    • LF (10) → posun na další řádek

Rozšířený ASCII

  • 8 bitů → 256 znaků

  • Horní polovina (128–255) není standardizovaná

  • Používána pro národní abecedy (např. ISO 8859-2 nebo CP1250 pro češtinu)

  • Problém: nekompatibilita mezi sadami

Unicode

  • Cíl: jednotná reprezentace znaků pro všechny jazyky

  • Unicode ≈ mapování znaků → čísla (code points)

  • Zápis znaku Ctrl+Shift+U

  • Například:

    • A → U+0041

    • Ž → U+017D

    • 😀 → U+1F600

  • více https://symbl.cc/en/unicode-table

UTF-8

  • Nejrozšířenější způsob ukládání Unicode

  • Proměnná délka (1–4 bajty)

  • Kompatibilní s ASCII (prvních 128 znaků je stejné)

  • Výhody:

    • Úsporné pro angličtinu

    • Univerzální pro všechny znaky

Praktická ukázka – Python

# převod znaku na číslo
print(ord('A'))  # 65
print(ord('ž'))  # 382

# převod čísla na znak
print(chr(65))   # 'A'
print(chr(382))  # 'ž'

# práce s Unicode
s = "Ahoj 😀"
print(len(s))        # délka ve znacích
print(s.encode())    # bajty v UTF-8

Shrnutí

  • ASCII = základní znaková sada (128 znaků, 7 bitů)

  • Rozšířený ASCII → různé varianty, nekompatibilní

  • Unicode → globální standard

  • UTF-8 → nejpoužívanější kódování

Diskuze / Cvičení

  • Najděte kód znaku @ v ASCII tabulce.

  • Kolik bajtů zabere znak 😀 v UTF-8?

  • Vyzkoušejte v Pythonu ord() a chr() s vlastními příklady.

Klávesnice

  • Hlavní části:

    • Alfanumerická část

    • Numerický blok

    • Funkční klávesy (F1–F12)

    • Navigační klávesy (šipky, Home, End…)

    • Modifikátory (Shift, Ctrl, Alt, AltGr, Windows)

Historie klávesnice

  • Odvozená od psacího stroje

  • Standard QWERTY (od roku 1873)

  • Alternativní rozložení (Dvorak, Colemak)

  • Různé jazykové varianty (např. česká QWERTZ)

Jak funguje

  • Každá klávesa má svůj scancode (kód události stisknutí/puštění)

  • Operační systém převádí scancode → znak podle zvoleného rozložení

  • Příklad:

    • Klávesa s kódem 0x15 → v QWERTY = „Y“, v QWERTZ = „Z“

Typy klávesnic

  • Drátové / bezdrátové

  • Mechanické / membránové / optické

  • Notebookové vs. externí

  • Ergonomické (dělené, zakřivené)

  • Herní (RGB podsvícení, makro klávesy)