Você está na página 1de 14

Introduo a Cincia da Computao 1

Introduo

1. Objetivos
Nesta seo, vamos discutir os componentes bsicos de um computador, tanto em relao a hardware como a software. Tambm veremos uma pequena introduo sobre linguagens de programao e sobre o ciclo de vida do desenvolvimento. Por fim, mostraremos os diferentes sistemas numricos e as converses entre eles. Ao final o aluno ser capaz de: Identificar os diferentes componentes de um computador. Conhecer as linguagens de programao e suas categorias. Entender o ciclo de vida de desenvolvimento de programas e aplic-lo na soluo de problemas. Conhecer os diferentes sistemas numricos e as converses entre eles.

2. Introduo
O computador uma mquina que realiza uma variedade de tarefas de acordo com instrues especficas. uma mquina de processamento de dados, que recebe dados atravs de um dispositivo de entrada e o processador os manipula de acordo com um programa. O computador tem dois componentes principais. O primeiro o Hardware que a parte palpvel (que se pode tocar) do computador. Ele composto de partes eletrnicas e mecnicas. O segundo componente principal o Software que a parte impalpvel (no se pode tocar) do computador. Ele composto de dados e dos programas de computador.

3. Componentes Bsicos de um Computador


3.1. Hardware 3.1.1. Unidade Central de Processamento (CPU - Central Processing Unit) O processador o crebro do computador. Ele possui milhes de partes eltricas muito pequenas. Ele faz as operaes fundamentais dentro do sistema. Alguns exemplos de processadores so o Pentium, Athlon e SPARC.

Figura 1: Processador de um PC 3.1.2. Memria A memria, onde se encontram os dados e as instrues que a CPU precisa para realizar suas tarefas, dividida em diversos locais de armazenamento que possuem seus respectivos endereos lgicos. A CPU acessa a memria pelo uso destes endereos. 1. Memria Principal A memria principal, s vezes, chamada de RAM (Random Access Memory ou Memria de Acesso Randmico) est fortemente ligada ao processador. Ela utilizada para armazenar programas e dados, com os quais o processador est trabalhando no momento e no utilizada para armazenamento de longo prazo, por este motivo seu armazenamento considerado voltil. Isto significa que assim que o computador desligado, toda a informao armazenada na memria principal ser perdida.

Figura 2: Pente de memria 2. A Memria Secundria A memria secundria est ligada memria principal. Ela usada para armazenar programas e dados para uso de longo prazo. Exemplos de memria secundria so discos rgidos e cdrom.

Figura 3: Interior de um Disco rgido do computador

A memria secundria considerada um tipo de armazenamento no-voltil. Isto significa que as informaes nela armazenadas no sero perdidas aps o

computador ser desligado. Tabela 1: Comparao entre a memria principal e a memria secundria 3.1.3. Dispositivos de Entrada e Sada Os dispositivos de entrada e sada permitem que o computador interaja com o mundo exterior pela movimentao de dados para dentro e para fora do sistema. Exemplos de dispositivos de entradas so teclados, mouses, microfones, etc. Exemplos de dispositivos de sada so monitores, impressoras, alto-falantes, etc. 3.2. Software O software um programa que o computador usa para funcionar. Ele armazenado em algum dispositivo de hardware como um disco rgido, mas em si mesmo intangvel. Os dados que o computador usa podem ser qualquer coisa que o programa precise. Os programas agem como instrues para o processador. Alguns tipos de programas de computador: 1. Programas de Sistemas Programas necessrios para que o hardware e o software funcionem juntos corretamente. Exemplos: Sistemas Operacionais como Linux, Windows, Unix, Solaris, MacOS 2. Aplicativos Programas que as pessoas usam para realizar determinado trabalho. Exemplos: Processadores de Textos, Jogos, Planilhas Eletrnicas

3. Compiladores O computador entende apenas uma linguagem: linguagem de mquina. Linguagem de mquina est na forma de zeros e uns. J que totalmente impraticvel

