Introdução a Informática – Parte 03

Introdução

No post anterior, vimos as etapas que acontecem quando ligamos o equipamento, e de bandeja alguma coisa bem ‘por cima’ sobre dados e programas. Agora vamos descer um pouco mais dentro dos Bytes, abordar o conceito de Dados e Programas, e aproveitar o gancho para ver ‘por cima’ o que é um sistema de arquivos, mais especificamente o sistema de arquivos em árvore, usado pelo MS-DOS e pelo Windows.

Lembrando do Byte

“Note que um byte nada tem de especial, é apenas um número binário de oito algarismos. Sua importância na informática deriva apenas do fato do código ASCII haver adotado números de oito bits, além de razões meramente construtivas ou operacionais. Por exemplo: os códigos enviados a impressoras para controlar a impressão têm oito bits, os valores trocados via Modem entre computadores também, assim como diversas outras operações elementares de intercâmbio de informações. Além disso, memórias costumam ser organizadas de tal forma que as operações de leitura e escrita são feitas com quantidades de um byte ou de um múltiplo de bytes (oito, dezesseis, trinta e dois, sessenta e quatro ou cento e vinte e oito bits – o que corresponde a um, dois, quatro, oito e dezesseis bytes, respectivamente).” (Wikipedia, BYTE)

Logo, o que está gravado em qualquer arquivo armazenado no disco de um computador ? R: Bytes. E na memória RAM ? R: Bytes. E num pen-drive ? Mais Bytes. Legal, tudo são Bytes, ou sequências numéricas de octetos. Mas, no computador eu tenho arquivos de texto, imagens, áudio, vídeo … tudo são bytes ? R: SIM.

Existem editores de texto e ferramentas de disco que permitem abrir um arquivo qualquer, em qualquer formato, e ler todos os bytes do arquivo, e mostrar na tela o conteúdo do arquivo representados em bytes. Normalmente estes programas mostram o valor de cada byte em uma base numérica conhecida por HEXADECIMAL. No sistema decimal, usamos 10 algarismos diferentes para representar um número, de “0” a “9”. No sistema binário, usamos apenas 2: “0” e “1”. No sistema Hexadecimal, usamos 16 ( HEXA + DECIMAL = 6 + 10 ), usando os algarismos de “0” a “9” e as letras de “A” a “F”.

Partindo da base binária, precisamos de uma sequência de 4 BITS para representar 16 valores diferentes, certo ? Usando Hexadecimal, com apenas um símbolo, de “0” a “F”, conseguimos representar 16 valores diferentes. Vejamos abaixo como podemos representar os 256 valores diferentes de um Byte usando cada um dos sistemas ( DEC = Decimal, HEX = Hexadecimal, BIN = Binário ):

