1 ELEMENTI DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettrica ed Elettronica Linguaggio C A.A. 2011/2011

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

Introduzione al linguaggio C
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F2 Selezione.
Selezione - approfondimento
Il linguaggio C Gli operatori e le espressioni C Language
Fondamenti di Informatica I a.a Il linguaggio C Il controllo di flusso La selezione condizionale Listruzione switch I cicli Le istruzioni break,
Dichiarazioni e tipi predefiniti nel linguaggio C
CODIFICA Da flow-chart a C++.
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (II) Istruzioni e strutture di controllo.
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (III)
7. Strutture di controllo Ing. Simona Colucci Informatica - CDL in Ingegneria Industriale- A.A
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica FONDAMENTI DI INFORMATICA Domenico Talia
Programmazione: Iterazione Esistono tre tipi di iterazione fondamentali e vedremo la corrispondenza dei relativi diagrammi a blocchi e la loro traduzione.
1 Elementi DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
1 ELEMENTI DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
Un semplice programma C /* Programma che stampa un saluto */ #include main() { printf(“Hello World!\n”); }
.  I tipi di dati non primitivi sono gli array, le struct e le union.  Gli array sono degli aggregati di variabili dello stesso tipo.  La dichiarazione.
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica PROBLEMI E ALGORITMI LINGUAGGIO MACCHINA.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Java: concetti e costrutti base
Introduzione al linguaggio C
Linguaggio C: Espressioni
7. Strutture di controllo Ing. Simona Colucci
Lezione 2 Fondamenti di Informatica-Modulo Fondamenti di Programmazione.
IL CONCETTO DI ALGORITMO
10. Programmazione Ricorsiva Ing. Simona Colucci
SWITCH – CASE LINGUAGGIO C.
L’AMBIENTE CODE BLOCKS E L’IO
TIPI PRIMITIVI TIPI STRUTTURATI
JAVA usa una rappresentazione in VIRGOLA MOBILE
CICLO DO – WHILE LINGUAGGIO C.
Lezione 9 – A.A. 2016/2017 Prof. Giovanni Acampora
Java World Cicli e Array.
Programmazione e Laboratorio di Programmazione
Introduzione a JavaScript
Programmazione e Laboratorio di Programmazione
Corso Java Cicli e Array.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Strutture di Controllo
Secondo Programma in C.
Programmazione e Laboratorio di Programmazione
Esercitazioni di C++ 31 dicembre 2018 Claudio Rocchini IGMI.
Programmazione e Laboratorio di Programmazione
Algebra Booleana.
Ricorsione 16/01/2019 package.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Programmazione e Laboratorio di Programmazione
Definizione di linguaggio di programmazione
Algoritmi e strutture dati APPUNTI SUL LINGUAGGIO C
La struttura dei primi programma in C
Le istruzioni di iterazione in C
Processi decisionali e funzioni di controllo
Programmazione e Laboratorio di Programmazione
Fogli di Calcolo Elettronici
Programmazione e Laboratorio di Programmazione
Le variabili Tipo Valori ammissibili
Programmazione e Laboratorio di Programmazione
Fondamenti di Informatica
Le istruzioni di selezione condizionale in C
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Array e Stringhe Linguaggio C.
Programmazione e Laboratorio di Programmazione
PowerShell di Windows PowerShell è un shell che mette a disposizione un prompt interattivo e un interprete a riga di comando , per le sue caratteristiche.
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione Procedurale
Transcript della presentazione:

1 ELEMENTI DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettrica ed Elettronica Linguaggio C A.A. 2011/ Ing. Giuseppe Destefanis Diee, secondo piano Tel mail: Web:

2 Un linguaggio è caratterizzato da:  SINTASSI - insieme di regole formali per la scrittura di programmi, che fissano le modalità per costruire frasi corrette nel linguaggio.  SEMANTICA - insieme dei significati da attribuire alle frasi (sintatticamente corrette) costruite nel linguaggio  Scrivere un programma sintatticamente corretto non implica che il programma faccia quello per cui è stato scritto.

3 Sviluppo di un programma (compilazione) - editing: scrivere il testo e memorizzarlo su supporti di memoria permanenti; - compilazione: traduzione del codice sorgente in codice oggetto; - linking: integrazione dei vari moduli di un programma per creare un'unità eseguibile; - esecuzione: la cpu esegue il programma;

4 Compilatore: traduce il programma sorgente in programma oggetto;  ANALISI programma sorgente analisi lessicale analisi sintattica  TRADUZIONE generazione del codice ottimizzazione del codice Esempi: C, C++, Pascal