para as pessoas criarem programas usando zeros e uns, preciso haver uma maneira de traduzir ou converter a linguagem que entendemos em linguagem de mquina, para isto, existem os compiladores. 4. Viso Geral sobre Linguagens de Programao 4.1. O que uma linguagem de programao? Uma linguagem de programao uma tcnica de comunicao padronizada para se expressar instrues para um computador. Assim como os idiomas utilizados pelos seres humanos, cada linguagem tem sua prpria sintaxe e gramtica. Linguagens de programao possibilitam ao programador especificar precisamente com quais dados o computador ir interagir, como estes dados sero gravados/transmitidos, e precisamente quais aes sero tomadas de acordo com as circunstncias. Existem diferentes tipos de linguagens de programao que podem ser usadas para a criao de programas, mas, independente da linguagem utilizada, essas instrues so traduzidas em linguagem de mquina, e podem ser entendidas por computadores. 4.2. Categorias das Linguagens de Programao 1. Linguagens de Programao de Alto Nvel Uma linguagem de programao de alto nvel uma linguagem de programao que mais amigvel para o usurio, em alguns casos independente de plataforma, e que abstrai operaes de baixo nvel como acesso a memria. Uma instruo de programao pode ser traduzida em uma ou vrias instrues de mquina por um compilador. Exemplos so Java, C, C++, Basic, Fortran 2. Linguagens de Montagem de Baixo Nvel Linguagens de montagem so similares s linguagens de mquina, so mais simples de programar pois possuem poucos comandos e permitem ao programador substituir nomes por nmeros. Linguagens de montagem esto disponveis em cada famlia de CPU, e cada instruo de montagem traduzida em uma instruo de mquina por um programa montador. Nota: Os termos "alto nvel" e "baixo nvel" so relativos. Originalmente, linguagens de montagem eram consideradas de baixo nvel e COBOL, C, etc. eram consideradas de alto nvel. Muitos programadores, hoje em dia, podem se referir a estas ltimas como linguagens de baixo nvel.

5. O Ciclo de Vida de Desenvolvimento de Programas Programadores no sentam e simplesmente comeam a escrever cdigo de uma vez, quando esto tentando fazer um programa de computador. Ao invs disto, eles

seguem um planejamento organizado ou metodologia, que quebra o processo em uma srie de tarefas.

Este o ciclo de vida quando se tenta resolver um problema no computador:

Figura 4: Ciclo de vida para a resoluo de problemas

Para entendermos o funcionamento deste ciclo na soluo de problemas no computador, vamos definir um problema exemplo que iremos resolver passo a passo enquanto discutimos as metodologias para resoluo de problemas em detalhe. 5.1. Definir o problema Geralmente, um programador recebe uma tarefa na forma de um problema. Antes do programa poder ser projetado para resolver um problema em particular, o problema deve, em primeiro lugar, ser bem e claramente definido em termos dos seus requisitos de entrada e sada. Um problema claramente definido j metade da soluo. Programao de computadores requer que o problema seja primeiro definido antes de se pensar em criar a soluo. Vamos definir o problema exemplo: Crie um programa que ir determinar o nmero de vezes que um nome aparece em uma lista. 5.2. Analisar o problema Depois do problema ter sido definido adequadamente, o mais simples e tambm o mais eficiente e efetivo meio de se resolver ser visualiz-lo atravs de uma representao clara e objetiva. Geralmente, este passo se d com a quebra do problema em sub-problemas menores e mais simples. Problema Exemplo: Determinar o nmero de vezes que um nome aparece em uma lista

Entrada para o programa: Lista de nomes, nome que se deseja procurar Sada do programa: O nmero de vezes que o nome aparece em uma lista 5.3. Projetar e representar o algoritmo Logo que o problema estiver sido claramente definido, podemos nos concentrar em desenvolver a soluo. Na programao de computadores, geralmente requirido que expressemos a soluo passo a passo. Um Algoritmo uma especificao clara e no ambgua dos passos necessrios para se resolver o problema. Ele pode ser expresso tanto em linguagem humana (Ingls, Tagalog e Portugus), como atravs de representao grfica como fluxograma ou atravs de pseudocdigo, que um meio termo entre a linguagem humana e a linguagem de programao. Dado o problema definido na seo anterior, como podemos expressar a soluo de uma maneira simples e que possa ser entendida? Expressando a soluo atravs da linguagem humana: 1. Obter a lista de nomes, vamos cham-la de NomeLista 2. Obter o nome a ser procurado, vamos cham-lo de NomeChave 3. Criar um contador, vamos cham-lo de Conta 4. Pegar cada nome em NomeLista 5. Se NomeChave for igual ao nome selecionado em NomeLista 6. Adicionar 1 a Conta 7. Repetir at que todos os nomes j tiverem sido comparados 8. Exibir o valor de Conta Expressando a soluo atravs de um fluxograma:

