Estratto del documento

Programmazione e dispositivi di input/output

Interazione della CPU con il mondo esterno

I dispositivi di input e output servono alla CPU per interagire con il mondo esterno. Un programma durante l'esecuzione viene alimentato da un flusso di caratteri (INPUT) da elaborare e restituisce un flusso di caratteri come risultato. Il flusso viene chiamato STREAM che è una struttura logica formata da una sequenza di caratteri presi dal codice ASCII.

Standard di input e output

Nella programmazione lo standard di input (stdin) è il canale mediante il quale i dati sono forniti al sistema, mentre lo standard di output (stdout) è il canale che raccoglie i risultati prodotti dal sistema. All'interno del Buffer le istruzioni di input prelevano dei caratteri e le traducono in variabili, mentre i dispositivi di output convertono i valori delle variabili in sequenze di caratteri che si accumulano nel Buffer per poi essere espulsi.

Memorie di massa e file system

Nelle memorie di massa i dispositivi di input e output gestiscono i flussi di lunghezza finita. Questi flussi vengono gestiti tramite il FILE SYSTEM. Esistono due tipi di file:

  • Tipo testo o TEXT FILE: i flussi sono gestiti come sequenze di caratteri
  • File binari: i flussi sono gestiti in binario (linguaggio della macchina)

Inizio della programmazione

Prima di iniziare a programmare è importante inserire SEMPRE la dicitura #include<iostream> e using namespace std; nel main perché indica l'inizio dell'esecuzione. Bisogna sempre dichiarare le variabili che si andranno ad usare:

  • Dichiarazione di una variabile: nome_tipo identificatore_di_variabile;
  • Dichiarazione di più variabili: nome_tipo var1, var2, var3;

Tipi di variabili

Esistono varie dichiarazioni che dipendono dalle variabili usate:

  • Int: per le variabili intere
  • Float: per le variabili in singola precisione
  • Double: per variabili reali in doppia precisione
  • Bool: per variabili booleane
  • Char: per variabili carattere

Assegnazione di valori

Il processo che assegna il valore ad una variabile è eseguito in due tempi diversi; si calcola il secondo membro e il suo risultato viene assegnato alla variabile del primo membro.

Tipi di traduttori

Per eseguire un programma bisogna avere un traduttore (traduce le istruzioni che scriviamo in linguaggio macchina). Esistono due tipi di traduttori:

  • Interprete: traduce un'istruzione e la esegue. Il suo meccanismo è istruzione → traduzione → esecuzione
  • Compilatore: deve compilare tutte le istruzioni prima di eseguire il programma. Il suo meccanismo è modulo oggetto → file eseguibile

Analisi del compilatore

Il compilatore realizza sul codice sorgente tre fasi di analisi:

  • Analisi lessicale: il compilatore scompone il programma in una serie di oggetti atomici chiamati TOKEN (è un operatore o anche parole chiavi) e gli associa una classe. Verifica la correttezza delle singole parole.
  • Analisi sintattica: verifica la correttezza delle frasi, ovvero delle istruzioni. Il compilatore ad ogni istruzione vede se la forma è corretta.
  • Analisi semantica: verifica la correttezza dell'intero programma. Il compilatore ricontrolla il programma vedendo qual è il tipo associato all'operatore.

Creazione file eseguibile

Dopo queste fasi viene generato il modulo oggetto → file eseguibile. All'interno vengono collegate le librerie. Dopo che il compilatore genera il modulo oggetto entra in gioco il collegatore o linker (collega i vari modulo ogg) e poi si genera il file eseguibile. Per quanto riguarda le tre fasi di analisi, basta che una sola è sbagliata per non andare avanti nella compilazione.

Operatori e memoria

Tabella dei tipi reali e operatori aritmetici e logici

Nome Occupazione di memoria Intervallo di lavori Operatore Descrizione Operatore Descrizione
Float 4 byte 7 cifre + Somma && And o prodotto
Double 8 byte 15 cifre - Sottrazione || Or o somma
Long double 8 byte 15 cifre * Moltiplicazione ! Not o negazione
/ Divisione % Resto tra il modulo di due interi

Operatori di decremento e incremento

++i, i++, i=i+1, --i, i--, i=i-1

Parte teorica: BNF e carte sintattiche

BNF e grammatica del linguaggio

La BNF consente di esprimere in maniera formale la grammatica di un linguaggio, serve per generare le frasi di un linguaggio. Tramite la regola di produzione si possono generare tutte le frasi possibili tramite i simboli terminali e non terminali. I simboli terminali sono rappresentati da "", mentre quelli non terminali sono rappresentati da parentesi angolari <>.

Tale regola è formata da un simbolo non terminale dopo il quale si trovano quelli terminali e non. Esempio: <frase>::= <soggetto> <predicato verbale> <complemento ogg>. Per costruire una frase effettiva devo sostituire i simboli non terminali in terminali. Questo processo si arresta solo quando ho tutti simboli terminali. Il simbolo "::=" definisce la trasformazione da simbolo non terminale a simbolo terminale, "|" indica delle alternative.

Carta sintattica

Una carta sintattica è una rappresentazione grafica della regola di produzione, quello che c'è a sinistra è il nome della carta sintattica, invece quello che si rappresenta è la parte destra della regola. I simboli terminali sono rappresentati dai cerchi, i simboli non terminali.

Anteprima
Vedrai una selezione di 9 pagine su 36
Informatica Pag. 1 Informatica Pag. 2
Anteprima di 9 pagg. su 36.
Scarica il documento per vederlo tutto.
Informatica Pag. 6
Anteprima di 9 pagg. su 36.
Scarica il documento per vederlo tutto.
Informatica Pag. 11
Anteprima di 9 pagg. su 36.
Scarica il documento per vederlo tutto.
Informatica Pag. 16
Anteprima di 9 pagg. su 36.
Scarica il documento per vederlo tutto.
Informatica Pag. 21
Anteprima di 9 pagg. su 36.
Scarica il documento per vederlo tutto.
Informatica Pag. 26
Anteprima di 9 pagg. su 36.
Scarica il documento per vederlo tutto.
Informatica Pag. 31
Anteprima di 9 pagg. su 36.
Scarica il documento per vederlo tutto.
Informatica Pag. 36
1 su 36
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Ingegneria industriale e dell'informazione ING-INF/05 Sistemi di elaborazione delle informazioni

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher luisa_pis di informazioni apprese con la frequenza delle lezioni di Informatica 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 Napoli Federico II o del prof Sansone Carlo.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community