5

6 Sviluppo di un programma (approccio interpretato) - editing: scrivere il testo e memorizzarlo su supporti di memoria permanenti; - interpretazione: ogni istruzione viene convertita in linguaggio macchina e eseguita;  ANALISI programma sorgente  analisi lessicale  analisi sintattica  ESECUZIONE ESEMPIO: Basic

7 Il primo programma C #include int main() { printf(“Sono il primo programma\n”); return(0); }

8 Variabili Memoria: insieme di celle. Cella: in genere ha una grandezza di un byte (8 bit) Variabile: gruppo di celle consecutive che vengono considerate dal programmatore come un’unica cella informativa. Attributi di una variabile: - Indirizzo della prima cella - Valore (contenuto di tutte le celle) variabile valor e cella indirizzo valor e

9 Variabili (2) Variabili: – l’indirizzo non cambia; – il valore può subire modifiche Programmatore: – si riferisce a una variabile mediante un nome (identificatore); Variabile: – ha un tipo Tipo di una variabile: – insieme di valori (detti elementi o costanti del tipo);

10 Dichiarazioni e definizioni Costrutti che introducono nuove entità: – dichiarazioni; – definizioni. Dichiarazioni: – entità a cui il compilatore non associa locazioni di memoria o azioni eseguibile;

11 Definizioni: – entità a cui il compilatore associa locazioni di memoria o azioni eseguibili; – esempio: definizioni di variabili o di costanti Nomenclatura consentita in C: – spesso non è semplice né conveniente trattare separatamente dichiarazioni e definizioni; – con dichiarazione si può intendere sia una dichiarazione vera e propria, sia una definizione (le dichiarazioni comprendono le definizioni).

12 Esempio #include int main() { int a,b; /*dichiarazione di variabile*/ int c=3; /*dichiarazione e definizione*/ printf(“Sono il secondo programma\n”); return(0); }

13 Costanti  Se il valore associato ad un identificativo non è modificabile parliamo di costanti.

14 I tipi base Il C supporta due tipologie fondamentali di numeri:  numeri interi e i numeri a virgola mobile; I valori di un tipo intero sono numeri interi, mentre i valori dei tipi a virgola mobile possono avere anche una parte frazionaria.

15 Tipi interi

16 Tipi interi (2) #include int main() { int a,b; /*dichiarazione di variabile*/ int c=3; /*definizione e dichiarazione*/ return(0); }

17 Tipi floating point

18 Tipi floating point (2) #include int main() { double a,b; a=3.14; float c; c=5.15; return(0); }

19 Tipi char Il tipo char è il tipo di dato utilizzato per i caratteri. I valori del tipo char possono variare da macchina a macchina poichè esistono diversi tipi di set di caratteri (il più diffuso è quello ASCII: American Standard Code for Information). A una variabile di tipo char può essere assegnato un qualsiasi carattere: char ch; ch='a'; /* a minuscola */ ch='A'; /* A maiuscola */

20 Tipi definiti dall'utente I tipi enumerazione sono: - definiti dal programmatore; - costituiti da insiemi di costanti intere definite dal programmatore, ciascuna individuata da un identificatore e detta enumeratore; - utilizzati per variabili che assumono solo un numero limitato di valori; - utili per rappresentare informazioni non numeriche;

21 Tipi definiti dall'utente (2) #include int main() { enum Giorni{LUN,MAR,MER,GIO,VEN,SAB,DOM}; enum Giorni oggi=LUN; printf("%d",oggi); //stampa 0 return(0); }

22 Definizione di tipi  L'istruzione introdotta dalla parola-chiave typedef definisce un sinonimo di un tipo esistente.  Non crea un nuovo tipo, ma un nuovo identificatore di un tipo (nativo o astratto) precedentemente definito. typedef int interi; interi a; /* equivale a scrivere int a*/

23 Assegnamento (o assegnazione) Si può conferire un valore ad una variabile tramite un assegnamento: … int a,b; int c=4; a=c; b=a; const int x=3; …

24 Assegnamenti (2) #include int main{ int a,b,c; a=b=c=1; b=a*b; c=c+1=3; //ATTENZIONE! return(0); }

25 Left value e Right value  Left value: espressione che può apparire sul lato sinistro di un assegnamento;  Right value: espressione che può apparire sul lato destro di un espressione;

26 Operatori aritmetici

