Capítulo 1

Share

1 – Introdução à Ciência da computação

Ciência da Computação é o estudo dos algoritmos e suas aplicações.
Inclui o estudo de estruturas matemáticas para formulação e aplicação dos algoritmos.

Computador é todo dispositivo capaz de manipular ou processar dados. Estes dispositivos podem não ser necessariamente computadores eletrônicos como estamos acostumados.

Dado é uma representação simbólica quantificada. Dessa forma, um texto é um dado, pois cada letra pode ser representada por um número. Uma foto também é um dado, pois a cor de cada ponto (pixel) também pode ser representado como um número.

Um dado se torna informação quando seu receptor consegue compreender o seu conteúdo. Então, temos que Informação é um dado associado a um significado.

Pela nossa definição de computador podemos entender então que um computador lida somente com dados e não informação. Ele realiza operações sobre os dados sem se importar com seu significado.

1.1 – Histórico

O ábaco pode ser considerado como a forma mais antiga de computador. Sua invenção e uso datam de 2400 a.C., porém, até hoje são utilizados para cálculos matemáticos.

Os primeiros livros indianos que descreviam o sistema de numeração hindu-arábico escritos entre os séculos VII apresentavam novos conceitos para definir seqüências de passos para completar tarefas específicas de álgebra e aritmética. Em sua versão Ocidental estas seqüências de passos passaram a
ser conhecidos pelo termo algoritmo.

O sistema de numeração binário foi desenvolvido por Pingala (século III a.C.) e foi usado por Leibniz em 1703 para descrever a lógica em um sentido formal e matemático. Em 1854, George Boole desenvolveu a álgebra booleana permitindo a construção de modelos matemáticos utilizando apenas o sistema binário.

Charles Babbage (1792-1871) concebeu o Engenho Analítico. Um dispositivo onde seria possível entrar com dados e instruções via cartões perfurados. Então realizaria operações, armazenaria dados em registradores próprios e apresentaria
resultados impressos. Ou seja, o primeiro computador programável. Babbage é considerado o precursor do computador e uma máquina que realmente implementava todas as funcionalidade só foi construída mais de um século depois. Babbage contou com a ajuda da matemática Ada Lovelace que desenvolveu as primeiras rotinas e estruturas para o dispositivo, sendo considerada como a precursora do software.

No início das aplicações em computador, a o foco era desenvolver hardware cada vez mais barato e mais poderoso. O Software era tido com um trabalho secundário. Aplicações eram desenvolvidas pelas próprias empresas e havia baixa rotatividade no cargos. Quando os custos para manutenção se tornaram superiores aos custos de desenvolvimento, tornou-se claro que o desenvolvimento de técnicas e métodos para melhorar a qualidade e reduzir os custos.

1.2 – Sistema de Numeração

Um sistema de numeração é um conjunto de símbolos e convenções para se representar quantidades. Um número pode ser representado por diversos métodos diferentes como por exemplo o sistema de numeração egípcio ou romano.

Um tipo especial de sistemas de numeração onde é fácil realizar operações são os sistemas numéricos posicionais. Onde o valor de cada algarismo varia com sua posição. Este é o sistema com o qual estamos acostumados.

Um sistema de numeração posicional é composto por uma base que indica quantos dígitos estão disponíveis para representação de um número, incluído o zero.

Sistema Decimal

Neste sistema usamos nove símbolos mais o zero para representar os números. Então dizemos que sua Base é o número 10. Cada posição indica uma potência de 10. Por exemplo, os números 7, 14 e 123 são representados da seguinte forma na base 10:

  7 =                 7*100 →   (7)10
 25 =         2*101 + 5*100 →  (25)10
123 = 1*102 + 2*101 + 3*100 → (123)10

Sistema Binário

Este sistema usa apenas dois símbolos para representar os números: o 0 e o 1. Portanto, sua Base é o número 2. Vejamos a representação exemplo, os números 123, 456 e 1038 são representados da seguinte forma na base 2:

  7 =                             1*22 + 1*21 + 1*20 →     (111)2
 25 =               1*25 + 1*23 + 0*22 + 0*21 + 1*20 →   (11001)2
123 = 1*26 + 1*25 + 1*24 + 1*23 + 0*22 + 1*21 + 1*20 → (1111011)2


