Tipi di dati. una parola di memoria (16 o 32 bit), float. possibile rilevare errori nell uso di variabili mediante compilazione

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Tipi di dati. una parola di memoria (16 o 32 bit), float. possibile rilevare errori nell uso di variabili mediante compilazione"

Transcript

1 Tipi di dati tipo di dato insieme di valori + insieme di operazioni esempio, tipo intero..., 2, 1, 0, +1, +2,... + somma, sottrazione,... In C tutte variabili hanno un tipo associato stabilmente mediante la dichiarazione Conseguenze della tipizzazione delle variabili variabile determinato a priori insieme dei valori ammissibili insieme delle operazioni applicabili memoria necessaria (NB variabile da macchina a macchina) esempi char 1 byte (8 bit) int una parola di memoria (16 o 32 bit), float 4 byte possibile rilevare errori nell uso di variabili mediante compilazione Classificazione dei tipi di dati semplici valori considerati atomici (e.g., velocità, temperatura) strutturati valori aggregati di varie componenti (e.g., una data) predefiniti (built-in) definiti dall utente nel corredo del linguaggio usati quando non bastano queli predefiniti terzo fascicolo - 1 -

2 Tipi semplici predefiniti quattro tipi di base: char (caratteri) int (interi) float (reali) double (reali in precisione doppia) qualificatori di tipo signed e unsigned applicabili a char e int short e long applicabile a int long applicabile a double 12 tipi semplici predefiniti Tipo predefinito char signed char unsigned char signed short int signed int signed long int unsigned short int unsigned int unsigned long int float double long double Denominazioni alternative signed short, short signed, int long int, signed long, long unsigned short unsigned unsigned long short e long condizionano spazio allocato signed e unsigned, short e long condizionano insieme dei valori ( massimo e minimo) NB non necessario dichiarare tipi predefiniti si dichiarano direttamente variabili di quei tipi - 2 -

3 Il tipo int un approssimazione dell insieme degli interi della matematica spazio allocato ( insieme dei valori) dipende dalla macchina normalmente un int in una parola (tipicamente 16 o 32 bit) long e short possono modificare memoria allocata unico fatto garantito: spazio allocato (short int) spazio allocato (int) spazio allocato(long int) signed int unsigned int un bit per il segno tutti i bit per il valore intero supposto positivo esempio con parola di 16 signed int ha valori 2 15,..., unsigned int la valori 0,..., costanti simboliche predefinite INT_MIN massimo valore intero INT_MAX minimo valore intero valore predefinito ma dall implementazione del linguaggio (complitore e macchina) non dalla definizione del linguaggio dichiarate nel file <limits.h> nella standard library inclusione mediante direttiva #include<limits.h> altro fatto garantito: spazio allocato (signed int) = spazio allocato (unsigned int) operazioni applicabili a int e suoi derivati tramite qualificatori = Assegnamento di un valore int a una variabile int +, -, * Somma, sottrazione, moltiplicazione (tra int ha come risultato un int) / Divisione con troncamento (risultato int) % Resto della divisione intera == Relazione di uguaglianza!= Relazione di diversità <, >, <=, >= Relazione minore, maggiore, minore o uguale, maggiore o uguale - 3 -

4 se operazioni danno risultato fuori da insieme valori segnalazione di errore esempio se moltiplicazione tra interi dà valore > INT_MAX segnalazione di Integer Overflow) avverte utente che risultato concreto non corrisponde al valore atteso Esempio legge una successione di numeri interi positivi (termina valore 0) numero verifica se anno bisestile ( multiplo di 4) /* Programma AnnoBisestile */ #include <stdio.h> main() int anno, resto; printf("inserire un numero positivo per sapere se corrisponde a un anno bisestile un numero negativo o il numero zero fanno terminare il programma\n"); scanf("%d", &anno); while (anno > 0) /* Quando un numero è multiplo di 4 il resto della sua divisione per 4 è pari a zero */ resto = anno % 4; if (resto ==0) printf("l'anno %d è un anno bisestile\n", anno); else printf("l'anno %d non è un anno bisestile\n", anno); printf("inserire un numero positivo per sapere se corrisponde a un anno bisestile un numero negativo o il numero zero fanno terminare il programma\n"); scanf("%d", &anno); - 4 -

5 I tipi float e double approssimazione dei numeri reali della matematica sia per limiti nel valore sia per precisione di rappresentazione Esempi di rappresentazione decimale, o in virgola fissa dispendioso per valori molto grandi o molto piccoli in valore assoluto o rappresentazione in virgola mobile (floating point) due parti: mantissa ed esponente (base 10) separate da E se n ha mantissa m ed esponente e n = m 10 e esempio, in virgola mobile: E E E+6 ecc. NB possono verificarsi errori per arrotondamenti perdita di cifre meno significative nella mantissa errori non gravi (non percentualmente rilavanti) entrambe notazioni, virgola fissa e mobile impiegabili sia in memoria dell elaboratore sia nella rappresentazione (programmi e I/O) conversioni relative trasparenti all utente spazio e valori per variabili float e double dipendono da implementazione unico fatto certo: spazio (float) spazio (double) spazio (long double) - 5 -

6 Esempio tipico float in 4 byte e double in 8 byte accuratezza 6 decimali per float 15 decimali per double valori tra e per float tra e per double operazioni applicabili a float (anche a double e long double) = Assegnamento +, -, *, Somma, sottrazione, moltiplicazione / Divisione (risultato reale; simbolo identico a divisione intera) == Relazione di uguaglianza!= Relazione di diversità <, >, <=, >= Relazione minore di, etc. standard library fornisce funzioni predefinite (sqrt, pow, exp, sin, cos, tan...) nel testo, Appendice C, <math.h> applicate a valori double useremo double anche quando basta float Esempi trasforma temperatura in Fahrenheit ( F) in Celsius ( C) formula di conversione C = (5/9) ( F 32) NB 5 e 9 scritti come reali (con la virgola e una cifra decimale) / appkcato a 5 e 9 dà zero (quoziente troncato) /* Programma Fahrenheit Celsius */ #include <stdio.h> main() int Ftemp; float Ctemp; printf("inserire la temperatura in gradi Fahrenheit da convertire in gradi Celsius\n"); scanf("%d", &Ftemp); Ctemp = (5.0/9.0) * (Ftemp 32); printf("%d gradi Fahrenheit corrispondono a %f gradi Celsius\n", Ftemp, Ctemp); - 6 -

7 calcola il volume di sfera di raggio r mediante formula V = (4/3) πr 3. /* Programma VolumeSfera */ #include <stdio.h> main() const float Pi = ; float volume, raggio; printf("inserire il raggio della sfera\n"); scanf("%f", &raggio); volume = (4.0/3.0) * Pi * raggio * raggio * raggio; printf("il volume della sfera di raggio %f è %f\n, raggio, volume); Osservazione sull uso dei reali approssimazione nella rappresentazione pericolosi (non formalmente vietati) confronti di uguaglianza (x/y) * y == x potrebbe risultare falsa invece di if (x == y)... consigliabile scrivere if (x <= y && y <= x )

