Linguaggio C: Variabili e assegnamento e semplici “comandi...

25
Elementi di Informatica e Programmazione – Università di Brescia 1 Prof. M. Giacomin Linguaggio C: Variabili e assegnamento e semplici “comandi” di I/O Università degli Studi di Brescia Prof. Massimiliano Giacomin

Transcript of Linguaggio C: Variabili e assegnamento e semplici “comandi...

Page 1: Linguaggio C: Variabili e assegnamento e semplici “comandi ...fimec.altervista.org/Informatica_&_Programmazione... · Prof. M. Giacomin Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione – Università di Brescia 1Prof. M. Giacomin

Linguaggio C:Variabili e assegnamento

e semplici “comandi” di I/O

Università degli Studi di Brescia

Prof. Massimiliano Giacomin

Page 2: Linguaggio C: Variabili e assegnamento e semplici “comandi ...fimec.altervista.org/Informatica_&_Programmazione... · Prof. M. Giacomin Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione – Università di Brescia 2Prof. M. Giacomin

#include <stdio.h>

#include <stdlib.h>

int main(int argc, char *argv[])

{

return 0;

}

È troppo presto per spiegare il significato di queste istruzioni...

Un programma “quasi vuoto”

QUI SCRIVEREMOIL PROGRAMMA

Page 3: Linguaggio C: Variabili e assegnamento e semplici “comandi ...fimec.altervista.org/Informatica_&_Programmazione... · Prof. M. Giacomin Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione – Università di Brescia 3Prof. M. Giacomin

#include<stdio.h>#include <stdlib.h>

int main(int argc, char *argv[]){int x;int y,z;

x=4;y=5;z=x+y;x=x+1;x=x+y+z;

printf("Ciao mondo\n");printf(“Il valore di x è %d\n”, x);

return 0;}

Esempio di programma C

Istruzioni

Dichiarazione dellevariabili usate nelprogramma

- Eseguite in sequenza- Terminate da ;

(assunzione iniziale)

Page 4: Linguaggio C: Variabili e assegnamento e semplici “comandi ...fimec.altervista.org/Informatica_&_Programmazione... · Prof. M. Giacomin Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione – Università di Brescia 4Prof. M. Giacomin

Variabili: concetti generali• Una variabile rappresenta uno �spazio� per contenere un valore

NomeValore

TIPO

010101111001100111010111100111110111000000011001110101110001110101100111100110010101000111011000101001111001100101011111100000000101010010011001

LINGUAGGIO C

IMPLEMENTAZ.Indirizzo

(Indirizzo)

Page 5: Linguaggio C: Variabili e assegnamento e semplici “comandi ...fimec.altervista.org/Informatica_&_Programmazione... · Prof. M. Giacomin Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione – Università di Brescia 5Prof. M. Giacomin

Note al lucido precedente

• Caratteristiche “statiche” delle variabili (dal punto di vista del C)

> nome: identifica univocamente la variabile> tipo: identifica i valori che la variabile può assumere

e gli operatori che su di essi possono essere applicati

[P.es. esistono variabili per memorizzare valori numericiinteri, valori numerici reali, dati di una persona, … ]

> indirizzo: trattato in fase più avanzata del corso

• Dal punto di vista dell’implementazione, uno spazio in memoriacon valori esclusivamente binari (che il C interpreta in base al tipo)

Page 6: Linguaggio C: Variabili e assegnamento e semplici “comandi ...fimec.altervista.org/Informatica_&_Programmazione... · Prof. M. Giacomin Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione – Università di Brescia 6Prof. M. Giacomin

Sul tipo di una variabile

Es. una variabile di tipo �int�x

spazio di memoria per contenere un valore intero

operatori disponibili:=, +, -, *, ecc. ecc.

Es. una variabile di tipo �studente�

matricolanomecognomenum_esami

spazio di memoria per

st1operatori disponibili:

=, .

Per ora consideriamo solo variabili di tipo int (intere)

int

studente

