Corso di
Reti di Calcolatori
Slides di completamento per i problemi
più comuni riscontrati durante il corso
Luigi Vetrano
Rudimenti di HTML
Basic
Luigi Vetrano
La struttura di base di un
documento HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>Titolo del documento</TITLE>
</HEAD>
<BODY>
<P>Testo di un paragrafo</P>
</BODY>
</HTML>
Tag strutturali di base: HTML, HEAD e BODY
3
Un primo esempio
<HTML>
<HEAD>
<TITLE>Il titolo del documento</TITLE>
</HEAD>
<BODY>
<h1>Natale 2007</h1>
<p>
Il corpo del documento: contiene tutto cio` che il
browser visualizzera`
</p>
</BODY>
</HTML>
1.
2.
3.
Scrivere questo in un file di testo
Salvarlo come testo e con estensione html
Visualizzarlo con il browser
4
Titoli e paragrafi
• Titoli di diverso livello (fino a 6)
<h1>Un titolo di primo livello</h1>
<h2>Un titolo di secondo livello</h2>
<h3>Un titolo di terzo livello</h3>
<h4>Un titolo di quarto livello</h4>
<h2>Un altro titolo di secondo livello</h2>
• Paragrafi
– <p>Questo è un primo paragrafo di testo</p>
– <p>Questo è un secondo paragrafo di testo un
po’ piu` lungo del primo</p>
5
Enfasi e grassetto
Enfasi
Questo e` molto <em>interessante</em>!
Diverso da italico o grassetto che sono
annotazioni stilistiche
Questo e` molto <i>interessante</i>!
Questo e` molto <b>interessante</b>!
6
Le immagini
– <img src=“micio.jpg“/>
– <img src="micio.gif" width="278" height="278"
alt="il mio gatto preferito"/>
– <img src="micio.gif" width="150" height="278"
alt="il mio gatto preferito"/>
– <img src="micio.gif" width="150" height="150"
alt="il mio gatto preferito"/>
• Come si catturano dal Web?
7
I collegamenti (link)
• Per i collegamenti si usa il tag <a> con attributo
href il cui valore è l’URL della pagina che
vogliamo collegare.
<a href="pagina.html">Pagina collegata</a>
• Il testo tra <a> e </a> è il testo del collegamento
che sarà visualizzato in blù e sottolineato dai
browser.
• Link assoluti e relativi:
<a href="http://www.w3.org/">W3C</a>
<a href="/index.html">Home</a>
<a href="http://di.univaq.it/"><img src=“img/logo.gif"></a>
8
Liste numerate e non
<ul>
<li>il primo elemento della lista</li>
<li>il secondo elemento</li>
<li>il terzo elemento</li>
</ul>
<ol>
<li>il primo elemento della lista</li>
<li>il secondo elemento</li>
<li>il terzo elemento</li>
</ol>
9
Come andare a capo e introdurre spazi
• Gli spazi e gli “a capo” nel file non
servono
– Per andare a capo si usa <br/>
– Per introdurre spazi si usa il carattere speciale
&nbsp; (spazio non "interrompibile").
• Esempi
– Mario Rossi<br/>
– Dipartimento di Informatica<br/>
– Coppito 2<br/>
– &nbsp;&nbsp;La bevanda più usata nel mondo e`
la Coca&nbsp;Cola.
10
Tabelle
<table border="1“>
<tr><th>Anno</th><th>Vendite</th></tr>
<tr><td>2000</td><td>18M</td></tr>
<tr><td>2001</td><td>25M</td></tr>
<tr><td>2002</td><td>36M</td></tr>
</table>
11
Sistemi di numerazione
Binario e Esadecimale
Luigi Vetrano
Sistema decimale
•
Sistema utilizzato dall’uomo per fare i calcoli:
– un numero può assumere 10 valori compresi tra 0 e 9
– a seconda della posizione il numero assume un peso
differente e viene moltiplicato per potenze di 10 crescenti,
partendo dalla prima posizione a destra:
• 1.a posiz. il numero viene moltiplicato per 1 (100)
• 2.a posiz. il numero viene moltiplicato per 10 (101)
• 3.a posiz. il numero viene moltiplicato per 100 (102)
ecc.
– esempio: 357
3x100 + 5x10 + 7x1
13
Sistema binario
• Sistema impiegato dai computer e vari tipi di
apparecchiature per fare i calcoli:
– il bit può assumere 2 valori: 0 e 1
– a seconda della posizione il bit assume un peso differente e
viene moltiplicato per potenze di 2 crescenti, partendo dalla
prima posizione a destra:
– 1a posiz. il numero viene moltiplicato per 1 (20)
– 2a posiz. il numero viene moltiplicato per 2 (21)
– 3a posiz. il numero viene moltiplicato per 4 (22)
ecc.
– esempio: 101
1x4 + 0x2 + 1x1 = 4+0+1 = 5
14
Pesi Binari
15
Calcolo di un valore
0x
8
VALORE :
4
0
9
32768 + 1024 + 8 + 1 = 33801 = 0x8409
16
Il byte
• Rappresenta l’insieme
di 8 bit
– può contenere valori
compresi tra 0 e 255
17
Sequenza di byte
• Il byte più significativo è il primo a sinistra
• Il byte meno significativo è l’ultimo a destra
18
Funzioni logiche di base: NOT
•
La funzione NOT inverte il valore del bit d’uscita
rispetto a quello d’ingresso, ovvero ne fa il
complemento
19
Funzioni logiche di base: AND
• La condizione di avere 1 in uscita è vera soltanto
quando tutti gli ingressi sono a 1
20
Funzioni logiche di base: OR
• La condizione di avere 1 in uscita è vera quando
un o più ingressi sono a 1
21
Il complemento
• Fare il complemento a di un numero binario
significa invertire il valore di tutti i bit
22
Rappresentazione esadecimale
• Permette di rappresentare valori binari
elevati senza dover scrivere lunghe
sequenze binarie (0100 1101 1110 0111)
• Si raggruppano sequenze di 4 bit e si
scrive il valore in esse contenute (4 D E 7)
• Una sequenza di 4 bit può assumere valori
compresi tra 0 e 15
– per rappresentare il valore di una sequenza di 4
bit con una sola cifra dopo il numero 9 si usano le
lettere: A, B, C, D, E, F
• Il computer al suo interno lavora
comunque solo con sequenze binarie
23
Rappresentazione esadecimale
24
The bitwise operators of C
• Il linguaggio C non ha operatori per operazioni
sui bit.
–
–
–
–
AND operation is represented by the binary & operator.
OR operation is represented by the binary | operator.
XOR operation is represetned by the binary ^ operator.
NOT operation is represented by the unary ~ operator.
• The shift operations are performed by C’s << and
>> binary operators. The << operator performs
left shifts and the >> operator performs right
shifts.
25
Le operazioni binarie and, or e xor
Quando un’operazione
sui bit viene
applicata a numeri
interi, l’operazione
viene svolta sui bit
corrispondenti.
AND OR XOR
x
y
0
0
0
0
0
0
1
0
1
1
1
0
0
1
1
1
1
1
1
0
x
0
1
x&y x|y x^y
Complemento
~x
1
0
26
Esempio : 46 & 13
• Per prima cosa convertire in binario entrambi
i valori:
4610 = 00000000001011102
1310 = 00000000000011012
0000000000101110
& 0000000000001101
0000000000001100 = 1210
27
Bit Operations: Esempio
x
0
0
1
0
0
1
0
1
37
y
1
1
1
1
0
1
1
0 246
x&y
0
0
1
0
0
1
0
0
x|y
1
1
1
1
0
1
1
1 247
x^y
1
1
0
1
0
0
1
1 211
~x
1
1
0
1
1
0
1
0 218
36
28
Operatore OR ‘|’
• A volte si vede l’operatore | usato per
combinare due schemi di bit.
• esempio
– Font.BOLD ha il valore 1, Font.ITALIC ha il
valore 2.
– La combinazione Font.BOLD | Font.ITALIC ha
impostati a 1 sia il bit per il grassetto sia quello
per il corsivo:
0000000000000001
| 0000000000000010
0000000000000011 = 310
•
Font.BOLD
Font.ITALIC
Warning: Non confondete gli operatori per i bit & e | con gli operatori &&
e ||. Questi ultimi operano soltanto su valori di tipo boolean, e non sui
bit di numeri.
29
Bit Operators vs Logical Operators
• Logical operations:
37 && 246 → 1
37 || 246 → 1
! 37 → 0
(T)
(T)
(F)
• Bit operations:
37 & 246 → 36
37 | 246 → 247
~ 37 → 218
30
Masking and Setting
x
b7 b6 b5 b4 b3 b2 b1 b0
28
0
0
0
0
0
x&28
0
0
0 b4 b3 b2 0
0
227
1
1
1
1
1
x|227
1
1
1 b4 b3 b2 1
1
1
0
1
0
1
0
31
operazioni di scorrimento
• Oltre alle operazioni che operano su singoli bit, esistono
anche tre operazioni di scorrimento che prendono lo
schema di bit di un numero e lo spostano a sinistra o a
destra di un certo numero di posizioni.
• Esistono tre operazioni di scorrimento: scorrimento a
sinistra (<<), scorrimento aritmetico a destra (>>) e
scorrimento a destra bit a bit (>>>).
• Lo scorrimento a sinistra sposta tutti i bit verso sinistra,
inserendo zeri nei bit meno significativi. Lo spostamento a
sinistra di n bit fornisce lo stesso risultato di una
moltiplicazione per 2n.
• Lo scorrimento aritmetico verso destra sposta tutti i bit a
destra, propagando il bit di segno: quindi, il risultato è
uguale a quello della divisione intera per 2n, sia per valori
positivi che per valori negativi.
• Infine, lo scorrimento a destra bit a bit sposta tutti i bit a
destra, inserendo zeri nei bit più significativi (osservate la
prossima slide).
32
Scorrimento
Scorrimento a sx (<<)
Scorrimento aritm. a dx (>>)
Scorrimento bit-a-bit a dx (>>>)
Nota: Il ‘C’ ha solo
le prime due mentre
Java le ha tutte e tre
33
Set e Check
1 << n
• fornisce uno schema di bit in cui il bit n-esimo vale 1
(contando le posizioni a partire dalla posizione 0 del
bit meno significativo).
• Per impostare a 1 il bit n-esimo di un numero,
eseguite l’operazione
x = x | 1 << n
• Per controllare se il bit n-esimo di un numero vale 1,
eseguite la verifica
if ((x & 1 << n) != 0) ...
– Notate che le parentesi attorno all’operatore & sono
necessarie, perché ha una precedenza minore degli
operatori relazionali.
34
Shift Operations
• Shift operators move bit patterns either left or right
– 1 bit left: multiply by 2
– 1 bit right: divide by 2
x
0
0
1
0
0
1
0
1
37
x<<1
x<<2
x<<3
x>>1
x>>2
x>>3
35
Shift Operations
• Shift operators move bit patterns either left or right
– 1 bit left: multiply by 2
– 1 bit right: divide by 2
x
0
0
1
0
0
1
0
1
37
x<<1
0
1
0
0
1
0
1
0
74
x<<2
1
0
0
1
0
1
0
0 148
x<<3
0
0
1
0
1
0
0
0
40
x>>1
0
0
0
1
0
0
1
0
18
x>>2
0
0
0
0
1
0
0
1
9
x>>3
0
0
0
0
0
1
0
0
4
36
Bit manipulation in C
/*
** Macro per la manipolazione dei bits in un ‘data type’.
*/
#define ToBOOL(x) (!(!(x)))
#define BitSet(arg,posn) ((arg) | (1L << (posn)))
#define BitClr(arg,posn) ((arg) & ~(1L << (posn)))
#define BitFlp(arg,posn) ((arg) ^ (1L << (posn)))
#define BitTst(arg,posn) ToBOOL((arg) & (1L << (posn)))
Nota: Excerpt from ‘C-Snippets’
37
Esempio di codice C che fa uso
operatori
short int s ;
short unsigned u;
s = −1;
u = 100;
u = u | 0x0100;
s = s & 0xFFF0;
s = s ^ u;
u = u << 3;
s = s >> 2;
// assume that short int is 16−bit
// s = 0xFFFF (2’s complement)
// u = 0x0064
// u = 0x0164
// s = 0xFFF0
// s = 0xFE94
// u = 0x0B20 (logical shift)
// s = 0xFFA5 (arithmetic shift)
38
Network byte order
Il TCP/IP memorizza gli interi in notazione big
endian (network byte order) indipendentemente
dall’architettura degli hosts.
Fortunatamente esistono nel TCP/IP delle librerie C
dove ci sono funzioni che gestiscono il problema
dell’endianness:
– Esempio:
• htonl() converte una double word (o long
integer) dal formato host a quello network.
• ntohl() esegue la trasformazione opposta.
• Analogamente esistono: ntohs e htons per gli
short
39
Come Determinare l’Endianness
//
// Si suppone che sizeof (short) = 2
//
#include<stdio.h>
int main()
{
unsigned short word = 0x1234;
unsigned char p = (unsigned char ) word;
if ( p == 0x12 )
printf ("0x%x -- Big Endian Machine\n",p);
else
printf ("0x%x -- Little Endian Machine\n",p);
return 0;
}
40
Lunghezza password
Uppercase, Lower,
Digits (62 chars)
Uppercase, Lower,
Digits, Punctuation
(65 chars)
Length = 5
19 minutes
characters
1 day
8 days
Length = 6
18 hours
characters
65 days
2 years
Length = 7
9 days
characters
11 years
200 years
Length = 8
241 days
characters
692 years
19,000 years
Length = 9
17 years
characters
42,000 years
1.8 million years
(STRONG)
Lower Case
(26 letters)
41
Scarica

Materiale-Extra