Anteprima
Vedrai una selezione di 17 pagine su 80
Teoria Informatica - Linguaggio C Pag. 1 Teoria Informatica - Linguaggio C Pag. 2
Anteprima di 17 pagg. su 80.
Scarica il documento per vederlo tutto.
Teoria Informatica - Linguaggio C Pag. 6
Anteprima di 17 pagg. su 80.
Scarica il documento per vederlo tutto.
Teoria Informatica - Linguaggio C Pag. 11
Anteprima di 17 pagg. su 80.
Scarica il documento per vederlo tutto.
Teoria Informatica - Linguaggio C Pag. 16
Anteprima di 17 pagg. su 80.
Scarica il documento per vederlo tutto.
Teoria Informatica - Linguaggio C Pag. 21
Anteprima di 17 pagg. su 80.
Scarica il documento per vederlo tutto.
Teoria Informatica - Linguaggio C Pag. 26
Anteprima di 17 pagg. su 80.
Scarica il documento per vederlo tutto.
Teoria Informatica - Linguaggio C Pag. 31
Anteprima di 17 pagg. su 80.
Scarica il documento per vederlo tutto.
Teoria Informatica - Linguaggio C Pag. 36
Anteprima di 17 pagg. su 80.
Scarica il documento per vederlo tutto.
Teoria Informatica - Linguaggio C Pag. 41
Anteprima di 17 pagg. su 80.
Scarica il documento per vederlo tutto.
Teoria Informatica - Linguaggio C Pag. 46
Anteprima di 17 pagg. su 80.
Scarica il documento per vederlo tutto.
Teoria Informatica - Linguaggio C Pag. 51
Anteprima di 17 pagg. su 80.
Scarica il documento per vederlo tutto.
Teoria Informatica - Linguaggio C Pag. 56
Anteprima di 17 pagg. su 80.
Scarica il documento per vederlo tutto.
Teoria Informatica - Linguaggio C Pag. 61
Anteprima di 17 pagg. su 80.
Scarica il documento per vederlo tutto.
Teoria Informatica - Linguaggio C Pag. 66
Anteprima di 17 pagg. su 80.
Scarica il documento per vederlo tutto.
Teoria Informatica - Linguaggio C Pag. 71
Anteprima di 17 pagg. su 80.
Scarica il documento per vederlo tutto.
Teoria Informatica - Linguaggio C Pag. 76
1 su 80
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Formattazione del testo

L L<var> <var> <const>CarattereNumero I caratteri si rappresentano trachar ch; ✓✓apici <expr> <expr>int i;'< _--< ch=‘A’; Alla variabile ch é assegnato ilA65 •ch=65; carattere Ach=‘65’; )(" "" "" " i=‘A’; vAssegna alla variabile ch il carattere <expr>6 che corrisponde al numero 65aAssegna alla variabile <expr>::=...|<expr1><op2><expr2>|<op1><expr2>|...ch il carattere 6 Assegna alla variabile i⑨il numero che codificail carattere A La combinazione di due Un’espressione preceduta da un operatoreespressioni attraverso un operatore unario è un’espressione (<op1> è labinario è un’espressione (<op2> è categoria sintattica degli operatori unari)La costante non è memorizzata in una locazione di memoria, ma va piuttosto intesa la categoria sintattica deglicome una

parte del codice. Le costanti sono codificate in modo immediato in operatori binariistruzioni come addi Restituisce il resto <expr>::=...|(<expr>)|<expr1>,<expr2>|<expr1>?<expr2>:<expr3>|...Operatori aritmetici della divisione intera+|-|*|/|%<op2>::=Operatori relazionali<|>|<=|>=|==|!= Un’espressione tra ?: é un operatore ternario: treor logicoOperatori logici parentesi tonde è espressioni combinate per&&| || un’espressione mezzo dell’operatore?: sonoOperatori di manipolazione dei bit Due espressioni concatenate un’espressione&| | | >>|<<|^ per mezzo di una virgolasono un’espressionexor nit a bitand logico <expr>::=...|(<cast_type>)<expr>|...<cast_type>::=<type>|...or bit a bit Operatore di shift a L’operatore cast permette di controllare iland bit a bit sinistra tipo del valore restituito da un’espressioneVincolo

contestuale: gli operatori di shift e di manipolazione dei bit e la semantica delle espressioni

Gli operatori % e ~ si applicano solo a espressioni di tipo intero.

La semantica di un'espressione è costituita da due componenti:

  • a espressioni di tipo intero
  • Il valore restituito dell'espressione (tale valore ha un tipo) ([unsigned][long|short] int)
  • Gli effetti che il calcolo dell'espressione produce sul valore delle variabili del programma (side effects)

<op1> ::= =!|~

Side effects

Valore restituito

Linguaggio C

Valore della variabile (espresso nel tipo della variabile)

<var>

Operatore di negazione

Operatore di negazione logica bit a bit

Valore della costante

<const>

<expr> ::= ...|<var>=<expr>|<var><op2>=<expr>|... (nel tipo della costante)

Incrementa di 1 il valore della (<var>)+1

++<var> : variabile referenziata da <var>

L'assegnamento del valore

Incrementa di 1 il valore della

É una prima forma compatta

perrestituito da un’espressione alla (<var>)<var>++ variabile referenziata da <var>rappresentarevariabile identificata da un <var>=<var><op2><expr>riferimento è un’espressione (<var>)-1- -<var> Decrementa di 1 il valore della: variabile referenziata da <var>int a;

