Anteprima
Vedrai una selezione di 28 pagine su 146
Appunti e esercizi svolti di Fondamenti di Informatica Pag. 1 Appunti e esercizi svolti di Fondamenti di Informatica Pag. 2
Anteprima di 28 pagg. su 146.
Scarica il documento per vederlo tutto.
Appunti e esercizi svolti di Fondamenti di Informatica Pag. 6
Anteprima di 28 pagg. su 146.
Scarica il documento per vederlo tutto.
Appunti e esercizi svolti di Fondamenti di Informatica Pag. 11
Anteprima di 28 pagg. su 146.
Scarica il documento per vederlo tutto.
Appunti e esercizi svolti di Fondamenti di Informatica Pag. 16
Anteprima di 28 pagg. su 146.
Scarica il documento per vederlo tutto.
Appunti e esercizi svolti di Fondamenti di Informatica Pag. 21
Anteprima di 28 pagg. su 146.
Scarica il documento per vederlo tutto.
Appunti e esercizi svolti di Fondamenti di Informatica Pag. 26
Anteprima di 28 pagg. su 146.
Scarica il documento per vederlo tutto.
Appunti e esercizi svolti di Fondamenti di Informatica Pag. 31
Anteprima di 28 pagg. su 146.
Scarica il documento per vederlo tutto.
Appunti e esercizi svolti di Fondamenti di Informatica Pag. 36
Anteprima di 28 pagg. su 146.
Scarica il documento per vederlo tutto.
Appunti e esercizi svolti di Fondamenti di Informatica Pag. 41
Anteprima di 28 pagg. su 146.
Scarica il documento per vederlo tutto.
Appunti e esercizi svolti di Fondamenti di Informatica Pag. 46
Anteprima di 28 pagg. su 146.
Scarica il documento per vederlo tutto.
Appunti e esercizi svolti di Fondamenti di Informatica Pag. 51
Anteprima di 28 pagg. su 146.
Scarica il documento per vederlo tutto.
Appunti e esercizi svolti di Fondamenti di Informatica Pag. 56
Anteprima di 28 pagg. su 146.
Scarica il documento per vederlo tutto.
Appunti e esercizi svolti di Fondamenti di Informatica Pag. 61
Anteprima di 28 pagg. su 146.
Scarica il documento per vederlo tutto.
Appunti e esercizi svolti di Fondamenti di Informatica Pag. 66
Anteprima di 28 pagg. su 146.
Scarica il documento per vederlo tutto.
Appunti e esercizi svolti di Fondamenti di Informatica Pag. 71
Anteprima di 28 pagg. su 146.
Scarica il documento per vederlo tutto.
Appunti e esercizi svolti di Fondamenti di Informatica Pag. 76
Anteprima di 28 pagg. su 146.
Scarica il documento per vederlo tutto.
Appunti e esercizi svolti di Fondamenti di Informatica Pag. 81
Anteprima di 28 pagg. su 146.
Scarica il documento per vederlo tutto.
Appunti e esercizi svolti di Fondamenti di Informatica Pag. 86
Anteprima di 28 pagg. su 146.
Scarica il documento per vederlo tutto.
Appunti e esercizi svolti di Fondamenti di Informatica Pag. 91
Anteprima di 28 pagg. su 146.
Scarica il documento per vederlo tutto.
Appunti e esercizi svolti di Fondamenti di Informatica Pag. 96
Anteprima di 28 pagg. su 146.
Scarica il documento per vederlo tutto.
Appunti e esercizi svolti di Fondamenti di Informatica Pag. 101
Anteprima di 28 pagg. su 146.
Scarica il documento per vederlo tutto.
Appunti e esercizi svolti di Fondamenti di Informatica Pag. 106
Anteprima di 28 pagg. su 146.
Scarica il documento per vederlo tutto.
Appunti e esercizi svolti di Fondamenti di Informatica Pag. 111
Anteprima di 28 pagg. su 146.
Scarica il documento per vederlo tutto.
Appunti e esercizi svolti di Fondamenti di Informatica Pag. 116
Anteprima di 28 pagg. su 146.
Scarica il documento per vederlo tutto.
Appunti e esercizi svolti di Fondamenti di Informatica Pag. 121
Anteprima di 28 pagg. su 146.
Scarica il documento per vederlo tutto.
Appunti e esercizi svolti di Fondamenti di Informatica Pag. 126
Anteprima di 28 pagg. su 146.
Scarica il documento per vederlo tutto.
Appunti e esercizi svolti di Fondamenti di Informatica Pag. 131
1 su 146
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Problema della rappresentazione

