Guida Corso programmazione linguaggio C - Lezione #6 : Primo programma + funzioni di I/O + array

giovy2707

Utente Silver
27 Giugno 2019
76
31
58
97
Ultima modifica:
LEZIONE X IMMAGINE.png



LEGGI QUESTO PRIMA DI CONTINUARE

Se non hai già letto le avvertenze/istruzioni presenti nella LEZIONE 1 ti invito a leggerle (puoi farlo da questo link: Lezione 1 ) , ho evitato di fare copia e incolla delle varie avvertenze/istruzioni poiché mi sembrava inutile aggiungere a ogni post tutto quel testo.

FILE ZIP DEL CORSO :

Vedi: https://drive.google.com/file/d/1sPuNna2S3b0sqmFHK448j4vKg1MVUlSM/view?usp=sharing





NOTA PER I LETTORI: Oramai si sa che a ogni lezione di questo corso c'è sempre una nota per il lettore dove mi scuso per il ritardo :asd:, e anche per questa lezione mi spiace per il ritardo, comunque penso che tornerò a pubblicare di nuovo almeno una lezione a settimana in modo stabile e farò anche delle modifiche alle precedenti lezioni seguendo i suggerimenti che mi sono stati dati dagli utenti.


Abbiamo visto un pò di istruzioni e operatori fondamentali in C, ma è ora di passare a qualcosa di più pratico.


1 - Operazioni preliminari

  1. Crea un file con estensione .c
    1. Crea un file di testo e cambia la parte finale del nome del file (dovrebbe essere ".txt") da ".txt" a ".c"
      1. Se non visualizzi l'estensione del file allora devi disabilitare la funzione che nasconde le estensioni dal tuo file explorer o sistema operativo . (Se non sai come si fa ti lascio qualche link).
  2. Apri il file nell'editor di testo o IDE che hai scelto.

  3. Copia e incolla il seguente codice:

C:
#include <stdio.h>

int main()
{
    return 0;
}


2 - include e stdio

La stdio (standard i/o) è una libreria standard del C (viene fornita insieme con il compilatore), essa permette di utilizzare diverse funzioni di input e output come:

  • printf (output)
  • scanf (input)

non approfondirò troppo questo argomento perché le librerie sono un argomento che introdurrò più avanti, tuttavia ti basti sapere che una libreria è un file che contiene codice (nel nostro caso probabilmente codice C), soprattutto che contiene funzioni (di cui parleremo in futuro), che puoi sfruttare nei tuoi programmi.