8 Il tipo char char abbreviazione di character carattere lettere, cifre, simboli usuali delle tastiere codifica ASCII: ogni carattere codificato come valore intero codifica ASCII definisce ordinamento compatibile con quello alfabetico usuale Dec Simbolo ASCII Dec Simbolo ASCII 44, 87 W X Y 47 / 90 Z [ \ ] ^ _ ` a b c d 58 : 101 e 59 ; 102 f 60 < 103 g 61 = 104 h 62 > 105 i 63? 106 j 107 k 65 A 108 l 66 B 109 m 67 C 110 n 68 D 111 o 69 E 112 p 70 F 113 q 71 G 114 r 72 H 115 s 73 I 116 t 74 J 117 u 75 K 118 v 76 L 119 w 77 M 120 x 78 N 121 y 79 O 122 z 80 P Q R S 126 ~ 84 T 127 Ž 85 U 128 Ç 86 V 129 ü standard library dà funzioni predefinite per manipolare caratteri vedi <ctype.h> in Appendice C - 8 -

9 caratteri di controllo la loro scrittura non visualizza un segno grafico provoca esecuzione operazione correlata \n = newline \b = backspace \t = horizontal tab \r = carriage return per variabili char, signed char e unsigned char allocato un byte 256 valori diversi per signed char 128 a +127 per unsigned char da 0 a 255 per char definite operazioni di assegnamento (=) aritmetiche (+,, *, /, %) relazionali (==,!=, < ecc.) char del tutto analoghi a int e rappresentati in memoria come interi caratteri trattati come piccoli interi piccoli interi trattati come caratteri esempio: legge e scrive caratteri, trasformando lettere minuscole in maiuscole /* Programma ManipolazioneCaratteri */ #include <stdio.h> main() char C, CM; printf("inserire un carattere # per terminare il programma\n"); scanf("%c", &C); while (C!= '#') printf("il codice ASCII del carattere %c è %d\n", C, C); if (C >= 'a' && C <= 'z') /* Se il carattere è una lettera minuscola */ /* La differenza 'a' 'A' è lo scarto fra la rappresentazione ASCII delle lettere maiuscole e minuscole dell'alfabeto */ CM = C ('a' 'A'); printf("la lettera maiuscola per %c è %c e il suo codice ASCII è %d\n", C, CM, CM); printf("inserire un carattere # per terminare il programma\n"); scanf("%c", &C); - 9 -

10 Classificazione dei tipi predefiniti del C Tipi integral: char signed char unsigned char short int long unsigned short unsigned unsigned long Tipi floating: float double long double Tipi arithmetic: tipi integral + tipi floating Ogni espressione a valore di tipo integral stampabile sia con formato char sia int caratteristiche condivise dai valori dei tipi arithmetic totalmente ordinati: x y ( x!= y x < y oppure y < x) limitati i valori dei tipi integral sono insiemi discreti non per i floating, detti densi, e.g. tra 3.0 e 4.0 numero molto elevato di reali

11 Definizione di nuovi tipi forma tipica della dichiarazione Esempio typedef definizionenuovotipo ; typedef int anno; nome del nuovo tipo utilizzabile per altre dichiarazioni anno y; /* variabile y di tipo anno*/ possibile fare a meno di typedef, ma noi lo useremo sempre Tipi semplici definiti dall utente, per ridefinizione enumerazione esplicita dei valori forma tipica Ridefinizione typedef TipoEsistente NuovoTipo; Esempi typedef int typedef char typedef tipo1 typedef tipo2 tipo1; tipo2; tipo3; tipo4; Enumerazione esplicita dei valori valori elencati tra parentesi graffe, separati da una virgola Esempi typedef enum lun, mar, mer, gio, ven, sab, dom GiornoDellaSettimana; typedef enum rosso, verde, giallo, arancio, violetto, marrone, nero, ocra colore; typedef enum Giovanni, Claudia, Carla, Simone, Serafino persone; typedef enum gen, feb, mar, apr, mag, giu, lug, ago, set, ott, nov, dic mese;... persone individuo, individuo1, individuo2;... individuo = Giovanni; if (individuo1 == individuo2) individuo = Claudia;

12 NB Giovanni e Claudia valori di tipo persone Giovanni e Claudia di tipo stringa NB: valori di tipo enumerativo codificati mediante interi applicabili tutti gli operatori degli interi esempi di relazioni vere (!= 0) apr < giu rosso < arancio (apr == 3) esempi di relazioni false (== 0) dom < lun Simone < Giovanni tipi enumerati, come gli integral, sono totalmente ordinati limitati enumerabili Esempio: definizione del tipo boolean analogo a quello del Pascal typedef enum boolean false, true boolean; flag, ok; Tipi strutturati informazione aggregata: esempi vettori e matrici in matematica elenchi di nomi archivi di fatture anagrafi, etc variabili strutturate memorizzano diversi elementi informativi costrutture array unva riabile di tipo array denotata (al solito) con un identificatore composta da sequenza di variabili dello stesso tipo memorizzate in celle consecutive accessibili direttamente identificate da loro posizione (indice 0)

13 dichiarazione di un tipo array di nome anarray typedef int anarray[20]; /* un array di 20 int */ typedef double NuovaLista[30]; /* un array di 30 double */ dichiarazione di variabili di tipo anarray anarray lista1, lista2; anarray lista3; dichiarazione abbreviata di variabile array senza definire prima il tipo int lista[20]; lista array di 20 int Esempi scanf( %d, lista[2]); /* legge un dato nella terza cella dell array lista */ lista1[3] = lista2[1] + 5; indice di array dev essere di tipo integral è compreso tra 0 (incluso) e valore max indicato in dichiarazione (escluso) si può denotare con una variabile o in generale con un espressione x = a[i]; a[i] = a[i+1]; a[i*x] = s[a[j + 1] 3] * (y a[y]); Per accedere a cella di array, macchina astratta C deve: calcolare il valore dell indice; sommare il valore calcolato all indirizzo della prima cella dell array (la numero 0). dichiarazione di tipo con costruttore array consiste in: parola chiave typedef identificatore tipo elementi dell array; può essere qualsiasi identificatore nuovo tipo array om corso di definizione; dimensione dell array, un numero intero tra parentesi [] dichiarazione abbreviata di singola variabile array consiste in: identificatore tipo dell elemento dell array identificatore della variabile dimensione dell array, un numero intero tra parentesi []

14 NB l array è un costruttore di tipo, non un tipo ci sono tanti diversi tipi array, non uno solo differiscono per numero indici numero di elementi in ogni indice tipo elemento la locuzione la variabile a è di tipo array significa la variabile a è di un tipo ottenuto mediante il costruttore array dichiarazione di tipo array implicita in dichiarazione di variabile dichiarazione singola int lista[20]; o doppia typedef int anonimo[20]; anonimo lista; meglio la prima, in assenza di motivi per dare nome esplicito al tipo invece di typedef double VettoreDiReali[20]; VettoreDiReali v1, v2, v3; meglio la più semplice e altrettanto chiara double v1[20], v2[20], v3[20]; all opposto: typedef typedef PioggeMensili IndiciBorsa double PioggeMensili[12]; double IndiciBorsa[12]; Piogge87, Piogge88, Piogge89; Indici87, Indici88, Indici89; più comprensibile di double Piogge87[12], Piogge88[12], Piogge89[12], Indici87[12], Indici88[12], Indici89[12];

15 NB elementi degli array possono essere di tipi arbitrari (predefiniti, definiti dall utente, semplici o strutturati) possibile costruire array di array Esempio: typedef int typedef Vettore Vettore[20]; MatriceIntera20Per20[20]; MatriceIntera20Per20 matrice1; dichiarazione alternativa più sintetica per il tipo Matrice20Per20 typedef int Matrice20Per20[20][20]; e per la variabile matrice1 int matrice1[20][20]; Esempio: matrice tridimensionale potrebbe essere dichiarata come int matricetrid1[10][20][30]; per accedere agli elementi di matricetrid1 matricetrid1[2][8][15] Esempio: typedef enum colore rosso, verde, giallo, arancio, violetto, marrone, nero, ocra colore; ListaColori[10]; NB: array hanno dimensioni fisse, note al momento della compilazione ciò può provocare inconvenienti al programmatore array può essere troppo piccolo prevedere memoria aggiuntiva troppo grande spreco di memoria ma facilita realizzazione compilatori ed esecuzione programmi esempio classico: stringhe di caratteri typedef char String[30]; String Nome, Cognome; /* il cognome di un nobile spagnolo non ci sta per un italiano medio è troppo lungo*/

16 flessibilità parziale ottenibile con dichiarazione di costanti Esempio programma inverte una sequenza di un prefissato numero di interi /* Programma InvertiSequenza */ #include <stdio.h> main() int Contatore; int Memorizzazione[100]; Contatore = 0; while (Contatore < 100) /* NB il valore dell'indice di un array di 100 elementi varia da 0 a 99 */ scanf("%d", &Memorizzazione[Contatore]); Contatore = Contatore + 1; Contatore = Contatore 1; while (Contatore >= 0) printf("%d\n", Memorizzazione[Contatore]); Contatore = Contatore 1; programma fissato a 100 interi per considerare 1000 interi, sostituire tutte occorrenze di 100 con 1000 e ricompilare pericolo di errori nella sostituzione soluzione migliore: uso di una costante non si può usare costrutto const si usa direttiva #define #define LunghezzaSequenza 100 preprocessore sostituisce testualmente LunghezzaSequenza con

17 nuova versione più facilmente modificabile /* Program InvertiSequenza */ #include <stdio.h> #define LunghezzaSequenza 100 main() int Contatore; int Memorizzazione[LunghezzaSequenza]; Contatore = 0; while (Contatore < LunghezzaSequenza) scanf("%d", &Memorizzazione[Contatore]); Contatore = Contatore + 1; Contatore = Contatore 1; while (Contatore >= 0) printf("%d\n", Memorizzazione[Contatore]); Contatore = Contatore 1; a elementi di array applicabili operazioni caratteristiche del loro tipo NB: variabili array non possono essere oggetto di confronto o assegnamento confronto e assegnamento vanno fatti elemento per elemento Esempio typedef int anarray[10]; int i; anarray Array1, Array2; Array2 = Array1; /* SCORRETTO! */ i = 0; while (i <= 10) Array2[i] = Array1[i]; /* CORRETTO */ NB: nella standard library funzioni predefinite per manipolare stringhe stringhe array di caratteri parte significativa terminata da carattere speciale \0 (ASCII 0) stringa word w o r d \0-17 -

18 aggrega informazioni eterogenee Il costruttore struct Esempio variabili di tipo impiegato contenenti nome, cognome, codice fiscale, indirizzo, numero di telefono, stipendio, data di assunzione etc. uso di array innaturale o impossibile poiché elementi di array omogenei elementi aggregati si chiamano campi della struttura struct è costruttore di tipi come l array, usato per dichiarazioni di tipo dichiarazioni di variabili con tipo anonimo implicito sintassi della dichiarazione esplicita di tipo con struct: 1. parola chiave typedef struct 2. elenco dei campi racchiuso fra graffe 2.1. campo tipo del campo, identificatore del campo terminatore ; 3. identificatore del nuovo tipo ottenuto tramite il costruttore struct; 4. terminatore ; NB se più campi dello stesso tipo al posto di identificatore del campo (punto 2.1.2) lista di identificatori separati da, Esempi 1. typedef struct int Giorno; int Mese; int Anno; Data; 2. typedef char String[30]; typedef struct String Destinatario; int Importo; Data DataEmissione; DescrizioneFatture;

19 3. typedef enum On, Off AccType; typedef struct int AccType double CanaliTV; Canale; Accensione; CursoreLuminosita, CursoreColore, CursoreVolume; 4. typedef enum Dirigente, Impiegato, Operaio CatType; typedef struct String String int char Data CatType Dipendenti; Nome; Cognome; Stipendio; CodiceFiscale[16]; DataAssunzione; Categoria; dichiarazione di variabili di un tipo struct definito esplicitamente Dipendenti Dip1, Dip2; sintassi della dichiarazione abbreviata di variabili di tipo struct parola chiave struct elenco dei campi della struttura come nella dichiarazione esplicita; identificatore (o identificatori) di variabile (separati da virgola); terminatore di dichiarazione ; Esempio: dichiarazione abbreviata di Dip1 e Dip2 precedenti: struct String Nome; String Cognome; int Stipendio; char CodiceFiscale[16]; Data DataAssunzione; CatType Categoria; Dip1, Dip2; meccanismo per accedere ai singoli elementi: identificatore della struttura punto identificatore del campo Esempio: aumentare del 10% stipendio di Dip1 Dip1.Stipendio = Dip1.Stipendio + (Dip1.Stipendio*10) / 100;

20 meccanismi di accesso combinabili esattamente come i costruttori di tipi Esempi: Dip1 è stato assunto il 3 gennaio 1993 Dip1.DataAssunzione.Giorno = 3; Dip1.DataAssunzione.Mese = 1; Dip1.DataAssunzione.Anno = 1993;... se la prima lettera del cognome di Dip1 è A... if (Dip1.Cognome[0] == 'A')... dichiarando variabile ArchivioFatture: DichiarazioneFatture ArchivioFatture[1000]; stampa importo fattura numero 500 se è stata emessa entro il 1991, altrimenti stampa messaggio if (ArchivioFatture[500].DataEmissione.Anno <= 1991) printf("%d", ArchivioFatture[500].Importo); else printf("la fattura in questione è stata emessa dopo il 1991\n"); a elementi di struttura applicabili tutte le operazioni caratteristiche del loro tipo a variabili struttura applicabili operazioni globali di confronto (==,!=) e assegnamento (NB contrario di quanto accade ad array) Esempio: Dipendenti Dip1, Dip2;... Dip2 = Dip1; NB: due campi del tipo Dipendenti sono array) array e strutture trattati in modo diverso

21 Il costruttore puntatore finora ogni variabile denotata attraverso il suo nome x = a; meccanismo alternativo: i puntatori variabili il cui valore è un riferimento (indirizzo) a una variabile dichiarazione di un tipo puntatore denominato TipoPuntatore typedef TipoDato *TipoPuntatore; TipoPuntatore P; variabili di tipo TipoPuntatore contengono indirizzo a variabili di tipo TipoDato accesso a variabile puntata mediante operazione di dereferenziazione simbolo * prima del puntatore *P denota variabile il cui indirizzo è contenuto in P Esempio typedef TipoDato *TipoPuntatore; TipoPuntatore P; TipoDato x; le seguenti istruzioni sono ammissibili: *P = x; x = *P; effetto, supponendo che TipoDato sia int

22 ai puntatori applicabili operazioni di confronto e di assegnamento operatore inverso a quello di dereferenziazione: indirizzo di, indicato col simbolo & Esempio typedef TipoDato *TipoPuntatore; TipoPuntatore P, Q; TipoDato y, z;... P = &y; Q = &z;... P = Q; NB dfferenza tra assegnamenti P = Q e *P = *Q: costrutto * è un costruttore di tipo come array e struct e con le stesse conseguenze

23 Esempi di dichiarazione typedef TipoDato *TipoPuntatore; typedef AltroTipoDato *AltroTipoPuntatore; TipoDato *Puntatore; /* forma abbreviata di dichiarazione */ TipoDato **DoppioPuntatore; /* DoppioPuntatore punta a un puntatore a TipoDato */ TipoPuntatore P, Q; AltroTipoPuntatore P1, Q1; TipoDato x, y; AltroTipoDato z, w; istruzioni corrette Puntatore = &y; DoppioPuntatore = &P; Q1 = &z; P = &x; P = Q; *P = *Q; *Puntatore = x; P = *DoppioPuntatore; z = *P1; Puntatore = P; istruzioni scorrette: P1 = P; w = *P; *DoppioPuntatore = y; Puntatore = DoppioPuntatore; *P1 = *Q; strutture e puntatori se TipoDato di cui sopra dichiarato come typedef struct int PrimoCampo; char SecondoCampo; TipoDato; per accedere a componente PrimoCampo della variabile puntata da P: (*P).PrimoCampo (NB priorità di. maggiore di *, quindi servono parentesi) C fornisce notazione equivalente più sintetica P > PrimoCampo

24 quindi si può scrivere sia P >PrimoCampo = 12; sia (*P).PrimoCampo = 12; valore NULL per i puntatori: informazione nel puntatore non significativa P == NULL consiglio: NON assumere che i puntatori inizialmente valgano NULL Esempio: array contenente 100 interi; assegna a due puntatori l indirizzo delle componenti con valore minimo e massimo /* Programma Puntatori all'elemento maggiore e minore di un array */ #define LunghezzaArray 100 main() int i; int ArrayDiInt[LunghezzaArray]; int *PuntaAMinore; int *PuntaAMaggiore;... PuntaAMinore = &ArrayDiInt[0]; i = 1; while (i < LunghezzaArray) if (ArrayDiInt[i] < *PuntaAMinore) PuntaAMinore = &ArrayDiInt[i]; i = i + 1; PuntaAMaggiore = &ArrayDiInt[0]; i = 1; while (i < LunghezzaArray) if (ArrayDiInt[i] > *PuntaAMaggiore) PuntaAMaggiore = &ArrayDiInt[i]; i = i + 1;

25 Esempio: array DatiLavoratori con dati di 300 lavoratori (dirigenti, impiegati, operai) array Management con 10 puntatori a elementi di DatiLavoratori che sono dirigenti Stampa cognome e stipendi dei dirigenti che guadagnano più di /* Programma Dirigenti */ #include <stdio.h> main() typedef enum dirigente, impiegato, operaio CatLav; typedef struct char Nome[30]; char Cognome[30]; CatLav Categoria; int Stipendio; char CodiceFiscale[16]; Lavoratore; Lavoratore DatiLavoratori[300]; Lavoratore *Management[10];... i = 0; while (i < 10) if (Management[i] >Stipendio > ) j = 0; while (j < 30) printf("%c", Management[i] >Cognome[j]); j = j + 1; printf("%d \n", Management[i] >Stipendio); i = i + 1; attenzione, sul testo qsta istrzne sta erroneamente due righe più sotto rischi della programmazione mediante puntatori effetti collaterali (side effects) non facilmente e completamente prevedibili *P = 3; *Q = 5; P = Q; /* A questo punto *P = 5 */ *Q = 7; ora *Q = 7, ma anche, surrettiziamente, *P = 7 nota differenza con istruzioni analoghe senza puntatori int x, y; x = 3; y = 5; x = y; y = 7; /* x continua a valere 5 */

26 Array, puntatori e aritmetica dei puntatori in C stretta parentela tra array e puntatori fatti importanti elementi di array occupano in memoria numero di parole dipendente dal tipo elementi di array allocati in parole di memoria consecutive operatore sizeof dà numero di byte occupati da un tipo (o variabile) se su un calcolatore un valore int occupa 4 byte, dichiarando int a[5]; allora sizeof(a[2]) restituisce 4 e sizeof(a) restituisce 20, l ingombro complessivo dell array a nome di variabile di tipo array (e.g., a) è una costante di tipo puntatore (al tipo componente l array) con valore indirizzo della prima parola di memoria allocata all array C permette operazioni di somma e sottrazione tra puntatori sommando costante a puntatore valore incrementato di multiplo dell ingombro del tipo puntato TipoDato *P; se sizeof(tipodato) == 4 ( NB: stiamo assumendo parole di un byte ) P P+1 P+2 P+3 P

27 ciò utile in connessione agli array in presenza di int a[5]; int i; a[i] equivale a *(a+i) (i+1-simo elemento) quindi p = a è equivalente a p = &a[0]; p = a+1 è equivalente a p = &a[1]; NB non sono ammessi assegnamenti ad a perchè a è una costante a = p; /* errore */ a = a +1; /* errore */ se p e q puntano a due diversi elementi di un array p q dà la distanza nell array tra gli elementi puntati NB questa può non coincidere con differenza aritmetica tra valore numerico dei puntatori

28 tipi in C: compatibilità e conversioni alcune incompatibilità tra tipi ovvie e necessarie esempio: non ha senso assegnare una variabile int a una variabile struct altri casi dubbi assegnamento di una variabile int a una float di una float a una int criterio adottato da C per calcolo di espressioni (e assegnamenti) se costanti e variabili dello stesso tipo operazione associata a quel tipo se di tipi diversi applica, se possibile regole di conversione trattiamo solo regole di conversione implicita, non quelle di conversione esplicita (cast) tipizzazione forte: regole verificabili a tempo di compilazione Espressioni che coinvolgono elementi eterogenei in tipo ogni espressione aritmetica (e.g., x + y) caratterizzata da valore del risultato tipo del risultato tipo degli operandi determina operazione eseguita se x e y di tipo int eseguita operazione del tipo int e restituito valore di tipo int se x di tipo short e y di tipo int si converte una delle due x temporaneamente convertita in int applicata operazione di somma tra interi prodotto risultato int

29 regola generale per espressioni aritmetiche (conversione implicita) x op y quando tipi di x e y diversi in C i tipi sono ordinati in base alla precisione char < short < int < long < float < double < long double valori del tipo meno preciso implicitamente convertiti a valore del tipo più preciso (promozione) operazione effettuata con le regole del tipo più preciso risultato è un valore del tipo più preciso

30 Assegnamenti che coinvolgono elementi eterogenei in tipo effettuate conversioni implicite Esempio double d; int i;... d = i; valore di i convertito a double e assegnato a d non c è perdita di informazione... i = d; d convertito a int (troncandolo), valore intero assegnato a i perdita informazione altro esempio già visto int Ftemp; float Ctemp; printf("inserire la temperatura in gradi Fahrenheit da convertire in gradi Celsius\n"); scanf("%d", &Ftemp); Ctemp = (5.0/9.0) * (Ftemp 32); 5.0 e 9.0 sono costanti reali risultato divisione è reale Ftemp variabile intera e 32 e costante intera risultato sottrazione intero moltiplicazione causa conversione implicita (promozione) di (Ftemp 32) a float risultato float assegnato alla Ctemp, che è float conversioni, terreno scivoloso... attenzione a quanto accade con gli unsigned ( evitarli) Puntatori e tipizzazione delle variabili puntate compilatore segnala utilizzo congiunto di puntatori a dati di tipo differente

31 La costruzione incrementale dei programmi per problemi complessi difficile costruire in una sola botta programmi corretti troppi dettagli da considerare congiuntamente sintattici (notazioni del linguaggio) semantici (peculiarità del problema) tecnica adottata sviluppare diverse versioni dell algoritmo aumentando gradualmente livello di dettaglio e formalità del codice inizialmente formulazioni molto compatte e informali poi versioni più precise e dettagliate linguaggio semiformale usato nelle versioni intermedie chiamato pseudocodice adattamento alla programmazione dell antico motto divide et impera Esempio programma legge da standard input (carattere per carattere) - una parola, poi carattere $ - poi un altra parola, poi il carattere # - poi sequenza di parole separate da spazio chiusa da spazio, seguito da carattere terminatore % Scrive su standard output testo dopo il #, in cui prima parola sostituita dalla seconda Esempio rosso$giallo#il semaforo era rosso ma non si fermava nessuno % diventa in uscita Il semaforo era giallo ma non si fermava nessuno Se manca prima parola Se manca seconda parola stampa messaggio prima parola sempre cancellata

32 Cosa occorre memorizzare? prime due parole lette usiamo due variabili primaparola e secondaparola Non occorre memorizzare il testo: dopo aver letto le prime due parole basta - memorizzare una parola, - confrontarla con la prima parola - scrivere la parola stessa o la seconda parola a seconda del risultato per memorizzare ogni parola letta dopo # usiamo variabile parolacorrente programma non banale: procediamo incrementalmente prima versione dell algoritmo 1. Verifica se esiste una parola prima di $ 2. Se manca stampa il messaggio MANCA LA PAROLA DA SOSTITUIRE, altrimenti Memorizza prima parola in un array di caratteri 4. Memorizza seconda parola in un altro array 5. scandisci l intero testo parola per parola (fino a carattere %) 4.1. Memorizza ogni parola in un array 4.2. Confronta parola letta con prima parola 4.3. Se le due parole coincidono, scrivi nello Standard Output la seconda parola altrimenti scrivi la parola appena letta

33 pseudocodice con parti informali racchiuse tra quadre /* Programma SostituzioneParole */ main() char carattere; char PrimaParola[30], SecondaParola[30], ParolaCorrente[30]; scanf( %c, carattere); if (carattere == '$') printf("manca LA PAROLA DA SOSTITUIRE"); else [memorizza in PrimaParola sequenza di caratteri fino a '$']; [memorizza in SecondaParola sequenza di caratteri fino a '#']; scanf( %c, carattere); while (carattere!= '%') [memorizza in ParolaCorrente sequenza caratteri fino a spazio]; [confronta PrimaParola con ParolaCorrente]; if ([PrimaParola == ParolaCorrente]) [printf(secondaparola)]; else [printf(parolacorrente)]; printf( %c, ' '); /* in entrambi i casi scrive spazio per separare da parola successiva */ scanf( %c, carattere); /* Inizia la lettura della prossima ParolaCorrente, o legge % */ ora occorre precisare memorizzazione di una parola in un array confronto tra due parole scrittura di una parola consideriamo il meno semplice: il confronto. semplice strategia: 1. se lunghezze due parole diverse 1.1. allora parole diverse 1.2. altrimenti scandisci i due array carattere per carattere fino a quando trovi due caratteri diversi o l indice dell array supera lunghezza parola se trovi due caratteri diversi allora le due parole sono diverse altrimenti le due parole coincidono

34 NB occorre ricordare lunghezza delle parole, usiamo LungPrimaPar, LungSecPar e LunghParCorr ora è facile la codifica in C if (LunghPrimaPar == LunghParCorr) contatore = 0; while ((contatore < LunghPrimaPar) && PrimaParola[contatore] == ParolaCorrente[contatore])) contatore = contatore + 1; if (contatore >= LunghPrimaPar) [Le due parole coincidono] else [Le due parole sono diverse] else [Le due parole sono diverse] rimane codice per lettura e scrittura di parole, relativamente semplice /* Programma SostituzioneParole */ #include <stdio.h> main() char carattere; char PrimaParola[30], SecondaParola[30], ParolaCorrente[30]; int LungPrimaPar, LungSecPar, LungParCorr, contatore; scanf( %c, carattere); if (carattere == '$') printf ("MANCA LA PAROLA DA SOSTITUIRE"); else /* Memorizzazione della prima parola */ contatore = 0; while (carattere!= '$') PrimaParola[contatore] = carattere; contatore = contatore + 1; scanf( %c, carattere); LunghPrimaPar = contatore; /* Memorizzazione della seconda parola */ scanf( %c, carattere); contatore = 0; while (carattere!= '#') SecondaParola[contatore] = carattere; contatore = contatore + 1; scanf( %c, carattere); LungSecPar = contatore; /* fase di scansione del testo */

35 scanf( %c, carattere); while (carattere!= '%') /* Memorizzazione della parola corrente */ contatore = 0; while ( carattere!= ' ' ) ParolaCorrente[contatore] = carattere; contatore = contatore + 1; scanf( %c, carattere); LungParCorr = contatore; /* confronta prima parola con parola corrente */ if (LunghPrimaPar == LunghParCorr) contatore = 0; while (contatore < LunghPrimaPar && PrimaParola[contatore] == ParolaCorrente[contatore]) contatore = contatore + 1; if (contatore >= LunghPrimaPar ) /* ricopia seconda parola */ contatore = 0; while (contatore < LungSecPar) printf( %c, SecondaParola[contatore]); contatore = contatore + 1; else /* ricopia parola corrente */ contatore = 0; while (contatore < LungParCorr) printf( %c, ParolaCorrente[contatore]); contatore = contatore + 1; else /* lunghezze differenti, copia Parola corrente */ contatore = 0; while (contatore < LungParCorr) printf( %c, ParolaCorrente[contatore]); contatore = contatore + 1; printf( %c, ' '); /* in entrambi i casi scrive spazio per separare da parola successiva */ scanf( %c, carattere); /* Inizia la lettura della prossima ParolaCorrente, o legge % */

36 revisione: ogni parola ha la sua lunghezza coppia variabili parola si può usare struct con array di char per la stringa int per la sua lunghezza si possono confrontare per uguaglianza le parole-strutture attenzione: parte di array oltre la lunghezza deve essere uguale (e.g., spazi bianchi) nuova versione /* Programma SostituzioneParole */ #include <stdio.h> main() typedef char stringa[30]; typedef struct stringa s; int parola; char carattere; lun; parola PrimaParola, SecondaParola, ParolaCorrente; int contatore; scanf( %c, carattere); if (carattere == '$') printf ("MANCA LA PAROLA DA SOSTITUIRE"); else /* Memorizzazione della prima parola */ contatore = 0; while (carattere!= '$') PrimaParola.s[contatore] = carattere; contatore = contatore + 1; scanf( %c, carattere); PrimaParola.lun = contatore; /* aggiungi spazi bianchi in fondo */ while (contatore < 30 ) PrimaParola.s[contatore] = ; contatore = contatore + 1; /* Memorizzazione della seconda parola */ scanf( %c, carattere); contatore = 0; while (carattere!= '#') SecondaParola.s[contatore] = carattere; contatore = contatore + 1; scanf( %c, carattere); SecondaParola.lun = contatore;

37 /* aggiungi spazi bianchi in fondo */ while (contatore < 30 ) PrimaParola.s[contatore] = ; contatore = contatore + 1; /* nella fase di scansione del testo */ scanf( %c, carattere); while (carattere!= '%') /* Memorizzazione della parola corrente */ contatore = 0; while carattere!= ' ' ParolaCorrente.s[contatore] = carattere; contatore = contatore + 1; scanf( %c, carattere); ParolaCorrente.lun = contatore; while (contatore < 30 ) ParolaCorrente.s[contatore] = ; contatore = contatore + 1; /* confronta prima parola con parola corrente */ if (PrimaParola == ParolaCorrente) /* ricopia seconda parola */ contatore = 0; while (contatore < SecondaParola.lun) printf( %c, SecondaParola.s[contatore]); contatore = contatore + 1; else /* parole differenti, copia Parola corrente */ contatore = 0; while (contatore < ParolaCorrente.lun) printf( %c, ParolaCorrente.s[contatore]); contatore = contatore + 1; printf( %c, ' '); /* in entrambi i casi scrive spazio per separare da parola successiva */ scanf( %c, carattere); /* Inizia la lettura della prossima ParolaCorrente, o legge % */ NB spesso revisioni della prima soluzione portano miglioramenti, anche di efficienza consiglio: non puntare subito a soluzione ottima meglio costruire prima versione semplice e poi migliorarla

Tipi di dato-prima parte

Tipi di dato-prima parte Corso di Fondamenti di Informatica Corso di Laurea in Ingegneria Meccanica (A-K) Tipi di dato-prima parte Ing. Agnese Pinto 1 di 15 Tipi di dato Sommario Tipi di dato Classificazione dei tipi di dato Tipi

Dettagli

Variabili e tipi di dato

Variabili e tipi di dato Variabili e tipi di dato Tutte le variabili devono essere dichiarate, specificandone il tipo La dichiarazione deve precedere l uso Il tipo è un concetto astratto che esprime: L allocazione di spazio per

Dettagli

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1) Strutture Strutture e Unioni DD cap.10 pp.379-391, 405-406 KP cap. 9 pp.361-379 Strutture Collezioni di variabili correlate (aggregati) sotto un unico nome Possono contenere variabili con diversi nomi

Dettagli

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale

Dettagli

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0 Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice

Dettagli

LINGUAGGI DI PROGRAMMAZIONE

LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di

Dettagli

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

Dettagli

Corso di Fondamenti di Informatica

Corso di Fondamenti di Informatica Corso di Fondamenti di Informatica I tipi strutturati: gli array e le strutture Claudio De Stefano - Corso di Fondamenti di Informatica 1 arrays un array (o vettore) è una sequenza di oggetti dello stesso

Dettagli

Informatica. Rappresentazione dei numeri Numerazione binaria

Informatica. Rappresentazione dei numeri Numerazione binaria Informatica Rappresentazione dei numeri Numerazione binaria Sistemi di numerazione Non posizionali: numerazione romana Posizionali: viene associato un peso a ciascuna posizione all interno della rappresentazione

Dettagli

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 02 Tipi semplici in C

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 02 Tipi semplici in C Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009 Lab 02 Tipi semplici in C Obiettivo dell esercitazione Acquistare familiarità con i tipi di dato semplici supportati

Dettagli

Alcune regole di base per scrivere un programma in linguaggio C

Alcune regole di base per scrivere un programma in linguaggio C Alcune regole di base per scrivere un programma in linguaggio C Un programma il linguaggio C (listato) viene scritto in formato testo ed archiviato in un file: *.c Per scrivere un listato C si utilizza

Dettagli

Esercizi di programmazione in C

Esercizi di programmazione in C Esercizi di programmazione in C Esercizio 1 Scrivere un programma in linguaggio C che legga da tastiera una sequenza di lunghezza ignota a priori di numeri interi positivi. Il programma, a partire dal

Dettagli

NB L uso delle istruzioni condizionali annidate causa rischio di ambiguità quando qualcuna di loro manca del ramo else:

NB L uso delle istruzioni condizionali annidate causa rischio di ambiguità quando qualcuna di loro manca del ramo else: Si vuole costruire un programma che legga tre numeri dall ingresso, quindi verifichi che questi possano essere la lunghezza dei tre lati di un triangolo (la lunghezza di ogni lato deve essere minore della

Dettagli

2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore.

2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore. 1 Esercizio 1 1. Immaginate di avere una calcolatore che invece che poter rappresentare i classici due valori per ogni bit (0/1) possa rappresentare 7 valori per ogni bit. (a) Quanti bit gli occorreranno

Dettagli

INFORMATICA - I puntatori Roberta Gerboni

INFORMATICA - I puntatori Roberta Gerboni 1 2 I puntatori in C++ Il puntatore un tipo di dato scalare, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Dominio: Il dominio di una variabile di tipo puntatore è un

Dettagli

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Dall Algoritmo al Programma Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni IL PROGRAMMA Gli algoritmi sono modelli di descrizione astratti e per controllarne il funzionamento devono essere

Dettagli

La selezione binaria

La selezione binaria Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Introduzione L esecuzione di tutte le istruzioni in sequenza può non è sufficiente per

Dettagli

Alfabeto ed elementi lessicali del linguaggio C

Alfabeto ed elementi lessicali del linguaggio C Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2015-2016 Alfabeto ed elementi lessicali del linguaggio C Pietro Di Lena - pietro.dilena@unibo.it s t a t i c s h o r t l e g s ; i n

Dettagli

Linguaggio C. Fondamenti. Struttura di un programma.

Linguaggio C. Fondamenti. Struttura di un programma. Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C La nascita del linguaggio C fu dovuta all esigenza di disporre di un Linguaggio ad alto livello adatto alla realizzazione

Dettagli

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto: Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante

Dettagli

Esercitazione Informatica I AA 2012-2013. Nicola Paoletti

Esercitazione Informatica I AA 2012-2013. Nicola Paoletti Esercitazione Informatica I AA 2012-2013 Nicola Paoletti 4 Gigno 2013 2 Conversioni Effettuare le seguenti conversioni, tenendo conto del numero di bit con cui si rappresenta il numero da convertire/convertito.

Dettagli

Elementi di informatica

Elementi di informatica Elementi di informatica Sistemi di numerazione posizionali Rappresentazione dei numeri Rappresentazione dei numeri nei calcolatori rappresentazioni finalizzate ad algoritmi efficienti per le operazioni

Dettagli

Informazione analogica e digitale

Informazione analogica e digitale L informazione L informazione si può: rappresentare elaborare gestire trasmettere reperire L informatica offre la possibilità di effettuare queste operazioni in modo automatico. Informazione analogica

Dettagli

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c Caratteristiche MATLAB Linguaggio di programmazione orientato all elaborazione di matrici (MATLAB=MATrix LABoratory) Le variabili sono matrici (una variabile scalare equivale ad una matrice di dimensione

Dettagli

Le variabili. Olga Scotti

Le variabili. Olga Scotti Le variabili Olga Scotti Cos è una variabile Le variabili, in un linguaggio di programmazione, sono dei contenitori. Possono essere riempiti con un valore che poi può essere riletto oppure sostituito.

Dettagli

Corso di Programmazione I dati nei linguaggi di programmazione Tipi Semplici. I dati nei linguaggi di programmazione. Dati. Dott.

Corso di Programmazione I dati nei linguaggi di programmazione Tipi Semplici. I dati nei linguaggi di programmazione. Dati. Dott. Materiale didattico preparato dal dott. Stefano Ferilli Corso di Programmazione I dati nei linguaggi di programmazione Tipi Semplici Dott. Pasquale Lops lops@di.uniba.it Corso di Programmazione - DIB 1/49

Dettagli

Codifica binaria dei numeri

Codifica binaria dei numeri Codifica binaria dei numeri Caso più semplice: in modo posizionale (spesso detto codifica binaria tout court) Esempio con numero naturale: con 8 bit 39 = Codifica in virgola fissa dei numeri float: si

Dettagli

3. La sintassi di Java

3. La sintassi di Java pag.9 3. La sintassi di Java 3.1 I tipi di dati statici In Java, come in Pascal, esistono tipi di dati statici predefiniti e sono i seguenti: byte 8 bit da -128 a 127 short 16 bit coincide con l integer

Dettagli

Corso di Calcolo Numerico

Corso di Calcolo Numerico Corso di Calcolo Numerico Dott.ssa M.C. De Bonis Università degli Studi della Basilicata, Potenza Facoltà di Ingegneria Corso di Laurea in Ingegneria Meccanica Sistemi di Numerazione Sistema decimale La

Dettagli

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Università di Roma Tre Facoltà di Scienze M.F.N. Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica Laboratorio di Informatica Introduzione a Python Dottore Paolo Parisen Toldin - parisent@cs.unibo.it Argomenti trattati Che cosa è python Variabili Assegnazione Condizionale Iterazione in una lista di

Dettagli

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell

Dettagli

Rappresentazione dell informazione Codifica Binaria

Rappresentazione dell informazione Codifica Binaria Fondamenti di Informatica Rappresentazione dell informazione Codifica Binaria Fondamenti di Informatica - D. Talia - UNICAL 1 Rappresentazione dell informazione Tutta l'informazione in un calcolatore è

Dettagli

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine

Dettagli

SISTEMI DI NUMERAZIONE E CODICI

SISTEMI DI NUMERAZIONE E CODICI SISTEMI DI NUMERAZIONE E CODICI Il Sistema di Numerazione Decimale Il sistema decimale o sistema di numerazione a base dieci usa dieci cifre, dette cifre decimali, da O a 9. Il sistema decimale è un sistema

Dettagli

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Dipartimento di Elettronica, Informazione e Bioingegneria Informatica B Sezione D Franchi Alessio Mauro,

Dettagli

void funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }

void funzioneprova() { int x=2; cout<<dentro la funzione x=<<x<<endl; } FUNZIONI 57. Cosa servono le funzioni? A spezzare il programma in diverse parti relativamente indipendenti fra loro, ovvero interagenti sono attraverso i parametri di input ed IL VALORE di uscita. In questo

Dettagli

Richiesta pagina PHP (es: index.php)

Richiesta pagina PHP (es: index.php) PHP PHP = personal home page SERVER Richiesta pagina PHP (es: index.php) Server Web (Apache) in ascolto sulla porta 80, si accorge che la pagina richiesta è una pagina PHP in base all'estensione o con

Dettagli

I sistemi di numerazione

I sistemi di numerazione I sistemi di numerazione 01-INFORMAZIONE E SUA RAPPRESENTAZIONE Sia dato un insieme finito di caratteri distinti, che chiameremo alfabeto. Utilizzando anche ripetutamente caratteri di un alfabeto, si possono

Dettagli

Appunti sulla Macchina di Turing. Macchina di Turing

Appunti sulla Macchina di Turing. Macchina di Turing Macchina di Turing Una macchina di Turing è costituita dai seguenti elementi (vedi fig. 1): a) una unità di memoria, detta memoria esterna, consistente in un nastro illimitato in entrambi i sensi e suddiviso

Dettagli

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile Problemi connessi all utilizzo di un numero di bit limitato Abbiamo visto quali sono i vantaggi dell utilizzo della rappresentazione in complemento alla base: corrispondenza biunivoca fra rappresentazione

Dettagli

dall argomento argomento della malloc()

dall argomento argomento della malloc() Allocazione dinamica Quando? Tutte le volte in cui i dati possono crescere in modo non prevedibile staticamente a tempo di sviluppo Un array con dimensione i fissata a compile-time non è sufficiente È

Dettagli

2. Codifica dell informazione

2. Codifica dell informazione 2. Codifica dell informazione Codifica Una codifica è una regola per associare in modo univoco i valori di un dato da codificare con sequenze di simboli. La corrispondenza definita dalla codifica è arbitraria,

Dettagli

Codici Numerici. Modifica dell'informazione. Rappresentazione dei numeri.

Codici Numerici. Modifica dell'informazione. Rappresentazione dei numeri. Codici Numerici. Modifica dell'informazione. Rappresentazione dei numeri. A partire da questa lezione, ci occuperemo di come si riescono a codificare con sequenze binarie, quindi con sequenze di 0 e 1,

Dettagli

Alessandro Pellegrini

Alessandro Pellegrini Esercitazione sulle Rappresentazioni Numeriche Esistono 1 tipi di persone al mondo: quelli che conoscono il codice binario e quelli che non lo conoscono Alessandro Pellegrini Cosa studiare prima Conversione

Dettagli

Lezione 8. La macchina universale

Lezione 8. La macchina universale Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione

Dettagli

Rappresentazione delle informazioni

Rappresentazione delle informazioni Rappresentazione delle informazioni Abbiamo informazioni (numeri, caratteri, immagini, suoni, video... ) che vogliamo rappresentare (e poter elaborare) in un calcolatore. Per motivi tecnologici un calcolatore

Dettagli

LABORATORIO DI PROGRAMMAZIONE 2012 2013 EDIZIONE 1, TURNO B

LABORATORIO DI PROGRAMMAZIONE 2012 2013 EDIZIONE 1, TURNO B LABORATORIO DI PROGRAMMAZIONE 2012 2013 EDIZIONE 1, TURNO B 23.XI.2012 VINCENZO MARRA Indice Esercizio 1 1 Menu 1 Tempo: 35 min. 2 Commento 1 2 Esercizio 2 2 Ordinamento e ricerca binaria con la classe

Dettagli

Obiettivi dell Analisi Numerica. Avviso. Risoluzione numerica di un modello. Analisi Numerica e Calcolo Scientifico

Obiettivi dell Analisi Numerica. Avviso. Risoluzione numerica di un modello. Analisi Numerica e Calcolo Scientifico M. Annunziato, DIPMAT Università di Salerno - Queste note non sono esaustive ai fini del corso p. 3/43 M. Annunziato, DIPMAT Università di Salerno - Queste note non sono esaustive ai fini del corso p.

Dettagli

Sistemi di Numerazione Binaria NB.1

Sistemi di Numerazione Binaria NB.1 Sistemi di Numerazione Binaria NB.1 Numeri e numerali Numero: entità astratta Numerale : stringa di caratteri che rappresenta un numero in un dato sistema di numerazione Lo stesso numero è rappresentato

Dettagli

L espressione torna invece sempre vera (quindi la soluzione originale) se cambiamo contemporaneamente il verso: 1 < 0.

L espressione torna invece sempre vera (quindi la soluzione originale) se cambiamo contemporaneamente il verso: 1 < 0. EQUAZIONI E DISEQUAZIONI Le uguaglianze fra espressioni numeriche si chiamano equazioni. Cercare le soluzioni dell equazione vuol dire cercare quelle combinazioni delle lettere che vi compaiono che la

Dettagli

Rappresentazione di informazioni con un alfabeto finito

Rappresentazione di informazioni con un alfabeto finito Rappresentazione di informazioni con un alfabeto finito Sia A = { a 1,, a k } un insieme (alfabeto) di k simboli, detti anche lettere. Quante sono le sequenze composte da n simboli (anche ripetuti) di

Dettagli

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Algoritmi Algoritmi Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Il procedimento (chiamato algoritmo) è composto da passi elementari

Dettagli

(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, 7155 2 = 1, 431 0, 431 2 = 0, 862 0, 896 2 = 1, 792 0, 724 2 = 1, 448 0, 448 2 = 0, 896

(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, 7155 2 = 1, 431 0, 431 2 = 0, 862 0, 896 2 = 1, 792 0, 724 2 = 1, 448 0, 448 2 = 0, 896 2 Esercizio 2.2 La rappresentazione esadecimale prevede 16 configurazioni corrispondenti a 4 bit. Il contenuto di una parola di 16 bit può essere rappresentato direttamente con 4 digit esadecimali, sostituendo

Dettagli

Introduzione al Linguaggio C

Introduzione al Linguaggio C Introduzione al Linguaggio C File I/O Daniele Pighin April 2009 Daniele Pighin Introduzione al Linguaggio C 1/15 Outline File e dati Accesso ai file File I/O Daniele Pighin Introduzione al Linguaggio C

Dettagli

Dati testuali. Caratteri e stringhe. Tipi di dato testuali. Dati testuali. Il sistema dei tipi C. Rappresentazione dei testi

Dati testuali. Caratteri e stringhe. Tipi di dato testuali. Dati testuali. Il sistema dei tipi C. Rappresentazione dei testi Tipi di dato testuali Caratteri Stringhe Caratteri e stringhe 5 Tipi di dato testuali I programmi visti finora erano in grado di elaborare esclusivamente informazioni numeriche Numeri eri (), numeri reali

Dettagli

Rappresentazione dei numeri in un calcolatore

Rappresentazione dei numeri in un calcolatore Corso di Calcolatori Elettronici I A.A. 2010-2011 Rappresentazione dei numeri in un calcolatore Lezione 2 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Rappresentazione dei numeri

Dettagli

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 17.XI.2015

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 17.XI.2015 APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 17.XI.2015 VINCENZO MARRA Indice Esercizio 1 1 Conversione di un numero naturale in base b.

Dettagli

ESEMPIO 1: eseguire il complemento a 10 di 765

ESEMPIO 1: eseguire il complemento a 10 di 765 COMPLEMENTO A 10 DI UN NUMERO DECIMALE Sia dato un numero N 10 in base 10 di n cifre. Il complemento a 10 di tale numero (N ) si ottiene sottraendo il numero stesso a 10 n. ESEMPIO 1: eseguire il complemento

Dettagli

SCHEDA DI RECUPERO SUI NUMERI RELATIVI

SCHEDA DI RECUPERO SUI NUMERI RELATIVI SCHEDA DI RECUPERO SUI NUMERI RELATIVI I numeri relativi sono l insieme dei numeri negativi (preceduti dal segno -) numeri positivi (il segno + è spesso omesso) lo zero. Valore assoluto di un numero relativo

Dettagli

Arduino: Programmazione

Arduino: Programmazione Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite

Dettagli

Verifica della correttezza formale del numero di partita IVA

Verifica della correttezza formale del numero di partita IVA Verifica della correttezza formale del numero di partita IVA A tutti i soggetti che intraprendono un attività rilevante ai fini Iva (impresa, arte, professione), al momento della presentazione della dichiarazione

Dettagli

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE LE SUCCESSIONI 1. COS E UNA SUCCESSIONE La sequenza costituisce un esempio di SUCCESSIONE. Ecco un altro esempio di successione: Una successione è dunque una sequenza infinita di numeri reali (ma potrebbe

Dettagli

+ / operatori di confronto (espressioni logiche/predicati) / + 5 3 9 = > < Pseudo codice. Pseudo codice

+ / operatori di confronto (espressioni logiche/predicati) / + 5 3 9 = > < Pseudo codice. Pseudo codice Pseudo codice Pseudo codice Paolo Bison Fondamenti di Informatica A.A. 2006/07 Università di Padova linguaggio testuale mix di linguaggio naturale ed elementi linguistici con sintassi ben definita e semantica

Dettagli

Definizione di nuovi tipi in C

Definizione di nuovi tipi in C Definizione di nuovi tipi in C typedef Ancora sui tipi di dato Ogni elaboratore è intrinsecamente capace di trattare domini di dati di tipi primitivi numeri naturali, interi, reali caratteri e stringhe

Dettagli

Fondamenti di Informatica T. Linguaggio C: i puntatori

Fondamenti di Informatica T. Linguaggio C: i puntatori Linguaggio C: i puntatori Il puntatore E` un tipo di dato scalare, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Dominio: Il dominio di una variabile di tipo puntatore

