Home Reti Neurali Machine Learning Gamification su Linux Informatica Quantistica
chiccheDiC

Esempi semplici e mirati.

Le Chicche di C sono alla portata di tutti.
Una guida per imparare i fondamenti di C a partire da zero.

Come fare:

Chicca 1: Variabili

Assegnamento, somma e stampa

/** USO DELLE VARIABILI */
#include <stdio.h>
int main()
{
  int a = 2;
  int b = 3;
  int c;
  c = a + b;
  printf("Risultato somma %d\n",c);
}

Chicca 2: Floating-point

Assegnamento, moltiplicazione e stampa
Come definire macro con la direttiva #define

/** CALCOLO CIRCONFERENZA E AREA CERCHIO */
#include <stdio.h>
#define pi 3.14159265
int main()
{
  float raggio = 5;
  float circ, area;
  circ = 2 * pi * raggio;
  area = raggio * raggio * pi;
  printf("Raggio %f\nCirconferenza %f\nArea %f\n",raggio, circ, area);
}

Chicca 3: Costrutto if-else

Verificare una condizione: costrutto if else

/** VERIFICA SE UN NUMERO E` PARI */
#include <stdio.h>
int main()
{
  int n=7;
  int resto=n%2; //Il resto di n/2
  if(resto == 0)
    printf("%d e`pari\n",n);
  else
    printf("%d e`dispari\n",n);
}

Chicca 4: Array - elementi

Array: riempimento diretto di un array di interi
selezione di un elemento e stampa

/** GLI ELEMENTI DELL'ARRAY */
#include <stdio.h>
int main()
{
  int array[] = {10, 30, 25, 2, 44};

  /* stampa di un singolo elemento */
  printf("elemento in posizione 0 : %d\n", array[0]);
  printf("elemento in posizione 3 : %d\n", array[3]);
}

Chicca 5: Iterazione determinata

Iterazione determinata: riempimento e stampa di un array utilizzando il ciclo for
Definire macro con la direttiva #define

/** RIEMPI E STAMPA L'ARRAY CON UN CICLO FOR */
#include <stdio.h>
#define DIM 10
int main()
{
  int array[DIM];
  int i;

  /* riempimento array */
  for(i=0; i<DIM; i++)
    array[i] = i+1;

  /* stampa array */
  for(i=0; i<DIM; i++)
    printf("%d ",array[i]);
  printf("\n");
}

Chicca 6: Array - copia

Array: creare una copia di un array di floating-point

/** COPIA UN ARRAY DI FLOATING POINT */
#include <stdio.h>
#define DIM 5
int main()
{
  float a[DIM], copia_a[DIM];
  float el = 2.5;
  float temp = 0;
  int i;

  /* riempimento array a */
  for(i=0; i<DIM; i++)
    {
      temp += el;
      a[i] = temp;
    }

  /* stampa di copia_a */
  printf("Array a:\n");
  for(i=0; i<DIM; i++)
    printf("%f ", a[i]);
  printf("\n");

  /* copia di a in copia_a */
  for(i=0; i<DIM; i++)
    copia_a[i] = a[i];

  /* stampa di copia_a */
  printf("Array copia_a:\n");
  for(i=0; i<DIM; i++)
    printf("%f ", copia_a[i]);
}

Chicca 7: Array - ricerca elemento

Array e iterazione: ricerca di un elemento all'interno dell'array
Utilizzo dell'operatore '!' per la negazione
Utilizzo dell'operatore '&&' per l'and logico
Utilizzo dell'operatore '==' per il confronto

/** RICERCA L'ELEMENTO */
#include <stdio.h>
#define DIM 5
int main()
{
  int array[] = {10, 30, 25, 2, 44};
  int i = 0;
  int trovato = 0;
  /* ricerca se esiste il numero 25 in array */
  while(!trovato && i<DIM)
    {
      if(array[i] == 25)
        trovato = 1;
      else
        i++;
    }
  if(trovato)
    printf("Trovato 25, indice : %d\n", i);
}

Chicca 8: Array - ricerca massimo

Array e iterazione: ricerca del numero maggiore all'interno dell'array
Utilizzo dell'operatore '>' per il confronto

/** RICERCA L'ELEMENTO MASSIMO */
#include <stdio.h>
#define DIM 5
int main()
{
  int array[] = {10, 30, 25, 2, 44};
  int i;
  int ind_max = 0;

  /* ricerca del massimo */
  for(i=0; i<DIM; i++)
    {
      if(array[i] > array[ind_max])
        ind_max = i;
    }

  printf("Trovato massimo : %d, indice : %d\n",array[ind_max], ind_max);
}

Chicca 9: Stringhe

Stringhe: riempimento e stampa
Il terminatore '\0'
Utilizzo degli apici singoli e doppi

/** RIEMPI UNA STRINGA */
#include <stdio.h>
int main()
{
  /* riempimento per singole componenti */
  char s1[5] = {'c', 'i', 'a', 'o', '\0'};

  /* riempimento in forma compatta */
  char s2[6] = "Mondo";

  /* stampa */
  printf("%s %s!\n", s1, s2);
}

Chicca 10: Struct

Struct: costruzione, riempimento e stampa
Selezione di un campo della struct

/** SELEZIONA LE COORDINATE */
#include <stdio.h>
int main()
{
  struct punto
    {
      int ascissa;
      int ordinata;
    };

  struct punto p1, p2;

  /* riempimento campi struct */
  p1.ascissa = 2;
  p1.ordinata = 6;
  p2.ascissa = 5;
  p2.ordinata = 3;

  /* stampa */
  printf("p1 si trova in (%d, %d)\n", p1.ascissa, p1.ordinata);
  printf("p2 si trova in (%d, %d)\n", p2.ascissa, p2.ordinata);
}