Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... –...
-
Upload
duongduong -
Category
Documents
-
view
238 -
download
2
Transcript of Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... –...
![Page 1: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/1.jpg)
Lezione n.
Corso di Laurea:
Insegnamento:
Email Docente:
A.A. 2016-2017
Silvia RossiPrime nozioni di Programmazione
1
Informatica
Programmazione I
![Page 2: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/2.jpg)
Informazioni: docente/corso
Programmazione I
Contatto: – [email protected]
Orario di Ricevimento: – Martedì: 14:00-15:00 – PRISCA Lab (Edificio 8b, livello -1)
Libri di testo consigliati: – Deitel H.M., Deitel P.J. – C Corso completo di programmazione,
ed. Apogeo– Kernighan B., Ritchie D. – Linguaggio C, Pearson Education Italia
Online: – http://www.federica.unina.it/corsi/programmazione-1-sci/– Facebook: Programmazione I gr.2– http://wpage.unina.it/silrossi/index.html
![Page 3: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/3.jpg)
Informatica
Per definire cosa è l’informatica è necessario definire le seguenti nozioni.
Informazione
Rappresentazione
Elaborazione
Algoritmo
![Page 4: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/4.jpg)
4
• Informazione: notizia, dato o elemento che consente di avere conoscenza più o meno esatta di fatti, situazioni, modi di essere.
• Dato: elementi di informazione costituiti da simboli che debbono essere elaborati.
Informazione
![Page 5: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/5.jpg)
5
• In generale ogni rappresentazione è una funzione che associa ad ogni elemento una sequenza di simboli.
• Per ogni rappresentazione, oggetti (numeri) distinti devono avere differenti rappresentazioni e la rappresentazione di ogni oggetto deve essere unica.
• Le rappresentazioni usate sui calcolatori impiegano tutte sequenze finite di simboli, tali quindi da rappresentare insiemi finiti di naturali.
Rappresentazione
![Page 6: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/6.jpg)
Elaborazione
L’elaborazione è una trasformazione:– Y=F(X)– dove:
• X è l’insieme di dati iniziali o “di ingresso”• Y è l’insieme dei dati finali o “di uscita”• F è una regola che fa corrispondere Y ad X• La trasformazione F si può ottenere attraverso una o
più azioni elaborative (o passi di elaborazione), cioè trasformazioni elementari che devono essere eseguite per ottenere una trasformazione.
![Page 7: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/7.jpg)
Algoritmo
L’algoritmo è una sequenza finita di azioni elaborative che portano alla realizzazione di un compito.
Un algoritmo deve essere:– Comprensibile– Corretto– Efficiente
![Page 8: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/8.jpg)
INFORMATICAInformazione + automatica = Informatica• L’informatica è una disciplina nata dalla necessità di velocizzare
le operazioni di calcolo matematico e per gestire le informazioniautomatizzate.
• Hardware: parola inglese il cui significato letterale è“ferramenta” (da Hard=duro e Ware=merce).In riferimento al computer indica l'insieme di tutto ciò checompone fisicamente il computer, ovvero tutto ciò che si puòtoccare con mano: monitor, tastiera, hard-disk, ecc., inclusi i cavielettrici.
• Software: parola inglese Soft=morbido e Ware=merce, che, nellinguaggio informatico, indica la parte “invisibile” del computer,cioè l'insieme dei programmi ed istruzioni che guidano unelaboratore e che gli consentono di risolvere i problemi che glisono posti.
![Page 9: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/9.jpg)
9
HARDWARE • tutto quello che quando non funziona puoi
prendere a calci
SOFTWARE• tutto quello che quando non funziona puoi
solo imprecare
![Page 10: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/10.jpg)
Il calcolatore
Il calcolatore è una entità (reale o astratta) in grado di accettare dati in input, immagazzinarli ed elaborarli per lo svolgimento di un certo compito
A tale fine il calcolatore esegue una sequenza ordinata di comandi (istruzioni)
Il software è l’insieme di istruzioni che il calcolatore deve eseguire per svolgere un certo compito
L’hardware è l’insieme delle componenti fisiche necessarie al calcolatore per eseguire le istruzioni
![Page 11: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/11.jpg)
Il calcolatore: il software
Programmazione: realizzazione di software per diversi scopi:
• Tradurre un linguaggio in un altro (compilatore)• Gestire l’intero hardware (sistema operativo) o un suo
dispositivo (driver)• Aiutare a scrivere testi (word processor)• Gestire banche dati• …
SOFT
WAR
EProgrammi applicativi(DBs, word processors, …)
Compilatore(Linguaggi di Programmazione)
HARDWARE
Sistema OperativoUtilities, drivers
![Page 12: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/12.jpg)
Il calcolatore come esecutore
Esecutore - qualsiasi entità E (umana o non) in grado di:– Riconoscere un insieme finito S di istruzioni (linguaggio)
scritte con l’uso di simboli di un alfabeto (C)– Interpretare ogni istruzione associando a essa
una ben definita, univoca e finita azione di un insieme finito di azioni (A)
c1 ... cms1s2
sn
alfabetoistruzioni
s2=c3c1c5c1
azioni
...a1a2
an
...
A S
C
![Page 13: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/13.jpg)
Il calcolatore come esecutore
Definizione di Calcolo di E– Un algoritmo (G) è un insieme finito di azioni di A tali che
eseguite una per volta risolvono un problema dato• Le azioni sono estratte da A anche con ripetizioni ma in
numero finito– Un programma (PG) è l’insieme finito di istruzioni
corrispondenti alle azioni dell’algoritmo G– E esegue PG (E calcola PG) significa:
• memorizzare e interpretare la sequenza di istruzioni PG
• eseguire, in modo deterministico e in un numero discreto di passi, la sequenza di azioni di G a esse associate (eseguire l’algoritmo)
G=a3a2a3a7a1a3
a1a2
an
...
PG=s3s2s3s7s1s3
s1s2
sn
...
A Salgoritmo
programma
esecutore
input
esegue
![Page 14: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/14.jpg)
Il calcolatore come esecutore
Un esempio di esecutore: un braccio meccanico che disegna poligoni
A = insieme di azionimeccaniche delbaccio meccanico
S = insieme di istruzioni
Input xOutput xAlza la pennaAbbassa la pennaRuota la penna verso destra di x gradiRuota la penna verso sinistra di x gradiAvanti la penna di x quadrettiIndietro la penna di x quadretti
AbbassaAlza
x
Avanti di xRuota verso destra di xx
![Page 15: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/15.jpg)
Il calcolatore come esecutore
• Un esempio di esecutore: un braccio meccanico che disegna poligoni
• P (problema) = disegnare un rettagolodi base x e altezza y
PG
Input xInput yAbbassa la pennaAvanti la penna di y quadrettiRuota la penna verso destra di 90 gradiAvanti la penna di x quadrettiRuota la penna verso destra di 90 gradiAvanti la penna di y quadrettiRuota la penna verso destra di 90 gradiAvanti la penna di x quadretti
G = insieme di azioni di A che risolvono il problema
xy
![Page 16: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/16.jpg)
Lo pseudocodice
Lo pseudocodice è un linguaggio artificiale e non del tutto formalizzato per esprimere le (macro)azioni che costituiscono l’algoritmo
I programmi scritti in pseudocodice non sono destinati al computer ma ai programmatori– Strumento valido per mettere nero su bianco gli algoritmi– Un linguaggio semplice di rapida traduzione nel linguaggio di
programmazione da usare (C)
leggi(input)if condizione:
fai_qualcosa()else:
fai_qualcosaltro()stampa(messaggio)
![Page 17: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/17.jpg)
Il calcolatore: architettura
CPU
calculus = sassolinocomputare = tagliare
ALUUnità logicoaritmetica
UCUnità
Di controllo
Memoria
INPUT
istruzionidati
OUTPUT
Registri
Memoria principale
Memoria secondaria
![Page 18: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/18.jpg)
Il calcolatore: hardware
18
TastieraMouse
RAMMem. Principale
HDMem. Secondaria
CDROMMem. Secondaria
Stampante
MonitorScheda AudioScheda Video
CPUCache (L1/L2)Mem. Primaria
![Page 19: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/19.jpg)
Il calcolatore: la piramide di memoria
Dispositivi di input/outputTastiera, Mouse, Scanner, VideoCamera,
Device Remoti, etc.
Memoria secondariaHard Drives (Dischi, CDROM, Floppy),
Drive Removibili, Network
RAMFisica Virtuale
CacheL1L2
RegistriCPU
![Page 20: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/20.jpg)
Il calcolatore: memoria RAM
• Informazione– Una sequenza di bit– Rappresenta dati o istruzioni
• Oggi le architetture più diffuse sono a 32 (e 64) bit– Un registro a n bit può contenere 2n valori diversi
• può indirizzare una memoria RAM di dimensione fino a 2n bytes
0 0 1 1 0 1 1 1 1 1 1 1 0 0 1 0
bits
byte
word
210 = 1024 = 1 Kilo 1KB = 210 bytes = 213 bits = 8 Kbit220 = 1048576 = 1 Mega 1MB = 220 bytes = 223 bits = 8 Mbit230 = 1073741824 = 1 Giga 1GB = 230 bytes = 233 bits = 8 Gbit
![Page 21: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/21.jpg)
0 0 0 1 0 1 1 0 1 1 1 1 1 0 1 1
1 1 1 1 1 0 1 1
0 0 1 0 1 0 1 1
0 0 0 1 0 1 1 0V0 0 1 0 1 1 0 1
Il calcolatore: memoria RAM
Random Access Memory (RAM)– Memoria volatile– Contiene informazioni (istruzioni e dati) codificate in byte contigui
• L’indirizzo del 1o byte fa accedere all’area di memoria contenente l’informazione
5883
Registro Indice
0 0 1 0 1 1 0 0DE5884
5885
P
C
P
0 1 1
RAM
0 0 1 1 0 1 1 1 1 1 1 1 0 0 1 0
Registro Prossima Istruzione
0 0 1 0 1 0 1 1
0 0 0 1 0 1 1 0
0 0 1 0 1 1 0 1
0 0 1 0 1 1 0 0D/I OPCODE
REGISTER/CTRL
MEM ADDRESS
CPU 14322
…
dati
istruzioni
1 0 01 0 1
![Page 22: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/22.jpg)
22
Rappresentazione dell’informazione
• In generale ogni rappresentazione è una funzione che associa ad ogni elemento una sequenza di simboli.
• Per ogni rappresentazione, oggetti (numeri) distinti devono avere differenti rappresentazioni e la rappresentazione di ogni oggetto deve essere unica.
• Una rappresentazione è strettamente correlata al tipo di “mezzo” impiegato.
![Page 23: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/23.jpg)
23
Rappresentazione Numerica
• Ogni sistema di rappresentazione dei numeri deve essere caratterizzato:– da una base costituita da un insieme di simboli diversi
(cifre);– da un sistema (insieme di regole) che permette di associare
ai diversi numeri le diverse stringhe di simboli.
![Page 24: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/24.jpg)
24
Il sistema decimale utilizza dieci simboli per rappresentare un numero
0 1 2 3 4 5 6 7 8 9
Il sistema binario utilizza due simboli0 1
Il sistema ottale utilizza otto simboli0 1 2 3 4 5 6 7
Il sistema esadecimale utilizza sedici simboli0 1 2 3 4 5 6 7 8 9 A B C D E F
Rappresentazione
![Page 25: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/25.jpg)
25
Rappresentazione dell’informazione
Il sistema numerico decimale è un sistema di tipo posizionale ovvero:
Le cifre che compongono un numero cambiano il loro valore secondo la posizione che occupano
7237 (settemiladuecentotrentasette) in base 107x103 + 2x102 + 3x101 + 7x100
7x1000+ 2x100+ 3x10 + 7x17000 + 200 + 30 + 7 = 7237
![Page 26: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/26.jpg)
Il calcolatore: rappresentazione dati
Un generico numero N in base p è rappresentato da una sequenza di cifre (numerale)
dove ciascun ai rappresenta un numero compreso fra 0 e p-1, an è la cifra più significativa e a0 la meno significativa.
«N»p = an, an -1, …, a1, a0 (numerale)
![Page 27: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/27.jpg)
Rappresentazione dell’informazione
27
![Page 28: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/28.jpg)
å=
-- ´=´+´++´+´=
n
i
ii
oo
nn
nnp papapapapaN
0
11
11 ...............
01210 107108105587 ´+´+´=
Il sistema decimale
![Page 29: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/29.jpg)
å=
-- ´=´+´++´+´=
n
i
ii
oo
nn
nnp papapapapaN
0
11
11 ...............
01031104
10
1010)12832(
021121220321420521
2
´+´
=
=+++
=´+´+´+´+´+´
=
43
43
101011
Il sistema binario
![Page 30: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/30.jpg)
43 : 2 = 21 con resto di 121 : 2 = 10 con resto di 110 : 2 = 5 con resto di 05 : 2 = 2 con resto di 12 : 2 = 1 con resto di 01 : 2 = 0 con resto di 1
43 = 101011
Conversione decimale-binario
![Page 31: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/31.jpg)
0 1
BIT
0 0 0 10 1 0 1
BYTE
![Page 32: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/32.jpg)
Numero di bit Combinazioni Totale2 22 43 23 84 24 16… … …7 27 128
8 28 256
Rappresentazione dell’informazione
![Page 33: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/33.jpg)
Somma binaria
Nel sistema di numerazione in base 2 esistono due soli simboli: 0 e 1 e quindi quando si effettua l'operazione 1 + 1, non si ha un unico simbolo per rappresentare il risultato, ma il risultato è 0 con il riporto di 1, cioè 10 (da leggere uno, zero e non dieci).
Le regole per effettuare l'operazione di somma di due cifre binarie sono riassunte di seguito:
• 0 + 0 = 0• 0 + 1 = 1• 1 + 0 = 1• 1 + 1 = 0 con riporto di 1
![Page 34: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/34.jpg)
La somma dei due numeri interi 10001 e 11011 è pari a:
10001 +11011 =
------------101100
Somma binaria
![Page 35: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/35.jpg)
Moltiplicazione binaria
Le regole per la moltiplicazione sono:
• 0 * 0 = 0• 0 * 1 = 0• 1 * 0 = 0• 1 * 1 = 1
![Page 36: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/36.jpg)
Quale è il maggiore?
A) 1 0 1 0 1 0 1 0
B) 1 0 0 1 0 1 0 0
C) 1 0 1 0 1 0 1 1
![Page 37: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/37.jpg)
Rappresentazione dei Caratteri
Oltre che le lettere (maiuscole e miniscole) dell’alfabeto inglese e le cifre decimali, ci si riferisce con il termine caratteri anche ad altri caratteri quali:– i caratteri di interpunzione (la virgola, il punto, i due punti,
ecc.)– caratteri di varia origine (il meno, l’asterisco, le parentesi,
ecc.)
Per rappresentare l’insieme di tutti i caratteri sono sufficienti 7 bit.
![Page 38: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/38.jpg)
• I caratteri che costituiscono un testo vengono codificati tramite sequenze di bit, utilizzando un codice di traduzione.
• Un codice di traduzione è una tabella che stabilisce una corrispondenza tra un carattere e la stringa di 7 bit che la rappresenta.
• Poichè esistono numerose possibilità di costruire le tabelle di traduzione, per motivi pratici è opportuno sceglierne una di riferimento e utilizzare sempre quella prescelta (standard).
• L’uso di un codice di traduzione standard consente a sistemi diversi di comunicare tra loro.
Rappresentazione dei Caratteri
![Page 39: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/39.jpg)
Codice ASCII
![Page 40: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/40.jpg)
7 bit ® 128 combinazioni diverse di numeri
Lettere dell’alfabeto 25Maiuscole 25Numeri 10Punteggiatura 15Simboli 6Comandi 34Caratteri speciali 13
Totale 128
Rappresentazione dell’informazione
![Page 41: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/41.jpg)
• Problema
• Algoritmo di risoluzione
• Programma
![Page 42: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/42.jpg)
• Un esempio di esecutore: un braccio meccanico che disegna poligoni
• P (problema) = disegnare un rettagolodi base x e altezza y
PG
Input xInput yAbbassa la pennaAvanti la penna di y quadrettiRuota la penna verso destra di 90 gradiAvanti la penna di x quadrettiRuota la penna verso destra di 90 gradiAvanti la penna di y quadrettiRuota la penna verso destra di 90 gradiAvanti la penna di x quadretti
G = insieme di azioni di A che risolvono il problema
xy
Problema
![Page 43: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/43.jpg)
1. INPUT lato2. abbassa la penna3. vai avanti di lato quadretti4. ruota verso destra di 90 gradi5. vai avanti di lato quadretti6. ruota verso destra di 90 gradi7. vai avanti di lato quadretti8. ruota verso destra di 90 gradi9. vai avanti di lato quadretti10. ruota verso destra di 90 gradi
![Page 44: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/44.jpg)
Con un linguaggio più ricco:
1. INPUT lato2. abbassa la penna3. ripeti 4 volte le seguenti istruzioni:4. ruota verso destra di 90 gradi5. vai avanti di lato quadretti
![Page 45: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/45.jpg)
45
1) INPUT lato2) abbassa la penna3) vai avanti di lato
quadretti
Lato = 20???
A
A
![Page 46: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/46.jpg)
Con un linguaggio più ricco (2):
1. INPUT lato2. abbassa la penna3. ripeti 4 volte le seguenti istruzioni:4. ruota verso destra di 90 gradi5. se lato è minore di 10 allora:6. vai avanti di lato quadretti
![Page 47: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/47.jpg)
Scrivere in pseudo codice un algoritmo per trasformare numeri decimali in numeri binari.
Esercizio
![Page 48: Silvia Rossi - cogrobotics.unina.it · – Deitel H.M., Deitel P.J. – C Corso completo di ... – Un linguaggio semplice di rapida traduzione nel linguaggio di programmazione da](https://reader030.fdocument.pub/reader030/viewer/2022021611/5c71322709d3f2282f8bf412/html5/thumbnails/48.jpg)
Determinare il passaggio dalla numerazione decimale alla binaria. Prendiamo in considerazione il numero 25 e dividiamolo per 2 più volte: ogni volta il quoziente viene sempre diviso per 2 finché l’ultimo quoziente è minore del divisore e diverso da zero (e quindi 1).
Il numero in base 2 cercato è uguale all’ultimo quoziente seguito da tutti i resti presi in ordine inverso (le cifre evidenziate in neretto):
25 : 21 12 : 20 6 : 20 3 : 21 1
11001