Libreria standard Concetti chiave

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Libreria standard Concetti chiave"

Transcript

1 Libreria standard B Concetti chiave File d intestazione standard Diagnostica Numeri complessi Controllo e conversione di caratteri Segnalazioni di errore Ambiente in virgola mobile Caratteristiche dei tipi in virgola mobile Tipi interi Spelling alternativo Limiti numerici dell ambiente di esecuzione Parametri di localizzazione Funzioni matematiche in doppia precisione Salti non locali Gestione segnali Gestione lista di argomenti variabili in numero e tipo Definizioni standard Interi Input e Output Utilità generale Gestione di stringhe Matematica dei tipi generici Gestione della data e dell ora Utility per caratteri estesi e multibyte Utility per la configurazione dei caratteri estesi

2 A02w2 / Appendice B Libreria standard Per utilizzare una funzione di libreria si deve includere, con la direttiva del preprocessore #include, l header in cui è dichiarata. #include <nomefile> Ogni header, o file d intestazione, contiene dichiarazioni prototype di un insieme di funzioni correlate nonché della macro e dei tipi dati necessari al loro uso. Invece le definizioni delle funzioni sono a carico e quindi dipendono dalle differenti implementazioni. Gli header previsti dallo standard sono: <assert.h> <limits.h> <stdbool.h> <threads.h> <complex.h> <locale.h> <stddef.h> <time.h> <ctype.h> <math.h> <stdint.h> <uchar.h> <errno.h> <setjmp.h> <stdio.h> <wchar.h> <fenv.h> <signal.h> <stdlib.h> <wctype.h> <float.h> <stdalign.h> <stdnoreturn.h> <inttypes.h> <stdarg.h> <string.h> <iso646.h> <stdatomic.h> <tgmath.h> Di seguito riportiamo una breve descrizione di ogni libreria standard, accompagnata dal riferimento ai capitoli dove è trattata nel testo. Il documento di riferimento da cui sono stati tratti i contenuti è l ISO/IEC 9899:2011. <assert.h> Diagnostica Comprende: NDEBUG static_assert e la dichiarazione della macro che aiuta la diagnostica dei programmi: void assert(scalare espressione) Attenzione: si tratta di una macro, non di una fuzione. Lo standard indica con scalare un tipo numerico intero, se l implementazione utilizza per il tipo un int si ha void assert(int espressione). In fase di esecuzione se espressione è falsa, cioè espressione è uguale a zero, assert scrive sullo standard error, per esempio il video, delle informazioni utili per la diagnostica del programma quali: l argomento della assert (il testo di espressione), il nome del file sorgente e il numero di riga del file sorgente; questi ultimi sono rispettivamente i valori delle macro FILE e LINE. Viene poi richiamata la funzione abort dichiarata in stdlib.h che termina l esecuzione del programma. Se la direttiva #NDEBUG (No Debug) è presente nel file sorgente in cui è inclusa <assert.h> la macro assert non ha alcun effetto, infatti è espansa in #define assert(ignore) ((void)0), dunque la macro è ridefinita in base alla presenza o meno di NDEBUG. Si veda il Capitolo 24 per l uso di assert, il Capitoli 23 per FILE, LI- NE e le macroistruzioni in generale, il Capitolo 17 per lo standard error.

3 Libreria standard / A02w3 <complex.h> Numeri complessi Contiene la dichiarazione di funzioni e la definizione di macro che supportano l aritmetica dei numeri complessi. STDC_NO_COMPLEX imaginary complex _Imaginary_I _Complex_I I Le implementazioni che definiscono la macro STDC_NO_COMPLEX non hanno la necessità di fornire questo file di intestazione e non supportano le funzionalità di complex.h. La macro complex è espansa in _Complex. La macro _Complex_I che è espansa in un espressione costante di tipo const float _Complex, con il valore dell unità immaginaria. Le macro imaginary e _Imaginary_I sono definite se e solo se l implementazione supporta i tipi immaginari, se sono definite sono espanse in Imaginary e in un espressione costante di tipo const float _Imaginary con il valore dell unità immaginaria. La macro I si espande in _Imaginary_I o in _Complex_I. Se _Imaginary_I non è definito, I si deve espandere in _Complex_I. #pragma STDC CX_LIMITED_RANGE on-off-switch Le usuali formule matematiche sui valori complessi presentano delle criticità a causa degli overflow che si possono produrre nel calcolo di moltiplicazioni, divisioni e valori assoluti. La direttiva è usata per informare l implementazione, nel caso di on, che possono essere utilizzate le usuali formule matematiche. Il default è off. double complex cacos(double complex z) Arcocoseno complesso di z con dei punti di diramazione al di fuori dell intervallo [-1,+1] lungo l asse reale. Il valore restituito risiede nella striscia priva di confini lungo l asse immaginario e delimitata dall intervallo [0, π] lungo l asse reale. La "c" iniziale nel nome di tutte le funzioni della libreria sta per complesso. double complex casin(double complex z) Arcoseno (sine) complesso di z con i punti di diramazione al di fuori dell intervallo [-1,+1] lungo l asse reale. Il valore restituito risiede su una striscia priva di confini lungo l asse immaginario e delimitata dall intervallo [-π /2, + π /2] lungo l asse reale. double complex catan(double complex z) Arctangente complessa di z, con i punti di diramazione al di fuori dell intervallo [-i, +i] lungo l asse immaginario. Il valore restituito risiede su una striscia priva di confini lungo l asse immaginario e delimitata dall intervallo [-π /2,+ π /2] lungo l asse reale. double complex ccos(double complex z) Coseno complesso di z. double complex csin(double complex z) Seno complesso di z.

4 A02w4 / Appendice B double complex ctan(double complex z) Tangente complessa di z. double complex cacosh(double complex z) Arcocoseno iperbolico (sine hyperbolic) complesso di z, con un punto di diramazione ai valori minori di 1 lungo l asse reale. Il valore restituito risiede nella semistriscia dei valori non negativi lungo l asse reale e nell intervallo [-i π, +i π] lungo l asse immaginario. double complex casinh(double complex z) Arcoseno iperbolico (hyperbolic) complesso di z, con dei punti di diramazione al di fuori dell intervallo [-i, +i] lungo l asse immaginario. Il valore restituito risiede su una striscia priva di confini lungo l asse reale e delimitata dall intervallo [-i π/2, +i π/2] lungo l asse immaginario. double complex catanh(double complex z) Arcotangente iperbolico (hyperbolic) complessa di z, con dei punti di diramazione al di fuori dell intervallo [-1, +1] lungo l asse reale. Il valore restituito risiede su una striscia priva di confini lungo l asse reale e delimitata dall intervallo [-i π/2, +i π/2] lungo l asse immaginario. double complex ccosh(double complex z) Coseno iperbolico complesso di z. double complex csinh(double complex z) Seno iperbolico complesso di z. double complex ctanh(double complex z) Tangente iperbolica complessa di z. double complex cexp(double complex z) Esponenziale complesso di e in base z. double complex clog(double complex z) Logaritmo naturale (base e) di z, con un punto di diramazione lungo l asse reale negativo. Il valore restituito risiede su una striscia priva di confini lungo l asse reale e delimitata dall intervallo [-iπ, +iπ] lungo l asse immaginario. double cabs(double complex z) Valore assoluto (absolute) complesso di z. double complex cpow(double complex x, double complex y) x elevato alla potenza di y, con un punto di ramificazione per il primo parametro lungo la porzione negativa dell asse reale. double complex csqrt(double complex z) Radice quadrata complessa di z, con punto di diramazione lungo la parte negativa dell asse reale. double carg(double complex z) Calcola l argomento (angolo di fase) di z, con un punto di diramazione lungo l asse immaginario negativo. Il valore restituito risiede nell intervallo [-π, +π]. double cimag(double complex z)

