Você está na página 1de 13

Capítulo 1 Introdução aos sistemas

computacionais
O objetivo deste capítulo é apresentar a organização básica dos computadores e como
estes podem ser programados para resolver problemas.

Tópicos abordados:
❏ conceito de sistemas computacionais
❏ organização de computadores
❏ armazenamento de dados em computadores
❏ algoritmos e formas de representação
❏ programa e linguagem de programação

Espera-se que ao final deste capítulo o estudante tenha aprendido como são organizados
os computadores, como os dados são lidos, armazenados e processados. Sejam também
capazes de elaborar algoritmos que possam ser implementados em uma linguagem de
programação e executados em um computador.

1. Introdução

O avanço da tecnologia permitiu a disseminação de dispositivos eletrônicos. Os


computadores pessoais, notebooks, tablets auxiliam no trabalho e nas residências. Hoje em
dia, os dispositivos digitais estão presentes em todo lugar. São smartphones com funções
de comunicação por texto, voz e vídeo, despertador, com acesso a Internet, sensores e
muitas outras funcionalidades.
As casas inteligentes estão equipadas com dispositivos inteligentes capazes de ligar a luz
apenas com a presença de uma pessoa, ligar ar condicionado de forma programada,
geração de energia fotovoltaica controlada remotamente, câmeras de monitoramento
remoto, entre outros.
O acesso à Internet permitiu que as pessoas pudessem trabalhar remotamente, em suas
casas, realizar reuniões, compartilhar arquivos, jogar em grupo, investir na bolsa de valores,
participar de redes sociais e realizar muitas outras atividades.
Mas como são programados todos esses dispositivos para deixar tudo acessível para o
usuário? Para explicar como os primeiros computadores começaram a ser programados é
preciso entender a definição de sistema computacional.

Um sistema computacional é formado por um conjunto de componentes elétricos e


eletrônicos basicamente composto por Unidade Central de Processamento (CPU), memória
e dispositivos de entrada e saída que são programados para resolver problemas. Estes
sistemas são utilizados para auxiliar a realização de tarefas pelos seres humanos, para que
sejam realizadas mais fácil e rapidamente. Esses componentes podem estar presentes
desde de dispositivos muito pequenos, como sensores programados, até dispositivos
maiores, como supercomputadores.
Figura 1 . Sistemas computacionais e percentual de uso nos domicílios

A Figura 1 ilustra os sistemas computacionais mais utilizados: desktops, notebooks, tablets


e smartphones, apresentado pela pesquisa de Tic Domicílios (TicDomicílios, 2019). Além
disso, em 71% dos domicílios brasileiros a Internet já estava presente em computadores
pessoais, notebooks, tablets, smartphones, smartbands (pulseiras inteligentes), consoles de
videogame, entre outros. Eles estão presentes em todos os setores da sociedade:
educação, indústria, agropecuária, mineração, logística, saúde, etc.

Para que os sistemas computacionais funcionem e exibam para o usuário informação útil é
necessário que estes sejam programados adequadamente, utilizando uma forma de
comunicação que as máquinas entendam. Desta forma, se houver uma compreensão de
como um computador funciona e é programado será possível entender como outros
sistemas computacionais também funcionam.

Para pesquisar: pesquise como os sistemas computacionais podem ser utilizados na


pecuária, na agricultura de precisão e na saúde.

2. Organização de computadores

A arquitetura básica dos computadores é composta por memória, Unidade Central de


Processamento e dispositivos de entrada e saída, como ilustrado na Figura 2.
Figura 2 - Arquitetura básica de um computador.

Nos computadores atuais, há diferentes tipos de memória para armazenar


