Anteprima
Vedrai una selezione di 3 pagine su 7
Appunti Fondamenti di informatica Pag. 1 Appunti Fondamenti di informatica Pag. 2
Anteprima di 3 pagg. su 7.
Scarica il documento per vederlo tutto.
Appunti Fondamenti di informatica Pag. 6
1 su 7
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

PRECEDENZA

- Fattori (tra parentesi)

- Operatori unari post-fissi

- Operatori unari prefissi

- Not

- Meno e più unario

- Binari:

1. moltiplicativi (*, /, %)

2. additivi (+, -)

3. relazione (<, <=, >= ...) * ASSOCIATIVI A SX (da sx a dx)

4. uguaglianza (= -, =)

5. logici (nell’ordine &&, ||)

6. assegnamento (= ...) ASSOCIATIVO A DX

WARNING! Cortocircuito

Il calcolo di un’espressione contente && e il termine appena si può decidere se

l’espressione è vera o falsa con certezza; le altre espressioni non vengono nemmeno

valutate.

Se && ha come primo risultato 0 (cioè vero) non valuta gli altri e restituisce

direttamente falso.

Se || ha come primo risultato 1 (cioè falso) non valuta gli altri e restituisce

direttamente vero.

STREAM

Uno stream è un buffer (memoria temporanea) che va considerato come un flusso di

informazioni posizionato su caselle di un byte ciascuno.

Lo stream è usato principalmente per operazioni di lettura/scrittura si associati a

dispositivi fisici come tastiera, monitor…

- Stream di ingresso CIN: associato alla tastiera del terminale. Si preleva dallo

stream un carattere/numero alla volta con lo spostamento di un puntatore fino

alla marca di fine stream o a un carattere non previsto e ogni chiamata

restituisce l’indirizzo dello stream coinvolto poiché >> è associativo a sx (ignora

gli spazi bianchi a meno che non si usino le frazioni).

Quando nel programma si ha la chiamata al CIN, esso si arresta e aspetta

informazioni, ciò che viene scritto compare a video e va a riempire lo stream

appena si preme l’invio, da lì in poi si prelevano i dati per il programma. Quando

non si inserisce qualcosa di consistente, il prelievo non avviene e lo stream si

porta in una condizione di errore che può essere ripristinato chiamando la

funzione cin.clear() e questo avviene anche quando si tenta di leggere la

marca di fine stream (ctrl+D).

- Stream di uscita COUT: associato al monitor del terminale. Si calcola ciò che si

vuole mostrare, si copia nello stream un carattere alla volta e visto che << è

associato a sx, il ritorno è lo stesso stream e a video si ha ciò che è presente

nello stream nel formato predefinito dal compilatore. Di solito si accompagna

sempre con un “ENDL” che manda a capo per un miglior ordine visuale nel

terminale.

Gli stream però possono essere collegati anche a file (file-stream) e ci si può lavorare

includendo la libreria <fstream>, ne esistono di tre tipi:

Lettura

 Scrittura

 Scrittura alla fine del file (“APPEND”, quando è già presente qualcosa nel file)

Modalità d’uso:

1. Si crea lo stream (f stream ff) e si apre con ff.open(“nomeFile.txt”, ios::

in/out)

2. Si usa con la stessa procedura di quelli predefiniti ff<<i oppure ff>>i

3. Si chiuse lo stream ff.close()

Dopo ogni chiusura è sempre possibile riutilizzare lo stream.

Nel caso lo stream si ponga in una posizione di errore, si può usare la funzione

ff.clear() per portarlo in uno stato corretto (meglio controllare spesso)

- Stream di errore CERR: ha le stesse caratteristiche del cout e si usa nello stesso

modo tranne che il cout si usa in qualsiasi tipo di uscita, il cerr si usa quando,

dopo un controllo, si deve mandare a video un messaggio di errore.

ISTRUZIONI STRUTTURATE

Istruzione composta: si possono rendere un’unica istruzione un qualsiasi insieme

 di istruzioni costituenti un “blocco” (una parte di codice compresa fra parentesi

graffe)

Istruzione condizionale:

 IF if (condizionaleLogica) {

 Istruzioni da eseguire se la

condizone risulta vera Si possono anche contenere

} più if tenendo conto che

l’else si riferisce all’if pù

vicino.

else {

istruzioni da esefuire se la

condizione risulta falsa

}

SWITCH switch (condizionale) {

 case 1 operazione;

istruzioni per questo caso;

break;

case 2 operazione; case 3 operazione;

istruzioni

break;

default; istruzioni;

break;

}

Istruzione ripetitive:

 WHILE while (condizione){

 Istruzioni;

}