27 Operatori logici e di confronto I tipi aritmetici possono usare gli operatori di confronto: == uguale != diverso > maggiore >= maggiore o uguale < minore <= minore o uguale

28 Operatori logici e di confronto (2) ! operatore logico not && operatore logico and || operatore logico or Gli operatori logici, quando utilizzati in un'espressione, producono 0 oppure 1 come risultato.

29 #include int main() { int a=2, b=3, c; c=a>2&&b>3; printf(“%d”,c); //0 c=a>2||b==3; printf(“%d”,c); //1 return(0); }

30 #include int main() { int a=2, b=3, c; c=!(a>2&&b>3); printf(“%d”,c); //1 c=a>2||b==3; printf(“%d”,c); //1 return(0); }

31 Corto circuito #include int main() { int a=2, b=3, c; c=(a!=0)&&(4/a>1); printf("%d",c); c=(4/a>1)&&(a!=0); //ATTENZIONE! printf("%d",c); return(0); }

32 Incremento e decremento #include int main(){ int a=1, b=2; a+=1; //a=a+1; ++b; //b=b+1; a++; //a=a+1; }

33 Incremento e decremento (2) #include int main() { int a=2, c=0; printf("%d\n",c++); //stampa 0 printf("%d\n",c); //stampa 1 printf("%d\n",++a); //stampa 3 printf("%d\n",a); //stampa 3 return(0); }

34 Incremento e decremento (3) #include int main() { int a=2, c=2; printf("%d\n",c--); //stampa 2 printf("%d\n",c); //stampa 1 printf("%d\n",--a); //stampa 1 printf("%d\n",a); //stampa 1 return(0); }

35 Conversioni di tipo Conversioni implicite:  quando in un'espressione logica o aritmetica gli operandi non sono dello stesso tipo;  quando il tipo del lato destro di un'assegnazione non è lo stesso di quello del lato sinistro;

36 #include int main() { char c; short int s; int i; unsigned int i; long int l; unsigned long int ul; float fl; double d; long double ld; i=i+c; /* il valore di c viene convertito al tipo int i=i+s; /* il valore di s viene convertito al tipo int u=u+i; /* il valore di i viene convertito al tipo unsigned int l=l+u; /* il valore di u viene Convertito al tipo long int ul=ul+l; /* il valore di l viene convertito al tipo uns. Long int fl=fl+ul; /* il valore di ul viene convertito al tipo float; d=d+fl; /* il valore di fl viene convertito al tipo double; ld=ld+d; /* il valore di d viene convertito al tipo long double return(0); }

37 Conversioni di tipo (2) Attenzione: nella conversione da double a int si può avere una perdita di informazione a causa del troncamento della parte decimale. In alcuni casi nella conversione da int a double si può verificare una perdita di precisione per arrotondamento, poichè gli interi sono rappresentati in forma esatta ed i reali sono rappresentati in forma approssimata.

38 Cast esplicito Sebbene le conversioni esplicite siano convenienti, a volte si ha bisogno di un maggior grado di controllo sulla conversione di tipo. Un'espressione di cast ha la forma: (nome del tipo) espressione Il nome del tipo specifica il tipo nel quale verrà convertita l'espressione. … float f=3.14; int i; i=int(f); //cast …

39 Ordine di valutazione delle espressioni 1

40 Ordine di valutazione delle espressioni 2 #include int main(){ int a,b,c,d,e,f; a=b=c=d=e=f=1; a= b+= c++ - d + --e / -f; return(0); }

41 Ordine di valutazione delle espressioni 2 #include int main(){ int a,b,c,d,e,f; a=b=c=d=e=f=1; a= b+= c++ - d + --e / -f; return(0); } 1- a= b+= (c++) - d + --e / -f;

42 Ordine di valutazione delle espressioni 2 #include int main(){ int a,b,c,d,e,f; a=b=c=d=e=f=1; a= b+= c++ - d + --e / -f; return(0); } 1- a= b+= (c++) - d + --e / -f; 2- a= b+= (c++) - d + (--e) / -f;

43 Ordine di valutazione delle espressioni 2 #include int main(){ int a,b,c,d,e,f; a=b=c=d=e=f=1; a= b+= c++ - d + --e / -f; return(0); } 1- a= b+= (c++) - d + --e / -f; 2- a= b+= (c++) - d + (--e) / -f; 3- a= b+= (c++) - d + ((--e) / -f);