DEC HEX BIN DEC HEX BIN DEC HEX BIN DEC HEX BIN
------------------------------------------------------------------------------
000 00 00000000 064 40 01000000 128 80 00000010 192 C0 11000000
001 01 00000001 065 41 01000001 129 81 00000011 193 C1 11000001
002 02 00000010 066 42 01000010 130 82 00000100 194 C2 11000010
003 03 00000011 067 43 01000011 131 83 00000101 195 C3 11000011
004 04 00000100 068 44 01000100 132 84 00000110 196 C4 11000100
005 05 00000101 069 45 01000101 133 85 00000111 197 C5 11000101
006 06 00000110 070 46 01000110 134 86 00001000 198 C6 11000110
007 07 00000111 071 47 01000111 135 87 00001001 199 C7 11000111
008 08 00001000 072 48 01001000 136 88 00001010 200 C8 11001000
009 09 00001001 073 49 01001001 137 89 00001011 201 C9 11001001
010 0A 00001010 074 4A 01001010 138 8A 00001100 202 CA 11001010
011 0B 00001011 075 4B 01001011 139 8B 00001101 203 CB 11001011
012 0C 00001100 076 4C 01001100 140 8C 00001110 204 CC 11001100
013 0D 00001101 077 4D 01001101 141 8D 00001111 205 CD 11001101
014 0E 00001110 078 4E 01001110 142 8E 00010000 206 CE 11001110
015 0F 00001111 079 4F 01001111 143 8F 00010001 207 CF 11001111
016 10 00010000 080 50 01010000 144 90 00010010 208 D0 11010000
017 11 00010001 081 51 01010001 145 91 00010011 209 D1 11010001
018 12 00010010 082 52 01010010 146 92 00010100 210 D2 11010010
019 13 00010011 083 53 01010011 147 93 00010101 211 D3 11010011
020 14 00010100 084 54 01010100 148 94 00010110 212 D4 11010100
021 15 00010101 085 55 01010101 149 95 00010111 213 D5 11010101
022 16 00010110 086 56 01010110 150 96 00011000 214 D6 11010110
023 17 00010111 087 57 01010111 151 97 00011001 215 D7 11010111
024 18 00011000 088 58 01011000 152 98 00011010 216 D8 11011000
025 19 00011001 089 59 01011001 153 99 00011011 217 D9 11011001
026 1A 00011010 090 5A 01011010 154 9A 00011100 218 DA 11011010
027 1B 00011011 091 5B 01011011 155 9B 00011101 219 DB 11011011
028 1C 00011100 092 5C 01011100 156 9C 00011110 220 DC 11011100
029 1D 00011101 093 5D 01011101 157 9D 00011111 221 DD 11011101
030 1E 00011110 094 5E 01011110 158 9E 00100000 222 DE 11011110
031 1F 00011111 095 5F 01011111 159 9F 00100001 223 DF 11011111
032 20 00100000 096 60 01100000 160 A0 00100010 224 E0 11100000
033 21 00100001 097 61 01100001 161 A1 00100011 225 E1 11100001
034 22 00100010 098 62 01100010 162 A2 00100100 226 E2 11100010
035 23 00100011 099 63 01100011 163 A3 00100101 227 E3 11100011
036 24 00100100 100 64 01100100 164 A4 00100110 228 E4 11100100
037 25 00100101 101 65 01100101 165 A5 00100111 229 E5 11100101
038 26 00100110 102 66 01100110 166 A6 00101000 230 E6 11100110
039 27 00100111 103 67 01100111 167 A7 00101001 231 E7 11100111
040 28 00101000 104 68 01101000 168 A8 00101010 232 E8 11101000
041 29 00101001 105 69 01101001 169 A9 00101011 233 E9 11101001
042 2A 00101010 106 6A 01101010 170 AA 00101100 234 EA 11101010
043 2B 00101011 107 6B 01101011 171 AB 00101101 235 EB 11101011
044 2C 00101100 108 6C 01101100 172 AC 00101110 236 EC 11101100
045 2D 00101101 109 6D 01101101 173 AD 00101111 237 ED 11101101
046 2E 00101110 110 6E 01101110 174 AE 00110000 238 EE 11101110
047 2F 00101111 111 6F 01101111 175 AF 00110001 239 EF 11101111
048 30 00110000 112 70 01110000 176 B0 00110010 240 F0 11110000
049 31 00110001 113 71 01110001 177 B1 00110011 241 F1 11110001
050 32 00110010 114 72 01110010 178 B2 00110100 242 F2 11110010
051 33 00110011 115 73 01110011 179 B3 00110101 243 F3 11110011
052 34 00110100 116 74 01110100 180 B4 00110110 244 F4 11110100
053 35 00110101 117 75 01110101 181 B5 00110111 245 F5 11110101
054 36 00110110 118 76 01110110 182 B6 00111000 246 F6 11110110
055 37 00110111 119 77 01110111 183 B7 00111001 247 F7 11110111
056 38 00111000 120 78 01111000 184 B8 00111010 248 F8 11111000
057 39 00111001 121 79 01111001 185 B9 00111011 249 F9 11111001
058 3A 00111010 122 7A 01111010 186 BA 00111100 250 FA 11111010
059 3B 00111011 123 7B 01111011 187 BB 00111101 251 FB 11111011
060 3C 00111100 124 7C 01111100 188 BC 00111110 252 FC 11111100
061 3D 00111101 125 7D 01111101 189 BD 00111111 253 FD 11111101
062 3E 00111110 126 7E 01111110 190 BE 01000000 254 FE 11111110
063 3F 00111111 127 7F 01111111 191 BF 01000001 255 FF 11111111
------------------------------------------------------------------------------

