Parametro (programmazione)
# Parametro (programmazione)

Un parametro, in informatica, è un indirizzo di memoria o un valore (tra quelli di un insieme omogeneo e coerente) che una funzione si aspetta di ricevere per eseguire il suo compito.

## Descrizione

La funzione può essere una semplice routine interna ad un programma, ma anche un programma di stampa che vuole sapere se stampare in verticale o in orizzontale, od, ancora, un sistema informativo di magazzino che vuole sapere se deve applicare il LIFO o il FIFO per la valorizzazione delle giacenze di magazzino.

La funzione, il programma e il sistema si aspettano (valori) e vogliono sapere (cosa fare) perché il programmatore ha espressamente previsto che vengano assunte informazioni in tal senso, ha cioè previsto il passaggio di parametri. Nei casi di routine o funzioni interne ai programmi, si utilizza più spesso il termine argomento.

A volte può essere vantaggioso definire una funzione in grado di accettare differenti set di parametri, applicando la tecnica del cosiddetto overloading. Per esempio: si immagini una subroutine che costruisce un oggetto grafico da spostare sullo schermo mediante tasti di direzione. Per definire completamente questo oggetto sono necessari molti parametri, come: colore della traccia lasciata, coordinate iniziali, velocità di spostamento. Se il programmatore volesse, invece, definire soltanto il colore dell'oggetto, potrebbe costruirlo passandogli soltanto il parametro "colore" e lasciando che agli altri parametri venga assegnato un set di valori di "default" (ad esempio la posizione iniziale potrebbe coincidere con il centro dello schermo).

### Passaggio di Parametri

Il programma chiamante ed il sottoprogramma scambiano dati attraverso una lista di variabili, definite all'interno del sottoprogramma, dette argomenti o parametri formali del sottoprogramma. Esse sono destinate ad ospitare i dati di ingresso e/o di uscita del sottoprogramma. Esistono 2 tecniche principali per lo scambio di parametri: Scambio per valore e Scambio per indirizzo.

**Parametri per valore (by value)**

Nello scambio per valore (by value), il valore del parametro attuale o effettivo viene copiato nel parametro formale. Il parametro formale costituisce quindi una copia locale del parametro effettivo. Ogni modifica fatta sul parametro formale non si riflette mai sul parametro effettivo.

**Parametri per riferimento (by reference)**

Nello scambio per riferimento (by reference), al parametro formale viene assegnato l'indirizzo del parametro effettivo. In questo modo, al sottoprogramma è possibile accedere al registro che ospita il parametro effettivo e fare delle modifiche che saranno poi visibili al programma chiamante. Qualunque modifica sul parametro formale avrà effetto sul parametro attuale corrispondente e si definisce con un & davanti al nome del parametro formale. Quest'ultimo è un modo efficace per realizzare una funzione che deve restituire più di un valore.