informação, como RAM (Random Access Memory), cache, registradores e disco rígido.
A Unidade Central de Processamento é o componente processador, que pode ter
vários núcleos de processamento e realiza a execução de operações aritméticas e lógicas,
transformando dados de entrada em dados de saída.
Os dispositivos de entrada são responsáveis por captar dados do meio externo e
transferi-los à memória do computador. Os dispositivos de saída transferem dados
gravados na memória para um meio externo ao computador. Os dispositivos de entrada e
saída podem ser teclado, mouse, monitor, impressora, pendrive, etc. Na placa mãe
localizam-se os circuitos onde são conectados outros componentes, como o processador,
os pentes de memória, a placa de vídeo, a placa de rede, entre outros.

3. Armazenamento de dados em computadores

Os seres humanos se comunicam através de algum idioma que é aprendido ao longo da


vida: inglês, português, alemão, mandarim, japonês, etc. Mas a necessidade de representar
quantidades proporcionou o surgimento dos sistemas numéricos.
Os sistemas numéricos são sistemas de notação usados para representar
quantidades abstratas denominadas números. Um número é formado por uma sequência de
símbolos. A quantidade de símbolos é convencionada de acordo com a realidade de quem
a criou.
A representação de números mais utilizada no dia a dia das pessoas é com 10
símbolos (dígitos): 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9. Provavelmente, essa representação surgiu
devido ao fato de cada mão do ser humano possuir dez dedos. A palavra dígito vem do
latim e quer dizer dedo. Como são 10 símbolos diferentes que podem compor o número,
diz-se que a base é 10. A combinação desses símbolos com uma notação posicional
permite que os números assumam um valor. Convencionou-se que os símbolos são
adicionados da direita para a esquerda. Assim, um algarismo à esquerda vale dez vezes
mais que seu vizinho à direita. Por exemplo, 316 tem 3 centenas,, 1 dezena e 6 unidades,
formando o número 316. Outra forma de representar usando a base 10 é 316 = 3*102 +
1*101 + 6*100, indicando que 6 está na posição 0, 1 está na posição 1 e 3 está na posição
2.
Generalizando essa representação para qualquer base, tem-se que a fórmula geral
de conversão de um número em qualquer base para a base decimal, considerando-se que
d é um dígito, b é uma base na posição i={0,...,i-1} tem-se:

n = di-1*bi-1 + di-2*bi-2 + ... + d1*b1 + d0*b0

Existem outros sistemas de numeração que ainda são usados. O sistema romano
tem os símbolos I, II, III, IV, V, VI, VII, VIII, X, C. O sistema duodecimal é utilizado, por
exemplo, em dúzia e horas. O sistema de base 60 é usado para tempo: segundos e
minutos.
Todos os sistemas de numeração surgiram para facilitar a contagem de coisas
realizadas pelo ser humano. Mas como colocar uma base numérica dentro de uma máquina
eletrônica para permitir que ela faça cálculos?

Uma máquina eletrônica reconhece somente dois estados: ligado e desligado.


Portanto, uma base com símbolos que representam estes dois estados é mais adequada
para uma máquina. Desta forma, foi convencionado que os símbolos 0 para desligado e 1
para ligado fossem utilizados nas máquinas computacionais. A base é denominada binária.
Por exemplo, a representação do número 410 é 1002.
Um dígito binário é denominado bit. A combinação dos dígitos e a notação
posicional permitem a representação de números maiores. Um bloco de 8 bits forma um
byte.
Porém, a representação com bits pode gerar erros ao representar um número
grande. Se faltar um dígito a representação do número ficará incorreta. Para facilitar a
visualização dos números, uma possibilidade é agrupar os dígitos em grupos de 3 ou 4. Um
grupo de 3 bits é denominado octal e permite representar números de 0 a 7 (000, 001, 010,
011, 100, 101, 111). Para facilitar a representação de números para o ser humano, foi criada
a base octal (base 8), permitindo a representação dos números usando os símbolos 0, 1, 2,
3, 4, 5, 6 e 7. Por exemplo, 271048.
Considerando o grupo de 4 bits é possível representar valores de 0 a 15 (0000,
0001, 0010, 0011, 0100, 0101, 0111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111). Para
facilitar a representação para o ser humano convencionou-se a base hexadecimal com 16
símbolos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Por exemplo, C34F16.