Dettagli

Sistema operativo: Gestione della memoria

Sistema operativo: Gestione della memoria Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Sistema operativo: Gestione della memoria La presente dispensa e

Dettagli

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto Università degli studi di Camerino Scuola di scienze e tecnologia - Sezione Informatica Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto LEZIONE

Dettagli

Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013

Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013 Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013 In questo documento vengono illustrate brevemente le operazioni aritmetiche salienti e quelle logiche ad esse strettamente collegate.

Dettagli

Tipo di dato. Ci siamo già imbattuti in questo concetto. Definizione generale di tipo di dato

Tipo di dato. Ci siamo già imbattuti in questo concetto. Definizione generale di tipo di dato Tipi di dati Tipo di dato Ci siamo già imbattuti in questo concetto tipo di dato = tipo di informazione alcuni tipi: interi, reali, caratteri, array, ma anche: fatture, conti correnti, pagine web, Quanti

Dettagli

Codifica: dal diagramma a blocchi al linguaggio C++

Codifica: dal diagramma a blocchi al linguaggio C++ Codifica: dal diagramma a blocchi al linguaggio C++ E necessario chiarire inizialmente alcuni concetti. La compilazione Il dispositivo del computer addetto all esecuzione dei programmi è la CPU La CPU

Dettagli

Puntatori Passaggio di parametri per indirizzo

