Scarica Principi di Programmazione e più Dispense in PDF di Elementi di Informatica solo su Docsity!
Programmazione: Generalità
I circuiti elettronici dei calcolatori sono in grado di eseguire soltanto operazioni estremamente semplici, quali:
- I calcoli aritmetici con le quattro operazioni fondamentali (+, x, - , :)
- I calcoli logici (ad esempio confronti). Tali operazioni semplici possono però essere combinate per eseguire qualsiasi operazione complessa. L'insieme ordinato di istruzioni elementari impartite a un calcolatore per svolgere un compito prende il nome di programma ; In base alle istruzioni contenute in un programma, un elaboratore produce dati in output partendo dai dati ricevuti in input.
Tali istruzioni per essere elaborate devono essere codificate ciascuna con un valore in binario. Tale codifica prende il nome di linguaggio macchina (Linguaggio di prima generazione):
- molto ostico per l'uomo
- Formato da numeri che non hanno alcuna relazione logica con il loro significato
- specifico per ogni modello di CPU
- la corrispondenza tra codici numerici e significato delle istruzioni è definita durante la progettazione della CPU. Per rendere meno complessa l'attività di programmazione è stato introdotto già negli anni '50 il linguaggio assembler, (Linguaggio di seconda generazione) che rappresenta le istruzioni del linguaggio macchina mediante codici mnemonici in forma testuale:
- più facile da utilizzare rispetto al linguaggio macchina
- difficile e costoso scrivere programmi
- non portabile (diversa CPU)
I linguaggi di alto livello Più il linguaggio di programmazione si avvicina al linguaggio macchina, più parliamo di linguaggio a basso livello. I linguaggi comunemente classificati invece come «di alto livello » traggono origine dalla necessità di realizzare un tipo di programmazione di un livello più elevato rispetto alla macchina. Vantaggi :
- Utilizzo di una notazione simile a quelle usate da tecnici e matematici. Programma più semplice da sviluppare.
- I nuovi elaboratori vengono corredati di programmi per tradurre i diversi linguaggi ad alto livello nel linguaggio macchina del nuovo processore. I programmi diventano portabili senza necessità di modifiche per i nuovi processori.
Programmazione: Metodologia
I programmi possono essere costituiti da milioni di righe di codice e anche scritti da più persone che sviluppano parti differenti (moduli). Indispensabile che tutti i programmatori utilizzino la stessa metodologia di programmazione che negli anni si è modificata ed adeguata alle nuove tecnologie. Un primo fondamentale approccio per definire una metodologia è la distinzione tra:
- Strutture dati : rappresentazione astratta del mondo reale. Per esempio un database dei dati relativi ai dipendenti di una azienda o ai clienti di una Banca
- Programmi : Algoritmi scritti in un determinato linguaggio di programmazione, che manipolano le strutture dati per ottenere il risultato desiderato
Programmazione: Metodologia
Negli ultimi anni si è sviluppata una nuova tendenza nella metodologia di programmazione. La programmazione ad oggetti. Consiste nel rappresentare il mondo reale tramite combinazioni di Strutture dati e programmi che operano su tali strutture (oggetti). Questo permette quindi di modificare o aggiungere procedure che manipolano la struttura dati dell’oggetto, senza che questo influisca sull’uso dell’oggetto. La programmazione ad oggetti richiede l’uso di particolari linguaggi come ad es. C++ o Java. Esempio: Oggetto Car. L’oggetto comprenderà:
- la struttura dati ( Fuel, Maxspeed, ecc)
- Le procedure ( Metodi ) che manipolano la struttura dati. (Ad es. la procedura “Setspeed()” potrebbe settare la velocità massima della macchina. Ecc.)
Programmazione: Fasi di Sviluppo
Lo sviluppo di un singolo programma o di un sistema informativo è un processo che si articola in cinque differenti fasi: Documentazione
Progettazione
Partendo dall’analisi (di cui viene rilasciata ampia documentazione) i programmatori cercano di individuare la soluzione più idonea al problema. Vengono quindi ricercate, procedure idonee (Algoritmi) adatti alla sua risoluzione.
Fasi di Sviluppo: Progettazione
La risoluzione di un algoritmo, prevede l’utilizzo dei concetti di:
- Variabile
- Costante
- Tipo di dato Tali strutture saranno molto utili in fase di scrittura del codice di risoluzione dell’algoritmo. Una variabile : rappresenta un'area di memoria, dove viene memorizzato qualsiasi valore acquisito dall'utente per mezzo della tastiera o frutto di un processo di elaborazione dati, per poterlo riutilizzare in qualsiasi parte del programma. Una costante : assume sempre lo stesso valore. Esempio: numero (Pi Grego), il quale è valorizzato sempre a 3 , 14. Tipo di dato : Una variabile o una costante, prima di essere utilizzate all’interno di un programma, devono essere dichiarate e associate ad un certo Tipo di dato (es. Boolean, string, integer, date, bytre, char ecc.) riconosciuto dal linguaggio di programmazione utilizzato.
Nel caso del gioco precedente, si dimostra facilmente che c’è una strategia vincente per fare in modo che vinca il giocatore che fa la prima mossa. Prima di rappresentare l’algoritmo con il Diagramma di flusso o lo pseudocodice verifichiamo manualmente se l’algoritmo trovato funziona. (In neretto le istruzioni
- Fiammiferi
- A =
- Fiammiferi =
- B =
- Fiammiferi =
- A = 4-B =
- Fiammiferi =
- B =
- Fiammiferi =
- A= 4-B =
- Fiammiferi = - Fiammiferi - A = - Fiammiferi = - B = - Fiammiferi = - A = 4-B = - Fiammiferi = - B = - Fiammiferi = - A= 4-B = - Fiammiferi = - Fiammiferi - A = - Fiammiferi = - B = - Fiammiferi = - A = 4-B = - Fiammiferi = - B = - Fiammiferi = - A= 4-B = - Fiammiferi =
- Esempio 1 Esempio 2 Esempio principali.
Implementazione (codifica del programma)
Terminata la fase di progettazione occorre scegliere un linguaggio di programmazione (Basic, Cobol, C++, Java ecc) per scrivere il codice del programma.
Fasi di Sviluppo: Implementazione
Codice C (Gioco 11)
Documentazione
In fase di rilascio di un nuovo programma o di modifiche di uno esistente, è di enorme importanza affiancare una documentazione che descriva nel dettaglio tutte le operazioni implementate o gli errori corretti. Tale documentazione ha scopi comunque differenti a seconda dell’utente a cui è rivolta:
- Utenti finali : Manuale d’uso o sistema di assistenza online.
- Personale di supporto tecnic o: documentazione di installazione e di risoluzione di problemi.
- Programmatori : Descrizione del programma, codice sorgente, diagrammi di flusso, appunti su modifiche e quanto utilizzato nelle fasi di sviluppo.
Fasi di Sviluppo: Documentazione
Diagrammi di flusso (flow chart)
Il linguaggio dei diagrammi a blocchi è un possibile formalismo
per la descrizione di algoritmi
Il diagramma a blocchi, o flowchart, è una rappresentazione
grafica dell’algoritmo
Un diagramma a blocchi descrive il flusso delle operazioni da
eseguire per realizzare la trasformazione, definita nell’algoritmo,
dai dati iniziali ai risultati
Ogni istruzione dell’algoritmo viene rappresentata all’interno di
un blocco elementare, la cui forma grafica è determinata dal
tipo di istruzione
I blocchi sono collegati tra loro da linee di flusso, munite di
frecce, che indicano il susseguirsi di azioni elementari
Le Strutture di controllo
Ogni linguaggio di programmazione possiede dei costrutti che hanno la
funzione di definire l'ordine secondo cui singole istruzioni o gruppi di esse
vengono eseguiti.
Vi sono tre generi fondamentali di strutture di controllo a livello di istruzioni:
- sequenza
- selezione
- ripetizione
La combinazione di queste semplici strutture con i dati necessari (costanti e/o
variabili), permette di descrivere graficamente qualsiasi tipo di algoritmo,
anche molto complesso.
La sequenza
se S1, S2,..., Sk sono istruzioni (o statement) allora la sequenza è
S1; S2; S3; Sk;
II controllo 'fluisce" sequenzialmente attraverso la lista.
La sequenza è il meccanismo di strutturazione più semplice ed è usato per
indicare che l'esecuzione di una certa istruzione A deve seguire l'esecuzione
dell'istruzione B.
Alcuni linguaggi usano un approccio basato sulle righe: la fine riga
separa implicitamente le istruzioni in successione