Il passaggio dal file di testo contenente le istruzioni del linguaggio al linguaggio macchina in codice binario è

il seguente: File di testo con estensione .c -> compilatore -> Assembler -> Codice binario

Tipi

Ogni valore ha un tipo, il quale è caratterizzato dall'insieme dei valori che rappresenta e dalle operazioni

che è possibile eseguire su tale tipo.

Esistono vari tipi, tra cui: 31 31

Int: interi con segno, occupano 4 byte, rappresenta valori tra [-2 , 2 -1].

• Unsigned int: interi senza segno

• Float: razionali, valori in virgola mobile. Non rappresenta tutti i razionali all'interno di un intervallo.

• Double: float con doppia precisione

• Char: rappresenta i 256 caratteri componibili con il codice ASCII

• Void: tipo nullo

Variabile

Locazione di memoria che contiene un certo valore di un certo tipo. Tale valore può variare nel corso della

computazione, mentre il suo tipo è invariabile.

Ad ogni variabile bisogna associare un nome e un tipo secondo la seguente sintassi: <tipo> var_name;

Prima di essere utilizzabile, una variabile deve essere dichiarata all'interno del programma.

Array

Contenitore di un numero N di elementi dello stesso tipo, si dichiara con: <tipo> Ar_name[N]; dove N è un

numero intero.

Per accedere a un valore contenuto in un array bisogna farlo attraverso il suo nome generale esplicitando

l'indice nel quale si trova all'interno dell'array.

Ad esempio, per fare riferimento al valore in posizione i dell'array sopra: Ar_name[i];

Le posizioni di un array di N elementi sono comprese tra [0 , N-1].

Espressione

Combinazione di variabili e costanti attraverso degli operatori, sono caratterizzate da:

Valore restituito

• Effetto sulle variabili

Operatori

Aritmetici: +, -, *, /, %

• Relazionali: <, >, <=, >=, !, !=

• Logici: &&, ||, !

• Incremento: ++, --

• Assegnamento: =

[1.1] Istruzioni

giovedì 18 settembre 2014

23:27

Istruzione

Espressione seguita da ";", la sua esecuzione consiste nel calcolare l'espressione e produrre i suoi "side

effect", dopodiché passare all'istruzione successiva.

Es (1) a = 3;

Esistono vari tipi di istruzioni.

Espressione

Es (2) a = 3;

Sequenze di istruzioni

Es (3)

1. {

2. a = 3;

3. b = a+3;

4. }

Istruzione condizionale

Permette di condizionare l'esecuzione di un istruzione (corpo) al valore restituito da un'espressione

(guardia)

Es (4)

1. if(a>b){

2. c=10;

3. }

Condizionale con clausola else

Permette di eseguire alternativamente due corpi di istruzioni a seconda del valore restituito da

un'espressione.

Es (5)

1. if(a>b){

2. c = 10

3. } else{

4. c = 20;

5. }

Istruzioni di iterazione

Permettono di eseguire ripetitivamente un istruzione fino a che una certa condizione è vera.

Esistono 3 tipi diversi di iterazione:

For: composto da un'espressione di inizializzazione, espressione di guardia, incremento.

o Es (6) : somma dei primi N numeri interi

1. int count;

2. int sum;