Puntatori Passaggio di parametri per indirizzo Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Puntatori Passaggio di parametri per indirizzo Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica

Dettagli

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE NOME: COGNOME: ============================================================== Esercizio 1 ci sono tante "righe"; non è detto servano tutte...

Dettagli

Introduzione al MATLAB c Parte 2

Introduzione al MATLAB c Parte 2 Introduzione al MATLAB c Parte 2 Lucia Gastaldi Dipartimento di Matematica, http://dm.ing.unibs.it/gastaldi/ 18 gennaio 2008 Outline 1 M-file di tipo Script e Function Script Function 2 Costrutti di programmazione

Dettagli

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................

Dettagli

LA RAPPRESENTAZIONE DELLE INFORMAZIONI

LA RAPPRESENTAZIONE DELLE INFORMAZIONI ISTITUTO TECNICO E LICEO SCIENTIFICO TECNOLOGICO ANGIOY LA RAPPRESENTAZIONE DELLE INFORMAZIONI Prof. G. Ciaschetti DATI E INFORMAZIONI Sappiamo che il computer è una macchina stupida, capace di eseguire

Dettagli

ISTITUTO TECNICO INDUSTRIALE STATALE LA GESTIONE DEI FILE DI TESTO IN C++

ISTITUTO TECNICO INDUSTRIALE STATALE LA GESTIONE DEI FILE DI TESTO IN C++ ISTITUTO TECNICO INDUSTRIALE STATALE G A L I L E O F E R R A R I S DIISPENSA DII IINFORMATIICA E SIISTEMII AUTOMATIICII LA GESTIONE DEI FILE DI TESTO IN C++ Le classi per la gestione dei file. Il C++ è

