vuoi
o PayPal
tutte le volte che vuoi
Teoria dei linguaggi formali
Significato o semantica di un programma
Le modalità con cui avviene l'esecuzione del programma nel calcolatore???
Secondo la teoria della calcolabilità non tutti i problemi si possono risolvere con l'informatica.
es.: Non esiste un programma che dato in input un codice em individui alcuni fatti circa tale programma (l'esecuzione o meno)
Paradigmi di programmazione
- Modi diversi per risolvere lo stesso problema
- Modalmente stesso problema formalmente possono risultare meglio/peggio/solvibili
Paradigma ricorsivo ➔ I problemi vengono risolti attraverso la definizione algebrica dell funzione ricorsive, ovvero definite in termini di sé stesse.
es funzione fattoriale : N ➔ N es f(n) = 1 + f(n)
Definizione (come si comporta) Uso (algoritmo di calcolo di f)
- Ø! = 1 ➔ 1! = 1
- n! = n : (n - 1)!
- 3! = 3 : 2 : 1 = 6
n∈N ovvero N - { 0 }
- Ø! = 1 ➔ 4!: 5 c.d., da 1 per n - n∈N+
- n! = n : (n - 1)!/ 4: (3!)
Posto defin dif funzione uso l'estensione stesso.
Paradigma imperativo ➔ I programmi vengono risolti attraverso trasformazioni
di stato
Stato iniziale ➔ Programma ➔ Stato finale
Il programma prevede lo stato iniziale, elabora lo stato nuovo : problema i-e produce lo stato finale
Il linguaggio C è un linguaggio di alto livello con i costrutti
non esegue direttamente i programmi ma risultano in
il programma traduce le istruzioni in istruzioni in
in linguaggio macchina.
Per spiegare il significato del programma è necessario astrarre dai
qui sta la idea di costruzione del livello di astrazione. Lavoriamo
teniamo su una memoria astratta che al posto delle celle ha un
con valori tenuti in notazione alchemica.
Memoria Fisica →
Stato completo di associazioni
VALORE
x | 30 y | 20 z | 15Con questo tipo di stato numerico si realizza la descrizione del programma quirical misero di uno stato composto da AMBIENTE e MEMORIA
AMBIENTE nome→locazione
MEMORIA locazione→valore
Come nasce lo stato? Nei linguaggi di programmazione esistono dei costrutti costrutte che danno funzione di creare lo stato
es.
int x,y; le 10Ciascuna nuova associazione sul ambiente e sulla memoria.
Come si modifica lo stato? Attraverso espressione per comandi
ASSEGAMENTO
nome ← espressione
es (esempio): x = 10 + 5Insieme l'espressione ed il valore risultante viene assegnato in memoria alla variabile
Come si delineano gli argomenti delle chiamate delle funzioni?
In C (linguaggio in cui i parametri impostati in fase di chiamata della funzione sono "parametri attuali" delle variabili che appaiono come "nella de/inizializzazione" del blocco) alla modalità di passaggio sono permessi due modalità di valore
Quando si richiama una funzione si generano sullo schema/visore e sullo schema in un nuovo ambiente e una memoria colma procedimenti; d'altra parte a tempo breve il valore degli argomenti.
Dopo si esegue il blocco di definizione di funziona
- int fact (int n) { ... } main() { int x = 4, n = y = 6; x = fact(x); ... }
quando elemento modificato lo stato pizzzo resterebbe nulla.
es: void incr (int n) { n = n + 2; } main() { int x = 0; incr(x); }Intuitivo elemento utilizzazione è un'espressione di fatturata in blocco la produzione è un comando che modifica lo stato.
Memorizzazione non di stato piano x è prossimo creazione variabile allo stato zero
int* p p ha valore = es & indica indirizzo di mossa => le memoria di p * p = valore del passato => 10 di quanto puntato da pPUNTATORE
- Il contenuto di un locazione di mossa non è interpretato solo come valore ma come caso non in detta locazione
- Puntatori è una variabile TLCN valore e indirizzo/locazione
- Il valore in memoria p/e indirizzato da una parola di membrana => deviera il valore int