Page 7: Linguaggio C: Variabili e assegnamento e semplici “comandi ...fimec.altervista.org/Informatica_&_Programmazione... · Prof. M. Giacomin Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione – Università di Brescia 7Prof. M. Giacomin

Dichiarazione di variabili

int x;Tipo della variabile

Nome della variabile

• Una dichiarazione può anche dichiarare più variabili dello stesso tipo:

int y, z;

• Prima di essere usata, una variabile deve essere dichiarata

<tipo> <identificatore1>, <identificatore2>, … ;

SINTASSI GENERALE

<tipo> <identificatore>;

Page 8: Linguaggio C: Variabili e assegnamento e semplici “comandi ...fimec.altervista.org/Informatica_&_Programmazione... · Prof. M. Giacomin Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione – Università di Brescia 8Prof. M. Giacomin

IDENTIFICATORI

• Nomi usati per identificare le variabili, le funzioni, le macro…

• Sono sequenze di lettere, cifre e “underscore” tali che:- iniziano con una lettera o l’underscore- non sono �keyword� (parole riservate del linguaggio C)

• Gli identificatori sono case-sensitive

Esempi

int un_albero, albero1; // OKint 1albero; // ERRATOint un-albero; // ERRATO (- non è underscore) int Abete, abete; // CORRETTO (due variabili)

// ma non raccomandabile…int int; // ERRATO (keyword)

Page 9: Linguaggio C: Variabili e assegnamento e semplici “comandi ...fimec.altervista.org/Informatica_&_Programmazione... · Prof. M. Giacomin Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione – Università di Brescia 9Prof. M. Giacomin

Assegnamento di variabili• Il valore di una variabile può essere impostato mediante

l’operatore di assegnamento =

• Sintassi:<identificatore> = <espressione>;

- variabile- costante- costruita a partire da variabili e/o costanti mediante operatori. Esempio: x + (3*y)

• Significato dell’operatore di assegnamento:> prima l’espressione viene valutata (viene calcolato un valore)> poi il valore viene assegnato alla variabile a sinistra

Page 10: Linguaggio C: Variabili e assegnamento e semplici “comandi ...fimec.altervista.org/Informatica_&_Programmazione... · Prof. M. Giacomin Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione – Università di Brescia 10Prof. M. Giacomin

1511

x

0

y

5

z

#include<stdio.h>#include <stdlib.h>

int main(int argc, char *argv[]){int x;int y,z;

x=4;y=5;z=x+y;x=x+1;x=x+y+z;

printf("Ciao mondo\n");printf(“Il valore di x è %d\n”, x);

return 0;}

Page 11: Linguaggio C: Variabili e assegnamento e semplici “comandi ...fimec.altervista.org/Informatica_&_Programmazione... · Prof. M. Giacomin Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione – Università di Brescia 11Prof. M. Giacomin

#include<stdio.h>#include <stdlib.h>

int main(int argc, char *argv[]){int x;int y,z;

x=4;y=5;z=x+y;x=x+1;x=x+y+z;

printf("Ciao mondo\n");printf(“Il valore di x è %d\n”, x);

return 0;}

1511

x

0

y

5

z

4

Page 12: Linguaggio C: Variabili e assegnamento e semplici “comandi ...fimec.altervista.org/Informatica_&_Programmazione... · Prof. M. Giacomin Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione – Università di Brescia 12Prof. M. Giacomin

#include<stdio.h>#include <stdlib.h>

int main(int argc, char *argv[]){int x;int y,z;

x=4;y=5;z=x+y;x=x+1;x=x+y+z;

printf("Ciao mondo\n");printf(“Il valore di x è %d\n”, x);

return 0;}

4

x

0

y

5

z

5

Page 13: Linguaggio C: Variabili e assegnamento e semplici “comandi ...fimec.altervista.org/Informatica_&_Programmazione... · Prof. M. Giacomin Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione – Università di Brescia 13Prof. M. Giacomin

#include<stdio.h>#include <stdlib.h>

int main(int argc, char *argv[]){int x;int y,z;

x=4;y=5;z=x+y;x=x+1;x=x+y+z;

printf("Ciao mondo\n");printf(“Il valore di x è %d\n”, x);

return 0;}

