Estratto del documento

Teoria dei linguaggi formali

Significato o Semantica di un programma

«C'è modifica approfitto 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 e relativi dati, mi restituisca se dal codice termina l'esecuzione o meno. Problema non calcolabile.

Paradigmi di programmazione

  • Modi diversi per risolvere lo stesso problema.
  • I modi hanno la stessa potenza formale possono risolvere le stesse classi di problemi.

Paradigma ricorsivo → I problemi vengono risolti attraverso la definizione e calcolo di funzioni ricorsive, ovvero definite in termini di se stesse.

es funzione fattoriale ! : N -> N

n = n · (n - 1) · ... · 2n ∈ N ovvero N - {0}

Paradigma iterativo → I programmi vengono risolti attraverso trasformazione di stato.

Lo Stato iniziale → programma → Stato finale

Il programma prende lo Stato iniziale, opera su un insieme di problemi e produce lo Stato finale.

Teoria dei linguaggi formali

Significato o Semantica di un programma

Che modifca apporta 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 mi restituisca output, mi restituisca se il codice termina l'esecuzione o meno. Problema non calcolabile.

Paradigmi di programmazione

  • Modi diversi per risolvere lo stesso problema.
  • Due modi molto spesso per uno stesso problema possono risolverlo.

Paradigma ricorsivo ➔ i problemi vengono risolti attraverso la definizione e calcolo con funzioni ricorsive, ovvero definite in termini di se stesse.

Es. funzione fattoriale : ->

Es. () = 2 + () NB: (2 scritto dentro insieme)

Definizione (come si comporta)

  • 0! = 1
  • n! = n·(n-1)!
  • ∈ N ovvero N - {0}

Nella def. funzione uso la definizione stessa.

Uso (calcolo il valore) di 5!

  • 0! = 1
  • 1! = 1
  • 3! = 3·2·1 = 6
  • 4! = 4·3·2·1 = 24

5! = 5·4! per n ∈ N+

  • 4·(3!) =
  • 4·3·2·1 = 4·3·2·1!
    • Paradigma iterativo ➔ I programmi vengono risolti attraverso trasformazione di stato.

      • Stato iniziale ➔ Programma ➔ Stato finale

      Il programma prende lo stato iniziale, opera su cui svolgere il problema il procedimento stato finale.

      Il linguaggio C

      ...è un linguaggio ad alto livello cioè i costrutti del linguaggio sono comprensibili per il programmatore. Il calcolatore non esegue direttamente i programmi che noi scriviamo in linguaggio macchina, tra il linguaggio e il calcolatore, c'è un programma particolare, traduce le istruzioni o istruzioni in linguaggio macchina.

      Concetto di stato

      Per spiegare il significato dei programmi, è necessario astrarre dal loro effetto sulla loro esecuzione su quel livello di astrazione. L'esecuzione consiste su una memoria astratta che si può definire mediante un multimi. di valori binari in notazione decimale.

      Memoria Fisica

      • 1000... Sequenza di parole di memoria (celle) che vengono indirizzate
      • 1000...0000 Tradurre le parole compreso anche basso lunghezza cost.
      Indirizzo ... ... Nome v.a. le x le 30 y le 20 z le 15

      Stato composto da associazioni nome-valore

      • y 30
      • x 20
      • z 15

      Con questo tipo di stato numeroso è veloce la reevaluazione del programma quindi mi sito di uno stato composto da ambiente e memoria.

      Il valore della variabile al valore x lo trovi in memoria sull'indirizzo associato solo x nell'ambiente.

      Ambiente

      • Associazione, nome-locazione

      Memoria

      • Associazione, locazione-valore

      Come si crea lo stato? Nei linguaggi di programmazione esistono dei costrutti (strutture) delle dichiarazioni che hanno la funzione di creare lo stato

      Effetto: Crea una nuova associazione sull'ambiente e sulla memoria.

      Esempio: int x = 12;

      Come si modifica lo stato?

      Attraverso costrutto della Comando

      Assegnamento

      Nome ← espressione

      Esempio: x ← 10+5

      Situato l'espressione ed il valore risultante viene assegnato in memoria alla variabile.

      Esempi: int x = 10 y ← 5 x = 3 i = 0, j=0, ← y+le

      x = x+y

      Altri comandi sono comprensioni o assegnamenti:

      COMANDO CONDIZIONALE

      If (condizione) comando1 ; else comando2 ;

      Vero → Comando1Falso → Comando2

      If annidato (NB: parentesi graffe!)

      if (x > 0) { if (y > 0) x = x - 1; else y = y - 1;} else x = x + 2;if (x > 0) { x = x + 1; y = y + 1;}

      Uguaglianza: ==Assegnamento: =

      COMANDO ITERATIVO (iterazione indeterminata)

      while (condizione) comando ;

      int x = 3;int y = 0;while (x > 0) { x = x - 1; y = y + 2;}

      Finché la condizione è vera, si esegue il comando; si rivaluta la condizione ad ogni "giro" di loop.

      Il comando permette di avere computazioni a infinito.

      COMANDO ITERATIVO (iterazione determinata)

      for (int i = 0; i < 10; i++) comando ;

      NB: la dichiarazione va deve avvenire fuori dal for e dentro al ciclo i non deve essere modificata.

      Perché non definire un linguaggio con solamente iterazione determinata?

      Perché altrimenti si volerebbe la potenza di calcolo del linguaggio, quindi la possibilità di risolvere problemi.

      int x = 24;int y = 9;while (x > y) { if (x > y) x = x - y; else y = y - x;}

      es. - MCD (m, n) nel ciclo while;

      es. - MCD (n - m, m) nel ciclo for;

      int x = 6; int fact = 1;for (int i = 1; i
Anteprima
Vedrai una selezione di 3 pagine su 9
Nozioni fondamentali programmazione C Pag. 1 Nozioni fondamentali programmazione C Pag. 2
Anteprima di 3 pagg. su 9.
Scarica il documento per vederlo tutto.
Nozioni fondamentali programmazione C Pag. 6
1 su 9
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Simone_S di informazioni apprese con la frequenza delle lezioni di Programmazione 1 e Laboratorio 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 Barbuti Roberto.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community