Conversão de Bases
A conversão da base 10 para qualquer base envolve a divisão sucessiva
do número na base 10 pela base para a qual o número será convertido, até
obter um quociente menor do que a base solicitada. Em seguida, o número
convertido será composto pelos restos obtidos nas divisões sucessivas,
começando do último resto para o primeiro. Por exemplo, converter o
número 27 para binário e hexadecimal.
A conversão de qualquer base para a base 10 é dada por n = di-1*bi-1 + di-2*bi-2 +
... + d1*b1 + d0*b0
Portanto, converter (10101111)2 para a base 10 consiste em:
n= 1*27 + 0*26 + 1*25 + 0*24 + 1*23 + 1*22 + 1*21 + 1*20 = 175

Já a conversão de (BCD12)16 para a base 10 consiste em:


n=11*164 + 12*163 + 13*162 + 1*161 + 2*160 = 773.394

Em um computador, os dígitos binários não representam apenas números. Letras


comuns do alfabeto e outros símbolos como pular para próxima linha, @, $, entre outros,
devem ter sua representação em binário. Uma tabela de conversão muito adotada nos
primeiros computadores pessoais foi a tabela ASCII (sigla em inglês para American
Standard Code for Information Interchange), para o idioma inglês. No código ASCII, os bits
dentro do bytes são organizados da direita para a esquerda e numerados de 1 a 7. Os 4
primeiros bits formam a parte numérica do byte e os 4 restantes formam a zona de
configuração. Por exemplo, o caractere A na tabela ASCII é 01000001 em binário, 41 em
hexadecimal e 65 em decimal.

CURIOSIDADE:

Os números decimais de 0 a 127 na Tabela ASCII,a seguir, são representados


respectivamente em hexadecimal e caracteres. Note que para os valores decimais de 0 a
31 não há um char correspondente.
Fonte: Ascii table and Description. Disponível em: https://www.asciitable.com. Acesso em:
maio/2021.
Existe uma extensão da tabela ASCII até o decimal 255 para contemplar caracteres
especiais como ç, vogais acentuadas, letras gregas, entre outros.

Os sistemas computacionais evoluíram e começaram a ser utilizados em países


falantes de outros idiomas para resolver os mais diversos problemas. Surgiu então a
necessidade de haver um padrão com mais caracteres, inclusive os caracteres acentuados.
A indústria de computação adotou a codificação Unicode por permitir a codificação
abrangendo diversos idiomas e símbolos.
Uma das formas de programação dos primeiros computadores eletrônicos foi
através da linguagem de máquina usando o sistema binário. Assim como os seres humanos
são diferentes, existem computadores que possuem hardware diferente e precisam de uma
linguagem de máquina diferente. Porém, a programação de computadores em linguagem
de máquina não é uma tarefa fácil. Desta forma, os pesquisadores começaram a
desenvolver linguagens que permitissem programar computadores de uma forma mais
padronizada, sem ter que estar sempre preocupado com o hardware. Assim, as linguagens
de programação evoluíram e cada vez mais facilitam a implementação de softwares com
interfaces mais amigáveis para os usuários.
Para que um programa funcione corretamente é necessário que haja um conjunto
de passos sequenciais que levem à resolução de um problema, denominado algoritmo.

4 - Algoritmos e formas de representação

Um algoritmo é uma sequência de passos que visam a solução de um problema. Os


