Un corso di programmazione testuale semplice ed elegante, ideale come alternativa a Python. Gli studenti imparano a usare variabili, cicli, array e funzioni, fino alla programmazione a oggetti, concludendo con la realizzazione di un mini-gioco o di una piccola app testuale.
Panoramica sul linguaggio, filosofia “developer happiness”, strumenti e installazione su Windows/Mac/Linux.
Preparare l’ambiente di sviluppo Ruby correttamente.
Creazione ed esecuzione di uno script .rb, output con puts/print e commenti nel codice.
Eseguire script Ruby da terminale con sicurezza.
Interi, float, stringhe, booleani e nil; naming, scope basilare e conversioni comuni.
Usare e convertire i tipi fondamentali di Ruby.
Uso della console interattiva IRB/Pry per testare espressioni e provare frammenti di codice.
Sperimentare velocemente codice Ruby in REPL.
Somma, differenza, prodotto, divisione, modulo e scorciatoie di assegnazione (+ =, -=, ecc.).
Scrivere calcoli chiari e senza errori di base.
Concatenazione, interpolation #{}, metodi comuni (upcase, downcase, strip, gsub).
Manipolare stringhe in modo pratico e veloce.
Uso di gets/gets.chomp e conversione dell’input per elaborazioni numeriche e testuali.
Leggere e validare input da riga di comando.
Piccola app che legge numeri e operazione, esegue il calcolo e gestisce input non valido.
Combinare operatori, stringhe e input utente.
Strutture condizionali, operatori di confronto e valori truthy/falsy tipici di Ruby.
Controllare il flusso in base alle condizioni.
and, or, not, operatori combinati e versioni inline (if/unless postfix).
Scrivere condizioni compatte e leggibili.
Selezione multipla con case/when e gestione predefinita con else.
Semplificare ramificazioni multiple pulite.
Quiz a risposta multipla con punteggio e verifica risposte tramite if/else e case.
Applicare condizioni a un flusso interattivo.
Cicli condizionali, break/next e gestione di contatori semplici.
Ripetere operazioni in modo sicuro e chiaro.
Iterazione su range e collezioni; differenze pratiche tra for ed each.
Scegliere il costrutto di iterazione adeguato.
Pattern ricorrenti per cicli numerici e ripetizioni determinate.
Scrivere cicli concisi e performanti.
Gioco con numero casuale, tentativi limitati, suggerimenti e conteggio mosse.
Integrare loop, condizioni e input utente.
Creazione, accesso per indice, push/pop/shift/unshift e metodi di base.
Gestire liste ordinate di elementi facilmente.
Definizione, accesso con simboli/stringhe, aggiornamenti e merge semplici.
Mappare dati con strutture flessibili.
each, map, select/reject, include? e metodi comodi per filtrare e trasformare.
Elaborare collezioni con metodi Ruby idiomatici.
Gestione contatti con Hash: aggiunta, ricerca, modifica e salvataggio base.
Applicare Array/Hash a un caso reale.
Sintassi di def, valori di ritorno impliciti ed espliciti, parametri default.
Scrivere metodi riusabili e chiari.
Variabili locali/globali, shadowing e quando usare return per leggibilità.
Controllare visibilità e flusso dei metodi.
Introduzione a blocchi e funzioni anonime per operazioni su collezioni.
Usare blocchi per codice più espressivo.
Metodo con tasso configurabile, input importo/valuta e output formattato.
Progettare funzioni utili e testabili.
Definizione di classi, initialize, attributi con attr_reader/attr_accessor.
Istanziare oggetti con proprietà chiare.
Comportamenti dell’oggetto vs metodi della classe; stati condivisi essenziali.
Separare responsabilità tra istanza e classe.
Classi base e derivate, super e ridefinizione comportamenti in modo sicuro.
Riutilizzare codice con ereditarietà semplice.
Classi per personaggi/combattimento, punti vita, attacchi e turni di gioco.
Applicare OOP a una dinamica di gioco.
Definizione obiettivi, requisiti minimi e struttura generale del progetto.
Progettare un MVP coerente e realizzabile.
Costruzione a step: input, logica, stato e stampa dei risultati parziali.
Integrare moduli e test via via.
Prove con casi limite, correzioni, messaggi d’errore e aiuti per l’utente.
Rendere il progetto stabile e usabile.
Demo finale, README con istruzioni e idee di estensione futura.
Documentare e presentare in modo chiaro.
