Home

IN EVIDENZA

C

2.2 - Ricorsione

In questo esempio vediamo, invece, come sia possibile effettuare una chiamata ricorsiva ad una funzione.
La funzione "factorial" richiama se stessa finchè il numero a parametro non diventa 1.

Code:

/* Funzione Fattoriale Ricorsiva */
#include 

long factorial(long);

main()
{
      int i;      
      for (i = 1; i <= 10; i++)
      {
          printf("%2d! = %d\n", i, factorial(i));
      }      
      return 0;
}

long factorial(long number)
{
     if (number <= 1)
        return 1;
     else
        return (number * factorial(number - 1));
}


Ultimo aggiornamento 14/04/2023 16:44:35
Fondamenti

Il computer capisce solo 10 numeri.

Avrete visto un sacco di volte il famoso meme: "al mondo ci sono 10 tipi di persone: chi capisce il sistema binario e chi no".

I computer fanno parte della prima categoria.

Certo, io accendo il mio PC e posso usare la mia bellissima "calc.exe" e fare tutte le operazioni del mondo, ma se per me "utente" è visibile 6*5 = 30, la macchina, dietro le quinte, deve ragionare con il poco che ha a disposizione.
Quel poco, negli anni, è diventato moltissimo, esageratamente molto, ma questo molto non è altro che una potenza con grandissimo esponente e base piccolissima, la più piccola base possibile: 2.


Leggi tutto
Ultimo aggiornamento 14/04/2023 16:27:11
C

2.1 - Visibilità

Un aspetto molto importante, non solo per il C, ma per tutti i linguaggi di programmazione, è capire bene la visibilità delle variabili all'interno delle singole porzioni di codice (tra cui appunto, le funzioni).
Nell'esempio qui sotto vediamo definite 3 funzioni (a, b e c) e dichiarata una variabile "globale" (x). Queste dichiarazioni vengono inserite prima (e fuori) del metodo "main".
Nella main è poi definita un'altra variabile x che questa volta è "locale" (locale del metodo main), viene inserita una porzioni di codice all'interno di parentesi graffe, stabilendo una nuova "visibilità".
Infine viene di nuovo definita una variabile x all'interno dell'implementazione delle funzioni.
Enjoy!

Code:

/* Un esempio di visibilità */
#include <stdio.h>

void a(void);
void b(void);
void c(void);

int x = 1;  // Variabile Globale

main()
{
      int x = 5;  // Variabil Locale
      printf("Variabile Locale x in tutta main(): %d\n", x);
      
      {    // Porzione con nuova visibilità
          int x = 7;
          printf("Variabile Locale x in una porzione di main(): %d\n", x);
      }
      
      printf("Variabile Locale x in tutta main(): %d\n", x);
      
      a();  // var x locale automatica
      b();  // var x locale statica
      c();  // usa la var x globale
      a();  
      b();
      c();
      
      printf("Variabile Locale x nella main(): %d\n", x);
      return 0;
}

void a(void)
{
     int x = 25;
     printf("\nVariabile Locale x e' %d alla chiamata di a\n", x);
     ++x;
     printf("Variabile Locale x e' %d all'uscita da a\n", x);
}

void b(void)
{
     static int x = 50;
     printf("\nVariabile Locale Statica x e' %d alla chiamata di b\n", x);
     ++x;
     printf("Variabile Locale Statica x e' %d all'uscita da b\n", x);
}

void c(void)
{
     printf("\nVariabile Globale x e' %d alla chiamata di c\n", x);
     x *= 10;
     printf("Variabile Globale x e' %d all'uscita da c\n", x);
}


Ultimo aggiornamento 09/09/2022 12:26:15