7 |2      25 |2       123 |2
1 3 |2     1 12 |2      1 61 |2
  1 1         0 6 |2       1 30 |2
                0 3 |2        0 15 |2
                  1 1            1 7 |2
                                   1 3 |2
                                     1 1

Em 1854 o Matemático Inglês George Boole lança os princípios do que chamamos de Álgebra de Boole, onde as variáveis assumem apenas dois valores, 0 ou 1.

Operações básicas

A soma de números binários pode ser feita utilizando-se a regra do “vai um”.
Assim podemos dar como exemplos:

  0	  1	   1	  (13)10  1101	  (123)10   1111011
+ 0	+ 0	+  1	+ (09)10  1001	+ (097)10   1100001
  0	  1	  10	  (22)10 10110	  (220)10  11011100

A subtração pode ser realizada fazendo o complemento A-B=A+(-B). O número negativo é representado trocando-se os 1 por 0, os 0 por 1 e somando 1 ao resultado. Assim:

  (13)10  1101	  (123)10   1111011
- (09)10  0111	- (097)10   1100001
  (04)10 10100	  (220)10   0011010

Sistema Octal

Neste sistema usamos sete símbolos mais o zero para representar os números. Então dizemos que sua Base é o número 8. Cada posição indica uma potência de 8. Por exemplo, os números 7, 14 e 123 são representados da seguinte forma na base 8:

  7 =                 7*80 →   (7)8
 25 =          3*81 + 1*80 →  (31)8
123 =   1*82 + 7*81 + 3*80 → (173)8


7 |8     25 |8     123 |8       1   7   3
7 0       1 3        3 15 |8   001 111 011
                        7 1    001111011b = 123d

Muito usado em permissões de arquivos no sistemas UNIX.

Sistema Hexadecimal

Neste sistema usamos quinze símbolos(1 ao 9 e do A ao F) mais o zero para representar os números. Então dizemos que sua Base é o número 16. Cada posição indica uma potência de 16. Por exemplo, os números 7, 14 e 123 são representados da seguinte forma na base 16:

  7 =                 7*160 →   (7)16
 25 =         1*161 + 9*160 →  (19)16
123 =         7*161 + B*160 → (7B)16


7 |16    25 |16     123 |16       7 B            2748 |16
7 0       9 1        11 7      0111 1011           12 171 |16
                               01111011b = 123d        11 10

Muito usado para endereçamento de memória e hardware.

1.3 – Arquitetura de computadores

Um computador é formado por diversas dispositivos componentes que em conjunto realizam as operações desejadas. Apresentaremos brevemente uma estrutura básica de cada um.

1.3.1 – Processadores

Os processadores são conhecidos como CPU (Central Processing Unit) ou UCP (Unidade Central de Processamento). São circuitos integrados programáveis responsáveis por realizar as operações utilizando os periféricos instalados.

Os microprocessadores executam operações a uma certa freqüência, que usualmente chamamos de Clock. O clock de um processador é expresso em MegaHertz (MHz) ou em GigaHertz (GHz), ou seja, opera a milhões ou bilhões de vezes por segundo.

A Motherboard (Placa-mãe) é o componente do computador que realiza a interconexão dos componentes do computador. Ela possui sua própria freqüência de trabalho e barramentos específicos para conectar periféricos (PCI, AGP, PCI-Express). Muitas placas mãe possuem alguns periféricos já integrados aos seus circuitos como modems, placas de rede e de som onboard.

A BIOS (Basic Input Output System) é um circuito integrado pré-programado para realizara carga do sistema operacional e fazer as configurações iniciais de operação do hardware.

A Memória RAM (Random Access Memory) é utilizada para carregar e executar programas. Possui capacidade de velocidade de operação máxima.

1.3.2 – Periféricos

Periféricos são os dispositivos que auxiliam o processador a operar ou servem de interface. Costumam ser classificados quanto à sua função básica. Assim teríamos como periféricos de saída monitores, impressoras, plotters, placa de som+auto falantes, etc. Como periféricos de entrada teríamos, mouse, teclado e microfone. Periféricos de comunicação como placas de redes, modems e dispositivos bluetooth possibilitam que o computador troque dados com outros dispositivos externos (inclusive outros computadores). Como periféricos de armazenamento e leitura de dados podemos citar o disco rígido, gravadores de CD/DVD ou memórias portáteis como pendrives.

