Linguaggio C: le funzioni. Introduzione e sintassi
|
|
|
- Romano Sartori
- 9 anni fa
- Просмотров:
Транскрипт
1 ISIS "Guido Tassinari" di Pozzuoli Indirizzo Informatico - Articolazione Informatica Informatica Prof. A.S. 2012/2013 Linguaggio C: le funzioni. Introduzione e sintassi 21/10/2012
2 Introduzione Spesso alcuni gruppi di operazioni vengono ripetute in diverse parti all interno del medesimo programma Si pensi ad esempio a un programma di gestione di matrici È plausibile pensare che una matrice dovrà essere stampata a video in numerosi momenti Il codice relativo alla stampa è sempre lo stesso (due cicli for annidati) È quindi utile definire una sola volta questo gruppo di istruzioni e dare un nome ad esso Ogni volta che si vuole stampare a video una matrice sarà sufficiente indicare il nome assegnato Corso di Informatica - prof. Rio Chierego pag. 2
3 Sottoprogrammi Un sottoprogramma è quindi: Un insieme di istruzioni dotato di nome descritto (definito) una sola volta, attivabile (richiamabile o invocabile) all interno del programma o di un altro sottoprogramma Alcuni sottoprogrammi che usiamo sono già definiti Si pensi alla scanf e alla printf Dietro a questi nomi vi sono una serie di istruzioni in grado di, rispettivamente, intercettare la pressione dei tasti e di visualizzare uno o più caratteri sullo schermo Chi richiama queste funzioni non si preoccupa di come sono fatte, basta sapere solo cosa fanno (visione black box) Corso di Informatica - prof. Rio Chierego pag. 3
4 Sottoprogrammi: motivazioni 1/2 Astrazione e leggibilità: enucleano parti di codice, nascondendo dettagli algoritmici e di codifica. Il nome del programma si presenta come un operazione elementare Strutturazione e scomposizione funzionale del programma: consentono una stesura del programma che riflette un analisi funzionale del problema Collaudo: verifica di correttezza della soluzione facilitata dal poter verificare la correttezza prima dei singoli sottoprogrammi e poi dell intero programma visto come insieme di chiamate che si scambiano informazioni Corso di Informatica - prof. Rio Chierego pag. 4
5 Sottoprogrammi: motivazioni 2/2 Compattezza, efficienza e leggibilità del codice: si evita di ripetere sequenze di istruzioni in più parti del programma Modificabilità: una sola modifica vale per tutte le attivazioni del sottoprogramma Riuso: sottoprogrammi non troppo specifici possono essere raccolti in librerie utilizzabili da programmi diversi Corso di Informatica - prof. Rio Chierego pag. 5
6 Funzioni e procedure In tutti i linguaggi di programmazione di alto livello, i sottoprogrammi possono essere di tipo funzionale (FUNZIONI) di tipo procedurale (PROCEDURE) Si differenziano: per la logica di definizione per l uso e per la modalità di chiamata Sottoprogrammi di tipo funzionale (FUNZIONI) possono essere considerati una astrazione di valore l invocazione della funzione associa al nome della funzione il valore del risultato calcolato dal sottoprogramma Sottoprogrammi di tipo procedurale (PROCEDURE) possono essere considerati una astrazione di operazioni l invocazione della procedura è associata all esecuzione delle istruzioni del sottoprogramma che realizzano l operazione specificata dal sottoprogramma Corso di Informatica - prof. Rio Chierego pag. 6
7 ISIS "Guido Tassinari" di Pozzuoli PIndirizzo Informatico - Articolazione Informatica Sintassi
8 Funzioni e procedure in C In C esistono solo le FUNZIONI. Le PROCEDURE sono particolari funzioni che non restituiscono nulla (tipo void) Quindi parleremo solo di FUNZIONI intendendo sia le funzioni che le procedure Definire una FUNZIONE secondo il linguaggio C implica: 1) DICHIARAZIONE del PROTOTIPO della funzione (nella sezione dichiarativa) 2) DEFINIZIONE della funzione (dopo il main) 3) INVOCAZIONE o CHIAMATA della funzione (nel codice che necessita della funzioni) Corso di Informatica - prof. Rio Chierego pag. 8
9 Dichiarazione del prototipo Il PROTOTIPO definisce: il nome della funzione il tipo restituito ("void" per una procedura) il nome ed il tipo dei parametri in input e in output (ev. nessuno) la modalità d uso (ossia stabilisce come deve essere chiamata) Chi utilizzerà la funzione dovrà rispettare la sintassi definita nel prototipo Prototipo FUNZIONE <tipo_restituito> <nome_funz> (<lista dei parametri>); Prototipo PROCEDURA void è una parola chiave del C che indica assenza di tipo) void <nome_funz> (<lista dei parametri>); Corso di Informatica - prof. Rio Chierego pag. 9
10 Definizione di una funzione La DEFINIZIONE della funzione va messa subito dopo il main. Ha la stessa struttura del main. (N.B. in realtà anche il main è una funzione chiamata dal S.O.): Una parte dichiarativa Una parte esecutiva } <tipo void> <nome> (<tipo par_f_1> <nome_1>, <tipo par_f_2> <nome_2>...) { <parte dichiarativa locale> <parte esecutiva> return; oppure return <valore>; <tipo> <nome> (<tipo par_f_1> <nome_1>, <tipo par_f_2> <nome_2>...) è la testata della funzione par_f_1, par_f_2 sono i nomi dei parametri formali della funzione, il cui tipo deve corrispondere in modo ordinato ai tipi elencati nel prototipo Corso di Informatica - prof. Rio Chierego pag. 10
11 Parametri formali Rappresentano un riferimento simbolico (identificatori) a oggetti utilizzati all interno della funzione Sono utilizzati dalla funzione come se fossero variabili dichiarate localmente Il valore iniziale di parametri formali viene definito all atto della chiamata della funzione dal programma chiamante tramite il passaggio dei parametri attuali. Esso può avvenire: a) passaggio per valore o BY VALUE b) passaggio per riferimento o BY REFERENCE Corso di Informatica - prof. Rio Chierego pag. 11
12 Invocazione o chiamata Nel corpo del main o di un altra funzione indica il punto in cui va eseguita la parte del codice presente nella definizione di funzione invocazione di funzione come operando in una espressione <espressione> = <nomefunzione(par_att1, par_att2, ) >; invocazione di procedura come un istruzione nomeprocedura(par_att1, par_att2, ); In entrambi i casi: par_att1, par_att2, sono i parametri attuali che devono corrispondere per ordine, numero e per tipo ai parametri formali. I parametri attuali possono essere variabili, costanti o espressioni definite nell ambiente chiamante, i cui valori all atto della chiamata vengono copiati nei parametri formali Corso di Informatica - prof. Rio Chierego pag. 12
13 Chiamata di un All atto della chiamata, il controllo dell esecuzione passa dal chiamante al chiamato Il codice del chiamato viene eseguito Al termine dell esecuzione il controllo ritorna al chiamante, all istruzione successiva a quella della chiamata (Istruzione C3) Inizio programma Passaggio del controllo Codice Chiamante Istruzione C1 Istruzione C2 <Chiamata funzione> Istruzione C3 Funzione Chiamata Istruzione F1 Istruzione F2 Istruzione F3 Ritorno del controllo Corso di Informatica - prof. Rio Chierego pag. 13
14 Scambio di informazioni Il programma chiamante deve poter ricevere dei valori attuali (specifici) sui quali eseguire le operazioni definite nel sottoprogramma Il programma chiamato deve poter fornire al chiamante i risultati dell elaborazione Lo scambio di informazioni tra programma chiamante e programma chiamato può avvenire in tre modi distinti: 1) tramite valore restituito da una funzione (dal p. chiamato al p. chiamante) vale solo per le funzioni per fornire un valore al programma chiamante 2) tramite passaggio dei parametri (dal p. chiamante al p. chiamato) per fornire i valori in ingresso al chiamato per fornire i risultati di operazioni al chiamante 3) tramite variabili globali (in entrambe le direzioni) fortemente sconsigliato Corso di Informatica - prof. Rio Chierego pag. 14
15 Istruzione return Parola chiave C utilizzata solo nelle funzioni Sintassi return <espressione> ; È l ultima istruzione di una funzione e indica: Il punto in cui il controllo torna al chiamante Il valore restituito In una funzione Deve esserci almeno un istruzione di return (non necesssria se restituisce un void) Possono esserci più istruzioni di return ma in alternativa (fortemente sconsigliato: uso della programmazione strutturata La funzione può restituire un solo valore di un tipo Corso di Informatica - prof. Rio Chierego pag. 15
Linguaggio C: le funzioni. Introduzione e sintassi
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: le funzioni. Introduzione e sintassi La presente dispensa
Funzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7
Linguaggio C: le funzioni. Visibilità variabili e passaggio parametri
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: le funzioni. Visibilità variabili e passaggio parametri
Introduzione al linguaggio C Funzioni
Introduzione al linguaggio C Funzioni Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati
Funzioni in C. Funzioni. Strategie di programmazione. Funzioni in C. Come riusare il codice? (2/3) Come riusare il codice? (1/3)
Funzioni Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Strategie di programmazione Riuso di
Linguaggio C - sezione dichiarativa: costanti e variabili
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - sezione dichiarativa: costanti e variabili La presente
Corso di Informatica Modulo T3 2 Ambiente locale e globale
Corso di Informatica Modulo T3 2 Ambiente locale e globale 1 Prerequisiti Struttura elementare della memoria Area dati e area programma Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità
Linguaggio C: introduzione
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: introduzione La presente dispensa e da utilizzarsi
7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari
7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa
Le funzioni in JavaScript. Modularizzazione
Modularizzazione Quando abbiamo a che fare con un problema complesso spesso lo suddividiamo in problemi più semplici che risolviamo separatamente, per poi combinare insieme le soluzioni dei sottoproblemi
Definizione di metodi in Java
Definizione di metodi in Java Un metodo in Java definisce un operazione ad alto livello (sottoprogramma) che consente di manipolare dati e oggetti. Durante la computazione effettuata da un programma, un
Corso sul linguaggio Java
Corso sul linguaggio Java Modulo JAVA2 2.1- Funzioni 1 Prerequisiti Programmazione elementare in Java Tecnica top-down Concetto matematico di funzione Compilazione e link di programmi Esecuzione di funzioni
Modularizzazione del software
Modularizzazione del software Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2006/2007 Fortran 90: Subroutine e function DIS - Dipartimento di informatica e sistemistica
Introduzione al C. Introduzione. Linguaggio ad alto livello. Struttura di un programma C
Introduzione 2 Introduzione al C Linguaggio di programmazione ad alto livello (HLL) Sviluppato negli anni 70 (C standard ANSI) Molto diffuso e adatto ad un ampio spettro di applicazioni: Scientifiche Gestionali
Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo
Programmazione Orientata agli Oggetti Emilio Di Giacomo e Walter Didimo Una metafora dal mondo reale la fabbrica di giocattoli progettisti Un semplice giocattolo Impara i suoni Dall idea al progetto Toy
Linguaggi di alto livello, compilatori e interpreti
Linguaggi di alto livello, compilatori e interpreti Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Il punto della situazione STATO DATI
INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
Procedura. Procedure e funzioni. Esempio di procedura in C. Procedure in C. Esempio con prototipo. Esecuzione del codice
Procedure e funzioni In linguaggio C Procedura Una procedura può essere rappresentata come una macchina in grado di eseguire un certo compito quando attivata. In un primo tempo la macchina deve essere
ACSO Programmazione di Sistema e Concorrente
ACSO Programmazione di Sistema e Concorrente P2 Modello Thread 2/12/2015 programma e parallelismo il tipo di parallelismo dipende dal grado di cooperazione (scambio di informazione) necessario tra attività
Capitolo 5 - Funzioni
Capitolo 5 - Funzioni Divide and conquer Introduzione Costruire un programma da pezzi più piccoli o da singole componenti Questi pezzi più piccoli sono chiamati moduli Ogni singolo pezzo è più facilmente
Evoluzione del FORTRAN 14/03/2016. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 15 IL LINGUAGGIO FORTRAN
LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 15 IL LINGUAGGIO FORTRAN Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico II wpage.unina.it/lapegna
Funzioni. Unità 1. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza [email protected] http://www.dis.uniroma1.it/~salza/fondamenti.htm