Expressando a soluo atravs de pseudocdigo: 5.3.1. Smbolos do Fluxograma e o seu significado Um fluxograma uma ferramenta de projeto usada para representar graficamente a lgica de uma soluo. Os fluxogramas, tipicamente, no mostram comandos de linguagem de programao. Ao invs disto, eles mostram o conceito em Portugus ou em notao matemtica.

Aqui esto algumas dicas dos smbolos mais usados para a criao de fluxogramas. Pode-se utilizar quaisquer smbolos quando criar os seus fluxogramas, desde que use-os de maneira consistente.

5.4. Codificar e Depurar Depois de construir o algoritmo, ser possvel criar o cdigo fonte. Usando o algoritmo como base, o cdigo fonte pode ser escrito usando a linguagem de programao escolhida. Na maioria das vezes, depois do programador ter escrito o programa, este poder no estar funcionando 100% no incio. O programador deve corrigir o programa no caso de erros (tambm conhecidos como Erros de Compilao) que ocorrem no programa. Este processo chamado de depurao de erros (debug). Existem dois tipos de erros que os programadores podero encontrar. O primeiro o erro em tempo de compilao e o outro o erro em tempo de execuo. Erro em tempo de compilao ocorre se h um erro de sintaxe no cdigo. O compilador ir detectar o erro e o programa nem mesmo compilar. Neste ponto, o programador estar inapto a criar um executvel que possa ser executado pelo usurio at que o erro seja corrigido. Esquecer um ponto-e-vrgula no final de uma instruo ou escrever um comando erroneamente, por exemplo, so erros em tempo de compilao. algo que o compilador pode detectar como sendo um erro. Compiladores no so perfeitos e ento no podem detectar todos os erros em tempo de compilao. Isso especialmente verdadeiro para erros de lgica como as repeties (loops) infinitos. Este tipo de erro chamado de erro em tempo de execuo. Por exemplo, a sintaxe do cdigo pode estar correta. Entretanto, ao seguir a lgica do cdigo, o mesmo pedao de instruo executado vrias e vrias vezes, infinitamente. Neste caso, os compiladores no so espertos o suficiente para pegar todos estes tipos de erro em tempo de compilao, consequentemente, o programa compila corretamente em um arquivo executvel. Entretanto, quando o usurio final roda o programa, o programa (ou mesmo o computador inteiro) congela devido a uma repetio infinita. Outros tipos de erro em tempo de execuo so: um valor errado a ser computado, uma instruo errada a ser executada, etc. 6. Sistemas Numricos e Converses Nmeros podem ser representados de vrias maneiras. A representao depende do que chamado de BASE. As que seguem so quatro das representaes mais comuns.

6.1. Decimal Normalmente representamos os nmeros na forma decimal. Nmeros na forma decimal esto na base 10. Isto significa que os nicos dgitos que aparecem so 0-9. Aqui esto alguns exemplos de nmeros escritos na forma decimal: 12610 (normalmente escrito somente como 126) 11 10 (normalmente escrito somente como 11) 6.2. Binrio Nmeros na forma binria esto na base 2. Isto significa que os nicos dgitos aceitos so 0 e 1. Precisamos escrever a subscrio 2 para indicar que o nmero um nmero binrio. Aqui esto alguns exemplos de nmeros escritos na forma binria: 11111102 1011 2 6.3. Octal Nmeros na forma octal esto na base 8. Isto significa que os nicos dgitos aceitos so 0-7. Precisamos escrever a subscrio 8 para indicar que o nmero um nmero octal. Aqui esto alguns exemplos de nmeros escritos na forma octal: 1768 13 8 6.4. Hexadecimal Nmeros na forma hexadecimal esto na base 16. Isto significa que os nicos dgitos aceitos so 0-9 e as letras A-F (ou a-f, minsculas ou maisculas no importam). Precisamos escrever a subscrio 16 para indicar que o nmero um nmero hexadecimal. Aqui esto alguns exemplos de nmeros escritos na forma hexadecimal: 7E16 B16