5 Libreria standard / A02w5 Restituiscono la parte immaginaria di z. double complex CMPLX(double x, double y) È una macro espansa in un espressione di tipo double complesso, con la parte reale che ha il valore (convertito) di x e la parte immaginaria che ha il valore (convertito) di y. double complex conj(double complex z) Restituisce il coniugato complesso di z. double complex cproj(double complex z) Restituisce la proiezione di z sulla sfera di Riemann. Viene restituito z a meno che una delle sue parti non sia infinita, in tal caso il valore restituito è IN- FINITY+I*copysign(0.0,cimag(z)). La macro INFINITY è espansa a un espressione constante che rappresenta un valore infinito, Le funzioni cpoysign restituisce il valore assoluto di x e il segno di y, per entrambe si veda math.h. double creal(double complex z) Restituisce la parte reale proiezione di z. Segue l elenco di tutte le funzioni. double complex cacos(double complex z); float complex cacosf(float complex z); long double complex cacosl(long double complex z); double complex casin(double complex z); float complex casinf(float complex z); long double complex casinl(long double complex z); double complex catan(double complex z); float complex catanf(float complex z); long double complex catanl(long double complex z); double complex ccos(double complex z); float complex ccosf(float complex z); long double complex ccosl(long double complex z); double complex csin(double complex z); float complex csinf(float complex z); long double complex csinl(long double complex z); double complex ctan(double complex z); float complex ctanf(float complex z); long double complex ctanl(long double complex z); double complex cacosh(double complex z); float complex cacoshf(float complex z); long double complex cacoshl(long double complex z); double complex casinh(double complex z); float complex casinhf(float complex z); long double complex casinhl(long double complex z);

6 A02w6 / Appendice B double complex catanh(double complex z); float complex catanhf(float complex z); long double complex catanhl(long double complex z); double complex ccosh(double complex z); float complex ccoshf(float complex z); long double complex ccoshl(long double complex z); double complex csinh(double complex z); float complex csinhf(float complex z); long double complex csinhl(long double complex z); double complex ctanh(double complex z); float complex ctanhf(float complex z); long double complex ctanhl(long double complex z); double complex cexp(double complex z); float complex cexpf(float complex z); long double complex cexpl(long double complex z); double complex clog(double complex z); float complex clogf(float complex z); long double complex clogl(long double complex z); double cabs(double complex z); float cabsf(float complex z); long double cabsl(long double complex z); double complex cpow(double complex x, double complex y); float complex cpowf(float complex x, float complex y); long double complex cpowl(long double complex x, long double complex y); double complex csqrt(double complex z); float complex csqrtf(float complex z); long double complex csqrtl(long double complex z); double carg(double complex z); float cargf(float complex z); long double cargl(long double complex z); double cimag(double complex z); float cimagf(float complex z); long double cimagl(long double complex z); double complex CMPLX(double x, double y); float complex CMPLXF(float x, float y); long double complex CMPLXL(long double x, long double y); double complex conj(double complex z); float complex conjf(float complex z); long double complex conjl(long double complex z); double complex cproj(double complex z);

7 Libreria standard / A02w7 float complex cprojf(float complex z); long double complex cprojl(long double complex z); double creal(double complex z); float crealf(float complex z); long double creall(long double complex z); <ctype.h> Controllo e conversione caratteri Molte funzioni delle libreria restituiscono un valore diverso da zero, vero, se il valore dell argomento c fa parte di un certo insieme di caratteri esplicitati dal nome della funzione stessa. Per esempio: isdigit(c) ritorna un valore diverso da zero se c è una cifra decimale (is a digit); analogamente operano le altre funzioni. int isalnum(int c) È un carattere alfanumerico? Caratteri veri per isalpha o isdigit. int isalpha(int c) È un carattere alfabetico? Caratteri veri per isupper o islower. int isblank(int c) È un carattere standard bianco o è un carattere, compreso in uno specifico insieme di caratteri definito localmente, per cui isspace è vero e che è usato per separare parole su una linea di testo. I caratteri standar bianchi sono lo spazio ' ' e la tabulazione orizzontale '\t'. int iscntrl(int c) È un carattere di controllo? int isdigit(int c) È una cifra decimale? int isgraph(int c) È carattere stampabile (eccetto lo spazio ' ')? int islower(int c) È una lettera minuscola? int isprint(int c) È un carattere stampabile (incluso lo spazio ' ')? int ispunct(int c) È un carattere stampabile (eccetto: spazio ' ', lettera e cifra decimale)? Caratteri non veri per isalnum; isspace(c), spazio bianco standard cioè ' ', '\f', '\n', '\r', '\t', '\v'. int isspace(int c) È uno spazio ' ', '\f', '\n', '\r', '\t', '\v'? int isupper(int c) È una lettera maiuscola? int isxdigit(int c) È una cifra esadecimale?

8 A02w8 / Appendice B Inoltre vi sono dichiarate: int tolower(int c) Converte una lettera maiuscola nella sua corrispondente minuscola se esiste, altrimenti restituisce l argomento inalterato. int toupper(int c) Converte una lettera minuscola nella sua corrispondente maiuscola se esiste, altrimenti restituisce l argomento inalterato. Si vedano soprattutto i Capitoli 5, 6, 7, e 11. <errno.h> Segnalazioni di errore Definisce la variabile errno e le macro EDOM, EILSEQ e ERANGE che si espandono in costanti intere, che rappresentano simbolicamente situazioni di errore. errno Variabile intera. Il valore iniziale che si può leggere da errno è zero (con cui si intende l assenza di qualunque tipo di situazione di errore) e viene modificato dalle funzioni che, di volta in volta, possono avere bisogno di annotare uno stato di errore. EDOM Costante intera. Domain error, errore di dominio: l argomento di una funzione matematica ha un valore al di fuori del dominio previsto. EILSEQ Costante intera. Illegal byte sequence, errore di codifica: la sequenza dei byte che deve rappresentare una certa codifica contiene un errore. ERANGE Costante intera. Range error, errore nell intervallo di valori: il risultato di un espressione matematica non può essere rappresentato nell intervallo di valori previsto (ovvero nella variabile che deve riceverlo). La variabile intera errno può essere utilizzata per il controllo dell errore nella chiamata a quelle funzioni di libreria in cui lo standard documenta l uso di errno. In questo caso il programmatore, prima di una chiamata a una funzione di libreria, dovrebbe assegnarle zero e, prima di chiamarne un altra, controllarne il valore. Se a quel punto il valore di errno è diverso da zero significa che si è verificato un errore in quella funzione. I valori costanti in cui sono espanse le macro EDOM, EILSEQ e ERANGE dipendono dall implementazione, in particolare dalle convenzioni del sistema operativo, lo standard impone soltanto che debbano essere interi positivi distinti. EDOM, EILSEQ e ERANGE sono generalmente utilizzate nelle direttive #if del preprocessore. <errno.h> potrebbe presentarsi così: extern int errno; #define EDOM 33 #define EILSEQ 42 #define ERANGE 34