3. sum = 0;

4. for(count = 0; count < N; count++){

5. sum = sum + count;

6. }

While: per spiegarlo implementiamo lo stesso esempio di prima

o Es (7)

1. int count;

2. int sum;

3. sum = 0;

4. count = 0;

5. while(count < N){

6. sum = sum + count;

7. count++;

8. }

Do-while: la prima iterazione viene eseguita prima del controllo della guardia:

o Es (8)

1. int count;

2. int sum;

3. sum = 0;

4. count = 0;

5. do {

6. sum = sum + count;

7. count++;

8. } while(count < N);

[1.2] funzioni standard e sintassi

sabato 20 settembre 2014

10:31 main( )

È una funzione; ogni programma inizia la sua esecuzione partendo dalla funzione main, la quale deve

necessariamente essere presente.

Commenti

Sono parti di testo che vengono ignorate dal compilatore e non saranno quindi convertite in

linguaggio macchina. Essi sono utili al programmatore al fine di annotare qualcosa nel file sorgente

del programma.

Esistono due tipi di commento:

Commenti fino a fine riga: si aprono con " // " e si concludono a fine riga.

• Es (9) void main(){

• a = 3; // Questo è un commento fino a fine riga

• b = 5;

• }

Commenti su più righe: iniziano con " /* " e finiscono con " */ ".

• Es (10) void main(){

• a = 3; /* Questo è un commento che

• inizia qui e termina

• dopo questa riga */

5. b = 5;

6. }

Printf()

Permette di stampare a video dei parametri.

Appartiene alla collezione di funzioni della libreria standard.

La sintassi è la seguente: printf("Hello World."); . La quale permette di visualizzare il messaggio

"Hello World.".

Scanf()

Permette all'utente di inserire dei valori da tastiera.

Appartiene alla collezione di funzioni della libreria standard.

La sintassi è la seguente: scanf("%d", &var); . La quale permette di associare un valore (in questo

caso intero) alla variabile var.

La sintassi prevede quindi di specificare due parametri: il primo è il tipo di dato inserito (%d = intero),

il secondo è l'indirizzo della variabile cui assegnare tale valore ( l'operatore " & " restituisce l'indirizzo

di memoria di una variabile).

Nota: printf() e scanf() sono entrambe definite all'interno della libreria "stdio.h".

Inclusione

È una direttiva che permette di includere, all'interno del sorgente del programma che si sta

scrivendo, altri file contenenti codice compatibile.

Si utilizza per importare agevolmente librerie contenenti le definizioni di altre funzioni.

La sintassi è la seguente: #include <libreria>

Es (11) : visualizzare la somma dei primi N numeri, con N inserito dall'utente.

1. #include <stdio.h>

2.

3. /* visualizzare la somma dei primi N numeri,

4. con N inserito dall'utente. */

5.

6. void main(){

7. int N, sum, count;

8. sum = 0;

9. printf("Inserisci valore N");

10. scanf("%d", &N); // esplicito il tipo di dato inserito (int) e la variabile(N)

11. for(count = 0; count < N; count++){

12. sum = sum + count;

13. }

14. // per visualizzare più variabili con printf() occorre inserire il tipo di variabile

15. // da visualizzare all'interno di " "" ", successivamente separare gli argomenti con

16. // la virgola e riportare, in ordine, i nomi delle variabili da visualizzare.

17. printf("\nLa somma dei primi %d numeri è %d", n, sum);

18. }

[2] Rappresentazione dei dati

sabato 20 settembre 2014

11:36

Generale

Di un numero esistono varie rappresentazioni, esse dipendono da:

Posizionalità della codifica

• Base di numerazione

• Numero di cifre

• Rappresentazione del segno

• Rappresentazione parti frazionarie

Codifica posizionale

Ogni cifra ha un posto diverso a seconda della posizione che occupa.

Pertanto lo sviluppo polinomiale sarà:

Es:

