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

---------------------------------------------------------------- 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

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

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

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

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

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

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

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

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

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

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

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

Sistemi Intelligenti Naturali Artificiali Corso di programmazione C/C++

Sistemi Intelligenti Naturali Artificiali Corso di programmazione C/C++ Sistemi Intelligenti Naturali Artificiali Corso di programmazione C/C++ Lorenzo Natale (nat@dist.unige.it) DIST, Università di Genova Introduzione Il linguaggio C nasce negli anni settanta come linguaggio

Dettagli

Funzioni. Corso di Fondamenti di Informatica

Funzioni. Corso di Fondamenti di Informatica Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Funzioni Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti e dei

Dettagli

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL 1 Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

Dettagli

IL LINGUAGGIO C++ Configurazione di Dev-C++

IL LINGUAGGIO C++ Configurazione di Dev-C++ IL LINGUAGGIO C++ Note sull'uso di DevC++ Requisiti di sistema per Dev-C++ - Sistema operativo Microsoft Windows 95, 98, Millenium Edition, NT 4, 2000 o XP - RAM: 8 Mb (consigliati almeno 32 Mb) - CPU:

Dettagli

Rapida Introduzione all uso del Matlab Ottobre 2002

Rapida Introduzione all uso del Matlab Ottobre 2002 Rapida Introduzione all uso del Matlab Ottobre 2002 Tutti i tipi di dato utilizzati dal Matlab sono in forma di array. I vettori sono array monodimensionali, e così possono essere viste le serie temporali,

Dettagli

CREAZIONE DI UN FILE

CREAZIONE DI UN FILE #include #include CREAZIONE DI UN FILE fd = creat(filename, mode); int fd, mode; char *filename; La primitiva creat crea un file, se non ne esiste uno col nome specificato, oppure

Dettagli

Le Stringhe. Un introduzione operativa. Luigi Palopoli

Le Stringhe. Un introduzione operativa. Luigi Palopoli Le Stringhe p.1/19 Le Stringhe Un introduzione operativa Luigi Palopoli ReTiS Lab - Scuola Superiore S. Anna Viale Rinaldo Piaggio 34 Pontedera - Pisa Tel. 050-883444 Email: palopoli@sssup.it URL: http://feanor.sssup.it/

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

Linguaggio C++ Uso ambiente Dev C++ con creazione di progetto con scelta Basic --> Empty Project

Linguaggio C++ Uso ambiente Dev C++ con creazione di progetto con scelta Basic --> Empty Project Linguaggio C++ Uso ambiente Dev C++ con creazione di progetto con scelta Basic --> Empty Project NB: E necessario: adoperare la sintassi più evoluta per le direttive di precompilazione 1, usando come contenitore

Dettagli

INTRODUZIONE, LINGUAGGIO, HANDS ON. Giuseppe Cirillo g.cirillo@unina.it

INTRODUZIONE, LINGUAGGIO, HANDS ON. Giuseppe Cirillo g.cirillo@unina.it INTRODUZIONE, LINGUAGGIO, HANDS ON Giuseppe Cirillo g.cirillo@unina.it Il linguaggio C 1972-Dennis Ritchie 1978-Definizione 1990-ANSI C 1966 Martin Richars (MIT) Semplificando CPL usato per sviluppare

Dettagli

Comandi di Input/Output in Matlab

Comandi di Input/Output in Matlab Comandi di Input/Output in Matlab Il comando format controlla la configurazione numerica dei valori esposta da MAT- LAB; il comando regola solamente come i numeri sono visualizzati o stampati, non come

Dettagli

Le formule possono essere scritte utilizzando un insieme di funzioni predefinite che Excel mette a disposizione, raggruppate per argomento.

Le formule possono essere scritte utilizzando un insieme di funzioni predefinite che Excel mette a disposizione, raggruppate per argomento. Excel: le funzioni Le formule possono essere scritte utilizzando un insieme di funzioni predefinite che Excel mette a disposizione, raggruppate per argomento. DEFINIZIONE: Le funzioni sono dei procedimenti

