Přeskočit obsah

Morseova abeceda

Zadání

Vytvořte program pro DT-Box, který zadaný řetězec převede do morseovy abecedy a následně přečte pomocí pípání. Mezi jednotlivými písmeny by měla být krátká pauza a mezi slovy o něco delší pauza.

Rozšíření

  1. Oproti jednoduššímu způsobu, kdy slovník obsahuje i číslice, číslice ze slovníku vyřaďte a místo toho vytvořte algoritmus, který převede číslici podle její hodnoty.

Evokace

Morseova abeceda se využívala hlavně v armádě.

  • Proč se využívala zrovna morseova abeceda? (snadný převod do binární soustavy (.-) → (01))
  • Jak vypadá ovládání takového zařízení? (jedno tlačítko, které rozpozná krátký a dlouhý stisk)

Uvědomění

Jaké periferie knihovny dtbox budeme potřebovat?
Buzzer

Jak převést řetězec na velká písmena?

string.upper()
Jaké datové reprezentace budeme potřebovat?
slovník morseovy abecedy:
MORSE_DICT= [
    ‘A’: ‘.-’,
    ‘B’: ‘-...’,
    ‘C’: ‘-.-.’,
    ‘9’: ‘----.’,
    ‘0’: ‘-----’,
]

Jak získám prvek ze slovníku?

MORSE_DICT[‘A’]
>>> ‘.-’

Jak zjistím, zda je znak písmeno?

character.isalpha()

Jak zjistím, zda je znak číslice?

character.isdigit()

Jaká bude hlavní struktura kódu?

  • Konstanta pro reprezentaci slovníku morseovy abecedy
  • Funkce char_to_morse(), která každý znak převede do morseovy abecedy
  • Funkce get_morse(phrase), která pomocí předchozí metody vytvoří řetězec s celou frází převedenou do morseovy abecedy
  • Funkce play_morse(code), která vypípá danou větu

Jaké jsou rizikové stavy?

  • Neznámý znak (např. ‘á, @, atd…’). Je potřeba takové znaky zcela vypustit.

Reflexe

Co se vám na řešení líbí/nelíbí?
Kde si dokážete představit použití vašeho řešení? (kontrola s odpověďmi u evokace)
Jak byste pozměnili projekt, aby byl lépe použitelný v praxi?
Které části implementace byly nejnáročnější?
Co byste poradili někomu, kdo se chystá vytvořit podobný projekt?