Per esempio printf e scanf (di cui ti parlerò tra poco) sono definite nella libreria stdio, senza questa libreria non potremmo usare queste utilissime funzioni, e quindi dovremmo crearle da 0 (cosa che è tutt'altro che banale).

Per usare una libreria (e di conseguenza poter usare le funzioni che mette a disposizione) si usa la seguente istruzione:

C:
#include <nome_libreria> //se volgiamo usare librerie standard
 
#include "percorso_file_libreria" //se volgiamo usare librerie non standard

1668188402304.png


3 - int main

Anche qui non approfondirò molto poiché ne parlerò meglio quando si parlerà di funzioni, tuttavia per il momento quello che dobbiamo sapere è :
  • La funzione con nome "main" che si presenta di solito con la sintassi:
C:
int main()
{
    return 0;
}
  • è praticamente il nostro programma, tutte le istruzioni che vogliamo vengano eseguite devono essere scritte tra le parentesi graffe del main:
C:
int main()
{
    int a;
    printf("Hello world");
 
    return 0;
}

  • Le istruzioni vengono eseguite dall' alto verso il basso (se non ci sono particolari istruzioni), quindi in questo caso verrà prima dichiarata la variabile e poi eseguita la funzione printf.
1668188432168.png


4 - Printf


Per stampare a schermo qualcosa si usa la funzione printf:

C:
printf("messaggio",espressione);

1668188481979.png


La printf permette di:
  • mostrare messaggi a schermo:
C:
printf("messaggio da stampare");
1668188507428.png

  • mostrare contenuto di variabili:
C:
printf("il valore della variabile è: %specificatore_formato", variabile);
1668188531046.png

  • mostrare risultato di espressioni:
C:
printf("risultato: %specificatore_formato", variabile+variabile2);


4.1 - Specificatori di formato

Gli specificatori di formato sono usati dalla printf e da altre funzioni e specificano il tipo di un dato che andremo ad usare:

  • Per dire alla printf che deve stampare il valore di una variabile intera allora dovremo usare lo specificatore "%d" che è quello usato per gli interi.
C:
printf("Il valore della variabile è: %d", variabile);
  • Per dire alla printf che deve stampare il valore di una variabile char allora dovremo usare lo specificatore "%c" che è quello usato per i caratteri.
C:
printf("Il valore della variabile è: %c", variabile);

1668188586300.png


Qui puoi trovare una lista dei possibili specificatori di formato (quelli più usati):

1668190107705.png


per una lista più dettagliata ti rimando a fonti esterne:

1668188665835.png


LINK:

È anche possibile usare più specificatori di formato alla volta:

C:
variabile 1 = 10;
variabile 2 = 20;

printf("Valore 1:%d Valore 2: %d",variabile,variabile2);

//risultato: Valore 1:10 Valore 2:20


4.2 - Sequenze di escape

La printf permette di stampare anche caratteri speciali che ci permettono di formattare il testo:

1668190207760.png


per una lista più dettagliata ti rimando a fonti esterne:

1668188717825.png


LINK:

5 - Scanf

La scanf ci permette di prendere dati in input dalla tastiera:

C:
scanf("%specificatore_formato", &variabile);

1668188765048.png


La scanf per essere usata richiede che indichiamo:
  • il tipo di dato che riceveremo da tastiera (tramite lo specificatore di formato)
  • l'indirizzo di memoria in cui salvare il dato (se vogliamo salvare il dato in una variabile allora dobbiamo inserire dopo la "&" il nome della variabile ).
La scanf prende in input ciò che viene digitato da tastiera dall'utente e si ferma quando incontra un "\\n" cioè un ritorno a capo.

1668188786232.png


La scanf prende in input ciò che viene digitato da tastiera dall'utente e si ferma quando incontra un "\n" cioè un ritorno a capo.

1668189464731.png



6 - Primo programma in C

Sulla base di quello che abbiamo imparato finora creiamo ora un programma che prende due numeri da tastiera e stampa la relativa somma:

C:
#include <stdio.h>

int main()
{
    int a,b;
 
    printf("Inserisci il primo numero:");
    scanf("%d",&a);
 
    printf("\nInserisci il secondo numero:");
    scanf("%d",&b);
 
    printf("\nrisultato: %d",a+b);
 
    return 0;
}


7 - Commenti

I commenti all'interno del codice sono uno degli strumenti più utili per i programmatori, infatti essi sono ottimi per annotare informazioni,promemoria,indicazioni sul funzionamento di un pezzo di codice ecc... e tutto questo all'interno del codice stesso.

I commenti non sono considerate istruzioni da eseguire, quindi il compilatore le ignorerà.

Per inserire un commento all'interno del codice possiamo usare due sintassi:

- inline (su una sola riga)

7 - Commenti

I commenti all'interno del codice sono uno degli strumenti più utili per i programmatori, infatti essi sono ottimi per annotare informazioni,promemoria,indicazioni sul funzionamento di un pezzo di codice ecc... e tutto questo all'interno del codice stesso.

I commenti non sono considerate istruzioni da eseguire, quindi il compilatore le ignorerà.

Per inserire un commento all'interno del codice possiamo usare due sintassi:

- inline (su una sola riga)

1669301137467.png


- multi-riga (cioè possiamo scrivere il commento su più righe)

1669301163922.png


1669301221504.png



8 - Indentazione del codice

Quando scrivi del codice è buona norma indentarlo, cioè aggiungere degli spazi (2 o 4) prima dell'inizio dell'istruzione quando essa è contenuta in qualcosa, sia essa una funzione o qualsiasi particolare istruzione che richiede l'uso delle parentesi graffe (tra poco vedremo qualche esempio e nelle pros.

Generalmente si usa il TAB o "tabulazione" che è un pulsante che si trova sulla tastiera che inserisce 4 spazi.

Se usate una tastiera con layout italiano allora lo trovate affianco ai tasti "Q,W,E,R,T,Y" se invece avete un layout non italiano la posizione sarà probabilmente la stessa ma i tasti affianco saranno diversi.

1669301350862.png


Usare i TAB aiuta rendere più leggibile il codice , per farvi capire quanto sia utile vi farò vedere un programma con molte linee di codice con e senza indentazione:

1669301526506.png

1669301570472.png



9 - Tipi Scalari

Fino ad ora abbiamo lavorato con variabili che ci permettevano di contenere un valore, che poteva cambiare rimanendo però dello stesso tipo della variabile, questo tipo di variabili viene detto scalare.


10 - Tipi aggregati

Adesso inizieremo a parlare dei tipi aggregati che ci permettono di creare una variabile che può contenere più valori dello stesso tipo, quindi un'aggregazione di valori.


11 - Array monodimensionali

Un array (anche detto vettore) è un'insieme di dati, tutti dello stesso tipo, che sono ordinati in memoria uno dopo l'altro.

Tale gruppo di dati è identificato univocamente con un nome (proprio come avviene per le normali variabili).

1668189527764.png


ora vediamo come dichiarare un'array monodimensionale:

C:
data-type identificatore [ nr.elementi ];

ad esempio:

C:
int array [12]; //abbiamo creato un'array di 12 elementi che si chiama array.

Ora non ci resta che inizializzarlo, e possiamo farlo in questi modi:

C:
int array [12] = { 0,1,2,3,4,5,6,7,8,9,10,11 };

//oppure

int array [] = { 0,1,2,3,4,5,6,7,8,9,10,11 };

è possibile anche dichiarare e inizializzare array costanti:

C:
const data-type identificatore [ nr.elementi ];

const int array [] = { 0,1,2,3,4,5,6,7,8,9,10,11 };


11.1 - Lettura array monodimensionale

Per accedere ai valori contenuti in un array usiamo l'indice:

1668189575453.png


l'indice ci permette di accedere ai valori presenti nel vettore, il valore dell'indice indica la posizione dell'elemento all'interno del vettore (partendo da 0).

1668189646019.png


11.2 - Scrittura in un array monodimensionale

Per la scrittura di un valore all'interno di un array si usa la seguente sintassi:

C:
array[indice] = valore_da_assegnare;

1668189666501.png



12 - Inizializzatori designati

A partire dalla versione C99 è possibile usare i valori designati, che ci permettono di specificare esplicitamente in quale posizione salvare un valore all'interno di un array.

1668189724891.png
 

Allegati

  • 1668189433082.png
    1668189433082.png
    14.4 KB · Visualizzazioni: 2

giovy2707

Utente Silver
27 Giugno 2019
76
31
58
97
Cosa è successo alle lezioni? Perché non vengono più pubblicate?

Purtroppo la causa è data dalla combinazioni di tanti eventi, di conseguenza per il momento la pubblicazione delle lezioni è in pausa.

Tornerai a pubblicare le lezioni?
Si, continuerò a pubblicare le lezioni, per il momento il corso è solo in pausa.


Se proprio volete una data vi posso dire mese di Marzo, lo so che manca abbastanza al mese di Marzo, ma in quel mese sono abbastanza sicuro di poter portare le lezioni con più regolarità.
Ma non è tutto, ho in mente di iniziare daccapo l'intero corso, per aumentare la qualità generale e anche perché abbiamo in programma (io e gli altri membri di OtakuTech) di espanderci su youtube e lì potrò portarvi anche una versione video di questo corso, con la stessa filosofia, cioè tutto il materiale deve essere usufruibile alla community.