Dettagli

Logica e codifica binaria dell informazione

Logica e codifica binaria dell informazione Politecnico di Milano Corsi di Laurea in Ingegneria Matematica e Ingegneria Fisica Dipartimento di Elettronica ed Informazione Logica e codifica binaria dell informazione Anno Accademico 2002 2003 L. Muttoni

Dettagli

ESAME SCRITTO DI ELEMENTI DI INFORMATICA E PROGRAMMAZIONE. 27 Gennaio 2015

ESAME SCRITTO DI ELEMENTI DI INFORMATICA E PROGRAMMAZIONE. 27 Gennaio 2015 COGNOME E NOME: MATRICOLA: Civile Ambiente e Territorio Non si possono consultare manuali, appunti e calcolatrici. Esercizio 1: [3 punto] Rappresentare i numeri 36 e 91 (in base 10) in notazione binaria

Dettagli

11010010 = 1*2^7 + 1*2^6 + 0*2^5 + 1*2^4 + 0*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 210

11010010 = 1*2^7 + 1*2^6 + 0*2^5 + 1*2^4 + 0*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 210 Il sistema BINARIO e quello ESADECIMALE. Il sistema di numerazione binario è particolarmente legato ai calcolatori in quanto essi possono riconoscere solo segnali aventi due valori: uno alto e uno basso;

