Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [c] parametri nelle funzioni

    Salve inanzitutto mi presento visto che sono nuovo...sono vincenzo e ho 17 anni...da poco mi sono cimentato nel campo della programmazione quindi posso capire che per alcuni forse sarà banale la mia richiesta...
    nei miei programmi quando dichiaro la funzione mi sembra che mettere oppure no i parametri sia la stessa cosa....ecco un esempio
    in questo programma ho provato a togliere e a mettere i parametri nella funzione "quadrato" ma il risultato e lo stesso.
    Forse servono solo quando vogliamo distinguere i parametri formali da quelli "attuali"??(non ricordo come è la giusta traduzione) oppure quando voglio cambiare il loro valore nel corpo principale con i puntatori?
    ho preso il programma più semplice per semplificare la lettura a coloro che vorranno aiutarmi
    da cosi
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    long quadrato(long);
    
    long x,y;
    
    int main()
    {
        printf("Inserisci un intero: ");
        scanf("%1d",&x);
        y=quadrato(x);
        printf("Il quadrato di %ld e' %ld \n",x,y);
    
        system("PAUSE");
    }
    
    long quadrato(long x)
    {
        y = x * x;
    }
    a cosi
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    long quadrato();
    
    long x,y;
    
    int main()
    {
        printf("Inserisci un intero: ");
        scanf("%1d",&x);
        y=quadrato();
        printf("Il quadrato di %ld e' %ld \n",x,y);
    
        system("PAUSE");
    }
    
    long quadrato()
    {
        y = x * x;
    }

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Dichiari x e y come globali per cui sono accessibili da tutti i punti del programma (dopo la loro dichiarazione), quindi anche all'interno delle funzioni. Prova a spostare le loro dichiarazioni nel main e a ricompilare!

    P.s. Dovresti ottenere due warning in compilazione che ti dicono che le funzioni quadrato e main dovrebbero ritornare un valore che non ritornano. Non vanno ignorati!

    P.p.s. usa i tag CODE per il codice!
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  3. #3
    ah si ora ho capito...ti ringrazio...ma quindi la differenza è solo di tipo teorica??? in pratica non cambia nulla??
    ce io potrei o decidere di tenere le variabili locali nel main e quindi dover usare i parametri ma posso anche decidere di usare le variabili globali e risparmiare quindi di scrivere i parametri???

    Comunque eseguendo quello che hai detto tu la variabile x(messa tra i parametri) me la riconosce ma per fargli riconoscere anche la y??? (senza dover creare una variabile locale nella funzione al posto di y)

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Originariamente inviato da vincy1097
    ah si ora ho capito...ti ringrazio...ma quindi la differenza è solo di tipo teorica??? in pratica non cambia nulla??
    ce io potrei o decidere di tenere le variabili locali nel main e quindi dover usare i parametri ma posso anche decidere di usare le variabili globali e risparmiare quindi di scrivere i parametri???
    Le variabili globali non fanno altro che creare problemi e complicare il codice perchè ogni modifica ad una variabile globale è un effetto che non puoi prevedere chiamando la funzione, ma che devi considerare! Inoltre se tu volessi applicare la tua funzione a una variabile z non potresti perchè la funzione usa implicitamente x e y.
    Considera poi che nei parametri hai una copia del valore con cui la funzione è stata chiamata, mentre così modifichi sempre e solo la y globale usando la x globale. Quindi no, non è la stessa cosa e non è solo questione di stile!
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  5. #5
    cosi funziona ad esempio(mettendo la z)

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    long quadrato(long);
    
    int main()
    {
    long x,y;
    printf("Inserisci un intero: ");
    scanf("%ld",&x);
    y=quadrato(x);
    printf("Il quadrato di %ld e' %ld \n",x,y);
    
    system("PAUSE");
    }
    
    long quadrato(long x)
    { int z;
    z = x * x;
    return z;
    }
    con o senza return



    e comunque io so che le variabili coinvolte nelle funzioni(che siano parametri o direttamente variabili globali) vengono modificate solo nella funzione ad eslusione del valore di ritorno ovviamente, e il valore che assumono nella funzione non viene considerato nel corpo principale se non tramite puntatori...mi sbaglio?
    quindi cosa cambierebbe se io modificassi una variabile globale o una locale(nel main)?

  6. #6
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da vincy1097
    con o senza return
    Come fa a funzionarti senza return?

    Originariamente inviato da vincy1097
    e comunque io so che le variabili coinvolte nelle funzioni(che siano parametri o direttamente variabili globali) vengono modificate solo nella funzione
    No. Una variabile globale quando viene modificata, indipendentemente da chi/dove/quando/perché.. viene modificata, punto! Da quel punto in avanti tutti vedranno il valore aggiornato della variabile!
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  7. #7
    credo sia implicito in quel caso...visto che c'é una sola operazione....
    comunque finalmente ho capito l'utilità delle variabili locali nel main...non sono modificabili senza un tuo "esplicito consenso"(puntatori) mentre le globali si....mi hai aperto la mente ahahaha
    grazie mille del tuo aiuto
    un'ultima domanda per vedere se ho capito eheh
    nel caso di questa funzione avrei potuto mettere entrambe le variabili globali e il risultato non sarebbe cambiato(perché la x non subisce una modifica) giusto?

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.