cap2-representacao-da-informacao.asc 13.9 KB
Newer Older
1
== Representação da informação
2

3
4
:cap: cap2

5
6
7
8
9
10
11
12
13
14
15
.Objetivos do capítulo
____________________
Ao final deste capítulo você deverá ser capaz de:

* Explicar o que são bit e byte e a importância do último para representação da informação
* Explicar como números, textos, imagens e músicas podem ser expressos 
através de sequências de bits
* Ser capaz de representar novas informações através de bits, com o auxílio de uma tabela
____________________


16
17
18
19
20
21
22
23
24
25
////
Ementa:
A ideia é apresentar o conceito de bit/byte e suas possibilidades de
representação de informação em um computador.
////

Você provavelmente já ouviu alguém falar que os computadores trabalham
internamente apenas com *0* e *1* (zero e um). Tudo o que você assiste,
escuta ou cria no computador, é processado internamente através de
sequências de zeros e uns. O computador ao ler estas sequências, consegue
26
interpretá-las e em seguida apresentar as informações contidas nelas.
27

28
29
30
31
Neste capítulo estudaremos o conceito e bit e byte e como eles podem
ser utilizados para representar diversas informações. 

Vamos começar nossos estudos aprendendo sobre os *bits* e *bytes*.
32
33
34

=== Conceito de bit e byte

35
Um *((bit))* ou dígito binário ('binary digit'), é a unidade básica que os
36
computadores e sistemas digitais utilizam para trabalhar, ele pode assumir
37
apenas dois valores, *0* ou *1*. Um *((byte))* é uma sequência de 8 bits. 
38

39
40
Fisicamente, um bit pode ser representado de várias formas: através de dois 
valores de voltagem aplicados num fio, diferentes direções de magnetização
41
42
43
em uma fita magnética, entre outras. O importante é que seja possível 
identificar dois estados diferentes.

44
45
46
[IMPORTANT]
========================================================================
*O byte é a menor unidade de armazenamento utilizada pelos 
47
computadores*. Isto quer dizer que, nós nunca conseguiremos
48
49
50
51
52
53
54
55
56
salvar menos do que 8 bits. 

// Adicionar referência explicando o porquê do armazenamento mínimo de 8 bits?

========================================================================


Na próxima seção iremos estudar como os bits e bytes são utilizados na 
representação de dados e mídias.
57
58
59
60

[[possibilidades_de_representacao]]
=== Possibilidades de representação

61
Como um bit só pode assumir dois valores (*0* ou *1*), só será possível
62
63
representar exatamente dois estados distintos. Na <<representacoes_de_bit>> nós
temos exemplos de como podemos associar significados aos valores do bit. 
64
65

Por exemplo, em um sistema com trava eletrônica,
66
o valor *0* poderia indicar que a porta estava fechada, enquanto
67
*1* indicaria que a porta está aberta. Em outro sistema que registra o estado civil,
68
69
70
71
*0* poderia representar 'Solteiro', enquanto *1* seria 'Casado'.

[[representacoes_de_bit]]
.Representações com um bit.
72
[width="100%",options="header", frame="topbot", cols="1s,3,3,3,7,6"]
73
|======================================
74
| Bit  | Porta  | Lâmpada  | Sexo       | Detector de movimento | Estado civil
75
76
| 0 | Fechada |Desligada | Masculino | Sem movimento | Solteiro
| 1 | Aberta  | Ligada   | Feminino  | Com movimente | Casado
77
78
79
80
81
82
|======================================


Para representar mais de dois valores distintos nós precisamos de uma sequência
de bits maior. Na <<estado_civil_estendido>> nós temos exemplos de 
representações utilizando sequências com *2* bits, obtendo *4* possibilidades. 
83
84
Nesta caso, o estado civil 'Casado' passou a ser representado pela 
sequência `01`.
85
86
87
88


[[estado_civil_estendido]]
.Representações com dois bits.
89
[width="100%",options="header", frame="topbot", cols="^2,^3,^1"]
90
91
92
93
|======================================
| Sequencia de Bits | Lâmpada|  Estado civil
| *00*  | Desligada                        | Solteiro
| *01*  | Ligada com intensidade *baixa*  | Casado  
94
| *10*  | Ligada com intensidade *alta*  | Divorciado
95
| *11*  | 'Não utilizado'  | Viúvo
96
97
|======================================