TABELA ASCII

Mas, se dentro de um arquivo qualquer, eu tenho apenas Bytes, como é que eu vou trocar informações ? No final, tudo são números, certo ? R: Sim. Na prática sim. O que nós podemos fazer é dar significado aos números, e definir uma forma de interpretação diferente para os números. O padrão mais conhecido na informática para representação e trocas de informações baseadas em TEXTO para computadores é a famosa TABELA ASCII.

“ASCII (do inglês American Standard Code for Information Interchange; “Código Padrão Americano para o Intercâmbio de Informação“) é um código binário (cadeias de bits: 0s e 1s) que codifica um conjunto de 128 sinais: 95 sinais gráficos (letras do alfabeto latino, sinais de pontuação e sinais matemáticos) e 33 sinais de controle. […] A codificação ASCII é usada para representar textos em computadores, equipamentos de comunicação, entre outros dispositivos que trabalham com texto. Desenvolvida a partir de 1960, grande parte das codificações de caracteres modernas a herdaram como base.” ( Wikipedia, ASCII)

Não vou replicar a tabela ASCII dentro deste post, dêem uma olhada nela no link da Wikipedia “https://pt.wikipedia.org/wiki/ASCII“. Quando abrimos um arquivo que contém apenas TEXTO (normalmente identificados pela extensão “.txt”), quando encontramos um byte com valor decimal “32”, ele significa um espaço em branco, “65” representa a letra “A” (“a” maiúscula do alfabeto), e uma sequência de bytes “13” e “10” representa uma quebra de linha.

Arquivos e Extensões

Um arquivo nada mais é do que uma sequência finita/limitada de Bytes. Qualquer programa é capaz de abrir um arquivo e ler seus bytes, mas para dar significado a esta informação, é necessário saber o que estes bytes representam. Quando o sistema de arquivos do MS-DOS foi concebido, foi definido que um “arquivo” possui um nome, que o diferencia dos demais, e uma extensão, normalmente separada do nome por um “.” ponto decimal, onde a extensão indica o tipo do conteúdo do arquivo.

Vejam abaixo algumas extensões e seus usos mais comuns, para os ambientes MS-DOS e Windows:

  • .INI Arquivo texto de configuração ou inicialização de algum aplicativo ou sistema.
  • .BAT Arquivo texto que contém uma sequencia de comandos do sistema operacional.
  • .EXE Arquivo binário que contém os códigos de um programa que pode ser executado pelo sistema operacional.
  • .JPG Arquivo de imagem no formato JPEG (Joint Photographic Experts Group).
  • .BMP Arquivo de imagem no fotmato BITMAP.
  • .PNG Arquivo de imagem no formato Portable Network Grafics.
  • .TXT Arquivo texto de uso geral.
  • .DLL Arquivo binário de link dinâmico, contém funções que podem ser carregadas e usadas por um ou mais programas.
  • .DOC Documento do MS-Word ou outro editor de textos.
  • .XLS Arquivo de Planilha Eletrônica do MS-Excel.
  • .PPT Arquivo de apresentação do MS-PowerPoint.
  • .ZIP Arquivo compactado no padrão ZIP, armazena um ou mais arquivos.
  • .RAR Arquivo compactado no padrão proprietário RAR, criado pelo russo Eugene Roshal (RAR = Roshal ARquive).
  • .XML Arquivo texto que contém dados estruturados usando XML (eXtended Markup Language).
  • .XSD Arquivo texto que contém uma regra de validação ou modelo de troca de dados em XML.
  • .DBF Arquivo de dados, normalmente nos formatos DBASE III e posteriores.
  • .CDX Arquivo de índice de dados, normalmente relacionado a dados em arquivo DBF.
  • .DTC Arquivo de dados no formato c-Tree, usados no AdvPL

