Riassunto: Dal problema al programma

Schema del Corso

  1. Computer, programmi e software
  2. Problemi e ciclo di sviluppo
  3. Ruoli professionali e programmazione strutturata
  4. Scomposizione top-down
  5. Analisi e specifiche funzionali
  6. Astrazione e modellizzazione
  7. Progettazione e ragionamento
  8. Risolutore, esecutore e algoritmo
  9. Codifica e qualità del codice
  10. Verifica, test ed errori

1. Computer, programmi e software

Concetti chiave e definizioni

  • Software: Insieme dei programmi che rendono possibile il funzionamento di un computer.
  • Suite: Collezione di programmi offerta da una società, generalmente a prezzo ridotto e installabile contemporaneamente sul PC con una sola operazione.

★ Da sapere

📌 Il software di base gestisce il sistema operativo e le sue risorse, mentre il software applicativo è realizzato per consentire all’utente di svolgere compiti o funzioni specifiche.

  • Un programma è formato da istruzioni che guidano gli organi del computer nell’esecuzione di azioni su uno o più dati.

Approfondimenti

  • Le istruzioni di ingresso interessano la tastiera, quelle di uscita il monitor, quelle aritmetiche o logiche l’ALU e quelle di trasferimento la RAM.

Trucco mnemonico

L’hardware è la macchina; il software la guida con istruzioni.

2. Problemi e ciclo di sviluppo

Concetti chiave e definizioni

  • Problema: Situazione difficile da affrontare e risolvere che presenta sempre soluzioni alternative.
  • Ingegneria del software: L’ingegneria del software studia i processi produttivi e le metodologie razionali, basate su fondamenti scientifici, per analizzare, progettare, realizzare e mantenere sistemi software.

★ Da sapere

  • Alla base della scrittura di un programma c’è l’esigenza di risolvere un problema.

  • Nel modello a cascata ogni fase dello sviluppo produce un output che diventa l’input della fase successiva.

  • Le fasi del ciclo di sviluppo sono:

    • Studio di fattibilità
    • Analisi
    • Progettazione
    • Codifica o implementazione
    • Verifica
    • Rilascio

Approfondimenti

  • Lo studio di fattibilità valuta preliminarmente il sistema da automatizzare e documenta costi, risorse, tempi e opportunità del progetto per consentire al management di decidere se avviarlo.

Trucco mnemonico

Dallo studio di fattibilità al rilascio, passando per analisi, progettazione, codifica e verifica.

3. Ruoli professionali e programmazione strutturata

★ Da sapere

  • I ruoli e le rispettive funzioni sono:

    • Analista: definisce e specifica i requisiti funzionali
    • Progettista: definisce l’architettura della soluzione informatica
    • Capo progetto: definisce e specifica i moduli software
    • Programmatori: scrivono il codice sorgente
    • Tester: tracciano i comportamenti dei moduli software
    • Sistemisti: assemblano i moduli e installano il software
  • L’uso del salto incondizionato go to può rendere difficile seguire la sequenza delle istruzioni e produrre codice illeggibile, detto spaghetti-code.

Approfondimenti

  • La documentazione trasparente e il rispetto di metodiche di qualità aiutano i team di sviluppo a realizzare programmi comprensibili e non dipendenti dai loro autori.

  • Verso la fine degli anni ’60 si affermò la programmazione strutturata, orientata a un flusso ordinato e leggibile tra inizio e fine.

  • I costrutti di controllo del flusso sono:

    • Sequenza
    • Selezione condizionale
    • Ripetizione o iterazione

Trucco mnemonico

Il go to salta senza condizione; la programmazione strutturata ordina il flusso.

4. Scomposizione top-down

Concetti chiave e definizioni

  • Tecnica top-down: Scompone un problema in sotto-problemi progressivamente più semplici fino a raggiungere azioni elementari.

★ Da sapere

  • Nella tecnica top-down si raffina la soluzione suddividendo i sotto-problemi finché ciascuno raggiunge un livello semplice o non ulteriormente scomponibile.