Se la condizione è vera si entra nel while, altrimenti si salta tutto e le istruzioni

vengono ripetute fino a quando la condizione non risulta falsa (si rivaluta ogni volta)

DO do {

 Istruzioni;

}

while body

Si usa quando si vuole far eseguire comunque, almeno una volta (caso in cui la

condizione del while è subito falsa)

FOR for (inizializzazione; condizione; incremento) {

 Istruzioni;

}

Si esegue come se fosse:

1. Inizializzazione

2. While (condizioni)

3. Incremento e rivalutazione

Si usa il for se la variabile inizializzata serve solo all’interno del corpo

Continue -> istruzione di salto. Si trova sempre all’interno di un ciclo e rimanda

 diretamente alla rivalutazione della condizione

Go to identifier -> istruzione di salto. Svolge lo stesso compito di break e

 continue ma permette di andare in qualche parte specifica del codice (come i

JUMP in assembler). Ne è sempre sconsigliato l’uso

Return value -> istruzione di salto. Si trova solo nelle funzioni (quindi anche nel

 main) e fa terminare l’esecuzione della stessa; è operazionale e se non è

presente la fuzione termina quando raggiunge la fine del suo body

Exit (o) -> istruzione di salto. Serve ad interrompere completamente

 l’esecuzione del programma e si può usare includento la <stdlib>

FUNZIONE

La funzione è un pezzo di codice che viene isolato in modo da poter essere utilizzato

più volte senza doverlo riscrivere

Caratteristiche:

Nome

- per identificarla, anche se possono coesistere funzioni con stesso nome

se hanno argomenti diversi o il numero diverso, e serve anche nella chiamata

du funzioni *

Tipo di ritorno,

- è ciò che restituisce ogni volta la funzione dopo essere stata

eseguita; tra i tipi di ritorno ci sono tutti quelli fondamentali sommati al tipo

void che indica la funzione senza ritorno (di solito capita con la stampa), oppure

riferimenti

Argomenti

- che possono anche nonmesserci, oppure, se presenti, ne va

specificato il tipo e il passaggio di questi nel main può avvenire in due modi: per

valore (copiando semplicemente il valore) oppure per riferimento, se si vuole

permettere alla funzione di modificare una variabile del main, in quel casosi dice

che ha effetto collaterale.

P.s gli argomenti che compaiono nella dichiarazione della funzione ** sono detti

formali, mentre quelli che compaiono nel main sono detti attuali.

Su una funzione si può operare in tre modi diversi:

- Dichiarazione *: se si indicano semplicemente i tre elementi sopra elencati

senza il corpo stesso: tipoRitorno_nome (ar1, ar2…) = intestazione

- Definizione: se oltre all’intestazione della funzione si specifica anche il coorpo

della stessa funzione

- Chiamata *: avviene nel main ed è del tipo “nome” (argomenti attuali) e serve a

specificare in quale parte del programma serve l’uso della funzione specificata.

Si possono inizializzare variabli fuori dal main e da altre funzioni si tratta delle variabili

globali che sono accessibili da tutte le funzioni del programma.

Appendice:

- Ricorsione (trattata meglio in algoritmi): si ha quando una funzione richiama se

stessa all’interno del suo corpo. Per poterla scrivere è necessario trovare dei

casi base a cui far ricondurre alla fine tutte le serie di chiamate ricorsive dettate

dai passi ricorsivi. In genere c’è un argomento di controllo dal cui valore

dipende la scelta delle istruzioni da eseguire. Per ogni funzione ricorsiva esiste

la corrispondente iterativa w, in base ai casi ne conviene più una che l’altra.

TIPI DERIVATI

- Riferimenti: si ha quando si assegna una ltro nome ad una variabile già

esistente non occupando ulteriore spazio in memoria. Non è possibile creare

riferimenti a valori ma solo a variabili e oer le variabili costanti pervhè non si

deve poter modificare la variabile del riferimento. Servono nel passaggio per

riferimento per le funzion ma può essere anche il tipo del ritorno.

WARNING! Non si devono restituire variabili che terminano il loro tempo di vita

con la funzione stessa.

- Puntatori: sono variabili che contengono indirizzi e vanno sempre inizializzati

altrimenti puntano ad una parte casuale della memoria; se inizializzato come

costante punterà verso la stessa variabile: int*constp = &q

Si può anche inizializzare un puntatore a puntatore con: int** p = &q

Dettagli
A.A. 2022-2023
7 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher sabrinaamyftarii di informazioni apprese con la frequenza delle lezioni di Fondamenti di informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Pisa o del prof Berndardeschi Cinzia.