passos devem ser finitos, não ambíguos, bem definidos e ordenados de forma que possam
ser executados mecanicamente. Nas palavras de Cormen et. al (2009), um algoritmo é
qualquer procedimento computacional bem definido que toma algum valor ou conjunto de
valores de entrada e produz algum valor ou conjunto de valores como saída.
Com base nisso, pode-se dizer que utilizamos diversos algoritmos no nosso dia-a-dia e que
nem sempre precisam de um computador para serem executados, por exemplo, fazer uma
receita de bolo ou calcular uma expressão matemática.
A receita descreve a sequência em que os ingredientes devem ser misturados e as ações
até o momento em que o bolo ficará pronto. No caso de uma expressão matemática que
contém chaves, parênteses e colchetes, resolvemos primeiramente (sequência) os
parênteses, seguido dos colchetes e por fim, as chaves. Ainda no cenário de cálculos,
sabemos que as operações matemáticas também possuem uma ordem, multiplicações e
divisões devem ser solucionadas antes de somas e subtrações. Utilizando como exemplo a
expressão b2-4ac, onde a potência deve ser resolvida primeiro, seguida da multiplicação de
4 por a e c, e por fim, a subtração. Qualquer que seja o algoritmo, se a ordem de passos
não for seguida, o resultado final será inesperado.

Quando pensamos em exemplos de algoritmos que são executados usando


computadores/processadores, podemos citar o processamento de todas as suas operações
de saques, depósitos e pagamentos realizados em sua conta bancária, o reconhecimento
de imagens de pessoas na arquibancada de um estádio de futebol, o mecanismo utilizado
por sistemas de buscas na web ou na simples utilização dos programas da sua máquina de
lavar roupas.

Antes de escrever a solução de um problema como um programa devemos esboçá-la em


uma das formas para representar algoritmos. As formas de representação mais
conhecidas são: descrição narrativa, fluxograma e pseudocódigo. Cada forma de
representação tem vantagens e desvantagens.

Na descrição narrativa, utiliza-se a linguagem natural para descrever os passos de um


algoritmo. Por linguagem natural entende-se a forma como as pessoas se comunicam
utilizando, por exemplo, a língua portuguesa. Essa forma de representação permite
liberdade de escrita e pouca formalidade, fazendo com que a solução de um problema
possa ser mais ou menos detalhada por diferentes pessoas. Essa liberdade pode acarretar
em falta de clareza e ambiguidade das instruções, resultando em algoritmos ruins. Na
Figura 3, apresenta-se um exemplo de algoritmo em descrição narrativa para somar dois
valores e mostrar o resultado.

1. Leia um número para valor1


2. Leia um número para valor2
3. Guarde em soma o resultado de valor1 + valor2
4. Mostre o resultado armazenado em soma.
Figura 3 - Exemplo de algoritmo em descrição narrativa

O fluxograma, por sua vez, utiliza figuras geométricas para representar as ações de um
algoritmo. Trata-se de um vocabulário mais restrito, pois cada figura geométrica tem um
significado padronizado e que justifica sua escolha em um algoritmo. Geralmente, as
pessoas não utilizam essa representação pelo trabalho de ficar desenhando tais figuras. Na
Figura 4, apresenta-se um exemplo de algoritmo em fluxograma para somar dois valores e
mostrar o resultado.

Figura 4 - Exemplo de algoritmo em fluxograma

O pseudocódigo é a representação preferida por utilizar um conjunto de palavras mais


restrito e próximo de instruções que são utilizadas em linguagens de programação,
facilitando a passagem de um algoritmo para um programa de computador. Embora o
pseudocódigo possa ser escrito em linguagem natural, o uso de um vocabulário restrito
evita o problema de falta de clareza e ambiguidade que ocorrem na descrição narrativa.

Adotaremos as regras de pseudocódigo utilizadas por Ascencio.


A estrutura básica de um algoritmo em pseudocódigo é como segue:
ALGORITMO
DECLARE nome_da_variavel tipo_da_variável
bloco_de_comandos
FIM_ALGORITMO

As palavras em maiúsculo são referentes a marcação de início e fim de algoritmo,


declaração de variáveis, comando para leitura e escrita de dados, tipos de dados, etc.

Na Figura 5, apresenta-se um exemplo de algoritmo em pseudocódigo para somar dois


valores e mostrar o resultado. Podemos perceber que as palavras DECLARE, NUMERICO,
LEIA E ESCREVA estão em maiúsculo, para indicar respectivamente que as variáveis
serão declaradas, o tipo é numérico, será realizada uma leitura e uma escrita.

