sabato 30 novembre 2024

Tutorial per Franziska 1.0


Guida Completa ai Linguaggi L0 - L4 Esteso

📚 Guida Linguaggio L0 – Introduzione e Comandi Base

Obiettivo: Linguaggio semplificato per iniziare a programmare in italiano naturale, direttamente nel browser.

Comandi Base

  • scrivi "Testo" – mostra un messaggio sullo schermo
  • chiedi nome – chiede input all'utente
  • x = 5 – assegna un valore
  • se ... allora ... altrimenti ... fine – condizioni
  • ripeti N volte ... fine – ciclo semplice
  • finché condizione fai ... fine – ciclo condizionato

Esempio

chiedi nome
chiedi età
scrivi "Ciao " + nome
se età >= 18 allora
  scrivi "Sei maggiorenne"
altrimenti
  scrivi "Non sei maggiorenne"
fine
  

📚 Guida Linguaggio L1 – Procedure e Liste

Obiettivo: Aggiungere procedure e gestione di liste per codice modulare e gestione dati.

Comandi Principali

  • def nome() / fine – definisce una procedura
  • chiama nome() – esegue la procedura
  • lista = [1, 2, 3] – crea una lista
  • aggiungi 4 a lista – aggiunge elemento
  • rimuovi 2 da lista – rimuove elemento
  • scrivi lista[0] – stampa elemento per indice

Esempi

def saluta()
  scrivi "Ciao!"
fine

chiama saluta()

lista = [1, 2, 3]
aggiungi 4 a lista
scrivi lista[2]  # stampa 3
rimuovi 2 da lista
scrivi lista[1]  # stampa 3
  

📚 Guida Linguaggio L2 – Programmazione Strutturata e Strutture Dati

Obiettivo: Introdurre strutture dati complesse, iterazioni avanzate, modularità e ricorsione.

Comandi e Funzionalità

  • struttura Persona { nome, età } – definizione tipi strutturati
  • p = Persona() – crea istanza
  • p.nome = "Luca" – accedi/modifica campo
  • numeri = [1,2,3] – liste come array
  • per ogni n in numeri ... fine – ciclo su lista
  • stampa – output testuale

Esempio

struttura Persona {
  nome
  età
}

p = Persona()
p.nome = "Luca"
p.età = 30
stampa "Nome: " + p.nome + ", Età: " + p.età

numeri = [1, 2, 3]
somma = 0
per ogni n in numeri
  somma = somma + n
fine
stampa "Somma = " + somma

stampa "Come ti chiami?"
nome = leggi()
stampa "Benvenuto, " + nome
  

📚 Guida Linguaggio L3 – Interazione Utente Avanzata

Obiettivo: Input utente dinamici, funzioni, espressioni aritmetiche, strutture condizionali complete.

Novità

  • chiedi "testo" in var – input dinamico
  • procedura nome ... fine – funzioni definite dall’utente
  • variabile = espressione numerica o testuale
  • espressioni aritmetiche +, -, *, /
  • se ... altrimenti ... fine – condizioni

Esempio

procedura saluta
  scrivi "Benvenuto!"
fine

chiedi "Come ti chiami?" in nome
saluta
scrivi "Ciao " + nome

chiedi "Quanti anni hai?" in età
anni_dopo = età + 5
scrivi "Tra 5 anni avrai " + anni_dopo
  

📚 Guida Linguaggio L4 – Programmazione Completa e Modulare

Obiettivo: Funzioni con parametri, cicli, condizioni, salvataggio dati, grafica e suoni per creare app web interattive.

Funzionalità

  • funzione nome(parametri) ... fine – definizione funzioni
  • ritorna – valore di ritorno
  • ripeti N volte ... fine – ciclo fisso
  • finché condizione ... fine – ciclo condizionato
  • se ... altrimenti ... fine – condizioni
  • salva / carica – gestione dati locale
  • crea_pulsante("nome") – pulsanti interattivi
  • quando clic su "nome" ... fine_evento – eventi click
  • mostra_html("testo") – output HTML
  • disegna_cerchio(raggio, colore) – grafica canvas
  • suona("url_audio") – suoni da URL

Esempio

crea_pulsante("Saluta")