Dettagli

Funzioni matlab per la gestione dei file. Informatica B Prof. Morzenti

Funzioni matlab per la gestione dei file. Informatica B Prof. Morzenti Funzioni matlab per la gestione dei file Informatica B Prof. Morzenti File Contenitori di informazione permanenti Sono memorizzati su memoria di massa Possono continuare a esistere indipendentemente dalla

Dettagli

Codifica dei numeri negativi

Codifica dei numeri negativi E. Calabrese: Fondamenti di Informatica Rappresentazione numerica-1 Rappresentazione in complemento a 2 Codifica dei numeri negativi Per rappresentare numeri interi negativi si usa la cosiddetta rappresentazione

Dettagli

Esercitazioni su rappresentazione dei numeri e aritmetica dei calcolatori"

Esercitazioni su rappresentazione dei numeri e aritmetica dei calcolatori Esercitazioni su rappresentazione dei numeri e aritmetica dei calcolatori" slide a cura di Salvatore Orlando & Marta Simeoni " Architettura degli Elaboratori 1 Interi unsigned in base 2" Si utilizza un

Dettagli

Indirizzo di una funzione. Puntatori a funzioni. Definizione di variabili. Definizione di variabili

Indirizzo di una funzione. Puntatori a funzioni. Definizione di variabili. Definizione di variabili Indirizzo di una funzione 2 Puntatori a funzioni Ver. 2.4 Si può chiamare una funzione utilizzando l indirizzo di memoria dal quale inizia il codice eseguibile della funzione stessa L indirizzo di memoria

Dettagli

Verifica che una grammatica sia Context Free nel GrammaReader

Verifica che una grammatica sia Context Free nel GrammaReader Verifica che una grammatica sia Context Free nel GrammaReader Sommario Dispensa di Linguaggi di Programmazione Corrado Mencar Pasquale Lops In questa dispensa si descrivono alcune soluzioni per verificare

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

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof. Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record

Dettagli

Editor vi. Editor vi

Editor vi. Editor vi Editor vi vi 1 Editor vi Il vi è l editor di testo standard per UNIX, è presente in tutte le versioni base e funziona con qualsiasi terminale a caratteri Permette di visualizzare una schermata alla volta

