Shrnutí

V této lekci jste se naučili, že:

  • Tabulka může být slovník: {mrkev = 12, brambory = 30} obsahuje dvojice klíč–hodnota. Zvláštní typ pro to Lua nemá; seznam je tabulka, jejíž klíče jsou 1, 2, 3…
  • Hodnotu přečtete pomocí tečky, stodola.mrkev, nebo v hranatých závorkách, stodola["mrkev"]. Klíč s mezerou nebo s diakritikou musí být v závorkách a uvozovkách: ["dýně"] = 4.
  • Přiřazení změní hodnotu nebo přidá nový klíč (stodola.vejce = 18), přiřazení nil klíč odebere. Chybějící klíč dá nil, ne chybu, a stodola.jahody or 0 z něj udělá výchozí hodnotu. # klíče slovníku nepočítá.
  • Když je klíč v proměnné, použijte hranaté závorky bez uvozovek: ceny[plodina]. ceny.plodina je klíč "plodina".
  • for klic, hodnota in pairs(t) projde všechny klíče, a to v pořadí, které není dané. Když chcete vypisovat popořadě, posbírejte klíče do seznamu, seřaďte ho pomocí table.sort a projděte pomocí ipairs.
  • pocty[x] = (pocty[x] or 0) + 1 počítá výskyty; na závorkách záleží.
  • Záznam je tabulka, která popisuje jednu věc a má pevné klíče: {nazev = "Mrkev", dny = 3}. Seznam záznamů zpracujete pomocí ipairs: sčítáte, vybíráte, hledáte.
  • Tabulky se dají vnořovat: farma.stodola.vejce. Čtení přes chybějící tabulku skončí chybou attempt to index a nil value (field 'kulna').
  • Proměnná drží odkaz na tabulku: local b = a ani předání funkci tabulku nezkopíruje. {} == {} je false. Samostatnou tabulku získáte kopírováním pomocí pairs.

V příští lekci, Řetězce, budete pracovat s texty: vystřihovat z nich části, hledat v nich, zarovnávat je do sloupců a rozebírat je na slova a čísla.

A teď si to procvičte. Ema si tento týden vedla deník sklizně: co který den sklidila a kolik.

Pokyny

Napište funkci soucty(zaznamy), která vrátí slovník: u každé plodiny, kolik jí Ema sklidila celkem. Pak součty vypište, seřazené podle názvu plodiny:

brambory: 35
dýně: 3
mrkev: 25

Napište funkci hodnota(sklizen, cenik), která dostane slovník součtů a ceník a vrátí, kolik mincí celá sklizeň vynese. Vypište:

Hodnota: 465 mincí

Nakonec vypište Podle množství: a pod to plodiny ještě jednou, od největšího množství po nejmenší. Seznam plodin seřaďte s porovnávací funkcí, která porovná jejich součty:

Podle množství:
brambory: 35
mrkev: 25
dýně: 3

Začněte programovat zdarma

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

10/10