6.5. Converses 6.5.1. Decimal para Binrio / Binrio para Decimal Para converter um nmero decimal em binrio, deve-se dividir continuamente este nmero por 2 e separar o resto (que ser ou 0 ou 1), considerando-o como um dgito da forma binria do nmero. Obter o quociente e dividir novamente por 2, repetir o processo at que o quociente atinja 0 ou 1. Ao trmino, agrupar todos os restos comeando pelo ltimo resto. O resultado a forma binria do nmero. NOTA: O ltimo dgito menor que o divisor (2) ser o primeiro nmero do resultado.

Ento, escrevendo os restos de baixo para cima, obtemos o nmero binrio 11111102. Para converter um nmero binrio para decimal, multiplicar o dgito binrio por 2 elevado a posio deste nmero binrio. Adicionar todos os produtos para obter o nmero decimal resultante. Por Exemplo:

6.5.2. Decimal Para Octal (ou Hexadecimal)/Octal (ou Hexadecimal) para Decimal Converter nmeros decimais para octal ou hexadecimal basicamente o mesmo que converter decimal para binrio. Entretanto, ao invs de utilizar o 2 como divisor, substitu-lo por 8 (para octal) ou 16 (para hexadecimal).

Por Exemplo (Octal):

Ento, escrevendo os restos de baixo para cima, obtemos o nmero octal 176 8. Por Exemplo (Hexadecimal):

Ento, escrevendo os restos de baixo para cima, obtemos o nmero hexadecimal 7E16 Converter nmeros octais ou hexadecimais um processo semelhante a converter nmeros de binrios para decimal. Para fazer isto, substitumos o nmero 2 pelo 8 para octal ou pelo 16 para hexadecimal. Por Exemplo (Octal):

Por Exemplo (Hexadecimal):

6.5.3. Binrio para Octal / Octal para Binrio Para conveter nmeros binrios para octal, partimos o nmero binrio em grupos de 3 dgitos (da direita para esquerda), e o preenchemos com zeros se o nmero de dgitos no for divisvel por 3. Ento, convertemos cada partio em seu correspondete dgito octal. A tabela abaixo mostra a representao binria de cada dgito octal.

Por Exemplo:

Converter nmeros octais para binrio o oposto do que foi explicado acima. Simplesmente converta cada dgito octal na sua representao binria (conforme a tabela) e concatene-os. O resultado a representao binria. Binrio para Hexadecimal / Hexadecimal para Binrio Para converter nmeros binrios para hexadecimal, partimos o nmero binrio em grupos de 4 dgitos (da direita para a esquerda), e o preenchemos com zero se o nmero de dgitos no for divisvel por 4. Ento convertemos cada partio em seu dgito hexadecimal correspondente. A tabela abaixo mostra a representao binria de cada dgito hexadecimal.

Por Exemplo:

Converter nmeros hexadecimais para binrio o oposto do que foi explicado acima. Simplesmente converta cada dgito hexadecimal na sua representao binria (conforme a tabela) e concatene-os. O resultado a representao binria. 7. Exerccios 7.1. Escrevendo Algoritmos Dado o seguinte conjunto de tarefas, crie um algoritmo para realizar cada uma das tarefas abaixo. Escreva os algoritmos usando pseudocdigo ou fluxogramas. 1. Assar po 2. Acessar o computador 3. Obter a mdia de trs nmeros 7.2. Converso de Nmeros Converta os nmeros abaixo: 1. 198010 para binrio, hexadecimal e octal 2. 10010011012 para decimal, hexadecimal e octal 3. 768 para binrio, hexadecimal e decimal 4. 43F16 para binrio, decimal e octal

Você também pode gostar