1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

I tipi Strutturati.
Corso di Fondamenti di Programmazione canale E-O
INFORMATICA Altre Istruzioni di I/O
LINGUAGGIO DI PROGRAMMAZIONE C
Introduzione al linguaggio C
Stringhe di caratteri In linguaggio C.
I DATI I PRINCIPALI TIPI DI DATO UTILIZZATI IN PROGRAMMAZIONE
Fondamenti di Informatica CDL in Ingegneria Meccanica - A.A CDL in Ingegneria Meccanica - A.A Tipi di dati Ing. Simona Colucci.
Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A Tipi di dati Ing. Simona Colucci.
Introduzione al linguaggio C
Introduzione al linguaggio C Dr. Francesco Fabozzi Corso di Informatica.
Programmazione Procedurale in Linguaggio C++
Indirizzi delle variabili A ogni variabile sono associati tre concetti fondamentali: il valore memorizzato; il tipo dati di appartenenza; lindirizzo. Il.
FUNZIONI DI BIBLIOTECA
Funzioni definite dall’utente
Tail recursion: esempio
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE File Marco D. Santambrogio – Ver. aggiornata al 9 Maggio 2012.
Laboratorio di Linguaggi lezione VI: puntatori 2/3 Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
Laboratorio di Linguaggi lezione VIII Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea.
Laboratorio di Linguaggi lezione V Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Laboratorio di Linguaggi lezione VII: puntatori 3/3 Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.
Fondamenti di Informatica I a.a Il linguaggio C Il controllo di flusso La selezione condizionale Listruzione switch I cicli Le istruzioni break,
nome: sequenza di caratteri usata per denotare un oggetto
A.A. 2010/2011Ambienti di Programmazione per il Software di Base1 (Es. – 6) Ambienti di Programmazione per il Software di Base Le Stringhe in C Input.
Esercizi FUNZIONI Passaggio di parametri per valore, variabili e tipi locali e globali, prototipo.
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
Dichiarazioni e tipi predefiniti nel linguaggio C
Fondamenti di Informatica A - Massimo Bertozzi TIPI DI DATO IN C++ What's in a name? That which we call a rose By any other name would smell as sweet.
Il Linguaggio C.
Le funzioni.
Espressioni condizionali
Programmazione in Java
Programmazione in Java Claudia Raibulet
CODIFICA Da flow-chart a C++.
2000 Prentice Hall, Inc. All rights reserved. Capitolo 10 (Deitel) Strutture, unioni ed enumerazioni Sommario Introduzione Definire le strutture.
Il linguaggio C Le funzioni C Language Il passaggio dei parametri
Tipi di dati elementari
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
Unità Didattica 3 Linguaggio C
Laboratorio di Linguaggi lezione VII: variabili Globali e Locali Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
Unità Didattica 1 Linguaggio C
1 Numeri interi e numeri in virgola mobile F. Bombi 2 6 novembre 2003.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
1 Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( ) Laboratorio di programmazione Lezione 11 e 12 -
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode.
Parte 3 Lo stato: variabili, espressioni ed assegnazioni
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
1 Il linguaggio C Puntatori e dintorni. 2 Puntatori : idea di base In C è possibile conoscere e denotare l’indirizzo della cella di memoria in cui è memorizzata.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 7 Tipi di dato e strutture dati Specifica e realizzazione di strutture informative come classi.
Operatori di incremento e decremento
Il linguaggio C Notate che ....
Informatica 6 Tipi di dato. Nelle celle di memoria di un calcolatore ci sono solo “0” e “1”, fisicamente realizzati tramite due diversi livelli di tensione.
Il linguaggio C Puntatori e dintorni.
Il linguaggio C Un primo programma C : un primo programma (2) /* Programma che calcola il massimo fra tre numeri inseriti da tastiera */ #include #define.
1 Laboratorio di Programmazione di Sistema - C Susanna Pelagatti Ricevimento: Me ,
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (III)
Cloud informatica V anno. Introduzione a PHP Lo scripting PHP PHP è un linguaggio di scripting lato server. Le caratteristiche di un linguaggio di scripting.
Lezione 9 e 10 - Segmenti di memoria e puntatori - Aritmetica dei puntatori - Formattazione dei dati - Significato ed impiego del cast - Tipi di dato strutturato.
Lezione n. Parole chiave: Corso di Laurea: Insegnamento: Docente: A.A Salvatore Cuomo Esercizi sui dati strutturati 13 Tipi di dati strutturati.
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
Appunti su formati numerici. Tipi numerici Il C dispone di due tipi numerici: tipi interi e tipi reali; I tipi reali sono anche detti floating, ovvero.
13. Strutture dati dinamiche Ing. Simona Colucci Informatica - CDL in Ingegneria Industriale- A.A
Transcript della presentazione:

1 Il linguaggio C Precisazioni sull’esperienza in laboratorio

2 Il C è un linguaggio a blocchi int main (void) { } blocco

3 Il C è un linguaggio a blocchi (2) Non è possibile mischiare dichiarazioni e comandi ! int main (void) { } Dichiarazione di variabili locali Comandi

4 Variabili non inizializzate Le varibili non inizializzate non producono nessun errore!!!! int main (void) { /* ed esempio …. */ int min, max, out; int = max * out; … } Controllate sempre di aver inizializzato lo variabili prima del loro uso!

5 Il linguaggio C Tipi di dati e operatori

6 I tipi di dato primitivi Interi : short, int, long, –2,4,8,16 byte (dipende dalla implementazione) –segnaposto %d rappresentazione decimale %x,%o rappresentazione esadecimale o ottale –costanti intere : 1, -2, 4565 –La funzione predefinita sizeof() fornisce la lunghezza in byte di un qualsiasi tipo o variabile C es. sizeof(int)

7 I tipi di dato primitivi (2) Caratteri : –char, 1 byte, cod. ASCII, segnaposto %c –costanti carattere : `a`, `b`, `c` –i caratteri sono visti da C come interi un po’ speciali : è possibile operare sui caratteri con le normali operazioni su interi –es: char c = `a`; c++; putchar(c); /* ???? */

8 I tipi di dato primitivi (3) Reali : –float, double, long double –4,8,16 byte, –rappresentazione in virgola mobile –segnaposto : stampa (es. printf()) %f, %lf lettura (es. scanf()) %f (float), %lf (double), %Lf (long double),

9 I tipi di dato primitivi (4) Libreria matematica ( libm ) –fornisce tutte le più comuni operazioni matematiche per operare sui reali es. sqrt() –per utilizzarla includere il file #include –compilare con gcc … … … -lm effettua il link esplicito della libreria

10 I tipi di dato primitivi (5) Non esistono i tipi byte e bool !!! Le stringhe sono rappresentate come array di caratteri. signed/unsigned –modificatore per i tipi interi e caratteri –permette di scegliere fra la rappresentazione di soli interi positivi (es su un byte) o quella in complemento a due (es -128,+127) es. unsigned int, signed char

11 I tipi di dato primitivi (6) limits.h –contiene macro che definiscono i massimi ed i minimi numeri rappresentabili per tutti i tipi –es. INT_MIN, INT_MAX –per utilizzarli includere il file limits.h

12 I tipi di dato primitivi (7) Conversioni fra tipi diversi : –sono automatiche in C –posso scrivere espressioni con operandi di tipo diverso int a=0; float b, r=3.1; b = a + r; –di solito viene convertito tutto nel tipo più accurato, le regole p.115 nel testo KP –conversioni esplicite r =(float) a / b

13 I valori booleani Rappresentazione dei valori booleani in C : –non esiste il tipo bool ! –sono rappresentati con int –0 rappresenta FALSO, qualsiasi valore != 0 rappresenta VERO es. 456 viene interpretato come VERO es. if (1) printf(“VERO”); è un condizionale con condizione sempre vera, che quindi stampa sempre VERO sullo schermo.

14 Gli operatori booleani && (and), || (or), ! (not) –valore : 0 se sono falsi e 1 se sono veri –sono rappresentati con int operatori bit a bit : & (and), | (or), ^ (xor), > (rshift), ~ (complemento) –es. 1 << 3 // maschera con 1 in terza posizione a & ~ ( 1 << 3 ) // azzera il terzo bit

15 Gli array Aggregati di variabili dello stesso tipo : –dichiarazione : int a[4]; –gli indici partono da 0 –non viene effettuato nessun controllo sugli indici nell’accesso : se cerco di accedere a a[15] il compilatore non dà errore ed in fase di esecuzione il risultato dipende dal contenuto della memoria adiacente ad a 1378 a[1] posizione valore