quando clic su "Saluta"
  mostra_html "Ciao mondo!"
  disegna_cerchio(40, "blue")
  suona("https://www.soundjay.com/button/beep-07.wav")
fine_evento

funzione saluta(nome)
  scrivi "Ciao " + nome
fine

funzione somma(a, b)
  ritorna a + b
fine

saluta("Luca")
risultato = somma(3, 4)
scrivi "3 + 4 = " + risultato
  
Guida realizzata da Nat Russo

venerdì 29 novembre 2024

Tutorial del linguaggio L0-L4 esteso riferito ai post 1-16


📘 Capitolo 1 – Introduzione


1. Introduzione

Benvenuti nella guida ufficiale ai linguaggi L0, L1 e L2, un ecosistema didattico pensato per chi vuole imparare a programmare partendo da una sintassi semplice, intuitiva e visualizzabile direttamente nel browser.

Questo manuale nasce con lo scopo di:

  • Accompagnare studenti, docenti e autodidatti nell’apprendimento graduale della programmazione

  • Offrire un linguaggio base (L0) che cresca fino a strutture complesse (L2)

  • Fornire uno strumento di scrittura, esecuzione e salvataggio di codice interamente basato su web

  • Integrare tutorial, esempi concreti, librerie di funzioni e materiali di esercitazione

A chi è rivolto

  • Studenti delle scuole secondarie e universitarie

  • Educatori e formatori che vogliono proporre coding in modo accessibile

  • Appassionati di programmazione che desiderano un ambiente educativo modulare

  • Chi vuole capire i concetti fondamentali di informatica attraverso un linguaggio progressivo

Cosa troverai nella guida

  • Una descrizione chiara e progressiva dei tre linguaggi: L0, L1, L2

  • Una panoramica degli strumenti didattici integrati (editor, console, debugger)

  • Una raccolta di librerie standard e di esempi reali, come giochi e algoritmi

  • Le basi per costruire un tuo ambiente di programmazione interattivo nel browser

  • Indicazioni per partecipare a una community educativa attorno al progetto

Come usare questa guida

Puoi usare questa guida in due modi:

  1. Studio individuale: leggi ogni sezione e prova i codici proposti nel tuo ambiente L0–L2.

  2. Didattica attiva: proponi esercizi, modifica gli esempi, costruisci nuove funzioni.


📘 Capitolo 2 – Il Linguaggio L0


Cos’è L0

Il linguaggio L0 è il punto di partenza per l’apprendimento della programmazione. È progettato per essere estremamente semplice, senza variabili, funzioni o strutture complesse. Serve a introdurre la logica sequenziale e il flusso di esecuzione attraverso comandi predefiniti.

Obiettivi didattici di L0

  • Familiarizzare con la sintassi di base di un linguaggio

  • Comprendere il concetto di istruzione sequenziale

  • Sperimentare con input, output, condizioni semplici

  • Eseguire programmi direttamente nel browser

Sintassi base di L0

Ogni comando in L0 corrisponde a un’azione precisa. Ecco alcuni comandi fondamentali:

mostra "Ciao mondo!"

chiedi "Come ti chiami?"

se risposta == "Anna" allora mostra "Benvenuta!"

  • mostra "...": stampa un messaggio

  • chiedi "...": pone una domanda e salva la risposta in risposta

  • se ... allora ...: condizione con azione immediata

Esempi semplici

✅ Saluto base

mostra "Ciao!"

mostra "Benvenuto nel linguaggio L0"

✅ Interazione

chiedi "Qual è il tuo nome?"

mostra "Ciao " + risposta

✅ Condizione

chiedi "Vuoi continuare? (sì/no)"

se risposta == "sì" allora mostra "Procediamo!"

Come eseguire un programma L0

  • Lancia l’interprete L0 nel browser

  • Inserisci il codice nella finestra di input

  • Premi “Esegui” per vedere l’output nella console

Cosa non è ancora presente in L0

  • Niente variabili personalizzate

  • Nessuna funzione o procedura

  • Nessuna struttura dati

  • Niente loop (cicli)


📘 Capitolo 3 – Il Linguaggio L1


Cos’è L1