98
99
100
101
102
103
104
105
106
107
108
109
110
111
As tabelas são bastante utilizadas para representar informações. Em uma coluna
colocamos o que desejamos representar e na outra sua representação binária. 
Não há uma ordem particular, por exemplo, na <<estado_civil_estendido>> 
'Solteiro' é representado por `00`, mas poderíamos construir outra tabela 
em que seria *codificado* como `11` (lê-se um-um). 


IMPORTANT: O termo *((codificação binária))* significa traduzir um conteúdo para a sua
representação binária. 

Percebam também que, quando
todas as informações desejadas já foram representadas, podem existir sequências
binárias que não possuem significado definido, que foi o caso da sequência `11`
para a lâmpada (<<estado_civil_estendido>>).
112
113
114
115
116

[NOTE]
=================================
Observe que o número de possibilidades diferentes que podemos representar
depende do tamanho da sequência de bits que estamos utilizando, 
117
mais precisamente: 2^tamanho em bits^.
118

119
[width="100%", frame="none", grid="none", cols="1,1,1,2"]
120
121
122
|=================================
| 2^1^ = 2  | 2^2^ = 4  | 2^3^ = 8   | 2^4^ = 16
| 2^5^ = 32 | 2^6^ = 64 | 2^7^ = 128 | 2^8^ = 256 possibilidades (um byte)
123
| 16 bits = 65.535 2+| 32 bits = 4.294.967.295 | 64 bits = 18.446.744.073.709.551.615
124
125
126
127
|=================================

=================================

128
129

[[numeros_representacao]]
130
==== Números
131
(((Representação, Números)))
132
133

Independente do que desejamos representar, o primeiro passo é verificar quantas
134
informações diferentes iremos utilizar e, com base nestas informações podemos
135
136
137
calcular quantos bits serão necessários para representar todas as 
possibilidades.

138
IMPORTANT: Para representar números é necessário estabelecer o intervalo de números
139
140
que desejamos utilizar, pois precisamos definir quantas possibilidades 
diferentes queremos representar.
141

142
143
Já vimos que com 8 bits podemos representar 256 possibilidades (números)
diferentes. Para representar números inteirosfootnote:[As representações de 
Eduardo de Santana Medeiros Alexandre's avatar
notas    
Eduardo de Santana Medeiros Alexandre committed
144
145
números negativos (<<sec_numeros_negativos>>) e reais (ponto flutuante, <<sec_ponto_flutuante>>) também 
são possíveis utilizando estratégias que veremos mais adiante.] 
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
e positivos podemos construir uma tabela com todas estas possibilidades. 
Na <<tabela_numero>> temos exemplos de como alguns desses números são
representados.

[[tabela_numero]]
.Representação de números utilizando um byte.
[width="100%", frame="none", grid="all", cols="^1,^2,^1,^2,^1,^2,^1,^2,^1,^2", options="header"]
|=================================
| Num | Byte | Num | Byte | Num | Byte | Num | Byte | Num | Byte 
| 0 | 00000000 | 8 | 00001000 | 16| 00010000 | 24| 00011000 | 248| 11111000  
| 1 | 00000001 | 9 | 00001001 | 17| 00010001 | 25| 00011001 | 249| 11111001  
| 2 | 00000010 | 10| 00001010 | 18| 00010010 | 26| 00011010 | 250| 11111010  
| 3 | 00000011 | 11| 00001011 | 19| 00010011 | 27| 00011011 | 251| 11111011  
| 4 | 00000100 | 12| 00001100 | 20| 00010100 | 28| 00011100 | 252| 11111100  
| 5 | 00000101 | 13| 00001101 | 21| 00010101 | 29| 00011101 | 253| 11111101 
| 6 | 00000110 | 14| 00001110 | 22| 00010110 | 30| 00011110 | 254| 11111110 
| 7 | 00000111 | 15| 00001111 | 23| 00010111 | 31| 00011111 | 255| 11111111 
|=================================
164
165

==== Texto ====
166
167
(((Representação, Texto)))
(((ASCII)))
168