Dettagli

Introduzione. Rappresentazione di numeri in macchina, condizion

Introduzione. Rappresentazione di numeri in macchina, condizion Introduzione. Rappresentazione di numeri in macchina, condizionamento e stabilità Dipartimento di Matematica tel. 011 0907503 stefano.berrone@polito.it http://calvino.polito.it/~sberrone Laboratorio di

Dettagli

Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione Elementi di Informatica e Programmazione La Codifica dell informazione (parte 1) Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Docente:

Dettagli

Università degli Studi di Cassino Corso di Fondamenti di Informatica Puntatori. Anno Accademico 2010/2011 Francesco Tortorella

Università degli Studi di Cassino Corso di Fondamenti di Informatica Puntatori. Anno Accademico 2010/2011 Francesco Tortorella Corso di Informatica Puntatori Anno Accademico 2010/2011 Francesco Tortorella Variabili, registri ed indirizzi Abbiamo visto che la definizione di una variabile implica l allocazione (da parte del compilatore)

Dettagli

INFORMATICA 1 L. Mezzalira

INFORMATICA 1 L. Mezzalira INFORMATICA 1 L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software del modello

Dettagli

Algoritmi e strutture dati. Codici di Huffman

Algoritmi e strutture dati. Codici di Huffman Algoritmi e strutture dati Codici di Huffman Memorizzazione dei dati Quando un file viene memorizzato, esso va memorizzato in qualche formato binario Modo più semplice: memorizzare il codice ASCII per

