Difference between revisions 75076035 and 87360924 on itwiki

{{NN|informatica|novembre 2009}}
{{C|Senza fonti autorevoli a supporto non è possibile stabilire cosa sia "fondamentale" o meno senza scadere nel POV personale|informatica|marzo 2013}}
{{U|Programmazione (informatica)|informatica|novembre 2014}} 
(contracted; show full)

* Uno di essi è il [[diagramma di flusso]]: con un [[Diagramma|grafico]] molto intuitivo si può illustrare un processo in tutte le fasi che lo caratterizzano. Ogni fase è collegata con le altre dalle [[linee di flusso]] che indicano la direzione del processo interno al [[programma (informatica)|programma]].



* Un efficace metodo di progettazione è  lo [[pseudocodice]], una forma di scrittura in codice affine alla lingua parlata dal [[programmatore]]. La sua stesura è simile ad una scaletta di operazioni che si definiscono quando si deve eseguire una determinata azione. La scrittura dello [[pseudocodice]] deve essere dettagliata almeno quanto il codice finale, ma rispetto ad esso non si richiede una sintassi precisa lasciando il [[programmatore]] libero di concentrarsi sui problemi principali del [[programma (in(contracted; show full)

I programmi possono inoltre essere divisi in sezioni in modo che i vari compiti possano essere eseguiti attraverso sequenze più semplici di passi. A tale scopo viene suddiviso il [[programma (informatica)|programma]] in [[funzioni (informatica)|funzioni]].

===La codifica del programma===
{{vedi anche|Teorema di Bohm-Jacopini}}

Avviene in questa fase la scelta del [[paradigma di programmazione]] e del relativo [[linguaggio di programmazione]] con cui sviluppare il progetto (es. [[Java (linguaggio
 di programmazione)|Java]], [[C++]], [[BASIC]], [[Perl]], ecc.), passando dai [[diagrammi di flusso]] o dallo [[pseudocodice]], ad una sintassi più rigorosa e specifica del linguaggio scelto, redigendo il [[codice sorgente]].

(contracted; show full)

=== La scelta delle tecniche ===
{{Vedi anche|Paradigma di programmazione|Strumenti di controllo}}
Esistono varie tecniche di programmazione, le più comuni ed utilizzate sono le seguenti:

* [[Programmazione non strutturata]] - in cui il programma è costituito da un unico blocco di istruzioni (detto ''main'') che vengono eseguite in maniera sequenziale.



* [[Programmazione procedurale]] - in cui vi sono blocchi di istruzioni che fungono da sottoprogrammi e svolgono funzioni ben definite.


* [[Programmazione modulare]] - in cui è possibile utilizzare procedure messe a disposizione da altri programmi e permettere a questi di poter utilizzare le proprie.


* [[Programmazione orientata agli oggetti]] - in cui vengono creati degli "oggetti" che possono funzionare autonomamente o interagire tra di loro. Ogni oggetto possiede in sé delle specifiche proprietà e funzioni (se ipotizziamo come oggetto un'automobile, una caratteristica sarà il suo colore o la sua marca e le funzioni saranno l'accelerare o il rallentare).

I programmi informatici risultano essere molto più articolati di un processo lineare come l'addizione di due numeri. Per dare al programma una struttura più complessa si utilizzano i seguenti strumenti:

* Le '''diramazioni''' consistono nel fornire al codice delle funzioni che possono cambiare lo svolgimento dell'[[algoritmo]] a seconda del risultato della condizione espressa.


* I '''cicli''' sono sequenze di istruzioni eseguite ripetutamente fin quando non viene soddisfatta una determinata condizione. Ogni ripetizione è detta iterazione.

===La verifica del risultato===
Completato il [[programma (informatica)|programma]] è frequente la presenza di errori derivanti da ragioni varie.

(contracted; show full)

Approvato il progetto migliore si passa allo ''sviluppo'' vero e proprio. Ciò consiste nell'acquisto del materiale [[software]] (ed eventualmente di quello [[hardware]]) necessario alla verifica del funzionamento del nuovo sistema.
  

Segue poi la fase di ''testing'' dell'applicazione da parte di un team autonomo che rigira agli sviluppatori eventuali errori o [[bug]] per la loro risoluzione.

Per molte [[aziende]] il [[software]] presente sul mercato risulta spesso inadatto alle proprie esigenze ed è necessario lo sviluppo di programmi personalizzati o la modifica di quelli già esistenti. A questo scopo esistono altre aziende specializzate in questo tipo di servizi affidati dunque in [[outsourcing]] (aziende di [[consulenza informatica]]).

=== L'installazione ===
{{Vedi anche|Deployment}}
Una volta creato e verificato il nuovo sistema, si procede all'installazione dello stesso all'interno dell'[[azienda]] ed al suo funzionamento a pieno regime. Tale impatto può essere traumatico per un'[[azienda]] abituata a vecchi sistemi, ragion per cui si procede in diverse maniere, secondo il caso:

* L''''installazione diretta''', in cui si disattiva il vecchio sistema e si sostituisce col nuovo appena creato. Se tale sostituzione presenta dei problemi non previsti in fase di sviluppo, non esiste [[backup]] dei vecchi [[programma (informatica)|programmi]], causando enormi problemi. Tale soluzione è adottata soltanto in assenza di alternative valide.


* L''''installazione parallela''', in cui il lavoro previsto per il nuovo sistema è distribuito in parti uguali su di esso e su quello [[obsoleto]], in modo da far fronte ad un eventuale problema del nuovo utilizzando temporaneamente il vecchio. Quando il nuovo sistema raggiunge un discreto livello di affidabilità, sostituisce totalmente il vecchio.


* L''''installazione scaglionata''', in cui il nuovo sistema è introdotto per gradi, man mano che vengono risolti gli errori riscontrati, esso sostituisce il vecchio secondo varie fasi. Adottando tale soluzione, eventuali problemi avranno conseguenze meno disastrose interessando soltanto una singola fase. Svantaggio di questo tipo di installazione sono i tempi molto lunghi.


* L''''installazione pilota''', in cui il nuovo sistema viene utilizzato soltanto per una piccola parte delle attività aziendali e, se funzionante regolarmente, viene esteso a tutta l'[[azienda]]. In caso di problemi essi risulteranno ristretti soltanto a quella parte di attività che adotta il nuovo sistema, senza pregiudicare l'intera attività aziendale.

=== L'implementazione ===
Superata l'installazione, il [[programma (informatica)|programma]] fornirà all'[[azienda]] un servizio, richiedendo comunque manutenzione, in cui vengono risolti i problemi riscontrati ed introdotti cambiamenti funzionali attui a migliorare le prestazioni dei programmi.

==Esempio: addizione di due numeri==
Il [[programma (informatica)|programma]] più semplice ed intuitivo è sicuramente quello che presi due numeri in [[input]], restituisce come [[output]] la loro somma. A seconda del [[linguaggio di programmazione]] che si utilizza la struttura cambia e si articola in maniera diversa.

* In un [[linguaggio di programmazione ad alto livello]] il programma contiene un'istruzione il cui significato è: ''nella [[locazione di memoria]] C deve essere inserito un numero uguale alla somma dei numeri presenti nelle locazioni A e B''.


* In un [[linguaggio assembly]] si definiscono tre [[locazioni di memoria]] associate a tre nomi simbolici A, B, C. Durante l'esecuzione, il programma carica nella [[CPU]] il numero presente in A e lo somma con quello che si trova nella posizione B memorizzando il risultato in C.


* In un [[linguaggio macchina]] un determinato comando x1 carica un numero che si trova in una [[locazione di memoria]] y1 (generalmente definita da una cifra [[esadecimale]]) all'interno della [[CPU]]. Il comando x2 somma il numero che si trova nella [[locazione di memoria]] y2 con quello caricato precedentemente. Infine un comando x3 trasferisce il risultato ottenuto in una [[locazione di memoria]] y3 rendendolo disponibile per nuove operazioni.

==Bibliografia==
* Dennis P. Curtin, Kim Foley, Kunal Sen, Cathleen Morin, ''Informatica di Base'', Mc-Graw Hill, 2005

==Voci correlate==
* [[Programmazione (informatica)]]
* [[Paradigma di programmazione]]
* [[Linguaggio di programmazione]]
* [[Linguaggio macchina]]
* [[Linguaggio assembly]]
* [[Linguaggio BASIC]]
* [[Algoritmo]]
* [[Teorema di Bohm-Jacopini]]
* [[Variabile (informatica)]]
* [[Costante (informatica)]]
* [[Strutture dati]]
* [[Struttura di controllo]]

==Collegamenti esterni==
*[http://programmazione.html.it/guide/ Guida alla programmazione], su [http://www.html.it html.it].

{{portale|informatica}}

[[Categoria:Programmazione| ]]