9 Libreria standard / A02w9 I numeri associati alle macro offrono solo un campione, in altro ambiente per esempio con sistema operativo Linux EILSEQ potrebbe essere 84. Lo standard del linguaggio prescrive poche macro-variabili, da cui dipendono le librerie standard, mentre tutte le altre sono competenza delle convenzioni del sistema operativo. <fenv.h> Ambiente floating-point Floating-point Environment. Rende disponibili funzioni, tipi dato e macro per la gestione dei valori in virgola mobile dell implementazione in uso. fenv_t FE_OVERFLOW FE_TOWARDZERO fexcept_t FE_UNDERFLOW FE_UPWARD FE_DIVBYZERO FE_ALL_EXCEPT FE_DFL_ENV FE_INEXACT FE_DOWNWARD FE_INVALID FE_TONEAREST #pragma STDC FENV_ACCESS on-off-switch La direttiva è usata per informare l implementazione, nel caso di on, che un programma può accedere ai all ambiente floating-point. int feclearexcept(int excepts); int fegetexceptflag(fexcept_t *flagp, int excepts); int feraiseexcept(int excepts); int fesetexceptflag(const fexcept_t *flagp, int excepts); int fetestexcept(int excepts); int fegetround(void); int fesetround(int round); int fegetenv(fenv_t *envp); int feholdexcept(fenv_t *envp); int fesetenv(const fenv_t *envp); int feupdateenv(const fenv_t *envp); <float.h> Caratteristiche dei tipi in virgola mobile Definisce alcune costanti che descrivono gli oggetti in virgola mobile (floating point) nell ambiente specifico. Per ogni tipo floating point vi è specificato il valore massimo (il più grande valore positivo rappresentabile), il valore minimo (il più piccolo valore negativo rappresentabile), epsilon (il minimo numero positivo x per cui x!= 0) e la precisione (il numero di cifre decimali di precisione). Per il tipo float, FLT_MAX, FLT_MIN, FLT_EPSILON e FLT_DIG rappresentano rispettivamente i valori massimo, minimo, epsilon e precisione. FLT_ROUNDS DBL_MIN_EXP FLT_MAX FLT_EVAL_METHOD LDBL_MIN_EXP DBL_MAX FLT_RADIX FLT_MIN_10_EXP LDBL_MAX FLT_MANT_DIG DBL_MIN_10_EXP FLT_EPSILON DBL_MANT_DIG LDBL_MIN_10_EXP DBL_EPSILON LDBL_MANT_DIG FLT_MAX_EXP LDBL_EPSILON DECIMAL_DIG DBL_MAX_EXP FLT_MIN

10 A02w10 / Appendice B FLT_DIG LDBL_MAX_EXP DBL_MIN DBL_DIG FLT_MAX_10_EXP LDBL_MIN LDBL_DIG DBL_MAX_10_EXP FLT_MIN_EXP LDBL_MAX_10_EXP Vediamo alcune costanti più da vicino. Costante Significato Valori FLT_RADIX Base della rappresentazione minimo 2 esponenziale FLT_ROUNDS Modo di arrotondamento in virgola mobile float -1 (indeterminabile), 0 (troncamento), arrotondamento al più vicino, arrotondamento verso l infinito positvo, 3 arrotondamento verso l infinito negativo, altri valori per arrontondamenti definiti dall implementazione FLT_DIG Cifre di precisione decimale Almeno 6 float FLT_EPSILON Il più piccolo x tale che 1.0+x Almeno 10-5 è diverso da zero float FLT_MANT_DIG Numero di cifre della mantissa float FLT_MAX Il massimo numero in virgola Almeno mobile float FLT_MAX_EXP Massimo esponente float FLT_MIN Minimo numero in virgola Almeno mobile float FLT_MIN_EXP Minimo esponente float DBL_DIG Cifre di precisione decimale Almeno 10 double DBL_EPSILON Il più piccolo x tale che 1.0+x Almeno 10-9 è diverso da zero double DBL_MANT_DIG Numero di cifre della mantissa double DBL_MAX Il massimo numero in virgola Almeno mobile double DBL_MAX_EXP Massimo esponente double DBL_MIN Minimo numero double Almeno DBL_MIN_EXP Minimo esponente double Si vedano i Capitoli 6, 18 e l Appendice D, quet ultima consultabile sul sito dedicato al volume. <inttypes.h> Tipi interi Include l header <stdint.h> e lo estende con le facilità fornite dall implementazione. Dichiara funzioni per la manipolazione di interi di grandi dimensioni e la conversione di stringhe di caratteri/numeri. Per ogni tipo dichiarato in

11 Libreria standard / A02w11 <stdint. h> definisce corrispondenti macro per specificare la conversione per l uso con funzioni di input/output formattato. FLT_ROUNDS DBL_DIG FLT_MAX FLT_EVAL_METHOD LDBL_DIG DBL_MAX FLT_HAS_SUBNORM FLT_MIN_EXP LDBL_MAX DBL_HAS_SUBNORM DBL_MIN_EXP FLT_EPSILON LDBL_HAS_SUBNORM LDBL_MIN_EXP DBL_EPSILON FLT_RADIX FLT_MIN_10_EXP LDBL_EPSILON FLT_MANT_DIG DBL_MIN_10_EXP FLT_MIN DBL_MANT_DIG LDBL_MIN_10_EXP DBL_MIN LDBL_MANT_DIG FLT_MAX_EXP LDBL_MIN FLT_DECIMAL_DIG DBL_MAX_EXP FLT_TRUE_MIN DBL_DECIMAL_DIG LDBL_MAX_EXP DBL_TRUE_MIN LDBL_DECIMAL_DIG FLT_MAX_10_EXP LDBL_TRUE_MIN DECIMAL_DIG DBL_MAX_10_EXP FLT_DIG LDBL_MAX_10_EXP <iso646.h> Spelling alternativo Definisce le seguenti undici macro che si espandono nei simboli sulla destra: and && and_eq &= bitand & bitor compl ~ not! not_eq!= or or_eq = xor ^ xor_eq ^= <limits.h> Limiti numerici dell ambiente di esecuzione Fornisce alcune costanti che definiscono l ambiente di esecuzione: CHAR_BIT CHAR_MAX CHAR_MIN INT_MAX INT_MIN LLONG_MAX LLONG_MIN LONG_MAX LONG_MIN MB_LEN_MAX SCHAR_MAX SCHAR_MIN SHRT_MAX SHRT_MIN UCHAR_MAX UINT_MAX ULLONG_MAX ULONG_MAX USHRT_MAX Per esempio, INT_MAX e INT_MIN definiscono rispettivamente il massimo e il minimo valore rappresentabile con un int, LONG_MAX e LONG_MIN con un tipo long int. Vediamo da vicino alcune costanti; sulla destra i valori limite tipici per implementazioni su sistemi a 32 e 64 bits e quanto definito dallo standard. Costante Significato Esempio a 32 bit CHAR_BIT CHAR_MAX Bit di un byte (più precisamente i bit del più piccolo oggetto che non è un campo-bit) Massimo valore di un char Esempio a 64 bit Standard (se un char è rappresentato come un signed char altrimenti +255)

