Skip to content

Latest commit

 

History

History
571 lines (442 loc) · 10.5 KB

slides.md

File metadata and controls

571 lines (442 loc) · 10.5 KB
theme layout title highlighter class info lineNumbers download fonts
default
cover
La programmazione in C
shiki
text-center
La programmazione in C
true
true
sans serif mono
Roboto
Roboto Slab
Fira Code

La programmazione in C


Sommario

  • L'ambiente online Replit
  • La struttura di base dei programmi in C
  • I tipi di dati fondamentali
  • Variabili
  • Costanti

L'ambiente online Replit

<style> img{ margin: auto; width: 90%; } </style>

La struttura di base dei programmi in C

L'esempio mostra la struttura di un tipico programma in C.

L'istruzione int main(void) dichiara una funzione che non è di una libreria: infatti main è la funzione principale, che dev'essere presente in ogni programma in C.

#include <stdio.h>

int main(void) 
{ 
  int eta; 
  char pokemon[] = "Bulbasaur";
  eta = 6;

  printf("Il mio pokemon preferito è: %s", pokemon);
  printf(", da quando avevo %d anni.\n", eta);

  return 0;
}

clicks: 3

La struttura di base dei programmi in C

Un programma si compone di tre parti fondamentali:

  #include <stdio.h>

  int main(void) 
  { 
    int eta;  
    char pokemon[] = "Bulbasaur";
    eta = 6;

    printf("Il mio pokemon preferito è: %s", pokemon);
    printf(", da quando avevo %d anni.\n", eta);

    return 0;
  }
  1. Librerie
  2. Main
  3. Corpo del programma

Ogni istruzione deve terminare con il punto e virgola (;).


I tipi di dati fondamentali

graph TD
    A[Tipi di dato]
    A --> B(Interi)
    A --> C(Reali)
    A--> D(Caratteri)
    B--> E(int, short, long)
    C--> F(float, double, long double)
    D--> G(char)
Loading

Interi

con segno (signed)

Tipo N° bit Minimo Massimo
short 16 -32 768 +32 767
int 32 -2 147 483 648 +2 147 483 647
long 64 -9.223372e+18 +9.223372e+18

Interi

senza segno (unsigned)

Tipo N° bit Minimo Massimo
unsigned short 16 0 65 5365
unsigned int 32 0 4 294 967 295
unsigned long 64 0 circa 1.84e+19

Reali

senza segno (unsigned)

Tipo N° bit Cifre significative
float 32 6-7
double 64 15-16
long double 128 ?

Caratteri

Una variabile char occupa 8 bit di memoria.

<style> img{ margin: auto; width: 80%; } </style>

Caratteri

#include <stdio.h>

int main(void) 
{
  char var1 = 'A';
  char var2 = 65;

  printf("Le due variabili hanno lo stesso contenuto!\n");
  printf("Contenuto di var1: %c\n", var1);
  printf("Contenuto di var2: %c\n", var2);
    
  return 0;
}

Variabili

Una variabile è un'area di memoria nella RAM caratterizzata da:

  • tipo
  • nome (identificatore)

Dichiarazione

Per poter utilizzare una variabile è necessario dichiararla, ovvero comunicare al compilatore che si intende utilizzare un dato di un certo tipo.

int numero, x, y;
float temperatura;
char car;

Inizializzazione

All'atto della dichiarazione, è possibile assegnare un valore alle variabili. (consigliato)

int numero, x = 0, y = 0;

Variabili

Altre operazioni:

Assegnazione di un valore

numero = 666; 🤟😈

Assegnazione di una variabile

numero = x;

Assegnazione di un'espressione

numero = 666 / 2;
y = numero + x;

È possibile eseguire operazioni arimetiche solo tra variabili dello stesso tipo, altrimenti il compilatore ci segnalerà un errore (studieremo più avanti alcune eccezioni!).


Identificatori

Alcune regole da rispettare per scegliere i nomi delle variabili/costanti.

Un identificatore può essere composto da:

  • lettere maiuscole e minuscole
  • numeri
  • simbolo di underscore
Pippo, x1, x2, mano_dx, mano_sx


Un identificatore non può:

  • iniziare con un numero
  • essere una parola chiave del linguaggio C (es: main, return ...)
10_x, main, return, ❌

Il linguaggio C è sensibile alle maiuscole/minuscole, quindi l'identificatore id è diverso da ID.


Calcolo dell'area di un rettangolo

#include <stdio.h>

int main(void) 
{
  float area;
  float base;
  float altezza;

  base = 3;
  altezza = 5;
  area = base * altezza;
  
  printf("Area rettangolo: %f\n", area);
    
  return 0;
}

clicks: 6

Cenni sulla funzione printf

Ci permette di comunicare in output (sulla console) i risultati dell'elaborazione.

#include <stdio.h>

int main(void) 
{
  int i = 2;
  float r = 7.8;
  char car = '@';

  printf("Questa è una stringa 123@! \n");
  printf("Numero intero: %d \n", i);
  printf("Numero reale: %f \n", r);
  printf("Nome: %s \n", "Salvo");
  printf("Carattere: %c \n", car);
  
  
  return 0;
}
  • stringa di caratteri
  • %d per stampare un intero
  • %f per stampare un reale
  • %c per stampare un carattere
  • %s per stampare una stringa
  • \n per andare a capo

Scambio di variabili

int main(void) 
{
  float a = 3;
  float b = 5;
  float temp;
  
  printf("Valore a prima: %f \n", a);
  printf("Valore b prima: %f \n", b);
  
  temp = a;
  a = b;
  b = temp;
  
  printf("Valore a dopo: %f \n", a);
  printf("Valore b dopo: %f \n", b);
  
  return 0;
}

Costanti

Una costante è un'area di memoria nella RAM che identifica dati che non possono essere modificati.

Nel linguaggio C esistono due modi per definire una costante:

  • attraverso la parola chiave const
  • attraverso la direttiva al preprocessore #define

Nel primo caso, la costante viene vista come una "variabile con valore fisso".

Nel secondo caso, il compilatore sostituirà a tutte le occorrenze dell'identificatore il valore associato, senza che vi sia alcuna locazione di memoria associata alla costante.


clicks: 2

Area del cerchio

#include <stdio.h>

int main(void) 
{
  const float PIGRECO = 3.1415;
  float raggio = 5;
  float area;
  
  area = raggio * raggio * pigreco;
  printf("Area del cerchio: %f \n", area);

  return 0;
}
  • const per definire una costante
  • convenzione: costanti con identificatori maiuscoli


clicks: 2

Area del cerchio

#include <stdio.h>
#define PIGRECO 3.1415

int main(void) 
{
  float raggio = 5;
  float area;

  area = raggio * raggio * PIGRECO;
  printf("Area del cerchio: %f \n", area);

  return 0;
}
  • define per definire una costante
  • convenzione: costanti con identificatori maiuscoli


Operatori aritmetici

Operatore Esempio Significato
+ a + b Somma tra a e b
- a - b Differenza tra a e b
* a * b Moltiplicazione tra a e b
/ a / b Divisione tra a e b
% a % b Resto della divisione intera tra a e b