Il linguaggio L1 è una naturale estensione di L0. Introduce:

  • Variabili

  • Procedure (funzioni)

  • Condizioni complesse

  • Input/Output personalizzato

È ispirato a Python, ma molto più semplice e pensato per girare direttamente nel browser.

Obiettivi didattici di L1

  • Scrivere programmi con dati e parametri

  • Imparare a strutturare il codice

  • Definire e chiamare procedure

  • Costruire interazioni più articolate

Sintassi base di L1

nome = "Luca"

mostra "Ciao " + nome

procedura saluta(persona)

    mostra "Ciao " + persona

saluta("Anna")

Elementi principali

Elemento

Descrizione

=

Assegnazione

mostra

Output a schermo

chiedi

Input da tastiera

procedura

Definizione di funzione

se / altrimenti

Condizione con ramo alternativo

Esempio: verifica accesso

chiedi "Password:"

se risposta == "segreta"

    mostra "Accesso consentito"

altrimenti

    mostra "Accesso negato"

Esempio: somma tra due numeri

chiedi "Inserisci il primo numero"

a = intero(risposta)

chiedi "Inserisci il secondo numero"

b = intero(risposta)

somma = a + b

mostra "La somma è " + somma

Esempio: funzione con parametro

procedura saluta(nome)

    mostra "Ciao " + nome

saluta("Mario")

saluta("Sara")

Funzioni predefinite disponibili in L1

  • intero(stringa): converte una stringa in numero intero

  • casuale(min, max): genera un numero casuale tra min e max

  • lunghezza(stringa): restituisce la lunghezza di una stringa

  • ripeti(n): struttura di ripetizione (nelle estensioni successive)

Differenze tra L0 e L1

Aspetto

L0

L1

Variabili

✖️

Procedure

✖️

Input/output

Solo risposta

Input + output variabili

Strutture

Sequenza e condizione

Procedura, assegnazione


📘 Capitolo 4 – Il Linguaggio L2


🔹 Cos’è L2

L2 è un linguaggio didattico ad alto livello progettato per sviluppare algoritmi e strutture più complesse in modo semplice. Si basa sui principi già introdotti in L1, ma aggiunge liste, funzioni con ritorno, funzioni ricorsive e librerie standard.

🎯 Obiettivi didattici di L2

  • Usare strutture dati come liste e stringhe

  • Comprendere e utilizzare la ricorsione

  • Saper costruire funzioni con valore di ritorno

  • Applicare modularità, librerie e riuso del codice

  • Avviare lo studente al pensiero algoritmico

🧱 Sintassi avanzata di L2

lista = [1, 2, 3, 4]

procedura somma(lista)

    se lista è vuota

        ritorna 0

    altrimenti

        ritorna primo(lista) + somma(resto(lista))

risultato = somma(lista)

mostra "Somma: " + risultato


🧠 Concetti chiave introdotti

Concetto

Descrizione

Liste

Collezioni ordinate di elementi

Ricorsione

Funzione che richiama sé stessa con dati ridotti

ritorna

Restituisce un valore da una procedura

Librerie

Insiemi di funzioni pronte all’uso

Stringhe come liste

Le stringhe possono essere iterate come insiemi di caratteri


📚 Librerie standard disponibili

Libreria

Funzioni incluse

math

radice(x), potenza(a, b), val_assoluto(x)

stringhe

lunghezza(s), maiuscolo(s), minuscolo(s)

liste

primo(lista), resto(lista), aggiungi(l, x)

random

casuale(min, max)

🧪 Esempi applicativi

✅ Ricorsione su lista

procedura conta(lista)

    se lista è vuota

        ritorna 0

    altrimenti

        ritorna 1 + conta(resto(lista))


✅ Generatore di saluti con liste

nomi = ["Anna", "Luca", "Marco"]

procedura saluta_tutti(lista)

    se lista è vuota

        ritorna

    mostra "Ciao " + primo(lista)

    saluta_tutti(resto(lista))

saluta_tutti(nomi)


✅ Calcolo fattoriale ricorsivo

procedura fattoriale(n)

    se n == 0

        ritorna 1

    altrimenti

        ritorna n * fattoriale(n - 1)

mostra fattoriale(5)


