Menu
Coddy logo textTech
Percorso di apprendimento

Algoritmi e strutture dati in Lua

Lua ha una sola struttura dati, la tabella, quindi ogni struttura di questo percorso la ricavi da lì: una pila dalla sua parte array, una coda con due indici, un albero da tabelle che puntano ad altre tabelle. Questo percorso ti fa costruire ognuna in Lua, poi le usi per ordinare, ricorrere e visitare grafi, e concludi con problemi da colloquio valutati. Gratis, nel browser, con un certificato nella maggior parte dei corsi.

377 lezioni228 sfide702 domande del quiz

Algoritmi e strutture dati in Lua, passo dopo passo

38 corsi377 lezioni228 sfide702 domande del quiz

Ogni passaggio è un insieme di corsi Coddy già esistenti, e ogni pulsante Inizia li apre in Lua. I tre corsi non ancora insegnati in Lua sono elencati dopo i passaggi.

  1. 1
    Inizia questo passoIniziaPila, coda, albero binario, tabella hash e lista concatenata, ognuno costruito da zero in Lua e poi usato per risolvere problemi. Una tabella Lua è già una tabella hash, quindi questo passaggio ti mostra cosa fa per te e come modellarla nelle altre quattro.Inizia
  2. 2
    Inizia questo passoIniziaLista doppiamente concatenata, heap e code di priorità, trie, grafi e l'albero AVL autobilanciato. In Lua un nodo di trie è semplicemente una tabella con chiave il carattere successivo, e un grafo una tabella di liste di vicini, quindi ogni struttura è complicata solo quanto la sua idea.Inizia
  3. 3
    Inizia questo passoIniziaBubble sort, selection, insertion, merge, quick, heap, counting e radix sort, scritti in Lua e osservati nel visualizzatore. table.sort non è stabile, come dice il manuale di riferimento di Lua; dopo questo passaggio sai perché un ordinamento rinuncia alla stabilità, e come un indice per spareggiare la recupera.Inizia
  4. 4
    Inizia questo passoIniziaSfide di ricorsione in Lua, che ha vere chiamate in coda: in una chiamata in posizione di coda, return f(x), la funzione chiamata riusa lo spazio sullo stack del chiamante, quindi un ciclo ricorsivo in coda non fa mai crescere lo stack. Una normale ricorsione profonda termina comunque con uno stack overflow. La programmazione dinamica e la manipolazione dei bit sono elencate dopo i passaggi, perché sono insegnate in Python e in C++.IniziaPagina dedicata
  5. 5
    Inizia questo passoIniziaRicerca in ampiezza e in profondità, Dijkstra, Bellman-Ford, ordinamento topologico, Kruskal e Prim in Lua, sul grafo che hai costruito nel secondo passaggio. Lua non ha una coda di priorità, quindi l'heap del secondo passaggio è quello che serve a Dijkstra, e la ricerca in ampiezza ha bisogno di una coda che non chiami mai table.remove(t, 1).Inizia
  6. 6
Cosa ottieni
Tutto ciò che userai per imparare a programmare

Impara facendo

Scrivi codice vero, interroga database, crea siti web e padroneggia i prompt per l'AI. Le nostre lezioni interattive coprono tutte le competenze di cui ha bisogno uno sviluppatore moderno.

playground.js
Editor di codice
1const greeting = "Hello, Coddy!"
2function sayHi(name) {
3    return greeting + " " + name
4}
5
bottombar Collapse icon
Test #1test Case Success icon
Test #2test Case Success icon
Test #3test Case Failure icon
Input
"Alex"
Output
"Hello, Coddy! Alex"

Costruisci la tua serie

Sii costante e guarda crescere i tuoi progressi! Tieni traccia della tua abitudine quotidiana di programmare, proteggi la tua serie con i giorni di congelamento e guadagna ricompense ogni giorno che ti presenti.

12 giorni di serie

Torna domani per mantenere la tua serie!

fire Filled icon
left icon

January 2026

right icon

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

21

22

23

24

25

26

27

28

29

30

product Double Or Nothing icon