ALGORITMO soma2numeros
DECLARE valor1, valor2, soma NUMERICO
LEIA valor1, valor2
soma ← valor1 + valor2
ESCREVA "Resultado ", soma
FIM_ALGORITMO

Figura 5 - Exemplo de algoritmo em pseudocódigo

Nos capítulos seguintes serão apresentadas outras regras de pseudocódigo para escrita de
algoritmos de acordo com a necessidade.

5 - Programa e Linguagens de Programação

As instruções de um algoritmo não podem ser executadas pelo computador, pois elas
representam um esboço da solução de um problema. A solução em si precisa ser
convertida para um programa utilizando alguma linguagem de programação para ser
executada pelo computador. Logo, um programa é a representação de um algoritmo em
alguma linguagem de programação.

Uma linguagem de programação é formada por um conjunto de regras sintáticas e


semânticas que transformam um código-fonte em um programa. Há uma variedade de
linguagens de programação com diferentes características e objetivos. Para se ter uma
ideia, em 2020 a revista IEEE Spectrum publicou um ranking com nomes das linguagens
mais utilizadas, uma lista de mais de 50 nomes. No topo do ranking constavam as
linguagens de programação python, java, C, C++, JavaScript e R.

Uma caracterização importante para os assuntos deste livro é quanto ao sistema de


implementação das linguagens. Quanto ao sistema de implementação, as linguagens de
programação podem ser compiladas, interpretadas ou uma combinação de ambos.
Compilação e interpretação tratam do processo de traduzir um programa para um formato
que o computador entenda. O código escrito em linguagem de programação é entendível
pelo ser humano, mas não pela máquina.
Linguagens de programação compiladas possuem um módulo chamado compilador que
verifica se o código escrito pelo programador obedece às regras sintáticas da linguagem.
Em caso positivo, um arquivo executável é gerado e poderá ser chamado para execução.
Imagine como regra sintática que cada instrução deve estar bem escrita e ter um fim. Se o
código não estiver correto, (por exemplo, faltou fechar um parêntese), o compilador mostra
uma mensagem com o erro de sintaxe e interrompe a compilação. São exemplos de
linguagens compiladas: C++ e java. Por exemplo, em C++ há uma fase de compilação para
depois o programa ser executado. O programa é salvo em um arquivo com extensão .cpp.
Esse arquivo é compilado por um programa chamado compilador, que pode ser o g++, por
exemplo. Assim, tem-se a seguinte linha de compilação:

g++ arquivo.cpp -o arquivo.exe


O arquivo.exe é o arquivo executável que foi gerado.

Nas linguagens interpretadas, a tradução acontece junto com a execução do código, ou


seja, não é uma etapa separada como acontece com linguagens compiladas. Neste caso, o
programa é executado enquanto não houver erros de sintaxe, caso contrário, a execução é
interrompida na instrução em que foi encontrado um erro. Geralmente a interpretação não
costuma gerar arquivos adicionais. São exemplos de linguagens interpretadas: python e
php. No caso da linguagem python na versão 3, para chamar um código para executar
basta chamar o interpretador da linguagem por meio da instrução:

python3 meuArquivo.py

É importante ressaltar que erros de lógica não são identificados pelo


compilador/interpretador, eles serão percebidos na execução do programa quando o
resultado final não for o esperado. Um erro de lógica pode ter várias origens, por exemplo,
pelo uso incorreto de um operador aritmético. Imagine um cálculo em que foi utilizado
operador de adição (+) no lugar do operador de subtração (-), causando um resultado
incorreto ao final da execução.
6 - Partes de um algoritmo

Um algoritmo geralmente é constituído de 3 partes conhecidas como entrada de dados,


processamento de dados e saída de dados, como se mostra na Figura 6.

Figura 6 - Partes de um algoritmo

Na entrada de dados, por meio de dispositivos de entrada são fornecidos os dados