4

x

5

y

5

z

9

Page 14: Linguaggio C: Variabili e assegnamento e semplici “comandi ...fimec.altervista.org/Informatica_&_Programmazione... · Prof. M. Giacomin Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione – Università di Brescia 14Prof. M. Giacomin

#include<stdio.h>#include <stdlib.h>

int main(int argc, char *argv[]){int x;int y, z;

x=4;y=5;z=x+y;x=x+1;x=x+y+z;

printf("Ciao mondo\n");printf(“Il valore di x è %d\n”, x);

return 0;}

4

x

5

y

9

z

5

Page 15: Linguaggio C: Variabili e assegnamento e semplici “comandi ...fimec.altervista.org/Informatica_&_Programmazione... · Prof. M. Giacomin Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione – Università di Brescia 15Prof. M. Giacomin

#include<stdio.h>#include <stdlib.h>

int main(int argc, char *argv[]){int x;int y, z;

x=4;y=5;z=x+y;x=x+1;x=x+y+z;

printf("Ciao mondo\n");printf(“Il valore di x è %d\n”, x);

return 0;}

5

x

5

y

9

z

19

Page 16: Linguaggio C: Variabili e assegnamento e semplici “comandi ...fimec.altervista.org/Informatica_&_Programmazione... · Prof. M. Giacomin Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione – Università di Brescia 16Prof. M. Giacomin

Operatori aritmetici per valori interi

• Operatori binari:+ addizione* moltiplicazione- sottrazione/ divisione (intera!)% resto (della divisione intera)

• Operatore unario: segno negativo -

Page 17: Linguaggio C: Variabili e assegnamento e semplici “comandi ...fimec.altervista.org/Informatica_&_Programmazione... · Prof. M. Giacomin Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione – Università di Brescia 17Prof. M. Giacomin

Inizializzazione di variabili

• Nella definizione le variabili possono essere inizializzate conun valore, assegnato loro contestualmente alla creazione

int x=3, y, z=5;

• Osservazione utile per il futuro: inizializzazione ≠ assegnamento!

int x=3; //definizione con inizializzazione

int x; // definizionex=3; // assegnamento

Es. 1

Es. 2

Page 18: Linguaggio C: Variabili e assegnamento e semplici “comandi ...fimec.altervista.org/Informatica_&_Programmazione... · Prof. M. Giacomin Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione – Università di Brescia 18Prof. M. Giacomin

Perché il C impone di dichiarare le variabili prima di usarle?

#include<stdio.h>#include<stdlib.h>

int main(int argc, char *argv[]){int somma;int x, y;

…somme=x+y;…

}

Supponiamo che scrivasomme al posto di somma

In questo caso il compilatore �se ne accorge�,perché somme non è stata dichiarata!

Page 19: Linguaggio C: Variabili e assegnamento e semplici “comandi ...fimec.altervista.org/Informatica_&_Programmazione... · Prof. M. Giacomin Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione – Università di Brescia 19Prof. M. Giacomin

Input/Output

#include<stdio.h>#include <stdlib.h>

int main(int argc, char *argv[]){……x=x+y+z;

printf("Ciao mondo\n");printf(“Il valore di x è %d\n”, x);

return 0;}

Torniamo al programma di esempio…

Ciao mondoIl valore di x è 19

Page 20: Linguaggio C: Variabili e assegnamento e semplici “comandi ...fimec.altervista.org/Informatica_&_Programmazione... · Prof. M. Giacomin Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione – Università di Brescia 20Prof. M. Giacomin

Funzione di stampa printf

printf(stringa di formato, valori da stampare);tra doppi apici lista di espressioni (variabili / costanti / composte)

separate dalla virgola

Effetto:

• stampa la stringa di formato, che contiene caratteri comuni

e specifiche di conversione che iniziano con il simbolo % (es: %d)

• i caratteri comuni vengono stampati normalmente

• ad ogni specifica di conversione corrisponde un’espressione

nella lista degli elementi da stampare: una specifica di conversione