Para mais extensões e seus usos mais comuns, consulte “https://pt.wikipedia.org/wiki/Extens%C3%B5es_de_ficheiros“.

Sistema de Arquivos e Diretórios (ou Pastas) no Windows

O sistema de arquivos do Windows herdou a estrutura organizacional e princípios do sistema de arquivos do MS-DOS. Cada unidade de disco instalada na máquina recebe uma letra maiúscula do alfabeto como identificador de unidade, seguido do símbolo “:” (dois pontos). As duas primeiras unidades de disco do computador, antes de existir disco rígido, eram as unidades “A” e “B”. Por isso que, até hoje, quando você abre o Prompt de Comando do sistema operacional no Windows, ou o Windows Explorer, a sua unidade de disco rígido é mostrada como “C:”, e as demais partições de disco e outras unidades (CD-ROM, Pen-Drive,etc) seguem em sequência.

A estrutura de arquivos do Windows é baseada em pastas — ou diretórios, como uma árvore. O primeiro diretório da árvore, ou “raiz”, e representado pela barra inversa “\”. A partir de qualquer diretório, você pode ter um ou mais arquivos, e um ou mais diretórios. Vamos entender que um diretório é um espaço nomeado dentro da estrutura que permite você guardar mais arquivos e outros diretórios. Dentro de qualquer pasta, você não pode ter mais de um arquivo ou pasta com o mesmo nome e extensão. Porém você pode ter arquivos com mesmo nome e extensão em pastas diferentes.

O Windows criou uma padronização, que apresentou pequenas mudanças ao longo das últimas 7 ou 8 versões, mas a base é a mesma. A partir da pasta Raiz da unidade de disco rígido (C:\) existe uma pasta chamada “Arquivos de Programas”, onde dentro dela existem pastas para as aplicações e programas instalados no equipamento, uma pasta “Usuários”, para registrar as informações de perfil e dados de aplicativos de cada usuário do equipamento, e a pasta “Windows”, que armazena um enorme grupo de outras pastas, que contém todos os programas, extensões, drivers e demais arquivos do Sistema Operacional.

Cada arquivo de cada pasta do computador pode ser endereçada ou identificada por um identificador de caminho completo (Full Path), composto pela unidade de disco, estrutura de pastas, e o nome do arquivo. Por exemplo, o arquivo nomeado “mstsc.exe” (Remote Desktop Connection Client), que fica na pasta “System32”, que fica na pasta “Windows” a partir do Drive “C:”, pode ser endereçado como “c:\Windows\System32\mstsc.exe”.

O sistema de arquivos de forma geral permite bem mais recursos e operações, e outras formas de endereçamento determinadas por cada sistema operacional. No Linux, por exemplo, o sistema de arquivos foi herdado dos sistema Unix, onde qualquer dispositivo pode ser endereçado como um arquivo. Não há “letras” de unidade de disco, existem “devices” nomeados, utilizando prefixos específicos para acessar cada tipo de dispositivo, e outros recursos como links dinâmicos para arquivos e pastas, que recentemente também foram implementados no Windows.

Dentro do arquivo

Mesmo que todos os arquivos do disco contenham “Bytes” dentro, arquivos que contenham por exemplo uma imagem ou fotografia, possuem uma regra de armazenamento e interpretação destes bytes. Por exemplo, vamos pegar um formato de imagem mais “antigo”, como o BITMAP (Ou Mapa de Bits), usado no Windows e no (extinto) OS\2.

