Estratto del documento

Definizioni

Codice

Codice: Un linguaggio L in cui ogni parola in L+ è decomponibile in un unico modo come prodotto di parole di L.

Linguaggio formale

Linguaggio formale: È un insieme di parole su un alfabeto.

Grammatica

Grammatica: Approccio generativo per la generazione di tutte le parole all'interno del linguaggio secondo le regole prestabilite per determinare se la parola presa in esame appartenga oppure no al linguaggio.

Macchina a stati

Macchina a stati (automi a stati): Modello matematico di un sistema con ingressi e uscite discrete. Il sistema si può trovare in un certo stato (stato attuale) che riassume le informazioni di ingresso e ci permette di determinare il comportamento del sistema al passo successivo.

MdT

MdT: Com'è fatta e come funziona? Una MdT è una macchina a stati finiti con un nastro potenzialmente infinito. Sul nastro agisce una testina, che può muoversi in entrambe le direzioni e può leggere e scrivere in ogni cella del nastro (alfabeti predefiniti, le celle possono essere vuote).

MdTU

MdTU: La macchina di Turing universale è in grado di imitare qualsiasi particolare di MdT. In sostanza è una MdT che:

  • Riceve la codifica di una MdT M e una stringa I ∈ Σ
  • Simula i passi che la macchina M compirebbe se ricevesse la stringa I
  • Restituisce la stessa risposta (e lo stesso contenuto sul nastro)

Tesi Church-Turing

Tesi Church-Turing: Tesi di Church: “Se un problema è umanamente calcolabile, allora esisterà una macchina di Turing (o un dispositivo equivalente, come il computer) in grado di risolverlo (cioè di calcolarlo).” Secondo la tesi di Church non esiste un formalismo né una macchina concreta che possa calcolare una funzione F non calcolabile secondo Turing.

Algoritmo

Algoritmo: Un algoritmo è una sequenza finita di istruzioni che specificano come certe operazioni elementari debbano susseguirsi nel tempo per risolvere una data classe di problemi.

Caratteristiche di un linguaggio di programmazione

Tutti i linguaggi di programmazione esistenti sono definiti da un lessico, una sintassi e una semantica e possiedono:

  • Istruzioni
  • Variabili e costanti
  • Espressioni
  • Strutture dati
  • Strutture di controllo
  • Sottoprogramma

Costrutti in un linguaggio di programmazione

Cosa sono i costrutti in un linguaggio di programmazione: Sono strutture sintattiche, semantiche e lessicali che permettono di combinare tra loro istruzioni elementari (assegnamento, salto, decisione) creando così istruzioni complesse o blocchi di istruzioni e controllando il flusso.

Parse tree

Parse tree: È un albero ordinato con radice, che rappresenta la struttura sintattica di una stringa relativamente ad una grammatica formale.

Programmazione non strutturata

Programmazione non strutturata: Programmazione che utilizza salti incondizionati rendendo peggiora la leggibilità. Non segue il flusso.

Identificatore

Identificatore: Nome di un oggetto. Corrisponde ad una area di memoria che contiene il valore dell’oggetto.

Variabile

Variabile: È un contenitore preposto a contenere dei valori che possono variare durante il tempo di esecuzione.

Compilatore

Compilatore: Fasi:

  • Precompilazione o preprocessing: fonde codici, modifica o cancella brani di codice.
  • Compilazione: traduce un codice in un file oggetto, di solito passando per il codice assembly.
  • Linking (da oggetti a eseguibile): lega file oggetto ed eventuali librerie esterne in un programma.

Programmazione strutturata

Programmazione strutturata: Paradigma di programmazione che è contraria all’uso dei salti incondizionati. Il programma proprio può essere suddiviso in strutture proprie detti blocchi.

Teorema di Böhm Jacopini

Teorema di Böhm Jacopini: Dato un programma proprio P è possibile costruire un programma strutturato S (P) equivalente a P.

  • Il teorema permise di dimostrare che la potenza di calcolo dei programmi strutturati non è inferiore a quella dei programmi che usano il goto (completezza).
  • Il programma strutturato S (P) è costituito da combinazioni di tre oggetti logici fondamentali: Sequenza, Selezione e Iterazione.