Approfondimenti

  • Per preparare una torta Sacher si possono individuare i sotto-problemi di preparare la pasta, preparare le farciture, farcire la torta e guarnirla.

  • Nel progetto della torta Sacher, la preparazione della marmellata può essere eliminata dalla scomposizione se si decide di usare marmellata acquistata.

Trucco mnemonico

Una torta Sacher divisa in sotto-problemi sempre più piccoli fino alle azioni elementari.

5. Analisi e specifiche funzionali

Concetti chiave e definizioni

  • Fase di analisi: Studia il problema e le sue specifiche funzionali per identificare i dati iniziali, i dati intermedi e i dati finali, chiarendo che cosa occorre fare.

Punti essenziali

  • Nell’analisi si evidenziano obiettivi, regole e dati espliciti o impliciti, ed si eliminano dettagli inutili e ambiguità.

  • Per analizzare un problema occorre conoscere i dati iniziali, esaminare anche i casi particolari o limite e identificare gli obiettivi da raggiungere come dati finali.

  • Dati due interi X e Y, il maggiore è X se X−Y > 0, Y se X−Y < 0 e i numeri sono uguali se X−Y = 0; il prodotto è zero se Y = 0 e, se Y > 0, si ottiene sommando X a sé stesso Y volte.

Trucco mnemonico

L’analisi risponde a «che cosa fare?»; la progettazione a «come fare?».

6. Astrazione e modellizzazione

Concetti chiave e definizioni

  • Astrazione: Semplifica un problema mettendo in evidenza le caratteristiche essenziali e nascondendo quelle particolari, modificando il livello di dettaglio della descrizione.
  • Modellizzazione: Concretizza l’astrazione rappresentando in forma semplificata gli elementi del problema, le loro proprietà e le relazioni tra essi.

Punti essenziali

  • I modelli descrittivi possono essere:

    • Grafici
    • Tabellari
    • Simbolici, espressi mediante formule matematiche
  • Nel problema dei percorsi tra abitazione A e scuola S, con AD = 330 m, AB = 240 m, CD = DS = 220 m, BC = 200 m e CS = 190 m, il percorso ADS è il più breve tra quelli confrontati.

  • Se Qui, Quo e Qua spendono rispettivamente 550 €, 300 € e 350 €, la spesa totale è 1200 € e la quota equa è 400 € a testa.

Trucco mnemonico

L’astrazione seleziona l’essenziale; il modello lo rappresenta.

7. Progettazione e ragionamento

Concetti chiave e definizioni

  • Fase di progettazione: Individua la strategia risolutiva e risponde alla domanda «come fare?».
  • Problem solving: Insieme delle azioni intraprese, anche attraverso tentativi, per risolvere situazioni problematiche.
  • Sillogismo: Strumento deduttivo che deriva una conclusione da due premesse valide.

★ Da sapere

📌 Una strategia è efficace se porta al risultato corretto ed è efficiente se raggiunge il risultato rapidamente e con un dispendio minimo di risorse.

📌 La deduzione procede dall’universale al particolare, mentre l’induzione procede dall’osservazione di casi particolari alla formulazione di regole generali.

Approfondimenti

  • Se una soluzione progettata risulta complessa, il corso raccomanda di ricercarne una più semplice.

Trucco mnemonico

La deduzione va dall’universale al particolare; l’induzione dal particolare all’universale.

8. Risolutore, esecutore e algoritmo

★ Da sapere

📌 Il risolutore individua la strategia per raggiungere un obiettivo, mentre l’esecutore svolge le azioni descritte dalla strategia.

  • Il computer, come esecutore, deve ricevere dal risolutore una descrizione delle azioni priva di ambiguità, perché non conosce il senso complessivo della soluzione.

Approfondimenti

  • Problemi simili possono avere soluzioni simili, riutilizzabili interamente o in parte per affrontare nuovi problemi.

📐 Formula - La diagonale D di un rettangolo con lati a e b si calcola con D=a2+b2D = \sqrt{a^2 + b^2}.

  • Per calcolare la diagonale si misurano base e altezza, si elevano entrambe al quadrato, si sommano i quadrati, si estrae la radice quadrata e si visualizza il risultato.