12 A02w12 / Appendice B Costante Significato Esempio a 32 bit CHAR_MIN Minimo valore di un char Esempio a 64 bit Standard (se un char è rappresentato come un signed char altrimenti 0) INT_MAX Massimo valore di int INT_MIN Minimo valore di un int 648 LONG_MAX Massimo valore di un long LONG_MIN Minimo valore di un long SCHAR_MAX Massimo valore di un signed char SCHAR_MIN Minimo valore di un signed char SHRT_MAX Massimo valore di uno short SHRT_MIN Minimo valore di uno short UCHAR_MAX Massimo valore di un unsigned char UINT_MAX Minimo valore di un unsigned int 295 ULONG_MAX Massimo valore di un unsigned long USHRT_MAX Massimo valore di un unsigned short Si vedano soprattutto i Capitoli 6, 18 e l Appendice B, quest ultima consultabile sul sito dedicato al volume. <locale.h> Parametri di localizzazione Gestione di parametri quali il set di caratteri, la moneta, le convenzioni numeriche locali. L obiettivo dello standard è di rendere il linguaggio il più universale possibile. A seconda della localizzazione possono cambiare il set di caratteri (si pensi alle lingue arabe o asiatiche) o anche semplicemente le convenzioni numeriche (si pensi alle differenze nell uso della virgola e del punto decimali). Per rendere il linguaggio universale molte funzioni devono comportarsi in modo diverso in dipendenza della localizzazione. Per esempio, isalph, (si veda sopra nella descrizione dell header ctype.h) restituisce valori diversi a seconda dell insieme di caratteri in uso. Per fare in modo che la funzione possa comportarsi in modo diverso si badi bene: a tempo di esecuzione, non di compilazione, perché la flessibilità sia massima è possibile selezionare una determinata configurazione locale o individuare una configurazione attiva grazie alla funzione setlocale.

13 Libreria standard / A02w13 Al variare di una configurazione locale tutte le funzioni da essa influenzate modificano conseguentemente il proprio comportamento in fase di esecuzione. struct lconv NULL LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY LC_NUMERIC LC_TIME char *setlocale(int category, const char *locale); struct lconv *localeconv(void); <math.h> Funzioni matematiche in doppia precisione Funzioni trigonometriche come le seguenti. double acos(double x) Arcocoseno. Si ha un errore di dominio se l argomento non è nell intervallo [-1, +1]. double acosh(double x) L arcocoseno iperbolico di x, il valore restituito appartiene all intervallo [0 a + ]. Se x è minore di 1 si verifica un errore di dominio. double asin(double x) Arcoseno. Si ha un errore di dominio se l argomento non è nell intervallo [- 1, +1]. double atan(double x) Arcotangente. Il valore di ritonro è nell intervallo [ π/2, +π/2] radianti. double atan2(double y, double x) Arcotangente di y/x. double cos(double x) Coseno di x in radianti. double cosh(double x) Coseno iperbolico. double sin(double x) Seno di x in radianti. double sinh(double x) Seno iperbolico. double sqrt(double x) Radice quadrata di x. double tan(double x) Tangente di x in radianti. double tanh(double x) Tangente iperbolica. Funzioni matematiche come le seguenti. double ceil(double x) Il valore intero più piccolo non minore di x.

14 A02w14 / Appendice B double copysign(double x, double y); Il valore assoluto di x con il segno di y double exp(double x) Esponenziale di x. double fabs(double x) Il valore assoluto di x in virgola mobile. double floor(double x) Il valore intero più grande non maggiore di x. double fmod(double x, double y) Resto in virgola mobile di x/y double hypot(double x, double y); Radice quadrata della somma dei quadrati di x e y. double log(double x) Logaritmo naturale di x. double log10(double x) Logaritmo in base 10 di x. double pow(double x, double y) x elevato alla potenza y. Segue l elenco delle macro e delle funzioni. float_t double_t HUGE_VAL HUGE_VALF HUGE_VALL INFINITY NAN FP_INFINITE FP_NAN FP_NORMAL FP_SUBNORMAL FP_ZERO FP_FAST_FMA FP_FAST_FMAF FP_FAST_FMAL FP_ILOGB0 FP_ILOGBNAN MATH_ERRNO MATH_ERREXCEPT math_errhandling La macro INFINITY è espansa a un espressione constante di tipo float che rappresenta un valore infinito positivo o negativo, se disponibile, altrimento è espansa in una costante positiva di tipo float che genera l overflow. #pragma STDC FP_CONTRACT on-off-switch int fpclassify(real-floating x); int isfinite(real-floating x); int isinf(real-floating x); int isnan(real-floating x); int isnormal(real-floating x); int signbit(real-floating x); double acos(double x); float acosf(float x); long double acosl(long double x);

15 Libreria standard / A02w15 double asin(double x); float asinf(float x); long double asinl(long double x); double atan(double x); float atanf(float x); long double atanl(long double x); double atan2(double y, double x); float atan2f(float y, float x); long double atan2l(long double y, long double x); double cos(double x); float cosf(float x); long double cosl(long double x); double sin(double x); float sinf(float x); long double sinl(long double x); double tan(double x); float tanf(float x); long double tanl(long double x); double acosh(double x); float acoshf(float x); long double acoshl(long double x); double asinh(double x); float asinhf(float x); long double asinhl(long double x); double atanh(double x); float atanhf(float x); long double atanhl(long double x); double cosh(double x); float coshf(float x); long double coshl(long double x); double sinh(double x); float sinhf(float x); long double sinhl(long double x); double tanh(double x); float tanhf(float x); long double tanhl(long double x); double exp(double x); float expf(float x); long double expl(long double x); double exp2(double x);

16 A02w16 / Appendice B float exp2f(float x); long double exp2l(long double x); double expm1(double x); float expm1f(float x); long double expm1l(long double x); double frexp(double value, int *exp); float frexpf(float value, int *exp); long double frexpl(long double value, int *exp); int ilogb(double x); int ilogbf(float x); int ilogbl(long double x); double ldexp(double x, int exp); float ldexpf(float x, int exp); long double ldexpl(long double x, int exp); double log(double x); float logf(float x); long double logl(long double x); double log10(double x); float log10f(float x); long double log10l(long double x); double log1p(double x); float log1pf(float x); long double log1pl(long double x); double log2(double x); float log2f(float x); long double log2l(long double x); double logb(double x); float logbf(float x); long double logbl(long double x); double modf(double value, double *iptr); float modff(float value, float *iptr); long double modfl(long double value, long double *iptr); double scalbn(double x, int n); float scalbnf(float x, int n); long double scalbnl(long double x, int n); double scalbln(double x, long int n); float scalblnf(float x, long int n); long double scalblnl(long double x, long int n); double cbrt(double x); float cbrtf(float x); long double cbrtl(long double x); double fabs(double x);

17 Libreria standard / A02w17 float fabsf(float x); long double fabsl(long double x); double hypot(double x, double y); float hypotf(float x, float y); long double hypotl(long double x, long double y); double pow(double x, double y); float powf(float x, float y); long double powl(long double x, long double y); double sqrt(double x); float sqrtf(float x); long double sqrtl(long double x); double erf(double x); float erff(float x); long double erfl(long double x); double erfc(double x); float erfcf(float x); long double erfcl(long double x); double lgamma(double x); float lgammaf(float x); long double lgammal(long double x); double tgamma(double x); float tgammaf(float x); long double tgammal(long double x); double ceil(double x); float ceilf(float x); long double ceill(long double x); double floor(double x); float floorf(float x); long double floorl(long double x); double nearbyint(double x); float nearbyintf(float x); long double nearbyintl(long double x); double rint(double x); float rintf(float x); long double rintl(long double x); long int lrint(double x); long int lrintf(float x); long int lrintl(long double x); long long int llrint(double x); long long int llrintf(float x); long long int llrintl(long double x);

