Informatica. appunti dalle lezioni del 14 e 18/10/2010
|
|
|
- Giacinta Pappalardo
- 9 anni fa
- Visualizzazioni
Transcript
1 Informatica appunti dalle lezioni del 14 e 18/10/2010
2 Numeri binari in memoria In un calcolatore, i numeri binari sono tipicamente memorizzati in sequenze di caselle (note anche come parole) di lunghezza fissa dipendente dalla struttura del calcolatore stesso. Ad esempio, una parola di 4 bit può contenere il numero
3 Combinazioni possibili di numeri Una parola di 4 bit può contenere 2 4 = 16 numeri binari diversi: da 0000 a 1111 In generale, una parola di n bit può contenere 2 n numeri binari diversi
4 Dimensioni delle memorie 8 bit = 1 Byte (1B) 2 10 Byte = 1024 Byte = 1 KiloByte (1KB) 2 20 Byte = Byte = 1 MegaByte (1MB) 2 30 Byte = Byte = 1 GigaByte (1GB) 2 40 Byte = Byte = 1 TeraByte (1TB)
5 Interpretazioni possibili dei numeri Se non ci preoccupiamo del segno dei numeri, e li consideriamo sempre positivi, la sequenza che va da a corrisponde ai numeri da 0 10 a In generale, data una parola da n bit e interpretando i numeri binari come numeri senza segno, solo positivi, i numeri esprimibili con tale parola vanno da 0 a 2 n -1
6 Numeri con segno Se vogliamo introdurre anche i numeri negativi, una possibililità è di usare il primo bit a sinistra per esprimere il segno del numero: 0 sta per +, 1 sta per meno Con questa convenzione, chiamata modulo e segno, = -2 10, e = 7 10 In generale, con una parola di n bit si possono esprimere i numeri compresi tra (2 n-1 1) e 2 n-1 1
7 Complemento a due La rappresenazione modulo e segno ha un inconveniente: ci sono due rappresentazioni per 0 10 : ad esempio, se si hanno parole da 4 bit, sia sia corrispondono a 0 10 Con la rappresentazione in complemento a due si ovvia a questo problema: 0 10 si rappresenta solo con , come al solito con mentre per ottenere la rappresentazione binaria di -1 10, si procede come segue
8 Da numero positivo a negativo (1) Data la rappresentazione binaria di : La rappresentazione di si ottiene così: si invertono tutti i bit si somma 1 Quindi, la rappresentazione in complemento a due di è:
9 Da numero positivo a negativo (2) Analogamente per : La rappresentazione in complemento a 2 di per è: E così via fino a utilizzare tutte le configurazioni di bit possibili della parola Con una parola da n bit, in complemento a due si possono rappresentare i numeri compresi tra tra 2 n-1 e 2 n-1 1 (da notare che cʼè un numero in più grazie al fatto che 0 10 ha unʼunica rappresentazione)
10 Metodo alternativo Lʼinversione di tutti i bit e la somma di 1 costituiscono un metodo per scoprire, dato un numero positivo +n 2, la codifica binaria del suo opposto: n 2 (o anche viceversa: dato -n 2, scoprire +n 2 ) In alternativa, si può usare la seguente regola: partendo da destra, lascia tutto intatto fino al primo ʻ1ʼ incluso, poi inverti tutto il resto
11 Somma di numeri binari Sui numeri binari si effettuano le classiche operazioni aritmetiche esattamente come per i numeri in base 10 In particolare, la somma si esegue bit per bit, con le seguenti regole: = = = = 0 con carry (o riporto) di 1 a sinistra
12 Overflow Si ha un overflow quando si sommano 2 numeri contenuti in parole da n bit e il risultato non riesce ad essere rappresentato in n bit Ad esempio: = 1101 Questa somma non è valida perché sommando due numeri posi7vi su 4 bit si o:ene un numero nega7vo, il che è assurdo. Il risultato corre?o sarebbe ma per poterlo rappresentare servono 5 bit invece che 4. Una tecnica per controllare se c è overflow è di vedere i ripor7 alla posizione più a sinistra e della posizione a sinistra di essa (vedi le stelle): se i ripor7 sono diversi c è overflow. In questo caso c è riporto alla posizione del quarto bit da destra ma non alla sua sinistra, e infa: c è overflow.
13 Sottrazione Con il complemento a due, la sottrazione non è altro che sommare con un numero negativo 6 4 equivale a calcolare 6 + (-4): 6 10 = = = =
14 Descrizione formale dei circuiti elettronici che realizzano le operazioni logiche sui segnali binari
15 Circuiti logici (1) Negazione, NOT,! IN OUT IN OUT
16 Circuiti logici (2) Congiunzione, AND, && IN1 IN2 OUT= IN1 AND IN IN1 IN2 OUT
17 Circuiti logici (3) Disgiunzione, OR, IN1 IN2 OUT= IN1 OR IN IN1 IN2 OUT
18 Circuiti logici (4) Disgiunzione esclusiva, XOR, IN1 IN2 OUT= IN1 XOR IN IN1 IN2 OUT
19 Precedenze degli operatori! precede &&, che precede, che precede!a&&b C è equivalente a ((!A)&&B) C Le parentesi vincono sulle precedenze: in!((a B)&&C) la disgiunzione viene eseguita per prima, poi la congiunzione, da ultimo la negazione
20 Alcune regole per semplificare!a&&a 0!A A 1!(A&&B)!A!B!(A B)!A&&!B 0&&A 0 0 A A 1 A 1 1&&A A Trasformando le espressioni logiche seguendo queste regole rende i circuiti più semplici: (!A&&A) (!B&&C)!B&&C
21 Tipi di espressioni Tautologie: espressioni, come!a A, che valgono sempre 1 (sono sempre vere) qualunque sia il valore di A Contraddizioni: espressioni, come!a&&a, che valgono sempre 0 (sono sempre false) qualunque sia il valore di A Tutte le altre espressioni che possono essere sia vere sia false, a seconda dei valori delle loro componenti, si dicono contingenze.
22 Circuiti sommatori (1) Half-adder (A+B = Somma con Carry)
23 Circuiti sommatori (2) Full-adder (A+B+Carry in ingresso = Somma con Carry in uscita)
24 La compilazione: dalla scrittura dei programmi al codice binario
25 Scrivere programmi Scrivere programmi significa esprimere un algoritmo in un linguaggio comprensibile al calcolatore, ossia utilizzando un linguaggio di programmazione (ad es.: C++) Un programma in C++, prima di essere eseguito dal calcolatore, deve essere compilato, ossia elaborato da un compilatore
26 Il compilatore Il compilatore è anchʼesso un programma in funzionamento nel calcolatore, ed ha lo scopo di tradurre programmi scritti in un linguaggio di programmazione in eseguibili, ossia programmi scritti nel linguaggio macchina Le istruzioni scritte in linguaggio macchina possono essere lette, decodificate, ed eseguite direttamente dal processore
27 .cpp e.exe Il programma scritto in C++ prende si chiama anche codice sorgente, e il nome del file ha la tipica estesione.cpp (ad es.: prova.cpp) Il codice sorgente viene compilato e, se tutto va bene, viene creato il corrispondente codice eseguibile, con estensione.exe (ad es.: prova.exe) Il codice eseguibile è pronto per essere eseguito dal calcolatore
28 codice sorgente int x = 0; cout << x; prova.cpp Compilatore C++ codice eseguibile prova.exe
29 La compilazione Il processo di compilazione consiste di 3 tipi diversi di analisi Lʼanalisi lessicale controlla che siano usate parole corrette del linguaggio di programmazione (ad es.: cout, int, ctou ) Lʼanalisi sintattica controlla che le istruzioni siano costruite in maniera corretta (ad es. int x = 0;, = 0 int x; ) Lʼanalisi semantica analizza il significato delle istruzioni (ad es.: x = x+5; vuol dire prendi x e aggiornalo sommando 5 )
30 Limiti della compilazione Il programmatore deve fare attenzione Il successo delle suddette tre analisi non è garanzia del buon funzionamento del programma Un programma scritto correttamente in C++ può non rispettare le specifiche perché il programmatore ha scritto un codice che differisce da quanto ha intenzione di realizzare
31 Concetti fondamentali del linguaggio C++
32 Variabili Le variabili in un programma rappresentano delle zone fisse (fisse almeno durante lʼesecuzione del programma) in cui vengono conservati dati di interesse per un programma Una variabile deve essere dichiarata prima di essere utilizzata: int x; (si dichiara una variabile x destinata a contenere un dato di tipo intero) int y = 3; (in questo caso viene anche specificato il valore iniziale, ossia si ha una inizializzazione)
33 Istruzioni Le dichiarazioni e le inizializzazioni delle variabili sono casi particolari di istruzioni Un programma è costituito da una sequenza di istruzioni separate da un punto e virgola (;) Le istruzioni possono essere raggruppate in blocchi, racchiusi da parentesi graffe { } Tipi possibili di istruzioni: dichiarazioni, inizializzazioni, assegnamenti, modifiche di variabili istruzioni di input e output (cin, cout) costrutti condizionali (if, if-else) cicli condizionali (while, do-while) cicli iterativi (for)
34 Assegnamenti e modifiche di variabili x = y; (il valore di y viene copiato in x) x = x + z + 6; (al valore vecchio di x vengono sommati il valore di z e il numero 6) x++; (equivalente a x = x + 1; ) x--; (equivalente a x = x 1; ) tutte le principali operazioni aritmetiche sono disponibili nel linguaggio: somma (+), sottrazione (-), prodotto (*), divisione intera (/), resto della divisione intera o modulo (%) etc.
35 Istruzioni di input e output Unʼistruzione di input pone il calcolatore in attesa di un valore che lʼutente immette tipicamente tramite la tastiera, e specifica anche la variabile in cui questo valore viene salvato: cin >> x; Unʼistruzione di output visualizza su schermo il valore contenuto in una variabile oppure il valore di una espressione, oppure una stringa di caratteri: cout << y; cout << (x + y)/2; cout << ciao\n \\ \n è il carattere di ʻnewlineʼ per andare a capo
36 Costrutto If If (condizione) istruzione_1; istruzione_2; Questo codice funziona così: no condizione? sì istruzione_1 istruzione_2
37 Costrutto If-else If (condizione) istruzione_1; else istruzione_2; Il codice funziona così: no istruzione_2 condizione? sì istruzione_1
38 Condizioni Una condizione è una descrizione formale di una situazione che può essere vera oppure falsa. Tipicamente si tratta di confronti tra variabili e espressioni: x == y (attenzione ai due ʻ=ʻ, diversi dallʼassegnamento che ne ha uno solo) x > 5 z!= x + y -10 (ʻ!=ʻ vuol dire ʻdiverso daʼ)
39 Operatori logici Le condizioni si possono comporre per mezzo di operatori logici: && ( and, congiunzione), ( or, disgiunzione),! ( not, negazione) Ad esempio: (x!=y) ((x==y)&&!(x>5)) è una condizione composta che è vera quando x è diverso da y oppure x è uguale a y e non è maggiore di 5. Lʼordine di valutazione degli operatori, se non viene modificato per mezzo delle parentesi, è: prima!, poi &&, e infine. Nellʼesempio, quindi, le parentesi intorno alla congiunzione sono in realtà inutili.
40 Una nota sugli ʻelseʼ if (condizione_1) if (condizione_2) istruzione_a; else istruzione_b; Quando viene eseguita lʼistruzione_b? A quale ʻifʼ si riferisce lʼʻelseʼ? Al primo disponibile risalendo il codice, quindi lʼistruzione_b viene eseguita quando condizione_1 è vera e condizione_2 è falsa.
Appunti di informatica. Lezione 3 anno accademico Mario Verdicchio
Appunti di informatica Lezione 3 anno accademico 2015-2016 Mario Verdicchio Numeri binari in memoria In un calcolatore, i numeri binari sono tipicamente memorizzati in sequenze di caselle (note anche come
Notazione posizionale. Codifica binaria. Rappresentazioni medianti basi diverse. Multipli del byte
Codifica binaria Rappresentazione di numeri Notazione di tipo posizionale (come la notazione decimale). Ogni numero è rappresentato da una sequenza di simboli Il valore del numero dipende non solo dalla
Aritmetica dei Calcolatori 2
Laboratorio di Architettura 1 aprile 2011 1 Operazioni bit a bit 2 Rappresentazione binaria con segno 3 Esercitazione Operazioni logiche bit a bit AND OR XOR NOT IN OUT A B A AND B 0 0 0 0 1 0 1 0 0 1
Lezione 6 Introduzione al C++ Mauro Piccolo
Lezione 6 Introduzione al C++ Mauro Piccolo [email protected] Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,
Codifica binaria. Rappresentazioni medianti basi diverse
Codifica binaria Rappresentazione di numeri Notazione di tipo posizionale (come la notazione decimale). Ogni numero è rappresentato da una sequenza di simboli Il valore del numero dipende non solo dalla
Appunti di informatica. Lezione 2 anno accademico 2015-2016 Mario Verdicchio
Appunti di informatica Lezione 2 anno accademico 2015-2016 Mario Verdicchio Sistema binario e logica C è un legame tra i numeri binari (0,1) e la logica, ossia la disciplina che si occupa del ragionamento
Informatica/ Ing. Meccanica/ Prof. Verdicchio/ 14/02/2012 / Foglio delle domande / VERSIONE 1
Informatica/ Ing. Meccanica/ Prof. Verdicchio/ 14/02/2012 / Foglio delle domande / VERSIONE 1 1) Il bus in un computer trasporta a) solo dati b) solo istruzioni c) sia dati sia istruzioni 2) In una sequenza
Rappresentazione dell informazione
Rappresentazione dell informazione Problema che coinvolge aspetti filosofici Interessa soprattutto distinguere informazioni diverse Con un solo simbolo è impossibile Pertanto l insieme minimo è costituito
senza stato una ed una sola
Reti Combinatorie Un calcolatore è costituito da circuiti digitali (hardware) che provvedono a realizzare fisicamente il calcolo. Tali circuiti digitali possono essere classificati in due classi dette
IL PRIMO PROGRAMMA IN C
IL PRIMO PROGRAMMA IN C LO SCOPO Si vuole scrivere un programma in linguaggio C che chieda all utente di introdurre da tastiera due numeri interi e visualizzi il valore della loro somma sul video SOLUZIONE
Rappresentazione dei numeri interi in un calcolatore
Corso di Calcolatori Elettronici I Rappresentazione dei numeri interi in un calcolatore Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle
Rappresentazione di numeri relativi (interi con segno) Rappresentazione di numeri interi relativi (con N bit) Segno e Valore Assoluto
Rappresentazione di numeri relativi (interi con segno) E possibile estendere in modo naturale la rappresentazione dei numeri naturali ai numeri relativi. I numeri relativi sono numeri naturali preceduti
Rappresentazione dell Informazione
Rappresentazione dell Informazione Rappresentazione delle informazioni in codice binario Caratteri Naturali e Reali positivi Interi Razionali Rappresentazione del testo Una stringa di bit per ogni simbolo
6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
6 - Blocchi e cicli Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it
Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore
Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza
Codifica e aritmetica binaria
Codifica e aritmetica binaria Corso ACSO prof. Cristina Silvano, Politecnico di Milano Codifica binaria dell informazione Il calcolatore utilizza un alfabeto binario: usiamo dispositivi elettronici digitali
Codifica dei Numeri. Informatica ICA (LC) 12 Novembre 2015 Giacomo Boracchi
Codifica dei Numeri Informatica ICA (LC) 12 Novembre 2015 Giacomo Boracchi [email protected] Rappresentazione dei Numeri Codifica dei Numeri in Base 10 Le cifre che abbiamo a disposizione sono
Rappresentazione dei numeri interi in un calcolatore
Corso di Calcolatori Elettronici I A.A. 2012-2013 Rappresentazione dei numeri interi in un calcolatore Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica
Per gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense.
Fondamenti di Informatica - A. Fantechi Raccolta di esercizi Per gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense.
Modulo 1. Concetti base della Tecnologia dell informazione. Prof. Nicolello Cristiano. Modulo 1
Concetti base della Tecnologia dell informazione Algoritmi Come interpreta un computer un problema? Algoritmi Algoritmo: sequenza ordinata di istruzioni per risolvere un problema (tradotto: sequenza di
Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I
Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave
1.2f: Operazioni Binarie
1.2f: Operazioni Binarie 2 18 ott 2011 Bibliografia Questi lucidi 3 18 ott 2011 Operazioni binarie Per effettuare operazioni è necessario conoscere la definizione del comportamento per ogni coppia di simboli
Corso di Architettura degli Elaboratori
Corso di Architettura degli Elaboratori Codifica dell'informazione: Numeri Binari (lucidi originali della Prof.ssa Zacchi e del Prof. Balossino, rivisti dal Prof. Baldoni) 1 Codifica dell'informazione?
Rappresentazione dei numeri
Rappresentazione dei numeri Così come per qualsiasi altro tipo di dato, anche i numeri, per essere immagazzinati nella memoria di un calcolatore, devono essere codificati, cioè tradotti in sequenze di
LA CODIFICA DELL INFORMAZIONE. Introduzione ai sistemi informatici D. Sciuto, G. Buonanno, L. Mari, McGraw-Hill Cap.2
LA CODIFICA DELL INFORMAZIONE Introduzione ai sistemi informatici D. Sciuto, G. Buonanno, L. Mari, McGraw-Hill Cap.2 Codifica dati e istruzioni Per scrivere un programma è necessario rappresentare istruzioni
Cosa si intende con stato
Il concetto di stato Cosa si intende con stato I una particolare configurazione delle informazioni di una macchina, che in qualche modo memorizza le condizioni in cui si trova, e che cambia nel tempo passando
Programmazione I Paolo Valente /2017. Lezione 6. Notazione posizionale
Lezione 6 Notazione posizionale Ci sono solo 10 tipi di persone al mondo: quelle che conoscono la rappresentazione dei numeri in base 2, e quelle che non la conoscono... Programmazione I Paolo Valente
Introduzione alla programmazione in linguaggio C
Introduzione alla programmazione in linguaggio C Il primo programma in C commento Header della libreria Funzione principale Ogni istruzione in C va terminata con un ; Corso di Informatica AA. 2007-2008
FUNZIONI BOOLEANE. Vero Falso
FUNZIONI BOOLEANE Le funzioni booleane prendono il nome da Boole, un matematico che introdusse un formalismo che opera su variabili (dette variabili booleane o variabili logiche o asserzioni) che possono
Qualsiasi programma in C++ segue lo schema:
Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni
Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche
Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono
Espressioni logiche. Espressioni logiche. Operatori logici. Operatori logici. Operatori logici. Espressioni Logiche e Istruzione di Test
Espressioni logiche Espressioni Logiche e Istruzione di Test Fondamenti di Informatica 1 Massimo Di Nanni Gennaio, 2001 Espressioni logiche nelle Istruzioni di Test e di Iterazione Calcolo del massimo
Linguaggi di Programmazione
Linguaggi di Programmazione E una notazione con cui e possibile descrivere gli algoritmi. Programma: e la rappresentazione di un algoritmo in un particolare linguaggio di programmazione. In generale, ogni
Corso di Architettura degli Elaboratori
Corso di Architettura degli Elaboratori Codifica dell'informazione: Numeri Binari (lucidi originali della Prof.ssa Zacchi e del Prof. Balossino) Dipartimento di Informatica Università degli Studi di Torino
Funzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7
Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione
Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012
Fondamenti di Informatica - 1 Prof. B.Buttarazzi A.A. 2011/2012 Sommario Rappresentazione dei numeri naturali (N) Rappresentazione dei numeri interi (Z) Modulo e segno In complemento a 2 Operazioni aritmetiche
Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 30/06/2016/ Foglio delle domande / VERSIONE 1
Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 30/06/2016/ Foglio delle domande/ VERSIONE 1 1) In Python, se scrivo v = [ ] in un programma, vuol dire che a) v è un quadrato b) v è un insieme vuoto
Caratteristiche generali del linguaggio Visual Basic
Caratteristiche generali del linguaggio Visual Basic Per ottenere un aiuto contestuale dall help di Visual Basic sulla sintassi di funzioni o, oppure su proprietà, eventi o metodi, basta selezionare la
La rappresentazione delle informazioni in un computer. La numerazione binaria
La rappresentazione delle informazioni in un computer La numerazione binaria Per comprendere la numerazione binaria dobbiamo prima discutere di alcune caratteristiche della numerazione decimale La numerazione
Flow-chart. Introduzione agli algoritmi e ai diagrammi a blocchi.
Flow-chart Introduzione agli algoritmi e ai diagrammi a blocchi [email protected] 1 Sommario Fasi dello sviluppo di un programma Algoritmo Dati: Variabili e Costanti Le operazioni tipiche Diagramma
Aritmetica binaria e circuiti aritmetici
Aritmetica binaria e circuiti aritmetici Architetture dei Calcolatori (lettere A-I) Addizioni binarie Le addizioni fra numerali si effettuano cifra a cifra (come in decimale) portando il riporto alla cifra