Dettagli

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni. Le funzioni in C I programmi C sono costituiti da definizioni di variabili e funzioni. Una definizione di funzione ha il seguente formato: tipo-ritornato nome-funzione(lista-parametri) { dichiarazioni

Dettagli

Introduzione agli algoritmi e alla programmazione in VisualBasic.Net

Introduzione agli algoritmi e alla programmazione in VisualBasic.Net Lezione 1 Introduzione agli algoritmi e alla programmazione in VisualBasic.Net Definizione di utente e di programmatore L utente è qualsiasi persona che usa il computer anche se non è in grado di programmarlo

Dettagli

Abstract Data Type (ADT)

Abstract Data Type (ADT) Abstract Data Type Pag. 1/10 Abstract Data Type (ADT) Iniziamo la nostra trattazione presentando una nozione che ci accompagnerà lungo l intero corso di Laboratorio Algoritmi e Strutture Dati: il Tipo

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

Inter-Process Communication

Inter-Process Communication Inter-Process Communication C. Baroglio a.a. 2002-2003 1 Introduzione In Unix i processi possono essere sincronizzati utilizzando strutture dati speciali, appartenti al pacchetto IPC (inter-process communication).

Dettagli

Struttura a record. File ad accesso diretto. Modalità di apertura. Modalità di apertura

Struttura a record. File ad accesso diretto. Modalità di apertura. Modalità di apertura Struttura a record 2 File ad accesso diretto Il file è organizzato in record aventi tutti la stessa struttura e quindi dimensione record 0 record 1 record 2 Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione

Dettagli

RAPPRESENTAZIONE BINARIA DEI NUMERI. Andrea Bobbio Anno Accademico 1996-1997

RAPPRESENTAZIONE BINARIA DEI NUMERI. Andrea Bobbio Anno Accademico 1996-1997 1 RAPPRESENTAZIONE BINARIA DEI NUMERI Andrea Bobbio Anno Accademico 1996-1997 Numeri Binari 2 Sistemi di Numerazione Il valore di un numero può essere espresso con diverse rappresentazioni. non posizionali:

Dettagli

Floating Point N = M BE. Notazione in virgola mobile. base. esempi 34.76 104 3.6891 106 = 36.891 105 =368.91 104 12.78 10-3 1.

Floating Point N = M BE. Notazione in virgola mobile. base. esempi 34.76 104 3.6891 106 = 36.891 105 =368.91 104 12.78 10-3 1. Floating Point Notazione in virgola mobile N = M BE mantissa base esponente esempi 34.76 104 3.6891 106 = 36.891 105 =368.91 104 12.78 10-3 1.6273 102 forma normalizzata: la mantissa ha una sola cifra

Dettagli

Lezione 9: Strutture e allocazione dinamica della memoria

Lezione 9: Strutture e allocazione dinamica della memoria Lezione 9: Strutture e allocazione dinamica della memoria Laboratorio di Elementi di Architettura e Sistemi Operativi 9 Maggio 2012 Allocazione dinamica della memoria Memoria dinamica È possibile creare

Dettagli

Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese

Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese Inter Process Communication Laboratorio Software 2008-2009 C. Brandolese Introduzione Più processi o thread Concorrono alla relaizzazione di una funzione applicativa Devono poter realizzare Sincronizzazione

Dettagli

Introduzione alla Programmazione ad Oggetti in C++

Introduzione alla Programmazione ad Oggetti in C++ Introduzione alla Programmazione ad Oggetti in C++ Lezione 1 Cosa è la Programmazione Orientata agli Oggetti Metodologia per costruire prodotti software di grosse dimensioni che siano affidabili e facilmente

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

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

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

Ambienti di sviluppo integrato

Ambienti di sviluppo integrato Ambienti di sviluppo integrato Un ambiente di sviluppo integrato (IDE - Integrated Development Environment) è un ambiente software che assiste i programmatori nello sviluppo di programmi Esso è normalmente

Dettagli

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Dott.Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 08/03/07 Nota Questi lucidi sono tratti

Dettagli

Visibilità dei Membri di una Classe

Visibilità dei Membri di una Classe Visibilità dei Membri di una Classe Lezione 10 Ogni classe definisce un proprio scope racchiude il codice contenuto nella definizione della classe e di tutti i suoi membri ogni metodo della classe definisce

Dettagli

Rappresentazione numeri in virgola mobile

Rappresentazione numeri in virgola mobile Rappresentazione numeri in virgola mobile Un numero non intero può essere rappresentato in infiniti modi quando utilizziamo la notazione esponenziale: Es. 34.5 = 0.345 10 2 = 0.0345 10 3 = 345 10-1 Questo

Dettagli

Introduzione ai Device Drivers in Linux. E.Mumolo, DEEI mumolo@units.it

Introduzione ai Device Drivers in Linux. E.Mumolo, DEEI mumolo@units.it Introduzione ai Device Drivers in Linux E.Mumolo, DEEI mumolo@units.it 1 Device Drivers Moduli software che gestiscono le periferiche attraverso il file system Tutte le periferiche sono viste come file

Dettagli

MODBUS-RTU per. Specifiche protocollo di comunicazione MODBUS-RTU per controllo in rete dispositivi serie. Expert NANO 2ZN

MODBUS-RTU per. Specifiche protocollo di comunicazione MODBUS-RTU per controllo in rete dispositivi serie. Expert NANO 2ZN per Expert NANO 2ZN Specifiche protocollo di comunicazione MODBUS-RTU per controllo in rete dispositivi serie Expert NANO 2ZN Nome documento: MODBUS-RTU_NANO_2ZN_01-12_ITA Software installato: NANO_2ZN.hex

Dettagli

Introduzione al linguaggio C Gli array

Introduzione al linguaggio C Gli array Introduzione al linguaggio C Gli array Vettori nome del vettore (tutti gli elementi hanno lo stesso nome, c) Vettore (Array) Gruppo di posizioni (o locazioni di memoria) consecutive Hanno lo stesso nome

Dettagli

! Programmazione strutturata ! TDA. ! Classi, incapsulamento, ! OO. ! Scambio messaggi, eredità, polimorfismo. ! OO in Java

! Programmazione strutturata ! TDA. ! Classi, incapsulamento, ! OO. ! Scambio messaggi, eredità, polimorfismo. ! OO in Java Riassunto Rassegna API - 1 Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@uniud.it Programmazione, lezione 17 3 maggio 2015! Programmazione

Dettagli

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi alternative: function nome { lista-comandi } oppure nome ( ) {

Dettagli

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table Universita' di Ferrara Dipartimento di Matematica e Informatica Algoritmi e Strutture Dati Rappresentazione concreta di insiemi e Hash table Copyright 2006-2015 by Claudio Salati. Lez. 9a 1 Rappresentazione

Dettagli

APPLICAZIONI SU PIU FILE

APPLICAZIONI SU PIU FILE APPLICAZIONI SU PIU FILE Serve poter sviluppare applicazioni su piú file: - alcune funzioni e alcune definizioni di dati in un file - altre funzioni e dati in file diversi Perché?? 1. Se il programma è

Dettagli

Informatica Applicata

Informatica Applicata Ing. Irina Trubitsyna Concetti Introduttivi Programma del corso Obiettivi: Il corso di illustra i principi fondamentali della programmazione con riferimento al linguaggio C. In particolare privilegia gli

Dettagli

Esercitazione 7. Procedure e Funzioni

Esercitazione 7. Procedure e Funzioni Esercitazione 7 Procedure e Funzioni Esercizio Scrivere un programma che memorizza in un array di elementi di tipo double le temperature relative al mese corrente e ne determina la temperatura massima,

Dettagli

Amministrazione, finanza e marketing - Turismo Ministero dell Istruzione, dell Università e della Ricerca PROGRAMMAZIONE DISCIPLINARE PER U. di A.

Amministrazione, finanza e marketing - Turismo Ministero dell Istruzione, dell Università e della Ricerca PROGRAMMAZIONE DISCIPLINARE PER U. di A. UdA n. 1 Titolo: Disequazioni algebriche Saper esprimere in linguaggio matematico disuguaglianze e disequazioni Risolvere problemi mediante l uso di disequazioni algebriche Le disequazioni I principi delle

Dettagli

MIPS Instruction Set 2

MIPS Instruction Set 2 Laboratorio di Architettura 15 aprile 2011 1 Architettura Mips 2 Chiamata a Funzione 3 Esercitazione Registri MIPS reference card: http://refcards.com/docs/waetzigj/mips/mipsref.pdf 32 registri general

Dettagli

I file di dati. Unità didattica D1 1

I file di dati. Unità didattica D1 1 I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità

Dettagli

sed: editor non interattivo di file di testo (1974 nei Bell Labs come evoluzione di grep, Lee E. McMahon)

sed: editor non interattivo di file di testo (1974 nei Bell Labs come evoluzione di grep, Lee E. McMahon) Sed & Awk Sed e Awk sed: editor non interattivo di file di testo (1974 nei Bell Labs come evoluzione di grep, Lee E. McMahon) awk: linguaggio per l'elaborazione di modelli orientato ai campi (1977, Bell

Dettagli

FUNZIONI. La libreria standard del C fornisce una ricca collezione di funzioni, come le funzioni:

FUNZIONI. La libreria standard del C fornisce una ricca collezione di funzioni, come le funzioni: FUNZIONI La libreria standard del C fornisce una ricca collezione di funzioni, come le funzioni: double sqrt(double) double pow (double, double) della libreria matematica, che abbiamo già usato anche senza

Dettagli

Le system call: fork(), wait(), exit()

Le system call: fork(), wait(), exit() Le system call: fork(), wait(), exit() Di seguito viene mostrato un programma che fa uso di puntatori a funzione, nel quale si mette in evidenza il loro utilizzo. Programma A1 #include int add(a,b,c)

Dettagli

Problem solving avanzato

Problem solving avanzato Problem solving avanzato Formulazione del problema Struttura dati e algoritmo Il programma 2 26 Politecnico di Torino 1 Dati in input (1/4) Sono dati due file di testo, contenenti le informazioni sulle

Dettagli

Oggetti Lezione 3. aspetti generali e definizione di classi I

Oggetti Lezione 3. aspetti generali e definizione di classi I Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione

Dettagli

Progetti reali con ARDUINO

Progetti reali con ARDUINO Progetti reali con ARDUINO Introduzione alla scheda Arduino (parte 2ª) ver. Classe 3BN (elettronica) marzo 22 Giorgio Carpignano I.I.S. Primo LEVI - TORINO Il menù per oggi Lettura dei pulsanti Comunicazione

Dettagli

Esercizi svolti durante le ore di Informatica e Sistemi automatici nelle classi del Liceo Scientifico Tecnologico del Liceo Milli di Teramo

Esercizi svolti durante le ore di Informatica e Sistemi automatici nelle classi del Liceo Scientifico Tecnologico del Liceo Milli di Teramo Esercizi svolti durante le ore di Informatica e Sistemi automatici nelle classi del Liceo Scientifico Tecnologico del Liceo Milli di Teramo /*Caricare un vettore di n numeri float, ordinarlo e e stamparlo

Dettagli

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate.

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate. Comandi filtro: sed Il nome del comando sed sta per Stream EDitor e la sua funzione è quella di permettere di editare il testo passato da un comando ad un altro in una pipeline. Ciò è molto utile perché

Dettagli

Ricerca sequenziale di un elemento in un vettore

Ricerca sequenziale di un elemento in un vettore Ricerca sequenziale di un elemento in un vettore La ricerca sequenziale o lineare è utilizzata per ricercare i dati in un vettore NON ordinato. L algoritmo di ricerca sequenziale utilizza quan non ha alcuna

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

La protezione dai memory error exploit

La protezione dai memory error exploit Università degli Studi di Milano Sommario Introduzione 1 Stack Guard Terminator Canaries Random Canaries 2 3 Buffer Overflow Stack Guard Introduzione Buffer Overflow Condizione anomala. Memorizzazione

Dettagli

Così come le macchine meccaniche trasformano

Così come le macchine meccaniche trasformano DENTRO LA SCATOLA Rubrica a cura di Fabio A. Schreiber Il Consiglio Scientifico della rivista ha pensato di attuare un iniziativa culturalmente utile presentando in ogni numero di Mondo Digitale un argomento

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

Manuale di Okteta. Friedrich W. H. Kossebau Alex Richardson Traduzione della documentazione: Federico Zenith

Manuale di Okteta. Friedrich W. H. Kossebau Alex Richardson Traduzione della documentazione: Federico Zenith Friedrich W. H. Kossebau Alex Richardson Traduzione della documentazione: Federico Zenith 2 Indice 1 Introduzione 6 2 Fondamentali 7 2.1 Avviare Okteta........................................ 7 2.2 Uso..............................................

Dettagli

SIMATIC. SCL per S7-300/400 Programmazione di blocchi. Prefazione, Contenuto. Parte 1: Sviluppo di programmi. Parte 2: Uso e test

SIMATIC. SCL per S7-300/400 Programmazione di blocchi. Prefazione, Contenuto. Parte 1: Sviluppo di programmi. Parte 2: Uso e test Prefazione, Contenuto Parte 1: Sviluppo di programmi Parte 2: Uso e test SIMATIC Parte 3: Descrizione del linguaggio Programmazione di blocchi Appendici Glossario, Indice analitico Manuale Numero di ordinazione

Dettagli

Programmazione Java: Variabili membro, Metodi La parola chiave final

Programmazione Java: Variabili membro, Metodi La parola chiave final Programmazione Java: Variabili membro, Metodi La parola chiave final romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap Definire una classe» Variabili membro» Metodi La parola chiave

Dettagli

Sottoprogrammi: astrazione procedurale

Sottoprogrammi: astrazione procedurale Sottoprogrammi: astrazione procedurale Incapsulamento di un segmento di programma presente = false; j = 0; while ( (j

Dettagli

GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno

GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno La Vista CAS L ambiente di lavoro Le celle Assegnazione di una variabile o di una funzione / visualizzazione

Dettagli

Introduzione a MySQL

Introduzione a MySQL Introduzione a MySQL Cinzia Cappiello Alessandro Raffio Politecnico di Milano Prima di iniziare qualche dettaglio su MySQL MySQL è un sistema di gestione di basi di dati relazionali (RDBMS) composto da

Dettagli

Generalizzazione di funzioni e di classi. Macro come funzioni generiche

Generalizzazione di funzioni e di classi. Macro come funzioni generiche Alessio Bechini - Corso di - Generalizzazione di funzioni e di classi Il meccanismo di template Macro come funzioni generiche long longmax(long x, long y) { Possibile soluzione int intmax(int x, int y)

Dettagli

LA NOTAZIONE SCIENTIFICA

LA NOTAZIONE SCIENTIFICA LA NOTAZIONE SCIENTIFICA Definizioni Ricordiamo, a proposito delle potenze del, che = =.000 =.000.000.000.000 ovvero n è uguale ad seguito da n zeri. Nel caso di potenze con esponente negativo ricordiamo

Dettagli

Modulo 2 - Appendice 3 L'editor vi e cenni su sed

Modulo 2 - Appendice 3 L'editor vi e cenni su sed 1 Modulo 2 - Appendice 3 L'editor vi e cenni su sed Laboratorio di Sistemi Operativi I Anno Accademico 2008-2009 Copyright 2005-2007 Francesco Pedullà, Massimo Verola Copyright 2001-2005 Renzo Davoli,

Dettagli

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); }

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); } import java.util.*; class coda * Questa classe contiene tutti i metodi per la gestione della coda * @author D'Ambrosio Giovanni Classe 4D I.T.I.S. Grottaminarda * @version 26/02/2010 * VETTORE DINAMICO

Dettagli

Flops. Ad esempio nel caso del prodotto classico tra matrici, vengono eseguite 2*N 3 operazioni, quindi ad esempio:

Flops. Ad esempio nel caso del prodotto classico tra matrici, vengono eseguite 2*N 3 operazioni, quindi ad esempio: Flops FLOPS e' un'abbreviazione di Floating Point Operations Per Second e indica il numero di operazioni in virgola mobile eseguite in un secondo dalla CPU. (Top500 e il BlueGene) Ad esempio nel caso del

Dettagli

AA 2006-07 LA RICORSIONE

AA 2006-07 LA RICORSIONE PROGRAMMAZIONE AA 2006-07 LA RICORSIONE AA 2006-07 Prof.ssa A. Lanza - DIB 1/18 LA RICORSIONE Il concetto di ricorsione nasce dalla matematica Una funzione matematica è definita ricorsivamente quando nella

Dettagli

Creare una applicazione Winsock di base

Creare una applicazione Winsock di base Creare una applicazione Winsock di base Usiamo le API Winsock incluse in Creare un progetto per una Socket Windows (in Dev C++) Selezionare la file New Projects Selezionare Empty Project Salvare

Dettagli

Excel basi e funzioni

Excel basi e funzioni Esercitazione di Laboratorio Excel basi e funzioni Contenuto delle celle 1. Testo 2. Numeri 3. Formule Formattazione delle celle (1) Formattazione del testo e dei singoli caratteri: Orientamento a 45 Allineamento

Dettagli

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory FILE SYSTEM : INTERFACCIA 8.1 Interfaccia del File System Concetto di File Metodi di Accesso Struttura delle Directory Montaggio del File System Condivisione di File Protezione 8.2 Concetto di File File

Dettagli

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Condizione di sincronizzazione Qualora si voglia realizzare una determinata politica di gestione delle risorse,la decisione se ad

Dettagli

Un ripasso di aritmetica: Conversione dalla base 10 alla base 16

Un ripasso di aritmetica: Conversione dalla base 10 alla base 16 Un ripasso di aritmetica: Conversione dalla base 1 alla base 16 Dato un numero N rappresentato in base dieci, la sua rappresentazione in base sedici sarà del tipo: c m c m-1... c 1 c (le c i sono cifre

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. File di dati. Insieme di record omogenei memorizzati in memoria di massa. Record. Bianchi. Anna Roma 1980. Verdi. Luca Milano 1960.

Definizione. File di dati. Insieme di record omogenei memorizzati in memoria di massa. Record. Bianchi. Anna Roma 1980. Verdi. Luca Milano 1960. File di dati Definizione File di dati Insieme di record omogenei memorizzati in memoria di massa Bianchi Verdi Neri Verdi Anna Roma 1980 Luca Milano 1960 Andrea Torino 1976 Paola Bari 1954 Record Operazioni

Dettagli

Introduzione ad Access

Introduzione ad Access Introduzione ad Access Luca Bortolussi Dipartimento di Matematica e Informatica Università degli studi di Trieste Access E un programma di gestione di database (DBMS) Access offre: un supporto transazionale

Dettagli

Esempi di algoritmi. Lezione III

Esempi di algoritmi. Lezione III Esempi di algoritmi Lezione III Scopo della lezione Implementare da zero algoritmi di media complessità. Verificare la correttezza di un algoritmo eseguendolo a mano. Imparare a valutare le prestazioni

Dettagli

Fondamenti di Informatica 300 ed oltre esercizi di teoria

Fondamenti di Informatica 300 ed oltre esercizi di teoria Fondamenti di Informatica 300 ed oltre esercizi di teoria Fulvio Corno Antonio Lioy Politecnico di Torino Dip. di Automatica e Informatica v. 4.02 01/09/2009 Indice 1 Introduzione 2 1.1 Nota metodologica........................................

Dettagli

CAPITOLO PRIMO IL CONCETTO DI ALGORITMO 1

CAPITOLO PRIMO IL CONCETTO DI ALGORITMO 1 1.1 Che cos è un algoritmo CAPITOLO PRIMO IL CONCETTO DI ALGORITMO 1 Gli algoritmi sono metodi per la soluzione di problemi. Possiamo caratterizzare un problema mediante i dati di cui si dispone all inizio

Dettagli

Chiamate di sistema per la Inter Process Communication (IPC) in POSIX. E.Mumolo, DEEI mumolo@units.it

Chiamate di sistema per la Inter Process Communication (IPC) in POSIX. E.Mumolo, DEEI mumolo@units.it Chiamate di sistema per la Inter Process Communication (IPC) in POSIX E.Mumolo, DEEI mumolo@units.it Pipe Cos'è un pipe? E' un canale di comunicazione che unisce due processi Caratteristiche: La più vecchia

Dettagli