00 5/5/2016 11:15 AM
Vediamo il meccanismo delle funzioni con un programma con 2 funzioni una vuota e l' altra con il passaggio di parametri


Dentro le funzioni possiamo metterci il lavoro sporco , per poi richiamarle dentro il programma o funzione principale il MAIN con un semplice ( nome (); ) come potete capire anzi che fare delle grandi operazioni dentro il main è bene farle dentro le funzioni poi le funzioni evita di fare i doppi lavori se serve un’ istruzione più di una volta allora la funzione basta richiamarla dove desideriamo, anche il printf e scanf sono funzioni del compilatore che noi richiamiamo ogni file .H eader contiene le sue funzioni che poi noi richiamiamo dentro i nostri programmi proprio per questo che dentro questo linguaggio C c’è pochissimi comandi o istruzioni grazie alle
funzioni già costruite

La prima cosa che si fa per le funzioni , devono essere dichiarate con il prototipo in globale come si dichiara le variabili o le  costanti, per dichiarare una Funzione abbiamo:


 tipo_restituito    nome_funzione     (parametro1, parametro2);


Questo prototipo serve per dire al programma che c’è questa funzione che usa  i parametri
1 e 2  e mi viene restituito un tipo di calcolo i tipi sono proprio il tipo di variabili  int, double, float o void che è vuoto , senza questa dichiarazione sarebbe come utilizzare una variabile senza averla prima dichiarata cosi il compilatore da errori se non viene inserito nessun tipo allora viene considerata int  per uscire da queste funzioni non void si usa il RETURN  come già detto le variabili o le costanti globali vanno inserite prima del MAIN () e dopo i comandi del
preprocessore ecco come si dichiara una funzione vediamola da vicino il primo int è quello che ci
restituisce (tipo_restituito )la funzione somma , (somma è il nome della funzione )  (int , int)  sono i (parametri 1 e 2)  che la funzione prende per fare i suoi calcoli

int somma (int,int );


Creata questo prototipo della  funzione il compilatore stesso VS2015 ci fa creare la funzione e la colloca alla fine del programma generale giù in fondo dopo la graffa che chiude tutto il programma, (questo se il (main () {istruzioni }) è stato già creato), altrimenti viene collegata direttamente sotto la dichiarazione della stessa e il compilatore da errore perché non vede
il programma principale , costruita la funzione prototipo  vedrete il nome della funzione sottolineata in verde , portate il mouse sopra il nome compare una lampadina con la scelta (crea
la definizione) questo fatelo dopo che avete inserito il programma principale cosi create la vera funzione che è il nome del prototipo con 2 graffe sotto , nella parte parametro 1e 2 dobbiamo inserire il nome delle variabili se non lo abbiamo fatto su nel prototipo e questo è il passaggio
per valore , possiamo anche fare il passaggio per riferimento che vedremo  poi con i puntatori

Al compilatore gli interessa sapere su cosa lavorare, ovvero deve sapere che tipo di variabili o costanti usiamo int, double, float, oppure void vuoto , se non scriviamo nulla il compilatore considera tutto  int  e lavora su i numeri  interi  ecco un esempio di una funzione vuota
inserisce solo una intestazione quando chiamiamo la stessa funzione,  nello stesso programma inserisco una seconda funzione per una somma  di numeri reali float e qui come spiegato
prima si esce dalla funzione grazie al RETURN  ecco il programmmino funzionante  :


            <----------------------     inizio programma  --------------->



#include<stdio.h>

#include<stdlib.h>

                               //i 2 prototipi delle 2 funzioni inseriti nella
voidintestazione();   //sezione globale che rimane tra #include e il main

float somma(float, float); //le 2 funzioni una è void l'altra tutto float 



 main() {

         float aa, bb, cc;


         intestazione(); //richiamo della prima funzione che è l'intestazione 


         //si richiede 2 numeri che dobbiamo sommarli dentro la funzione 


         printf("\n Inseriamo un numero reale AA "); scanf("%f",&aa);   



         printf("\n Inserisci un numero reale BB "); scanf("%f",&bb);         



         cc = somma(aa,bb);  /* cc è il risultato che devo riprendere dalla funzione per poi ristamparlo  qui sotto con la printf */

         printf("\n La somma e' di %.2f\n ", cc); 

         printf("\n Fine ");

       intestazione(); //di nuovo la mia intestazione come su 


         system("pause");    } //fine del programma main ora qui sotto troviamo le funzioni 


void intestazione()   // funzione dell' intestazione

{

         printf("  [ ByMpt-Zorobabele ] PROVA LE FUNZIONI LA SOMMA  AA + BB \n\n");


}

float somma(float a, float b) //funzione della somma guardate le variabili 

{               //sono tutte diverse da quelle usate nella funzione 

         float c;    //principale del main su si usa AA, BB,CC contro A,B,C

         c= a + b;

         return c ;  //come spiegato prima nella lezione 9 ecco il RETURN



}
          <-----------------------  fine programma ---------------------------->




Ecco il video stampato dove troviamo le 2 intestazioni , inserimento dei numeri12.30 e 5.70  e la somma 18 :




  [ ByMpt-Zorobabele ] PROVA LEFUNZIONI LA SOMMA  AA + BB 

 Inseriamo un numero reale AA 12.30 

 Inserisci un numero reale BB 5.70 

 La somma e' di 18.00 

 Fine   [ByMpt-Zorobabele ] PROVA LE FUNZIONI LA SOMMA AA + BB

Premere un tasto per continuare . . . 



Ciao grazie  ByMpt-Zorobabele



[Edited by JehovaZorobabele 5/5/2016 11:25 AM]