Dettagli

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware COS È UN LINGUAGGIO? Un linguaggio è un insieme di parole e di metodi di combinazione delle

Dettagli

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO SISTEMI DI NUMERAZIONE DECIMALE E BINARIO Il sistema di numerazione decimale (o base dieci) possiede dieci possibili valori (0, 1, 2, 3, 4, 5, 6, 7, 8 o 9) utili a rappresentare i numeri. Le cifre possiedono

Dettagli

FONDAMENTI di INFORMATICA L. Mezzalira

FONDAMENTI di INFORMATICA L. Mezzalira FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software

Dettagli

Concetto di Funzione e Procedura METODI in Java

Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile

Dettagli

Esempi ed esercizi Aritmetica degli elaboratori e algebra di commutazione

Esempi ed esercizi Aritmetica degli elaboratori e algebra di commutazione Esempi ed esercizi Aritmetica degli elaboratori e algebra di commutazione Fondamenti di Informatica Michele Ceccarelli Università del Sannio ceccarelli@unisannio.it Angelo Ciaramella DMI-Università degli

Dettagli

Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi

Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi TIPI DI DATO Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi numeri naturali, interi, reali caratteri e stringhe di caratteri e quasi sempre anche collezioni di oggetti,

Dettagli

Programmazione I - Laboratorio