✅ Differenze tra L1 e L2

Aspetto

L1

L2

Liste

✖️

Ricorsione

✖️

Funzioni con ritorno

✖️

✅ (ritorna)

Librerie

limitate

ampia gamma: math, liste, stringhe


🧭 Integrazione con ambiente interattivo

Nel browser è possibile:

  • Scrivere codice L2

  • Eseguire funzioni ricorsive

  • Usare liste e librerie standard

  • Ricevere messaggi di errore e visualizzare output formattato

📘 Capitolo 5 – Il Linguaggio L3

🔹 Cos’è L3

L3 rappresenta il livello avanzato dell’ambiente didattico, introducendo funzioni con parametri e valore di ritorno, scope locale delle variabili, e una gestione semplificata dello stack di esecuzione.
È pensato per avvicinare lo studente alla programmazione strutturata e al concetto di modularità, tipico dei linguaggi reali.

🎯 Obiettivi didattici di L3

  • Definire e invocare funzioni con parametri

  • Comprendere la differenza tra procedura e funzione

  • Usare il costrutto ritorna per restituire valori

  • Isolare le variabili locali dal contesto globale

  • Favorire la riusabilità del codice attraverso astrazione

🧱 Sintassi avanzata di L3

funzione somma(a, b)

  ritorna a + b

fine_funzione

risultato = somma(5, 3)

mostra "Risultato: " + risultato


🧠 Concetti chiave introdotti

Concetto

Descrizione

funzione

Blocchi di codice con input e output

ritorna

Termina una funzione restituendo un valore

parametri

Valori in ingresso a una funzione

variabili locali

Variabili definite all’interno di una funzione

stack

Meccanismo logico per mantenere l’ordine delle chiamate

🧪 Esempi applicativi

✅ Funzione matematica

funzione quadrato(n)

  ritorna n * n

fine_funzione

mostra quadrato(7)

✅ Funzione booleana

funzione è_pari(n)

  se n % 2 == 0

    ritorna vero

  altrimenti

    ritorna falso

fine_funzione

mostra è_pari(10)


✅ Differenze tra L2 e L3

Aspetto

L2

L3

Funzione senza ritorno

Funzione con ritorno

limitato

Scope locale

✖️

Stack logico

✖️

✅ (base)

🧭 Integrazione con ambiente interattivo

Nel browser è possibile:

  • Definire e richiamare funzioni con ritorno

  • Tracciare variabili locali e globali

  • Visualizzare risultati tramite ritorna

  • Costruire logica modulare con codice riutilizzabile

📘 Capitolo 6 – Esempi e Progetti Didattici


📂 Progetti di coding consigliati

Titolo

Obiettivo didattico

Generatore di saluti

Uso di cicli o ricorsione

Somma ricorsiva

Manipolazione di liste

Verifica password

Condizioni, input/output

Calcolatrice

Uso di variabili, condizioni, ritorni

Conta parole

Uso di stringhe e funzioni stringa

Memory Game

Liste, logica condizionale, funzioni

🧩 Struttura per ogni esempio

Ogni progetto include:

  • Obiettivo del programma

  • Codice sorgente

  • Spiegazione dettagliata

  • Possibili estensioni e varianti didattiche

✏️ Esempio guidato: Conta vocali

chiedi "Scrivi una parola:"

parola = risposta

vocali = ["a", "e", "i", "o", "u"]

conta = 0

procedura conta_vocali(lista)

    se lista è vuota

        ritorna 0

    se vocali contiene primo(lista)

        ritorna 1 + conta_vocali(resto(lista))

    altrimenti

        ritorna conta_vocali(resto(lista))

mostra conta_vocali(parola)



📘 Capitolo 7 – Ambiente Interattivo nel Browser


🧰 Componenti principali

Elemento

Funzione

Editor (L0–L3)

Scrittura e colorazione codice

Console output

Visualizzazione risultati

LocalStorage

Salvataggio locale dei programmi

Debugger

Esecuzione passo-passo, variabili

Librerie caricate

Math, stringhe, random

🧭 Esperienza utente

  • Scrivi il tuo programma

  • Esegui con un clic

  • Visualizza gli errori o l’output

  • Salva il codice nel tuo browser

  • Condividi il tuo programma esportandolo


