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[]);
-
Appunti corso Programmazione 2
-
Appunti di Programmazione Java
-
Programmazione a Oggetti [Java], Base e Avanzata - Ing. Informatica, Appunti di Programmazione Java
-
Appunti Java