169
170
171
172
Nesta seção nós iremos aprender como o computador representa texto. 
Novamente, podemos utilizar uma tabela definindo os caracteres que
desejamos representar e suas correspondências binárias.

173
174

O ASCII é o padrão de representação de caracteres mais conhecido. 
175
176
177
178
Na <<tabela_ascii>> é apresentado um extrato da tabela ASCII, 
onde cada caractere possui sua representação em bits. 
Este padrão também inclui outros caracteres de controle, não apresentados na tabela,
como 'fim de linha' e 'final de arquivo'.
179
A composição de um texto é realizada informando a sequência de caracteres 
180
contidos nele. 
181
182
183
184
185
186


[[tabela_ascii]]
.Extrato da tabela ASCII
[width="100%", frame="none", grid="all", cols="^1,^2,^1,^2,^1,^2,^1,^2,^1,^2", options="header"]
|=================================
187
| Char | Byte | Char| Byte | Char | Byte | Char | Byte | Char | Byte
188
189
190
191
192
| a | 01100001 | A | 01000001 | n | 01101110 | N | 01001110 | 0 | 00110000
| b | 01100010 | B | 01000010 | o | 01101111 | O | 01001111 | 1 | 00110001
| c | 01100011 | C | 01000011 | p | 01110000 | P | 01010000 | 2 | 00110010
| d | 01100100 | D | 01000100 | q | 01110001 | Q | 01010001 | 3 | 00110011
| e | 01100101 | E | 01000101 | r | 01110010 | R | 01010010 | 4 | 00110100
193
194
195
196
197
198
| f | 01100110 | F | 01000110 | s | 01110011 | S | 01010011 | 5 | 00110101
| g | 01100111 | G | 01000111 | t | 01110100 | T | 01010100 | 6 | 00110110
| h | 01101000 | H | 01001000 | u | 01110101 | U | 01010101 | 7 | 00110111
| i | 01101001 | I | 01001001 | v | 01110110 | V | 01010110 | 8 | 00111000
| j | 01101010 | J | 01001010 | w | 01110111 | W | 01010111 | 9 | 00111001
| k | 01101011 | K | 01001011 | x | 01111000 | X | 01011000 | |
199
200
201
202
| l | 01101100 | L | 01001100 | y | 01111001 | Y | 01011001 | |
| m | 01101101 | M | 01001101 | z | 01111010 | Z | 01011010 | |
|=================================

203
IMPORTANT: Percebam que neste sistema os caracteres são representados 
Eduardo de Santana Medeiros Alexandre's avatar
notas    
Eduardo de Santana Medeiros Alexandre committed
204
por exatamente *um byte, que é o tamanho mínimo possível de ser salvo no computador*.
205

206
207
Talvez você tenha percebido a ausência dos 'caracteres especiais', como o "ç", "ß", 
além dos caracteres acentuados como "ã", "ô", "é", etc. Isto porque o padrão ASCII
208
209
210
211
212
foi criado por americanos para *codificar* as mensagens escritas no idioma 
inglês, que não possuem tais caracteres. 
Por esta razão, existem vários outros sistemas de codificação para melhor
representar as mensagens do idioma que se deseja utilizar, alguns exemplos 
são: *Unicode*, *UTF-8* e *ISO 8859-1* (padrão 
213
214
latino-americano).

Eduardo de Santana Medeiros Alexandre's avatar
notas    
Eduardo de Santana Medeiros Alexandre committed
215
216
217
218
[TIP]
.Testando o tamanho do caracteres
====
Faça um teste! Abra um editor de texto como o 'bloco de notas', 'gedit' 
219
ou 'kate' (não use o 'Word'). Digite 'abc' no documento em branco e salve-o. 
220
221
Em seguida, verifique o tamanho do arquivo, dependendo da codificação utilizada
pelo seu editor o arquivo poderá ter de 3 a 8 bytes.
Eduardo de Santana Medeiros Alexandre's avatar
notas    
Eduardo de Santana Medeiros Alexandre committed
222
====
223
224

==== Imagem ====
225
(((Representação, Imagem)))
226

227
228
229
230
231
Uma das formas possíveis para representar imagens é tratá-las como
grades de pontos (ou 'pixels').

Ao atribuir uma cor para cada ponto, 
podemos então pintar a imagem. Na <<foto_senna>> nós temos uma imagem e um recorte em
232
destaque, mostrando a grade de pontos com suas respectivas cores.
233