necessários para que o algoritmo possa ser executado. Por exemplo, um algoritmo que
calcula a idade de uma pessoa, precisa receber como dado de entrada a data de
nascimento. Outro exemplo de entrada é a leitura de sua digital para liberar acesso em
algum caixa eletrônico.
O processamento de dados consiste em receber os dados de entrada, processá-los e
gerar algum resultado. Por exemplo, calcular a idade ou validar a digital de uma pessoa
liberando acesso ao sistema eletrônico.
Na saída de dados, os resultados do processamento são enviados para os dispositivos de
saída, tais como impressora, monitor e dispositivos de armazenamento.
É importante reconhecer cada uma dessas partes durante a escrita de um algoritmo ou
programa.

Exercícios de fixação

1. Os computadores podem ter vários dispositivos para permitir a entrada e saída de


dados. Considere os dispositivos apresentados abaixo e classifique-os em entrada
(E), saída (S) ou entrada e saída ao mesmo tempo (E/S).
a) Mouse sem fio ( )
b) Teclado sem fio ( )
c) Leitor de códigos de barra ( )
d) Impressora a laser ( )
e) Pendrive ( )
f) Microfone ( )
g) Tela de um smartphone ( )
h) Caixa de som ( )
i) Sensor de batimento cardíaco ( )

2. Realize as seguintes conversões de base:


a) (5342)10 para a base hexadecimal
b) (143)10 para a base binária
c) (1011001)2 para a base decimal
d) (F3E1)16 para a base decimal

3. Em um supermercado há 500 funcionários. Para registrar o controle de entrada e


saída desses funcionários no supermercado há uma máquina de registro de ponto
que grava os horários de entrada e saída de cada funcionário. Esses dados são
armazenados no sistema de gestão integrado da empresa. De acordo com esses
dados e o valor do salário mínimo, o sistema calcula o salário de cada funcionário,
gerando a folha de pagamento ao final do mês. Para cada funcionário é impresso
um holerite. Este mesmo sistema possui um módulo de controle de estoque onde
são armazenadas todas as novas mercadorias que são adquiridas e as vendas
ocorridas, mantendo atualizado o número de mercadorias disponíveis. Ao final de
cada mês é gerado um relatório para a diretoria com o estoque atualizado.
Identifique quais são os dados de entrada, o processamento e os dados de saída
apresentados e preencha o quadro abaixo:

entrada sua resposta

processamento

saída

4. O jogo conhecido como Torre de Hanoi consiste de três torres chamadas destino,
origem e auxiliar e um conjunto de n discos de tamanhos diferentes. Inicialmente, os
discos estão na torre origem na ordem decrescente (o disco maior embaixo e o disco
menor no topo da pila de discos). O objetivo final é mover todos os discos para a
torre destino. As regras do jogo são: mover um disco de cada vez; não colocar um
disco de diâmetro maior sobre um disco de diâmetro menor; quando necessário,
pode usar a torre auxiliar para movimentos intermediários. Escreva um algoritmo
para esse jogo utilizando 3 discos.

5. Elabore um algoritmo que calcula a área de um triângulo, considerando que são


conhecidos os valores para base e altura. Utilize uma das formas de representação
apresentadas. Fórmula: area = (base*altura)/2

Referências:
Ascencio, Ana Fernanda Gomes; Campos, Edilene Aparecida Veneruchi de. Fundamentos
da Programação de Computadores: algoritmos, Pascal e C/C++.

TicDomicílios. Pesquisa sobre o uso das Tecnologias de Informação e Comunicação nos


domicílios brasileiros - TIC Domicílios 2019. Disponível em:
https://cetic.br/media/docs/publicacoes/2/20201123121817/tic_dom_2019_livro_eletronico.p
df. Acesso em abril de 2021.

CORMEN, Thomas H. et al. Introduction to algorithms. MIT press, 2009.


IEEE Spectrum. Interactive: The Top Programming Languages. Disponível em:
https://spectrum.ieee.org/static/interactive-the-top-programming-languages-2020 Acesso em
19 de abril de 2021.

Você também pode gostar