Trucco mnemonico

L’uomo individua la strategia; il computer esegue le azioni descritte.

9. Codifica e qualità del codice

Concetti chiave e definizioni

  • Linguaggio di programmazione: Linguaggio formale dotato di regole lessicali e sintattiche e di una semantica precisa.
  • Programmazione: Disciplina che si occupa dell’automazione dei processi risolutivi.

★ Da sapere

  • Per rendere eseguibile dal computer un algoritmo, i suoi passi vengono codificati in un linguaggio di programmazione, formando il codice sorgente, che viene compilato e tradotto in linguaggio macchina.

📌 La sintassi stabilisce le regole per scrivere istruzioni corrette, mentre la semantica ne definisce i significati.

Approfondimenti

📌 Una variabile deve essere inizializzata prima di essere utilizzata, altrimenti il programma può basarsi sul valore casualmente presente nell’area di RAM corrispondente.

  • Commenti, indentazione e nomi significativi delle variabili favoriscono la leggibilità del codice e la manutenzione da parte di altri programmatori.

Trucco mnemonico

Algoritmo, codice sorgente, compilazione, programma eseguibile.

10. Verifica, test ed errori

Concetti chiave e definizioni

  • Debugging: Attività con cui il programmatore individua gli errori quando l’output reale non coincide con quello atteso.

★ Da sapere

  • Per verificare un programma si pianificano gli input e i relativi output attesi, si eseguono le prove e si confrontano i risultati effettivi con quelli previsti.

📌 Gli errori di sintassi riguardano la scrittura dei comandi e vengono rilevati dal compilatore, gli errori di logica o semantica derivano da difetti nell’algoritmo e possono lasciare il programma eseguibile ma con risultati inattesi, mentre gli errori run-time si manifestano durante l’esecuzione e possono interrompere il programma.

Approfondimenti

  • La tabella di traccia registra i dati scelti e i valori assunti dalle variabili passo dopo passo per controllare le istruzioni e il raggiungimento dell’obiettivo.

📌 Input arbitrari permettono di provare il funzionamento dell’algoritmo, mentre input che rappresentano casi limite significativi ne mettono alla prova la stabilità.

  • I debugger consentono di eseguire il programma passo dopo passo e controllare il funzionamento delle istruzioni.

Trucco mnemonico

Sintassi: il codice è scritto correttamente; logica: produce il risultato atteso.

Tabelle di sintesi

Le fasi del ciclo di sviluppo

FaseRisultato o funzione
Studio di fattibilitàValuta opportunità, costi, risorse e tempi
AnalisiChiarisce requisiti e dati del problema
ProgettazioneDefinisce la strategia e l’architettura
CodificaTraduce i passi in codice sorgente
VerificaControlla funzionamento e risultati
RilascioConsegna il programma agli utenti

Categorie di errore software

ErroreQuando emergeEffetto
SintassiIn compilazioneIl compilatore segnala la scrittura errata
Logica o semanticaCon il programma eseguibileIl risultato può essere inatteso
Run-timeDurante l’esecuzionePuò interrompere il programma

Metti alla prova le tue conoscenze

Mettiti alla prova su Dal problema al programma con 26 domande a risposta multipla e correzioni spiegate.

1. Che cosa comprende il software di un computer?

2. Un utente deve scrivere un documento e gestire le risorse del computer: quale distinzione descrive correttamente i due tipi di software coinvolti?

Fai il quiz →

Ripassa con le flashcard

Memorizza i concetti chiave di Dal problema al programma con 74 flashcard interattive.

Che cosa rende possibile il funzionamento di un computer?

L’insieme dei programmi che costituisce il software.

Qual è il compito del software di base?

Gestire il sistema operativo e le sue risorse.

Per quali compiti è realizzato il software applicativo?

Per consentire all’utente di svolgere compiti o funzioni specifiche.

Vedi le flashcard →

Corsi simili

Crea i tuoi riassunti

Importa il tuo corso e l'IA genera riassunto, quiz e flashcard in 30 secondi.

Generatore di riassunti