Lascia o raddoppia

Giorno 5 di 7

fire Freeze icon

Congela serie

2 left

Programma ovunque

Porta il tuo percorso di programmazione sempre con te! Niente configurazioni, niente download: apri l'app e inizia a programmare. Disponibile su iOS, Android e Web con valutazioni di 4,9 stelle.

Python
7Serie
250Punteggio
5Energia
Variabili
journey Hex Done Base iconjourney Hex Done Shadow iconjourney Hex Done Top iconjourney Lesson Done icon
journey Path Right Done icon
journey Hex Done Base iconjourney Hex Done Shadow iconjourney Hex Done Top iconjourney Lesson Done icon
journey Path Left Done icon
journey Hex Active Base iconjourney Hex Active Shadow iconjourney Hex Active Top iconjourney Lesson Theory Challenge icon
CONTINUA
journey Path Right icon
journey Hex Locked Base iconjourney Hex Locked Shadow iconjourney Hex Locked Top iconjourney Lesson Theory Challenge icon
journey Path Left icon
journey Hex Locked Base iconjourney Hex Locked Shadow iconjourney Hex Locked Top iconjourney Lesson All icon
Percorso
Obiettivi
Classifica
Profilo
4.9
StellaStellaStellaStellaStella
Valutazione

Non sei solo

Competi nelle classifiche globali, invita gli amici per guadagnare ricompense e festeggiate insieme i vostri successi. Programmare è più bello con gli amici!

Lega Sfidante
Lega SfidanteI primi 7 avanzano
leaderboard First icon1
avatar 1 icon
fire Filled icon
Alex7+ Days
2840
leaderboard Second icon2
avatar 2 icon
fire Filled icon
Jordan7+ Days
2650
leaderboard Third icon3
avatar 3 icon
fire Filled icon
Sam7+ Days
2420
4
avatar 4 icon
Casey
2180
5
avatar placeholder icon
fire Filled icon
Morgan7+ Days
1950
leaderboard Arrow Up iconZona promozioneleaderboard Arrow Up icon

Tutti i modi per imparare

Leggi, ascolta, mettiti alla prova, chiedi all'AI o ripassa qualsiasi cosa tu abbia già visto. Ogni lezione si adatta a te.

Introduzione alle variabili
Audio

Una variabile è un contenitore con un nome che memorizza un valore a cui puoi fare riferimento più avanti nel programma.

In Python la crei scrivendo il nome, un segno di uguale e poi il valore che vuoi memorizzare.

Il valore può cambiare nel tempo: riassegnare il nome lo fa semplicemente puntare a un nuovo valore.

1xSarah

Ottieni un certificato

Ottieni un certificato per ogni corso che completi. Aggiungilo al tuo profilo LinkedIn e al curriculum per mostrare ai datori di lavoro le tue competenze di programmazione.

CoddyCertificato di completamento
Si certifica cheMario Rossiha completato con successo
python iconFondamenti di Python
Verificato
Datagen 2026
LinkedInAggiungi a LinkedIn

Perché imparare algoritmi e strutture dati in Lua su Coddy

  • Una struttura, tutte le strutture. Una tabella Lua è una parte array e una parte hash insieme, e nient'altro è integrato: nessun tipo lista, insieme, coda o heap. In Lua ogni struttura è fatta di tabelle che puntano ad altre tabelle, ed è la visione più chiara che avrai di cosa sia davvero una lista concatenata o un albero.
  • Per Roblox, giochi e plugin. Lua fa girare Roblox (come Luau), lo scripting dei giochi, la configurazione di Neovim e gli script di Redis, e il codice dei giochi è codice di strutture dati: un inventario è una tabella hash, l'ordine dei turni una coda, il pathfinding una ricerca su grafo. Imparare le strutture in Lua significa impararle nel linguaggio in cui scrivi già i tuoi script.
  • Quasi tutto il percorso in Lua. Ogni struttura dati, ordinamento, algoritmo sui grafi, sfida di ricorsione e pacchetto da colloquio è insegnato in Lua. Tre corsi sono insegnati altrove ed elencati dopo i passaggi con un link a ciascuno: la programmazione dinamica e la serie di colloqui in Python, in Python, e la manipolazione dei bit, in C++. Tutto ciò che resta in Lua è fatto di tabelle, dalla prima pila all'ultimo problema da colloquio.
  • Valutato come in un colloquio. Ogni lezione termina con una sfida in Lua verificata da casi di test, e quando una fallisce, Bugsy legge il tuo codice e ti indirizza verso la correzione senza darti la risposta. Un certificato gratuito nella maggior parte dei corsi, ognuno verificabile al proprio URL.