44 Ordine di valutazione delle espressioni 2 #include int main(){ int a,b,c,d,e,f; a=b=c=d=e=f=1; a= b+= c++ - d + --e / -f; return(0); } 1- a= b+= (c++) - d + --e / -f; 2- a= b+= (c++) - d + (--e) / -f; 3- a= b+= (c++) - d + ((--e) / -f); 4- a= b+= (((c++) - d) + ((--e) / (-f)));

45 Ordine di valutazione delle espressioni 2 #include int main(){ int a,b,c,d,e,f; a=b=c=d=e=f=1; a= b+= c++ - d + --e / -f; return(0); } 1- a= b+= (c++) - d + --e / -f; 2- a= b+= (c++) - d + (--e) / -f; 3- a= b+= (c++) - d + ((--e) / -f); 4- a= b+= (((c++) - d) + ((--e) / (-f))); 5- (a= (b+= (((c++) - d) + ((--e) / (-f))));

46 printf() e specifiche di conversione La funzione printf() viene utilizzata per visualizzare a video il contenuto di una stringa.

47 printf() (2) #include int main(){ int a=3; printf(“%d%d”,a); //numero di specifiche superiori all'input return(0); }

48 printf() (2) #include int main(){ int a=3; printf(“%d%d”,a); //numero di specifiche superiori all'input return(0); } #include int main(){ int a=3,b=5; printf(“%d”,a,b); //numero di specifiche inferiori all'input return(0); }

49 scanf() La funzione scanf() viene utilizzata per leggere dallo standard input secondo un particolare formato. #include int main(){ int a; printf(“Inserisci un valore: \n”); scanf(“%d”,&a); return(0); }

50 L'istruzione if if (espressione) istruzione else istruzione #include int main(){ int num1,num2; scanf(“%d%d”,&num1,&num2); if(num1<num2) printf(“%d”,num1); else printf(“%d”,num2); }

51 L'istruzione if (2) #include int main(){ int num1,num2,max; scanf(“%d%d”,&num1,&num2); if(num1<num2) max=num1; else max=num2; return(0); }

52 #include int main() { int operazione, num1, num2, ris; printf("1: somma, 2: sottrazione, 3: moltiplicazione \n"); scanf("%d",&operazione); if(operazione==1){ printf("Inserisci i numeri:\n"); scanf("%d%d",&num1,&num2); ris=num1+num2; printf("Il risultato è: %d\n",ris); } else if(operazione==2){ printf("Inserisci i numeri:\n"); scanf("%d%d",&num1,&num2); ris=num1-num2; printf("Il risultato è: %d\n",ris);} else if(operazione==3){ printf("Inserisci i numeri:\n"); scanf("%d%d",&num1,&num2); ris=num1*num2; printf("Il risultato è: %d\n",ris);} if(operazione!=1 && operazione!=2 && operazione!=3) printf("Numero non valido!\n"); }

53 Espressione condizionale espressione1 ? espressione2 : espressione #include int main(){ int a=2, b=3; int max; max=(a>b?a:b); printf(“Il massimo è: %d”,max); }

54 Switch e break #include int main() { int operazione, num1, num2, ris; printf("1: somma, 2: sottrazione, 3: moltiplicazione \n"); scanf("%d",&operazione); printf("Inserisci i due numeri: \n"); scanf("%d%d",&num1,&num2); switch(operazione){ case 1: printf("La somma è: %d\n",num1+num2); break; case 2: printf("La differenza è: %d\n",num1-num2); break; case 3: printf("Il prodotto è: %d\n",num1*num2); break; default: printf("Il numero inserito non è una scelta valida!\n"); }

55 I cicli Un ciclo consente l'esecuzione ripetitiva di altre istruzioni sotto il controllo di una condizione di terminazione.

56 L'istruzione while while (condizione) istruzione Valuto la condizione e se verificata eseguo il ciclo. #include int main() { int num, somma; somma=0; scanf("%d",&num); while(num!=0){ somma+=num; scanf("%d",&num); } printf("La somma finale è: %d\n",somma); }

57 L'istruzione do-while Eseguo il corpo del ciclo e poi valuto la condizione. A differenza del ciclo while eseguo il contenuto del ciclo almeno una volta. do istruzione while (espressione)

58 do-while (2) #include int main() { int num, somma; somma=0; scanf("%d",&num); do { somma+=num; scanf("%d",&num); } while(num!=0) printf("La somma finale è: %d\n",somma); }

59 L'istruzione for #include int main() { int num, fatt; fatt=1; scanf("%d",&num); for(int i=1; i<=num; i++){ fatt*=i; } printf("Il fattoriale vale: %d\n",fatt); return(0); }

60