Porém, este tipo de classificação atualmente está em cada vez mais em desuso pois a cada dia os periféricos se tornam mais complexos para cumprir suas funções e podemos acompanhar teclados que apresentam informações para os usuários, monitores touch-screen e joystick com force-feedback.

1.4 – Armazenamento de números e codificações

Cada algarismo binário é chamado de bit, que é uma contração de binary digit. Se juntarmos vários bits, poderemos representar mais números, e a cada conjunto desses damos o nome de palavra binária. As palavras binárias recebem nomes especiais de acordo com seu tamanho:

Tamanho
da palavra
Nome Variações
1 Bit 21 = 2
4 Nibble 24 = 16
8 Byte 28 = 256
16 Word 216 = 65.536

Freqüentemente iremos trabalhar com um grande conjunto de dados, um grande conjunto palavras binárias e é necessário definirmos alguns prefixos. No sistema binário temos os seguintes prefixos:

Prefixo Quantidade
Kilo (K) 210 = 1024
Mega (M) 220 = 1048576
Giga (G) 230 = 1073741824
Tera (T) 240 = 1099511627776

Atenção: os prefixos para base 10 e da base 2 são diferentes! Tome cuidado ao fazer arredondamentos, 65.536 representa 64K e não 65K!

Usa-se também “b” para bit e “B” para byte. Então 1Kb equivale a 1.024 bits e 1KB equivale a 1.024 bytes ou 8.192 bits.

Os discos rígidos são os periféricos utilizados para armazenar grandes quantidades de dados. Para se trabalhar em um disco rígido devemos formatá-lo com um sistema de arquivos que nosso sistema operacional trabalhe. Podemos dividir um disco rígido em discos lógicos menores e atribuir a cada uma desses um sistema de arquivos diferentes.

Os sistemas de arquivos mais comuns são:

FAT/FAT16
Limite de 2GB e nomes de arquivos com 8 letras e extensões com 3 letras. Utilizado no MS-DOS/Windows 95.
FAT32
Limite de 2TB e nomes de arquivos com 255 letras. Utilizado no Windows 98/ME.
NTFS
Controle de acesso a disco: permissões. Utilizado no Windows NT/XP/Vista.
EXT/ReiserFS/XFS
Sistemas de arquivos utilizados no Linux.

1.5 – Ambiente de Programação

1.5.1 – Sistemas operacionais

Um sistema operacional é um conjunto de programas responsável por fazer a interface entre o hardware e o usuário ou aplicações. É de responsabilidade do SO controlar quais aplicações podem ser executadas, quando quais recursos de hardware podem ser utilizados.

1.5.2 – Linguagem de programação

Um programa de computador é uma seqüência de operações descritas em uma liguagem de programação. Uma linguagem de programação define quais operações e estruturas podem ser utilizadas para se obter um certo resultado. Estas são classificadas em liguagens de alto nível de abstração (não possuem relação com o código de máquina) ou baixo nível (forte relação com o código de máquina) e com o paradigma que implementam: lote, estruturadas, orientadas a objetos.

1.5.3 – Compiladores e interpretadores

Para que nosso programa escrito em uma liguagem de de programação seja executado em um computador, ele precisa ser convertido em linguagem de máquina. Isto pode ser feito com o auxílio de um compilador ou de um interpretador.

Um compilador usa o código fonte escrito na liguagem de programação e gera um código objeto intermediário. A este código objeto são adicionadas bibliotecas em um processo de linkedição, gerando o código de máquina para a arquitetura que está sendo executado.

Um interpretador se comunica diretamente com o sistema operacional, interpretando cada operação descrita no código fonte e a converte em uma instrução para o SO.

1.5.4 – Sistemas aplicativos

Os sistemas aplicativos são softwares construídos para uma única função. Entre uma infinidade de tipos podemos destacar ser planilhas eletrônicas para cálculos, processadores de texto, bancos de dados, aplicativos multimídia, ambientes de programação.

1.5.5 – Editor de Textos

Um editor de textos é um aplicativo reposável por gerar arquivos em texto puro. Um processador de texto gera um texto repleto de formatações como negrito, itálico, etc. Para desenvolvermos o código fonte de nosso programa precisamos de um editor de texto.

1.5.6 – IDE(Integrated Development Environoment)

É um aplicativo que torna o ato de desenvolver programas mais agradável para o programador, integrando o editor de textos, o compilador e o linkeditor. Além de possuir recursos como gerenciamento de projetos e depurador.

Share

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

*