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
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Definizioni:

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

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

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 (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: 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: La macchina di turing universale è in grado di imitare qualsiasiparticolare 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 di Church: “se un problema è umanamentecalcolabile, allora esisterà una macchina di Turing (o un dispositivoequivalente, come il computer) in grado di risolverlo (cioè di calcolarlo).”
Secondo la tesi di Church non esiste un formalismo né una macchinaconcreta che possa calcolare una funzione F non calcolabile secondo Turing
- Algoritmo: un algoritmo è sequenza finita di istruzioni che specificano comecerte operazioni elementari debbano susseguirsi nel tempo per risolvere unadata classe di problemi.
- Tutti i linguaggi diCaratteristiche di un linguaggio di

programmazione: i programmi esistenti sono definiti da un lessico, una sintassi e una semantica e possiedono:

  • istruzioni;
  • variabili e costanti;
  • espressioni;
  • strutture dati;
  • strutture di controllo;
  • sottoprogramma.

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: è un albero ordinato con radice, che rappresenta la struttura sintattica di una stringa relativamente ad una grammatica formale.

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

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

Variabile: è un contenitore preposto a contenere dei valori che possono variare.

durante il tempo di esecuzione. - Compilatore: Fasi: 1. precompilazione o preprocessing: fonde codici, modifica o cancella brani di codice. 2. compilazione: traduce un codice in un file oggetto, di solito passando per il codice assembly. 3. linking (da oggetti a eseguibile): lega file oggetto ed eventuali librerie esterne in un programma. - Programmazione strutturata: paradigma di programmazione che è contraria all'uso dei salti incondizionati. Il programma proprio può essere suddiviso in strutture proprie dette blocchi. - 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: Lo scope

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

  • Locale, identificatori vengono dichiarati in un determinato blocco (es. inuna funzione). La loro visibilità inizia dalla loro dichiarazione alla finedel blocco
  • Globale, identificatori dichiarati al di fuori di una funzione. Sono adesempio le variabili globali. E’ noto a tutte le funzioni dopo la suadichiarazione. Il loro utilizzo è sconsigliato.
  • Tipi elementari: informazioni composte da un solo valore.
  • Tipi strutturati: informazioni composte da più valori concettualmente legati.
  • Macro: Macro e una costante simbolica definita con una direttiva delpreprocessore define. a differenza delle funzioni, le macro:
    • sono trattati dal precompilatore
    • sono rimpiazzate 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: matrici): valori omogenei associati a oggettidiversi identificati da uno o più indici numerici.- Strutture/Record: valori eterogenei associati a uno stesso oggetto idrntificatida nomi simbolici.- Sottoprogrammi: brani di codice abbastanza importanti da avere un nome,dei dati e nel caso dei risultati, come i programmi.- Procedure: sottoprogrammi che non generano un valore di ritorno.- Funzioni: sottoprogrammi che generano un valore di ritorno.- Prototipo: è una dichiarazione di una funzione (come le variabili). Come talefornisce al compilatore le informazioni necessarie a gestire la funzione stessa.es. tipo nome(tipo 1 param 1,...., tipo n param n).- Definizione: consiste in:- Intestazione: il prototipo senza '';;''.-

Corpo: tra {} è l'implementazione della funzione. Void: Una funzione che torna void è in sostanza una procedura. Il void non ha un valore associato ad esso. 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. ```html

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 sotto programma: 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[ ]);

Passaggio Matrice: void f(int v[ ][3]);

Array e puntatori:

array di valori: int (*p)[10]

array di puntatori: int *p[10]

Allocazione dinamica: p = (tipo *) malloc (dimensione);

Malloc: ci chiede in byte quanta memoria dobbiamo allocare e ritorna il puntatore alla prima

Calloc: La funzione calloc azzera l'intero blocco, oltre ad allocarlo

Realloc: Ridimensiona l'area di memoria puntata dal puntatore

Free: dealloca la memoria

Memoria:

Ricorsione: La ricorsione è una tecnica di programmazione, in cui un problema viene suddiviso in sottoproblemi simili a quello originale, ma più semplici. I risultati ottenuti vengono combinati insieme per costituire la soluzione del problema originale. Quindi in parole povere è una tecnica per ottenere esecuzione iterativa sfruttando il principio di induzione matematica. Una

La funzione si dice ricorsiva quando richiama sé stessa direttamente oppure attraverso un'altra funzione (indirettamente). Questo permette di risolvere alcune classi di problemi facilmente. Es. fattoriale.

Memoria ricorsione:

  • STD:
  • lo standard input (stdin), ovvero la tastiera
  • lo standard output (stdout), ovvero il video
  • lo standard error (stderr), ovvero il video

File: Comandi:

  • FILE *fopen(char *nomele, char *modo)
  • int fclose (FILE *stream)
  • int fscanf (FILE *stream , char *formato,..) → interpreta il contenuto dello stream
  • int feof (FILE *stream) → end of file (restituisce vero se il file è finito)

Lettura righe:

  • char *fgets (char *s, int n, FILE * stream)
  • char *gets (char *s)
  • int getc (FILE *pf)

Scrittura:

  • int fprintf (FILE *stream, char *formato, ..)
  • int *fputs (char *s, FILE *stream)
  • int *puts(char *s)
  • int putc (int c, FILE *pf)

Buffering:

Si leggono i dati da file un blocco per volta e si conserva il blocco in un'area di memoria

dedicata ( buffer di lettura)- si accodano i risultati in un'area di memoria dedicata buffer di scrittura)e si salvano su file quando essa è piena- Compilatore: è un programma che traduce un programma scritto inlinguaggio ad alto livello in un programma equivalente nel linguaggiomacchina (della macchina dove verrà eseguito). Il risultato viene poiassemblato con librerie e/o altri programmi usati dal programma stessotramite un linker per formare il file eseguibile.- Interprete: è un programma che simula direttamente la macchina astrattasulla macchina concreta attraverso la correzione sintattica, la traduzione inreal time (di volta in volta) ed infine l'esecuzione del codice tradotto.- Puntatori a funzione:- Dichiarazione: double (*pf) (int,int)- Si presti attenzione alla sintassi- int *f( int ); //dichiara il prototipo di una funzione che restituisce unpuntatore a intero- int f (* int ); //dichiara un puntatore a funzione- Uso:- Un uso tipico dei

puntatori a funzione consiste nel passarli come argomenti di funzioni: Quando voglio parametrizzare il comportamento della funzione passandone una da applicare- L'altro uso è quello di usarli come campi di una struct: Per indicare quali funzioni sono da usare con quel tipo di dato strutturato definito dalla struct- Paradigmi: modello concettuale che fornisce la "struttura" di un programma- Imperativo: Sono linguaggi "action oriented" ovvero la computazione è vista come una sequenza di azioni. Rapporto tra programma statico ed dinamico. si basa su variabili e assegnazione. Il risultato finale è lo stato della varia

Dettagli
Publisher
A.A. 2021-2022
18 pagine
1 download
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.