Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    138

    [C]Mi sono bloccato

    Gentili utenti,
    sto studiando il C e sono arrivato alle funzioni, ma da qui in poi non ci capisco piu' niente, quindi a meno che qualcuno di voi non me le voglia spiegare passo dopo passo, mi sapete consigliare una guida che mi permetta di comprenderle facilmente.
    Vi ringrazio in anticipo

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    138
    su questo sito e' tutto chiarissimo, ma vorrei sapere "A COSA SERVONO LE FUNZIONI E COME CAVOLO SI USANO???"
    In realta; ho capito come funzionano, ma se qualcuno di voi e' disponibile a dirmelo, beh, ne sarei felice.

  4. #4
    Nella stesura di un programma quasi sempre ti capita di dover fare una o più insiemi di operazioni più di una volta.
    Le funzioni ti aiutano in questo in quanto racchiudi una intera parte di codice in un unico "blocco" (funzione) indipendente che puoi richiamare al bisogno tramite un semplice "funzione ()".

    Per rendere le cose "meno statiche" puoi passare alle funzione degli argomenti. In questo modo puoi fare eseguire alla stessa funzione operazioni diverse, a seconda degli argomenti che passi nel momento in cui la richiami.
    Rilasciata Python FTP Server library 0.5.1
    http://code.google.com/p/pyftpdlib/

    We'll be those who'll make the italian folks know how difficult can be defecating in Southern California without having the crap flying all around the house.

  5. #5
    Utente di HTML.it L'avatar di ibykos
    Registrato dal
    Feb 2005
    Messaggi
    201
    Una funzione è un aggeggio che lavora un o più dati in ingresso per fornirne uno in uscita.
    Tutto ciò che viene svolto da una funzione può essere fatto senza, a scapito della chiarezza del codice.
    Le funzioni si dividono principalmente in due gruppi: quelle fatte da te e quelle fatte da altri.
    Tra quelle fatte da altri ce ne sono di importantissime (anzi fondamentali), senza le quali la soluzione di compiti anche semplicissimi sarebbe impossibile.

    Tipicamente, una funzione riceve dei dati in ingresso e ne fornisce un in uscita, come per esempio:

    valoreDiRitorno funzione (tipoDato1,tipoDato2,...)
    int isalnum (char)

    questa funzione chiede un carattere e restituisce un intero.
    Esistono delle funzioni che non ricevono o non restituiscono dati e sono dichiarate in questo modo:

    void stampaBenvenuto ()

    Una volta chiamata dal tuo programma, una funzione di questo tipo esegue le istruzioni che le sono assegnate risparmiandoti qualche linea di codice e rendendo più chiaro il ruolo di quelle linee di codice.
    Le funzioni che restituiscono un valore possono essere trattate come una costante del tipo che restituiscono, per cui puoi assegnarle ad una variabile dello stesso tipo; mi spiego meglio


    int dimmiSeSonoUnaCifra (char ); //dichiaro una funzione
    int sonoUnaCifra; //dichiaro un intero

    sonoUnaCifra= dimmiSeSonoUnaCifra ('a'); /* assegno il ritorno della funzione alla variabile */

    Le funzioni devono essere dichiarate prima di poter essere usate.
    Se una funzione appartiene ad una libreria includo la libreria apposita:

    #include <libreria.h>

    ad esempio, se voglio usare la funzione getchar(), devo includere la libreria stdio.h in testa al codice.

    Le funzioni create dal programmatore devono essere dichiarate prima, in uno di questi due modi:

    modo 1: scrivo la funzione prima del main

    void stampaBenvenuto () {
    printf ("benveuto!\n");
    }

    int main (){
    stampaBenveuto();
    exit(0);
    }

    modo 2: dichiaro il prototipo e scrivo la funzione dopo

    int dimmiSeValgoAbbastanza (int );

    int main (){
    int valore = 9;
    int sonoUnaCifra;

    sonoUnaCifra= dimmiSeValgoAbbastanza (carattere );
    }

    int dimmiSeValgoAbbastanza (int valore){
    if (valore > 10)
    return 1;
    else
    return 0;
    }

    Le funzioni utilizzano l'istruzione speciale return per ritornare un valore.
    Le funzioni utilizzano al loro interno delle variabili locale, che non hanno nulla a che fare con quelle dichiarate nel main.
    Le variabili usate all'interno della funzione muoiono subito dopo la return.

    Spero di aver condensato abbastanza i principi alla base delle funzioni.

    a presto

  6. #6
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772
    Originariamente inviato da ibykos
    variabili usate all'interno della funzione muoiono subito dopo la return.
    void foo(){
    static int x = 0;
    int *y = (int *)malloc(sizeof(int));
    }


    Avrei qualche dubbio sul fatto che x ed y muoiano.

    p.s. però nn gli hai detto la cosa piu carina: puntatori a funzione
    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da infinitejustice
    void foo(){
    static int x = 0;
    int *y = (int *)malloc(sizeof(int));
    }


    Avrei qualche dubbio sul fatto che x ed y muoiano.
    Beh ... x va bene ... ma y non solo muore ma crea un bel po' di memory leak ... ... o intendevi altro ...?

  8. #8
    Utente di HTML.it L'avatar di ibykos
    Registrato dal
    Feb 2005
    Messaggi
    201
    Ragassuoli, se vi mettete subito a fare i difficili il nostro neofita rischia di perdersi.

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Concordo ... bisogna essere semplici e precisi ...

  10. #10

    Re: [C]Mi sono bloccato

    Originariamente inviato da kaiser89
    Gentili utenti,
    sto studiando il C e sono arrivato alle funzioni, ma da qui in poi non ci capisco piu' niente, quindi a meno che qualcuno di voi non me le voglia spiegare passo dopo passo, mi sapete consigliare una guida che mi permetta di comprenderle facilmente.
    Vi ringrazio in anticipo
    Sai cos'è una funziona in matematica ? Penso di si.. una funzione è un espressione composta da 2 variabili x e y , una dipendente dall'altra. Ad esempio

    y= 2x +6

    a seconda del valore di x (valore di input) si ottiene un diverso valore di 7 (valore di ritorno) Se x=o , y=6 , se x=1,y=8 e così via...

    Ora arriviamo al C

    Dal momento che lo stai studiando avrai sicuramente usato le funzioni main (), printf () , scanf () e magari qualcuna d'altra.

    Queste sono funzioni predefinite,che fanno parte della libraria standard e che sono contenute nei vari headers (stdio.h,stdlib.h,math.h,string.h,etc etc)

    Queste funzioni sono parecchie ma naturalmente non infinite ! Per quanto aiutino a risolvere numerosi problemi , ad un certo punto è necessario per il programmatore crearsi le proprie funzioni personalizzate.

    Ed è molto facile ! Supponiamo di voler creare una funzione che accetta come parametri 2 interi e ne restituisce la somma :

    codice:
    int somma {int num1,num2)
    
    {
    
    sum=num1+num2 ;
    return sum ;
    
    }
    è semplice :

    int somma --> il nome che dai alla funzione - int è il tipo che restituisce

    (int num1,num2) --> i parametri che accetta

    return sum --> è il valore di ritorno (in questo casu la somma)

    Chiaro ?
    Una volta scritta questa funzione è come se avessi arricchito il C di un nuovo comando, che puoi utilizzare a tuo piacimento . Ad esempio

    codice:
    printf (somma(10,5)) ; // Stampa "15"
    Naturalmente questo è un esempio stupido , è uno spreco di tempo creare una funzione che fa la somma...è solo per farti capire

    Spero di essere stato chiaro (purtroppo penso di no - spiego da cani)
    Vinum dolce gloriosum
    pingue facit et carnosum
    Vinum forte,vinum purum
    reddit hominem securum

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.