16 Le stringhe Sono array di caratteri terminati da ´\0´ –dichiarazione : char parola[8]=“mango”; –permette di memorizzare una qualsiasi parola di al più 7 caratteri (l’ottavo serve per il terminatore) –è inizializzata con la parola “ mango ” –string.h fornisce tutte le più comuni funzioni per manipolare stringhe

17 Le strutture (record) Aggregati di variabili di tipo diverso –dichiarazione di una nuova struttura: struct studente { char nome[40]; char cognome[40]; double voto; } ; –dichiarazione di variabili di tipo struttura : struct studente x; struct studente classe[140];

18 Le strutture (record) (2) Ridenominazione tipi : typedef tipo nome; –es : typedef int Intero; Intero nome[40]; –es : typedef char stringa40[41]; stringa40 nome;

19 Le strutture (record) (3) Ridenominazione tipi : typedef struct { char nome[40]; char cognome[40]; double voto; } studente ; – così si può eliminare struct dalle dichiarazioni studente x; studente classe[140];

20 Le strutture (record) (4) Ridenominazione tipi : typedef struct studente { char nome[40]; char cognome[40]; double voto; } studente ; – così si può eliminare struct dalle dichiarazioni studente x; studente classe[140]; Opzionale (serve per i tipi ricorsivi)

21 Le strutture (record) (5) Accesso ai campi : –tramite l’operatore punto (.) –es : studente x; studente classe[140]; classe[i].nome = x.nome;

22 Il linguaggio C Funzioni

23 Funzioni C Le funzioni C sono l’unico modo per strutturare i programmi e non si possono annidare Non esistono le procedure Non esistono i metodi Dichiarazione di funzioni : –descrive il prototipo della funzione ovvero: nome della funzione, il tipo del valore restituito ed il tipo di tutti gli argomenti utilizzati

24 Funzioni C (2) Dichiarazione di funzioni : –es: prototipo della funzione di somma di due interi int somma (int, int); oppure int somma (int x, int y); x, y sono inutili, ma vengono convenzionalmente specificati per documentazione

25 Funzioni C (3) Definizione di funzioni : –la definizione di una funzione è divisa fra : una intestazione (head) che fornisce il prototipo della funzione a i nomi per i parametri formali, ed un corpo (body) che specifica le azioni da compiere –es: int somma (int x, int y) { return (x + y); } intestazione

26 Funzioni C (4) Definizione di funzioni : –la definizione di una funzione è divisa fra una intestazione (head) che fornisce il prototipo della funzione a i nomi per i parametri formali, ed un corpo (body) che specifica le azioni da compiere –es: int somma (int x, int y) { return (x + y); } corpo

27 Funzioni C (5) La dichiarazione o la definizione di una funzione deve sempre precedere il suo uso! Scope delle variabili : –Il corpo di una funzione contiene le variabili locali sono allocate sulla pila, sono accessibili solo a quella funzione perdono il valore fra un’invocazione e l’altra

28 Funzioni C (6) Scope delle variabili (cont.) : –Le variabili globali sono variabili dichiarate al di fuori delle funzioni sono accessibili all’interno di tutte le funzioni sono allocate nell’area dati e vengono deallocate solo alla terminazione del programma –Le globali sono sconsigliate a meno di casi motivati!

29 Funzioni C (7) Scope delle variabili (cont.) : –Le variabili statiche locali ( static ) sono accessibili all’interno della funzione che le dichiara mantengono il valore fra una invocazione e l’altra Tutti i parametri sono passati per valore –una copia viene messa sullo stack all’atto della chiamata

30 Esempio di funzione #include int max (int a, int b); /* dichiarazione */ int main (void){ printf(“Il massimo è %d \n”, max(10,2)); return 0; } int max (int a, int b) { return (a < b)? b : a ; /* definizione */ }

31 Esempio di funzione (2) /* un esempio di var globale */ #include int max (int a, int b); /* dichiarazione */ int k = 0; /* var globale */ int main (void){ printf(“Il massimo è %d \n”, max(10,2)); printf(“Il valore di k è %d \n”, k); return 0; } int max (int a, int b) { k = k + 1; /* side effect */ return (a < b)? b : a ; /* definizione */ }

32 Esempio di funzione (3) /* un esempio di var statica */ #include int max (int a, int b); /* dichiarazione */ int main (void){ printf(“Il massimo è %d \n”, max(10,2)); /* k non è più accessibile fuori da max */ return 0; } int max (int a, int b) { static int k = 0; k++; return (a < b)? b : a ; /* definizione */ }