18 A02w18 / Appendice B double round(double x); float roundf(float x); long double roundl(long double x); long int lround(double x); long int lroundf(float x); long int lroundl(long double x); long long int llround(double x); long long int llroundf(float x); long long int llroundl(long double x); double trunc(double x); float truncf(float x); long double truncl(long double x); double fmod(double x, double y); float fmodf(float x, float y); long double fmodl(long double x, long double y); double remainder(double x, double y); float remainderf(float x, float y); long double remainderl(long double x, long double y); double remquo(double x, double y, int *quo); float remquof(float x, float y, int *quo); long double remquol(long double x, long double y, int *quo); double copysign(double x, double y); float copysignf(float x, float y); long double copysignl(long double x, long double y); double nan(const char *tagp); float nanf(const char *tagp); long double nanl(const char *tagp); double nextafter(double x, double y); float nextafterf(float x, float y); long double nextafterl(long double x, long double y); double nexttoward(double x, long double y); float nexttowardf(float x, long double y); long double nexttowardl(long double x, long double y); double fdim(double x, double y); float fdimf(float x, float y); long double fdiml(long double x, long double y); double fmax(double x, double y); float fmaxf(float x, float y); long double fmaxl(long double x, long double y); double fmin(double x, double y); float fminf(float x, float y); long double fminl(long double x, long double y); double fma(double x, double y, double z);

19 Libreria standard / A02w19 float fmaf(float x, float y, float z); long double fmal(long double x, long double y, long double z); int isgreater(real-floating x, real-floating y); int isgreaterequal(real-floating x, real-floating y); int isless(real-floating x, real-floating y); int islessequal(real-floating x, real-floating y); int islessgreater(real-floating x, real-floating y); int isunordered(real-floating x, real-floating y); Si vedano i Capitoli 6 e 11. <setjmp.h> Salti non locali Contiene la dichiarazione di funzioni che permettono di alterare l esecuzione della normale sequenza di chiamata e uscita di una funzione, per esempio per obbligare a un ritorno immediato da una chiamata di funzione profondamente annidata. jmp_buf int setjmp(jmp_buf env); _Noreturn void longjmp(jmp_buf env, int val); <signal.h> Gestione segnali Contiene la dichiarazione di funzioni per la gestione di condizioni di eccezione che si verificano durante l esecuzione, come l arrivo di un segnale di interrupt da una sorgente esterna, oppure un errore nell esecuzione. sig_atomic_t SIG_DFL SIG_ERR SIG_IGN SIGABRT SIGFPE SIGILL SIGINT SIGSEGV SIGTERM void (*signal(int sig, void (*func)(int)))(int); int raise(int sig); <stdalign.h> Specifiche di allineamento Contiene le macro alignas espansa in _Alignas e alignof espansa in _Alignof. Le altre macro sono utilizzabili con la direttiva del preprocessore #if: _Alignas_is_defined e _Alignof_is_defined, entrambe espanse nella costante intera 1. alignas alignas_is_defined <stdarg.h> Gestione lista di argomenti variabili in numero e tipo Contiene la dichiarazione di funzioni e/o macro che permettono di scandire tali liste, quindi può essere utile a sua volta per la realizzazione di funzioni che accettano un numero variabile di parametri. Gli oggetti di tipo va_list contengono le informazioni necessarie a lavorare con un numero variabile di argomenti. va_start

20 A02w20 / Appendice B inizializza l oggetto di tipo va_list in modo che possa essere utilizzato da va_arg e va_end. va_arg è una macro che viene espansa in un espressione che ha il valore e il tipo dell argomento successivo di un elenco variabile di argomenti e deve essere chiamata un numero di volte uguale al numero degli argomenti; modifica l oggetto dichiarato da va_list, in modo che punti al prossimo argomento dell elenco. va_end è una macro chiamata quando tutti gli elementi di un elenco variabile di argomenti, che era stato inizializzato dalla macro va_start sono stati elaborati; fa in modo che la restituzione del controllo della funzione sia corretto. va_list name va_start(name, lastarg) va_arg(name, type) va_end(name) Si veda il Capitolo 19. Dichiarazione del puntatore agli argomenti. Inizializzazione del puntatore all argomento, lastarg è l ultimo parametro nominato della funzione. Accede al prossimo argomento senza nome e aggiorna il puntatore. Esegue le azioni appropriate per la corretta terminazione di una funzione che ha utilizzato va_list. <stdatomic.h> Gestione di operazioni atomiche su dati condivisi tra i threads Definisce macro e dichiara tipi di dati e funzioni utili all esecuzione di operazioni atomiche su dati condivisi tra i thread. I thread sono parti di un processo (un programma in esecuzione) che condividono risorse e possono eseguire operazioni in parallelo. Un operazione è detta atomica quando deve avere accesso alla risorsa senza interruzioni, dall inizio dell esecuzione al suo completamento. Se una certa operazione deve essere atomica su un certo dato, mentre un thread la sta eseguendo nessun altro thread può accedere a quel dato. Le implementazioni che definiscono la macro STDC_NO_ATOMICS non forniscono questo header e non supportano le sue funzionalità. Segue l elenco delle macro e delle funzioni. ATOMIC_BOOL_LOCK_FREE ATOMIC_CHAR_LOCK_FREE ATOMIC_CHAR16_T_LOCK_FREE ATOMIC_CHAR32_T_LOCK_FREE ATOMIC_WCHAR_T_LOCK_FREE ATOMIC_SHORT_LOCK_FREE ATOMIC_INT_LOCK_FREE ATOMIC_LONG_LOCK_FREE ATOMIC_LLONG_LOCK_FREE ATOMIC_POINTER_LOCK_FREE ATOMIC_FLAG_INIT memory_order atomic_flag memory_order_relaxed memory_order_consume atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong atomic_char16_t atomic_char32_t atomic_wchar_t atomic_int_least8_t atomic_uint_least8_t atomic_int_least16_t atomic_uint_least16_t atomic_int_least32_t atomic_uint_least32_t atomic_int_least64_t

Informatica I Facoltà di Ingegneria Prova scritta del 20/01/2014 TURNO A