📘 Capitolo 8 – Appendici, Glossario e Riferimenti


🧾 Glossario essenziale

Termine

Definizione

Comando

Istruzione singola eseguita dal programma

Sintassi

Regole grammaticali del linguaggio

Variabile

Spazio di memoria dove viene salvato un dato

Procedura

Insieme di istruzioni che svolgono un compito e possono essere riutilizzate

Ricorsione

Quando una funzione richiama sé stessa

Lista

Collezione ordinata di elementi

Output

Risultato mostrato dall’esecuzione del codice

Console

Area di visualizzazione degli output ed errori

Debugger

Strumento che aiuta a trovare errori eseguendo il codice passo-passo

📎 Funzioni principali dei linguaggi L0–L2

L0

L1

L2

mostra

variabili

liste

chiedi

procedura nome(x)

ricorsione

se / allora

se / altrimenti

ritorna

risposta (input)

conversioni (intero)

librerie standard



📘 Capitolo 9 – Il Linguaggio L4

🔹 Cos’è L4

L4 è il livello più avanzato dell’ambiente L0–L4. Introduce tipi strutturati, dizionari, liste di oggetti, e una gestione modulare delle librerie esterne.
L’obiettivo è preparare lo studente ai concetti propri della programmazione ad oggetti e alla gestione di dati complessi.

🎯 Obiettivi didattici di L4

  • Rappresentare e manipolare strutture dati complesse

  • Comprendere il concetto di oggetto come collezione di proprietà

  • Utilizzare librerie avanzate per operazioni matematiche, statistiche o testuali

  • Approcciarsi alla modularità tramite librerie utente

  • Prepararsi alla programmazione ad oggetti e all’ambiente reale

🧱 Sintassi avanzata di L4

persona = { "nome": "Luca", "età": 30 }

mostra persona.nome

gruppo = [

  { "nome": "Anna", "età": 20 },

  { "nome": "Marco", "età": 25 }

]

mostra gruppo[1].nome


🧠 Concetti chiave introdotti

Concetto

Descrizione

Dizionari

Collezioni di coppie chiave/valore

Oggetti

Entità con proprietà (come JSON)

Liste di oggetti

Liste che contengono dizionari

Librerie

Codice esterno riutilizzabile

Estendibilità

Possibilità di importare funzioni definite da altri

📚 Librerie avanzate disponibili

Libreria

Funzioni incluse

math

somma, min, max, media, mediana

strutture

filtra(lista, cond), mappa(lista, funzione)

tempo

data_corrente(), cronometro(), timestamp()

json

carica_json(str), stringify(obj)

🧪 Esempi applicativi

✅ Gestione di una rubrica

contatti = [

  { "nome": "Anna", "telefono": "1234" },

  { "nome": "Luca", "telefono": "5678" }

]

procedura mostra_contatti(lista)

  per ogni contatto in lista

    mostra contatto.nome + ": " + contatto.telefono

fine_procedura


mostra_contatti(contatti)


✅ Uso di funzione esterna

numeri = [3, 5, 8, 2, 7]

media_valori = media(numeri)

mostra "Media: " + media_valori


✅ Differenze tra L3 e L4

Aspetto

L3

L4

Funzioni

Oggetti/dizionari

✖️

Liste di oggetti

✖️

Librerie esterne

base

avanzate

Modularità

base

espandibile

🧭 Integrazione con ambiente interattivo

Nel browser è possibile:

  • Definire dizionari e accedere ai campi

  • Usare liste di oggetti per gestire strutture complesse

  • Caricare librerie definite da altri utenti

  • Simulare operazioni di database e JSON

✅ Conclusione

I livelli L3 e L4 costituiscono il ponte tra il linguaggio didattico e la programmazione reale, offrendo strumenti per costruire progetti complessi, riutilizzabili e leggibili.

Con l’ambiente L0–L4, lo studente è ora in grado di:

  • Usare funzioni avanzate

  • Lavorare con strutture dati

  • Organizzare codice in modo modulare

  • Prepararsi ai linguaggi reali (Python, JavaScript, ecc.)

📘 Capitolo 10 – Il Linguaggio L4 Esteso

