Concetti Chiave
- Le funzioni sono blocchi di codice che risolvono compiti specifici, rendendo il codice più chiaro e evitando duplicazioni.
- In C, la funzione main() è essenziale e deve essere presente solo una volta, mentre printf() e scanf() sono funzioni di libreria comunemente utilizzate.
- La sintassi K&R supporta parzialmente i prototipi; il compilatore non verifica il numero e il tipo degli argomenti, portando a possibili comportamenti ambigui.
- Se una funzione è invisibile al momento della chiamata nella sintassi K&R, il compilatore presume che sia di tipo int, il che può causare errori di sintassi se non è così.
- Le modifiche della standardizzazione ANSI rispetto alla sintassi K&R hanno introdotto l'uso di prototipi, migliorando la coerenza dei tipi di dato e riducendo ambiguità.
Funzione = (o procedura o routine o subroutine o sottoprogramma) costrutto sintattico che permette di definire un blocco di codice che svolge un compito preciso. Le funzione vengono utilizzate per dividere un problema complesso in moduli più semplici, inoltre rendono il codice più comprensibile. Inoltre evitano la duplicazione di codice, poichè le funzioni sono riutilizzabili. Le funzioni non devono avere mai lo stesso identificativo, anche se gli argomenti e i valori di ritorno sono diversi tra loro, altrimenti si verifica l’overflowing (sovraccarico).
Funzioni nel linguaggio C
main() è una funzione, e deve comparire una sola volta nel corso di un programma, printf() e scanf() invece sono funzioni di libreria del C.
Le funzioni pre-ANSI
Il mancato uso o scoretto di prototipi,che risultano molto utili, può causare comportamenti ambigui, questa è stato uno dei temi su cui si sono avute più modifiche da parte della standardizzazione ANSI rispetto alla sintassi K&R (pre-ANSI), anche se questa è ancora supportata da C89, ma alcuni controlli pre-ANSI sono stati eliminati.
Sintassi K&R e prototipi
La sintassi K&R supporta parzialmente i prototipi, poichè i compilatori avrebbero impiegato troppe risorse per verificare la coerenza tra i tipi di dato quando la funzione sarebbe stata chiamata.
Caratteristiche sintassi K&R:
- nelle definizioni si richiede solo il tipo di ritorno della funzione, non il tipo è il numero degli argomenti. Tipo e numero di argomenti sono elencati subito prima delle graffe
- poichè int e il tipo di default in una dichiarazione di funzione può essere anche omesso, sia per il tipo di ritorno sia per gli argomenti. Se il valore di ritorno è int può essere anche omesso il prototipo di funzione
- se la funzione non è visibile quando viene chiamata, il compilatore da per scontato che sia di tipo int, ma se questo non lo e c’è un errore di sintassi
- per il passaggio dei parametri, i parametri vengono inferiti direttamente alla chiamata della funzione, il compilatore assume che la funzione abbia il tipo e il numero di parametri formali uguali a quelli dei parametri attuali della chiamata.
- poichè non ci sono controlli su tipo e numero di argomenti, si possono avere comportamenti non definiti: se i tipi dei parametri attuali dopo le conversioni non sono compatibili a quelli formali, e, se il numero di parametri attuali non è uguale a quello dei formali.
Domande da interrogazione
- Qual è l'importanza delle funzioni nella programmazione?
- Qual è l'importanza delle funzioni nella programmazione?
- Quali sono le differenze tra la sintassi K&R e i prototipi nel linguaggio C?
- Quali sono le differenze principali tra la sintassi K&R e i prototipi nel linguaggio C?
- Cosa può accadere se non si utilizzano correttamente i prototipi delle funzioni?
- Cosa può accadere se non si utilizzano correttamente i prototipi delle funzioni?
Le funzioni sono fondamentali per suddividere problemi complessi in moduli più semplici, rendendo il codice più comprensibile e riutilizzabile, evitando così la duplicazione di codice.
Le funzioni sono fondamentali per suddividere problemi complessi in moduli più semplici, rendendo il codice più comprensibile e riutilizzabile, evitando così la duplicazione di codice.
La sintassi K&R richiede solo il tipo di ritorno della funzione e non specifica il tipo e il numero degli argomenti, mentre i prototipi, introdotti dalla standardizzazione ANSI, forniscono una maggiore coerenza e controllo sui tipi di dato.
La sintassi K&R richiede solo il tipo di ritorno della funzione senza specificare il tipo e il numero degli argomenti, mentre i prototipi, introdotti dalla standardizzazione ANSI, forniscono un controllo più rigoroso sulla coerenza dei tipi di dato.
L'uso scorretto dei prototipi può causare comportamenti ambigui e non definiti, poiché il compilatore non verifica la coerenza tra i tipi di dato, portando a errori di sintassi se i parametri non sono compatibili.
L'uso scorretto dei prototipi può causare comportamenti ambigui e non definiti, poiché il compilatore non verifica la coerenza tra i tipi di dato e il numero di argomenti, portando a errori di sintassi se i parametri non sono compatibili.