234
235
Além das cores dos pontos também é necessário definir o tamanho da grade 
(quantos pontos teremos na horizontal e na vertical), também conhecida
236
como 'resolução da imagem'. Sem a resolução teríamos apenas um linha
237
de pontos coloridos.
238

239
240
[[foto_senna]]
.Fotografia evidenciando a grade de pontos.
241
image::images/{cap}/senna.jpg[scaledwidth="60%"]
242

243

244
Um sistema popular de representação de cores é o *RGB*, onde é reservado um 
245
byte para os tons de cada uma das cores primárias: *vermelho, verde e azul*. 
246
247
Como um byte permite representar 256 tons de uma cor, ao total são possíveis 
representar 16 milhões (256x256x256) de cores.
248

249
250
[NOTE]
======================================
251

252
253
Através do sistema *RGB* podemos representar as três cores primárias e as 
suas derivadas, que são as cores resultantes das misturas das cores primárias.
254
Neste sistema, o branco é interpretado como sendo a união de todas as cores, e o preto
255
a ausência de cor. Este sistema é utilizado pelo formato de imagem *BMP*.
256

257
258
O sistema *RGBA* inclui também um 'canal alpha', responsável por representar
a transparência do ponto, utilizado pelo formato de imagem *PNG*.
259

260
======================================
261
262


263
==== Música ====
264
(((Representação, Música)))
265

266
Para representar uma música, podemos imaginá-la como sendo apenas uma partitura
267
268
e salvar todas as informações contidas nela. Depois a música poderá
ser ouvida tocando a partitura salva. 
269

270
.Partitura da música Marcha Soldado.
271
image::images/{cap}/partitura.eps[scaledwidth="60%"]
272

273
274
275
276
NOTE: Os toques dos antigos celulares monofônicos utilizavam este sistema
para reproduzir as músicas, salvando apenas as notas dos tons. O formato de 
arquivo *MID* utiliza esta estratégia. Você pode baixar esta música em:
https://github.com/edusantana/introducao-a-computacao-livro/raw/master/arquivos/midias/marcha_soldado.mid
277

278

279
280
Você deve está pensando, "Mas as músicas *MP3* que escuto também tem voz, 
como ela é representada?". Os sons também podem ser 
281
282
283
representados através das frequências de ondas (<<musica_onda>>) que os
caracterizam. Mais tarde, quando você desejar escutar as músicas, o computador
será capaz de reproduzir os mesmos sons.
284

285
286
[[musica_onda]]
.Representação de uma música através de ondas.
287
image::images/{cap}/musica-onda.eps[scaledwidth="60%"]
288
289


290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
Se possível, acessem este vídeo sobre a representação da informação.

.Vídeo sobre Representação da Informação: http://youtu.be/y_eCItEibHI
ifdef::livro-pdf[]
["qrcode", size=10, scaledwidth="30%"]
-------------------------
http://youtu.be/y_eCItEibHI
-------------------------
endif::livro-pdf[]

ifdef::livro-html[]
+++
<?dbhtml-include href="videos/representacaoInformacao.html"?>
+++
endif::livro-html[]

306
=== Recapitulando
307

308
309
Neste capítulo você aprendeu o que são bits e bytes, e a importância do
último para salvar dados no computador.
310

311
312
313
Em seguida, vimos como dados podem ser representados através de uma tabela,
e como calcular quantos bits são necessários para representar as informações
que desejamos.
314

315
316
Por último, vimos como números, textos, imagens e músicas podem ser 
representadas através de bits.
317
318


319
=== Atividades
320

321
322
. Utilizando o método de representação de números estudado 
(<<numeros_representacao>>), represente os números *32*, *64* e *128* em bytes.
323

324
. Como você representaria todos os meses do ano em bits?
325

326
. Quantos bits são necessários para representar 150 possibilidades diferentes?
327

328
. ★ Como você representaria as horas em bits?
329

330
331
. ★ Como você representaria o tabuleiro abaixo em binário? Quantos bytes sua
estratégia utiliza?
332

333
image::images/{cap}/jogo-damas.eps[scaledwidth="25%"]
334

335
336
// Sempre manter uma linha em branco no final