Decrementa di 1 il valore della(<var>)<var>- -int a;a=10; variabile referenziata da <var>a=10;a+=4;//assegna 14 ad a int a;<var> <const> int count;int b;Equivale a: a=a+4; for (count=0; count<10; count=count++){a=10;<expr> ...b=a++;//assegna 11 ad a e 10 a b }b=++a;//assegna 12 ad a e 12 a bÉ un’espressione che a=a++;//non cambia il valore di arestituisce il valore a Produce un ciclo infinito<expr> prima dell’incremento Operatori relazionaliSide effectsValore restituito n <op2>::=...|<|<=|==|>|>=|!=|...Produce gli effetti delle

espressioni<expr1><op2><expr2> (<expr 1>)<op2> (<expr2>)
composte senza aggiungerne altri Il valore restituito é:<op1><expr> Produce gli effetti di <expr><op1> (<expr>)
1 (nel tipo int) se la relazione testata è vera senza aggiungerne altri 0 (nel tipo int) se la relazione testata è falsa
In entrambi i casi il valore restituito si ottiene applicando la semantica dell’operatore ai valori restituiti dalle espressioni composte
5>=4 é un’espressione che restituisce 1
2>4 é un’espressione che restituisce 0
Operatori aritmetici int a=5>=4;//assegna 1 alla variabile a
Restituisce il resto della divisione intera tra gli operandi:<op2>::=+|-|*|/|%|...
In linguaggio c (a meno di includere una libreria) il tipo di dato booleano non esiste, ma 3%2=1 può essere definito dall’utente usando la direttiva typedef:
7%2=1
Le operazioni sono eseguite in aritmetica finita,

Avendo a disposizione un numero finito di cifre. L'esito di un'operazione può produrre overflow, underflow o errori di troncamento.

In fase di compilazione Boolean viene sostituito con unsigned short int.

Operatori con la stessa espressione sintattica possono avere semantica diversa a seconda del tipo del valore restituito dalle espressioni alle quali sono applicati: occorrenze di true sono sostituite con 1 e quelle di false con 0.

Esempio: la somma tra int e la somma tra float si rappresentano con l'operatore + entrambe, ma sono compilate in istruzioni assembly diverse, sono eseguite attraverso algoritmi diversi in unità aritmetiche diverse del processore.

Operatori logici: Il tipo del valore restituito è il tipo del valore restituito dalle espressioni che costituiscono gli operandi: <op2>::=&&| || <op1>::=! Negazione

Se gli operandi sono espressioni che restituiscono valori di tipo diverso allora viene fatta una conversione dell'operando "più debole" al formato (tipo) dell'operando "più forte" (dipende dall'ampiezza dell'insieme dei valori rappresentati). Il tipo del valore restituito è int (gli operandi possono essere espressi in qualsiasi tipo). Il valore restituito può essere determinato usando le tabelle di verità: unsigned int < int 0 codifica falso e tutto ciò che è diverso da 0 codifica vero. short int < int < long int. int a = 0.5 && 2; // assegna 1 ad a. La congiunzione logica di due espressioni è eseguita nel tipo dell'operando "più forte" e il valore restituito è del tipo vero, quindi il valore restituito è dell'operando.

“più forte” vero, e viene codificato come 1

Valore diverso da 0, quindicodifica veroint n=10; x vale 2 (nel tipo float)

int m=4; y vale 2.5 (nel tipo float)

float p=4;

float x,y;

x=n/m;

y=n/p;

Short circuit (corto circuito) o lady evaluation Valore restituito Side effects

Quali sono i side effects di <expr1>&&<expr2>? <var>=<expr>

Si calcola <expr1> e se ne producono gli effetti. (<expr>)

Calcola <expr> e ne produce gli effetti,

Se <expr1> restituisce vero, allora si calcola <expr2> e se ne producono gli effetti,

converte il valore restituito da <expr>Espresso nel tipo di <var>

effetti, altrimenti no (perché il valore restituito da <expr1>&<expr2> è già nel tipo di <var> e lo assegna a <var>

determinato ed é falso) Produce gli effetti di<var><op2>=<expr> (<var>=<var><op2><expr>):

<var>=<var><op2><expr>(b!=0)&&(a/b>1) Produce prima gli effetti di(<expr1>)<expr1>,<expr2> <expr1> e poi quelli di <expr2>La stessa cosa accade per <expr1>||<expr2> <expr2> se (<expr1>!=0 Calcola <expr1> e ne produce gli effetti;<expr1>?<expr2>:<expr3> riSi calcola <expr1> e se ne producono gli effetti. ri se il valore restituito é diverso da 0 (vero)Se <expr1> restituisce falso, allora si calcola <expr2> e se ne calcolano gli <expr3> se (<expr1>==0riri allora calcola <expr2> e ne produce glieffetti, altrimenti no effetti, altrimenti calcola <expr3> e neproduce gli rfvrgtoOperatori di manipolazione dei bitEseguono operazione tra bit corrispondenti delle espressioni a cui sono applicatia, b, c sono variabili Produce gli effetti di <expr>(<expr>) convertito al tipo(<cast_type>)<expr> riunsigned short int a,, ,
, , , , , , , , , , , , , , , , , , , , 
, 
, , , , ,
, , ,