vale1411
Genius
3 min. di lettura
Vota

Concetti Chiave

  • Le funzioni sono blocchi di codice che semplificano problemi complessi e rendono il codice più comprensibile e riutilizzabile.
  • Ogni funzione deve avere un identificativo unico per evitare sovraccarichi, indipendentemente dagli argomenti o valori di ritorno.
  • main() è una funzione unica in un programma, mentre printf() e scanf() sono funzioni di libreria del C.
  • La sintassi pre-ANSI K&R non richiede la dichiarazione completa dei prototipi, portando a possibili comportamenti ambigui.
  • In K&R, la mancanza di controllo su tipo e numero di argomenti può causare errori di sintassi o comportamenti non definiti.

Funzioni

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).
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.
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

  1. Qual è il ruolo principale delle funzioni in un programma?
  2. Le funzioni servono a dividere un problema complesso in moduli più semplici, rendendo il codice più comprensibile e riutilizzabile, evitando la duplicazione.

  3. Quali sono le differenze principali tra la sintassi K&R e la standardizzazione ANSI per le funzioni?
  4. La sintassi K&R richiede solo il tipo di ritorno della funzione e non il tipo e il numero degli argomenti, mentre ANSI ha introdotto prototipi per evitare comportamenti ambigui, migliorando la coerenza dei tipi di dato.

  5. Cosa succede se una funzione non è visibile al momento della chiamata nella sintassi K&R?
  6. Il compilatore assume che la funzione sia di tipo int, ma se non lo è, si verifica un errore di sintassi.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community