Ricordiamoci che:
(Richard Bandler)
Iniziamo ad analizzare come operare per risolvere un problema utilizzando un computer.
Premessa
Scrivere un programma significa determinare una serie finita di istruzioni che
attraverso un numero finito di passaggi giunga al risultato desiderato.
Il quesito da cui si parte deve essere non assurdo e presumibilmente risolvibile
con un computer tenendo presente quali periferiche possono essere utilizzate
allo scopo.
Il programmatore deve parimenti aver presente come rendere in linguaggio macchina
le varie istruzioni impartite, tenendo conto dei limiti del compilatore che desidera o
deve utilizzare.
I linguaggi di programmazione rappresentano il ponte tra il linguaggio umano e
quello macchina e la sintassi tiene sempre conto di tutto ciò che può
essere richiesto ed è pertanto importante che colui
che si accinge a programmare abbia ben presente quali sono le azioni che possono
essere svolte e quelle che solo con grande dispendio di energia e di
tempo si può ottenere, optando sempre se possibile per ciò
che sarà eseguito efficacemente e velocemente.
Studieremo le attività necessarie per la risoluzione dei problemi
per mezzo di un elaboratore: dalla formulazione del problema
alla predisposizione dell'elaboratore.
Scopo della programmazione è definire un programma. Un programma è la descrizione comprensibile ed eseguibile di un algoritmo da parte di un elaboratore.
Non è semplice definire cosa o come definire un problema.
Per dirlo con Albert Einstein:
In informatica il problema potrà essere definito sapendo cosa vogliamo ottenere.
Ad esempio un problema è legato all'esigenza di meccanizzare una serie di operazioni, finalizzato ad ottenere un certo risultato.
Definito cosa vogliamo ottenere, dobbiamo effettuare l'analisi dello stesso.
Chiarito come vogliamo operare svilupperemo l'algoritmo risolutivo.
Cosa si intende per algoritmo?
- Finitezza: ogni istruzione deve essere eseguita in un tempo finito e un numero finito di volte;
- Generalità: ogni algoritmo deve fornire la soluzione per i problemi appartenenti ad una determinata classe.
- Non ambiguità: devono essere definiti in modo univoco tutti i passi; devono essere evitati paradossi,contraddizioni ed ambiguità.
Come devo formalizzare un algoritmo.
Devo utilizzare un linguaggio generalizzato costituito da strutture linguistiche prive di ambiguità e ridondanze;
inoltre si devono utilizzare espressioni (frasi) contenenti:
- Descrizione delle operazioni (istruzioni);
- Eventuale descrizione dei dati su cui eseguire le istruzioni.