🔹 Cos’è L4 Estesa

L4 rappresenta l'evoluzione più avanzata del nostro linguaggio educativo. In questa versione, il linguaggio include strutture dati complesse, interazioni dinamiche, eventi, grafica e persino suoni, trasformando il codice in uno strumento creativo, interattivo e visivo.
Con L4, la programmazione si avvicina sempre di più alla costruzione di vere applicazioni e giochi nel browser, rimanendo però accessibile e leggibile anche da studenti alle prime armi.

🎯 Obiettivi didattici di L4

  • Comprendere oggetti, proprietà e relazioni

  • Costruire liste di oggetti e filtrarle

  • Introdurre il concetto di evento e risposta interattiva

  • Manipolare grafica, audio e interfacce

  • Integrare codice e contenuti visuali (HTML, canvas)

  • Salvare e caricare dati in locale

🧱 Nuove strutture sintattiche in L4

✅ Dizionari e oggetti

persona = { "nome": "Luca", "età": 30 }

persona.età = 31

mostra persona.nome


✅ Liste di oggetti

studenti = [

  { "nome": "Anna", "voto": 8 },

  { "nome": "Marco", "voto": 6 }

]


✅ Iterazione per ogni

per ogni studente in studenti

  se studente.voto >= 7

    mostra studente.nome + " promosso"

  altrimenti

    mostra studente.nome + " rimandato"


✅ Eventi e pulsanti

quando clic su "saluta"

  mostra "Ciao!"

fine_evento


crea_pulsante("saluta")


✅ Output HTML e stili

mostra_html "<h2 style='color:blue'>Benvenuto!</h2>"


✅ Grafica e suoni

suona("bip.wav")

disegna_cerchio(100, "rosso")


✅ Salvataggio e caricamento dati

salva_dati(studenti)

studenti = carica_dati()


🧠 Concetti avanzati introdotti in L4

Concetto

Descrizione

Oggetti

Strutture con proprietà (tipo JSON)

Liste di oggetti

Elenchi strutturati, iterabili

Eventi

Reazioni a input esterni (clic, timer)

Grafica e audio

Uso di canvas e suoni integrati nel browser

Output HTML

Messaggi con formattazione e stile

Persistenza locale

Salvataggio dati nel browser

📚 Librerie aggiuntive in L4

Libreria

Funzioni incluse

interfaccia

crea_pulsante(id), mostra_html(contenuto)

eventi

quando clic su, quando timer

grafica

disegna_cerchio(raggio, colore)

audio

suona(nome_file)

storage

salva_dati(obj), carica_dati()

🧪 Esempi applicativi

✅ Verifica studenti promossi

studenti = [

  { "nome": "Anna", "voto": 8 },

  { "nome": "Luca", "voto": 5 }

]


per ogni studente in studenti

  se studente.voto >= 6

    mostra studente.nome + " è promosso"

  altrimenti

    mostra studente.nome + " è rimandato"


✅ Saluto su pulsante

quando clic su "btn"

  mostra "Hai premuto il bottone!"

fine_evento


crea_pulsante("btn")


✅ Messaggio HTML formattato

mostra_html "<p style='color:green'>Programma eseguito con successo!</p>"


✅ Disegno e suono

disegna_cerchio(100, "blu")

suona("ping.wav")


✅ Differenze tra L2 e L4

Aspetto

L2

L4 Estesa

Oggetti

✖️

Eventi

✖️

Output HTML

✖️

Grafica e audio

✖️

Persistenza dei dati

✖️

Iterazione su oggetti

✖️

✅ (per ogni)

Librerie utente avanzate

limitate

ampie


🧭 Integrazione con l’ambiente nel browser

L4 può essere eseguito direttamente nel tuo editor interattivo, ma per attivare grafica, audio e eventi serve:

  • un interprete con parsing avanzato (tokenizer, AST);

  • librerie JavaScript caricate nel file HTML;

  • supporto DOM per pulsanti e canvas.

Corso Fondamenti di Informatica e Reti: 4 Architettura del computer

  ARCHITETTURA DEL COMPUTER come funziona davvero una macchina Capire un computer non significa solo saperlo accendere o aprire file: die...