Programmazione I - Laboratorio Programmazione I - Laboratorio Esercitazione 2 - Funzioni Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti di.unipi.it 2.

Dettagli

APPUNTI SUL LINGUAGGIO DI PROGRAMMAZIONE PASCAL

APPUNTI SUL LINGUAGGIO DI PROGRAMMAZIONE PASCAL APPUNTI SUL LINGUAGGIO DI PROGRAMMAZIONE PASCAL In informatica il Pascal è un linguaggio di programmazione creato da Niklaus Wirth ed é un linguaggio di programmazione strutturata. I linguaggi di programmazione

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 05 La rappresentazione dell informazione Carla Limongelli Ottobre 2011 http://www.dia.uniroma3.it/~java/fondinf/ La rappresentazione

Dettagli

Parte 1. Vettori di bit - AA. 2012/13 1.1

Parte 1. Vettori di bit - AA. 2012/13 1.1 1.1 Parte 1 Vettori di bit 1.2 Notazione posizionale Ogni cifra assume un significato diverso a seconda della posizione in cui si trova Rappresentazione di un numero su n cifre in base b: Posizioni a n

Dettagli

LE FUNZIONI A DUE VARIABILI

LE FUNZIONI A DUE VARIABILI Capitolo I LE FUNZIONI A DUE VARIABILI In questo primo capitolo introduciamo alcune definizioni di base delle funzioni reali a due variabili reali. Nel seguito R denoterà l insieme dei numeri reali mentre

Dettagli

1 Serie di Taylor di una funzione

1 Serie di Taylor di una funzione Analisi Matematica 2 CORSO DI STUDI IN SMID CORSO DI ANALISI MATEMATICA 2 CAPITOLO 7 SERIE E POLINOMI DI TAYLOR Serie di Taylor di una funzione. Definizione di serie di Taylor Sia f(x) una funzione definita

Dettagli

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti Nascita di Java L uscita di Java, verso la metà degli anni novanta, fu accolta con molto entusiasmo dalla comunità dei programmatori e dei provider di servizi internet perché permetteva agli utenti del

Dettagli

Trattamento delle STRINGHE in C(++)

Trattamento delle STRINGHE in C(++) Trattamento delle STRINGHE in C(++) Le cose che qui vengono dette valgono sia per il linguaggio C che per il C++. Nel linguaggio C non esiste, a differenza di quel che avviene per altri linguaggi di programmazione

Dettagli