Na Wikipedia, acesse o link “BMP file format” (https://en.wikipedia.org/wiki/BMP_file_format), veja a seção “File Structure“. Nela é descrito como é o formato de armazenamento interno de uma imagem em um arquivo BMP. O arquivo começa a ser lido do primeiro byte, e existem sequências de bytes de tamanho fixo que indicam informações de como os demais dados estão dispostos, e a partir de um determinado ponto, os blocos de bytes possuem tamanhos variáveis, de acordo com as definições anteriormente especificadas no arquivo. Um arquivo de dados em formato DBF possui uma estrutura similar, onde no início do arquivo os primeiros blocos de bytes identificam quais as informações que estão armazenadas no arquivo.

Nível de complexidade de operações com arquivo

Agora, imagine o quão complexo seria se você tivesse que saber como as informações estão dispostas dentro do arquivo para poder acessá-las? Sim, daria um valente trabalho…. cada arquivo possui uma estrutura interna, e um erro ao ler ou gravar um dado pode corromper a informação no arquivo.

PAra tornar este processo mais fácil, as linguagens de programação que trabalham nativamente acesso a dados oferecem mecanismos de mais “alto nivel”, onde através de funções ou classes, você aciona operações como “ler um registro”, “posicionar em um registro”, “inserir um novo registro”, “alterar os dados de um registro”. Outra abordagem muito utilizada é usar um segundo software, um SGBD (Sistema Gerenciador de Banco de Dados), usando SQL (Structured Query Language), através das quais você monta sentenças praticamente “literais” e solicita ao SGDB a operação desejada, como “SELECT * FROM SA1010 WHERE A1_ATIVO = ‘S’ ORDER BY A1_NREDUZ” (Selecione todos os registros da tabela SA1010 onde o campo (coluna) A1_ATIVO seja igual a letra ‘S’ maiúscula, com o resultado ordenado pelo campo A1_NREDUZ).

Se você precisa trabalhar com um tipo de arquivo que contém imagens, e quer aplicar na imagem um efeito, como mudança de brilho ou cor, você pode escrever uma API sua, abrir o arquivo em modo ‘binário’ (lendo diretamente seu conteúdo em bytes para a memória), entender como aquele mapa de bytes representa a imagem e suas cores, e aplicar o efeito desejado recalculando as definições de cores. Ou, você pode usar um componente pronto, uma biblioteca de funções fornecida com a linguagem ou uma biblioteca de terceiros (existem bibliotecas pagas e gratuitas, com código aberto (Open Source) e código fechado, para diversas linguagens de programação. Naturalmente, vai ser bem mais fácil e rápido usar uma biblioteca pronta. Basta você pesquisar se a escolha em foco atende todas as suas necessidades e não tem alguma restrição que inviabilize seu uso no cenário onde a mesma será aplicada.

Conclusão

A introdução está ficando “longa”, mas uma vez assimilada esta base comum de conhecimento, ela serve para tudo o que foi construído sobre ela, apenas existindo algumas características e comportamentos diferenciados para algumas plataformas ou sistemas, o resto é “farinha do mesmo saco”. Quem gosta de TI, Análise de Sistemas, Engenharia de Software, Programação e ciências correlatas, precisa ter sede e vontade de aprender, e de se manter atualizado, sempre. Mesmo após tornar-se um especialista, é preciso estar de olhos e ouvidos abertos para a evolução constante em torno da área como um todo.

Novamente, agradeço a todos pela audiência, e desejo a vocês TERABYTES de sucesso 😉

Até o próximo post, pessoal 😀

Referências

BYTE. In: WIKIPÉDIA, a enciclopédia livre. Flórida: Wikimedia Foundation, 2015. Disponível em: <https://pt.wikipedia.org/w/index.php?title=Byte&oldid=43771720>. Acesso em: 2 nov. 2015.

ASCII. In: WIKIPÉDIA, a enciclopédia livre. Flórida: Wikimedia Foundation, 2015. Disponível em: <https://pt.wikipedia.org/w/index.php?title=ASCII&oldid=43771464>. Acesso em: 2 nov. 2015.

Extended ASCII. (2015, April 1). In Wikipedia, The Free Encyclopedia. Retrieved 03:19, November 2, 2015, from https://en.wikipedia.org/w/index.php?title=Extended_ASCII&oldid=654535698

RAR (file format). (2015, October 30). In Wikipedia, The Free Encyclopedia. Retrieved 19:19, November 14, 2015, from https://en.wikipedia.org/w/index.php?title=RAR_(file_format)&oldid=688294797

General overview of the Linux file system. In The Linux Documentation Project. Retrieved 17:27, November 14, 2015, from http://www.tldp.org/LDP/intro-linux/html/sect_03_01.html

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s