Informatica I Facoltà di Ingegneria Prova scritta del 20/01/2014 TURNO A Informatica I Facoltà di Ingegneria Prova scritta del 20/01/2014 TURNO A In una versione semplificata del gioco della Battaglia Navale il giocatore cerca di colpire le navi dell avversario (di cui non

Dettagli

Appendice E Funzioni della libreria standard

Appendice E Funzioni della libreria standard Appendice E Funzioni della libreria standard Questa appendice descrive tutte le funzioni di libreria supportate dal C89 e dal C99 1. Quando utilizzate questa appendice tenete a mente le seguenti cose:

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 Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014 Laboratorio di Programmazione 1 1 Docente: dr. Damiano Macedonio Lezione 18 31/03/2014 Funzioni: Dichiarazione e Definizione La dichiarazione di una funzione serve a comunicare al compilatore quali sono

Dettagli

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

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

Gestione dinamica della memoria Stringhe File

Gestione dinamica della memoria Stringhe File Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Gestione dinamica della memoria Stringhe File Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica

Dettagli

Gestione dei File. dischi nastri cd

Gestione dei File. dischi nastri cd Gestione dei File Per mantenere disponibili i dati tra le diverse esecuzioni di un programma, questi si devono archiviare in file su memoria di massa (dati persistenti): dischi nastri cd Un file è un astrazione

Dettagli

Introduzione allo Scilab Parte 1: numeri, variabili ed operatori elementari

Introduzione allo Scilab Parte 1: numeri, variabili ed operatori elementari Introduzione allo Scilab Parte 1: numeri, variabili ed operatori elementari Felice Iavernaro Dipartimento di Matematica Università di Bari http://dm.uniba.it/ iavernaro 6 Giugno 2007 Felice Iavernaro (Univ.

Dettagli

Indice. Introduzione. I tipi aritmetici. Variabili e Tipi Fondamentali in C++ (CAP 2, parte I) Alberto Garfagnini e Marco Mazzocco A.A.

Indice. Introduzione. I tipi aritmetici. Variabili e Tipi Fondamentali in C++ (CAP 2, parte I) Alberto Garfagnini e Marco Mazzocco A.A. Variabili e Tipi Fondamentali in C++ (CAP 2, parte I) Alberto Garfagnini e Marco Mazzocco Università degli studi di Padova A.A. 2014/2015 Indice Tipi semplici propri del linguaggio Variabili Tipi composti

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

Allocazione dinamica della memoria - riepilogo

Allocazione dinamica della memoria - riepilogo Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Storage duration Allocazione dinamica della

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

Primi programmi in C

Primi programmi in C Primi programmi in C Docente: Violetta Lonati PAS classe A042 Corso introduttivo pluridisciplinare in Informatica Nota: ricordate le opzioni principali del comando gcc (per eventuali dubbi, consultate

Dettagli

---------------------------------------------------------------- Puntatori a funzione. In C è possibile utilizzare dei puntatori a funzioni, ovvero

---------------------------------------------------------------- Puntatori a funzione. In C è possibile utilizzare dei puntatori a funzioni, ovvero ---------------------------------------------------------------- Puntatori a funzione. In C è possibile utilizzare dei puntatori a funzioni, ovvero delle variabili a cui possono essere assegnati gli indirizzi

Dettagli

Programmare. La programmazione. Linguaggi. Algoritmo

Programmare. La programmazione. Linguaggi. Algoritmo Programmare 2 La programmazione Ver. 2.2 Il calcolatore sa eseguire molte operazioni di base: somma, sottrazione, AND, etc. Per risolvere un determinato problema si combinano queste operazioni in modo

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

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni Funzioni Le funzioni Con il termine funzione si intende, in generale, un operatore che, applicato a un insieme di operandi, consente di calcolare un risultato, come avviene anche per una funzione matematica

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

Fondamenti di Informatica. Tecniche di input/output per l'accesso ai file

Fondamenti di Informatica. Tecniche di input/output per l'accesso ai file Corso di per il corso di Laurea di Ingegneria Meccanica Tecniche di input/output per l'accesso ai file Università degli Studi di Udine - A.A. 2010-2011 Docente Ing. Sandro Di Giusto Ph.D. 1 L'importanza

Dettagli

Struttura dati FILE. Concetto di FILE

Struttura dati FILE. Concetto di FILE Struttura dati FILE Concetto di FILE Per poter mantenere disponibili dei dati tra diverse esecuzioni di un programma (PERSISTENZA dei dati), è necessario poterli archiviare su memoria di massa. Un file

Dettagli

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 15.V.2015. Indice

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 15.V.2015. Indice LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 15.V.2015 VINCENZO MARRA Indice Parte 1. Input/Output standard dalla console 2 Esercizio 1 2 Eco

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

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli

Dettagli

puntatori Lab. Calc. AA 2007/08 1

puntatori Lab. Calc. AA 2007/08 1 puntatori Lab. Calc. AA 2007/08 1 parametri delle funzioni (dalla lezione scorsa) gli argomenti in C vengono passati by value dalla funzione chiamante alla funzione chiamata la lista degli argomenti viene

Dettagli

Sistemi Operativi (M. Cesati)

Sistemi Operativi (M. Cesati) Sistemi Operativi (M. Cesati) Compito scritto del 16 luglio 2015 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare

Dettagli

Appunti di Informatica 1. Gianluca Rossi

Appunti di Informatica 1. Gianluca Rossi Appunti di Informatica 1 Gianluca Rossi Versione maggio 2011 Indice 1 Algoritmi, macchine e linguaggi di programmazione 3 1.1 La macchina di Von Neumann........................ 5 1.2 Dal linguaggio macchina

Dettagli

Fondamenti di Informatica T. Linguaggio C: File

Fondamenti di Informatica T. Linguaggio C: File Linguaggio C: File I File Il file e` l'unita` logica di memorizzazione dei dati su memoria di massa, che consente una memorizzazione persistente dei dati, non limitata dalle dimensioni della memoria centrale.

Dettagli

Rappresentazione delle informazioni

Rappresentazione delle informazioni Rappresentazione delle informazioni Rappresentazione delle informazioni L informatica si occupa di rappresentare ed elaborare informazioni diverse: numeri caratteri audio immagini video I caratteri: ASCII

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

Linguaggio C: introduzione

Linguaggio C: introduzione Linguaggio C: introduzione Il linguaggio C è un linguaggio general purpose sviluppato nel 1972 da Dennis Ritchie per scrivere il sistema operativo UNIX ed alcune applicazioni per un PDP-11. Il linguaggio

Dettagli

Corso di Fondamenti di Informatica

Corso di Fondamenti di Informatica Corso di Fondamenti di Informatica L uso delle funzioni in C++ Claudio De Stefano - Corso di Fondamenti di Informatica 1 Funzioni Nel C++ è possibile scomporre problemi complessi in moduli più semplici

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

Fondamenti di Informatica Ingegneria Clinica Lezione 19/11/2009. Prof. Raffaele Nicolussi

Fondamenti di Informatica Ingegneria Clinica Lezione 19/11/2009. Prof. Raffaele Nicolussi Fondamenti di Informatica Ingegneria Clinica Lezione 19/11/2009 Prof. Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via B. Castiglione 59-00142 Roma Docente Raffaele Nicolussi rnicolussi@fub.it Lezioni

Dettagli

Corso di Fondamenti di Informatica

Corso di Fondamenti di Informatica Corso di Fondamenti di Informatica Introduzione alla programmazione in C++ 1 Un introduzione Che cosa è il C++? La programmazione procedurale La programmazione orientata agli oggetti La programmazione

Dettagli

Connessione ad internet

Connessione ad internet Introduzione al C++ Connessione ad internet Istruzioni per la connessione internet: - una volta connessi, aprire un browser (firefox) - in Modifica/preferenze/avanzate/rete/impostazioni - attivare la modalità

Dettagli

Tipo intero. Esempio. Tipo intero: operatori. Programma PortaMonete.java. Tipi base o primitivi

Tipo intero. Esempio. Tipo intero: operatori. Programma PortaMonete.java. Tipi base o primitivi Tipo intero Tipi base o primitivi Tipi interi: int, byte, short, long Tipi float: float, double Caratteri: char Tipo booleano: boolean Operatori numerici e logici La parola chiave int definisce una variabile

Dettagli

Le operazioni di allocazione e deallocazione sono a carico del sistema.

Le operazioni di allocazione e deallocazione sono a carico del sistema. Allocazione della memoria In C++ è possibile creare (allocare) variabili in maniera statica o dinamica. Nell allocazione statica una variabile esiste ed è utilizzabile dal momento della sua dichiarazione

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

Introduzione al C. Stream e disk file

Introduzione al C. Stream e disk file Introduzione al C Stream e disk file Stream Un canale è una sequenza di byte di dati Sorgente o destinazione di dati che possono essere associati ad un disco o ad altre periferiche Due tipi di stream:

Dettagli

Linguaggi di Programmazione

Linguaggi di Programmazione Linguaggi di Programmazione Linguaggi di Programmazione Sintassi e semantica Compilatori, interpreti e il linker Introduzione al C La funzione main del C 2 Definizione 1 Un linguaggio è un insieme di parole

Dettagli

Tipi elementari, costanti. Tipi di dati. VALORI: un insieme dei valori del tipo OPERAZIONI: per operare su tali valori. Tipi. intero reale carattere

Tipi elementari, costanti. Tipi di dati. VALORI: un insieme dei valori del tipo OPERAZIONI: per operare su tali valori. Tipi. intero reale carattere Tipi elementari, costanti 1 Tipi di dati VALORI: un insieme dei valori del tipo OPERAZIONI: per operare su tali valori Tipi Semplici intero reale carattere Strutturati 2 1 Tipo intero Gli interi servono

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

Corso Programmazione 1 Capitolo 01: Concetti Elementari

Corso Programmazione 1 Capitolo 01: Concetti Elementari Corso Programmazione 1 Capitolo 01: Concetti Elementari Docente: Roberto Sebastiani - roberto.sebastiani@unitn.it Esercitatori: Mario Passamani - mario.passamani@unitn.it Alessandro Tomasi - alessandro.tomasi@unitn.it

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

Input / Output attraverso stream. I/O in C vs. I/O in C++

Input / Output attraverso stream. I/O in C vs. I/O in C++ Alessio Bechini - Corso di - Input / Output attraverso stream (anno accademico 2002-2003) Utilizzo di stream per I/O I/O in C vs. I/O in C++ La libreria C standard per l I/O viene acceduta con stdio.h

Dettagli

Programmazione in Java (I modulo) Lezione 3: Prime nozioni

Programmazione in Java (I modulo) Lezione 3: Prime nozioni Programmazione in Java (I modulo) Lezione 3: Prime nozioni La volta scorsa Abbiamo avuto un primo assaggio! Abbiamo visto come usare l editor per scrivere un programma Java. Abbiamo analizzato riga per

Dettagli

Digressione: man 2...

Digressione: man 2... Syscall File I/O Digressione: man 2... Le funzioni della libreria standard UNIX associate alle system call di Linux sono documentate nella sezione 2 di man e.g.: man 2 open Ogni manpage di system call

Dettagli

Breve riepilogo della puntata precedente:

Breve riepilogo della puntata precedente: Breve riepilogo della puntata precedente: 1. In C, il passaggio dei parametri alle funzioni avviene sempre per copia, ovvero il valore del parametro viene copiato all'interno della variabile che rappresenta

Dettagli

Gestione dei File in C

Gestione dei File in C Gestione dei File in C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno introdotte

Dettagli

7 : I DATI E LA LORO STRUTTURA NELLA PROGRAMMAZIONE

7 : I DATI E LA LORO STRUTTURA NELLA PROGRAMMAZIONE 7 : I DATI E LA LORO STRUTTURA NELLA PROGRAMMAZIONE TIPO DI DATO Un tipo di dato è una entità caratterizzata dai seguenti elementi: un insieme X di valori che raprresenta il dominio del tipo di dato; un

Dettagli

TECNICHE AVANZATE DI I/O. Al loro livello più basso, tutti i file scritti sull hard disk. Training per esperti SU FILE

TECNICHE AVANZATE DI I/O. Al loro livello più basso, tutti i file scritti sull hard disk. Training per esperti SU FILE Training per esperti TECNICHE AVANZATE DI I/O SU FILE Spesso, la decisione di dividere in processi differenti la produzione dei dati dall uso degli stessi viene presa perché occorre scrivere i dati su

Dettagli

La gestione della memoria

La gestione della memoria La gestione della memoria DOTT. ING. LEONARDO RIGUTINI DIPARTIMENTO INGEGNERIA DELL INFORMAZIONE UNIVERSITÀ DI SIENA VIA ROMA 56 53100 SIENA UFF. 0577234850-7102 RIGUTINI@DII.UNISI.IT HTTP://WWW.DII.UNISI.IT/~RIGUTINI/

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

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

Sistemi di numerazione: generalità

Sistemi di numerazione: generalità Sistemi di numerazione: generalità Nel corso della storia sono stati introdotti diversi sistemi di numerazione, dettati di volta in volta dalle specifiche esigenze dei vari popoli. Poiché ogni numero maggiore

Dettagli

Corso di Programmazione ad oggetti

Corso di Programmazione ad oggetti Corso di Programmazione ad oggetti Il sistema di I/O del C++ a.a. 2008/2009 Claudio De Stefano 1 Il Modello di Von Neumann Il Modello di Von Neumann prevede che la CPU carichi in maniera sequenziale i

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

Informatica Medica C++ Informatica Medica I semestre Docenti: Fabio Solari e Manuela Chessa. Sviluppo di un applicazione eseguibile

Informatica Medica C++ Informatica Medica I semestre Docenti: Fabio Solari e Manuela Chessa. Sviluppo di un applicazione eseguibile Corso di Laurea in Ingegneria Biomedica Informatica Medica I semestre Docenti: Fabio Solari e Manuela Chessa Prof. Fabio Solari: fabio.solari@unige.it (010-3532059) Prof. Manuela Chessa: manuela.chessa@unige.it

Dettagli

La velocità di una carovana

La velocità di una carovana Programmazione A.A. 2002-03 I linguaggio Java ( Lezione X, Parte I ) Il primo programma Prof. Giovanni Gallo Dr. Gianluca Cincotti Dipartimento di Matematica e Informatica Università di Catania e-mail

Dettagli

Laboratorio di Algoritmi e Strutture Dati

Laboratorio di Algoritmi e Strutture Dati Laboratorio di Algoritmi e Strutture Dati Docente: Camillo Fiorentini 18 dicembre 2007 Esercizio 1: rappresentazione di una tabella di occorrenze L obiettivo è quello di rappresentare in modo efficiente

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

A.Lioy - Politecnico di Torino (2011) 1

A.Lioy - Politecnico di Torino (2011) 1 Informazioni generali sul corso Programmazione in linguaggio C Antonio Lioy ( lioy @ polito.it ) Politecnico di Torino Dip. di Automatica e Informatica sito web del corso: http://security.polito.it/~lioy/12bhd/

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

Programmazione in linguaggio i C

Programmazione in linguaggio i C Programmazione in linguaggio i C Antonio Lioy ( lioy @ polito.it ) Politecnico di Torino Dip. di Automatica e Informatica Informazioni generali sul corso sito web del corso: http://security.polito.it/~lioy/12bhd/

Dettagli

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi Linguaggio Java Robusto Non permette costrutti pericolosi Eredità Multipla Gestione della Memoria Orientato agli oggetti Ogni cosa ha un tipo Ogni tipo è un oggetto (quasi) Protegge e gestisce dagli errori

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

Scrivere alla fine di un file Vi sono due modi per scrivere alla fine di un file:

Scrivere alla fine di un file Vi sono due modi per scrivere alla fine di un file: Scrivere alla fine di un file Vi sono due modi per scrivere alla fine di un file: usare lseek per spostarsi alla fine del file e poi scrivere: lseek(filedes, (off_t)0, SEEK_END); write(filedes, buf, BUFSIZE);

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

Strutture dati e realizzazione in C. Componenti software:

Strutture dati e realizzazione in C. Componenti software: Strutture dati e realizzazione in C Strutture dati: Termine usato per indicare tipi con elementi del dominio compositi, ad esempio: vettori e matrici; tavole; liste; insiemi; pile e code; alberi e grafi.

Dettagli

Angelo Gallippi. Fondamenti di informatica

Angelo Gallippi. Fondamenti di informatica Angelo Gallippi Fondamenti di informatica Copyright MMIX ARACNE editrice S.r.l. www.aracneeditrice.it info@aracneeditrice.it via Raffaele Garofalo, 133 A/B 00173 Roma (06) 93781065 ISBN 978 88 548 2506

Dettagli

I/O su Socket TCP: read()

I/O su Socket TCP: read() I/O su Socket TCP: read() I socket TCP, una volta che la connessione TCP sia stata instaurata, sono accedibili come se fossero dei file, mediante un descrittore di file (un intero) ottenuto tramite una

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 22 Martedì 7-1-2014 1 System Call per l'uso dei segnali Un processo che

Dettagli

Esempio. Esempio. Linguaggio di Programmazione. Linguaggi di programmazione. Linguaggio di computazione. Linguaggi di programmazione

Esempio. Esempio. Linguaggio di Programmazione. Linguaggi di programmazione. Linguaggio di computazione. Linguaggi di programmazione Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Fondamenti di Informatica Problema e metodologie di progetto Linguaggio C: Introduzione Monica Mordonini Problema e Algoritmo

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

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

Cos è una stringa (1) Stringhe. Leggere e scrivere stringhe (1) Cos è una stringa (2) DD Cap. 8 pp. 305-341 KP Cap. 6 pp. 241-247

Cos è una stringa (1) Stringhe. Leggere e scrivere stringhe (1) Cos è una stringa (2) DD Cap. 8 pp. 305-341 KP Cap. 6 pp. 241-247 Cos è una stringa (1) Stringhe DD Cap. 8 pp. 305-341 KP Cap. 6 pp. 241-247 Una stringa è una serie di caratteri trattati come una singola unità. Essa potrà includere lettere, cifre, simboli e caratteri

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica per chimica industriale e chimica applicata e ambientale LEZIONE 2 Rappresentazione delle informazioni: numeri e caratteri 1 Codice La relazione che associa ad ogni successione ben formata di simboli di

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

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

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

Tipi di dati. una parola di memoria (16 o 32 bit), float. possibile rilevare errori nell uso di variabili mediante compilazione 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

Dettagli

Laboratorio di Algoritmi e Strutture Dati. Aniello Murano. www.dia.unisa.it/dottorandi/murano. Il linguaggio C II

Laboratorio di Algoritmi e Strutture Dati. Aniello Murano. www.dia.unisa.it/dottorandi/murano. Il linguaggio C II Laboratorio di Algoritmi e Strutture Dati Aniello Murano www.dia.unisa.it/dottorandi/murano 1 Il linguaggio C II 2 1 Indice (seconda parte) Funzioni Array Puntatori Preprocessore Storage Class Ricorsione

Dettagli

Calcolatori Elettronici Parte X: l'assemblatore as88

Calcolatori Elettronici Parte X: l'assemblatore as88 Anno Accademico 2013/2014 Calcolatori Elettronici Parte X: l'assemblatore as88 Prof. Riccardo Torlone Università Roma Tre L'assemblatore as88 Disponibile presso: CD-ROM allegato al libro di testo del corso

Dettagli

I puntatori e l allocazione dinamica di memoria

I puntatori e l allocazione dinamica di memoria I puntatori e l allocazione dinamica di memoria L allocazione delle variabili Allocazione e rilascio espliciti di memoria Le funzioni malloc e free 2 2006 Politecnico di Torino 1 Allocare = collocare in

Dettagli

Introduzione al MATLAB c Parte 1

Introduzione al MATLAB c Parte 1 Introduzione al MATLAB c Parte 1 Lucia Gastaldi Dipartimento di Matematica, http://dm.ing.unibs.it/gastaldi/ Lezione 1-2 maggio 2007 Outline 1 Cos è il MATLAB Componenti principali di MATLAB 2 Avvio Avviare

Dettagli

Informatica Generale 02 - Rappresentazione numeri razionali

Informatica Generale 02 - Rappresentazione numeri razionali Informatica Generale 02 - Rappresentazione numeri razionali Cosa vedremo: Rappresentazione binaria dei numeri razionali Rappresentazione in virgola fissa Rappresentazione in virgola mobile La rappresentazione

Dettagli

VARIABILI LOCALI E GLOBALI (ESTERNE)

VARIABILI LOCALI E GLOBALI (ESTERNE) VARIABILI LOCALI E GLOBALI (ESTERNE) Le variabili locali sono definite (ed il loro uso dichiarato) nella funzione (o nel blocco) che le usa; nascono quando la funzione entra in esecuzione e muoiono al

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

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

ESERCIZI SULLA PROGRAMMAZIONE DI SISTEMA GNU/LINUX

ESERCIZI SULLA PROGRAMMAZIONE DI SISTEMA GNU/LINUX Autore: Classe: Luciano VIVIANI QUARTA INFORMATICA (4IB) Anno scolastico: 2004/2005 Scuola: Itis Euganeo ESERCIZI SULLA PROGRAMMAZIONE DI SISTEMA GNU/LINUX Questa dispensa non vuole essere un manuale di

Dettagli

Utilizzo del linguaggio Basic utilizzando l interfaccia di Excel Silvia Patacchini

Utilizzo del linguaggio Basic utilizzando l interfaccia di Excel Silvia Patacchini Introduzione all utilizzo di Visual Basic for Application Utilizzo del linguaggio Basic utilizzando l interfaccia di Excel Silvia Patacchini PROGRAMMAZIONE Insieme delle attività da svolgersi per creare

Dettagli

Imparare il C V. 1.4. Marco Latini - Paolo Lulli

Imparare il C V. 1.4. Marco Latini - Paolo Lulli Imparare il C una guida per Linux V. 1.4 Marco Latini - Paolo Lulli 20 ottobre 2002 La presente pubblicazione è redatta con la maggior cura che si è resa possibile agli autori; ciò non toglie che possano

Dettagli

Laboratorio di Sistemi Operativi

Laboratorio di Sistemi Operativi Laboratorio di Sistemi Operativi Segnali a.a. 2011/2012 Francesco Fontanella Segnali - Introduzione I segnali sono interrupt software a livello di processo comunicano al processo il verificarsi di un evento

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

Corso basilare di programmazione

Corso basilare di programmazione Parte vi Corso basilare di programmazione Introduzione............................................ 947 Programma didattico.................................. 947 Strumenti per la compilazione..........................

Dettagli

Linguaggio C - Funzioni

Linguaggio C - Funzioni Linguaggio C - Funzioni Funzioni: Il linguaggio C è di tipo procedurale; ogni programma viene suddiviso in sottoprogrammi, ognuno dei quali svolge un determinato compito. I sottoprogrammi si usano anche

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

ALGEBRA BOOLEANA FONDAMENTI DI INFORMATICA 1. Algebra di Boole. Definizione NOT, AND, OR

ALGEBRA BOOLEANA FONDAMENTI DI INFORMATICA 1. Algebra di Boole. Definizione NOT, AND, OR Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica, Chimica, Elettrica e Meccanica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011 Docente: Gian

Dettagli