Algoritmo di conversione della base di rappresentazione

Algoritmo che impiega la base di arrivo.

• Base 2 -> base 10

o Es. (1001) 2

Base 10 -> base 2

o Es.

Algoritmo che impiega la base di partenza.

• (algoritmo delle divisioni successive)

• Base 10 -> base 2

o Che può essere scritta

Che quindi è uguale a

Dalla (7) si evince che se a = 1, allora A è dispari, altrimenti A è pari. a è quindi il resto

0 0

della divisione A/2.

Se ripercorressimo lo stesso procedimento utilizzando A=A/2 arriveremmo allo stesso

risultato, quindi:

quindi

Base esadecimale

Rappresenta i numeri con cifre da 0 a 9 e lettere da A a F, si raggruppano i bit a gruppi di 4 (poiché 4 sono i

bit che servono per rappresentare una cifra in base 16).

È la rappresentazione utilizzata per gli indirizzi di memoria.

Es

Algoritmo di conversione della base di rappresentazione delle parti frazionarie

Algoritmo che impiega la base di arrivo.'

• Es.

Algoritmo che impiega la base di partenza.

• (algoritmo delle moltiplicazioni successive).

La sua definizione è:

Per cui

Quindi a rappresenta la parte intera di 2A e a = 1 <-> 2A≥1

1 1

Es

[0.7] = [0.10110] Si dimostra che

10 2

0.7*2 = 1.4 -> 1.4 - 1 = 0.4 (1 è, in questo caso, la parte intera da sottrarre)

0.4*2 = 0.8 -> 0.8 - 0 = 0.8

0.8*2 = 1.6 -> 1.6 - 1 = 0.6

0.6*2 = 1.2 -> 1.2 - 1 = 0.2

0.2*2 = 0.4 -> 0.4 - 0 = 0.4

0.4*2 = 0.8 -> 0.8 - 0 = 0.8 raggiunto l'inizio della ricorsione, l'algoritmo si arresta.

[2.1] rappresentazione binaria

giovedì 25 settembre 2014

11:24

Interi senza segno (unsigned int)

Codifica posizionale in base 2 su N bit, dove N dipende dall'architettura del processore.

Il suo sviluppo polinomiale è: N-1

Si odono rappresentare quindi gli interi compresi nell'intervallo [0,2 ]

Caratteri (char)

Si rappresentano caratteri alfanumerici con gli interi senza segno su 8 bit, mediante conversione con il

codice ASCII.

Lo 0 rappresenta il carattere di fine riga, mentre il suo equivalente in caratteri è rappresentato dal numero

intero 48.

Interi con segno (int)

Sono rappresentati in complemento a due su N bit.

Lo sviluppo polinomiale di un int è:

La cifra più significativa ha quindi peso negativo, mentre tutte le altre hanno peso positivo.

Il massimo numero intero rappresentabile sarà:

Il minimo numero intero rappresentabile sarà: N-1 N-1

Con il tipo int sono pertanto rappresentabili tutti i valori interi nell'intervallo [-2 ,2 -1].

Calcolo dell'opposto di un numero intero

1. Rappresentazione del numero in complemento a uno

2. Sommare 1

Questa tecnica vale per tutti i numeri escluso il minimo numero, per il quale non è possibile calcolare

il complementare, rappresentato in complemento a due, su N bit.

Overflow

Si verifica quando il risultato di un'operazione eccede l'intervallo di numeri rappresentabili.

Nel caso di somma tra interi senza segno si ha overflow se ho riporto di una cifra più significativa.

• Nel caso di somma tra interi con segno si ha overflow solo se sommiamo due valori dello stesso

• segno e il risultato della somma ha segno opposto.

Es fai un esempio

Valori razionali (floating point)

Rappresentazione in forma esponenziale:

Dove: S è il segno.

• M è la

Dettagli
Publisher
A.A. 2024-2025
146 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Thomas_9 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 Firenze o del prof Carnevali Laura.