Scope

Scope: Lo scope è l’ambito di visibilità di un identificatore (variabili, classi, ecc...). Ovvero è l’esistenza e la possibilità di richiamare un identificatore in un determinato punto del programma. Può essere:

  • Locale, identificatori vengono dichiarati in un determinato blocco (es. in una funzione). La loro visibilità inizia dalla loro dichiarazione alla fine del blocco.
  • Globale, identificatori dichiarati al di fuori di una funzione. Sono ad esempio le variabili globali. È noto a tutte le funzioni dopo la sua dichiarazione. Il loro utilizzo è sconsigliato.

Tipi di dati

Tipi elementari: Informazioni composte da un solo valore.

Tipi strutturati: Informazioni composte da più valori concettualmente legati.

Macro

Macro: Macro è una costante simbolica definita con una direttiva del preprocessore define. A differenza delle funzioni, le macro:

  • Sono trattate dal precompilatore.
  • Sono rimpiazzate testualmente dalla definizione.
  • Non hanno celle di memoria dedicate a parametri e variabili locali.
  • Sono più veloci.
  • Creano codice più grosso.
  • Non controllano il tipo degli argomenti.
  • Funzionano con argomenti di tipo indeterminato.

Vettori mono-pluridimensionali

Vettori mono-pluridimensionali (matrici): Valori omogenei associati a oggetti diversi identificati da uno o più indici numerici.

Strutture/Record

Strutture/Record: Valori eterogenei associati a uno stesso oggetto identificati da nomi simbolici.

Sottoprogrammi

Sottoprogrammi: Brani di codice abbastanza importanti da avere un nome, dei dati e nel caso dei risultati, come i programmi.

Procedure e funzioni

Procedure: Sottoprogrammi che non generano un valore di ritorno.

Funzioni: Sottoprogrammi che generano un valore di ritorno.

Prototipo

Prototipo: È una dichiarazione di una funzione (come le variabili). Come tale fornisce al compilatore le informazioni necessarie a gestire la funzione stessa. Esempio: tipo nome(tipo 1 param 1, ...., tipo n param n).

Definizione

Definizione: Consiste in:

  • Intestazione: il prototipo senza ‘;’.
  • Corpo: tra {} è l’implementazione della funzione.

Void

Void: Una funzione che torna void è in sostanza una procedura. Il void non ha un valore associato ad esso.

Parametri formali e attuali

Parametri formali: Sono i parametri definiti nel momento in cui la procedura/funzione viene creata.

Parametri attuali: Sono quei parametri passati nella chiamata alla procedura/funzione. Si chiamano anche argomenti. Esempio:

float AreaRettangolo ( float base, float altezza); // base e altezza sono parametri formali

int main() {

float altezza = 5;

float base = 10;

AreaRettangolo(base, altezza); // base e altezza sono parametri attuali

}

Memoria durante una chiamata ad un sottoprogramma

Memoria durante una chiamata ad un sottoprogramma: Durante la chiamata in un sottoprogramma, viene aggiunto un record di attivazione (l’insieme di oggetti). Questo record è un segmento di memoria chiamato Stack (struttura dati astratta che agisce come una pila LIFO, Last In First Out). Contiene, in ordine, indirizzo di ritorno (l’istruzione successiva alla chiamata del sottoprogramma), i parametri e le eventuali dichiarazioni locali alla procedura o funzione.

Passaggio vettore

  • int funzione( int *V);
  • int funzione( int V[]);
Anteprima
Vedrai una selezione di 5 pagine su 18
Appunti programmazione C e Java Pag. 1 Appunti programmazione C e Java Pag. 2
Anteprima di 5 pagg. su 18.
Scarica il documento per vederlo tutto.
Appunti programmazione C e Java Pag. 6
Anteprima di 5 pagg. su 18.
Scarica il documento per vederlo tutto.
Appunti programmazione C e Java Pag. 11
Anteprima di 5 pagg. su 18.
Scarica il documento per vederlo tutto.
Appunti programmazione C e Java Pag. 16
1 su 18
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 NoIcon02 di informazioni apprese con la frequenza delle lezioni di Programmazione 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 Milano o del prof Anisetti Marco.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community