provoca la stampa del corrispondente valore, dopo averlo

“convertito” nel formato di stampa specificato dalla specifica

di conversione stessa (es: %d per il formato decimale degli interi)

Page 21: Linguaggio C: Variabili e assegnamento e semplici “comandi ...fimec.altervista.org/Informatica_&_Programmazione... · Prof. M. Giacomin Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione – Università di Brescia 21Prof. M. Giacomin

Una sequenza speciale

\n rappresenta il carattere di �a capo�

Esempio 1printf(�fuori�);

printf(�gioco\n�); Stampa �fuorigioco� e va a capo

Esempio 2

int gbarca=2;

int gmilan=2;

printf(�Gran risultato:\nBarcellona %d Milan %d�,gbarca,gmilan);

Stampa �Gran risultato:Barcellona 2 Milan 2�

Page 22: Linguaggio C: Variabili e assegnamento e semplici “comandi ...fimec.altervista.org/Informatica_&_Programmazione... · Prof. M. Giacomin Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione – Università di Brescia 22Prof. M. Giacomin

Funzione di acquisizione dati scanf

• La funzione scanf legge caratteri dalla tastiera e li interpretasecondo il formato specificato dalle specifiche di conversione(p.es. con %d si aspetta un intero decimale)

• Ciascun valore così ottenuto è immagazzinato nella corrispondentevariabile della lista

• Gli argomenti della lista indicano in realtà indirizzi di memoria incui memorizzare i valori acquisiti (per questo si usa &)

scanf(stringa di formato, elementi da acquisire);tra doppi apici

contiene specifichedi conversione

lista di variabili separate dalla virgola, ciascunapreceduta dal simbolo &

Es. scanf(�%d�, &variabile);

Page 23: Linguaggio C: Variabili e assegnamento e semplici “comandi ...fimec.altervista.org/Informatica_&_Programmazione... · Prof. M. Giacomin Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione – Università di Brescia 23Prof. M. Giacomin

#include<stdio.h>#include <stdlib.h>

int main(int argc, char *argv[]){int num;int successivo;

printf("Inserisci un numero\n");scanf("%d",&num);successivo=num+1;printf(”Successivo a %d uguale a %d\n",num,successivo);

return 0;}

Esempio

Page 24: Linguaggio C: Variabili e assegnamento e semplici “comandi ...fimec.altervista.org/Informatica_&_Programmazione... · Prof. M. Giacomin Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione – Università di Brescia 24Prof. M. Giacomin

QUELLO CHE A VOLTE NON E’ CHIARO!!!

• Le diverse istruzioni del C hanno compiti ben distinti, senza

mescolamenti di compiti diversi che limiterebbero la flessibilità:

- l’assegnamento modifica i valori delle variabili

(e NON STAMPA NULLA)

- scanf acquisisce valori dall’esterno memorizzandoli nelle

variabili (e NON STAMPA NULLA)

- printf stampa (a video, ma non solo)

• Schema base per acquisire dati, elaborarli e stampare un risultato:

- acquisire i dati dall’utente e memorizzarli in una o più variabili

mediante la funzione scanfNB: scanf NON PUO’ STAMPARE MESSAGGI

(p.es. “Inserisci un numero intero”): usare printf- elaborare i valori nelle variabili (istruzioni di assegnamento)

- stampare il risultato (o i risultati) con la printf

Page 25: Linguaggio C: Variabili e assegnamento e semplici “comandi ...fimec.altervista.org/Informatica_&_Programmazione... · Prof. M. Giacomin Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione – Università di Brescia 25Prof. M. Giacomin

Commenti in C• Si possono inserire commenti per spiegare alcuni dettagli del

codice: ovviamente è necessario che vengano �marcati� affinchéil compilatore li possa ignorare

• Tutto ciò che è tra /* e */ (anche su più righe) è un commento:/* questo èun commento */

• Quasi tutti i compilatori ammettono anche i commenti nella formaprintf(�Ciao\n�); //anche questo è un commento

tutto ciò che segue // è un commento fino alla fine della riga (in questo caso quindi il commento non è su più righe)