Domande frequenti su algoritmi e strutture dati in Lua

Lua va bene per algoritmi e strutture dati?

Per impararli, sorprendentemente bene: avendo solo le tabelle da cui partire, ogni struttura è esplicita e il codice resta breve. Il rovescio della medaglia è che le tabelle perdonano gli errori in silenzio: per convenzione gli array partono da 1, una chiave mancante restituisce nil invece di un errore, e l'operatore di lunghezza #t è affidabile solo su una sequenza senza buchi nil. Pochi colloqui si svolgono in Lua, quindi se il tuo obiettivo è un colloquio, i pacchetti da colloquio sono disponibili anche nel linguaggio che userai lì.

Come si costruiscono una pila e una coda da una tabella Lua?

Una pila è la parte array usata da un'estremità: table.insert(t, x) inserisce e table.remove(t) estrae. Una coda richiede più attenzione, perché table.remove(t, 1) sposta indietro di una posizione ogni elemento rimanente, quindi ogni estrazione costa O(n). Tieni invece due indici, first e last: aggiungi in last + 1, leggi in first, imposta quello slot a nil e avanza, e l'estrazione diventa a tempo costante. Nel primo passaggio le costruisci entrambe.

Perché in Lua #t a volte dà la lunghezza sbagliata?

Perché # restituisce un bordo della tabella: un indice n per cui t[n] non è nil e t[n + 1] lo è. Una sequenza vera ha esattamente un bordo, la sua lunghezza; metti un nil in mezzo e i bordi possono essere diversi, e # può restituirne uno qualsiasi. Quindi non memorizzare mai nil in un array che misuri con #, e nelle strutture con buchi, come una coda a due indici, tieni tu il conto della dimensione.

Le strutture dati contano per lo scripting su Roblox?

Sì, non appena un gioco supera una manciata di oggetti. Un inventario è una tabella hash, l'ordine di spawn o dei turni è una coda, un elenco di cooldown può essere una coda di priorità, e trovare un percorso su una mappa è una ricerca su grafo. Luau, il linguaggio in cui si scrivono gli script di Roblox, deriva da Lua 5.1 e ne conserva le tabelle, gli array che partono da 1 e l'operatore #, quindi ciò che costruisci qui si trasferisce direttamente.

Quali corsi di questo percorso non sono insegnati in Lua?

Tre: la programmazione dinamica e la serie di colloqui in Python, insegnate in Python, e la manipolazione dei bit, insegnata in C++. Sono elencati dopo i passaggi, ognuno con un link che lo apre nel suo linguaggio. Una memoizzazione in Lua è una tabella; gli operatori bit a bit sono arrivati solo con Lua 5.3, che ha gli stessi &, |, << e >> del C++ e scrive sia lo XOR sia il NOT come ~.

Devo conoscere Lua prima di iniziare questo percorso?

Almeno tabelle, funzioni, cicli e variabili locali; le metatabelle aiutano se vuoi strutture che si comportino come oggetti. Se sono argomenti nuovi, il corso di Lua di Coddy li copre prima, gratis, e questo percorso riprende da dove finisce.

Altri percorsi di apprendimento

Gli stessi corsi, organizzati per un ruolo diverso. I progressi si mantengono: un corso completato in un percorso vale per ogni percorso che lo include.

Tutti i percorsi di apprendimento
Illustrazione dei linguaggi di programmazione di Coddy

Inizia gratis il percorso Algoritmi e strutture dati

Inizia a imparare