Você está na página 1de 242

Fundamentos da

Computação
Prof. Djone Kochanski

2012
Copyright © UNIASSELVI 2012

Elaboração:
Prof. Djone Kochanski

Revisão, Diagramação e Produção:


Centro Universitário Leonardo da Vinci – UNIASSELVI

Ficha catalográfica elaborada na fonte pela Biblioteca Dante Alighieri


UNIASSELVI – Indaial.

004
K766f Kochanski, Djone
Fundamentos da computação / Djone Kochanski. Indaial : Uniasselvi, 2012.

232 p. : il

ISBN 978-85-7830- 569-7

1. Computação – fundamentos.
I. Centro Universitário Leonardo da Vinci

Impresso por:
Apresentação
Caro(a) acadêmico(a), seja bem-vindo(a) à disciplina de Fundamentos
da Computação.

Nesta disciplina você estudará importantes conceitos de Computação/


Informática que lhe permitirão compreender a origem e trajetória
evolucionária da área. O conteúdo deste Caderno de Estudos foi elaborado
de forma a viabilizar a apropriação dos conhecimentos necessários da melhor
forma possível. Ele serve como uma base teórica para o entendimento dos
demais assuntos que você vier a estudar na área de Computação/Informática.

Este Caderno de Estudos está dividido em três unidades de estudos.


Iniciaremos nossos estudos a partir de uma perspectiva histórica da
Computação/Informática, desde suas raízes até os dias atuais. Em seguida,
estudaremos importantes conceitos relativos a subáreas da Computação/
Informática. Por fim, daremos os primeiros passos nos estudos de lógica de
programação.

Desejo a você uma excelente experiência nos estudos dessa disciplina!

Prof. Djone Kochanski

III
UNI

Você já me conhece das outras disciplinas? Não? É calouro? Enfim, tanto para
você que está chegando agora à UNIASSELVI quanto para você que já é veterano, há novidades
em nosso material.

Na Educação a Distância, o livro impresso, entregue a todos os acadêmicos desde 2005, é o


material base da disciplina. A partir de 2017, nossos livros estão de visual novo, com um formato
mais prático, que cabe na bolsa e facilita a leitura.

O conteúdo continua na íntegra, mas a estrutura interna foi aperfeiçoada com nova diagramação
no texto, aproveitando ao máximo o espaço da página, o que também contribui para diminuir
a extração de árvores para produção de folhas de papel, por exemplo.

Assim, a UNIASSELVI, preocupando-se com o impacto de nossas ações sobre o ambiente,


apresenta também este livro no formato digital. Assim, você, acadêmico, tem a possibilidade
de estudá-lo com versatilidade nas telas do celular, tablet ou computador.
 
Eu mesmo, UNI, ganhei um novo layout, você me verá frequentemente e surgirei para
apresentar dicas de vídeos e outras fontes de conhecimento que complementam o assunto
em questão.

Todos esses ajustes foram pensados a partir de relatos que recebemos nas pesquisas
institucionais sobre os materiais impressos, para que você, nossa maior prioridade, possa
continuar seus estudos com um material de qualidade.

Aproveito o momento para convidá-lo para um bate-papo sobre o Exame Nacional de


Desempenho de Estudantes – ENADE.
 
Bons estudos!

IV
V
VI
Sumário
UNIDADE 1 – HISTÓRICO DA COMPUTAÇÃO ........................................................................... 1

TÓPICO 1 – A ESCRITA E OS NÚMEROS ........................................................................................ 3


1 INTRODUÇÃO ..................................................................................................................................... 3
2 GÊNESE DA TECNOLOGIA DA INFORMAÇÃO ....................................................................... 4
3 O CÁLCULO .......................................................................................................................................... 7
RESUMO DO TÓPICO 1 ....................................................................................................................... 9
AUTOATIVIDADE ................................................................................................................................. 10

TÓPICO 2 – OS PRIMEIROS PROJETOS .......................................................................................... 11


1 INTRODUÇÃO ..................................................................................................................................... 11
2 EQUIPAMENTOS PRECURSORES .................................................................................................. 11
RESUMO DO TÓPICO 2 ....................................................................................................................... 24
AUTOATIVIDADE ................................................................................................................................. 25

TÓPICO 3 – EVOLUÇÕES DO INÍCIO DO SÉCULO XX .............................................................. 27


1 INTRODUÇÃO ..................................................................................................................................... 27
2 A AUTOMAÇÃO DOS CÁLCULOS ................................................................................................ 27
RESUMO DO TÓPICO 3 ....................................................................................................................... 40
AUTOATIVIDADE ................................................................................................................................. 41

TÓPICO 4 – O BERÇO DA INFORMÁTICA ..................................................................................... 43


1 INTRODUÇÃO ..................................................................................................................................... 43
2 O NASCIMENTO DA COMPUTAÇÃO .......................................................................................... 43
3 NOVAS TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO ........................................ 47
4 TECNOLOGIA DA INFORMAÇÃO E O ENSINO ....................................................................... 49
5 O SURGIMENTO DA TECNOLOGIA DA INFORMAÇÃO COMO A
CONHECEMOS .................................................................................................................................... 53
LEITURA COMPLEMENTAR ............................................................................................................... 64
RESUMO DO TÓPICO 4 ....................................................................................................................... 69
AUTOATIVIDADE ................................................................................................................................. 70

UNIDADE 2 – CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO ....................................... 71

TÓPICO 1 – SISTEMAS DE NUMERAÇÃO ..................................................................................... 73


1 INTRODUÇÃO ..................................................................................................................................... 73
2 SISTEMA DE NUMERAÇÃO DECIMAL ....................................................................................... 75
3 SISTEMA DE NUMERAÇÃO BINÁRIO ......................................................................................... 76
4 SISTEMA DE NUMERAÇÃO OCTAL ............................................................................................. 77
5 SISTEMA DE NUMERAÇÃO HEXADECIMAL ............................................................................ 78
6 CONVERSÕES ENTRE SISTEMAS DE NUMERAÇÃO ............................................................. 78
7 CONVERSÃO DE DECIMAL PARA BINÁRIO ............................................................................. 79
8 CONVERSÃO DE DECIMAL PARA OCTAL ................................................................................. 79

VII
9 CONVERSÃO DE DECIMAL PARA HEXADECIMAL ................................................................ 80
10 CONVERSÃO DE BINÁRIO PARA DECIMAL ........................................................................... 81
11 CONVERSÃO DE OCTAL PARA DECIMAL ............................................................................... 82
12 CONVERSÃO DE HEXADECIMAL PARA DECIMAL ............................................................. 83
13 REGRAS DE FIXAÇÃO ..................................................................................................................... 84
RESUMO DO TÓPICO 1 ....................................................................................................................... 86
AUTOATIVIDADE ................................................................................................................................. 87

TÓPICO 2 – BASES COMPUTACIONAIS ......................................................................................... 89


1 INTRODUÇÃO ..................................................................................................................................... 89
2 ARQUITETURA DE COMPUTADORES ........................................................................................ 90
3 SOFTWARE ............................................................................................................................................ 91
3.1 CATEGORIAS DE SOFTWARE ..................................................................................................... 91
3.1.1 Softwares básicos .................................................................................................................... 92
3.1.2 Softwares utilitários ................................................................................................................ 93
3.1.3 Softwares aplicativos .............................................................................................................. 93
3.1.4 Ferramentas de desenvolvimento ........................................................................................ 94
4 REDES DE COMPUTADORES .......................................................................................................... 96
RESUMO DO TÓPICO 2 ....................................................................................................................... 103
AUTOATIVIDADE ................................................................................................................................. 104

TÓPICO 3 – SUPORTES COMPUTACIONAIS ................................................................................ 105


1 INTRODUÇÃO ..................................................................................................................................... 105
2 ENGENHARIA DE SOFTWARE ....................................................................................................... 106
3 BANCO DE DADOS ............................................................................................................................ 114
RESUMO DO TÓPICO 3 ....................................................................................................................... 116
AUTOATIVIDADE ................................................................................................................................. 117

TÓPICO 4 – INTELIGÊNCIA COMPUTACIONAL ......................................................................... 119


1 INTRODUÇÃO ..................................................................................................................................... 119
2 CONCEITOS BÁSICOS ...................................................................................................................... 120
3 TIPOS DE MÍDIA ................................................................................................................................. 122
4 SISTEMAS MULTIMÍDIA ................................................................................................................. 125
5 REPRESENTAÇÃO DE MÍDIAS ....................................................................................................... 127
6 DADOS MULTIMÍDIA ....................................................................................................................... 127
7 CARACTERÍSTICAS DA VISÃO ..................................................................................................... 130
8 CAPTURA E REPRODUÇÃO DE IMAGEM .................................................................................. 131
9 MÍDIAS COM BASE EM IMAGEM ................................................................................................. 133
9.1 IMAGENS ESTÁTICAS .................................................................................................................. 133
9.2 IMAGENS DINÂMICAS ................................................................................................................ 135
9.3 COMPRESSÃO DE DADOS ........................................................................................................... 138
9.4 IMAGENS NA INTERNET ............................................................................................................ 139
10 MÍDIAS COM BASE EM ÁUDIO ................................................................................................... 140
10.1 ÁUDIO ........................................................................................................................................... 141
10.2 ÁUDIO NA MULTIMÍDIA ......................................................................................................... 142
10.3 ÁUDIO NA INTERNET .............................................................................................................. 143
LEITURA COMPLEMENTAR ............................................................................................................... 144
RESUMO DO TÓPICO 4 ....................................................................................................................... 149
AUTOATIVIDADE ................................................................................................................................. 150

VIII
UNIDADE 3 – LÓGICA DE PROGRAMAÇÃO ................................................................................ 151

TÓPICO 1 – FUNDAMENTOS DE LÓGICA DE PROGRAMAÇÃO .......................................... 153


1 INTRODUÇÃO ..................................................................................................................................... 153
2 FUNDAMENTOS DE LÓGICA DE PROGRAMAÇÃO ............................................................... 154
3 LÓGICA PARA PROGRAMAÇÃO .................................................................................................. 158
4 COMANDOS BÁSICOS ..................................................................................................................... 164
RESUMO DO TÓPICO 1 ....................................................................................................................... 166
AUTOATIVIADE ..................................................................................................................................... 167

TÓPICO 2 – ESTRUTURAS DE CONTROLE .................................................................................... 169


1 INTRODUÇÃO ..................................................................................................................................... 169
RESUMO DO TÓPICO 2 ....................................................................................................................... 184
AUTOATIVIDADE ................................................................................................................................. 185

TÓPICO 3 – SUBALGORITMOS E ESCOPO DE IDENTIFICADORES ..................................... 187


1 INTRODUÇÃO ..................................................................................................................................... 187
2 ESCOPO DE IDENTIFICADORES ................................................................................................... 189
RESUMO DO TÓPICO 3 ....................................................................................................................... 200
AUTOATIVIDADE ................................................................................................................................. 201

TÓPICO 4 – TIPOS ESTRUTURADOS .............................................................................................. 203


1 INTRODUÇÃO ..................................................................................................................................... 203
LEITURA COMPLEMENTAR ............................................................................................................... 218
RESUMO DO TÓPICO 4 ....................................................................................................................... 220
AUTOATIVIDADE ................................................................................................................................. 221

REFERÊNCIAS ......................................................................................................................................... 223

IX
X
UNIDADE 1

HISTÓRICO DA COMPUTAÇÃO

OBJETIVOS DE APRENDIZAGEM
A partir desta unidade, você será capaz de:

• conhecer os principais fatos históricos da computação;

• compreender os conceitos fundamentais da computação;

• entender a área de informática de maneira sistêmica.

PLANO DE ESTUDOS
Esta unidade está dividida em quatro tópicos, sendo que ao final de cada
um deles você encontrará atividades que o(a) auxiliarão na apropriação dos
conhecimentos.

TÓPICO 1 – A ESCRITA E OS NÚMEROS

TÓPICO 2 – OS PRIMEIROS PROJETOS

TÓPICO 3 – EVOLUÇÕES DO INÍCIO DO SÉCULO XX

TÓPICO 4 – O BERÇO DA INFORMÁTICA

1
2
UNIDADE 1
TÓPICO 1

A ESCRITA E OS NÚMEROS

1 INTRODUÇÃO
Embora os recursos tecnológicos disponíveis atualmente possam parecer
extremamente novos e atuais, o processo de desenvolvimento da tecnologia
percorreu um longo caminho para que pudéssemos nos beneficiar de tais elementos
como fazemos atualmente.

Através de uma perspectiva antropológica, acredita-se que a natureza


humana nos leva a tentar resolver quaisquer questões de forma cada vez mais rápida
e com menor esforço, fazendo com que as tarefas repetitivas sejam executadas com
a maior eficiência e precisão possíveis. Um dos elementos que veio para contribuir
com esse processo foi o computador.

UNI

A abordagem dada para o termo computador neste Caderno de Estudos se refere


aos dispositivos computacionais em geral que tenham a capacidade de realizar processamento
eletrônico de dados.

Na realidade, o computador permite revolucionar a forma como vivemos e


agimos e cada vez mais benefícios conseguimos obter com a utilização dos mesmos.
O computador nos auxilia nas escolas, escritórios, indústrias, hospitais, casas, entre
outros lugares, tornando-se uma ferramenta indispensável para muitas pessoas.

Se o computador está em tantos lugares e nos auxilia, por que não


entendermos algumas das características e usufruirmos ainda mais de seus
benefícios? É isso que vamos analisar neste tópico. Mas antes vamos conhecer a
origem e história da Computação através de uma abordagem um pouco diferenciada
e com o foco específico de obtenção de uma base conceitual mais sólida.

3
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO

2 GÊNESE DA TECNOLOGIA DA INFORMAÇÃO


Para você entender melhor o computador, vamos iniciar nossa viagem no
tempo, a partir dos primeiros registros da escrita. A invenção da palavra escrita
é atribuída aos sumérios, um povo que viveu na região onde atualmente fica o
Iraque, conhecida como Mesopotâmia.

Também, é atribuída a este povo a invenção da cerveja, o conceito de


que os homens foram criados à imagem dos deuses, a fabricação dos primeiros
instrumentos agrícolas, as tentativas iniciais de organização de cidades, os
rudimentos do cooperativismo e a fabricação do vidro. Que povo inteligente e
criativo, hein?

FIGURA 1 – ESCRITA CUNEIFORME

FONTE: Disponível em: <www.123rf.com>. Acesso em: 15 fev. 2012.

A ideia de criar símbolos que pudessem representar os sons vocais ocorreu


há milhares de anos. A primeira forma de escrita foi chamada de cuneiforme. O
processo se resumia a marcas feitas em tabletes de barro úmido, que depois eram
secos ao sol.

UNI

O nome cuneiforme se deve ao fato de que o instrumento usado para fazer as


marcas no barro ser estilete de madeira em forma de cunha.

4
TÓPICO 1 | A ESCRITA E OS NÚMEROS

Embora para nós possa parecer que as letras e os números possam ter a
mesma origem, os números surgiram muitos séculos depois. Isso é quase natural,
se considerarmos que é muito mais simples aprender a escrever do que aprender
a calcular.

Os primeiros numerais utilizados eram letras, porém utilizadas como


números. O exemplo mais simples para entender isso, são os números romanos.

QUADRO 1 – VALORES DOS ALGARISMOS ROMANOS

1 5 10 50 100 500 1.000

I V X L C D M

FONTE: O autor

Os primeiros a contribuírem para o avanço dos cálculos foram os pastores.


Na sua rotina diária, os pastores soltavam o rebanho pela manhã para pastar em
campo aberto e o reconhiam no final do dia. Surgiu então, a necessidade de saber
se o número de animais que saiu efetivamente retornou.

Foi então, que um engenhoso pastor solucionou o problema. Fez um


montinho de pedras, colocou uma pedra para cada animal que saía e retirou
uma a cada animal que retornava. A quantidade de pedras que restasse no monte
principal correspondia à quantidade de animais que não haviam retornado. Assim,
inventou-se o cálculo.

FIGURA 2 – REBANHO DE OVELHAS

FONTE: Disponível em: <www.123rf.com>. Acesso em: 15 fev. 2012.

5
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO

UNI

A palavra cálculo tem origem no latim calculus que significa pedra. Desta forma
podemos entender também, a origem da expressão cálculo renal, ou seja, pedra no rim.

Uma das maneiras primitivas de representação de quantidades foi por


meio dos dedos das mãos, em que para cada elemento representado era utilizado
um dedo. É desta prática que se originou a palavra dígito, cujo original em latim é
digitus. É atribuído também, a esta prática a origem da quantidade de símbolos do
sistema numérico decimal que é utilizado, até os dias atuais.

Boyer (1996) relata que Aristóteles observou que o uso do sistema de


numeração decimal é simplesmente resultado do fato de os seres humanos
possuírem dez dedos nas mãos e nos pés. Boyer (1996) observa também que outros
sistemas de numeração foram utilizados antes da consolidação do uso do sistema
decimal. Alguns povos utilizaram a contagem por dois (binário), três (ternário),
cinco (quinário) e vinte (vigesimal). Destes sistemas de numeração, há evidências
arqueológicas do uso do sistema quinário.

FIGURA 3 – ESTÁTUA DE AL-KHOWARIZMI

FONTE: Computer History Museum. Disponível em: <http://www.


computerhistory.org>. Acesso em: 10 mar. 2012.

6
TÓPICO 1 | A ESCRITA E OS NÚMEROS

Boyer (1996) observa que nas situações em que o uso dos dedos das mãos
para representar coleções era inadequado, o homem primitivo fez uso de uma
sistemática bastante simples.

A sistemática era baseada em fazer amontoados de pedras, tipicamente em


grupos de cinco, pois era a forma mais familiar pela comparação com os dedos
das mãos. O símbolo utilizado para representar o algarismo zero no conjunto de
numerais Hindu-Arábicos surgiu por volta de 876 d.C. (BOYER, 1996).

Os registros históricos não permitem a determinação exata do ano em


que o algarismo foi incorporado aos demais algarismos do conjunto. A obra de
al-Khowarizmi chamada De Numero Hindorum foi a grande responsável pela
popularização dos algarismo Hindu-Arábicos, dando a falsa impressão de que o
conjunto de algarismos é de origem árabe. Para quem aprendeu desde a infância
que o conjunto de algarismos é formado por 10 símbolos, é difícil conceber este
conjunto sem a existência do zero, não é mesmo?

3 O CÁLCULO
Através de uma perspectiva histórica pode-se entender que a Tecnologia da
Informação iniciou sua trajetória a partir do desejo e necessidade de automatizar
os cálculos. O primeiro instrumento utilizado para automatização dos cálculos foi
o ábaco, cuja invenção é reivindicada por vários povos, entre eles pelos babilônios,
chineses, japoneses e russos.

Segundo Almeida (2002), a origem do nome vem do grego abax que significa
tábua de calcular. Os primeiros ábacos eram feitos com fios verticais paralelos pelos
quais o operador podia fazer deslizar sementes secas. Um operador experiente
com um ábaco consegue fazer cálculos com velocidade aproximada a qualquer
pessoa com uma calculadora digital. Milhares de anos depois de sua invenção, o
ábaco ainda é utilizado em algumas regiões da Ásia.

FIGURA 4 – ÁBACO

FONTE: Computadores e informática (2011)

7
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO

Os algarismos como conhecemos atualmente passaram a ser utilizados em


maior escala alguns séculos depois do início da era cristã. A criação é atribuída aos
hindus, mas são conhecidos como algarismos arábicos, pois foram os árabes que
os difundiram pelo mundo. A notação numérica utilizada atualmente passou a ser
conhecida mundialmente através da obra De Numero Hindorum escrita no século
IX pelo árabe Al-Khowarizmi.

Pelo fato de os números hindus terem sido popularizados através de um


árabe, passaram a ser chamados de algarismos arábicos. Al-khowarizmi também
empresta seu nome ao que passou a chamar-se Algoritmo que pode ser entendido
como uma regra especial de um processo ou operação (BOYER, 1996).

Antes do surgimento dos algarismos arábicos as formas dominantes de


representação numérica eram os algarismos romanos, gregos e egípcios, os quais,
na realidade, eram um conjunto de letras utilizadas na representação numérica.
Com a popularização dos numerais surgiu a palavra aritmética, do grego arithmos
que significa número.

A trigonometria também foi ampliada, pois anteriormente era apenas um


simples cálculo para medir os lados de um triângulo, originário do grego, trigon,
que significa três cantos. Al-Khowarizmi também é considerado o pai da Álgebra
em função de suas contribuições nessa área da matemática.

Na realidade a invenção do computador é resultado de uma série de ideias


e inventos de pessoas que muitas vezes viveram em diferentes épocas. A tecnologia
da informação, tal qual a conhecemos atualmente teve suas origens na necessidade
de o homem automatizar os cálculos e realizar tarefas repetitivas de maneira cada
vez mais rápida e precisa.

8
RESUMO DO TÓPICO 1
Caro(a) acadêmico(a), nesse capítulo você estudou que:

• Os seres humanos vêm desde tempos remotos procurando novas e melhores


formas de realizarem operações matemáticas. Em função dessa necessidade e de
haver uma simbologia comum para a comunicação de valores, a representação
numérica evoluiu até que os algarismos hindu-arábicos se estabeleceram como
modelo mais comumente utilizado.

• Houve um período na história em que os símbolos utilizados para expressar


valores numéricos eram letras de determinados alfabetos. Com o tempo houve
também a consolidação dos sistemas de numeração. Por um período da história
foram utilizados sistemas de numeração de base dois, três, cinco e vinte.

• Com a consolidação do sistema de numeração decimal como padrão adotado


pela maioria dos povos, houve a necessidade de aperfeiçoamento da simbologia.
Foi através da obra de um matemático denominado Al-khowarizmi que os
algarismos atualmente utilizados ganharam popularidade e consequentemente
tornaram-se o padrão.

• O algarismo 0 (zero), tal qual é utilizado atualmente, passou a ser utilizado no


sistema de numeração decimal a partir do século IX. Antes disso, não havia
um padrão para representação do zero. Na área de Computação/Informática, o
algarismo 0 (zero) é muito importante, pois grande parte das contagens iniciam
de zero.

• Em função da necessidade de tornar as operações matemáticas cada vez mais


rápidas e precisas surgiram os primeiros dispositivos de automação de cálculos,
como o ábaco e seus similares. A partir da invenção do ábaco estava plantada a
pedra fundamental sobre a qual se desenvolveria todo o restante da história da
Computação/Informática.

9
AUTOATIVIDADE

Caro(a) acadêmico(a), como forma de fixar o conteúdo estudado realize


a autoatividade proposta a seguir:

1 A partir do momento que a humanidade começou a se preocupar com a


necessidade de uma forma de comunicação, surgiram os símbolos com seus
respectivos significados. Qual o nome da primeira forma de escrita?

2 A invenção da primeira forma de escrita, da cerveja, a fabricação do vidro e


dos primeiros instrumentos agrícolas é atribuída a um povo que ocupou a
região atualmente conhecida como Iraque. Qual o nome desse povo?

3 Diversos estudiosos da matemática contribuíram para o aperfeiçoamento


dos cálculos e criação de novas simbologias. Qual o nome do matemático
responsável pela popularização dos algarismos de zero a nove e que
contribuiu significativamente no ramo da álgebra?

4 A partir do momento que o homem passou a utilizar elementos para


representação numérica e a realizar operações matemáticas, criou também
dispositivos que facilitem o processo. Qual o primeiro artefato criado pelo
homem para automatizar cálculos?

10
UNIDADE 1
TÓPICO 2

OS PRIMEIROS PROJETOS

1 INTRODUÇÃO
Conforme perceberemos em seguida, a invenção do computador não
é produto da genialidade de apenas uma pessoa ou de um pequeno grupo de
pessoas que se reuniu com o objetivo de desenvolver algo inovador. A invenção
do computador é resultado de uma série de ideias e invenções que muitas vezes
nem estavam relacionadas à área da matemática ou de alguma ciência relacionada.

A evolução da Computação é resultante de séculos de pesquisas nas mais


diversas áreas do conhecimento. Uma das principais molas propulsoras destas
pesquisas foi a necessidade de o homem automatizar os cálculos e poder realizar
atividades rotineiras de forma cada vez mais rápida.

Você conhecerá agora alguns importantes acontecimentos ocorridos


entre os séculos XVI e XIX que contribuíram significativamente no processo de
desenvolvimento da área da computação.

Caro(a) acadêmico(a), espero que o conteúdo estimule seu aprendizado.

2 EQUIPAMENTOS PRECURSORES
É interessante observar que da invenção do ábaco, até o próximo registro
de evolução no sentido de automatização de cálculos, utilizando dispositivos
acessórios, se passaram vários séculos. Há uma lacuna de evolução da tecnologia
da informação muito grande. Essa lacuna pode ter sido causada pela falta de
iniciativas ou pesquisas sobre automatização de cálculos, pela falta de registros de
pesquisas realizadas ou pela perda de registros.

O fato é que apenas por volta do ano de 1.500 d.C. foi dado o próximo
passo evolucionário significativo para a tecnologia da informação. Trata-se de
um desenho de Leonardo Da Vinci que sugere ser o esboço de um projeto de
calculadora mecânica baseada em engrenagens.

11
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO

FIGURA 5 – PROJETO DE CALCULADORA DE LEONARDO DA VINCI

FONTE: Computer History Museum. Disponível em: <http://www.computerhistory.org>.


Acesso em: 10 mar. 2012.

Praticamente um século mais tarde, em 1614, John Napier, matemático


escocês publicou uma descrição da maravilhosa regra dos logaritmos (Mirifici
logarithmorum canonis descriptio). Napier trabalhou durante vinte anos na invenção
dos logaritmos até que publicou os resultados de seus estudos (BOYER, 1996).

Para facilitar os cálculos, criou as “barras de Napier”. Estas barras


possuíam itens de tabuadas esculpidos. As barras de Napier foram registradas
principalmente sobre madeira e ossos (BOYER, 1996).

FIGURA 6 – JOHN NAPIER

FONTE: Disponível em: <www.123rf.com>. Acesso em: 15 fev. 2012.

12
TÓPICO 2 | OS PRIMEIROS PROJETOS

Inspirado no desenho deixado por Leonardo Da Vinci, o físico, matemático,


filósofo e escritor francês Blaise Pascal desenvolveu uma máquina denominada
Pascalina (ALMEIDA, 2002). A máquina de Pascal era composta por seis rodas
dentadas, cada uma contendo algarismos de 0 a 9.

FIGURA 7 – BLAISE PASCAL

FONTE: Disponível em: <www.123rf.com>. Acesso em: 15 fev.


2012.

Esta máquina de calcular possuía apenas as funcionalidades de somar e


subtrair e era totalmente mecânica. Ela é considerada a precursora das calculadoras
mecânicas. Nesta época, Pascal compartilhou muitas exepriências e conhecimentos
com Fermat, que levaram a importantes contribuições do campo da teoria da
probabilidade.

Fermar foi um advogado que a partir de 1629 passou a fazer importantes


descobertas no campo da matemática, a qual estudou por puro prazer.

FIGURA 8 – PASCALINA

FONTE: O autor.

13
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO

Outra contribuição significativa para a área de tecnologia da informação


veio do filósofo alemão Gottfried Wilhelm von Leibniz, que desenvolveu em 1673
um dispositivo aperfeiçoado em relação à máquina de Pascal (ALMEIDA, 2002).

FIGURA 9 – GOTTFRIED WILHELM LEIBNIZ

FONTE: Disponível em: <www.123rf.com>. Acesso em: 15 fev. 2012.

O aperfeiçoamento promovido por Leibniz foi a implementação das


operações de divisão e multiplicação (ALMEIDA, 2002). Para isso, projetou um
dispositivo mecânico que passou a ser denominado de cilindro de Leibniz.

A calculadora de Leibniz cujo nome real é “Step Reckoner”, que pode ser
traduzido como calculadora de passo ou calculadora de etapas, serviu de base
para o projeto de calculadoras nos dois séculos seguintes. A maior ambição de
Leibniz era idealizar uma linguagem universal que utilizasse a clareza e a precisão
da matemática para solucionar problemas enfrentados pela humanidade.

FIGURA 10 – CALCULADORA DE LEIBNIZ

FONTE: O autor.

14
TÓPICO 2 | OS PRIMEIROS PROJETOS

Embora pareça não ter qualquer relação com a evolução dos dispositivos
de cálculo, a invenção do engenheiro francês Basile Bouchon foi de grande
importância. Ele construiu no ano de 1728 um tear com a capacidade de tecer
desenhos, de acordo com instruções cifradas em uma folha giratória de papel
perfurado. Neste processo somente trabalhavam as agulhas coincidentes com os
furos do papel.

Outra contribuição proveniente da área da tecelagem foi a do francês


Joseph-Marie Jacquard. Jacquard sentiu-se incomodado com a monótona tarefa de
alimentar os teares com novelos de linhas coloridas para formar os desenhos no
pano que estava sendo fiado.

FIGURA 11 – Joseph-Marie Jacquard

FONTE: Computer History Museum. Disponível em: <http://


www.computerhistory.org>. Acesso em: 10 mar. 2012.

Como toda operação era manual, a cada vez que a cor do desenho mudava
era necessário mudar o novelo, seguindo a determinação do contramestre. Jacquard
percebeu então que as mudanças eram sempre sequenciais e inventou uma forma
de resolver o problema. Utilizou cartões perfurados onde era registrada, ponto a
ponto, a receita para a confecção de um determinado tecido.

FIGURA 12 – TEAR BASEADO EM CARTÕES PERFURADOS

FONTE: Computer History Museum. Disponível em: <http://www.


computerhistory.org>. Acesso em: 10 mar. 2012.

15
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO

Em seguida Jacquard construiu um tear automático capaz de ler os cartões


e executar as operações na sequência determinada. A primeira demonstração
prática do sistema aconteceu em 1801. Dez anos depois havia mais de dez mil
unidades destes teares um uso na França. O método de Jacquard se espalhou
pelo mundo e perdurou, inalterado, pelos 150 anos seguintes.

FONTE: Adaptado de: <http://super.abril.com.br/tecnologia/homem-calculou-442034.shtml>.


Acesso em: 8 jun. 2012.

O britânico Charles Babbage, professor de matemática da Universidade


de Cambridge, inventou em 1812 a máquina das diferenças, também chamada de
máquina diferencial. Esta máquina era destinada a cálculos de tabelas náuticas e foi
concebida porque Babbage identificou uma grande preocupação com a qualidade
das tabelas astronômicas e matemáticas utilizadas na época.

FIGURA 13 – MÁQUINA DAS DIFERENÇAS

FONTE: O autor.

Apenas numa edição de tabelas náuticas publicadas em papel foram


identificados mais de mil erros. Na época Babbage entendeu que a solução para
as tabelas com erros seria construir uma máquina de calcular com alto grau de
precisão e destinada para múltiplos fins (STRATHERN, 2000).

16
TÓPICO 2 | OS PRIMEIROS PROJETOS

FIGURA 14 – SELO BRITÂNICO EM HOMENAGEM A CHARLES BABBAGE

FONTE: Disponível em: <www.123rf.com>. Acesso em: 15 fev. 2012.

Em 1834 Babbage desenvolveu outro projeto denominado máquina


analítica, cujo funcionamento proposto é até hoje as bases do funcionamento de
um computador. Entre outras coisas o projeto propunha a alimentação de dados,
através de cartões perfurados; uma unidade de memória, em que os números
podiam ser armazenados e reutilizados; programação sequencial de operações,
um procedimento que hoje chamamos de sistema operacional.

FIGURA 15 – MÁQUINA ANALÍTICA

FONTE: O autor.

17
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO

As experiências de Babbage anteciparam a estrutura do moderno


computador eletrônico, mas ele não teve condições de desenvolver seus projetos
inteiramente. A máquina analítica ficou inacabada, pois as limitações técnicas do
século XIX impediram sua conclusão (ALMEIDA, 2002).

FIGURA 16 – CHARLES BABBAGE

FONTE: Computer History Museum. Disponível em: <http://www.


computerhistory.org>. Acesso em: 10 mar. 2012.

UNI

Babbage por ter descrito os princípios de funcionamento de um computador,


embora não tenha conseguido construir um exemplar para dar sustentação à sua teoria, é
considerado o pai do computador.

Babbage não estava sozinho no seu projeto. Em 1843, a matemática Lady


Ada associou-se com Babbage para o desenvolvimento da máquina analítica. Ada
criou o conceito de subrotina, uma sequência de instruções que pode ser usada
várias vezes em diferentes contextos.
18
TÓPICO 2 | OS PRIMEIROS PROJETOS

FIGURA 17 – LADY ADA

FONTE: Computer History Museum. Disponível em: <http://www.


computerhistory.org>. Acesso em: 10 mar. 2012.

Lady Ada descobriu o valor de haver uma instrução que retornasse o controle
da execução a uma instrução específica, de modo que a sequência pudesse ter sua
execução repetida. Ela também considerou o desvio condicional, a leitora de cartões
desviaria para outro cartão se uma condição fosse satisfeita (ALMEIDA, 2002).

UNI

Lady Ada é considerada a primeira programadora da história, pois criou os princípios da


programação conhecidos como sequência, seleção e repetição.

Arithmometer é o nome de um equipamento projetado e patenteado por


Charles Xavier Thomas de Colmar no ano de 1820. Este equipamento foi a primeira
calculadora construída de forma bem sucedida que permitia somar, subtrair e
multiplicar. Permitia efetuar divisões, embora com a intervenção do operador
(ALMEIDA, 2002).
19
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO

FIGURA 18 – ARITHMOMETER

FONTE: O autor.

Samuel Morse, juntamente com Alfred Vail inventam em 1835 o código


morse. O código morse é um sistema de representação de letras, números e sinais
de pontuação através de um sinal codificado enviado de forma intermitente.
Morse também é responsável pela invenção do telégrafo no ano de 1844.

FIGURA 19 – TELÉGRAFO

FONTE: Disponível em: www.123rf.com. Acesso em: 15 fev. 2012.

No ano de 1854, George Boole publica a Álgebra Booleana, cujas ideias


constituíram a base da lógica matemática empregada nos computadores.
A dificuldade de implementar o sistema decimal em componentes elétricos
determinaram o uso do sistema binário em computadores. A lógica booleana
passou a ser usada na implementação dos circuitos elétricos apenas a partir do
século XX.

No final do século XIX, nos Estados Unidos, o estatístico Herman


Hollerith idealizou uma solução eficiente para o censo de 1890. Hollerith
concebeu diversas máquinas elétricas para a soma e contagem de dados, os quais

20
TÓPICO 2 | OS PRIMEIROS PROJETOS

eram representados sob a forma de perfurações adequadamente distribuídas em


fita de papel. Através dessas perfurações, estabeleciam-se circuitos elétricos e os
dados que elas representavam podiam, então, ser computados de forma rápida e
automaticamente.
FONTE: Disponível em: <http://www.ibm.com/br/ibm/history/>. Acesso em: 8 jun. 2012.

FIGURA 20 – COLETA DE DADOS DO CENSO DE 1860

FONTE: O autor.

Com esse processo, os Estados Unidos puderam acompanhar de perto o


crescimento de sua população. Os resultados do censo de 1890 foram fornecidos
três anos depois e com isso, fez-se uma economia de vários anos de trabalho
(ALMEIDA, 2002).
FONTE: Disponível em: <http://www.ibm.com/br/ibm/history/>. Acesso em: 8 jun. 2012.

FIGURA 21 – HERMAN HOLLERITH

FONTE: Computer History Museum. Disponível em: <http://www.


computerhistory.org>. Acesso em: 10 mar. 2012.

21
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO

Em 1896, Hollerith criou uma empresa que foi denominada Tabulating


Machine Company e introduziu inovações em sua descoberta. Assim, a fita de
papel foi substituída por cartões, que viriam a ser o elemento básico das máquinas
IBM de processamento de dados de algumas décadas atrás.

Já em 1911, duas outras companhias, a International Time Recording Co.,


de registradores mecânicos de tempo, e a Computing Scale Co. de instrumentos
de aferição de peso, uniram-se a ela, por sugestão do negociante e banqueiro
Charles R. Flint, formando-se então a Computing Tabulating Recording Co. - CTR.
Três anos mais tarde, Thomas J. Watson assumiu a presidência da organização e
estabeleceu normas de trabalho absolutamente inovadoras para a época. Naquela
época, a CTR contava com menos de 1400 funcionários (ALMEIDA, 2002).
FONTE: Disponível em: <http://www.ibm.com/br/ibm/history/>. Acesso em: 8 jun. 2012.

FIGURA 22 – TABULADORA DE HOLLERITH

FONTE: O autor.

As constantes pesquisas de engenharia resultaram na criação e no


aperfeiçoamento de novas máquinas de contabilidade, exigidas pelo rápido
desenvolvimento industrial. Antes do ano de 1924, aquele pequeno grupo
de homens havia aumentado e diversificado sua experiência. Os produtos
ganhavam maior qualidade, surgiam novas máquinas e com elas novos
escritórios de vendas e mais vendedores. Em fevereiro de 1924 a CTR mudou
seu nome para aquele que ocuparia um lugar de liderança dentro do processo
tecnológico: INTERNATIONAL BUSINESS MACHINES. A sigla IBM passou a

22
TÓPICO 2 | OS PRIMEIROS PROJETOS

ser, desde então, a fórmula para que a indústria e o comércio continuassem a


resolver seus problemas de desenvolvimento.

Hoje, os sistemas eletrônicos de processamento de dados têm


fundamental importância nas atividades de exploração espacial, produção e
aproveitamento de energia nuclear e em inúmeros outros campos da ciência
e da indústria. Em consequência do constante e rápido desenvolvimento, a
International Business Machines Corporation criou em 1949 a IBM World Trade
Corporation, uma subsidiária inteiramente independente, cujo objetivo era
aumentar vendas, serviços e produção fora dos Estados Unidos.

As atividades da IBM World Trade Corporation se estendem hoje por


mais de 150 países. As fábricas e laboratórios da IBM funcionam em 15 diferentes
países. Essas fábricas estão integradas aos laboratórios de desenvolvimento
na França, Alemanha, Espanha, Itália, Holanda, Suécia, Inglaterra, Brasil,
Argentina, Colômbia, México, Canadá, Austrália e Japão. São 29 laboratórios de
desenvolvimento que, juntamente com os 5 dos centros de pesquisa pura onde
são realizadas as mais sofisticadas pesquisas tecnológicas, estão localizados nas
seguintes áreas geográficas: Europa, América do Sul, América do Norte e Ásia
– Pacífico (IBM, 2007).
FONTE: Disponível em: <http://www.ibm.com/br/ibm/history/>. Acesso em: 8 jun. 2012.

UNI

Se você quiser saber mais sobre a IBM e sua história, consulte: <http://www.ibm.com>.

Até aquele momento da história a evolução da tecnologia da informação


havia obtido elementos soltos e arcaicos cuja aplicabilidade era pouco significativa
em termos de aplicação prática de propósito geral. Podia-se fazer uso de alguns
elementos, porém para aplicações extremamente específicas.

23
RESUMO DO TÓPICO 2
Caro(a) acadêmico(a), nesse tópico você estudou que:

• Um dos primeiros projetos de calculadoras de que há registros históricos foi


deixado por Leonardo Da Vinci e mais de um século mais tarde materializado
por Blaise Pascal numa calculadora mecânica com capacidade apenas para
somar e subtrair.

• A partir dessa iniciativa, novos pesquisadores se interessam pelo assunto e inicia-


se uma trajetória de evolução de mais de quatro séculos até que se chegasse aos
modernos computadores.

• Neste período, um dos mais fantásticos projetos foi a máquina analítica de


Charles Babbage que possuía as bases utilizadas nos modernos computadores.
Por seu legado, Charles Babbage é considerado o pai do computador.

• Como computadores são formados por equipamentos e programas, Charles


Babbage trabalhou em conjunto com Lady Ada que desenvolveu os princípios
da programação de computadores através da definição das estruturas de
sequência, seleção e repetição. Em função de seu legado, Lady Ada é considerada
a primeira programadora da história.

• A primeira aplicação prática de uso da tecnologia da informação em larga escala


foi realizada pelas máquinas tabuladoras idealizadas por Hermann Hollerith
para tabular os dados do censo americano de 1890. Hollerith fundou uma
empresa, que após associação com outra empresa passou a chamar-se IBM
(International Business Machines).

24
AUTOATIVIDADE

Caro(a) acadêmico(a), como forma de fixar o conteúdo estudado realize


a autoatividade proposta a seguir:

1 A calculadora mecânica desenvolvida por Blaise Pascal é considerada um


marco no processo de criação e evolução de dispositivos de automação de
cálculos. Porém a calculadora de Pascal, denominada Pascalina, permitia
realizar apenas as operações de soma e subtração. Algum tempo depois,
outro pesquisador costruiu uma calculadora ditada também das operações
de divisão e multiplicação. Qual o nome desse pesquisador?

2 Muitos pesquisadores tiveram participação no processo de evolução dos


dispositivos de automação dos cálculos até que se chegasse aos modernos
computadores. Nessa trajetória de evolução há um pesquisador que é
considerado o pai do computador. Qual o nome dele?

3 Computadores são máquinas que precisam ser dotadas de “inteligência” para


que operem adequadamente. A essa “inteligência” chamamos software ou
simplesmente programas. A descrição de como programas deve funcionar foi
realizada no século XIX. Qual o nome da pessoa que descreveu os princípios
da programação de computadores?

4 As exigências do mundo moderno tornam a utilidade da tecnologia da


informação cada vez mais importante. Qual a primeira vez que a tecnologia
da informação foi utilizada em larga escala para atender a necessidade de
uma população?

25
26
UNIDADE 1
TÓPICO 3

EVOLUÇÕES DO INÍCIO DO SÉCULO XX

1 INTRODUÇÃO
Apesar de grandes projetos terem sido realizados nos séculos anteriores, é
no século XX que a computação toma corpo e dá um grande salto evolutivo. Neste
século ocorreu uma série de pesquisas que finalmente permitiram a construção e
funcionamento adequado dos computadores.

Inicialmente pensava-se apenas na automação de cálculos, depois se


percebeu que computadores poderiam ser utilizados com outras finalidades. É
neste período que muitos pesquisadores direcionaram seus esforços na pesquisa e
desenvolvimento de diversos dispositivos, componentes e equipamentos.

Iniciaremos a viagem pelos principais acontecimentos deste período, na


Europa, de onde surgiu grande parte da inteligência da computação. Em seguida
partiremos para os EUA, de onde também surgiram muitos projetos importantes
para a área da Computação/Informática.

2 A AUTOMAÇÃO DOS CÁLCULOS


No início do século XX o engenheiro civil alemão Konrad Zuse projetou
equipamentos calculadores cuja evolução permitiu que em 1934 fosse iniciado
o desenvolvimento de uma série de equipamentos conhecidos como máquinas
de cálculo controladas automaticamente. Zuse teve como motivação o fato de
ser muito difícil guardar os dados intermediários em longos cálculos utilizando
dispositivos mecânicos (ALMEIDA, 2002).

Nesta época Zuse considerava que um calculador automático necessitaria


apenas de três unidades básicas: uma controladora, uma memória e um
dispositivo de cálculo. Iniciou então o desenvolvimento do Z1, um equipamento
construído inteiramente com peças mecânicas que utilizava uma fita de película
cinematográfica para as instruções que controlavam a máquina (ALMEIDA, 2002).

27
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO

FIGURA 23 – CONRAD ZUSE

FONTE: Computer History Museum. Disponível em: <http://www.


computerhistory.org>. Acesso em: 10 mar. 2012.

Em 1938, um aluno de Zuse chamado Helmut Schreyer, construiu uma


parte do Z1 usando válvulas. Para a conclusão do projeto seriam necessárias
aproximadamente 1000 válvulas, mas em função das movimentações militares da
época não era possível conseguir tal quantidade deste material (ALMEIDA, 2002).

Iniciou-se então o desenvolvimento do Z2 usando relês. Tanto o Z1 quanto


o Z2 eram equipamentos que ainda não funcionavam satisfatoriamente. Apenas
em 1941 o primeiro modelo totalmente operacional de Zuse foi concluído, o Z3.
Este equipamento usava dois mecanismos separados para as funções aritméticas e
tinha uma unidade para conversão de números decimais para binário. O Z3 tinha
capacidade para executar três a quatro adições por segundo e multiplicava dois
números em quatro ou cinco segundos (ALMEIDA, 2002).

28
TÓPICO 3 | EVOLUÇÕES DO INÍCIO DO SÉCULO XX

FIGURA 24 – RÉPLICA DA UNIDADE BINÁRIA UTILIZADA NO Z1

FONTE: O autor.

Em 1944 um bombardeio destruiu a casa de Zuse e com ela o Z3. Logo


após a conclusão do Z3, foi iniciado o desenvolvimento do Z4 que era em essência
a mesma máquina, embora mais rápida e com maior capacidade de memória
(ALMEIDA, 2002).

Em função da guerra, Zuse conseguiu construir o Z4 apenas em 1950, na


Suíça. Em seguida, Zuse fundou uma empresa de computadores, absorvida depois
pela Siemens (ALMEIDA, 2002).

FIGURA 25 – JOHN VINCENT ATANASOFF

FONTE: Computer History Museum. Disponível em: <http://www.


computerhistory.org>. Acesso em: 10 mar. 2012.

29
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO

Na Universidade de Iowa, o professor de física John Vincent Atanasoff,


juntamente com John Berry, iniciou em 1935 um projeto denominado ABC
(Atanasoff-Berry Computer).

O ABC era uma máquina dedicada especialmente à solução de conjuntos


de equações lineares na Física. Funcionava por meio de válvulas, e possuía uma
leitora e perfuradora de cartões, o que propiciou o desenvolvimento dos primeiros
conceitos que iriam aparecer nos computadores modernos, a unidade de aritmética
eletrônica e a memória de leitura e gravação. Esta máquina tornou-se operacional
apenas em 1942 (ALMEIDA, 2002).

FIGURA 26 – ABC

FONTE: O autor.

A IBM iniciou em 1935 a produção de calculadoras baseadas em relês.


Estas calculadoras produziam em altas velocidades tabelas de vários tipos com
alta confiabilidade, conforme havia imaginado Babbage.

A evolução destes equipamentos se deu pela possibilidade deles poderem


ser programados através de painéis de controle para ler cartões perfurados,
executar os cálculos e posteriormente perfurar o resultado no mesmo cartão.
Empresas como a Remington Rand produziram equipamentos semelhantes
(ALMEIDA, 2002).

30
TÓPICO 3 | EVOLUÇÕES DO INÍCIO DO SÉCULO XX

FIGURA 27 – HOWARD HATHANWAY AIKEN

FONTE: Computer History Museum. Disponível em: <http://www.


computerhistory.org>. Acesso em: 10 mar. 2012.

O primeiro computador produzido pelos americanos cuja arquitetura


era eletromecânica foi o Harvard Mark I que foi desenvolvido em parceria entre
a Universidade de Harvard e a IBM (ALMEIDA, 2002). O Harvard Mark I foi
desenvolvido pelo matemático americano Howard Hathanway Aiken que atuava
como professor na Universidade de Harvard.

Esta máquina processava números com precisão de 23 dígitos e executava


as quatro operações aritméticas básicas, sequências de dados, tabelas de logatirmos
e funções trigonométricas (ALMEIDA, 2002). O Mark I era controlado através de
fitas de papel os quais eram perfurados por uma máquina de escrever elétrica.

FIGURA 28 – HARVARD MARK I

FONTE: IBM (2011)

31
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO

Dentre outras personalidades que contribuíram para o desenvolvimento


da tecnologia da informação, o inglês Alan Mathison Turing definitivamente foi o
mais significativo. Ele estava motivado a identificar um conjunto de procedimentos
que pudessem ser seguidos para deteminar se uma proposição matemática era ou
não suscetível de prova.

O resultado dos trabalhos de Turing em torno do tema foi publicado no


artigo “On computable numbers, with an application to the entschendungsproblem”
(STRATHERN, 2000). A obstinação de Turing por provas era tamanha que ele
queria provar através da matemática a existência, ou não, de Deus.

FIGURA 29 – ALAN MATHISON TURING

FONTE: Computer History Museum. Disponível em: <http://www.


computerhistory.org>. Acesso em: 10 mar. 2012.

Na realidade Turing descreveu a sequência de passos a serem seguidos


para execução do “processo de raciocínio” de uma máquina que poderia receber
um conjunto de elementos de entrada bastante variado. Turing chamou a sua
criação de computabilidade. Ele defendia a teoria de que “todo problema desde
que expresso de maneira lógica apropriada, poderia sempre ser resolvido”
(STRATHERN, 2000, p. 53).

A teoria da computabilidade foi desenvolvida em 1936 através da imaginação


de uma máquina que poderia efetuar de forma automática os processos, geralmente
desenvolvidos por um matemático. Para cada processo haveria uma máquina para
somar, outra para dividir, outra para calcular integrais e assim por diante.

32
TÓPICO 3 | EVOLUÇÕES DO INÍCIO DO SÉCULO XX

FIGURA 30 – ACE

FONTE: Computer History Museum. Disponível em: <http://www.computerhistory.


org>. Acesso em: 10 mar. 2012.

Raciocinando sobre o funcionamento dessas máquinas imaginárias, Turing


chegou a uma brilhante conclusão. Em vez de utilizar uma máquina específica
para cada processo matemático, era possível desenvolver um aparelho universal
(máquina universal) que tivesse condições de realizar tudo o que as máquinas
especializadas poderiam fazer, desde que fossem programadas para tal.

Turing também trabalhou num computador chamado ACE (Automatic


Computing Engine) para o Laboratório Nacional de Física da Inglaterra
(STRATHERN, 2000).

FIGURA 31 – ALAN TURING (na porta do ônibus)

FONTE: Hodges (2011)

33
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO

Por volta de 1939 com a eclosão da guerra contra a Alemanha nazista,


Turing foi designado a atuar em Bletchley Park na equipe de decifração de códigos.
Lá Turing teve notícia de que os alemães haviam desenvolvido uma máquina para
envio de mensagens codificadas para as frentes de batalha.

FIGURA 32 – ENIGMA

FONTE: O autor.

A tal máquina era conhecida pelo nome Enigma e se acredita que as


descobertas de Conrad Zuse tenham contribuído em sua construção (STRATHERN,
2000).

A principal atividade de Turing e sua equipe era examinar um conjunto


de mensagens codificadas procurando combinações e/ou padrões para encontrar
a chave de codificação das mensagens de forma que pudessem decodificá-las e ler
seu conteúdo.

34
TÓPICO 3 | EVOLUÇÕES DO INÍCIO DO SÉCULO XX

FIGURA 33 – COLOSSUS NO DIA D (6 de Junho de 1944)

FONTE: Computer History Museum. Disponível em: <http://www.


computerhistory.org>. Acesso em: 10 mar. 2012.

Essa era uma atividade relativamente rotineira, então Turing resolveu


construir uma máquina para executar tal atividade cuja base de funcionamento era
descrita em “On computable numbers”. Dessa iniciativa foi criada a Colossus, uma
máquina que recebia os textos de mensagens codificadas pela Enigma e procurava
nesse texto quaisquer frequência ou combinações que pudesse levar à chave de
decifração (STRATHERN, 2000).

Essa técnica é conhecida na área de criptografia como decifração por


força bruta. A Colossus é considerada um importante invento que contribuiu
de forma significativa para as forças aliadas. A versão mais aperfeiçoada dela
permitia decifrar uma mensagem codificada pela Enigma em questão de minutos
(STRATHERN, 2000).

FIGURA 34 – BRANCA DE NEVE E OS SETE ANÕES

FONTE: O autor

35
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO

Após a guerra, em função de sua homossexualidade, o que também era


caracterizado como “indecência flagrante” Turing foi preso e julgado. Por ter se
confessado culpado teve a pena amenizada, tendo sido condenado a um tratamento
hormonal ao invés da prisão.

O tratamento resultou em diversos efeitos colaterais o que supostamente


o levou a uma decisão fatal. Inspirado no filme Branca de Neve e os sete anões,
particularmente na cena em que a bruxa mergulha uma maçã no veneno ele tenha
determinado que terminaria seus dias comendo uma maçã envenenada. Na noite
de 7 de Junho de 1954 Turing comeu uma maçã envenenada e partiu para o sono
eterno (STRATHERN, 2000).

FIGURA 35 – LOGOMARCA DA APPLE COMPUTER

FONTE: Disponível em: <http://jscustom.theoldcomputer.com/images/


manufacturers_systems/Apple/266430apple-computer-logo.jpg>.
Acesso em: 8 jun. 2012.

Em determinado momento da história da Apple Computer, empresa que


desenvolveu a partir da década de 1970 diversos dispositivos computacionais
significativos para a evolução da tecnologia da informação, o símbolo da empresa
que é uma maçã com uma mordida recebeu as cores do arco-íris.

A empresa utilizou o símbolo dessa forma de 1976 até 1998. Aqueles


que conhecem a história e importância das contribuições de Alan Turing para a
tecnologia da informação logo relacionaram os elementos, porém a Apple nunca
admitiu oficialmente que o símbolo e as cores fossem uma alusão a Turing.

36
TÓPICO 3 | EVOLUÇÕES DO INÍCIO DO SÉCULO XX

FIGURA 36 – PRIMEIRA LOGOMARCA DA APPLE COMPUTER

FONTE: Disponível em: <http://2.bp.blogspot.com/-qIu6mRujtBY/


T4JS2Kc9NmI/AAAAAAAAAuc/YZ-JkQvQhjI/s1600/logo-apple-
antiga.jpg>. Acesso em: 8 jun. 2012.

De acordo com Wosniak (2011), o nome da Apple Computer surgiu na


Highway 85 num dia em que ele havia ido buscar Steve Jobs no aeroporto. Na
oportunidade Jobs voltava de uma visita a um local chamado apple orchard (pomar
de macieiras), então sugeriu o nome Apple Computer.

A explicação para o uso das cores do arco-íris teria sido sim uma alusão
a Newton, pois a primeira logomarca da empresa tinha Newton sentado sob uma
macieira. E a relação com as cores do arco-íris se justifica pelo fato de Newton também
ter desenvolvido uma teoria das cores baseado na observação de que o reflexo da luz
num prisma se decompõe em diversas cores.

UNI

Assista ao filme Enigma para conhecer mais sobre a Enigma, Colossus, Alan
Turing e também sobre a evolução da tecnologia da informação.

37
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO

Claude Elwood Shannon defendeu, em 1937, a tese de que os conceitos


de Geoge Boole teriam grande utilidade no campo da então eletromecânica. Ele
provou que a álgebra booleana e a aritmética binária poderiam ser utilizadas
para simplificar a organização de relês. O mais incrível foi que ele fez também
a analogia inversa, provando a possibilidade de usar organizações de relês para
resolver problemas de álgebra booleana.

FIGURA 37 – CLAUDE ELWOOD SHANNON

FONTE: Computer History Museum. Disponível em: <http://www.


computerhistory.org>. Acesso em: 10 mar. 2012.

Shannon também é conhecido como o pai da teoria da informação, devido


a uma publicação sua de 1948 entitulada Teoria Matemática da Comunicação (The
Mathematical Theory of Communication), na qual Shannon definiu uma medida
chamada de entropia. A medida de entropia de Shannon passou a ser considerada
como uma medida da informação contida numa mensagem. Entre outras
experiências, Shannon trabalhou com Vannevar Bush e nos Laboratórios Bell.

38
TÓPICO 3 | EVOLUÇÕES DO INÍCIO DO SÉCULO XX

FIGURA 38 – VANNEVAR BUSH

FONTE: Computer History Museum. Disponível em: <http://www.computerhistory.org>.


Acesso em: 10 mar. 2012.

Vannevar Bush é conhecido por suas contribuições na computação


analógica, seu papel político no desenvolvimento da bomba atômica e a ideia do
memex. Memex (memory extender) é o nome dado por Bush ao teórico sistema
de computador proto-hypertext. Este dispositivo teria links para uma biblioteca e
capacidade para apresentar livros e filmes e seguir referências cruzadas entre os
elementos. O memex influenciou o subsequente desenvolvimento do hipertexto.

39
RESUMO DO TÓPICO 3
Caro(a) acadêmico(a), nesse capítulo você estudou que:

• Uma das mentes mais brilhantes da história da Computação/Informática foi a


do britânico Alan Mathison Turing o qual nos deixou o legado do princípio da
computabilidade. Turing afirmava que todo problema que fosse devidamente
expresso através da lógica, poderia ser resolvido.

• Enigma foi o nome dado a uma máquina construída para codificação de


mensagens de guerra. Esta máquina foi utilizada pelas forças nazistas com
relativo sucesso até que outra máquina fosse criada para decodificar tais
mensagens.

• A tecnologia da informação também teve significativa participação no resultado


final da Segunda Guerra Mundial através da decifração de mensagens com a
máquina Colossus, que teve significativa participação de Alan Turing, pai da
teoria da computabilidade.

• Uma das empresas mais significativas dos últimos tempos na área de


Computação/Informática é a Apple Computadores, a qual foi fundada por Steve
Jobs e Steve Wosniak. Embora a grande maioria das pessoas que conhecem a
Apple a relacionem apenas a Steve Jobs, foi Steve Wosniak quem desenvolveu
seus primeiros projetos de computadores. As habilidades de Jobs e Wosniak
somadas é que permitiram à Apple se tornar o que é hoje, apesar de Wosniak ter
deixado a empresa há bastante tempo.

40
AUTOATIVIDADE

Caro(a) acadêmico(a), como forma de fixar o conteúdo estudado realize


a autoatividade proposta a seguir:

1 Diversas formas de representação dos números foram criadas através dos


tempos, porém teve uma representação que passou a ser adotada como
modelo universal. Como se chama esse modelo de algarismos?

2 Os primeiros computadores eram essencialmente baseados em dispositivos


eletromecânicos e a aritmética utilizada era a decimal. Num dado momento
um pesquisador iniciou o uso da aritmética binária. Qual o nome desse
pesquisador?

3 Durante a Segunda Guerra Mundial dois dispositivos para codificação e


decodificação de mensagens foram construídos. Esses dispositivos tiveram
grande significância em sua utilização relativa às comunicações de guerra.
Qual o nome deles?

4 A ideia de uma máquina que pudesse executar quaisquer instruções baseadas


em um programa foi concebido há bastante tempo, porém a descrição do
funcionamento de tal máquina foi realizada apenas no século XX. Qual o
nome do pai da teoria da computabilidade?

41
42
UNIDADE 1
TÓPICO 4

O BERÇO DA INFORMÁTICA

1 INTRODUÇÃO
É no século XX que ocorrem os principais eventos que conduziram a área
da Computação/Informática ao que conhecemos atualmente. Os mais importantes
em termos de fundamentos, ocorreram na primeira metade do século.

Já na segunda metade do século XX pode ser identificado um grande


volume de acontecimentos que conduziram a área da Computação/Informática ao
que é popularmente conhecido nos dias atuais.

2 O NASCIMENTO DA COMPUTAÇÃO
Em 1939 William Reddington Hewlett e David Packard, fundaram a
Hewlett-Packard Company (HP) na garagem da casa de David com um capital
inicial de US$ 538 (quinhentos e trinta e oito dólares).

O primeiro equipamento produzido pela HP foi um oscilador de áudio,


sendo que um dos primeiros clientes da empresa foi a Walt Disney. A Walt Disney
encomendou 8 osciladores de áudio HP 200B para uso no filme Fantasia. Foi a
primeira grande venda da HP (McLAUGHLIN; WEIMERS; WINSLOW, 2008).

A HP é responsável por muitas inovações tecnológicas, produzindo


equipamentos eletrônicos para testes e medições, calculadoras, computadores,
impressoras laser e impressoras a jato de tinta. A garagem que serviu como primeiro
endereço da HP é considerado o berço do Vale do Silício na Califórnia, EUA (HP,
2011).

43
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO

FIGURA 39 – GARAGEM DA HP

FONTE: O autor

Os princípios arquiteturais dos modernos computadores foram


desenvolvidos em 1944 por John Von Neumann da universidade da Pensilvânia.
Esta arquitetura ficou conhecida por “arquitetura de Von Neumann”.

Um dos principais conceitos estabelecidos foi o de programa armazenado,
ou programa interno. Diversos outros princípios foram propostos, mas nenhum
deles teve fundamentos tão concretos quanto os de Neumann (ALMEIDA, 2002).

FIGURA 40 – JOHN VON NEUMANN AO LADO DE UM COMPUTADOR IAS EM 1951

FONTE: O autor.

44
TÓPICO 4 | O BERÇO DA INFORMÁTICA

Almeida (2002) acrescenta que Von Neumann era fascinado pela física
quântica e também pela teoria dos jogos. Criou o método Monte Carlo, que utiliza
números aleatórios para resolver equações matemáticas.

Teve participação no Projeto Manhattan, colaborando no estudo de produção


da bomba atômica. Participou ainda dos projetos do ENIAC (Electronic Numeric
Integrator and Calculator) e do EDVAC (Electronic Discrete Variable Computer).

FIGURA 41 – JOHN PESPER ECKERT JR.

FONTE: Computer History Museum. Disponível em: <http://www.


computerhistory.org>. Acesso em: 10 mar. 2012.

O professor da Universidade da Pensilvânia John William Mauchly,


juntamente com o físico John Pesper Eckert Jr. colocaram em operação, no ano
de 1946, o ENIAC (Eletronic Numeric Integrator and Calculator). Este foi um dos
primeiros trabalhos importantes em computação eletrônica.

Entre muitos de seus componentes o ENIAC tinha em torno de 18.000


válvulas, 70.000 resistores e 10.000 capacitores. Consumia cerca de 150 Kwats
de potência, ocupando uma área de aproximadamente 1400 metros quadrados
(ALMEIDA, 2002). O ENIAC operou até 1955. John Mauchly é reponsável também
pelo desenvolvimento em 1949, de uma linguagem de programação de alto nível,
chamada Short Order Code.

45
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO

FIGURA 42 – ENIAC

FONTE: Computer History Museum. Disponível em: <http://www.


computerhistory.org>. Acesso em: 10 mar. 2012.

O primeiro computador eletrônico automático a ser produzido


comercialmente foi o UNIVAC (Universal Automatic Computer). Construído pela
Remington-Rand, o primeiro UNIVAC I foi enviado ao Bureau do censo de 1951,
sendo então usado para tabular os dados do recenseamento.

FIGURA 43 – UNIDADE DE OPERAÇÃO DO UNIVAC

FONTE: O autor.

O UNIVAC I também foi o primeiro computador usado para processamento


de dados em negócios, pela General Electric, na usina de Louisville, no ano de
1954. Com essa iniciativa dava-se o primeiro passo para o uso de computadores
como ferramenta de apoio aos negócios.

46
TÓPICO 4 | O BERÇO DA INFORMÁTICA

Em 1957 existiam três grandes linguagens para computadores: APT,


FORTRAN e FLOW-MATIC. Nesta época era grande a necessidade de uma
linguagem simples e padronizada para aplicações comerciais.

A linguagem que veio para solucionar este problema foi o COBOL (Common
Business Oriented Language), tendo sido em grande parte baseada na linguagem
FLOW-MATIC que foi desenvolvida por Grace Murray Hopper (ALMEIDA, 2002).

FIGURA 44 – GRACE MURRAY HOPPER

FONTE: Computer History Museum. Disponível em: <http://www.


computerhistory.org>. Acesso em: 10 mar. 2012.

A partir desse momento estava criado o computador como conhecemos


atualmente, os principais princípios dos sistemas básicos de operação (sistemas
operacionais) e algumas linguagens de programação que viriam a servir de base
para o desenvolvimento das demais linguagens de programação até as utilizadas
nos dias atuais.

3 NOVAS TECNOLOGIAS DA INFORMAÇÃO E


COMUNICAÇÃO
O termo tecnologia implica o conhecimento científico aliado aos métodos,
processos e ferramentas utilizados a partir deste conhecimento. Diante disso, pode-
se entender que a tecnologia é parte integrante de praticamente todas as áreas de
conhecimento. O desenvolvimento tecnológico por consequência está presente em
todas as áreas em maior ou menor grau.

47
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO

Recentemente experimentamos um desenvolvimento tecnológico bastante


significativo. Alguns dos grandes desenvolvimentos tecnológicos que merecem
destaque são a decodificação do DNA, TV digital, clonagem animal, ônibus
espacial, computador pessoal, internet e a educação a distância.

As Tecnologias da Informação e Comunicação, também tipicamente


referenciadas por TICs, são o conjunto de recursos tecnológicos utilizados por
uma parcela da sociedade com diversos objetivos. Na maioria dos casos as TICs
são utilizadas para automação de atividades, seja na indústria, no comércio ou na
educação.

As TICs também são largamente utilizadas no âmbito pessoal como forma


de se relacionar compartilhando informações, conteúdos e sentimentos. Alguns
exemplos de TICs são os computadores pessoais, tablets, telefonia celular, internet,
correio eletrônico, tecnologias de acesso remoto (wireless) e tecnologias digitais
para captação e tratamento de sons e imagens.

UNI

Você provavelmente utiliza pelo menos uma destas TICs no seu dia a dia, certo? E
realmente estas tecnologias vieram para tornar nossas vidas melhores, você não acha?

O desenvolvimento das TICs tem gerado uma série de consequências


para a sociedade. Dentre estas se podem destacar o aumento da competitividade
empresarial e as pessoas em relação à suas posições dentro das empresas.

As TICs têm influenciado também, nos processos de planejamento e ações


das empresas, fazendo com que algumas empresas transformassem seus negócios
em poucos anos. Um exemplo é a corrida para oferta de produtos através de sites na
internet. Esta corrida requer preocupação com a tecnologia envolvida, a segurança
dos dados e informações da empresa e dos clientes, organização em termos de
logística para realizar a entrega dos produtos vendidos, entre outras providências.

As TICs têm influenciado também, na queda dos custos de artefatos


tecnológicos bem como queda nos custos de processamento de dados, de serviços
e de determinados produtos em função dos recursos tecnológicos empregados.
Num panorama geral, as consequências para os indivíduos e a sociedade têm sido
bastante positivas, permitindo acesso a informações, produtos e serviços, o que se
pode caracterizar como melhoria na qualidade de vida.

Porém, você sabe qual a diferença entre informação e conhecimento? Então


vamos lá, vamos explicar um pouco melhor esses conceitos, pois não podemos
48
TÓPICO 4 | O BERÇO DA INFORMÁTICA

confundir informação com conhecimento. A informação é um conjunto de


conteúdos que estão disponíveis. O conhecimento é fruto do processamento destas
informações transformando-a em algo novo a partir das informações disponíveis.

Logo, a informação não necessariamente gera conhecimento, pois é


necessário que o indivíduo entenda e processe a informação transformando-a
em conhecimento. Diante deste quadro e da realidade em termos de uso de TICs
pode-se ter evidências de que vivemos a sociedade da informação, que é um
pouco diferente do que se define como sociedade do conhecimento ou era do
conhecimento.

São consideradas, entre outras, as Novas Tecnologias da Informação e


Comunicação os computadores pessoais, telefonia móvel, TV por assinatura,
correio eletrônico, internet, tecnologias digitais e tecnologias de acesso remoto
(MARINHO, 2011).

4 TECNOLOGIA DA INFORMAÇÃO E O ENSINO


John McCarthy juntamente com Marvin Minski desenvolvem, em 1956, o
conceito de inteligência artificial. Em 1959 McCarthy desenvolveu a linguagem
Lisp (List Processing), primeira linguagem de programação para aplicações em
inteligência artificial.

Atualmente, a inteligência artificial é largamente utilizada em diversas


áreas do saber. Na educação a inteligência artificial pode ser utilizada em
jogos educacionais ou ferramentas de simulação que permitam desenvolver
determinadas competências (ALMEIDA, 2002).

FIGURA 45 – JOHN MCCARTHY

FONTE: Computer History Museum. Disponível em: <http://www.


computerhistory.org>. Acesso em: 10 mar. 2012.

49
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO

Steve Russel, estudante do MIT (Massachussets Institute of Technology)


desenvolveu em 1962 um dos primeiros jogos para computador, denominado
Spacewar. O jogo Spacewar inspirou o desenvolvimento dos vídeo-games
(ALMEIDA, 2002).

FIGURA 46 – MARVIN MINSKI

FONTE: Computer History Museum. Disponível em: <http://www.


computerhistory.org>. Acesso em: 10 mar. 2012.

Embora haja o entendimento de que jogos são caracterizados como uma


prática reacreativa, as visões mais modernas acerca da utilização de jogos no
processo de ensino e aprendizagem definem que podem e devem ser utilizados
para tal finalidade. As características intrínsecas têm tornado os jogos um veículo
de aprendizagem e comunicação ideal para o desenvolvimento do educando
(MURCIA, 2005).

FIGURA 47 – TELA DO JOGO SPACEWAR

FONTE: Computer History Museum. Disponível em: <http://www.


computerhistory.org>. Acesso em: 10 mar. 2012.

50
TÓPICO 4 | O BERÇO DA INFORMÁTICA

Embora pareça uma abordagem moderna, a utilização de jogos como


ferramenta educacional é uma prática antiga. A utilização de jogos com finalidades
educacionais foi iniciada em Roma e Grécia Antiga (KISHIMOTO, 1999). Embora
fossem utilizados, os jogos não eram considerados ferramentas adequadas pela
pedagogia tradicional, na qual o processo de ensino e aprendizagem era fortemente
centrada na figura do educador. Naquela época os jogos eram considerados
inadequados para serem utilizados na educação (MURCIA, 2005).

Apenas a partir da segunda metade do século XX é que se intensificaram


as pesquisas sobre a utilização de jogos como ferramenta no processo de ensino
e aprendizagem. Na década de 1960 foram alocados recursos em inúmeras
universidades dos Estados Unidos para realização de pesquisas na área de jogos
educacionais (ROCHA, 1997).

Os professores John Kemeny e Thomas Eugene Kurtz, desenvolveram em


1964, com finalidades didáticas, a linguagem BASIC (ALMEIDA, 2002). O nome
BASIC na realidade é uma sigla que significa Beginner’s All-Purpose Symbolic
Instruction Code, ou seja, conjunto de instruções simbólicas de múltiplos propósitos.

O BASIC é mais um exemplo de preocupação em termos de desenvolvimento


de recursos tecnológicos que permitam facilitar a aprendizagem. BASIC também
é o nome genérico dado a uma grande família de linguagens de programação
derivadas do BASIC original.

FIGURA 48 – TARTARUGA RETRATANDO SEYMOUR PAPERT

FONTE: PAPERT (2011)

51
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO

Teve contribuição também no uso da tecnologia para o ensino Seymour


Papert, matemático e importante educador do MIT (Massachussets Institute of
Technology). Papert é um pesquisador bastante conhecido pelas pesquisas em
torno do uso de computadores na educação. Na década de 1970, quando os
computadores eram bastante limitados e ainda não possuía interface gráfica ele
criou uma linguagem de programação denominada Logo. A ideia da linguagem
LOGO era de um programa de desenho que controlava as ações de uma tartaruga
mecânica traçando uma trilha com uma caneta no papel (ALMEIDA, 2002).

Papert também é conhecido pela criação do termo construcionismo


que é uma abordagem do construtivismo cuja essência está em permitir que o
estudante construa o seu conhecimento podendo se valer de ferramentas como o
computador, para auxiliá-lo. Ele defendia o uso da tecnologia como ferramenta de
apoio à educação. O computador pode ser um importante elemento para auxiliar o
estudante no processo de construção de conhecimentos. (ALMEIDA, 2002).

No ano de 1969 o governo americano interligou as máquinas da ARPANET.


Essa ação formou uma rede interligada de equipamentos a partir da qual foi
formada a internet (ALMEIDA, 2002). É importante destacar que a ARPANET foi
uma rede de comunicações concebida com finalidade exclusivamente militares.

FIGURA 49 – NIKLAUS WIRTH

FONTE: Computer History Museum. Disponível em: <http://www.


computerhistory.org>. Acesso em: 10 mar. 2012.

O professor Niklaus Wirth, que atuou na Universidade de Stanford e


na Swiss Federal Institute of Technology (ETH), desenvolveu no ano de 1971 uma
linguagem de programação destinada ao ensino de programação para acadêmicos
iniciantes na área de Ciência da Computação.

52
TÓPICO 4 | O BERÇO DA INFORMÁTICA

A contribuição de Wirth com a linguagem Pascal é muito significativa,


pois ainda hoje a linguagem é utilizada em diversos locais do mundo para ensinar
programação. Niklaus Wirth contribuiu também com o desenvolvimento de outras
duas linguagens de programação denominadas Algol-W e Modula.

5 O SURGIMENTO DA TECNOLOGIA DA INFORMAÇÃO


COMO A CONHECEMOS
A tecnologia da informação tal qual a conhecemos na atualidade iniciou
uma trajetória de grande evolução a partir da década de 1970 quando empresas
como Apple, IBM, Microsoft entre outras, iniciaram o desenvolvimento de
computadores e softwares para uso pessoal.

Até aquele momento não se imaginava que o computador pudesse ser


utilizado para atividades pessoais. Imaginava-se apenas que computadores
serviam esclusivamente para realização de cálculos complexos em projetos de
pesquisa de Universidades ou para processamento de dados de negócios.

Bill Gates juntamente com Paul Allen fundam em 1975 a Microsoft. “Um
computador em cada casa e em cada mesa de trabalho.” Essa era a proposta
da Microsoft quando a empresa foi fundada. Hoje, depois de ajudar a tornar a
tecnologia acessível a milhões de pessoas no Brasil e no mundo, a Microsoft acredita
que essa ferramenta viabiliza grandes realizações agora e para o futuro. Por isso,
definiu o desenvolvimento humano como elemento fundamental de sua missão
corporativa. Mais do que fornecer softwares e serviços, a empresa deseja desenvolver
tecnologias e estimular o crescimento de cadeias de valor que sejam instrumentos
para um mundo de oportunidades e prosperidade. Para a Microsoft, o sucesso
não se materializa por meio do software, mas sim das incríveis realizações que as
pessoas podem fazer com ele. É pensando nisso que a empresa desenvolve soluções
tecnológicas para que as pessoas possam atingir seu potencial pleno, seja em casa,
na escola ou no trabalho. Fundada em 1975 nos Estados Unidos e presente no Brasil
desde 1989, a Microsoft construiu uma trajetória sólida de incentivo à inovação. Suas
criações ajudaram a transformar o modo como as pessoas se comunicam, trabalham,
divertem-se e gerenciam suas rotinas. O objetivo da Microsoft é ajudar a sociedade a
transpor barreiras e tornar a tecnologia uma ferramenta de desenvolvimento social e
econômico. Mais do que a maior companhia de software do mundo, a Microsoft é uma
empresa local em cada país e comunidade onde seus funcionários vivem e exercem
suas atividades profissionais. Para consolidar seu objetivo de inovação constante, a
Microsoft apoia inúmeras iniciativas em todo o mundo. No Brasil, mantém mais de 20
Centros de Inovação espalhados por todo o país, nos quais a comunidade acadêmica
e o empresariado local se reúnem para gerar conhecimento e abrir possibilidades de
estágio e postos de trabalho qualificado para os jovens. Também apoia projetos de
inclusão digital e incentiva a renovação do processo de aprendizagem, por meio do
uso intensivo da informática por professores e alunos das escolas públicas.
FONTE: MICROSOFT. Disponível em: <http://www.microsoft.com>. Acesso em: 11 dez. 2011.

53
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO

UNI

Se você tiver interesse em saber mais sobre a Microsoft e sua história, consulte o
site <http://www.microsoft.com>.

A Microsoft iniciou sua trajetória desenvolvendo softwares para um


computador denominado Altair, produzido pela empresa MITS.

FIGURA 50 – ALTAIR

FONTE: O autor.

A Microsoft é uma empresa que contribuiu muito para que a tecnologia


da informação esteja no estado atual, pois através de seus softwares popularizou
significativamente a utilização de computadores.

54
TÓPICO 4 | O BERÇO DA INFORMÁTICA

FIGURA 51 – MICROSOFT NA DÉCADA DE 1970

FONTE: Computer History Museum. Disponível em: <http://www.


computerhistory.org>. Acesso em: 10 mar. 2012.

Os softwares da Microsoft têm uma característica de facilitar o uso da


tecnologia por uma parcela significativa da população.

FIGURA 52 – UNIDADE DA MICROSOFT DO VALE DO SILÍCIO, CA

FONTE: O autor

55
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO

Em 1976, Steven Paul Jobs, mais conhecido como Steve Jobs juntamente
com Steve Wosniak, seu colega de trabalho na HP, projetaram e construíram um
computador pessoal o qual batizaram de Apple I.

FIGURA 53 – GARAGEM NA QUAL FOI FUNDADA A APPLE COMPUTER

FONTE: O autor

O protótipo do Apple I foi construído na garagem da casa de Steve, a qual


também foi o primeiro endereço da Apple Computadores. O capital inicial da
Apple foi em torno de US$ 1.300,00 (mil e trezentos dólares), dinheiro proveniente
da venda do Volkswagen Kombi de Jobs e da calculadora científica HP de Wosniak,
seus bens mais preciosos.

FIGURA 54 – APPLE I

FONTE: Computadores e informática (2011)

56
TÓPICO 4 | O BERÇO DA INFORMÁTICA

O Apple I que era comercializado por US$ 666,00 (seiscentos e sessenta


e seis dólares), no primeiro ano rendeu um faturamento de US$ 774.000,00
(setecentos e setenta e quatro mil dólares). Um ano mais tarde foi lançado o Apple
II, o primeiro computador da Apple com interface gráfica, que logo se tornou um
grande sucesso.

FIGURA 55 – APPLE II

FONTE: O autor.

A partir de 1980 a Apple passou a ser cotada na bolsa de valores. Os demais


produtos lançados pela Apple até o final da década de 90 foram o Apple III, Lisa
(nome da primeira filha de Jobs), Lisa II, Macintosh, Cyberdog, Newton, eMate,
Powerbook, QuickTime, Power Macintosh, iMac, iPod, MacBok, iPhone, iPad,
entre outros.

FIGURA 56 – APPLE LISA 2

FONTE: O autor.

57
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO

A Apple Computer é uma empresa cujas contribuições para a evolução da


tecnologia da informação são relevantes. A Apple foi responsável pela criação de
uma série de novos conceitos utilizando a tecnologia como meio.

FIGURA 57 – APPLE MACINTOSH

FONTE: O autor.

A lista de criações realizadas pela Apple é bastante extensa, então serão


listados os três considerados mais relevantes do ponto de vista do autor.

FIGURA 58 – STEPHEN PAUL JOBS (STEVE JOBS)

FONTE: APPLE (2011)

58
TÓPICO 4 | O BERÇO DA INFORMÁTICA

Pode-se dizer que a Apple foi responsável pela criação de três divisores de água
na história da tecnologia da informação. O primeiro divisor de águas foi a introdução
do conceito de computador pessoal através do Apple I. Até então, não se pensava em
computadores para pessoas comuns e falar sobre isso era motivo de piada.

FIGURA 59 – iPhone 4S

FONTE: APPLE (2011)

O segundo divisor de águas foi o Macintosh, que introduziu de forma


definitiva o uso de interface gráfica e uma série de outros conceitos que vieram
com o mesmo. O terceiro divisor está relacionado ao novo conceito de celular que
foi introduzido através do iPhone.

Vários recursos utilizados pelo iPhone foram criados no passado, porém


o iPhone reuniu uma série de recursos e funcionalidades que o tornaram útil e
desejável por uma parcela sigificativa de pessoas.

FIGURA 60 – SEDE ATUAL DA APPLE COMPUTER NA CALIFÓRNIA

FONTE: O autor

59
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO

Lamentavelmente, no dia 5 de Outubro de 2011, a área de tecnologia da


informação perdeu seu mais importante representante dos tempos recentes da
tecnologia. Steve Jobs faleceu vítima de um tumor no pâncreas.

Steve Jobs merece ser lembrado, pois é reponsável pelos principais divisores
de água criados na Apple e por ter impulsionado pesquisas e desenvolvimento de
tecnologias que, possivelmente, jamais teriam sido criadas sem a determinação de
uma pessoa como ele.

FIGURA 61 – TIM BERNERS-LEE

FONTE: Vidas famosas (2011)

Timothy John Berners-Lee, mais conhecido como Tim Berners-Lee propôs


em 1990 a World Wide Web com o desenvolvimento da linguagem HTML
(ALMEIDA, 2002). O primeiro website construído por Tim Berners-Lee era uma
página com apenas texto que foi publicada em agosto de 1991.

O conteúdo da página se resumia a uma explicação sobre o que era a World


Wide Web, além de informações sobre instalação e configuração de um servidor
web. A Web faz uso da internet, que na verdade é a rede de comunicação, para
poder funcionar. Tipicamente um website precisa trafegar suas informações através
da internet.

60
TÓPICO 4 | O BERÇO DA INFORMÁTICA

FIGURA 62 – SÍMBOLO ARROBA

FONTE: O autor

Passados pouco mais de vinte anos da criação da Web, ela se tornou uma
ferramenta praticamente indispensável para determinadas áreas de negócios.
Muitos tipos de negócios não existiriam se não fosse a Web e outros não teriam
crescido tanto.

Diante disso, há também, aqueles negócios que deixaram de existir e outros


que tiveram que ser reinventados. Diante de todo esse quadro de mudanças que
ocorreram o saldo é positivo, ou melhor, incalculavelmente positivo.

FIGURA 63 – COMPUTER HISTORY MUSEUM

FONTE: O autor

61
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO

UNI

Caro(a) acadêmico(a), caso queira conhecer ainda mais sobre a evolução da


tecnologia da informação, acesse o site <http://www.computerhistory.org> do Museu de
História do Computador (Computer History Museum). Certamente você gostará muito das
informações que encontrará no site do museu.

Nas ciências, por exemplo, a velocidade em que uma descoberta se torna


conhecida pela comunidade científica é praticamente instantânea. O acesso
ao conhecimento se tornou algo incomparavelmente melhor aos tempos que
antecederam a Web.

UNI

Assista ao filme Os Piratas do Vale do Silício para saber mais sobre a história
recente das principais empresas que contribuíram para o atual estado da tecnologia da
informação.

FIGURA 64 – CAMPUS DA UNIVERSIDADE CARNEGIE MELLON NA CALIFÓRNIA

FONTE: O autor

62
TÓPICO 4 | O BERÇO DA INFORMÁTICA

É importante você observar que algumas organizações (empresas,


universidades, centros de pesquisa, entre outros), tiveram grande participação
na evolução da computação. Algumas das principais são: Apple Computadores,
AT&T, Bell Labs, IBM, Universidade Carnegie Mellon, MIT (Massachusets Institute
of Technology), Microsoft, PARC (Palo Alto Research Center), SEI (Software Engeneering
Institute), Universidade de Berkeley, Universidade de Cambridge, Universidade
da Pensilvânia, Universidade de Stanford, Xerox, entre outros.

FIGURA 65 – CAMPUS DA UNIVERSIDADE DE STANFORD

FONTE: O autor

Caro(a) acadêmico(a), no momento em que você estiver lendo este Caderno


de Estudos a tecnologia da informação, provavelmente não será a mesma de
quando foi escrito. Isso se deve não apenas ao fato da evolução se dar de forma
bastante acelerada, mas também, porque a evolução é produto de um processo que
se desenvolve de maneira praticamente contínua. Muitas das novas tecnologias
utilizadas no momento são, por exemplo, fruto da ressignificação de antigas
tecnologias em favor de uma utilidade do momento.

A leitura complementar desta unidade do Caderno de Estudos é um trecho


do livro de Steve Wosniak no qual ele conta como foi o processo de criação do
primeiro computador da Apple, o Apple I. Boa Leitura!

63
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO

LEITURA COMPLEMENTAR

APPLE I

Nunca fui o tipo de pessoa que tivesse coragem de erguer a mão durante
a principal reunião do Homebrew e dizer: “Ei, vejam este grande avanço na
computação que criei”. Não, nunca conseguiria dizer isso diante de uma garagem
lotada de pessoas.

Mas após todas as reuniões de quarta-feira, eu instalava meu material


em uma mesa e quem quisesse era bem-vindo para se proximar e fazer qualquer
pergunta. Eu respondia a todos.

Mostrei o computador que mais tarde ficou conhecido como Apple I em todas
as reuniões após conseguir fazê-lo funcionar. Nunca planejei antecipadamente o
que iria fazer. Apenas começava a demonstração e deixava as pessoas fazerem as
perguntas que eu sabia que fariam, ou seja, as questões que eu queria responder.

Eu estava tão orgulhoso de meu projeto – e acreditava tanto na missão


do clube em relação ao avanço da informática – que tirei talvez uma centena de
cópias xerox de todo ele (inclusive do programa monitor) e as distribuí para quem
quisesse. Eu esperava que, a partir de meu projeto, os membros do Homebrew
pudessem montar os próprios computadores.

Queria que todos vissem pessoalmente meu grande projeto: um computador


com apenas 30 chips dentro dele, fato que chocava a todos. É certo que tinha a
mesma quantidade de chips do Altair, exceto que este não conseguia fazer nada a
menos que um monte de outros equipamentos caros fosse comprado e conectado
ao computador. Meu computador, porém, era barato desde o início. Além disso, o
fato de as pessoas poderem usar a TV de casa como tela em vez de pagar milhares
de dólares por um teletipo (aparelho telegráfico utilizado sobretudo em agências
de notícias, jornais, revistas etc., que transmite diretamente um texto, por meio de
um teclado datilográfico, registrando a mensagem, no posto receptor, sob a forma
de letras impressas) colocava-o em outra categoria.

Eu não ficaria satisfeito apenas digitando 1s e 0s dentro dele. Meu objetivo


desde o colégio era ter um computador que eu pudesse programar, embora sempre
tivesse assumido que a linguagem a ser utilizada seria o FORTRAN.

O computador que eu havia montado ainda não tinha uma linguagem.


Naquela época, em 1975, um jovem rapaz chamado Bill Gates estava começando a
ter um pouco mais de fama em nossos círculos ao desenvolver um intérprete em
linguagem BASIC para o Altair. Nosso clube tinha uma cópia de tal programa em
uma fita que podia ser lida com um teletipo, tarefa que levava cerca de 30 minutos
para ser concluída. Além disso, por volta da mesma época, foi lançado um livro
chamado 101 Basic Computer Games (101 Jogos de Computador em Basic). Eu podia
sentir o cheiro de algo no ar.

64
TÓPICO 4 | O BERÇO DA INFORMÁTICA

Por isso decidi que o BASIC seria a linguagem correta a desenvolver para
o Apple I e o microprocessador 6502. Isso significava que se eu desenvolvesse um
programa BASIC para ele, o meu poderia ser o primeiro. E eu poderia até ficar famoso
por isso. As pessoas diriam: “Ah, Steve Wosniak, ele fez o BASIC para o 6502”.

Seja como for, as pessoas que viram meu computador puderam vislumbrar
o futuro. Estávamos diante de uma via de mão única: uma vez nela, não se poderia
mais voltar atrás.

A primeira vez que mostrei meu projeto foi com o static RAM (SRAM) – o
tipo de memória que estava em meu Computador Cream Soda. Mas as revistas
sobre eletrônica que eu lia vinham falando sobre um novo chip de memória
chamado dynamic RAM (DRAM), que teria 4 Kbytes por chip.

Essas revistas vinham anunciando a DRAM como a primeira vez que


uma memória de chip de silício seria mais barata que uma memória de núcleo
magnético, pois, até então, todos os principais computadores, como os sistemas da
IBM e da Data General, ainda utilizavam memória de núcleo (core).

Percebi que os 4 Kbytes da DRAM – que eu precisava como mínimo


– utilizariam somenete 8 chips, em vez de 32 chips SRAM que eu havia pego
emprestado de Myron. Meu objetivo desde o colégio foi sempre utilizar a menor
quantidade de chips possível, então aquele seria o caminho a seguir.

A maior diferença entre a SRAM e a DRAM é que precisava ser


continuamente atualizada ou perderia seu conteúdo; ou seja, o microprocessador
teria de atualizar eletricamente cerca de 128 endereços diferentes da DRAM a cada
dois milésimos de segundo para evitar que seus dados fossem esquecidos.

Assim, adicionei DRAM desenvolvendo as especificações na tela – segurei


o sinal de relógio (clock) do microprocessador estável, mantendo as transições
desligadas, durante um período de tempo chamado de “atualização horizontal”.

Você sabe que a TV rastreia uma linha de cada vez em seu aparelho, de
cima para baixo? Ele leva cerca de 65 microssegundos (milionésimos de segundo)
para varrer cada uma. Acontece que cerca de 40 desses microssegundos são visíveis
e os outros 25 não são. Durante esse tempo de 25 microssegundos, o chamado
período de atualização, inseri 16 endereços exclusivos para a DRAM (obtive esses
endereços de graças, utilizando os contadores do terminal, que estavam gerando
sinais de vídeo).

Eu tinha chips de seleção que selecionavam os endereços que vinham dos


chips horizontais e verticais do terminal durante esse período. Surpreendentemente,
foram precisos somente dois desses chips de seleção e talvez mais um ou dois chips
em termos de lógica para fazer todo o processo. Assim, na verdade, roubei alguns
ciclos do microprocessador para atualizar a DRAM.

65
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO

Não tinha ideia alguma de como obter um chip DRAM, mas por sorte,
bem naquela época, alguém do clube que trabalhava na AMI estava vendendo
alguns chips DRAM de 4 Kbytes por um preço razoável. Isso foi antes sequer de eles
chegarem ao mercado. Vejo agora que alguém deve tê-los roubado da AMI, mas
não perguntei nada a respeito.

Comprei 8 deles do sujeito da AMI por cerca de 5 dólares cada e modifiquei


meu projeto. Acrescentei alguns fios ao conector de memória na placa do Apple I
para que ela pudesse acomodar tanto uma placa SRAM como uma placa DRAM.
Instalei a nova placa DRAM e ela funcionou desde o primeiro instante.

Eu vinha mostrando-me excitante projeto para Steve Jobs. Ele me


acompanhou algumas vezes ao Homebrew, ajudando-me a carregar minha TV.
Ele ficou me perguntando se eu conseguiria montar um computador que pudesse
ser utilizado para compartilhamento de tempo – como o microprocessador usado
por uma empresa local chamada Call Computer, localizada em Mountain View.

No ano anterior, eu e Steve havíamos vendido meu terminal ARPANET


para a Call Computer, dando-lhe o direito de fabricação e venda.

“Claro”, eu disse. “Algum dia”. Podia ser feito, pensei, mas então já seria
antiquado.

Depois ele perguntou se algum dia eu poderia acrescentar um disco para


armazenamento. Novamente eu disse: “Claro. Algum dia”. E isso também parecia
ser antiquado.

Então, alguns dias depois de conseguir colocar as memórias DRAM da AMI


para funcionar, Steve me telefonou de seu trabalho e me perguntou se eu tinha chegado
a pensar em utilizar memórias DRAM da Intel em vez das memórias da AMI.

“As da Intel são melhores, claro, mas nunca conseguiria comprá-las”,


respondi; Steve me pediu para esperar um minuto.

Ele deu alguns telefonemas e como por um milagre conseguiu algumas


memórias DRAM de graça da Intel – inacreditável, considerando seu preço e
raridade na época. Steve é esse tipo de pessoa. Quer dizer, ele sabia como conversar
com um representante de vendas. Eu nunca conseguiria fazer algo assim; era muito
tímido.

Mas ele conseguiu os chips DRAM da Intel. E com eles em mãos, refiz o
projeto em torno deles. Fiquei muito orgulhoso porque meu computador pareceu
ainda melhor. Precisei adicionar um par de chips ao meu computador para fazê-lo
funcionar com as nova memórias, mas os chips da Intel eram fisicamente muito
menores que os da AMI.

Tenho de interromper aqui e explicar por que era interessante ter um


chip de tamanho menor. Lembra-se de quando eu disse que meu objetivo desde
66
TÓPICO 4 | O BERÇO DA INFORMÁTICA

o colégio sempre foi ter o menor número possível de chips? Bem, essa não é a
história toda. Certa vez, no colégio, eu estava tentando conseguir chips para um
computador que havia projetado. Meu pai me levou à Fairchild Semiconductor,
empresa que inventou o semicondutor, e me apresentou um engenheiro que ele
conhecia. Então contei ao tal engenheiro que havia pegado um minicomputador
já existente no mercado e o projetado de duas maneiras. Achei que se utilizasse os
chips da Sygnetics (concorrente da Fairchilds), o computador teria menos chips do
que se utilizasse os da Fairchild.

O engenheiro me perguntou que chips da Sygnatics eu tinha utilizado.

Então lhe passei a marca e o número do modelo.

Ele ressaltou que os chips da Sygnetics que eu utilizara no projeto eram


muito maiores em termos de tamanho físico, com muito mais pinos e muito
mais fios para conectar que os chips equivalentes da Fairchild, o que adicionava
complexidade à montagem.

Fiquei aturdido. Essa colocação do engenheiro me fez perceber naquele


instante que o projeto mais simples de computador deveria ter, de fato, menos
conexões, e não simplesmente menos chips. Portanto, meu objetivo mudou: em
vez de projetar buscando somente usar menos chips, eu tentaria a partir dali ter a
menor placa possível também em termos de tamanho.

Geralmente menos chips significavam menos conexões, mas nem sempre.

Voltando ao projeto da DRAM da intel para o Apple I, a troca das memórias


significava que eu poderia reduzir o tamanho total da placa, embora tivesse de
adicionar alguns chips para fazê-lo.

Olhando em retrospectiva, seguir o projeto daquele computador com chips


da Intel doi uma decisão de muita sorte, porque, no final, aquele projeto de chip se
tornou padrão para todos os chips de memória usados até hoje.

Por volta do Dia de Ação de Graças de 1975, Steve já tinha me acompanhado


em algumas reuniões da Homebrew. Então ele me disse ter observado algo: as
pessoas no clube estão estudando diagramas esquemáticos, mas eles não possuem
tempo ou habilidade suficientes para montar o computador descrito nos esquemas.

Então ele propôs: “Por que não fabricarmos e depois vendermos as placas
de circuito impresso para elas? Assim, as pessoas poderiam soldar todos os chips
que já possuíam em uma placa de circuito impresso (printed circuit – PC) e ter
um computador em poucos dias em vez de em algumas semanas”. A maior parte
do trabalho mais difícil já estaria feita. A ideia de Steve era que gastássemos 20
dólares para confeccionar as placas de circuitos pré-impressos e as vendêssemos
por 40 dólares. As pessoas achariam isso um grande negócio, pois, afinal, estavam
obtendo chips quase de graça.

67
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO

Francamente, eu não conseguia ver como poderíamos recuperar o dinheiro


gasto. Imaginei que precisaríamos investir cerca de mil dólares para que uma
empresa de computadores imprimisse as placas. E para obter o dinheiro de
volta, teríamos de vender a placa de 40 dólares para 50 pessoas. Eu não achava
que existiriam 50 pessoas no Homebrew interessadas em comprar a placa. Afinal
àquela altura, o clube possuía cerca de 500 membros apenas, e a maioria era de
admiradores do Altair.

Mas Steve teve um bom argumento. Estávamos no carro dele e ele disse
– e posso me lembrar dele dizendo isto como se fosse ontem: “Bem, mesmo que
percamos nosso dinheiro, teremos uma empresa. Pelo menos uma vez em nossas
vidas teremos uma empresa”.

Pelo menos uma vez em nossas vidas teríamos uma empresa. Aquilo
me convenceu. Fiquei muito animado em pensar sobre nós daquela forma: dois
grandes amigos começando uma empresa. Soube naquele momento que faria isso.
Como poderia não fazer?

FONTE: WOSNIAK, Steve. iWoz: a verdadeira história da Apple segundo seu cofundador. São
Paulo: Évora, 2011, p. 139 - 144.

68
RESUMO DO TÓPICO 4
Caro(a) acadêmico(a), nesse tópico você estudou que:

• A garagem da HP é considerada o berço da primeira região de alta tecnologia


do mundo, o Vale do Silício. A ideia de tal região foi motivada pelo professor
de Stanford, Frederick Terman que encorajou seus acadêmicos a empreenderem
seus negócios ao invés de trabalharem como funcionários de outras empresas.
Os primeiros estudantes a seguirem sua recomendação foram William Hewlett
e David Packard, os quais desenvolveram em 1938 seu primeiro produto, um
oscilador de áudio na garagem de casa em Palo Alto, Califórnia, EUA.

• Diversos computadores foram desenvolvidos antes do ENIAC, porém ele é


o primeiro computador eletrônico da história. O ENIAC foi desenvolvido na
Universidade da Pensilvânia pelos professores John Mauchly e John Eckert e
passou a operar a partir do ano de 1946.

• Entre os diversos usos que se pretendeu fazer com a tecnologia da informação,


a educação não ficou de fora. As pesquisas em torno do uso da tecnologia da
informação em benefício da educação iniciaram há muito tempo. Na tecnologia
da informação como conhecemos atualmente as primeiras iniciativas se dão na
década de 1950 com o desenvolvimento do conceito da Inteligência Artificial.

• A evolução da tecnologia da informação se deve a um grande conjunto de


pesquisadores e instituições. Dentre as instituições se destacam as Universidades
de Stanford, Berkeley, Cambridge, Pensilvânia, Carnegie Mellon, SEI (Software
Engeneering Institute) e MIT (Massachusets Institute of Technology). E também à
IBM, Apple Computadores, Microsoft, AT&T, Bell Laboratories e Xerox PARC
(Palo Alto Research Center).

69
AUTOATIVIDADE

Caro(a) acadêmico(a), como forma de fixar o conteúdo estudado realize


a autoatividade proposta a seguir:

1 A internet é produto de pesquisas sobre comunicação de dados para


finalidades militares. O objetivo inicial da rede era permitir a comunicação
mesmo que um dos nós entre emissor e receptor falhasse ou estivesse fora de
operação. Por esse motivo criou-se o conceito de roteamento, no qual cada
vez que a comunicação é estabelecida pode ocorrer numa diferente rota.
Qual o primeiro nome que a internet recebeu?

2 Diversos pesquisadores se empenharam em desenvolver ferramentas


informatizadas que auxiliassem a aprendizagem. Um desses pesquisadores
desenvolveu uma linguagem de programação para ingressantes em cursos
de Computação/Informática. Qual o nome dessa linguagem de programação
e por que ela recebeu esse nome?

3 Diversas instituições contribuíram para a evolução da Computação/


Informática. Dentre essas, indique as duas que mais são populares atualmente
e justifique o porquê.

4 Descreva o que Bill Gates pretendia dizer quando pronunciou a frase “Um
computador em cada casa e em cada mesa de trabalho”.

5 A Computação/Informática como outras áreas do conhecimento possuem


ondas de tendências. A tendência nos primórdios era grandes equipamentos,
depois surgiram os computadores pessoais trazendo a onda da redução
de tamanho. Quando a internet se tornou acessível às pessoas comuns os
microcomputadores continuaram sendo utilizados, porém a comunicação
passou a ser realizada através de servidores com grande capacidade de
processamento. A onda atual indica tendência em pequenos dispositivos de
comunicação. Cite dois exemplos desses dispositivos.

70
UNIDADE 2

CONCEITOS FUNDAMENTAIS DA
COMPUTAÇÃO

OBJETIVOS DE APRENDIZAGEM

A partir deste capítulo você será capaz de:

• compreender os conceitos fundamentais da computação;

• entender a área de informática de maneira sistêmica;

• compreender os sistemas de numeração e sua importância;

• conhecer os principais elementos de um sistema computacional.

PLANO DE ESTUDOS
Esta unidade está dividida em quatro tópicos, sendo que ao final de cada
um deles você encontrará atividades que lhe auxiliarão na apropriação dos
conhecimentos.

TÓPICO 1 – SISTEMAS DE NUMERAÇÃO

TÓPICO 2 – BASES COMPUTACIONAIS

TÓPICO 3 – SUPORTES COMPUTACIONAIS

TÓPICO 4 – INTELIGÊNCIA COMPUTACIONAL

71
72
UNIDADE 2
TÓPICO 1

SISTEMAS DE NUMERAÇÃO

1 INTRODUÇÃO
Através de seus estudos na Unidade 1 foi possível perceber que a área
de computação possui raízes profundas no campo da matemática e que seu
desenvolvimento não ocorreu de forma repentina. Foram necessários vários
séculos para que seu desenvolvimento ocorresse. O próprio desenvolvimento do
conceito de número foi um processo longo e gradual (BOYER, 1996). Na realidade,
a matemática é a razão da existência da computação, pois os dispositivos
computacionais nasceram da necessidade de realizar cálculos e a partir de
máquinas cuja finalidade era realizar cálculos.

Num dado momento da história percebeu-se que computadores poderiam


ser utilizados para realizar atividades que vão muito além de cálculos. Porém,
numa visão mais clínica do que está sendo computado, pode-se perceber que
o processamento realizado está baseado em lógica e resolução de expressões,
praticamente idênticas às expressões matemáticas, apenas utilizando outros
elementos.

Diante disso, entender com maior propriedade os sistemas de numeração


é fundamental para melhor entender a área da computação. Neste sentido, a
presente unidade apresenta os principais sistemas de numeração envolvidos
na computação e também os cálculos para realização das conversões entre estes
sistemas.

Na antiguidade, diversos sistemas de numeração foram utilizados. Por


exemplo, os sistemas de numeração de base dois, três, cinco e vinte (BOYER, 1996).
Para representação numérica, diversas simbologias foram utilizadas. Isso implica
em podermos classificar os sistemas de numeração em dois grupos: os sistemas de
numeração não posicionais e os sistemas de numeração posicionais (FOROUZAN;
MOSHARRAF, 2011).

Num sistema de numeração não posicional, cada símbolo possui um valor


fixo. Isso significa que o valor daquele símbolo não se altera em função da posição
que ele ocupa na composição do número e que normalmente não tem relação com
o valor da posição. O exemplo mais popular são os números romanos, pois ainda
são utilizados em relógios, eventos esportivos e outras aplicações (FOROUZAN;
MOSHARRAF, 2011). No conjunto de símbolos dos numerais romanos temos I, V,
X, L, C, D e M. Observe no quadro a seguir os símbolos com seus respectivos valores.
73
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO

QUADRO 2 – EXEMPLO DE ALGARISMOS ROMANOS

Valor 1 5 10 50 100 500 1.000

Símbolo I V X L C D M

FONTE: O autor

O quadro a seguir apresenta alguns exemplos de números romanos e seus


respectivos valores na base decimal, para melhor entendimento dos sistemas de
numeração não posicionais.

QUADRO 3 – EXEMPLOS DE ALGARISMOS ROMANOS

III 1+1+1 = 3

IV 5-1 = 4

VIII 5 +1 + 1 + 1 = 8

XVIII 10 + 5 + 1 + 1 + 1 = 18

XIX 10 + (10 – 1) = 19

LXXII 50 + 10 + 10 + 1 + 1 = 72

CI 100 + 1 = 101

MMVII 1000 + 1000 + 5 + 1 + 1 = 2007

MDC 1000 + 500 + 100 = 1600

FONTE: Forouzan e Mosharraf (2011, p. 31)

Num sistema de numeração posicional, o local em que um algarismo


ocupa na representação do valor numérico determina o valor que ele representa
(FOROUZAN; MOSHARRAF, 2011). Para nosso entendimento, pensar em
unidade, dezena e centena, por exemplo, facilita a compreensão do princípio
destes sistemas de numeração. Já nos sistemas de numeração não posicionais, o
valor representado por um algarismo não se altera em função do local em que
ele está posicionado na representação. Um exemplo simples desse grupo são os
algarismos romanos.

74
TÓPICO 1 | SISTEMAS DE NUMERAÇÃO

UNI

Os números nos sistemas posicionais são formados da direita para a esquerda.


Talvez isso possa lhe explicar o fato dos números digitados numa calculadora estarem sempre
alinhados pela direita e também o porquê de zeros à esquerda não terem significância.

Para atender aos seus objetivos acadêmicos, este Caderno de Estudos se


concentra no grupo de sistemas de numeração posicionais, tratando do sistema
decimal, binário, octal e hexadecimal, bem como as respectivas conversões entre
eles. A principal finalidade de estudar os sistemas de numeração e as respectivas
formas de conversão entre os mesmos é permitir a resolução de determinados
problemas que poderão ser enfrentados no campo profissional. Além disso, provê
uma base para o entendimento do conteúdo de outras disciplinas da área da
computação/informática.

2 SISTEMA DE NUMERAÇÃO DECIMAL


O sistema de numeração decimal, ou de base 10 (dez), foi criado na
antiguidade, motivado pelo fato dos seres humanos possuírem dez dedos (Boyer,
1996). Pelo fato de não haver dispositivos de auxílio aos cálculos, as pessoas se
valiam dos dedos para realizar contagens. Se analisarmos o comportamento dos
seres humanos contemporâneos, veremos que ainda fazemos isso, talvez por
instinto ou herança genética.

O sistema de numeração decimal utiliza 10 (dez) algarismos em sua


representação. Os algarismos são: 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9. Os algarismos utilizados
neste sistema de numeração também são tipicamente chamados de dígitos decimais
ou apenas de dígitos (FOROUZAN; MOSHARRAF, 2011).

UNI

Observe que o algarismo 0 (zero) é o primeiro símbolo do sistema de numeração


decimal e que ele deve ser considerado tão importante quanto qualquer outro algarismo. Na
área da computação/informática o algarismo 0 (zero) é muito importante.

75
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO

A formação dos números de base decimal segue o princípio posicional.


A formação dos números baseada no princípio posicional se dá pela potência da
posição elevada pela base, iniciando da direita para a esquerda a partir da potência
zero. Isso significa dizer que a unidade é formada pelo algarismo multiplicado
pela base elevada à potência zero. Utilizando como exemplo o algarismo 7 (sete),
teremos a unidade sete formada da seguinte maneira: 7 x 100 = 7. O resultado
da base 10 (dez) elevada à potência 0 (zero) será 1 (um), pois qualquer número
elevado à potência 0 (zero) resulta no valor 1 (um). Então, o valor 7 (sete) será
multiplicado por 1 (um), resultando no próprio 7 (sete).

3 SISTEMA DE NUMERAÇÃO BINÁRIO


O sistema de numeração binário, ou de base 2 (dois), utiliza apenas os
algarismos 0 (zero) e 1 (um) na sua representação. Neste sistema de numeração, os
algarismos são tipicamente chamados de dígitos binários ou apenas de bits, que é
a abreviação de dígito binário na língua inglesa, ou seja, binary digit (FOROUZAN;
MOSHARRAF, 2011).

Partindo do princípio matemático de formação dos números, podemos


criar a seguinte relação:

FIGURA 66 – PARALELO DE VALORES BINÁRIOS E DECIMAIS


Binário Decimal
000 = 0
001 = 1
010 = 2
011 = 3
100 = 4
FONTE: O autor

É importante observar que, da mesma forma como os símbolos são repetidos


na quantidade de vezes relativa à sua posição na representação decimal, no sistema
binário ocorre a mesma coisa. Observe na figura anterior que na coluna mais da
direita os símbolos variam de 1 (um) em 1 (um). Já na segunda coluna da direita
para a esquerda, eles variam de 2 (dois) em 2 (dois). Na terceira coluna os símbolos
variam de 4 (quatro) em 4 (quatro) e assim ocorrerá sucesivamente para os demais.

A quantidade de vezes que um símbolo se repete é resultante da base elevada


à potência da posição ocupada pelo símbolo na representação numérica. Para melhor
entender este conceito, vamos calcular quantas vezes o símbolo que está na terceira
coluna deve ser repetido. Para chegar a este valor é só elevar a base 2 (dois) à respectiva
potência da terceira coluna que é 2 (dois), ficando da seguinte forma: 22 = 4.
76
TÓPICO 1 | SISTEMAS DE NUMERAÇÃO

UNI

Observe que o valor da potência da terceira coluna é 2 (dois), pelo fato dos
valores das potências iniciarem em 0 (zero). Você observará que na computação/informática
as representações iniciam do valor 0 (zero).

4 SISTEMA DE NUMERAÇÃO OCTAL


O sistema de numeração octal, ou de base 8 (oito), utiliza os algarismos (0,
1, 2 , 3, 4 , 5, 6 e 7) para sua representação. Observe que a quantidade de algarismos
é 8 (oito), mas o maior símbolo é o 7 (sete), pois inicia de 0 (zero).

Exemplo de codificação octal:

FIGURA 67 – PARALELO DE VALORES OCTAIS E DECIMAIS


Octal Decimal
12 = 10
23 = 19
35 = 29
FONTE: O autor

O sistema de numeração octal é uma notação abreviada em que cada dígito


representa um conjunto de 3 (três) dígitos binários. Este sistema de numeração
é utilizado para mostrar o equivalente do sistema binário fora do computador
(FOROUZAN; MOSHARRAF, 2011).

A utilização do sistema de numeração octal na computação se deu


efetivamente em função dessa característica, pois é muito mais simples para nós
humanos tratarmos com abreviações de binários do que com todo o conjunto de
binários envolvidos numa representação de dados. O sistema de numeração octal foi,
portanto, utilizado por profissionais da área de computação/informática como uma
importante ferramenta para a abreviação do conjunto de bits sendo manipulados.

77
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO

5 SISTEMA DE NUMERAÇÃO HEXADECIMAL


O sistema de numeração hexadecimal, ou de base 16, utiliza 16 (dezesseis)
algarismos para sua representação. São eles (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E,
F). Os algarismos A, B, C, D, E e F representam, respectivamente, os valores 10,
11, 12, 13, 14 e 15. Forouzan e Mosharraf (2011) relatam que o nome do sistema de
numeração hexadecimal possui raízes no grego e no latim, pois é derivado da raiz
grega hex (seis) e da raiz latina decem (dez).

Exemplo de codificação hexadecimal:

FIGURA 68 – PARALELO DE VALORES HEXADECIMAIS E DECIMAIS


Exadecimal Decimal
47 = 71
68 = 104
75 = 117

FONTE: O autor

Da mesma forma como o sistema de numeração octal, o hexadecimal é


utilizado como uma notação abreviada para representar um conjunto de 4 (quatro)
dígitos binários. Isso ocorre pelo fato do sistema de armazenamento utilizado nos
computadores não ter relação direta com o sistema decimal. Os computadores
utilizam dígitos binários, porém para os humanos poderem ler tais dígitos pode
ser excessivamente extenso na maioria dos casos, logo utiliza-se o hexadecimal.
O hexadecimal possui uma relação com o binário, pois é resultante da potência 4
(quatro) sobre a base 2 (dois), ou seja, 24 = 16.

Atualmente a forma abreviada do binário mais utilizada é o hexadecimal.


Isso se dá pelo fato da maioria dos sistemas computacionais não utilizarem mais 8
bits em seus circuitos. A grande maioria utiliza 16, 32 e 64 bits nos circuitos, logo, o
sistema hexadecimal se mostra bastante conveniente.

6 CONVERSÕES ENTRE SISTEMAS DE NUMERAÇÃO


A necessidade de conversão de valores entre os sistemas de numeração
tornou-se uma consequência natural. Nós humanos entendemos com naturalidade
apenas o sistema de numeração decimal, porém os computadores trabalham
com o sistema binário. Para permitir que humanos utilizem valores decimais e
computadores utilizem valores binários é necessário que o valor seja convertido de
um sistema de numeração para outro.

Em função dessa necessidade e da importância do entendimento deste


conteúdo, estudaremos as formas de conversões entre os sistemas de numeração
decimal, binário, octal e hexadecimal.
78
TÓPICO 1 | SISTEMAS DE NUMERAÇÃO

Iniciaremos convertendo do sistema de numeração decimal para os


demais sistemas (binário, octal e hexadecimal). Em seguida você aprenderá como
converter de outros sistemas de numeração para o decimal e também entre os
demais sistemas.

7 CONVERSÃO DE DECIMAL PARA BINÁRIO


A conversão de números representados no sistema decimal para o sistema
de numeração binário é efetuada através de divisões sucessivas do número decimal
pela base binária (2), até que se obtenha o quociente 0. Os restos das divisões
tomados da direita para a esquerda é que formarão o número binário resultante.

Divisões sucessivas:

FIGURA 69 – EXEMPLO DE CONVERSÃO DE DECIMAL PARA BINÁRIO

FONTE: O autor

O exemplo apresentado na figura anterior demonstra que o valor inicial 14


é primeiramente dividido por dois, otendo-se como quociente o valor 7. O valor 7
multiplicado pela base 2 resulta em 14. Subtraindo-se 14 do valor inicial o resultado
será resto = 0. É esse zero com os demais restos obtidos no processo de conversão
que formarão o número binário resultante.

8 CONVERSÃO DE DECIMAL PARA OCTAL


Da mesma forma como a conversão para binário, a conversão de números
representados no sistema decimal para o sistema de numeração octal pode ser
efetuada através do método de divisões sucessivas.

79
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO

FIGURA 70 – EXEMPLO DE CONVERSÃO DE DECIMAL PARA OCTAL

FONTE: O autor

A diferença neste caso resulta apenas no fato da divisão estar sendo


realizada pela base em uso atualmente, ou seja, a base octal (8). Neste caso, os
valores dos possíveis restos variam de 0 até 7. Perceba que o algarismo 0 (zero)
tem muita importância na computação/informática. A importância é muito maior
daquela que talvez você imaginaria que um simples 0 (zero) pudesse ter.

9 CONVERSÃO DE DECIMAL PARA HEXADECIMAL


A conversão de números representados no sistema decimal para o sistema
de numeração hexadecimal pode ser efetuada através de divisões sucessivas pelo
valor da base, ou seja, 16 (dezesseis).

FIGURA 71 – EXEMPLO DE CONVERSÃO DE DECIMAL PARA


HEXADECIMAL

FONTE: O autor

80
TÓPICO 1 | SISTEMAS DE NUMERAÇÃO

O processo de divisões sucessivas do número 175 resultou em dois restos.


O primeiro resto obtido foi o valor 15 e o segundo o valor 10. Porém, quando
se está tratando de um algarismo que deve representar o valor de uma posição
num sistema de numeração posicional, não é possível que sejam utilizados dois
algarismos para tal propósito. É justamente por este motivo que a partir do valor
10 (dez) o sistema de numeração hexadecimal utiliza os algarismos A, B, C, D, E e
F na sua representação. Com base nisso, o valor resultante da conversão realizada
na Figura X é AF. O A se refere ao valor 10 (dez) do segundo resto obtido e o F se
refere ao valor 15 (quinze) do primeiro resto obtido.

Parece estranho para você um sistema de numeração que utiliza letras em


sua representação? Realmente, é estranho. Parece que voltamos ao passado anterior
à popularidade do sistema de representação hindu-arábico, quando se utilizavam
letras para representar valores. Estranho ou não, o importante é que o sistema
hexadecimal é extremamente últil para os profissionais da computação/informática.

10 CONVERSÃO DE BINÁRIO PARA DECIMAL


A conversão de números representados no sistema binário para o sistema
de numeração decimal é efetuada multiplicando-se cada dígito binário pela base
(2) elevado à potência da respectiva posição, ou seja (..., 23, 22, 21, 20). Este método é
denominado de soma dos termos. Veja um exemplo na figura a seguir.

FIGURA 72 – EXEMPLO DE CONVERSÃO DE BINÁRIO PARA DECIMAL

FONTE: O autor

O cálculo também pode ser efetuado utilizando-se o método denominado


valores de posições. Este método consiste em multiplicar cada um dos dígitos pelo
valor da sua posição. Veja na figura a seguir um exemplo de uso deste método.

81
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO

FIGURA 73 – EXEMPLO DE CONVERSÃO DE BINÁRIO PARA DECIMAL

FONTE: O autor

Este método dispensa a necessidade de detalhar tanto o cálculo, pois


sempre que houver um dígito zero, o valor resultante será zero. Isso implica no
fato de que interessam para fins de cálculo apenas as posições em que houver
valor 1 (um). Multiplicando-se os valores 1 pelo respectivo valor de sua posição e
somá-los, se obterá o valor correspondente na base 10.

11 CONVERSÃO DE OCTAL PARA DECIMAL


A conversão de números representados no sistema octal para o sistema
de numeração decimal pode ser efetuada utilizando-se o método da soma dos
termos, conforme demonstrado na figura a seguir.

FIGURA 74 – EXEMPLO DE CONVERSÃO DE OCTAL PARA DECIMAL

FONTE: O autor

Esta conversão também pode ser efetuada utilizando-se o método de


operações sucessivas e alternadas de multiplicação e adição. Veja na figura a seguir
a demonstração de como proceder.

82
TÓPICO 1 | SISTEMAS DE NUMERAÇÃO

FIGURA 75 – EXEMPLO DE CONVERSÃO DE OCTAL PARA DECIMAL

FONTE: O autor

O método de operações sucessivas e alternadas de multiplicação e adição


permite que o valor octal possa ser facilmente convertido para a base decimal. Este
método consiste na multiplicação do primeiro algarismo octal da esquerda pela
base 8 (oito) e em seguida somando o valor do algarismo seguinte. No caso do
exemplo, o valor 4 foi multiplicado por 8, resultando em 32. A estes 32 foi somado
o valor do próximo dígito, que é 5.

O resultado da soma de 32 e 5 foi novamente multiplicado por 8 e o dígito


seguinte somado. Este processo deve ser repetido até que todos os números de
origem tenham sido utilizados. Chegando-se ao cálculo que envolveu o último dos
números, chegou-se também ao resultado da conversão.

12 CONVERSÃO DE HEXADECIMAL PARA DECIMAL


A conversão de números representados no sistema hexadecimal para o
sistema de numeração decimal pode ser efetuada através do método da soma dos
termos, conforme apresentado na figura a seguir.

FIGURA 76 – EXEMPLO DE CONVERSÃO DE HEXADECIMAL PARA DECIMAL

FONTE: O autor

83
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO

Esta conversão também pode ser efetuada através do método de operações


sucessivas e alternadas de multiplicação e adição.

FIGURA 77 – EXEMPLO DE CONVERSÃO DE HEXADECIMAL PARA DECIMAL

FONTE: O autor

Da mesma forma como na conversão de octal para decimal, na conversão


de hexadecimal para decimal pode-se utilizar o método de operações sucessivas e
alternadas de multiplicação e adição. Na conversão de hexadecimal para decimal,
o uso deste método faz ainda mais sentido, caso o profissional não disponha de
uma calculadora que realize as conversões.

13 REGRAS DE FIXAÇÃO
Após ter estudado estes métodos de conversão, pode-se perceber que as
conversões podem ser divididas em duas categorias. A primeira categoria é a das
conversões de valores do sistema de numeração decimal para outros sistemas de
numeração. E a segunda categoria, a das conversões de valores de outros sistemas
de numeração para o decimal. Poderia-se argumentar ainda que há uma terceira
categoria, que seria a das conversões entre sistemas de numeração que não
envolvem o sistema decimal, porém, se considerarmos que todas as conversões
podem ser realizadas convertendo-se primeiramente para o decimal e em seguida
para o sistema de numeração destino, podemos considerar a existência de apenas
duas categorias.

84
TÓPICO 1 | SISTEMAS DE NUMERAÇÃO

Ao convertermos um número da base decimal para outra base qualquer,


utilizamos a operação de divisão. Para obter-se o equivalente ao valor decimal
na base para a qual se deseja converter, realiza-se divisões sucessivas do valor
decimal tantas vezes quantas possíveis. Após esta sucessão de divisões, agrupam-
se os restos das divisões tomados da direita para a esquerda, transcrevendo-os. A
reunião dos restos das divisões é que formará o valor convertido na base destino.

Já a conversão de um número de uma base diferente da decimal para a


base decimal é efetuada através das operações sucesivas de soma e multiplicação.
Independente do método demonstrado neste Caderno de Estudos, ou seja, da
forma mais detalhada ou da forma mais simplificada, será realizada uma sucessão
de somas e subtrações para obter-se o valor na base de destino.

Estas regras de fixação são importantes para que você não esqueça a forma
de realização das conversões entre sistemas de numeração. Porém, no seu dia a dia
profissional é muito provável que utilize calculadoras científicas, as quais realizam
estas operações de forma simples e rápida.

85
RESUMO DO TÓPICO 1
Caro acadêmico, nesse tópico você estudou que:

• Os sistemas de numeração são divididos em dois grupos: os sistemas de


numeração não posicionais e os sistemas de numeração posicionais.

• Nos sistemas de numeração não posicionais, os valores dos símbolos ou


algarismos utilizados não se alteram em função da posição que eles ocupam
na composição do valor. Isso significa que o valor de um determinado símbolo
será sempre o mesmo, independente da posição que ele ocupar na formação do
número.

• Os sistemas de numeração posicionais, como é o caso do sistema de numeração


decimal, são ligeiramente diferentes. Neles, a posição do símbolo ou algarismo
na formação do número é que indica o seu valor. Isso significa que um algarismo
7 na posição mais à direita do número terá valor de unidade e que uma posição
à esquerda terá valor de dezena, centena, milhar e assim por diante.

• Para converter um número decimal para binário, octal ou hexadecimal é


utilizada uma sucessão de divisões e subtrações pelo valor da respectiva base,
obtendo-se os restos destas operações. Os restos das operações sucessivas de
divisões e subtrações, tomados da direita para a esquerda, é que formarão o
número resultante na base binária, octal ou hexadecimal.

• Para converter um número de binário, octal ou hexadecimal para decimal é


utilizada uma sucessão de multiplicações pela respectiva base e somas.

86
AUTOATIVIDADE

Caro acadêmico, como forma de fixar o conteúdo estudado, realize a


autoatividade proposta a seguir:

1 Converter os valores da base decimal para a base binária:


a) 89 = ______________________
b) 172 = _____________________

2 Converter os valores da base decimal para a base octal:


a) 125 = _____________________
b) 247 = ___________________

3 Converter os valores da base decimal para a base hexadecimal:


a) 158 = ____________________
b) 218 = ___________________

4 Converter os valores da base binária para a base decimal:


a) 100100101 = _____________
b) 111011001 = _____________

5 Converter os valores da base octal para a base decimal:


a) 137 = _______________
b) 253 = _______________

6 Converter os valores da base hexadecimal para a base decimal:


a) AF5 = _______________
b) B12 = _______________

87
88
UNIDADE 2 TÓPICO 2

BASES COMPUTACIONAIS

1 INTRODUÇÃO
Um sistema computacional é formado por diversos elementos que devem
funcionar harmoniosamente. Estes elementos são formados tanto por dispositivos
físicos, denominados de hardware, quanto de dispositivos virtuais, denominados
de software.

A base de um sistema computacional é formada por dois elementos


fundamentais. O primeiro se refere aos equipamentos físicos, sem os quais não
existiria um sistema computacional. Estes equipamentos sofrem constante evolução
e atualização. A tendência que tem se apresentado no momento da escrita deste
Caderno de Estudos é a redução cada vez maior no tamanho dos dispositivos.

O segundo importante elemento que forma a base de um sistema


computacional é o sistema operacional. Não é incomum ver profissionais da área de
computação/informática discutindo fragilidades de seus sistemas computacionais,
comparando-os segundo os sistemas operacionais utilizados.

Da mesma forma como a tendência de utilização de dispositivos cada vez


menores e móveis, os sistemas operacionais tendem a prover recursos para atender
às novas demandas de uso da sociedade. Os sistemas operacionais precisam ter
capacidade para suportar novas e diferentes funcionalidades de maneira cada vez
mais rápida e eficiente.

Para potencializar estes elementos existem as redes de computadores, as


quais permitem o uso adequado dos dispositivos para realização das comunicações
e obtenção e compartilhamento de informações. As redes de computadores
possuem diferentes abrangências e finalidades, que serão estudadas neste tópico.

89
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO

2 ARQUITETURA DE COMPUTADORES
A arquitetura de computadores também é tipicamente referenciada
por arquitetura e organização de computadores, pois trata da forma como os
elementos físicos de um sistema computacional estão dispostos ou organizados.
Em relação à organização, os computadores podem ser divididos em três categorias
ou subsistemas: a Unidade Central de Processamento, a memória principal e o
subsistema de entrada e saída (FOROUZAN; MOSHARRAF, 2011).

A Unidade Central de Processamento, também referenciada por UCP ou


CPU (Central Process Unit), é o dispositivo destinado à realização de operações sobre
dados. Tipicamente, a CPU está organizada em três partes: unidade de aritmética e
lógica, unidade de controle e os registradores (FOROUZAN; MOSHARRAF, 2011).

A unidade de aritmética e lógica, também conhecida pela sigla ULA,


é responsável pelas atividades que envolvem operações lógicas, por exemplo,
as operações AND (e), OR (ou), NOT (não) e XOR (ou exclusivo). Esta unidade
também realiza operações de deslocamento e operações aritméticas sobre os
dados. A unidade de controle é quem realiza o controle do funcionamento
de cada subsistema. Já os registradores são localizações que armazenam os
dados temporariamente para a realização de operações sobre eles. Os três tipos
de registradores comumente encontrados nas arquiteturas modernas são os
registradores de dados, os registradores de instrução e o contador de programa
(FOROUZAN; MOSHARRAF, 2011).

A memória principal é a área para a qual são carregados dados e programas.


Ela consiste de um conjunto de localizações únicas denominadas endereços. As
memórias podem ser organizadas com base em diferentes grupos de bits. Esta
quantidade de bits é denominada de palavra. Nos atuais computadores são
encontradas palavras formadas por grupos de 8, 16, 32 ou 64 bits (FOROUZAN;
MOSHARRAF, 2011).

O subsistema de entrada/saída é reponsável pela comunicação do


computador com o mundo externo e pelo armazenamento de programas e
dados. Este subsistema pode ser dividido em duas categorias: dispositivos
de armazenamento e dispositivos sem armazenamento. Os dispositivos de
armazenamento, também chamados de dispositivos de armazenamento auxiliar,
permitem armazenamento de grandes quantidades de dados para posterior
utilização. É o conjunto de dispositivos que utilizamos para guardar os dados de
forma permanente. Já os dispositivos sem armazenamento são utilizados para
a comunicação do computador com outros dispositivos, porém não realizam o
armazenamento de dados (FOROUZAN; MOSHARRAF, 2011).

A unidade central de processamento é o elemento mais importante de um


sistema computacional. A escolha adequada da unidade central de processamento
de acordo com as necessidades de utilização é determinante para a obtenção dos
benefícios desejados com um computador. No momento de definir a configuração

90
TÓPICO 2 | BASES COMPUTACIONAIS

de um computador é importante que se tenha em mente a finalidade para a


qual ele será utilizado. Assim pode-se dimensionar adequadamente os recursos
necessários.

As arquiteturas mais comumente utilizadas atualmente são a CISC e RISC.


A arquitetura CISC (Complex Instruction Set Computer) ou computador com conjunto
de instruções complexas utiliza a estratégia de ter grande conjunto de instruções.
Esta arquitetura permite que a atividade de programação destes computadores
seja mais fácil do que outras arquiteturas (FOROUZAN; MOSHARRAF, 2011).

Já a arquitetura RISC (Reduced Instruction Set Computer) ou computador


com conjunto reduzido de instruções utiliza a estratégia de possuir um conjunto
de instruções que realizam o mínimo possível de operações simples. Isso torna a
programação destes computadores mais árdua em relação à CISC (FOROUZAN;
MOSHARRAF, 2011).

3 SOFTWARE
O computador é um sistema composto por duas partes importantes:
hardware e software (FOROUZAN; MOSHARRAF, 2011). O hardware é composto
pelos equipamentos físicos, ou seja, pelas máquinas e demais equipamentos
ligados ao computador. Já o software é composto pelo conjunto de programas que
são executados neste hardware.

3.1 CATEGORIAS DE SOFTWARE


Quando um software está representado como instruções que podem
ser executadas diretamente por um processador, dizemos que está escrito
em linguagem de máquina. A execução de um software também pode ser
intermediada por um programa interpretador, responsável por interpretar
e executar cada uma de suas instruções. Uma categoria especial e notável de
interpretadores são as máquinas virtuais, como a JVM (Java Virtual Machine -
Máquina Virtual Java), que simulam um computador.

FONTE: Disponível em: <http://www.ideiait.com.br/produtos.asp?area=S&item=A>. Acesso em:


12 jun. 2012.

O conjunto de softwares existentes pode ser dividido em categorias. As


principais categorias de software existente são conhecidas como softwares básicos,
softwares utilitários, softwares aplicativos e ferramentas de desenvolvimento.

91
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO

3.1.1 Softwares básicos


Na categoria de softwares básicos estão principalmente os sistemas
operacionais. Sistema Operacional é um software ou um conjunto de programas
cuja função é servir de interface entre um computador e o usuário. É comum
utilizar-se a abreviatura SO (em português) ou OS (do inglês Operating System).

Um Sistema Operacional é complexo e em função disso é complexo também


definí-lo. Forouzan e Mosharraf (2011) sugerem algumas definições comuns:

• Interface entre o hardware e o usuário;


• Programa que facilita a execução dos programas;
• Gerenciador que supervisiona as atividades dos componentes do sistema
computacional.

Um sistema operacional pode ser visto como um programa de grande


complexidade que é responsável por todo o funcionamento de uma máquina,
desde o software até o hardware instalado na máquina. Todos os processos de um
computador estão por detrás de uma programação complexa que comanda todas
as funções que um usuário impõe à máquina. Existem vários sistemas operacionais,
entre eles os mais utilizados no dia a dia. Normalmente os mais utilizados em
computadores domésticos são o Windows, Linux e Mac OS X. Um computador
com o sistema operacional instalado poderá não dar acesso a todo o seu conteúdo,
dependendo do usuário que está utilizando. Com um sistema operacional podemos
estabelecer permissões a vários usuários que trabalham com o mesmo.

Existem dois tipos de contas que podemos criar num sistema operacional,
as contas de Administrador e as contas Limitadas. A conta Administrador é uma
conta que oferece todo o acesso à máquina, desde a gestão de pastas, arquivos e
softwares de trabalho ou entretenimento, como também ao controle de todo o
hardware instalado. A conta Limitada é uma conta que não tem permissões para
acessar algumas pastas ou instalar software que seja instalado na raiz do sistema ou
então que tenha ligação com algum hardware que altere o seu funcionamento normal
ou personalizado pelo Administrador. Para que este tipo de conta possa ter acesso
a outros conteúdos do disco ou de software, o administrador poderá personalizar a
conta oferecendo permissões a algumas funções do sistema, como também poderá
retirar acessos a certas áreas do sistema.

O sistema operacional funciona com a iniciação de processos que este irá


precisar para funcionar corretamente. Estes processos poderão ser arquivos que
necessitam ser frequentemente atualizados, ou arquivos que processam dados úteis
para o sistema. Poderemos ter acesso a vários processos do sistema operacional
a partir do gerenciador de tarefas. No gerenciador de tarefas encontramos todos
os processos que estão em funcionamento, desde a inicialização do sistema

92
TÓPICO 2 | BASES COMPUTACIONAIS

operacional até a sua utilização atual. Podemos também visualizar a utilização da


memória pelos processos. No caso de o sistema operacional começar a mostrar
erros ou falhas de acesso a programas, tornando-se lento, podemos verificar
no gerenciador de tarefas qual dos processos estará bloqueado ou com elevado
número de processamento que está afetando o funcionamento.
FONTE: Disponível em: <http://aa-cienciasdacomputacao.wikidot.com/sistema-operacional>.
Acesso em: 12 jun. 2012.

3.1.2 Softwares utilitários


Utilitários são programas utilizados para suprir deficiências dos sistemas
operacionais ou como ferramentas auxiliares aos mesmos. Sua utilização poderá
depender de licenças pagas, mas existem vários utilitários livres. Podemos incluir
nos utilitários programas para compactação de dados, aumento de desempenho de
máquinas, overclock, limpeza de discos rígidos, acesso à internet, compartilhamento
de conexões, entre outros.

3.1.3 Softwares aplicativos


Software aplicativo é um programa de computador que tem por objetivo
o desempenho de tarefas de índole prática, em geral ligadas ao processamento
de dados, como o trabalho em escritório ou empresarial. A sua natureza é,
portanto, diferente da de outros tipos de software, como sistemas operacionais e
ferramentas a eles ligadas, jogos e outros softwares lúdicos, entre outros.

FONTE: Disponível em: <http://www.ldsystem.com.br/servicos.aspx>. Acesso em: 12 jun. 2012.

Os softwares aplicativos podem ter uma abrangência de uso de larga escala,


muitas vezes em âmbito mundial; nestes casos, os programas tendem a ser mais
robustos e mais padronizados. Programas escritos para um pequeno mercado têm
um nível de padronização menor. Ainda é possível usar softwares aplicativos como
software embarcado, destinado a funcionar dentro de uma máquina que não é um
computador de uso geral e normalmente com uma finalidade muito específica.

FONTE: Disponível em: <http://www.dual-softwares.com/meu_primeiro_computador_conheca_


software.htm>. Acesso em: 12 jun. 2012.

93
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO

Aplicativos, portanto, podem ser utilizados em diversas áreas de


negórios. No cálculo de estruturas, planejamento e controle de projetos, pesquisas
operacionais, problemas de engenharia de software. Na automação industrial,
programação e controle de máquinas e equipamentos, controle de processos e
calibração. Na automação comercial com reserva de passagens, contas correntes,
pontos de venda, caixas automáticos. No apoio educacional como assistência a
instruções e ensino auxiliado pelo computador. Em situações especiais e científicas
como teleprocessamento, comunicações, militares, pesquisas espaciais, pesquisas
meteorológicas. No ramo artístico em composição de imagens, sons, músicas,
vídeos. No entretenimento com a execução de jogos, entre outros.

3.1.4 Ferramentas de desenvolvimento


As ferramentas de desenvolvimento são uma categoria especial de software,
pois são utilizadas para produzir novos softwares. Ferramentas de desenvolvimento
podem compreender diversos softwares para as mais diversas atividades do
desenvolvimento. Em geral as ferramentas de desenvolvimento que mais são
consideradas são os softwares conhecidos como compiladores.

Um compilador é um programa que, a partir de um código escrito em


uma linguagem, o código fonte (source code), cria um programa semanticamente
equivalente, porém, escrito em outra linguagem, código objeto (object code). Um
compilador é um dos dois tipos mais gerais de tradutores, sendo que o segundo
tipo que a ele deve ser comparado é um interpretador.

Normalmente, o código fonte é escrito em uma linguagem de programação


de alto nível, com grande capacidade de abstração, e o código objeto é escrito em
uma linguagem de baixo nível, como uma sequência de instruções a ser executada
por um sistema operacional. O processo de compilação é composto de análise
e síntese. A análise tem como objetivo entender o código fonte e representá-lo
em uma estrutura intermediária. A síntese constrói o código objeto a partir desta
representação intermediária.

A análise pode ser subdividida ainda em análise léxica, análise sintática e


análise semântica. A síntese é mais variada, podendo ser composta pelas etapas
de geração de código intermediário, otimização de código e geração de código
final ou código de máquina, e somente esta última etapa é obrigatória.

Classicamente, um compilador traduz um programa de uma linguagem


textual facilmente entendida por um ser humano para uma linguagem de
máquina, específica para um processador e sistema operacional. Atualmente,
porém, são comuns compiladores que geram código para uma máquina virtual
que é, depois, interpretada por um interpretador.

94
TÓPICO 2 | BASES COMPUTACIONAIS

Em linguagens de programação híbridas, o compilador tem o papel


de converter o código fonte em um código chamado de byte code, que é uma
linguagem de baixo nível. Um exemplo deste comportamento é o do compilador
da linguagem Java que, em vez de gerar código da máquina hospedeira (onde se
está executando o compilador), gera código chamado Java Bytecode.

Um compilador é chamado de Just-in-time compiler (JIT) quando


seu processo de compilação acontece apenas quando o código é chamado.
Normalmente, o usuário tem a percepção de que um compilador JIT é um
interpretador.

Muitos compiladores incluem um pré-processador. Um pré-processador


normalmente é responsável por mudanças no código fonte destinadas de acordo
com decisões tomadas em tempo de compilação. Por exemplo, um programa
em C permite instruções condicionais para o pré-processador que podem incluir
ou não parte do código caso uma assertiva lógica seja verdadeira ou falsa, ou
simplesmente um termo esteja definido ou não. Tecnicamente, pré-processadores
são muito mais simples que compiladores e são vistos, pelos desenvolvedores,
como programas à parte, apesar dessa visão não ser necessariamente
compartilhada pelo usuário.

Outra parte separada do compilador que muitos usuários veem como


integrada é o linker, cuja função é unir vários programas já compilados de uma
forma independente e unificá-los em um programa executável. Isso inclui colocar
o programa final em um formato compatível com as necessidades do sistema
operacional para carregá-lo em memória e colocá-lo em execução.

FONTE: Disponível em: <http://pt.scribd.com/doc/65442350/O-que-e-Compilacao-Codigo-


Fonte-e-Objeto1>. Acesso em: 12 jun. 2012.

Para facilitar o trabalho dos desenvolvedores foram criadas as IDEs. A IDE


(Integrated Development Environment - Ambiente de Desenvolvimento Integrado) é
um programa de computador que reúne características e ferramentas de apoio ao
desenvolvimento de software com o objetivo de agilizar este processo.

Geralmente as IDEs unem a técnica de RAD (Rapid Application Development),


que consiste em permitir que os desenvolvedores obtenham um aproveitamento
maior, desenvolvendo código com maior rapidez. As características e ferramentas
mais comuns encontradas nas IDEs são editor, compilador, montador, depurador,
modelagem, gerador de código e distribuição.

O editor permite editar o código-fonte do programa na(s) linguagem(ns)


suportada(s) pela IDE. O compilador (compiler) permite compilar o código-fonte
do programa, editado em uma linguagem específica e a transforma em linguagem
de máquina. O montador (linker) organiza as várias partes do código-fonte,
compilados em linguagem de máquina, em um programa executável que pode
ser rodado ou executado em um computador ou outro dispositivo computacional.
95
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO

O depurador (debuger) auxilia no processo de encontrar e corrigir erros (bugs) no


código-fonte do programa, na tentativa de aprimorar a qualidade do software.

A modelagem (modeling) permite a criação do modelo de classes, objetos,


interfaces, associações e interações dos artefatos envolvidos no software com o objetivo
de solucionar as necessidades do software. A geração de código é a característica mais
explorada em ferramentas CASE. A geração de código também é encontrada em
IDEs, contudo com um escopo mais direcionado a modelos de código comumente
utilizados para solucionar problemas rotineiros. Todavia, em conjunto com
ferramentas de modelagem, a geração de código pode gerar todo ou praticamente
todo o código-fonte do programa com base no modelo proposto, tornando muito
mais rápido o processo de desenvolvimento e distribuição do software.

A distribuição (deploy) auxilia no processo de criação do instalador do


software, ou outra forma de distribuição do mesmo, seja via discos ou via internet.
As ferramentas de testes automatizados (automated tests) realizam testes no software
com base em scripts ou programas de testes previamente especificados, gerando
um relatório dos mesmos, assim auxiliando na análise do impacto das alterações
no código-fonte. Ferramentas deste tipo mais comuns no mercado são chamadas
robôs de testes. A refatoração (refactoring) consiste na melhoria constante do código-
fonte do software, seja na construção de código mais otimizado, mais limpo e/ou
com melhor entendimento pelos envolvidos no desenvolvimento do software. A
refatoração, em conjunto com os testes automatizados, é uma poderosa ferramenta
no processo de erradicação de bugs, tendo em vista que os testes visam garantir o
mesmo comportamento externo do software ou da característica sendo reconstruída.

4 REDES DE COMPUTADORES
Na sociedade contemporânea a confiabilidade e qualidade da informação
são fatores de importância fundamental. Mais e mais informações têm sido geradas
e utilizadas na tomada de decisões, tanto em nível pessoal quanto profissional,
definindo muitas vezes o sucesso de uma organização ou mesmo de toda uma nação.
Toda essa informação armazenada serve como uma grande base de conhecimento
que pode ser atualizada, consultada e utilizada para as mais diversas finalidades,
objetivando a melhoria da qualidade de vida de toda a sociedade.

O valor da informação demonstra a importância do papel que as


telecomunicações e a informática têm na sociedade atual. Esta estrutura permite que
as pessoas se comuniquem de forma mais rápida e confiável e, em consequência,
impulsionando o crescimento econômico do mundo como um todo. Esta
característica faz com que a dependência dos sistemas de comunicação também se
torne maior, o que exige também que estes sistemas se tornem mais eficientes, de
forma a permitir que as empresas produzam e vendam mais e, consequentemente,
gerem mais empregos e renda.

96
TÓPICO 2 | BASES COMPUTACIONAIS

Devido ao fato da quantidade de informação ser muito grande, é importante


também a criação de mecanismos que permitam selecionar entre toda informação
disponível o que realmente é importante para a finalidade em que se está focado.
Isto nos leva à situação em que, tão importante quando o armazenamento e
transmissão de informações, é a sua interpretação e compreensão. Para que haja
a devida transmissão e recepção de informações de forma que a mesma possa
ser corretamente interpretada e compreendida, é necessário que seja seguido um
conjunto de símbolos e regras previamente estabelecidos utilizados como meio
de codificação para o transporte desta informação. Este conjunto de códigos e
regras previamente estabelecidos é o que podemos entender como uma espécie de
protocolo de comunicação.

Os meios de comunicação, assim como a informática, evoluíram muito nas


últimas décadas e ainda continuam em franco desenvolvimento. Equipamentos
e tecnologias têm sido substituídos cada vez com mais frequência por outros de
menor custo e maiores capacidades. Em paralelo, existem maiores possibilidades
de utilização de equipamentos de diferentes fabricantes na mesma base de
infraestrutura, permitindo que o crescimento seja mais flexível e econômico.

Num esquema de comunicação em que há um emissor e um receptor, pode-


se ter tanto pessoas quanto equipamentos utilizando uma linguagem conhecida de
ambos, permitindo o entendimento das mensagens transmitidas. Num processo
de comunicação existem quatro elementos básicos que devem ser considerados.
Estes elementos são o emissor, a informação, o meio através do qual a informação
é transmitida e o destinatário. Em algumas situações pode ser necessária ainda a
utilização de uma interface para facilitar o processo.

Para que a transmissão de dados ocorra é necessário que haja passagem


de sinais através de meios físicos de comunicação, os quais compõem o que
denominamos de redes. As questões de tecnologia que influenciam no projeto e
construção de redes têm certa relação com as propriedades físicas dos meios de
transmissão e também das características dos sinais transmitidos (SOARES, 1995).

Os sinais podem ser entendidos como ondas que são propagadas através de
algum meio físico, o qual pode ser um cabo, o ar ou outros meios disponíveis. Para
que o processo de transmissão de informação ocorra há necessidade da execução
de uma sucessão de processos, os quais são relacionados a seguir:

• A geração de um conteúdo a ser transmitido;


• A codificação deste conteúdo em um conjunto bem definido de símbolos;
• Esta codificação do conteúdo deve atender aos critérios necessários para que
possa ser transmitido adequadamente através do meio físico utilizado;
• A realização da transmissão do conteúdo;
• A decodificação do conteúdo transmitido e a reprodução do mesmo;
• A recriação do conteúdo que foi transmitido, mesmo que haja certo grau de
degradação da qualidade do conteúdo para o entendimento do destinatário.

97
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO

Na transmissão de dados em redes podemos classificar os sinais em dois tipos:


sinais analógicos e sinais digitais. A figura a seguir representa a forma de variação
de um determinado sinal analógico. Já a Figura 79 representa a forma de variação
de um determinado sinal digital. Na transmissão de dados os tipos de sinais mais
comumente utilizados são o analógico e o digital. A denominação do sinal analógico
está associada à característica do sinal de ter uma variação contínua no tempo. Já
a denominação do sinal digital está associada à característica do sinal de ter uma
variação denominada discreta, ou seja, com variações em forma de pulsos.

FIGURA 78 – REPRESENTAÇÃO DE UM SINAL ANALÓGICO

FONTE: Comer (2001)

Ambos os termos são bastante utilizados quando a transmissão de dados é


o assunto em pauta. Estas definições permitem qualificar a natureza da informação
quanto à característica dos sinais utilizados para a transmissão através dos meios
físicos disponíveis.

FIGURA 79 – EPRESENTAÇÃO DE UM SINAL DIGITAL

FONTE: Comer (2001)

Para deixar mais clara a definição de analógico e digital, são apresentados


dois exemplos. Equipamentos como computadores armazenam, processam e
codificam dados em bits. Os bits permitem representar apenas os valores lógicos
0 ou 1 (zero ou um). A esta característica dos bits de representarem apenas os
valores 0 ou 1 é atribuído o termo digital. Equipamentos para emissão de som,
por exemplo, representam sinais cuja variação tem continuidade ao longo de um
determinado espaço de tempo.
98
TÓPICO 2 | BASES COMPUTACIONAIS

É importante observar que o tipo de informação a ser transmitida não


depende do tipo de sinal utilizado. Podem-se transmitir dados ou informações
que naturalmente são analógicos por meios digitais, da mesma forma que dados
naturalmente digitais podem ser transmitidos através de sinais analógicos.
Certamente, nesta situação há necessidade de conversão dos sinais de forma
adequada para que a transmissão possa ocorrer. Após a transmissão este sinal deve
novamente ser convertido para retornar ao formato em que naturalmente é utilizado.

As redes de computadores estão cada vez mais presentes no dia a dia das
pessoas e instituições, através de diversos tipos de estruturas de organização.
Ao longo do desenvolvimento das redes de computadores foram empregadas
muitas teorias, modelos e técnicas para que se chegasse aos modelos disponíveis
atualmente. Além da aplicação das teorias, modelos e técnicas, também foi
necessário que muitos experimentos fossem realizados para provar a efetividade
de determinadas teorias, modelos e técnicas.

O crescimento das redes de computadores e principalmente das redes de


longa distância se dá pela importância que elas representam para as organizações
e pela quantidade de aplicações que dependem da comunicação de dados a longas
distâncias. Exemplos podem ser transações bancárias, compras de produtos
e serviços, bem como no campo do relacionamento humano, seja através da
disponibilização de informações, pelo ensino remoto ou pela comunicação escrita
ou falada.

As tecnologias atuais de redes de computadores, em geral, são classificadas


em três grandes categorias. O parâmetro utilizado para esta classificação está
associado ao tamanho da rede referenciada. Neste sentido, as redes podem ser
locais, metropolitanas ou de longa distância. A figura a seguir ilustra a interligação
destas redes.

FIGURA 80 – INTERLIGAÇÃO ENTRE REDES LOCAIS, METROPOLITANAS E DE LONGA DISTÂNCIA

FONTE: Senger (2008)

99
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO

As redes locais, também conhecidas como LAN (Local Area Network), são
redes que podem abranger um ou mais edifícios que estejam fisicamente próximos.
Delimitar uma rede local em uma distância máxima específica é relativamente
complicado, pois pode haver grandes organizações que tenham quilômetros de
extensão e mesmo assim a rede ser classificada como uma rede local (COMER, 2001).

A segunda categoria de redes, as metropolitanas, também referenciadas


por MAN (Metropolitan Area Network), são redes que em geral cobrem a área física
de uma cidade ou de uma região metropolitana (COMER, 2001).

Finalmente, as redes de longa distância, também referenciadas por WAN


(Wide Area Network), são redes que podem abranger múltiplas cidades, países ou
continentes (COMER, 2001).

Em relação à abrangência, as redes podem ser classificadas em intranet,


internet e extranet. A intranet é uma rede privada de uma organização que se
vale da tecnologia da internet e que permite prover uma série de serviços que em
geral facilitam o dia a dia dos usuários. A tecnologia da intranet está baseada nos
mesmos dispositivos, serviços e protocolos utilizados pela internet, possibilitando
melhorar a comunicação dentro da organização, além de melhorar a produtividade
dos profissionais da mesma.

UNI

A intranet utiliza a mesma estrutura da internet, o que facilita tanto os aspectos


técnicos quanto os aspectos relacionados à capacitação dos usuários.

Dentre as principais ferramentas que podem ser utilizadas na intranet está


o navegador (browser) e o banco de dados. A utilização do navegador facilita em
muito a questão de atualização de software e dispensa a necessidade de instalação
de softwares em todos os equipamentos em que o mesmo será utilizado. A utilização
do banco de dados proporciona acesso imediato a todas as informações necessárias,
além de permitir o registro de novas informações a qualquer momento.

Já a internet pode ser definida do ponto de vista dos componentes de


hardware e software que a formam ou como uma infraestrutura de rede que fornece
serviços de forma distribuída (KUROSE, 2003). A internet do ponto de vista dos
componentes que a formam é uma rede de computadores de abrangência mundial,
que conecta uma quantidade incalculável de equipamentos de computação. A maior
parte dos componentes que formam esta gigantesca rede são microcomputadores,
servidores de rede, servidores de e-mail, servidores de aplicação, dentre outros
dispositivos de rede necessários para a comunicação.
100
TÓPICO 2 | BASES COMPUTACIONAIS

A internet está baseada na infraestrutura das telecomunicações, no entanto,


existe uma diferenciação entre redes telefônicas e a internet. A internet provê
serviços através da comutação de pacotes, ou seja, sem necessidade de conexão
fim-a-fim; já os serviços telefônicos utilizam comutação por circuito na qual a
conexão deve ser estabelecida antes que a chamada telefônica possa ser iniciada.

Uma parte dos recursos da rede é reservada para a chamada, de modo que
nenhuma outra chamada possa utilizar aqueles recursos antes que a conexão seja
encerrada. A maior vantagem do uso da comutação de pacotes é o fato de permitir
que pacotes de diferentes fontes possam utilizar a mesma linha, permitindo
otimizar o uso dos recursos instalados.

UNI

A internet utiliza o método de comutação de pacotes e a telefonia a comutação


de circuito.

O conjunto de redes que formam a internet é interligado por redes de alta


capacidade, denominadas backbone. Os backbones são canais de comunicação com
largura de banda bastante expressiva, permitindo o tráfego de grande volume
de dados. Além dos backbones, são utilizadas linhas telefônicas comuns, linhas
de comunicação privadas, satélites, cabos submarinos e diversos outros meios
de comunicação e telecomunicação, com o objetivo de estabelecer a troca de
informações e serviços.

A internet permite unir entidades de pesquisa, órgãos culturais, usuários


particulares, órgãos governamentais, bibliotecas e empresas. O controle da
internet é descentralizado, utilizando os protocolos TCP/IP como estrutura básica
para comunicação e serviços de rede. Isto é devido ao fato da arquitetura TCP/IP
fornecer não somente os protocolos que habilitam a comunicação de dados entre
redes, mas também possuir uma série de características que contribuem para a
eficiência da arquitetura.

Entre os serviços mais conhecidos da internet estão o correio eletrônico


(protocolos SMTP, POP), a transferência de arquivos (FTP), a emulação de terminal
remoto (Telnet) e acesso de informação em hipertexto (HTTP).

A extranet é uma extensão da intranet de uma organização. Através da


extranet é possível realizar atividades da intranet a partir de qualquer local que
tenha acesso à internet. As atividades que antes estavam disponíveis apenas na
intranet corporativa, agora podem ser realizadas a partir de qualquer lugar por

101
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO

qualquer pessoa que tenha os direitos de acesso. O salto qualitativo em termos


de valor agregado aos negócios das organizações é praticamente incalculável, se
considerarmos a quantidade quase que ilimitada de diferentes oportunidades que
podem ser geradas pelo uso desta tecnologia.

A intranet, embora possa ser utilizada por uma grande quantidade de


usuários de uma corporação e abranger uma área geográfica considerável dentro
da mesma, é uma rede local que utiliza a tecnologia da internet. A internet é a rede
mundial de computadores que possibilita o compartilhamento de informações
entre as pessoas conectadas à mesma. A internet é a maior rede de longa distância
existente na atualidade. Já a extranet é a fusão da intranet com a internet.

UNI

A extranet representa uma verdadeira revolução no processo de manipulação de


informações.

A evolução dos meios de comunicação tem tornado a extranet uma


importante ferramenta para os mais variados tipos de atividades profissionais. A
aceitação da extranet por parte dos usuários é facilitada pelo fato de utilizar a
mesma tecnologia da internet e esta ser de utilização relativamente comum pela
maioria dos profissionais atualmente.

Dentre as vantagens da utilização de uma extranet podem ser destacadas


a agilidade e facilidade na tramitação de informações entre parceiros, clientes e
fornecedores, facilidade no arquivamento digital de documentos, além da redução
no consumo de papel.

102
RESUMO DO TÓPICO 2
Caro acadêmico, neste tópico você estudou que:

• A arquitetura de computadores se refere à forma como os elementos físicos de


um sistema computacional estão organizados ou dispostos em um computador.
Os três principais subsistemas de um computador são a Unidade Central de
Processamento, a memória principal e os dispositivos de entrada e saída.

• A memória principal é a memória utilizada para carregar o Sistema Operacional


e os demais programas que devem ser executados. Ela é utilizada como
uma memória de trabalho, que armazena os dados apenas enquanto houver
alimentação de energia e/ou aqueles dados estiverem em uso. A memória
principal é volátil, ou seja, não realiza o armazenamento permanente dos dados.

• As memórias que realizam armazenamento permanente dos dados são


as memórias secundárias. Neste conjunto entram todas as formas de
armazenamento permanente, como HD, CD, DVD, pendrives etc. Pode parecer
estranho as memórias secundárias serem as que mantêm os dados armazenados,
mas se pensarmos que a memória principal é extremamente rápida e precisa dos
dados apenas no momento que os estiver utilizando, o conceito se torna simples
de compreender.

• O Sistema Operacional é o principal software de qualquer computador, pois é ele


quem oferece uma interface entre o hardware e os demais softwares executados
no mesmo. Pode-se dizer que um computador sem Sistema Operacional é inútil,
pois não servirá mais do que de elemento de decoração.

• A comunicação é elemento essencial na sociedade contemporânea e grande parte


da comunicação é provida através das redes de computadores. É praticamente
impossível pensar numa organização que não tenha seus dados num servidor
de arquivos ou compartilhados entre diversas máquinas através de uma rede.

103
AUTOATIVIDADE

Caro acadêmico, como forma de fixar o conteúdo estudado, realize a


autoatividade proposta a seguir:

1 Descreva a função realizada pela Unidade de Lógica e Aritmética (ULA).

2 Descreva a função de um Sistema Operacional dentro de um sistema


computacional.

3 Descreva a finalidade de uma ferramenta de desenvolvimento.

4 Descreva a diferença entre um sinal analógico e um sinal digital.

5 Qual a abrangência de uma rede WAN?

104
UNIDADE 2
TÓPICO 3

SUPORTES COMPUTACIONAIS

1 INTRODUÇÃO
A área de computação/informática é utilizada como suporte aos negócios há
poucas décadas e passou por diversos ciclos, tanto em termos tecnológicos quanto
em termos de como e quem executa as atividades de computação/informática nas
organizações.

Uma questão importante que deve ser levada em consideração é o fato de


que a computação/informática em si deixou de ser fonte de diferencial estratégico.
Atualmente o uso de recursos de computação/informática é uma necessidade
do dia a dia das organizações. Cada organização tem um grau de dependência
da computação/informática para execução de suas atividades e a margem de
oportunidades para utilização da computação/informática como diferencial
estratégico tem diminuído.

Na mesma proporção que a computação/informática deixa de ter


participação como diferencial estratégico, ela passa a se tornar uma área crítica
em termos de dependência, pois uma empresa não pode deixar de faturar porque
o software de faturamento não está disponível por problemas de infraestrutura de
comunicação ou falhas na atualização de versão do software, entre outros possíveis
motivos.

A infraestrutura de computação/informática precisa estar disponível 24


horas por dia, sete dias por semana, caso contrário poderá representar um gargalo
para o crescimento dos negócios. Esta questão requer não apenas disponibilidade,
mas um corpo de recursos humanos providos de qualificação e motivação para
atender às demandas existentes.

Observe que, conforme avaliamos a participação da computação/


informática na organização, podemos caracterizá-la de diferentes formas.
Obviamente que ainda há uma grande gama de possibilidades de utilização da
computação/informática como diferencial estratégico em uma parcela significativa
de organizações de diversas áreas.

105
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO

2 ENGENHARIA DE SOFTWARE
Quando se fala em Engenharia de Software logo imagina-se que, por se tratar
de uma engenharia, tenha um cunho técnico relativamente alto. Porém, embora as
questões técnicas precisem ser consideradas, elas são apenas meios para atingir os
objetivos. Para a Engenharia de Software o computador, a teoria da computação e
até mesmo os algoritmos são apenas ferramentas necessárias para prover a solução
de um problema (PFLEEGER, 2004).

A Engenharia de Software tem como enfoque lidar com os aspectos de


produção de software em todas as fases do seu ciclo de vida (SOMMERVILLE,
2003). O ciclo de vida de um software inicia no momento em que são registradas
as primeiras especificações de funcionamento, até o momento em que o software
deixa de ser utilizado pelos seus usuários. Isso significa que tipicamente um
software possui um ciclo de vida longo, se considerarmos o esforço necessário para
a produção de um software.

Por outro lado, a Engenharia de Software pode ser vista como um framework
para o planejamento, conceituação e projeto de software (PETER; PEDRYCS,
2001). Na abordagem de framework pode-se considerar o conjunto de aspectos
construtivos, seus desafios e considerações sobre produzir tudo ou adquirir partes
e fazer com que as mesmas funcionem de maneira sintonizada.

Acrescentaria ainda a estas abordagens a abordagem de gestão das


pessoas que realizam os processos de software. A produção de software é altamente
dependente de pessoas e seus talentos e habilidades, logo, também é tarefa da
Engenharia de Software a gestão adequada desse importante componente. “A adição
de recursos humanos a um projeto de software atrasado irá atrasá-lo ainda mais”
(BROOKS, 2009, p. 24). Considerando que a afirmação de Brooks é verdadeira,
incorporar novos elementos à equipe ou substituir componentes da mesma pode
comprometer severamente o resultado final do projeto de software.

O fato é que, independente da abordagem que se utilize, a Engenharia de


Software lida com desafios constantemente. Produzir algo que ninguém sabe o que
e como será, de forma que não se pode demonstrar de forma precisa, é no mínimo
um trabalho a ser respeitado.

De forma bastante resumida, pode-se dizer que a Engenharia de Software lida


basicamente com as preocupações de como produzir software de qualidade. Sendo
que o termo qualidade, neste caso, pode ter diversos significados, dependendo do
ponto de vista pelo qual é analisado.

A qualidade de software, portanto, se torna a meta principal da Engenharia


de Software. Diante disso, é adequado conhecer o que algumas autoridades em
qualidade argumentam em relação ao assunto. Neste contexto foram selecionados
Crosby, Deming, Feigenbaum, Ishikawa, Juran e Shewhart.

106
TÓPICO 3 | SUPORTES COMPUTACIONAIS

Crosby (1979) considera que o primeiro pressuposto incorreto sobre


qualidade é o de que ela signifique durabilidade, luxo ou beleza. A palavra
qualidade é frequentemente utilizada para significar o valor relativo de algo
em frases como boa qualidade, má qualidade e qualidade de vida, o que possui
significados diferentes para cada pessoa.

Desta forma, qualidade pode ser definida como conformidade aos


requisitos que estão sendo gerenciados. Consequentemente, as não conformidades
identificadas significam ausência de qualidade, problemas de não conformidade se
tornam problemas de qualidade e então pode-se passar a definir o que é qualidade
(CROSBY, 1979).

Através da forma como Crosby (1979) descreve seu conceito de qualidade


pode-se identificar claramente que, para ele, qualidade significa conformidade
com as especificações. Mesmo assim, ele também defende a importância de
compreender as expectativas que se tem em relação às questões relacionadas à
qualidade de produção, bem como outras perspectivas externas.

Crosby (1979) defende também a importância de definir qualidade de forma


clara para que se possa medir e gerenciar o conceito. A perspectiva de qualidade
de Crosby (1979) pode ser sumarizada em 14 passos que estão apoiados em quatro
fundamentos absolutos de gestão da qualidade:

1 Qualidade é definida como conformidade com os requisitos, não como


durabilidade ou beleza;

2 A forma para obter qualidade é a prevenção, não inspeção. Isto é, a forma de


qualidade para os fornecedores atenderem aos requisitos dos clientes é fazer certo da
primeira vez. Crosby é um forte defensor da prevenção ao invés da inspeção. Numa
organização com cultura orientada às ideias de Crosby, todos são responsáveis pelo
resultado de seu trabalho. Não há ninguém para encontrar erros;

3 O padrão de desempenho deve ser zero defeitos, não sendo aceito o “está bom
o suficiente”. Crosby defende que a noção de que zero erros pode e deve ser o
objetivo;

4 A medida da qualidade é o custo da qualidade. Uma imperfeição tem um


efeito imediato na redução do desempenho, podendo refletir na relação com o
cliente. Neste caso, investimentos precisam ser feitos com treinamentos e outras
atividades que permitam eliminar os erros e recuperar o custo das perdas.

A dificuldade em definir qualidade reside em traduzir futuras necessidades


dos usuários em características mensuráveis, assim um produto pode ser projetado
e produzido de forma a satisfazer às necessidades a um preço que os usuários
estarão dispostos a pagar. Isto não é fácil, e quanto mais se aproxima do produto
ideal, descobre-se que as necessidades dos usuários mudaram, os concorrentes se
aproximam e etc. (DEMING, 1988).

107
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO

Um dos pontos importantes do conceito segundo Deming (1988) é que a


qualidade deve ser definida em termos de satisfação dos usuários, o qual é um
conceito muito mais amplo que a definição de qualidade como sendo conformidade
com as especificações.

Deming defende que a qualidade deve ser definida apenas em termos do


agente, ou seja, quem julga a qualidade. Para implementar sua perspectiva sobre
qualidade, Deming introduziu 14 pontos de gerenciamento para ajudar as pessoas
a entenderem e implementarem a transformação necessária:

1 criar constância de propósito para melhoria de produtos e serviços;


2 adotar a nova filosofia;
3 cessar a dependência de inspeção em massa;
4 deixar de basear os negócios em preços;
5 melhorar constantemente e continuamente o sistema de produção e serviços;
6 instituir treinamentos;
7 instituir liderança;
8 eliminar o medo;
9 quebrar barreiras entre departamentos;
10 eliminar slogans, exortações e metas numéricas;
11 eliminar cotas numéricas e padrões de trabalho;
12 remover barreiras para poder orgulhar-se das habilidades;
13 instituir um vigoroso programa de educação;
14 agir para conquistar a transformação.

Qualidade é algo determinado pelo cliente, não por um engenheiro, nem


pelo marketing, nem pela administração geral. Ela é baseada sobre a experiência
atual do cliente com o produto ou serviço, medido contra os requisitos definidos
pelo cliente. Tais requisitos podem estar declarados ou não, realizados em consenso
ou não, tecnicamente operacionais ou completamente subjetivos.

É importante que as metas devem representar sempre movimento no


sentido de atender um mercado competitivo. Qualidade de produto ou serviço
pode ser definida como: A composição total das características de marketing,
engenharia, manufatura e manutenção de produtos e serviços através dos quais o
uso atenderá às expectativas dos clientes (FEIGENBAUM, 1983).

A definição de qualidade de Feigenbaum (1983) pode ser resumida


como atender às necessidades dos clientes, embora ele vá além, defendendo o
atendimento atual e futuro das necessidades dos clientes. Isto significa que para
ele o conceito de qualidade não é estático, mas que deve ser atualizado conforme
mudarem as necessidades dos clientes.

A realização do controle de qualidade objetiva obter produtos cuja


qualidade possa satisfazer aos requisitos dos clientes. O simples fato de atender
padrões ou especificações nacionais não é o suficiente. Os padrões internacionais
definidos pela ISO (International Organization for Standardization) ou pela IEC
(International Eletrotechnical Commission) não são perfeitos.
108
TÓPICO 3 | SUPORTES COMPUTACIONAIS

Eles possuem muitas falhas. Os clientes podem não estar satisfeitos


com um produto que atenda estes padrões. É necessário ter em mente que os
requisitos dos clientes mudam de um ano para outro e mesmo padrões atualizados
frequentemente não podem acompanhar o ritmo dos requisitos dos clientes.

A forma de interpretar o termo qualidade é importante, pois se for


interpretada de forma focada significará qualidade de produtos, mas se for
interpretada de forma abrangente, o termo significará qualidade de produtos,
serviços, informações, processos, pessoas, sistemas etc. (ISHIKAWA, 1985).

A perspectiva de qualidade de Ishikawa (1985) está voltada para a definição


de que qualidade é atender às necessidades dos clientes e que acompanha as
mudanças de expectativas. Isto significa que qualidade é um conceito dinâmico,
pois as necessidades, os requisitos e as expectativas dos clientes mudam
continuamente. Desta forma, qualidade deve ser definida de forma compreensiva
e dinâmica. Além disso, Ishikawa (1985) defende que o preço é um atributo de
qualidade, ou seja, um produto com preço alto pode não satisfazer ao cliente e,
consequentemente, não ter alta qualidade.

Para Juran, a palavra qualidade tem múltiplos significados. Dois destes


significados são os mais importantes: 1) Qualidade consiste nas características
do produto que atende às necessidades dos clientes, provendo um produto que
atenda suas necessidades. 2) Qualidade consiste na inexistência de deficiências. De
forma simplificada, o termo qualidade pode ser definido como adequado para uso
(fitness for use) (JURAN, 1988).

A definição de qualidade de Juran destaca a questão de que não se pode


utilizar a palavra qualidade apenas em termos de satisfação das expectativas ou
especificações dos clientes, pelo fato de ser muito difícil atingi-la. Ao invés disso,
ele define qualidade como adequado ao uso, o que indica referências a requisitos e
características do produto. Desta forma, a definição de Juran pode ser interpretada
como uma definição mais voltada para conformidade com as especificações do que
uma definição de atendimento das necessidades dos clientes. Juran propôs três
processos para o gerenciamento da qualidade:

• Planejamento da qualidade;
• Controle da qualidade;
• Melhoria da qualidade.

Para Shewhart, há dois aspectos comuns na qualidade: o primeiro deles


diz respeito à consideração da qualidade como um objetivo independente da
existência do homem. O segundo diz respeito a como se pensa, sente e percebe a
realidade, ou seja, o lado subjetivo da qualidade (SHEWHART, 1931).

Embora o conceito de qualidade de Shewhart seja de 1920, pode ser


considerado como um dos melhores, pois define os lados objetivo e subjetivo da
qualidade, enquadrando-se nas definições de conformidade com as especificações
e atendimento das necessidades dos clientes.
109
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO

Porém, para que se possa verificar os índices de qualidade é necessário que


haja uma forma de realizar esta verificação. Para que se possa medir é necessário
que haja uma forma de medição. Medição é “o processo pelo qual números ou
símbolos são atribuídos a atributos de entidades do mundo real, de maneira a
descrevê-las de acordo com regras claramente definidas” (FENTON; PFLEEGER,
1997, p. 5). Uma entidade pode ser entendida como um evento ou objeto que será
medido e um atributo como uma característica específica que pode ser utilizada
como parâmetro.

A medição permite aos profissionais de software medir e prever os processos


de software e recursos necessários para o desenvolvimento de um projeto (PETERS,
2001). A norma ISO/IEC 15939 define como objetivos da medição de software apoiar
a gerência e a melhoria de processos e de produtos de software (ISO/IEC, 2002).

A medição de software é reconhecida como uma forma utilizada para


o entendimento, monitoramento, controle, predição e melhoria de projetos de
desenvolvimento e manutenção de software (BRIAND; DIFFERDING; ROMBACH,
1997). De forma simplificada, pode-se dizer que o objetivo da medição é fornecer
informação que melhora a tomada de decisões a tempo para afetar o resultado do
negócio.

As medições permitem aumentar o conhecimento sobre o processo através


do qual o produto é desenvolvido, permitindo que se possa administrar de forma
mais efetiva através da quantificação (PRESSMAN, 1995). A medição permite
aos profissionais de software medir e prever os processos de software e recursos
necessários para o desenvolvimento de um projeto (PETERS e PEDRYCS, 2001).

A medição também é uma fonte de informações, fundamental para


fornecer respostas sobre questões relevantes relacionadas aos processos adotados
e os resultados obtidos com a utilização dos mesmos. Algumas das respostas que
podem ser obtidas permitem identificar se os processos técnicos e gerenciais estão
adequados e ainda permitem obter subsídios para a melhoria daqueles que não
estiverem satisfatórios. (DeMARCO, 1991).

Pelo fato da medição dar o suporte necessário para ações de melhoria da


qualidade, esta tem se tornado cada vez mais importante no contexto da Engenharia
de Software (ROCKENBACH, 2003).

Na norma ISO/IEC 15939 a medição é definida como um conjunto de


operações cujo objetivo é a determinação do valor de medidas (ISO/IEC, 2002).
Medição é o processo pelo qual números ou símbolos são atribuídos a atributos
de entidades no mundo real, descrevendo-os de acordo com regras claramente
definidas (FENTON; LITTLEWOOD, 1991).

Uma medida é uma indicação quantitativa da extensão, quantidade,


dimensão, capacidade ou tamanho de um produto ou processo (ISO/IEC, 2002). Já
uma métrica é qualquer tipo de medição que se refira a um software, processo ou
documentação relacionada (SOMMERVILLE, 2003).
110
TÓPICO 3 | SUPORTES COMPUTACIONAIS

Kettelerij (2006) argumenta que dentre as abordagens existentes para a


medição de software, as que têm se destacado pela utilização na prática são GQM –
Goal Question Metric (BASILI e WEISS, 1984) e PSM – Practical Software and Systems
Measurement (PSM, 2003). A seguir estes métodos são descritos em detalhes.

GQM
Em organizações cuja gestão esteja fortemente apoiada em sistemas de
gerenciamento organizacional, o sucesso pode ser comprometido se a estratégia
de negócio não puder ser traduzida em um conjunto de objetivos operacionais no
software. É necessário, portanto, que os objetivos organizacionais sejam traduzidos
em objetivos de medição para que os dados obtidos contribuam nas decisões de
alto nível da organização (BASILI et al., 2007).
A abordagem GQM tem se mostrado bastante útil em diversos contextos
organizacionais no apoio ao estabelecimento do gerenciamento quantitativo de
projetos de software (BASILI et al., 2007).

O GQM – Goal/Question/Metric (BASILI; WEISS, 1984) é uma abordagem


de medição cuja orientação está voltada aos objetivos de medição de processos e
produtos de software. Originalmente o método GQM foi desenvolvido por Victor
Basili e David Weiss na Universidade de Maryland, de forma cooperada com o
Software Engineering Laboratory do NASA Goddard Space Flight Center.

O GQM é uma abordagem que permite sistematizar a adaptação e


integração de objetivos com base nas necessidades específicas de cada projeto e de
uma organização, aos modelos dos processos de software, produtos e perspectivas
de interesse de qualidade (BASILI; CALDIERA; ROMBACH, 1994).

O método GQM, desenvolvido por Victor R. Basili e David M. Weiss, foi


estendido com outros conceitos por Dieter H. Rombach. O método GQM é resultado
de diversos anos de experiência prática e pesquisas acadêmicas (SOLINGEN e
BERGHOUT, 1999). A ideia básica do GQM é derivar métricas de software a partir
de perguntas e objetivos.

A adoção sistemática de medições é tipicamente realizada através de um


programa de medição. Programas de medição podem apresentar diversos tipos de
benefícios. O mais desejável é o atendimento dos objetivos de melhoria explícitos,
os quais podem estar relacionados a produtos ou processos.

Um programa de medição pode proporcionar também a melhoria na


comunicação com a equipe do projeto, definição dos processos e execução dos
processos. A questão dos benefícios financeiros diretos é de difícil medição, pois
existem muitos fatores indiretos envolvidos (SOLINGEN; BERGHOUT, 1999).

A abordagem GQM está fundamentada em dois princípios. O primeiro


princípio diz que um programa de medição deve ter como base um conjunto de
objetivos e não estar baseado em medidas. O segundo princípio diz que cada
organização deve realizar a definição de objetivos e medidas específicos para sua
realidade (SOLINGEN; BERGHOUT, 1999).

111
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO

No roteiro de um programa de medição estabelecido com base na abordagem


GQM as atividades devem iniciar pela definição dos objetivos de medição. Uma vez
definidos os objetivos de medição, deve-se realizar o refinamento de cada objetivo
em questões a partir das quais são definidas medidas que permitam prover as
informações necessárias para responder as questões elaboradas.

São os dados obtidos pela medição que permitem responder às questões


que, por sua vez, são analisadas para identificar se os objetivos de medição
estabelecidos foram ou não atingidos. Este roteiro demonstra que a abordagem
suporta a definição de um programa de medição de forma top-down e a análise e
interpretação dos dados de medição de forma bottom-up.

PSM

O PSM - Practical Software and Systems Measurement é uma abordagem


que descreve um processo de medição orientado por informações que tratam dos
objetivos técnicos e de negócios de uma organização (PSM, 2003). O desenvolvimento
do PSM é patrocinado pelo Departamento de Defesa dos EUA (DoD) e US Army.
O desenvolvimento do PSM tem sido baseado em experiências práticas de medição
realizadas pelo DoD, governo americano e indústria (PSM, 2003).

O PSM foi utilizado como modelo de referência para o padrão ISO 15939,
o qual foi utilizado como base para a definição da área de processos (PA - Process
Area) do CMMI (KETTELERIJ, 2006). A documentação do PSM possui a descrição
de como realizar a definição e execução de um programa de medição de forma a
atender às necessidades de informação das organizações que adquirem e fornecem
softwares e sistemas (PSM, 2003).

O principal foco do PSM está voltado para o nível de projetos, apresentando


uma abordagem para a definição e implementação eficaz de um processo de
medição para projetos de software e de sistemas. O PSM tem como objetivo prover
aos gerentes de projeto e gerentes técnicos informações quantitativas necessárias
para a tomada de decisões que possam afetar o cronograma e custo do projeto,
bem como os objetivos de desempenho técnico.

Embora a abordagem PSM esteja com o foco em nível de projeto, o processo


de medição baseado em informações pode ser estendido para o tratamento de
requisitos de medição em nível de organização (PSM, 2003).

Um detalhe relevante a ser destacado é que a abordagem GQM é orientada a


objetivos e a abordagem do PSM está orientada ao fornecimento de informações. A
implementação de um programa de medição que inclua o PSM envolve a definição
da necessidade de informações da organização e dos projetos e então selecionar
as medições que forneçam as informações que atendam a tais necessidades
(KETTELERIJ, 2006).

112
TÓPICO 3 | SUPORTES COMPUTACIONAIS

A medição no PSM é descrita como um processo sistemático, mas flexível,


podendo ser adaptado para satisfazer necessidades de informação e características
específicas de cada projeto. As medições podem ser selecionadas das seguintes
categorias (KETTELERIJ, 2006): cronograma e progresso, recursos e custos,
estabilidade e tamanho do produto, qualidade do produto, desempenho do processo,
efetividade tecnológica e satisfação do usuário. A abordagem PSM possui um
processo para seleção das medições apropriadas com base em questões e objetivos
relevantes a um projeto de desenvolvimento de software (BASILI et al., 2007).

As atividades de adaptação de medidas e aplicação de medidas formam


o centro do processo de medição que fornece informações diretamente aos
responsáveis pela tomada de decisões. A atividade de implementação do processo
envolve as atividades que estabelecem o processo de medição dentro de uma
organização. Na atividade de avaliação da medição são identificadas as tarefas de
avaliação e melhoria que servirão para todo o programa de medição (PSM, 2003).

O processo de medição deve estar integrado aos demais processos que fazem
parte do ciclo de vida dos projetos de software e de sistemas. Em situações em que os
processos do ciclo de vida são dinâmicos, o processo de medição deve acompanhar
o dinamismo das mudanças e adaptações ao projeto. Estas atividades de adaptação
e aplicação de medidas são iterativas durante todo o ciclo de vida do projeto. As
questões, medidas e técnicas de análise podem mudar com o passar do tempo, com
o objetivo de atender às necessidades do projeto que está sendo executado.

113
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO

3 BANCO DE DADOS

O armazenamento de dados, por muito tempo, ocorreu na forma de


arquivos. Cada novo software que era desenvolvido implementava também as
rotinas necessárias para a criação, inserção, consulta e exclusão dos dados de
arquivos.

A utilização dessa forma de tratamento do armazenamento foi sendo


gradativamente extinta a partir do momento em que o conceito de banco de dados
se popularizou na comunidade da área de computação/informática.

Mas, antes de continuarmos, o que realmente é um banco de dados?


(FOROUZAN; MOSHARRAF, 2011) definem que “banco de dados é um conjunto
de dados relacionados, logicamente coerentes, utilizado por programas da
aplicação em uma organização”.

Tomando esta definição, pode-se entender que um banco de dados


congrega um conjunto de dados que estejam relacionados a determinado assunto,
aplicação, departamento, empresa, etc. Estes dados devem ser organizados de
forma adequada para que façam sentido aos usuários que os utilizarão quando
necessário através de suas aplicações.

Para atender às necessidades e demandas dos usuários, um banco de dados


deve possuir mais funcionalidades do que apenas as de permitir armazenar e
recuperar dados de uma base. Em função disso, boa parte dos modernos bancos
de dados é formada, na verdade, por Sistemas de Gerenciamento de Banco de
Dados (SGBD).

Um sistema de gerenciamento de banco de dados permite a definição,


criação, acesso e manutenção de um conjunto de dados. Ele é formado pela
combinação de cinco componentes: hardware, software, dados, usuários e
procedimentos (FOROUZAN; MOSHARRAF, 2011).

Um sistema de gerenciamento de banco de dados possui diversas vantagens


sobre o armazenamento de dados em arquivos. Num sistema de banco de dados
há menor redundância, pois, tipicamente, sistemas que realizam armazenamento
em arquivos realizam a duplicação de certos conjuntos de dados.

Num sistema de banco de dados há menos inconsistências, pois tipicamente


o uso do modelo relacional é mais fortemente aplicado. Isso faz com que quaisquer
alterações nos dados sejam refletidas de forma consistente nos demais locais que
utilizam aquela informação.

A eficiência também é privilegiada, pelo fato do sistema de banco de dados


possuir esquemas de acesso a dados bastante sofisticados. Da mesma forma, num
sistema de banco de dados é gerenciada a integridade do conteúdo armazenado.
Além destas vantagens, pode-se apontar a questão da maior confidencialidade

114
TÓPICO 3 | SUPORTES COMPUTACIONAIS

do conteúdo armazenado num sistema de banco de dados em relação ao


armazenamento em arquivos.

Para Garcia-Molina (2001), os recursos que um sistema de banco de


dados deve oferecer aos usuários são armazenamento persistente, interface de
programação e gerenciamento de transações. Além de permitir o armazenamento
de uma grande quantidade de dados, um sistema de banco de dados deve permitir
que tais dados existam de forma independente de processos que utilizem estes
dados. Além disso, implementa estruturas de dados que permitem agilidade no
acesso, mesmo em grande quantidade de dados.

A interface de programação permite ao usuário acessar os dados através


de uma linguagem de consulta. Tipicamente a linguagem utilizada é a SQL
(Structured Query Language), que permite a manipulação de dados de forma muito
mais robusta e avançada que a simples leitura de gravação de dados em arquivos.
O gerenciamento de transação permite o gerencimento de acessos concorrentes
por diferentes processos ao mesmo conjunto de dados. Com o uso de transações
há a garantia de que cada processo executou de forma consistente as alterações
necessárias na base de dados (GARCIA-MOLINA, 2001).

115
RESUMO DO TÓPICO 3
Caro acadêmico, nesse tópico você estudou que:

• A Engenharia de Software tem a finalidade de tratar dos aspectos relacionados ao


desenvolvimento de software em todas as fases do ciclo de vida de software. Estes
aspectos podem estar relacionados à dimensão, pessoas, processo e tecnologias.

• Um dos aspectos muito importantes a serem considerados na Engenharia


de Software é a questão das pessoas, pois a atividade de desenvolvimento de
software, por exemplo, é fortemente dependente do fator humano. Neste aspecto
é importante observar também que a inclusão de mais pessoas na equipe de
desenvolvimento em um projeto atrasado poderá torná-lo ainda mais atrasado.

• Quando se fala em qualidade de software, diversas definições são defendidas,


porém os aspectos de conformidade com as especificações e atendimento das
necessidades dos usuários não podem ser ignorados. Estes aspectos contemplam
as dimensões objetiva e subjetiva da qualidade.

• Um programa de medição permite o atendimento de objetivos de melhoria


explícitos que podem estar relacionados a produtos ou processos, proporcionando
inclusive melhoria na definição e execução dos processos, além da comunicação
com a equipe de projeto.

• Um sistema de gerenciamento de banco de dados tem a finalidade de permitir a


definição, criação, acesso e manutenção de um conjunto de dados. Ele é formado
pela combinação de hardware, software, dados, usuários e procedimentos.

116
AUTOATIVIDADE

Caro acadêmico, como forma de fixar o conteúdo estudado, realize a


autoatividade proposta a seguir:

1 Qual é o principal enfoque da Engenharia de Software?

2 Quais são os quatro fundamentos absolutos de gestão da qualidade, de


acordo com Crosby (1979)?

3 Quais são os processos definidos por Juran (1988) para o gerenciamento da


qualidade?

4 Quais os objetivos da realização do processo de medição?

5 Qual é o recurso de um sistema de banco de dados que permite o


gerencimento de acessos concorrentes por diferentes processos ao mesmo
conjunto de dados?

117
118
UNIDADE 2
TÓPICO 4

INTELIGÊNCIA COMPUTACIONAL

1 INTRODUÇÃO
Nas primeiras décadas em que os computadores passaram a ser utilizados
para o processamento de dados fora do meio científico, o principal uso dos
mesmos estava restrito ao processamento de dados de alta importância e valor
agregado. Este direcionamento era causado, basicamente, em função das restrições
de recursos computacionais da época. Quando nos referimos a essa questão, não
significa que boa parte não estivesse disponível, mas que a relação entre custo e
benefício encontrava-se em um patamar bastante diferente do que encontramos
atualmente.

Pode-se citar como exemplo o custo de processamento do registro de uma entrada


de numerários em caixa, que chegou a custar vários dólares. É certo que, além dos altos
custos de processamento e armazenamento de dados, o poder de processamento era
bastante limitado em relação ao que há disponível no mercado atual.

Se tomarmos as décadas de 1960, 1970 e até mesmo a de 1980, os recursos de


memória, processador, armazenamento e de infraestrutura de telecomunicações
eram bastante limitados, além de terem custos bastante elevados. Esta escassez
de recursos obrigava os usuários de informática a otimizarem ao máximo a sua
utilização, medindo de maneira bastante cautelosa a relação entre custo e benefício
no momento de decidir, por exemplo, pela inclusão de qualquer dado num arquivo
ou tabela de armazenamento.

UNI

Nas primeiras décadas da computação, os recursos de processamento e


transmissão de dados eram bastante escassos e de custo bastante elevado.

119
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO

A decisão da inclusão de qualquer dado precisava ser tomada com base


em critérios concretos que justificassem a existência de tal dado a mais, pois o
mesmo seria armazenado na memória, processado, armazenado e quem sabe até
transmitido através dos dispositivos de teleprocessamento. É certo que este dado
processado representava um custo pouco expressivo, mas se multiplicado pela
quantidade de transações realizadas, poderia se tornar significativo.

Felizmente a tecnologia da informação não parou de evoluir e a partir da


década de 1990 pudemos começar a obter novos benefícios proporcionados pela
evolução e pelo barateamento do acesso aos recursos computacionais, tanto no
sentido da computação propriamente dita, quanto na questão das comunicações
utilizando a infraestrutura das redes de computadores.

A internet revolucionou, entre outras coisas, a forma como os seres humanos


se relacionam, pois permite que as pessoas se comuniquem à distância através
de diversos meios, como correio eletrônico (e-mail), bate papo (chat), grupos de
discussão (fóruns), comunidades virtuais ou redes sociais, entre outras.

A internet não é apenas um luxo, como pode ser considerado por alguns.
Acesso à internet é permitir acesso a um novo mundo. Nesse pode-se explorar
uma quantidade muito vasta de informações, conhecimentos científicos,
relacionamento com pessoas distantes ou próximas fisicamente. Enfim, incluir
digitalmente a população é, acima de qualquer outra coisa, prover igualdade de
acesso a informações e outras possibilidades. Informações que permitirão, entre
outras coisas, compreender melhor o mundo em que vivemos.

2 CONCEITOS BÁSICOS
Como forma de facilitar o entendimento dos conceitos apresentados ao
longo desta unidade, é apresentada a definição de alguns dos termos utilizados.
Um termo que será utilizado por diversas vezes é tempo real. Este termo necessita
ser bem entendido, para que você aproveite bem o conteúdo estudado. O termo
tempo real se refere à restrição de tempo de resposta existente na execução de
determinada aplicação. Isso significa que o tempo real não é necessariamente
instantâneo, mas sim o tempo de resposta necessário (COULORIS, 2007).

Também é importante que se conheça o significado dos termos sinal


analógico e sinal digital. Um sinal analógico é aquele cuja característica tem
uma variação contínua no tempo, ou seja, não sofre variações bruscas de forma
instantânea. Já um sinal digital possui uma variação discreta (abrupta) em relação
ao tempo. Isto não significa que um sinal digital não possa representar valores
dependentes do tempo.

A multimídia pode ser entendida como um ponto de convergência


entre publicidade, informática, consumidores de dispositivos de áudio e vídeo,
telecomunicações, indústria de televisão e cinema (FLUCKIGER, 1995). O
120
TÓPICO 4 | INTELIGÊNCIA COMPUTACIONAL

crescimento da multimídia se deu em função da disponibilidade de recursos e do


interesse na utilização da mesma. A disponibilidade de recursos, principalmente
no âmbito computacional e de comunicação, foi a grande mola propulsora que
permitiu a utilização conjunta de diversas mídias.

UNI

A multimídia é, portanto, a integração de textos, imagens, vídeos, sons e quaisquer


outros meios, cujas informações possam ser representadas, transmitidas, armazenadas e
processadas digitalmente. A multimídia torna o computador um atrativo meio para diversão e
realização de atividades.

A palavra multimídia, portanto, designa a coexistência de diversas formas,


neste caso, diversos formatos de dados, como textos, sons, vídeos, entre outros.
A utilização da palavra multimídia pode ser encontrada também composta
com outras, como, por exemplo, rede multimídia, tecnologia multimídia, placa
multimídia, aplicação multimídia, dispositivo de armazenamento multimídia,
plataforma multimídia, entre outras.

UNI

A palavra multimídia é composta do prefixo multi e do radical mídia (FLUCKIGER,


1995). O prefixo multi, originário do latim multus, significa numerosas, diversas ou várias. Este
mesmo radical é utilizado em outras palavras, como multicolor (várias cores) e multiformis
(que possui várias formas). Já o radical mídia, originário do latim medium, significa centro ou
meio. No contexto da multimídia, o radical mídia está relacionado aos tipos de dados utilizados,
ou seja, os formatos de apresentação.

A tecnologia multimídia está possibilitando a utilização de informações


de maneiras inovadoras. A quantidade de pessoas que utilizam a tecnologia
multimídia, principalmente de forma remota, é crescente. Este crescimento
demonstra a importância que tal tecnologia representa no cotidiano da sociedade.
Os recursos da tecnologia multimídia têm sido utilizados em diversas áreas de
conhecimento.

A tecnologia multimídia tem auxiliado as pessoas na busca de novos


conhecimentos, divertindo e facilitando a geração de negócios para as empresas.
121
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO

Isto demonstra que ela não está restrita a um pequeno conjunto de aplicações, mas
sim, limitado apenas à criatividade e imaginação de quem faz ou pretenda fazer
uso da mesma.

UNI

A tecnologia multimídia é um importante meio para facilitar o processo de ensino-


aprendizagem, permitindo ao usuário desempenhar um papel participativo.

O processo de comunicação utilizando recursos multimídia potencializa a


capacidade de expressão dos usuários. Tal tecnologia também facilita o processo
de aprendizagem, pois permite o uso de formas mais atrativas de ensino e
apresentação de conteúdos que os meios tradicionalmente empregados. Neste
contexto, o aluno deixa de ter um papel passivo e passa a desempenhar um papel
participativo no processo de ensino-aprendizagem. A possibilidade de utilização
de um ambiente interativo torna as aplicações mais interessantes aos alunos.

3 TIPOS DE MÍDIA

Os diversos tipos de mídia conhecidos e utilizados podem ser classificados


segundo suas características. Esta classificação ajuda no entendimento da
multimídia. Os tipos de mídia, portanto, podem ser classificados em mídias
capturadas, sintetizadas, discretas e contínuas (WILLRICH, 2002). Isso não
significa dizer que é a única forma de classificação e muito menos de que elas são
autoexcludentes, pois podemos ter mídias capturadas discretas e também mídias
capturadas contínuas. Da mesma forma, podemos ter mídias sintetizadas discretas
e contínuas. Além disso, podemos ter todos os tipos sendo utilizados em conjunto
num mesmo momento.

122
TÓPICO 4 | INTELIGÊNCIA COMPUTACIONAL

FIGURA 81 – ALGUNS TIPOS DE MÍDIAS

FONTE: O autor

Bem, antes de você continuar os estudos sobre este assunto, é importante que
seja esclarecido o que são mídias capturadas, sintetizadas, discretas e contínuas. As
mídias capturadas são aquelas obtidas do mundo real, ou seja, os sons, imagens e
vídeos obtidos a partir de elementos do mundo real. Uma fotografia é um exemplo
de mídia capturada. Uma mídia sintetizada é aquela produzida em computador.
Um texto é um exemplo de mídia sintetizada.

FIGURA 82 – EXEMPLO DE FOTOGRAFIA

FONTE: O autor

123
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO

Uma mídia discreta também é caracterizada como mídia estática, pois possui
apenas dimensões espaciais, ou seja, são independentes da passagem do tempo,
representando apenas um único instante de tempo. Um gráfico é um exemplo de
mídia discreta. Já uma mídia contínua, que também pode ser caracterizada como
uma mídia dinâmica, possui dimensões temporais, ou seja, são dependentes da
passagem do tempo. Um vídeo é um exemplo de mídia contínua.

FIGURA 83 – EXEMPLO DE QUADROS DE UM VÍDEO

FONTE: O autor

UNI

As mídias capturadas são resultantes de elementos obtidos do mundo real e as


sintetizadas são as puramente produzidas em computador.

124
TÓPICO 4 | INTELIGÊNCIA COMPUTACIONAL

É importante observar que a principal característica das mídias discretas é a de


não haver dependência da passagem do tempo para que o conteúdo tenha significado.
Já as mídias contínuas dependem da passagem do tempo para que se obtenha o
significado do conteúdo da mesma.

Este conceito é simples de entender se utilizarmos uma foto e um vídeo


como exemplos. Numa foto, não há necessidade de passagem de tempo para que
seu conteúdo e/ou significado possa ser entendido pelo observador; já num vídeo
há necessidade da passagem do tempo para que os quadros sejam apresentados
dando o significado do conteúdo do mesmo. Para que haja a reprodução adequada
de informações multimídia, tipicamente, os fluxos de dados são volumosos. Isso
implica na necessidade de melhor desempenho de processamento e maior largura
de banda para a transmissão.

O aumento da utilização de multimídia tem ocorrido de forma praticamente


natural, pelo fato de tais conteúdos estimularem um ou mais sensos de quem os
utiliza. Os sentidos são estimulados de diferentes formas quando diferentes mídias
são utilizadas. A utilização de mídias puramente sintetizadas e discretas pode
ser pouco interessante em alguns casos, mas a utilização de mídias capturadas e
contínuas, mesmo que em conjunto com as sintetizadas e discretas, melhora muito
a atratividade, tornando mais prazerosa a experiência das pessoas.

4 SISTEMAS MULTIMÍDIA
Os sistemas computacionais convencionais foram desenvolvidos com o
objetivo de realizar processamento sobre um conjunto de dados tipicamente de
tipo alfanumérico. Isto implica no fato de não atenderem de forma eficiente os
sistemas multimídia, os quais necessitam de novas tecnologias que atendam às
características e requisitos de tais aplicações. As aplicações multimídia utilizam, de
forma simultânea, múltiplos tipos de mídia, e estes requerem que sejam mantidas
as relações temporais e espaciais existentes entre as mesmas. A necessidade de
sincronização entre imagem e som num vídeo é um bom exemplo para entender a
importância da relação temporal e espacial. Um vídeo em que a voz dos personagens
esteja atrasada em relação ao movimento da boca faz com que o sentido possa ser
perdido.

Os dados multimídia se caracterizam pela intensidade, o que pode requerer


a utilização de esquemas de compressão, utilização de redes de alta velocidade
e sistemas computacionais (hardware e software) que atendam aos requisitos de
processamento. Os dados multimídia têm a característica da dimensão temporal,
exigindo transmissão, processamento e apresentação em taxas que atendam aos
requisitos de tempo real. O armazenamento de dados multimídia ainda pode não
se enquadrar nos esquemas convencionais de armazenamento, exigindo outras
formas de reconhecimento, indexação e recuperação (WILLRICH, 2002).

125
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO

O conhecimento dos tipos de mídia facilita o entendimento da definição


de sistemas multimídia, o qual é um sistema com a capacidade de manipular
digitalmente pelo menos um tipo de mídia discreta e um tipo de mídia contínua.

UNI

Os sistemas multimídia são divididos nas categorias standalone e distribuídos.

Os sistemas multimídia standalone são aqueles que fazem uso apenas dos
recursos presentes no sistema computacional local, sem o uso de quaisquer recursos
que não estejam presentes no mesmo (WILLRICH, 2002). Desta forma, todos os
recursos de processamento dependem exclusivamente do equipamento local. Este
equipamento deve conter os recursos necessários para permitir que o processamento
multimídia seja realizado. Entre os dispositivos pode-se citar os de captura e
apresentação multimídia, como câmeras, microfones, alto-falantes, entre outros.

Os sistemas multimídia standalone devem armazenar localmente todos os


dados multimídia necessários, pois os mesmos não têm capacidade para utilização
de recuros de armazenamento realizado de forma remota. Exemplos de sistemas
multimídia standalone são as ferramentas de composição de músicas, tutoriais
multimídia, treinamentos baseados em computador, entre outros.

Já os sistemas multimídia distribuídos são aqueles que fazem uso de


recursos de outros dispositivos através de uma rede de comunicação de dados
(WILLRICH, 2002). Pelo fato de utilizarem de recursos de rede de comunicação
de dados, eles podem suportar a utilização de aplicações em rede, fornecendo
serviços de comunicação à distância, como distribuição de pacotes de vídeo e
áudio, videoconferências, entre outros.

Segundo a classificação da ITU (International Telecommunications Union),


as aplicações e serviços multimídia podem ser classificados como serviços de
conversação, serviços de mensagens, serviços de recuperação e serviços de
distribuição. Os serviços de conversação são aqueles que proveem a interação entre
seres humanos ou de humanos com um sistema computacional. Exemplos destes
serviços são sistemas de telessegurança, videofonia, videoconferência, entre outros.

UNI

Os sistemas multimídia distribuídos fazem uso intensivo de recursos das redes de


comunicação de dados para transferência e sincronização de informações.

126
TÓPICO 4 | INTELIGÊNCIA COMPUTACIONAL

Os serviços de mensagem proveem a troca de mensagens multimídia


assíncronas, também classificadas como não tempo real. Os serviços de recuperação
proveem um grande conjunto de tipos de acessos aos servidores de conteúdo
multimídia de tempo real. Os dados multimídia são distribuídos sob a coordenação
de um servidor.

Com o aumento da capacidade de processamento dos computadores de


uso geral e a largura de banda das redes, a utilização de sistemas multimídia
distribuídos foi viabilizada para tal infraestrutura. Muitos sistemas multimídia,
embora de tempo real, geralmente não são de missão crítica, como na aviação,
aplicações de videoconferência comercial, medicina à distância e controle de
processos de fabricação. Grande parte das aplicações multimídia comporta certa
tolerância a pequenas falhas ou perdas na reprodução de conteúdos envolvendo
imagens, áudio e vídeo (COULOURIS, 2007).

5 REPRESENTAÇÃO DE MÍDIAS
Uma vez entendidos alguns conceitos importantes da tecnologia multimídia,
vamos explanar o processo de conversão de sinais de mídias contínuas em sinais
discretos. É importante observar que, para a transmissão, manipulação e utilização
adequada dos dados multimídia, é importante que estejam em formato digital.

O formato dos dados utilizado em aplicações multimídia leva em


consideração uma série de fatores, que requereram, inclusive, estudos das
percepções humanas para o desenvolvimento de muitas das tecnologias atuais.
As principais características estudadas foram relacionadas à visão e audição, para
permitir o desenvolvimento de formatos de dados mais compactos e facilmente
distribuíveis através de redes de computadores de uso geral e a internet.

Nesta unidade estudaremos apenas algumas características da visão e


formas encontradas para representar imagens.

6 DADOS MULTIMÍDIA
Para melhorar o entendimento das reais diferenças entre os dados
convencionais e os dados multimídia, é necessário conhecermos algumas questões
que tiveram que ser estudadas pelos responsáveis pela criação das principais
tecnologias multimídia e que permitem seu uso da forma como conhecemos
atualmente.

127
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO

FIGURA 84 – REFLEXO DA LUZ NUMA IMAGEM

FONTE: O autor

Uma imagem vista por um observador é produto da reflexão de radiações


eletromagnéticas, ou seja, luz, a qual estimula os olhos permitindo a percepção da
imagem. Diferentemente do que possamos imaginar, a captura de uma imagem
pela visão não é uma atividade realizada de forma discreta e sim através de
elementos contínuos, ou seja, através de ondas (WILLRICH, 2002).

UNI

A observação de uma imagem é obtida pela reflexão da luz que estimula a


percepção dos olhos.

O formato destas ondas muda conforme a intensidade de luz que é refletida


a partir da imagem que está sendo observada, pois em determinadas partes de
uma imagem monocromática, por exemplo, existem diferentes tons de cinza, e a
luz refletida nestes diversos pontos forma diversas ondas, levando nossa visão a
perceber as tonalidades através de tais ondas.

Numa imagem colorida são refletidos variados comprimentos de onda


que são percebidos pela visão como diversas cores. Isto implica em um sistema
complexo, utilizando a conjunção de várias funções bidimencionais para descrever
as imagens. Estudos realizados sobre a visão humana mostraram que a mesma
resposta visual pode ser obtida através de distribuições espectrais diferentes. Isto

128
TÓPICO 4 | INTELIGÊNCIA COMPUTACIONAL

significa que algumas combinações de cores podem criar a mesma sensação visual,
ou seja, a sensação de que as cores são idênticas (WILLRICH, 2002).

No início de 1802, Thomas Young desenvolveu a teoria das cores, a qual


define que quaisquer sensações de cores podem ser reproduzidas pela combinação
apropriada de três luzes primárias coloridas. Uma cor é dita primária pelo fato da
combinação de duas outras cores primárias não poder produzir a mesma. Com
base na teoria de Young, a CIE (Commission Internationale de l’Eclairage) definiu a
utilização de três fontes de luz através do seu comprimento de onda. Isto permite
que qualquer imagem colorida plana possa ser representada por um conjunto de
três funções bidirecionais.

UNI

As três cores definidas pelo CIE foram o Vermelho, o Verde e o Azul. Estas cores
formam o sistema RGB (Red, Green, Blue – vermelho, verde, azul). O sistema de cores RGB é de
uso comum em sistemas computacionais. A utilização se dá pela combinação de intensidade
de cada uma das cores. Através das combinações de cores do sistema RBG é possível reproduzir
quaisquer tipos de cores.

A utilização das três cores primárias em valores iguais permite gerar as


cores do preto ao branco. Estes valores formam uma escala de cinza dentro do
conjuto das demais cores. As pesquisas realizadas sobre a percepção humana da
variação de cores apontam que 256 diferentes variações de cada uma das cores
primárias do RGB são suficientes para a maioria das aplicações, pois permitem
gerar um número de cores superior à capacidade da visão de distinguir a variação
de duas cores próximas na escala.

Diferentemente do que se possa imaginar, no sistema RGB a escala (0,


0, 0), ou seja, intensidade zero de vermelho, verde e azul, forma a cor preta.
Já a intensidade máxima de cada uma das cores, ou seja (255, 255, 255), forma
a cor branca. As imagens podem ser classificadas em imagem binária, imagem
monocromática, imagem policromática e imagem policromática multiespectral.

UNI

A imagem binária é aquela caracterizada apenas pela existência da cor branca


ou preta, ou seja, ligado ou desligado. Na imagem monocromática cada ponto possui uma
intensidade de luminosidade associada, caracterizando tonalidades entre o branco e o preto.

129
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO

A imagem policromática é um tipo de imagem colorida que faz uso de uma


tabela que referencia de forma direta cada uma das cores. A imagem policromática
multiespectral também é conhecida como True Color, pois é formada pela
combinação das cores básicas do sistema RGB. Existem diferentes quantidades
de tonalidades associados ao formato True Color, existindo formatos com menos
tonalidades ou mais tonalidades, dependendo da quantidade de cores resultantes
necessárias.

7 CARACTERÍSTICAS DA VISÃO
O entendimento da sensação de que uma sequência de quadros
apresentados numa determinada sequência e velocidade seja um vídeo contínuo
se dá pelo entendimento de um fenômeno da visão humana. Este fenômeno é
denominado de persistência da visão. A persistência da visão é o tempo que uma
imagem capturada pela retina permanece no cérebro (GROB, 1979).

UNI

A sensação de continuidade de uma imagem é dada pela velocidade em que um


conjunto de quadros sucessivos é apresentado ao observador.

Este tempo é de 50 milissegundos. Além disso, existe o tempo de


sensibilização, que consome outros 50 milissegundos para que a imagem capturada
pela retina chegue ao cérebro (GROB, 1979). De outra forma, poderíamos dizer que
uma imagem capturada pelos olhos demora 50 milissegundos para ser transmitida
até o cérebro.

FIGURA 85 – SEQUÊNCIA DE QUADROS DE UM VÍDEO

130
TÓPICO 4 | INTELIGÊNCIA COMPUTACIONAL

FONTE: O autor

Uma vez entendido o fenômeno da persistência da visão, pode-se concluir


que um vídeo pode ser simulado através da sucessão finita de imagens estáticas,
desde que as imagens sejam trocadas num espaço de tempo menor que o tempo
de persistência da visão, dando a sensação de continuidade dos movimentos. A
velocidade de troca de imagens é denominada de frequência de amostragem.

8 CAPTURA E REPRODUÇÃO DE IMAGEM


A captura de imagens do mundo real para utilização em sistemas multimídia
tipicamente é realizada através da utilização de câmeras. As câmeras realizam
a captura de uma imagem que atravessa sua lente e atinge os fotossensores,
denominados CCD (Charge-Coupled Device). A intensidade de iluminação de
cada parte é convertida em uma carga elétrica pela camada fotossensível, a qual
é varrida por um feixe de elétrons que captura as cargas elétricas convertendo a
imagem em um sinal elétrico contínuo.

FIGURA 86 – REPRESENTAÇÃO DE UM CCD

FONTE: UFRGS (2011)

131
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO

A captura de imagens em preto e branco ou em cores é realizada de forma


bastante similar, mudando apenas a capacidade do dispositivo de captura, o qual
pode simplesmente capturar as diferentes intensidades de iluminação utilizando
um fotossensor monocromático, ou um sensor colorido que realiza a captura de
três cores primárias que permitem a sua posterior reprodução. Na captura de
uma imagem colorida a luz é dividida em seus componentes de cores vermelho,
verde e azul, focalizados em sensores específicos para cada cor, convertendo-as em
sinais elétricos separados. Além desta forma, existem outros métodos de captura e
padrões de vídeo analógico (WILLRICH, 2002).

UNI

A captura de imagens do mundo real é realizada através de dispositivos


fotossensíveis que convertem a imagem em sinais elétricos.

Para utilização em sistemas multimídia, o sinal analógico de vídeo é


convertido para o formato digital. O formato digital facilita o processamento,
armazenamento e transmissão do vídeo. No momento em que o mesmo deve ser
apresentado é necessário que seja novamente convertido para o formato analógico.

Num sistema de vídeo analógico a imagem precisa ser capturada na


quantidade de tempo em que se deseja apresentá-la; além disso, há a necessidade
de todos os componentes (câmera, transmissor, receptor e monitor) operarem
de forma sincronizada. Num sistema digital a imagem é armazenada, podendo
ser apresentada de forma independente do tempo de captura. Além disso, os
componentes são independentes, podendo operar em diferentes velocidades,
dependendo da capacidade de processamento, largura de banda para transmissão,
quantidade de quadros eventualmente perdidos etc.

FIGURA 87 – EPRESENTAÇÃO DE Tristimulus

FONTE: SC (2011)

132
TÓPICO 4 | INTELIGÊNCIA COMPUTACIONAL

É certo que a capacidade do canal de comunicação (quantidade de dados


que pode ser transmitida por segundo) representa uma das principais restrições do
sistema digital, principalmente em se tratando de vídeo, cuja quantidade de dados
é relativamente maior pelo fato dos requisitos temporais associados à reprodução
de movimentos e sons. Isso implica no fato da necessidade de disponibilidade
de uma largura de banda bastante grande para a transmissão de tais dados. Para
resolver esta situação e permitir que vídeos sejam transmitidos e apresentados
em sistemas com largura de banda bastante restrita é necessário utilizar recursos
tecnológicos que permitam tal execução. O recurso viável do ponto de vista
tecnológico e econômico é a compressão de vídeo.

UNI

O conceito Tristimulus define que qualquer cor, utilizando luz, pode ser reproduzida
pela combinação de vermelho, verde e azul.

Boa parte dos dispositivos de reprodução de imagens utilizados na


atualidade é composta por monitores CRT (Cathode Ray Tube). Estes monitores
podem reproduzir as imagens de forma monocromática ou em cores. Na forma
monocromática eles possuem uma camada de fósforo fluorescente a qual é varrida
por um feixe de elétrons. No momento em que este feixe de elétrons atinge o
fósforo, ele emite luz momentaneamente e a intensidade da luz emitida depende
da força do feixe. Na forma em cores, são baseados na teoria Tristimulus. Nestes
monitores há três tipos de fósforos fluorescentes que emitem luzes nas respectivas
cores quando atingidos pelos feixes de elétrons, produzindo um ponto de cor
(WILLRICH, 2002).

9 MÍDIAS COM BASE EM IMAGEM


As mídias com base em imagem são largamente utilizadas atualmente. A
utilização de elementos visuais em substituição a um grande volume de textos
torna a comunicação mais rápida e atrativa. Na internet e em outras aplicações
a utilização de imagens é cada vez mais explorada, como forma de facilitar a
atividade dos usuários.

9.1 IMAGENS ESTÁTICAS


Tipicamente, uma imagem estática pode ser representada através de uma
estrutura denominada mapa de bits. Um mapa de bits é uma matriz de pontos
que representam o menor elemento de resolução de uma imagem. A denominação
utilizada para estes pontos de cores é pixel.
133
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO

Numa imagem, a resolução horizontal é dada pela quantidade de linhas de


pixels e a resolução vertical é dada pela quantidade de colunas de pixels. A resolução
espacial é dada pelo produto das resoluções horizontal e vertical. A resolução
espacial permite estabelecer a frequência de amostragem final da imagem. Esta
resolução, porém, não é suficiente para a obtenção da resolução real da imagem,
pois esta é dependente do tamanho do dispositivo físico de apresentação.

UNI

A resolução espacial de uma imagem é dada pelo produto das resoluções


horizontal e vertical.

Uma forma melhor de medir a resolução de uma imagem é através da


utilização da densidade de resolução da imagem. Esta densidade se refere à
quantidade de pixels concentrados em uma polegada. Esta medida é denominada
dpi (dot per inch - pontos por polegada). Neste contexto, o formato bitmap (mapa de
bits) é um formato que ocupa bastante espaço de armazenamento, pois cada ponto
utiliza a mesma quantidade de dados para representação de cores, independente
do que está sendo representado. A figura a seguir representa a configuração de
uma imagem bitmap.

FIGURA 88 – CONFIGURAÇÃO DE IMAGEM bitmap

FONTE: CASACURTA (1998)

134
TÓPICO 4 | INTELIGÊNCIA COMPUTACIONAL

Esse tipo de formato não considera a semântica do conteúdo armazenado,


ou seja, se o ponto de imagem que está sendo representado é uma parte de uma
imagem do mar, da praia ou de uma árvore, o espaço ocupado será sempre o
mesmo, independente de conteúdo e cor. Isso significa que duas imagens diferentes
com a mesma dimensão ocuparão exatamente o mesmo espaço de armazenamento,
independente do conteúdo representado. Formatos que consideram a semântica
do conteúdo, como é o caso de gráficos, ocupam diferentes quantidades de espaço
de armazenamento, dependendo do conteúdo representado.

9.2 IMAGENS DINÂMICAS


Um dos tipos de imagem dinâmica mais conhecida é o vídeo. Dentre
os formatos de vídeo analógicos estão o padrão americano denominado NTSC
(National Television System Committee), que utiliza as iniciais do nome do instituto
que o padronizou. Na Franca e Europa Ocidental foi criado o SECAM (Sequentiel
Couleur Avec Memoire) e o padrão PAL (Phase Alternating Line), utilizado no restante
da Europa. Pode-se citar ainda o padrão HDTV (High Definition TeleVision), o qual
permite a produção de imagens mais nítidas por aumentar consideravelmente o
número de linhas de varredura (TANENBAUM, 1997).

UNI

A palavra vídeo é originária do latim, cujo significado é “eu vejo”. Um vídeo é


definido pela representação de imagens em movimento. A representação de imagens em
movimento pode ter a origem a partir da captura do mundo real ou produzida através de
uma animação composta por uma sucessão de imagens, que combinadas em sequência e
velocidade, representem movimento.

Outro tipo de imagem dinâmica é a animação. Numa animação, cada


imagem ou gráfico é denominado quadro (frame). O conjunto de quadros que
formam uma animação deve ser apresentado na sequência adequada e a uma
taxa relativamente fixa para que a animação seja compreensível pela pessoa que
o esteja assistindo. No caso de animações e vídeos, a frequência de quadros se
refere à quantidade de quadros apresentados por segundo ou fps (frames per
second). Existem três fatores a serem considerados na determinação da taxa de
quadros de uma animação: reproduzir a sensação de movimento, capacidade do
canal de comunicação necessária para transmissão e frequência de atualização na
apresentação (WILLRICH, 2002).

135
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO

UNI

Na determinação da taxa de quadros de uma animação deve-se considerar a


necessidade de reproduzir a sensação de movimento, a capacidade do canal de comunicação
necessária para transmissão e frequência de atualização necessária na apresentação.

Para reproduzir a sensação de movimento é necessário que a taxa de quadros


seja alta o suficiente para que não sejam percebidas as trocas de quadros. Se a taxa
de quadros for inferior a 10 quadros por segundo ou 10 fps, será percebida uma
apresentação de imagens sucessivas. Uma taxa de quadros entre 10 e 16 fps causa
a impressão de existência de movimentos, embora com a sensação de arrancos.
Apenas acima de 16 fps é que o efeito de movimento passa a ser percebido de
forma mais natural. As imagens de cinema, por exemplo, têm uma taxa de quadros
de 24 fps (WILLRICH, 2002).

Uma particularidade que também deve ser considerada nas imagens de


cinema é que a taxa de quadros de 24 fps é suficiente para proporcionar o efeito de
continuidade das imagens, mas insuficiente para resolver o problema da variação
da intensidade de luminosidade, percebida pelo olho humano como a cintilação da
iluminação. A cintilação da iluminação deixa de ser percebida pelo olho humano a
partir de uma taxa de 48 fps. A solução dada é reproduzir cada quadro duas vezes,
obtendo uma frequência de cintilação de 48 fps com uma frequência de amostragem
de 24 fps. O quadro a seguir apresenta algumas das frequências de quadros utilizadas.

QUADRO 4 – FREQUÊNCIAS DE QUADROS


Quadros por segundo Descrição
< 10 Apresentação sucessiva de imagens
10 à 16 Impressão de movimentos, mas com sensação de arrancos
> 16 Início do efeito de movimento
24 Cinema
25 Padrão de TV europeia
30 Padrão de TV americana
60 Padrão HDTV
FONTE: Willrich (2002)

A capacidade do canal de comunicação necessária para a transmissão de


animações e vídeos é proporcional à taxa de quadros que se deseja ou que sejam
necessários apresentar. Quanto maior a taxa de quadros, mais alta deverá ser a
capacidade do canal de comunicação necessária para a transmissão do conteúdo.
Isso implica no fato da capacidade do canal de comunicação disponível limitar a
taxa de frequência de quadros que podem ser apresentados.
136
TÓPICO 4 | INTELIGÊNCIA COMPUTACIONAL

Uma técnica utilizada para minimizar a necessidade de capacidade do canal


de comunicação para a transmissão de quadros de vídeos é a de vídeos entrelaçados,
permitindo reduzir pela metade a quantidade de quadros a serem transmitidos. Na
técnica de vídeo entrelaçado as linhas pares e ímpares são transmitidas de forma
intercalada e separadamente (TANENBAUM, 1997).

Quando um quadro é apresentado usando a técnica de vídeo entrelaçado,


primeiro são apresentadas todas as linhas ímpares e depois todas as linhas pares.
Cada conjunto de linhas pares e ímpares é denominado campo. A técnica de vídeo
entrelaçado permite reduzir a percepção de tremulação da imagem, utilizando
taxas de quadro menores que os necessários em vídeos progressivos, ou não-
entrelaçados (TANENBAUM, 1997).

Uma animação de imagem, geralmente, é originada a partir da captura


de imagens do mundo real por algum dispositivo que armazena as cenas em
um conjunto de quadros sucessivos que podem estar comprimidos ou não.
As características de uma animação de imagem são bastante similares às
características das imagens estáticas, pois não possuem uma descrição semântica
e, em consequência disso, requerem um grande espaço de armazenamento.

UNI

Para que o efeito de tremor do conteúdo apresentado seja evitado é necessária


uma frequência de atualização de 50 Hz.

Outra categoria de imagem dinâmica são os gráficos animados, os quais são


obtidos a partir da apresentação sucessiva de objetos a uma frequência que permita
ao usuário ter a sensação de movimento. Os gráficos animados requerem uma
capacidade do canal de comunicação relativamente menor que uma animação de
imagem, pois são compostas por um conjunto de objetos com atributos temporais.
Neste caso, reduz-se a necessidade de capacidade do canal de comunicação e
aumenta-se a necessidade de poder de processamento no equipamento no qual os
gráficos animados estão sendo apresentados.

FIGURA 89 – IMAGEM DE GRÁFICO ANIMADO

FONTE: O autor

137
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO

A grande característica de um gráfico animado é o fato de grande parte da


imagem permanecer estática e apenas algumas partes dela sofrerem mudanças
temporais, sugerindo movimento desses elementos.

Existem também os vídeos híbridos, que fazem uso de técnicas avançadas


de tratamento que incluem, inclusive, a técnica de reconhecimento de padrões. Os
vídeos híbridos são assim denominados pelo fato de combinarem formas híbridas
como animações gráficas e vídeos capturados. Tal combinação de animações
gráficas com vídeos capturados é realizada através de softwares, os quais requerem
equipamentos com grande capacidade de processamento.

9.3 COMPRESSÃO DE DADOS


Levando em consideração uma série de fatores relacionados ao volume de
dados envolvidos em sistemas multimídia, a questão da capacidade de transmissão
se torna importante. Utilizando meios de transmissão com capacidade do canal de
comunicação limitada e, mesmo assim, querendo ou precisando trafegar dados
multimídia, há necessidade de fazer uso de recursos que permitam a transmissão
de tais dados.

É notório que a transmissão de dados multimídia no formato original


através de redes com baixa velocidade seria impraticável ou inaceitável pelos
usuários. Imagine acessar um vídeo na internet e ter que esperar um tempão pela
transmissão para poder assisti-lo. Da mesma forma, imagine querer comprar um
CD de músicas pela internet e levar horas para poder ouvir uma pequena parte de
cada música para poder decidir pela compra, ou não.

A solução encontrada para viabilizar a transmissão de dados multimídia


através de redes de computadores foi a compressão de dados. Os sistemas de
compressão de dados utilizam um algoritmo para compressão dos dados e outro
algoritmo para a descompressão. O algoritmo de compressão é tecnicamente
conhecido como algoritmo de codificação e o algoritmo de descompressão como
algoritmo de decodificação (TANENBAUM, 1997).

UNI

A principal solução utilizada para viabilizar a transmissão de dados multimídia


através de redes de uso geral é a compressão de dados.

Com relação aos algoritmos de codificação e decodificação é importante


observarmos que, na maioria das aplicações, um documento multimídia é codificado
apenas uma vez e decodificado inúmeras vezes. Isso significa que um conjunto de

138
TÓPICO 4 | INTELIGÊNCIA COMPUTACIONAL

dados multimídia pode ser codificado apenas uma vez e disponibilizado para ser
reproduzido, e consequentemente decodificado, diversas vezes. Levando este fator
em consideração, é aceitável a utilização de mais recursos e tempo para realizar a
codificação, desde que a decodificação se torne mais rápida e não requeira muitos
recursos (TANENBAUM, 1997).

Quando consideramos a multimídia em tempo real, tanto a codificação quanto


a decodificação deverão ser rápidas. É importante que se esclareça que o termo tempo
real se refere ao limite de tempo de resposta da aplicação que está sendo executada.
Utilizando um vídeo como exemplo, pode-se dizer que o limite é o tempo máximo
entre a troca de quadros que não cause a perda da sensação de continuidade das
cenas. Neste processo podem ser considerados os sistemas de codificação com perda
e sem perda. Os sistemas com perda são aqueles cujo conteúdo decodificado não é
exatamente igual ao conteúdo originalmente codificado. Já nos sistemas sem perda o
conteúdo decodificado é extamente igual ao conteúdo original antes da codificação.
A aplicação e o ambiente é que serão fatores para a decisão do sistema a ser utilizado.

As estratégias de codificação e decodificação podem ser categorizadas


em codificação por entropia e codificação na origem. A estratégia de codificação
por entropia não leva em conta o significado do conteúdo codificado, mas não
causa perda, sendo o conteúdo totalmente reversível ao estado original, anterior à
codificação. Na estratégia de codificação na origem é considerado o significado dos
dados e utilizadas tais propriedades para obter melhores resultados em termos de
compressão, em geral, sem perda (TANENBAUM, 1997).

Um dos esquemas de codificação por entropia mais simples de entender é


denominado de run-length. Este tipo de estratégia leva em consideração a existência
de sequências de bytes repetidos, substituindo-os por um marcador seguido de um
valor que representa a quantidade de repetições.

Na estratégia de codificação na origem, vamos exemplificar com o esquema


denominado codificação diferencial, cujo método representa o símbolo seguinte
através de sua diferença em relação ao anterior. Neste tipo de codificação deve ser
levada em consideração a possibilidade de perdas de informações em situações em
que a diferença entre um ponto e outro é superior à capacidade de representação
da cadeia de bits destinada ao armazenamento do valor da diferença.

9.4 IMAGENS NA INTERNET


Para a utilização de multimídia na internet é necessário que os formatos
utilizados levem em consideração que a velocidade de acesso à internet por parte
de uma pessoa para outra pode mudar bastante em função da tecnologia de
acesso utilizada. Este acesso pode ser por 3G (celular), conexão discada, ADSL,
entre outras. Para tanto, vamos conhecer um pouco sobre os principais formatos
utilizados na internet, o JPEG e o MPEG.

139
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO

O JPEG (Joint Photographic Experts Group) é um formato de compressão de


imagens estáticas e de tom contínuo. Este formato foi desenvolvido principalmente
por especialistas em fotografia. O esquema de compressão utilizado pelo formato
JPEG leva em consideração a luminância e a cromância da imagem. No processo de
compressão ocorrem perdas, mas estas são pouco perceptíveis pelo olho humano,
pelo fato deste perceber mais as variações de luminância do que de cromância
(TANENBAUM, 1997).

UNI

O formatro JPEG é largamente utilizado para apresentação de imagens na internet.

O formato JPEG permite obter uma taxa média de compressão de 20:1. Por
este fato, é um formato largamente utilizado, principalmente em aplicações onde
a limitação do volume de armazenamento ou transmissão é um fator importante.
No formato JPEG, o tempo de codificação e de decodificação é praticamente o
mesmo (TANENBAUM, 1997).

O MPEG (Motion Picture Experts Group) é um formato de compressão de


vídeos. Isso significa que o formato MPEG não comprime apenas as imagens, mas
também os sons existentes em um vídeo. A codificação de áudio e vídeo é realizada
de maneira independente, sendo sincronizados no momento da decodificação
(TANENBAUM, 1997).

Na compressão de vídeo do formato MPEG são consideradas a redundância


espacial e temporal. A redundância espacial se refere à questão de que cada quadro
pode ser codificado utilizando as estratégias do JPEG. Já a redundância temporal
se refere à questão da quantidade de tempo em que determinado conteúdo é
apresentado. Além do MPEG se valer das técnicas do JPEG para a compressão das
imagens, também é explorada a sobreposição de sons para a compressão de áudio
(TANENBAUM, 1997).

10 MÍDIAS COM BASE EM ÁUDIO


As mídias com base em áudio, da mesma forma como as baseadas em
imagem, estão sendo cada vez mais utilizadas. A utilização de aplicações multimídia
que tenham puramente áudio ou áudio combinado com outras mídias é cada vez
maior. Na internet é possível baixar músicas para reproduzir em computador ou
em pequenos dispositivos portáteis com capacidade limitada de armazenamento.

140
TÓPICO 4 | INTELIGÊNCIA COMPUTACIONAL

10.1 ÁUDIO
Da mesma forma como as imagens, o som é um elemento percebido pelos
sentidos humanos de forma contínua, ou seja, através de ondas. Estas ondas são
formadas por um período, uma amplitude e uma frequência. O período é o tempo
transcorrido para a realização de um ciclo da onda. A frequência é a medida da
quantidade de períodos ocorridos em uma unidade de tempo, tipicamente medida
em Hertz (Hz) ou ciclos por segundo (cps).

O áudio é percebido pelo ouvido humano através da pressão de ar exercida


no aparelho auditivo. O aparelho auditivo percebe a pressão de ar exercida na
faixa de frequência de 20 Hz a 20 KHz como elementos audíveis. Além da
frequência, o som pode ser medido através da amplitude, cuja unidade de medida
utilizada é decibéis (dB). O som é uma onda contínua em frequência e amplitude
(TANENBAUM, 1997).

A fala é uma das principais formas de comunicação utilizadas pelas pessoas.


Para que haja comunicação é necessário que haja um emissor, uma mensagem e
um receptor. Emissor e receptor, neste caso, tipicamente, são seres humanos, e para
que a mensagem possa ser compreendida pelo receptor é necessário que ela tenha
semântica, ou seja, significado. O significado não está simplesmente relacionado
ao conteúdo falado, mas também ao tom de voz utilizado, na velocidade em que
as palavras são ditas e até mesmo no tempo de pausa entre uma palavra e outra.

Todos estes elementos estão relacionados com a semântica da comunicação.


É importante a preocupação com a questão da semântica, pois na transmissão da
voz estes elementos devem ser considerados para permitir uma comunicação
adequada. Para tanto é importante saber que a faixa de frequência da voz está
entre 50 Hz e 10 KHz, com isso pode-se calcular a capacidade do canal necessária
para a transmissão da mesma (WILLRICH, 2002).

A sensibilidade do ouvido humano permite perceber variações de sons com


tempo de duração de apenas alguns milésimos de segundo. Já a visão não percebe a
variação de luminosidade, que leva apenas alguns milissegundos. Esta observação
do funcionamento dos sentidos humanos é importante para o entendimento de
que um ruído numa transmissão de dados multimídia envolvendo som e imagem
será melhor percebido pela audição do que pela visão (TANENBAUM, 1997).

10.2 ÁUDIO NA MULTIMÍDIA


Para que o áudio seja utilizado por um sistema multimídia é necessário que
o mesmo seja convertido de analógico para digital. Uma das formas de captura de
áudio do mundo real é através de microfones. Um microfone captura a onda de
áudio e a converte em um sinal elétrico contínuo, que geralmente é medido em
Volts. Este sinal elétrico é então convertido para o formato digital através de um
dispositivo denominado de conversor analógico-digital (WILLRICH, 2002).
141
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO

UNI

Os dados de áudio são capturados em formato analógico, convertidos para o


formato digital e novamente reconvertidos no momento da apresentação.

Os dados do áudio convertidos para o formato digital devem ser amostrados


de forma contínua e em uma taxa fixa para que possam ser futuramente reconvertidos
para o formato analógico e compreendidos conforme os dados originais. Para que
o áudio possa ser novamente apresentado de forma compreensível, é necessário
que o mesmo seja novamente convertido para o formato analógico. O quadro a
seguir apresenta as taxas de amostragem de algumas aplicações de áudio.

QUADRO 5 – TAXAS DE AMOSTRAGEM DE ÁUDIO

Aplicação Número Taxa de Bits por Taxa de bits


de canais amostragem amostragem
CD-Áudio 2 44.1 KHz 16 1,41 Mbps
DAT 2 48 KHz 16 1,53 Mbps
Telefone digital 1 8 KHz 8 64 Kbps
Rádio digital, long play DAT 2 32 KHz 16 1,02 Mbps

FONTE: Willrich (2002)

Esta transformação requer que os dados sejam transformados em uma


forma de onda que seja percebida pelo aparelho auditivo. A conversão de tais
dados é feita por um dispositivo denominado conversor digital-analógico, os
quais transformam os dados digitais em uma onda física reproduzida tipicamente
por alto-falantes.

O áudio é uma mídia contínua e geralmente caracterizado por uma


determinada taxa mínima de dados que deve ser transmitida numa unidade de
tempo para que não haja perda na semântica da informação. A taxa de transmissão
de áudio é calculada com base na taxa de amostragem e no volume de dados
utilizados por amostragem. O resultado deste cálculo da taxa de amostragem e do
volume de dados utilizados por amostragem determina a taxa de dados que deve
ser suportada pelo canal de comunicação.

142
TÓPICO 4 | INTELIGÊNCIA COMPUTACIONAL

10.3 ÁUDIO NA INTERNET


Da mesma forma como a utilização de imagens na internet requer formatos
que levem em consideração as diferentes velocidades de acesso que podem estar
sendo utilizadas, também a utilização de áudio deve considerar estas restrições.
Neste caso o formato mais utilizado é o MP3.

O MP3 é um formato de compressão de áudio para ser utilizado em


computadores pessoais. O objetivo do MP3 é permitir a codificação de áudio com
qualidade, utilizando o mínimo possível de espaço para armazenamento, ou seja,
com uma taxa de compressão considerável. O objetivo é realizar a compressão de
sons que estejam dentro da faixa audível até 20 KHz.

O MP3 ou MPEG-1 Áudio pode suportar um ou dois canais de áudio,


podendo ser um único, dois independentes ou um sinal estéreo. O processamento do
sinal estéreo pode ser realizado de forma independente ou em conjunto, explorando a
redundância estéreo. O formato MP3 é resultante do esforço conjunto do IIS (Institut
Integrierte Schaltungen) da Alemanha e da Universidade de Erlangen em um projeto
de codificação perceptual de áudio para transmissão digital.

O padrão MPEG-2 Áudio pode realizar a codificação multicanal com cinco


canais. Os canais utilizados pelo padrão MPEG-2 Áudio são dois canais surround, o
canal esquerdo, direito e central. O MPEG-2 Áudio também estende a estratégia de
codificação mono e estéreo do MPEG-1 Áudio com taxas de amostragem adicionais.

O padrão MPEG Áudio possui três estratégias de codificação de áudio


denominadas de Layer-1, Layer-2 e Layer-3. Destas estratégias de codificação
a mais popular é o MPEG 1 Layer-3, que é conhecido como MP3. A principal
característica e vantagem do MP3 e que fez com que o formato se tornasse tão
popular é a capacidade de compressão.

UNI

O formato MP3 permite a codificação de músicas com qualidade, utilizando o


mínimo necessário de espaço para armazenamento.

143
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO

Pelo fato dos arquivos de áudio MP3 necessitarem de menos espaço de


armazenamento, eles também podem ser transmitidos mais facilmente através
de redes de uso comum e, consequentemente, podem ser mais facilmente
compartilhados.

O MP3, na realidade, é um método de compressão de áudio que consiste


em utilizar somente as frequências sonoras que são captadas pelo ouvido humano.
Isso significa que as demais frequências são descartadas e consequentemente não
ocupam espaço para armazenamento (WILLRICH, 2002).

As tecnologias estudadas nesta unidade permitem a você obter uma visão


dos recursos proporcionados em favor das comunicações, independente da mídia.
Estes recursos são ferramentas poderosas na sua prática diária.

A leitura complementar desta unidade do Caderno de Estudos é um texto


do livro de Frederick Phillips Brooks Jr. que trata da questão da quantidade de
pessoas envolvidas em um processo de desenvolvimento de software, ou seja, o
mítico homem-mês. Esta é uma questão que não pode simplemente ser ignorada
no momento do estabelecimento de um cronograma de trabalho e o texto de Brooks
esclarece esta importância de maneira bastante clara. Boa leitura!

LEITURA COMPLEMENTAR

O MÍTICO HOMEM-MÊS

Em sua maioria, projetos de software falharam mais por falta de tempo no


calendário do que em função da combinação de todas as outras causas. Por que
isso é tão comum?

Em primeiro lugar, porque nossas técnicas para estimativa são muito


pouco desenvolvidas. Na verdade, elas refletem uma premissa não verbalizada e
completamente falsa, que é a de que tudo correrá bem.

Em segundo lugar, porque nossas técnicas de estimativa falaciosamente


confundem esforço com progresso, escondendo a premissa de que homens e meses
são intercambiáveis.

Em terceiro lugar, porque não temos certeza das nossas estimativas. Aos
gerentes de software costuma faltar a insistência cordial do chef do restaurante
Antoine.

Em quarto lugar, porque o cronograma de progresso é monitorado de


forma precária. Técnicas comprovadas, que são rotina em outras disciplinas de
engenharia, são consideradas inovações radicais em engenharia de software.

144
TÓPICO 4 | INTELIGÊNCIA COMPUTACIONAL

Em quinto lugar, porque, quando se admite um atraso no cronograma, a


resposta natural (e tradicional) é a edição de mais força de trabalho. Assim como
combater um incêndio com gasolina, essa resposta torna a situação pior, muito
pior. Mais fogo requer mais gasolina e, assim, inicia-se um ciclo degenerativo que
termina em um desastre.

O monitoramento do cronograma será assunto de ensaio à parte. Vamos


considerar outros aspectos do problema, com mais detalhes.

Otimismo

Todos os programadores são otimistas. Talvez essa feitiçaria moderna


atraia, especialmente, aqueles que acreditam em finais felizes e fadas madrinhas.
Talvez as centenas de pequenas frustrações afastem todos, menos aqueles que se
focam, habitualmente, no objetivo final. Talvez otimismo seja meramente porque
os computadores são jovens, os programadores mais jovens ainda e os jovens
sempre são otimistas. Mas, independentemente da forma pela qual funciona o
processo seletivo, o resultado é inegável: “Desta vez, com certeza, vai funcionar”,
ou “Acabo de encontrar o último erro”.

Assim, a primeira falsa premissa inerente à confecção do cronograma de


programação de um sistema é a de que tudo irá bem, isto é, que cada tarefa tomará
apenas o tempo que “deve” tomar.

A disseminação do otimismo entre programadores merece mais do que


uma rápida análise. Dorothy Sayers, em seu excelente livro The Mind of the Maker
(A metade do criador), divide a atividade criativa em três estágios: a ideia, a
implementação e a interação. Assim, um livro, um computador ou um programa
passam a existir primeiro com um construto ideal, feito do tempo e do espaço, mas
completa a mente do autor. Depois tornam-se reais no tempo e no espaço, com
caneta, tinta e papel, ou com fios, silício e ferrite. A criação está concluída quando
alguém lê o livro, usa o computador ou executa o programa, interagindo dessa
forma com a mente do criador.

A descrição que a senhoria Sayers utiliza para esclarecer não apenas a


criatividade humana, mas doutrina cristã da Santíssima Trindade, nos ajudará
em nossa tarefa presente. Como criadores humanos de coisas, a incompletude e
inconsistência de nossas ideias tornam-se claras apenas durante sua implementação.
Assim, a escrita, a experiência e o exercício são disciplinas essenciais ao teórico.

Em muitas atividades criativas, o meio de execução é intratável. A madeira


racha, a tinta corre, e os circuitos elétricos dão choque. Essas limitações físicas do
meio cerceiam ideias que poderiam ser expressas e também criam dificuldades
inesperadas em sua implementação.

A implementação, então, consome tempo e suor, tanto em função do meio


físico como da inadequação das ideias que o utilizam. Temos a tendência de culpar o

145
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO

meio físico pela maioria das dificuldades de implementação, pois o meio não é “nosso”
da mesma maneira que as ideias o são, e nosso orgulho colore nossos julgamentos.

A programação de computadores, ao contrário, dá-se em um meio


excepcionalmente tratável. O programador constrói a partir do pensamento puro,
com conceitos e representações extremamente flexíveis. Como o meio é tratável,
esperamos poucas dificuldades de implementação, daí esse otimismo dominante.

Mas como nossas ideias têm falhas, nós temos problemas. Por isso, tanto
otimismo não se justifica.

Em uma única tarefa, a premissa de que tudo correrá bem tem um


efeito probabilístico com programa. Pode até acontecer que ela dê conforme o
planejado, já que existe a probabilidade de atrasos que serão solucionados, sendo
que ‘nenhum atraso” tem também uma probabilidade finita. Um grande esforço
de programação, porém, consiste em muitas tarefas, algumas encadeadas em
dependências de outras. A probabilidade de que tudo vá bem torna-se mínima.

O Homem-Mês
A segunda falácia se manifesta na própria unidade de esforço usada em
estimativas e cronogramas: o homem-mês. O custo, de fato, varia como o produto
de números de pessoas envolvidas e da qualidade de meses. O processo não. Dessa
forma, o uso do homem-mês como unidade para medir o tamanho de trabalho é
um mito perigoso e enganoso. Ele implica no fato de que homens e meses são
intercambiáveis.

Homens e meses são intercambiáveis apenas quando uma tarefa pode ser
dividida entre muitos trabalhadores que não se comuniquem entre si (figura 2.1).
Isso é verdade quando se debulha trigo ou se colhe algodão, mas não é sequer
aproximadamente real quando se trata de programação de sistemas.

FIGURA 2.1: Tempo versus número de trabalhadores em uma tarefa


perfeitamente divisível

146
TÓPICO 4 | INTELIGÊNCIA COMPUTACIONAL

Quando uma tarefa não pode ser dividida em função de limitações


sequenciais, a aplicação de mais esforço não tem efeito algum no cronograma
(figura 2.2). Ter um filho leva nove meses, independentemente de quantas mulheres
sejam responsáveis pela tarefa. Muitas tarefas de software têm essa característica
em função da natureza sequencial de uma deputação (debugging).

FIGURA 2.2: Tempo versus número de trabalhadores em uma tarefa


indivisível

Em tarefas que podem ser divididas, mas que necessitam de comunicação


entre as subtarefas, o esforço de comunicação deve ser adicionado à qualidade de
trabalho a ser realizado. Assim, o melhor que pode ser feito é algo mais ineficaz do
que a troca parelha entre meses e homens (figura 2.3)

FIGURA 2.3: Tempo versus número de trabalhadores em uma tarefa


divisível que requer comunicação

147
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO

O peso adicional da comunicação é composto de duas partes: treinamento e


intercomunicação. Cada trabalhador deve ser treinado de tecnologia, nos objetivos
do trabalho, na estratégia geral e no planejamento de execução. Esse treinamento
não pode ser dividido, assim, parte do esforço adicional varia linearmente com o
número de trabalhadores.

A intercomunicação é um fator mais grave. Se cada porção da tarefa


deve ser separadamente coordenada com demais, o esforço aumenta em n(n-
1)/2. Três trabalhadores requerem três vezes mais comunicação entre pares do
que dois trabalhadores: quatro requerem seis vezes mais do que dois. Se, além
disso, há necessidade de conferência entre três, quatro ou mais trabalhadores,
para resolver questões em conjunto, a situação fica ainda pior. O esforço adicional
de comunicação pode ir totalmente contra a divisão da tarefa original e levar à
situação da figura 2.4.

Como a construção de software é, por natureza, um trabalho sistemático –


um exercício em inter-relações complexas –, o esforço de comunicação é grande
e rapidamente domina a diminuição do tempo de cada tarefa individual que foi
estabelecido na sua divisão. A adição de mais homens, portanto, aumenta, e não
diminui, o tempo no cronograma.

FIGURA 2.4: Tempo versus número de trabalhadores em uma tarefa com


inter-relações complexas

FONTE: BROOKS, Frederick Phillips. O mítico homem-mês: ensaios sobre engenharia de


software. Rio de Janeiro: Elsevier, 2009, p. 14 – 19.

148
RESUMO DO TÓPICO 4
Caro acadêmico, neste tópico você estudou que:

• As mídias capturadas são aquelas obtidas do mundo real, como uma foto de uma
paisagem. Já uma mídia sintetizada é uma mídia artificial, ou seja, produzida
através de dispositivos eletrônicos. Independente da mídia sintetizada ser
artificial, ela pode reproduzir com grande grau de realismo elementos do mundo
real.

• A resolução de uma imagem é dada pela quantidade de pontos existentes para


formação da mesma. Quanto maior a quantidade de pontos de cores, maior será
a resolução e, consequentemente, a sensação de perfeição da imagem. Caso a
quantidade de pontos de cores for reduzida, a sensação de serrilhamento na
imagem aumenta.

• O meio utilizado para apresentação de elementos multimídia também deve


ter capacidade para apresentação de pontos de cor compatível à necessidade
do usuário. Quem trabalha com tratamento de imagens utilizando software
como Photoshop ou Corel Draw deve ter capacidade de processamento e
resolução de monitor compatível para obter bons resultados. Caso os recursos
de processamento e apresentação sejam limitados, os resultados poderão ser
prejudicados.

• A estratégia de apresentação de imagens denominada mapa de bits não


considera a semântica do conteúdo, ou seja, cada ponto de cor ocupará a mesma
quantidade de dados necessária para a representação. Já estratégias como o
caso de gráficos consideram a semântica da imagem, logo, diferentes gráficos
do mesmo tamanho com conteúdos diferentes ocuparão diferentes espaços de
armazenamento.

• O áudio pode ser uma mídia capturada ou sintetizada, porém é uma mídia
contínua, pois requer a passagem do tempo para que o conteúdo faça sentido. O
formato de áudio mais adequado para uso na internet atualmente é o MP3, pois
utiliza a técnica de sobreposição para tornar pequena a quantidade de dados
necessários na sua representação. O MP3 é um formato de áudio comprimido
que leva em consideração a limitação da audição humana.

149
AUTOATIVIDADE

Caro acadêmico, como forma de fixar o conteúdo estudado, realize a


autoatividade proposta a seguir:

1 Uma mídia capturada pode ser contínua? Explique e exemplifique.

2 Uma mídia sintetizada pode ser discreta? Explique e exemplifique.

3 Quais são as categorias em que são divididos os sistemas multimídia?

4 Qual o nome do fenômeno da sensação de continuidade das imagens em


um vídeo?

5 Qual a principal solução utilizada para viabilizar a transmissão de dados


mutimídia na internet?

150
UNIDADE 3

LÓGICA DE PROGRAMAÇÃO

OBJETIVOS DE APRENDIZAGEM

A partir desta unidade você será capaz de:

• compreender os fundamentos de lógica de programação;

• entender as estruturas de controle;

• compreender subalgoritmos e escopo de identificadores;

• conhecer os tipos estruturados.

PLANO DE ESTUDOS
Esta unidade está dividida em quatro tópicos, sendo que ao final de cada
um deles você encontrará atividades que lhe auxiliarão na apropriação dos
conhecimentos.

TÓPICO 1 – FUNDAMENTOS DE LÓGICA DE PROGRAMAÇÃO

TÓPICO 2 – ESTRUTURAS DE CONTROLE

TÓPICO 3 – SUBALGORITMOS E ESCOPO DE IDENTIFICADORES

TÓPICO 4 – TIPOS ESTRUTURADOS

151
152
UNIDADE 3
TÓPICO 1

FUNDAMENTOS DE LÓGICA DE
PROGRAMAÇÃO

1 INTRODUÇÃO

O dia a dia de pessoas e instituições tem sido largamente facilitado pelo


uso de softwares das mais variadas naturezas. Seu uso crescente requer que mais e
melhores softwares sejam desenvolvidos para atender diversas áreas de aplicação.

O desenvolvimento de software, porém, ainda é uma tarefa árdua e requer


profissionais altamente qualificados para sua execução. A maturidade lógica do
profissional de programação é um elemento essencial para o sucesso do software
que será construído por ele.

Estes profissionais devem ter em mente que grande parte do sucesso


de um software depende de uma definição clara das regras de negócio a serem
implementadas no mesmo. Deve-se desenvolver estas regras de negócio visando
alto desempenho e eficiência nos resultados obtidos.

Embora seja altamente sistemático, o desenvolvimento de software não


deve ser encarado como uma atividade puramente técnica. O profissional de
desenvolvimento deve levar em consideração o fato de que geralmente softwares
são criados para o atendimento de necessidades de pessoas. Quem pontua a
qualidade do software são as pessoas que os utilizam.

Tão importante quanto o bom desempenho e eficiência é o atendimento das


necessidades dos usuários. Neste sentido, os fatores ergonômicos são relevantes e
também devem ser considerados.

153
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO

2 FUNDAMENTOS DE LÓGICA DE PROGRAMAÇÃO


Objetivando tornar o uso do conteúdo do Caderno de Estudos o mais claro
e produtivo possível, neste tópico são descritos alguns conceitos que auxiliarão no
aprendizado e entendimento do conteúdo dos demais tópicos.

Software

Software é a denominação genérica que pode ser aplicada a um conjunto


de dados e elementos lógicos necessários para execução de tarefas utilizando
computadores. Pode-se dizer também que um software é uma unidade de controle
programado que utiliza instruções na sua composição.

Os softwares são classificados em quatro categorias. Estas categorias são


sistemas operacionais, utilitários, aplicativos e linguagens de programação.

Os sistemas operacionais controlam o funcionamento do equipamento e


sua interação com os demais softwares. Os utilitários têm por finalidade a execução
de tarefas específicas, tipicamente em auxílio a funções do Sistema Operacional ou
atividades acessórias que não sejam de competência dos Sistemas Operacionais
nem dos softwares aplicativos. Aplicativos são softwares para auxiliar os usuários
em suas atividades diárias, como, por exemplo, sistemas administrativos,
contábeis e ferramentas de escitório. Linguagens de Programação permitem o
desenvolvimento de novos softwares.

Programa

Programa é uma unidade de software destinada à execução de determinada


tarefa. Geralmente atribui-se esta denominação a uma unidade de software que
tenha um conjunto reduzido de funcionalidades.

Sistema

Para fins computacionais, sistema pode ser definido como um conjunto


inter-relacionado de programas. Um sistema geralmente permite a execução
de um número maior de funcionalidades. Estas funcionalidades podem estar
organizadas em programas diferentes. Um exemplo é o sistema operacional. Ele
possui uma série de pequenos programas que auxiliam no seu funcionamento e na
execução das tarefas.

Rotina

A rotina é uma pequena unidade dentro de um programa que geralmente


executa uma tarefa bastante específica. Um exemplo pode ser a rotina de cálculo de
média. Este trecho de programa é denominado rotina, pois executa uma tarefa específica
e que sempre ocorre e é tratada da mesma maneira. Nas linguagens de programação
as rotinas geralmente são implementadas na forma de funções ou procedimentos.

154
TÓPICO 1 | FUNDAMENTOS DE LÓGICA DE PROGRAMAÇÃO

Sub-rotina

A sub-rotina é um trecho bastante particular do software que geralmente


auxilia uma rotina. Pode-se dizer que uma sub-rotina é o refinamento de uma
rotina.

Nas linguagens de programação, tanto as rotinas quanto as sub-rotinas


podem ser encontradas na forma de funções (function) ou procedimentos (procedure).

Comando

O comando é uma palavra ou símbolo que indica uma ordem para execução
de uma ação. Os comandos são imperativos. Por exemplo: leia, escreva, escolha,
entre outros.

Instrução

Instrução é uma das tarefas que devem ser executadas para a obtenção
do resultado desejado através do software. Esta tarefa pode ser um cálculo, uma
atribuição, uma chamada de sub-rotina, entre outras.

Linguagem de Programação

As linguagens de programação são softwares destinados ao desenvolvimento


de novos softwares. É através delas que são escritos códigos de programação
entendidos e executados pelos computadores.

Sintaxe

Sintaxe é a forma de organização das instruções para que seja obtido o


resultado desejado, seguindo-se as regras da linguagem utilizada. É o conjunto
de regras que indicam o formato de escrita das instruções. Considera também a
sequência em que as instruções devem ser escritas para atender aos requisitos da
linguagem utilizada, pois não basta apenas a escrita estar correta, é necessário que
haja coerência na instrução.

A sintaxe considera a escrita correta das instruções.

Exemplo(s):
Correta: “Vamos aprender algoritmos.”
Incorreta: “Aprende argoritmos vamo.”
Semântica

A Semântica refere-se ao significado das instruções, ou o que um conjunto


de instruções quer informar. Na semântica, um conjunto de instruções deve ser
escrito de forma que elas possam ser correta e coerentemente executadas.

155
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO

A semântica considera o significado das instruções.

Exemplo(s):
Correta: “Diga a cor dos seus olhos.”
Incorreta: “Diga qual a cor sua idade.”

Teste de Mesa

O teste de mesa é uma técnica de validação de algoritmos que visa testar os


resultados obtidos em relação ao objetivo para o qual o algoritmo foi construído.

O teste de mesa consiste na definição de um conjunto de dados de entrada


e resultados esperados, após o processamento destes dados. Submissão destes
dados às instruções do algoritmo e a obtenção do resultado deste processamento.

Caso o resultado do teste de mesa seja o mesmo que o resultado esperado, há


grande possibilidade do algoritmo estar correto. Num teste de mesa é fundamental
validar todas as situações previstas no algoritmo.

Exemplo(s):
Neste algoritmo a variável Primeiro_Numero receberá 10 e a variável
Segundo_Numero receberá 5, então espera-se que, ao final da execução, a variável
Total tenha o valor 15.

1 Algoritmo Soma;
2 variáveis
3 Primeiro_Numero : inteiro;
4 Segundo_Numero : inteiro;
5 Total: inteiro;
6 início
7 escreva(’Informe o primeiro número: ’);
8 leia(Primeiro_Numero); { 10 }
9 escreva(’Informe o segundo número: ’);
10 leia(Segundo_Numero); { 5 }
11 Total ← Primeiro_Numero + Segundo_Numero;{10 + 5}
12 escreva(Total); { 15 }
13 fim.

Neste exemplo as linhas do algoritmo foram numeradas para que se possa


fazer referência direta ao que ocorre nas mesmas. O teste de mesa deste algoritmo
pode ser efetuado da seguinte forma: Na linha 7 é solicitado ao usuário uma entrada
de um número e na linha 8 é obtido número solicitado. No exemplo, o número
informado foi 10. As linhas 9 e 10 repetem o mesmo processo das linhas 7 e 8, mas
neste caso o número informado foi 5. Na linha 11 é efetuada a soma dos dados

156
TÓPICO 1 | FUNDAMENTOS DE LÓGICA DE PROGRAMAÇÃO

informados e que estão armazenados nas variáveis Primeiro_Numero e Segundo_


Numero. O resultado da soma dos conteúdos será atribuído à variável Total. Na
linha 12 o conteúdo da variável total é apresentado ao usuário. Caso o resultado
apresentado seja o resultado esperado (15), obteve-se sucesso no teste de mesa.

Dado

O dado é um elemento ou conjunto de elementos que não possuem


significado completo. Por exemplo, se for informado para alguém simplesmente o
dado 9, o receptor provavelmente não entenderá o significado do mesmo.

Informação

A informação é um conjunto de elementos que transmitem uma mensagem


ao seu receptor. Pode-se dizer que a informação é o resultado da agregação de
valor aos dados pela sua associação.

Utilizando o exemplo do dado fornecido no conceito anterior, acrescenta-


se mais um dado, a palavra “média”, ou seja: “média 9”. Neste caso aumentou a
probabilidade do receptor destes dados entender o que se pretende transmitir com
os mesmos. Acrescentando mais alguns dados tem-se: “A média da aluna Käthlyn
na disciplina é 9”. Este conjunto de dados certamente transmite ao receptor uma
mensagem que possui significado completo, ou seja, uma informação.

Comentário

O comentário é uma informação agregada ao algoritmo que informa


ao programador algo importante e que deve ser considerado no momento de
interpretar ou alterar o algoritmo.

É aconselhável que junto à declaração de variáveis e procedimentos sejam


acrescentados comentários descrevendo seus significados e finalidades. Regras
de negócios também podem ser descritas em comentários, facilitando futuras
manutenções.

Nos algoritmos desenvolvidos neste livro serão utilizadas chaves { } para


delimitar o início e fim de comentários.

Endentação

A endentação é o alinhamento das instruções de forma a simplificar a


identificação da subordinação dos blocos de instruções. A endentação também é
chamada de indentação ou identação na área de programação.

É altamente recomendável que os algoritmos, assim como os programas,


sejam endentados, pois facilita o entendimento.

157
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO

Para a maioria das linguagens de programação a endentação não exerce


influência. Nestes casos, quem é beneficiado pela endentação é a pessoa que
precisa ler e entender o código escrito.

3 LÓGICA PARA PROGRAMAÇÃO


A lógica está presente no dia a dia das pessoas em diversas atividades.
Utiliza-se lógica até mesmo para a realização das atividades consideradas mais
elementares. Embora a palavra lógica remeta apenas às ciências exatas, ela também
é utilizada em outras ciências.

O estudo de lógica para programação visa exercitar a organização do


raciocínio para a descrição das etapas a serem seguidas na execução de uma
determinada tarefa.

Existem várias formas de desenvolver o raciocínio lógico. As mais comuns


são o desenvolvimento de operações matemáticas e cálculos estatísticos. Os jogos
de estratégia também são um meio interessante de exercitar o raciocínio.

Este tópico trata especificamente o exercício da organização do raciocínio


objetivando o desenvolvimento de softwares. Assim como na realização de operações
matemáticas, na construção de softwares é necessário seguir um conjunto de regras
para a obtenção de resultados precisos e previsíveis.

Algoritmo

Algoritmo é um conjunto finito de instruções que devem ser executadas


para a obtenção de um resultado desejado. Algoritmos podem ser representados
de forma gráfica ou textual. Na forma gráfica geralmente utiliza-se o fluxograma
ou o diagrama estruturado. Já na representação textual utiliza-se um conjunto
padronizado de palavras para representar as instruções que podem ser facilmente
entendidas e traduzidas para uma linguagem de programação.

Num algoritmo, os elementos fundamentais são as instruções e os dados


manipulados.

Descrição Narrativa

A descrição narrativa é a representação escrita das instruções que devem


ser executadas. Esta forma de representação de algoritmos também é conhecida
como pseudocódigo ou metalinguagem.

Uma característica importante desta representação é permitir a definição


clara dos dados envolvidos e o detalhamento de como eles deverão estar
estruturados.

158
TÓPICO 1 | FUNDAMENTOS DE LÓGICA DE PROGRAMAÇÃO

A descrição narrativa é uma técnica amplamente utilizada, pelo fato de


facilitar a transcrição das instruções para uma linguagem de programação.

Exemplo(s):
Algoritmo que lê e soma dois números e escreve o total.

Algoritmo Calcula;
variáveis
Primeiro_Numero: inteiro;
Segundo_Numero: inteiro;
Soma: inteiro;
início
escreva(’Informe o primeiro número: ’);
leia(Primeiro_Numero);
escreva(’Informe o segundo número: ’);
leia(Segundo_Numero);
Soma ← Primeiro_Numero + Segundo_Numero;
escreva(Soma);
fim.

Algoritmo que lê um número diferente de 10, verifica e escreve se é maior


ou menor que 10.

Algoritmo Compara;
variáveis
Numero : inteiro;
início
escreva(’Informe um número: ’);
leia(Numero);
se (Numero < 10) então
início se
escreva(’O numero é menor.’);
fim se
senão
início senão
escreva(’O numero é maior.’);
fim senão;
fim.

159
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO

Algoritmo que executa dez vezes e em cada vez escreve o número da


execução.

Algoritmo Looping;
variáveis
Quantidade : inteiro;
início
Quantidade ← 1;
enquanto (Quantidade <= 10) faça
início enquanto
escreva(Quantidade, ’ª vez.’);
Quantidade ← Quantidade + 1;
fim enquanto;
fim.

Estrutura Básica de um Algoritmo

Para que um algoritmo possa ser traduzido de forma simplificada para


uma linguagem de programação, é aconselhável que ele seja escrito nos mesmos
princípios estruturais. A estrutura básica de um algoritmo compreende as seguintes
partes:

Cabeçalho do algoritmo
Definição de constantes
Definição de tipos de dados
Definição de variáveis
Descrição das funções e procedimentos
Início do bloco principal do algoritmo
Corpo principal do algoritmo
Fim do bloco principal do algoritmo

Identificadores

O identificador é a distinção dos elementos utilizados no desenvolvimento


de software. Identificadores são utilizados para a distinção de constantes, tipos de
dados, variáveis, entre outros.

A declaração de um identificador deve seguir a seguinte regra: iniciar por


uma letra (a .. z, A .. Z) ou underline ( _ ), podendo ser complementado por letras (a
.. z, A .. Z), números (0 .. 9) ou underlines.

160
TÓPICO 1 | FUNDAMENTOS DE LÓGICA DE PROGRAMAÇÃO

Não podem ser utilizados na composição de um identificador caracteres


especiais e símbolos ($, #, @, !, %, &, ?, >, ], entre outros).

Exemplo(s):
Nome
Cor_dos_Olhos
_Valor
Encontrou
Idade

Constantes

Constantes são identificadores que recebem um determinado conteúdo, o


qual não será alterado durante a execução do programa. Existem situações em que
as constantes são extremamente úteis, poupando tempo e gerando segurança no
momento da manutenção do programa.

Exemplo(s):
Quando há um valor que será utilizado em vários locais de um algoritmo,
é interessante o uso de uma constante com esse valor. Um exemplo é o valor de
pi, ou seja, π = 3,141592. Definindo uma constante com esse valor, a possibilidade
de erro no uso do valor de π no algoritmo é reduzido. Poderá ocorrer um erro se
o valor definido na constante estiver errado ou se em algum lugar do algoritmo
estiver sendo feita uma atribuição do valor 3,141592. Neste caso, o valor atribuído
poderá acidentalmente estar diferente do valor da constante, causando diferença
no cálculo e dificultando a localização do problema.

Supondo que se escreva um algoritmo para calcular o imposto de uma


nota fiscal, neste algoritmo poderá ser declarada uma constante que irá armazenar
o valor percentual do imposto. Caso a legislação mude, basta alterar o valor da
constante, assim todos os locais onde ela está sendo utilizada serão automaticamente
atualizados com o novo valor.

Tipos de Dados

O tipo de dado define o conjunto de valores que um identificador pode


assumir ou armazenar. Nas linguagens de programação estão disponíveis vários
tipos de dados. Para fins de desenvolvimento de algoritmos utilizam-se os tipos
de dados primitivos, pois as variações de tipos são definidas conforme os recursos
disponibilizados pela linguagem de programação e a necessidade de representação
ou armazenamento.

Os tipos de dados primitivos são: inteiro, real, caractere e lógico.

161
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO

Variáveis

Variáveis, como o nome sugere, são identificadores utilizados para


armazenar conteúdos que poderão variar durante a execução do programa. As
variáveis são importantes na escrita de programas, pois são elas que auxiliam no
processamento e armazenam os valores resultantes do mesmo.

Muito embora se imagine que ao iniciar a execução de um programa as


variáveis estarão carregadas com conteúdos padrões, isso não ocorre. O conteúdo
que as variáveis contêm antes de receberem a primeira atribuição podem ser
quaisquer valores da faixa que elas podem armazenar. Por este motivo, quando se
precisa garantir um conteúdo inicial numa variável, este deve ser explicitamente
atribuído. Esta atribuição explícita no início da utilização das variáveis chama-se
inicialização de variáveis.

Exemplo(s):
Um algoritmo que lê vários valores e no final mostra o somatório destes
valores poderá fazer uso de uma variável chamada “Total”. Cada leitura somará
o valor a ela e no final, para apresentar o resultado, basta mostrar o conteúdo da
variável “Total”.

Se um algoritmo tem a função de comparar dois números, é necessário


que neste algoritmo estejam declaradas pelo menos duas variáveis. Cada variável
receberá o valor de um número para que posteriormente sejam comparados. É
importante lembrar que, para que a comparação possa ocorrer, as variáveis devem
ser do mesmo tipo de dado.

Operadores Aritméticos

Os operadores aritméticos são utilizados para a realização de operações


matemáticas. Os operadores estão relacionados no quadro a seguir.

QUADRO 6 – OPERADORES ARITMÉTICOS

Operador Função
+ adição e concatenação
- subtração
* multiplicação
/ divisão de valores reais
div divisão de valores inteiros
mod resto da divisão de valores inteiros
FONTE: O autor

162
TÓPICO 1 | FUNDAMENTOS DE LÓGICA DE PROGRAMAÇÃO

Operadores Lógicos

Os operadores lógicos são utilizados para o tratamento de relações lógicas.


O resultado obtido destas operações é sempre o valor verdadeiro ou falso. No
quadro a seguir estão relacionados os operadores lógicos.

QUADRO 7 – OPERADORES LÓGICOS


Operador Função
e conjunção
ou disjunção
não negação
FONTE: O autor

Operadores Relacionais

Os operadores relacionais são utilizados para a realização de comparações


entre dois elementos do mesmo tipo de dado. O resultado obtido a partir de
operações com estes operadores é sempre o valor verdadeiro ou falso. Tais
operadores estão relacionados no quadro a seguir.

QUADRO 8 – OPERADORES RELACIONAIS

Operador Função
= igual
> maior
>= maior ou igual
< menor
<= menor ou igual
<> diferente
FONTE: O autor

UNI

Observe que o operador diferente (<>) utilizado aqui está baseado na sintaxe da
linguagem de programação Pascal. Na linguagem de programação C o operador é o sinal de igual (=).

163
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO

Dependendo da situação, os operadores poderão ser utilizados de forma


combinada,permitindo resolver operações mais complexas. Estas operações
poderão ser aritméticas, lógicas, relacionais ou combinações entre as mesmas.

4 COMANDOS BÁSICOS
Os comandos básicos são instruções elementares utilizadas na maioria dos
softwares. Estas instruções são atribuição, leitura e escrita.

Atribuição

O comando de atribuição permite atribuir conteúdo a um determinado


identificador. Este conteúdo pode ser um dado que está armazenado em outro
identificador, o resultado de um cálculo, o retorno de uma sub-rotina (função),
entre outros. É importante observar que à esquerda do símbolo de atribuição deve
haver apenas um identificador.

A atribuição deve levar em consideração a compatibilidade do conteúdo com


o tipo do identificador. A atribuição de conteúdo incompatível ao suportado pelo
tipo de dado pode causar erros de compilação ou de execução. Em consequência
desta incompatibilidade, o programa pode terminar de forma brusca ou gerar
resultados inconsistentes.

Neste livro, para o desenvolvimento de algoritmos, o comando de


atribuição será representado pelo símbolo ←. Esta seta para a esquerda significa a
atribuição do conteúdo da direita para o identificador da esquerda. Na maioria das
linguagens de programação, porém, a atribuição é representada por = (igual) ou :=
(dois pontos e igual).

Exemplo(s):

Continuar ← verdadeiro;
Aluna ← ’Manuela’;
Quantidade ← 7;
Total_Bruto ← A + B;
Indice ← Indice + 1;
Nome ← ’Eduardo’;
Prosseguir ← ’S’;
Nota ← 9.50;

Leitura

164
TÓPICO 1 | FUNDAMENTOS DE LÓGICA DE PROGRAMAÇÃO

O comando de leitura permite a obtenção de dados do meio externo para


o programa. Em algoritmos, esta entrada de dados geralmente é feita através do
teclado. A leitura pode se referir ainda à obtenção de conteúdos de um arquivo, de
um banco de dados, de uma porta de comunicação, entre outros.

A sintaxe deste comando é leia ( identificador ). O identificador


utilizado neste comando indica onde o dado deve ser armazenado.

Exemplo(s):
leia(Continuar);
leia(Total_Bruto);
leia(Idade);
leia(Nome);
leia(Prosseguir);

Escrita

O comando de escrita permite interagir com o usuário do software através


da apresentação do resultado de um processamento ou a solicitação de uma nova
entrada de dados. A escrita pode se referir ainda ao armazenamento de dados num
arquivo, num banco de dados, no envio de conteúdo para uma impressora, entre
outros.

A representação é escreva ( [identificador, conteúdo] ). Os parâmetros


deste comando podem ser um ou mais identificadores, que podem ser combinados
com um ou mais conteúdos predeterminados (caracteres, textos, números e outros
identificadores).

Exemplo(s):

Escreva(’Primeiro Algoritmo.’);
Escreva(’Total: ’, Total_Bruto);
Escreva(’Sua idade é: ’, Idade);
Escreva(’Deseja prosseguir? (S/N): ’);
Escreva(’Informe seu nome: ’);

165
RESUMO DO TÓPICO 1

Caro acadêmico, neste tópico você estudou que:

• Os softwares são classificados nas categorias de sistemas operacionais, utilitários,


aplicativos e linguagens de programação. Os sistemas operacionais tornam o
computador útil, pois sem eles não poderíamos executar os aplicativos para
desempenhar as atividades do dia a dia.

• A sintaxe de um programa se refere à escrita correta das instruções que deverão


ser executadas. Tipicamente se entende a sintaxe como sendo o conjunto de
palavras reservadas de uma linguagem de programação. Já a semântica se refere
ao significado que um conjunto de instruções irá gerar.

• Os tipos de dados são o conjunto de valores que um determinado identificador


daquele tipo poderá assumir. Também pode-se entender que é o conjunto de
valores que ele poderá representar. O conjunto de valores se refere tanto ao
formato (caractere, inteiro, real, etc.) quanto ao tamnho do conjunto que pode
ser representado (0..255, -32768..32767, etc).

• As variáveis são o conjunto de memórias auxiliares que ajudam o programador


na realização das operações necessárias nos programas. A declaração de
variáveis deve seguir uma regra para que os identificadores delas sejam aceitos
pelas linguagens de programação. Esta regra diz que uma variável deve iniciar
com uma letra ou sublinha (_), conter nos demais elementos letras, números e/
ou sublinha.

166
AUTOATIVIDADE

Caro acadêmico, como forma de fixar o conteúdo estudado, realize a


autoatividade proposta a seguir:

1 Assinale os identificadores corretamente definidos:


a) ( ) _Soma b) ( ) 2Numero c) ( ) Numero2
d) ( ) primeirovalor e) ( ) índice f) ( ) caminhão
g) ( ) c_avião h) ( ) sNome i) ( ) $Valor
j) ( ) #Telefone k) ( ) TotalBruto l) ( ) Total
m) ( ) Data n) ( ) endereco_32 o) ( ) A&C
p) ( ) a q) ( ) rel&gio r) ( ) X_y_Z
s) ( ) HoRa t) ( ) Continua u) ( ) H2O

2 Defina o tipo de dado mais adequado para as variáveis segundo o conteúdo


a ser armazenado:

a) Nome
a) ( ) inteiro b) ( ) real c) ( ) caractere d) ( ) lógico

b) Metros
a) ( ) inteiro b) ( ) real c) ( ) caractere d) ( ) lógico

c) Quantidade
a) ( ) inteiro b) ( ) real c) ( ) caractere d) ( ) lógico

d) Endereço
a) ( ) inteiro b) ( ) real c) ( ) caractere d) ( ) lógico

e) Achou
a) ( ) inteiro b) ( ) real c) ( ) caractere d) ( ) lógico

3 Assinale o tipo de operador utilizado em cada expressão, considerando que


uma expressão pode conter mais de um operador:

a) 198 + 12

a) ( ) Aritmético
b) ( ) Aritmético e Lógico
c) ( ) Relacional e Aritmético

167
b) (Parar = Sim) ou (Sinal = ‘Vermelho’)

a) ( ) Aritmético e Lógico
b) ( ) Aritmético e Relacional
c) ( ) Lógico e Relacional

c) ((10 / 5) + (3 * 2)) = 8

a) ( ) Aritmético
b) ( ) Aritmético e Lógico
c) ( ) Aritmético e Relacional

d) (Soma >= 5) e (Soma <= 50 )

a) ( ) Aritmético e Lógico
b) ( ) Lógico e Relacional
c) ( ) Relacional e Lógico

e) (Valor_Compra – Desconto) > LimiteCredito

a) ( ) Aritmético e Relacional
b) ( ) Relacional e Lógico
c) ( ) Relacional

4 Desenvolva os algoritmos propostos a seguir.

a) Elabore um algoritmo que leia o preço de compra, o percentual de acréscimo


e calcule o preço de venda de uma mercadoria. Ao final escreva o preço de
compra, o acréscimo aplicado e o preço de venda.
b) Construa um algoritmo que leia o capital e uma taxa de rendimento a ser
aplicada. Escreva o capital, a taxa de rendimento, o rendimento e o montante
(capital + rendimento).
c) Elabore um algoritmo que leia um número, identifique se é par ou ímpar e
escreva o resultado.
d) Faça um algoritmo que leia quatro notas de um aluno e escreva a média
obtida.
e) Um mercado resolveu oferecer três condições de pagamento a prazo aos
clientes (15, 30 ou 45 dias). Construa um algoritmo para ler o valor da compra
e a taxa de juros para cada um dos prazos e escreva quanto o cliente irá pagar
em cada condição.

168
UNIDADE 3
TÓPICO 2

ESTRUTURAS DE CONTROLE

1 INTRODUÇÃO
As estruturas de controle permitem determinar como um conjunto de
instruções deverá ser executado para a realização das tarefas desejadas. Esta
determinação pode ser a ordem em que as instruções deverão ser executadas, a
submissão a determinadas condições ou o refinamento do processamento.

É importante observar que não existe uma regra de subordinação básica ou


única para a utilização das estruturas de controle. Pode-se utilizar as estruturas de
controle em qualquer combinação de subordinação.

As estruturas de controle que serão abordadas neste capítulo são: sequência,


seleção e repetição.

Sequência

Esta estrutura de controle permite a definição da sequência em que as


instruções deverão ser executadas. A finalidade desta estrutura é definir a ordem
em que as instruções devem ser executadas. Uma inversão na ordem de execução
das instruções pode modificar significativamente o resultado.

Exemplo(s):
Algoritmo Calcula;
variáveis
Primeiro: inteiro;
Segundo: inteiro;
Resultado: inteiro;
início
Primeiro ← 0;
Segundo ← 0;
escreva(’Informe o primeiro número: ’);
leia(Primeiro);
escreva(’Informe o segundo número: ’);
leia(Segundo);
Resultado ← (Primeiro * 3) + Segundo;
escreva(Resultado);
fim.

169
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO

Neste algoritmo são solicitados dois números; em seguida, o primeiro


número é multiplicado por três e somado ao segundo número. Se alterarmos a
sequência conforme o exemplo seguinte, o resultado seria diferente, pois o valor
do segundo número seria zero no momento do cálculo e depois receberia um valor
que não seria utilizado dentro do algoritmo.

Algoritmo Calcula;
variáveis
Primeiro : inteiro;
Segundo : inteiro;
Resultado : inteiro;
início
Primeiro ← 0;
Segundo ← 0;
escreva(’Informe o primeiro número: ’);
leia(Primeiro);
Resultado ← (Primeiro * 3) + Segundo;
escreva(’Informe o segundo número: ’);
leia(Segundo);
escreva(Resultado);
fim.

Objetivando possibilitar maiores oportunidades de aprendizagem,


são descritos exemplos de algoritmos em descrição narrativa e também com
implementação nas linguagens de programação C++ e Pascal.

Exemplo 1: Algoritmo que lê e soma dois números e escreve o total.

Implementação em descrição narrativa

Algoritmo Soma;
variáveis
Primeiro_Numero : inteiro;
Segundo_Numero : inteiro;
Total : inteiro;
início
escreva(’Informe o primeiro número: ’);
leia(Primeiro_Numero);
escreva(’Informe o segundo número: ’);
leia(Segundo_Numero);
Total ← Primeiro_Numero + Segundo_Numero;
escreva(Total);
fim.

Implementação em C++

170
TÓPICO 2 | ESTRUTURAS DE CONTROLE

#include <iostream.h>

main()
{
int Primeiro_Numero;
int Segundo_Numero;
int Total;
char Tecla;
cout << “\n”;
cout << “Informe o primeiro número: “;
cin >> Primeiro_Numero;
cout << “Informe o segundo número: “;
cin >> Segundo_Numero;
Total = Primeiro_Numero + Segundo_Numero;
cout << Total;
cout << “\n”;
cout << “Pressione uma tecla para continuar...”;
cin >> Tecla;
return 0;
}

Implementação em Pascal

Program Soma;
uses crt;
var
Primeiro_Numero : integer;
Segundo_Numero : integer;
Total : integer;
begin
clrscr;
write(‘Informe o primeiro número: ‘);
readln(Primeiro_Numero);
write(‘Informe o segundo número: ‘);
readln(Segundo_Numero);
Total := Primeiro_Numero + Segundo_Numero;
writeln(Total);
write(‘Pressione qualquer tecla para continuar...’);
readkey;
end.

Exemplo 2: Algoritmo que lê um número, verifica e escreve se o número


é menor que 10 ou maior ou igual a 10.

171
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO

Implementação em descrição narrativa

Algoritmo Compara;
variáveis
Numero : inteiro;
início
escreva(’Informe um número: ’);
leia(Numero);
se (Numero < 10) então
início se
escreva(’O número é menor que 10.’);
fim se
senão
início senão
escreva(’O número é maior ou igual a
10.’);
fim senão;
fim.

Implementação em C++

#include <iostream.h>

main()
{
int Numero;
char Tecla;
cout << “\n”;
cout << “Informe um número: “;
cin >> Numero;
if (Numero < 10)
{
cout << “O número é menor que 10.”;
}
else
{
cout << “O número é maior ou igual a 10.”;
}
cout << “\n”;
cout << “Pressione uma tecla para continuar...”;
cin >> Tecla;
return 0;
}

172
TÓPICO 2 | ESTRUTURAS DE CONTROLE

Implementação em Pascal

Program Compara;
uses crt;
var
Numero : integer;
begin
clrscr;
write(‘Informe um número: ‘);
readln(Numero);
if (Numero < 10) then
begin
writeln(‘O número é menor que 10.’);
end
else
begin
writeln(‘O número é maior ou igual a 10.’);
end;
write(‘Pressione qualquer tecla para
continuar...’);
readkey;
end.

Exemplo 3: Algoritmo que lê dois números, multiplica o primeiro


número por 3 e soma ao segundo.

Implementação em descrição narrativa

Algoritmo Calcula;
variáveis
Primeiro : inteiro;
Segundo : inteiro;
Resultado : inteiro;
início
escreva(’Informe o primeiro número: ’);
leia(Primeiro);
escreva(’Informe o segundo número: ’);
leia(Segundo);
Resultado ← (Primeiro * 3) + Segundo;
escreva(Resultado);
fim.
Implementação em C++

#include <iostream.h>

173
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO

main()
{
int Primeiro;
int Segundo;
int Resultado;
char Tecla;
cout << “\n”;
cout << “Informe o primeiro número: “;
cin >> Primeiro;
cout << “Informe o segundo número: “;
cin >> Segundo;
Resultado = (Primeiro * 3) + Segundo;
cout << Resultado;
cout << “\n”;
cout << “Pressione uma tecla para
continuar...”;
cin >> Tecla;
return 0;
}

Implementação em Pascal

Program Calcula;
uses crt;
var
Primeiro : integer;
Segundo : integer;
Resultado : integer;

begin
clrscr;
write(‘Informe o primeiro número: ‘);
readln(Primeiro);
write(‘Informe o segundo número: ‘);
readln(Segundo);
Resultado := (Primeiro * 3) + Segundo;
writeln(Resultado);
write(‘Pressione qualquer tecla para
continuar...’);
readkey;
end.

Seleção

174
TÓPICO 2 | ESTRUTURAS DE CONTROLE

A estrutura de seleção permite a definição de uma condição para que um


conjunto de instruções seja ou não executado. Por este motivo as estruturas de
seleção também são conhecidas como estruturas condicionais.

O importante é saber que a estrutura de seleção deve ser utilizada quando


há a necessidade de testar uma condição, e que em função do resultado da mesma,
poderá ser gerado um desvio no processamento.

A seleção pode ser subdividida em quatro tipos: simples, composta,


encadeada e múltipla.

Seleção Simples

A seleção simples é resolvida com a utilização do comando se então.

Exemplo(s):

se (A > 10) então


se (Prosseguir = verdadeiro) então
se (Nome <> ’ ’) então
se ((A > 10) e (A < 20)) então
se não Terminou então

Seleção Composta

A seleção composta é resolvida com a utilização do comando se então


auxiliado pelo senão. Na realidade, o comando se então define se as instruções
subordinadas a ele serão executadas e o senão permite a subordinação das
instruções que deverão ser executadas caso a condição submetida ao se então seja
falsa.

Exemplo(s):
se (A > 10) então
início se
escreva(A, ’ é maior que 10.’);
fim se
senão
início senão
escreva(A, ’ é menor que 10.’);
fim senão;

Seleção Encadeada

A seleção encadeada é resolvida com a utilização do comando se então


subordinado a outro se então. Esta subordinação ou encadeamento pode ter vários
elementos envolvidos.

175
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO

Exemplo(s):

se ((A >= 10) e (A <= 20)) então


início se
se (A <= 15) então
início se
escreva(A, ’ está entre 10 e 15’);
fim se
senão
início senão
escreva(A, ’ está entre 16 e 20’);
fim senão;
fim se
senão
início senão
escreva(A, ’ não está entre 10 e 20’);
fim senão;

Seleção Múltipla

Na resolução de seleções múltiplas utiliza-se o comando escolha caso.

Exemplo(s):

escolha Numero
caso 1: escreva(’*’);
caso 2: escreva(’**’);
caso 3: escreva(’***’);
senão
escreva(’Este número está fora da
faixa.’);
fim escolha.

Objetivando possibilitar maiores oportunidades de aprendizagem, são


descritos exemplos de algoritmos de estruturas de seleção em descrição narrativa
e também com implementação nas linguagens de programação C++ e Pascal.

Exemplo 4: Algoritmo que lê um número de um a três e escreve a


quantidade lida em ‘*’.

Implementação em descrição narrativa

Algoritmo Escolha;
variáveis
Numero : inteiro;
início
176
TÓPICO 2 | ESTRUTURAS DE CONTROLE

escreva(’Informe um número de 1 a 3: ’);


leia(Numero);
escolha Numero
caso 1: escreva(’*’);
caso 2: escreva(’**’);
caso 3: escreva(’***’);
senão
escreva(’Este número está fora da
faixa.’);
fim escolha;
fim.

Implementação em C++

#include <iostream.h>

main()
{
int Numero;
char Tecla;
cout << “\n”;
cout << “Informe um número de 1 a 3: “;
cin >> Numero;
switch(Numero)
{
case 1 : cout << “*”; break;
case 2 : cout << “**”; break;
case 3 : cout << “***”; break;
default : cout << “O número está fora da
faixa.”;
}
cout << “\n”;
cout << “Pressione uma tecla para
continuar...”;
cin >> Tecla;
return 0;
}

Implementação em Pascal

Program Escolha;
uses crt;
var
Numero : integer;
begin

177
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO

clrscr;
write(‘Informe um número de 1 a 3: ‘);
readln(Numero);
case Numero of
1 : writeln(‘*’);
2 : writeln(‘**’);
3 : writeln(‘***’);
else
writeln(‘Este número está fora da faixa.’);
end;
write(‘Pressione qualquer tecla para
continuar...’);
readkey;
end.

Repetição

Permite a execução de uma instrução ou conjunto de instruções por um


número determinado de vezes ou até que uma determinada condição seja satisfeita.
Esta estrutura também é conhecida por laço ou looping.

Para a construção de uma estrutura de repetição existem três comandos


que podem ser utilizados: enquanto faça, para faça e repita até.

Enquanto faça

O comando enquanto faça é o mais adequado para situações em que a


condição de término da repetição deve ser testada antes da execução das instruções
subordinadas à estrutura de controle.

Exemplo(s):
Quantidade ← 0;
enquanto (Quantidade <= 5) faça
início enquanto
Quantidade ← Quantidade + 1;
escreva(Quantidade, ’ª execução.’);
fim enquanto;

Para faça

A utilização do comando para faça é recomendada para situações em que


se conhece previamente a quantidade de vezes que o conjunto de instruções deve
ser executado. Esta quantidade de vezes também é conhecida como limite inferior
e limite superior.

178
TÓPICO 2 | ESTRUTURAS DE CONTROLE

Exemplo(s):
para Quantidade de 1 até 5 faça
início para
escreva(Quantidade, ’ª execução.’);
fim para;

Repita até

O comando repita até é mais adequado para situações em que as instruções


subordinadas à estrutura de controle deverão ser executadas pelo menos uma vez,
antes do teste da condição de término. Em algumas linguagens de programação
o comando repita até pode ser encontrado como uma variante do enquanto faça.

Exemplo(s):
Quantidade ← 0;
repita
Quantidade ← Quantidade + 1;
escreva(Quantidade, ’ª execução.’);
até (Quantidade >= 5);

Objetivando possibilitar maiores oportunidades de aprendizagem,


são descritos exemplos de algoritmos em descrição narrativa e também com
implementação nas linguagens de programação C++ e Pascal.

Exemplo 5: Algoritmo que executa cinco vezes e em cada vez escreve o


número da execução utilizando o comando enquanto faça.

Implementação em descrição narrativa

Algoritmo Enquanto_Faca;
variáveis
Quantidade : inteiro;
início
Quantidade ← 1;
enquanto (Quantidade <= 5) faça
início enquanto
escreva(Quantidade, ’ª vez.’);
Quantidade ← Quantidade + 1;
fim enquanto;
fim.

Implementação em C++

#include <iostream.h>

main()

179
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO

{
int Quantidade;
char Tecla;
Quantidade = 1;
while (Quantidade <= 5)
{
cout << “\n”;
cout << Quantidade << “ª vez.”;
Quantidade++;
}
cout << “\n”;
cout << “Pressione uma tecla para continuar...”;
cin >> Tecla;
return 0;
}

Implementação em Pascal

Program Enquanto_Faca;
uses crt;
var
Quantidade : integer;
begin
clrscr;
Quantidade := 1;
while (Quantidade <= 5) do
begin
writeln(Quantidade, ‘ª vez.’);
Quantidade := Quantidade + 1;
end;
write(‘Pressione qualquer tecla para continuar...’);
readkey;
end.

Exemplo 6: Algoritmo que executa cinco vezes e em cada vez escreve o


número da execução utilizando o comando para faça.

Implementação em descrição narrativa

Algoritmo Para_Faca;
variáveis
Quantidade : inteiro;
início
para Quantidade de 1 até 5 faça
início para

180
TÓPICO 2 | ESTRUTURAS DE CONTROLE

escreva(Quantidade, ’ª vez.’);
fim para;
fim.

Implementação em C++

#include <iostream.h>

main()
{
int Quantidade;
char Tecla;
cout << “\n”;
for (Quantidade = 0; Quantidade < 5;
Quantidade++)
{
cout << “\n”;
cout << Quantidade << “ª vez.”;
}
cout << “\n”;
cout << “Pressione uma tecla para
continuar...”;
cin >> Tecla;
return 0;
}

Implementação em Pascal

Program Para_Faca;
uses crt;
var
Quantidade : integer;
begin
clrscr;
for Quantidade := 1 to 5 do
begin
writeln(Quantidade, ‘ª vez.’);
end;
write(‘Pressione qualquer tecla para
continuar...’);
readkey;
end.

Exemplo 7: Algoritmo que executa cinco vezes e em cada vez escreve o


número da execução utilizando o comando repita até.

181
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO

Implementação em descrição narrativa

Algoritmo Repita_Ate;
variáveis
Quantidade : inteiro;
início
Quantidade ← 1;
repita
escreva(Quantidade, ’ª vez.’);
Quantidade ← Quantidade + 1;
até (Quantidade > 5);
fim.

Implementação em C++

#include <iostream.h>

main()
{
int Quantidade;
char Tecla;
cout << “\n”;
Quantidade = 1;
do {
cout << “\n”;
cout << Quantidade << “ª vez.”;
Quantidade++;
}
while (Quantidade <= 5);
cout << “\n”;
cout << “Pressione uma tecla para
continuar...”;
cin >> Tecla;
return 0;
}

Implementação em Pascal

Program Repita_Ate;
uses crt;
var
Quantidade : integer;
begin
clrscr;
Quantidade := 1;

182
TÓPICO 2 | ESTRUTURAS DE CONTROLE

repeat
writeln(Quantidade, ‘ª vez.’);
Quantidade := Quantidade + 1;
until (Quantidade > 5);
write(‘Pressione qualquer tecla para
continuar...’);
readkey;
end.

183
RESUMO DO TÓPICO 2

Caro acadêmico, neste tópico você estudou que:

• Os algoritmos são baseados quase em sua totalidade nas estruturas descritas por
Lady Ada no século XIX. As estruturas descritas por ela são sequência, seleção
e repetição. Com isso, quem aprender a utilizar bem estas estruturas poderá
programar grande parte dos softwares existentes atualmente. Exceção pode se
dar em casos que utilizem tecnologias mais avançadas.

• A estrutura de sequência define a ordem em que as instruções devem ser


executadas para que o resultado definido para o algoritmo seja atingido. Caso
a estrutura de sequência não seja obedecida, os resultados obtidos por tal
algoritmo são imprevisíveis, pois as instruções dependentes podem estar sendo
executadas antes daquelas que as deveriam preceder.

• A estrutura de seleção permite a definição de desvios condicionados às


condições definidas na expressão do comando de seleção definido. A estrutura
de seleção pode ser subdividida nos tipos: simples, composta, encadeada e
múltipla. Na seleção simples, composta e encadeada é utilizado o comando
se (ou if na maioria das linguagens de programação) e na seleção encadeada é
utilizado o comando escolha caso (ou case nas linguagens like Pascal e switch
case nas linguagens like C).

• A estrutura de repetição visa permitir a execução de um conjunto de instruções


na quantidade de vezes necessárias de acordo com a condição estabelecida na
expressão de controle do laço. As estruturas de seleção são: enquanto faça, para
faça e repita até (é o mesmo que o comando do while, nas linguagens like C).

• É importante observar que as estruturas de seleção e repetição utilizam expressões


como forma de definir o que deve ser executado. Estas expressões demonstram
o quanto a computação/informática tem suas raízes na área da matemática.
Portanto, conhecimentos e habilidades com lógica são muito importantes para
profissionais da área de computação/informática.

184
AUTOATIVIDADE

Caro acadêmico, como forma de fixar o conteúdo estudado, realize a


autoatividade proposta a seguir:

1 Desenvolva os algoritmos propostos a seguir.

a) Elabore um algoritmo onde será lido o valor de vários itens de compra e ao


final escreva o valor a ser pago. O algoritmo deverá continuar lendo itens
enquanto o valor digitado for diferente de zero.

b) Uma loja deseja saber quantos clientes compram 1 = à vista, 2 = 30 dias e 3


= 60 dias. Desenvolva um algoritmo que leia uma quantidade ilimitada de
clientes. Ao informar zero, o algoritmo será finalizado e deverá apresentar
quantos clientes foram digitados em cada condição.

c) Construa um algoritmo para calcular e escrever o IMC (Índice de Massa


Corporal) de uma pessoa. São fornecidos o nome da pessoa, o peso e a altura.
A fórmula para calcular o IMC é o peso dividido pela altura ao quadrado.
Com base no resultado do cálculo do IMC, escreva o resultado conforme as
seguintes faixas:

até 20,0 (inclusive) = abaixo do peso


acima de 20,0 e abaixo de 25,0 = peso normal
entre 25,0 e abaixo de 30,0 = sobrepeso
entre 30,0 e abaixo de 40,0 = obeso
40,0 e acima = obeso mórbido
O algoritmo deverá ser executado até que seja informado “FIM” no nome da
pessoa.

d) Faça um algoritmo que leia o nome de uma pessoa e várias ligações


telefônicas (número do telefone e valor da ligação), enquanto o número do
telefone informado for diferente de zero. Ao final escreva o nome do cliente
e o valor da conta telefônica.

e) No controle de qualidade de uma empresa são classificadas as mercadorias


como de primeira, de segunda e refugo. Elabore um algoritmo para ler 100
peças e no final escreva quantas são de primeira, quantas são de segunda e
quantas são refugo.

185
186
UNIDADE 3
TÓPICO 3

SUBALGORITMOS E ESCOPO DE
IDENTIFICADORES

1 INTRODUÇÃO
Os subalgoritmos são uma forma de organização que visa especializar
um conjunto de instruções e tornar ainda mais clara a descrição de cada parte da
solução.

Quando a quantidade de instruções torna-se muito elevada e principalmente


quando um mesmo bloco de instruções precisa ser utilizado várias vezes, é
aconselhável o uso de subalgoritmos. A estrutura básica de um subalgoritmo
compreende as seguintes partes:

Cabeçalho do subalgoritmo
Definição de constantes
Definição de tipos de dados
Definição de variáveis
Início do subalgoritmo
Corpo principal do subalgoritmo
Fim do subalgoritmo.

Conforme se pode perceber na estrutura de um subalgoritmo, ele segue o


mesmo princípio estrutural de um algoritmo.

Um subalgoritmo pode ser chamado a partir do corpo principal do


algoritmo ou de outro subalgoritmo.

Exemplo(s):

Exemplo 8: Este algoritmo demonstra a utilização de um subalgoritmo.

Implementação em descrição narrativa

Algoritmo Soma;
variáveis
Primeiro : inteiro;
Segundo : inteiro;

subalgoritmo SomaValores(N1, N2 : inteiro);


início
187
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO

SomaValores ← N1 + N2;
fim;

início
Primeiro ← 0;
Segundo ← 0;
escreva(’Informe o primeiro número: ’);
leia(Primeiro);
escreva(’Informe o segundo número: ’);
leia(Segundo);
escreva(SomaValores(Primeiro, Segundo));
fim.

Implementação em C++

#include <iostream.h>

int SomaValores(int N1, int N2)


{
return (N1 + N2);
};

main()
{
int Primeiro;
int Segundo;
int Resultado;
char Tecla;
cout << “\n”;
cout << “Informe o primeiro número: “;
cin >> Primeiro;
cout << “Informe o segundo número: “;
cin >> Segundo;
cout << SomaValores(Primeiro, Segundo);
cout << “\n”;
cout << “Pressione uma tecla para continuar...”;
cin >> Tecla;
return 0;
}

Implementação em Pascal

Program Soma;
uses crt;
var

188
TÓPICO 3 | SUBALGORITMOS E ESCOPO DE IDENTIFICADORES

Primeiro : integer;
Segundo : integer;

function SomaValores(N1, N2 : integer): integer;


begin
SomaValores := N1 + N2;
end;

begin
clrscr;
write(‘Informe o primeiro número: ‘);
readln(Primeiro);
write(‘Informe o segundo número: ‘);
readln(Segundo);
writeln(SomaValores(Primeiro, Segundo));
write(‘Pressione qualquer tecla para continuar...’);
readkey;
end.

2 ESCOPO DE IDENTIFICADORES
O escopo de identificadores (constantes, tipos e variáveis) define a
abrangência de utilização dos mesmos. O escopo define onde um identificador
pode ser utilizado.

Os elementos declarados no cabeçalho podem ser utilizados em qualquer


ponto do algoritmo. Este tipo de declaração é conhecido como declaração global.

Exemplo(s):
Variáveis do tipo Global (Primeiro, Segundo e Resultado) podem ser vistas
por todo o algoritmo.

Exemplo 9: Subalgoritmo com uso de variáveis globais (Primeiro,


Segundo e Resultado), as quais podem ser vistas por todo o algoritmo.

Implementação em descrição narrativa

Algoritmo Calcula;
variáveis
Primeiro : inteiro;
Segundo : inteiro;
Resultado : inteiro;

subalgoritmo SomaValores(N1, N2 : inteiro);

189
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO

início
Resultado ← N1 + N2;
fim;

início
escreva(’Informe o primeiro número: ’);
leia(Primeiro);
escreva(’Informe o segundo número: ’);
leia(Segundo);
SomaValores(Primeiro, Segundo);
escreva(Resultado);
fim.

Implementação em C++

#include <iostream.h>

int Resultado;

void SomaValores(int N1, int N2)


{
Resultado = N1 + N2;
};

main()
{
int Primeiro;
int Segundo;
char Tecla;
cout << “\n”;
cout << “Informe o primeiro número: “;
cin >> Primeiro;
cout << “Informe o segundo número: “;
cin >> Segundo;
SomaValores(Primeiro, Segundo);
cout << Resultado;
cout << “\n”;
cout << “Pressione uma tecla para
continuar...”;
cin >> Tecla;
return 0;
}

Implementação em Pascal

190
TÓPICO 3 | SUBALGORITMOS E ESCOPO DE IDENTIFICADORES

Program Calcula;
uses crt;
var
Primeiro : integer;
Segundo : integer;
Resultado : integer;

procedure SomaValores(N1, N2 : integer);


begin
Resultado := N1 + N2;
end;

begin
clrscr;
write(‘Informe o primeiro número: ‘);
readln(Primeiro);
write(‘Informe o segundo número: ‘);
readln(Segundo);
SomaValores(Primeiro, Segundo);
writeln(Resultado);
write(‘Pressione qualquer tecla para continuar...’);
readkey;
end.

Já as declarações feitas no cabeçalho de um subalgoritmo podem ser


utilizadas apenas no corpo do subalgoritmo. Fora do subalgoritmo estas declarações
não são conhecidas. Este tipo de declaração é chamado local.

Exemplo(s):

Variáveis do tipo local (Soma) só podem ser vistas por quem a declarou.

Algoritmo Calcula;
variáveis
Primeiro : inteiro;
Segundo : inteiro;
Resultado : inteiro;

subalgoritmo SomaValores(N1, N2 : inteiro);


variáveis
inteiro : Soma;
início
Soma ← N1 + N2;
fim;

191
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO

início
escreva(’Informe o primeiro número: ’);
leia(Primeiro);
escreva(’Informe o segundo número: ’);
leia(Segundo);
escreva(SomaValores(Primeiro, Segundo));
fim.

Passagem de parâmetros

Um subalgoritmo, além de processar, pode receber e devolver dados.


O recebimento de dados é utilizado em situações em que é necessário fornecer
valores específicos para serem manipulados no subalgoritmo.

A passagem de parâmetros permite generalizar a solução através da


indicação de comportamentos específicos passados nos parâmetros.

Exemplo(s):

Exemplo 10: Neste algoritmo são passadas por parâmetro duas notas
lidas e o subalgoritmo carrega a variável global “Media” com a média do aluno.

Implementação em descrição narrativa

Algoritmo Media;
variáveis
inteiro : Nota1;
inteiro : Nota2;
real : Media;

subalgoritmo CalculaMedia(N1, N2 : inteiro);


início
Media ← (N1 + N2) / 2;
fim;

início
escreva(’Informe a primeira nota: ’);
leia(Nota1);
escreva(’Informe a segunda nota: ’);
leia(Nota2);
CalculaMedia(Nota1, Nota2);
escreva(Media);
fim.

Implementação em C++

192
TÓPICO 3 | SUBALGORITMOS E ESCOPO DE IDENTIFICADORES

#include <iostream.h>

float Media;

void CalculaMedia(int N1, int N2)


{
Media = (N1 + N2) / 2;
};

main()
{
int Nota1;
int Nota2;
char Tecla;
cout << “\n”;
cout << “Informe a primeira nota: “;
cin >> Nota1;
cout << “Informe a segunda nota: “;
cin >> Nota2;
CalculaMedia(Nota1, Nota2);
cout << Media;
cout << “\n”;
cout << “Pressione uma tecla para continuar...”;
cin >> Tecla;
return 0;
}

Implementação em Pascal

Program Media;
uses crt;
var
Nota1 : integer;
Nota2 : integer;
Media : real;

procedure CalculaMedia(N1, N2 : integer);


begin
Media := (N1 + N2) / 2;
end;

begin
clrscr;
write(‘Informe a primeira nota: ‘);
193
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO

readln(Nota1);
write(‘Informe a segunda nota: ‘);
readln(Nota2);
CalculaMedia(Nota1, Nota2);
writeln(Media:2:2);
write(‘Pressione qualquer tecla para continuar...’);
readkey;
end.

Na maioria das linguagens de programação a passagem de parâmetros


pode ser efetuada de duas formas: por cópia e por referência.

Passagem de parâmetros por cópia

Nesta forma de passagem de parâmetros, uma cópia do conteúdo da


variável informada no parâmetro é fornecida ao subalgoritmo. Após copiado, o
conteúdo pode ser manipulado no subalgoritmo sem que a variável de origem seja
afetada ou alterada.

Exemplo(s):

Exemplo 11: Algoritmo com passagem de parâmetros por cópia.

Implementação em descrição narrativa

Algoritmo Emprestimo;
variáveis
ValorInicial : real;
ValorFinal : real;
Taxa : inteiro;

subalgoritmo CalculaJuros(Valor : real; Tx :


inteiro): real;
início
CalculaJuros ← (Valor * Tx) / 100;
fim;

início
escreva(’Informe o valor a emprestar: ’);
leia(ValorInicial);
escreva(’Informe a taxa de juros: ’);
leia(Taxa);
escreva(‘O valor dos juros é ‘,
CalculaJuros(ValorInicial, Taxa));
ValorFinal ← ValorInicial +
CalculaJuros(ValorInicial, Taxa);
194
TÓPICO 3 | SUBALGORITMOS E ESCOPO DE IDENTIFICADORES

escreva(‘O valor a pagar é ‘, ValorFinal);


fim.

Implementação em C++

#include <iostream.h>

float CalculaJuros(float Valor, int Tx)


{
return (Valor * Tx) / 100;
};

main()
{
float ValorInicial;
float ValorFinal;
int Taxa;
char Tecla;
cout << “\n”;
cout << “Informe o valor a emprestar: “;
cin >> ValorInicial;
cout << “Informe a taxa de juros: “;
cin >> Taxa;
cout << “O valor dos juros é “;
cout << CalculaJuros(ValorInicial, Taxa);
ValorFinal = ValorInicial +
CalculaJuros(ValorInicial, Taxa);
cout << “O valor a pagar é “ << ValorFinal;
cout << “\n”;
cout << “Pressione uma tecla para continuar...”;
cin >> Tecla;
return 0;
}

Implementação em Pascal

Program Emprestimo;
uses crt;
var
ValorInicial : real;
ValorFinal : real;
Taxa : integer;

function CalculaJuros(Valor : real; Tx : integer):


real;

195
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO

begin
CalculaJuros := (Valor * Tx) / 100;
end;

begin
clrscr;
write(‘Informe o valor a emprestar: ‘);
readln(ValorInicial);
write(‘Informe a taxa de juros: ‘);
readln(Taxa);
writeln(‘O valor dos juros é ‘,
CalculaJuros(ValorInicial, Taxa):6:2);
ValorFinal := ValorInicial +
CalculaJuros(ValorInicial, Taxa);
write(‘O valor a pagar é ‘, ValorFinal:6:2);
write(‘Pressione qualquer tecla para continuar...’);
readkey;
end.

Passagem de parâmetros por referência

Na passagem de parâmetros por referência não é feita uma cópia do


conteúdo. Neste caso é passada uma referência à variável de origem e as alterações
realizadas refletem diretamente sobre esta variável.

Exemplo(s):

Exemplo 12: Algoritmo com passagem de parâmetros por referência.

Implementação em descrição narrativa

Algoritmo Juros;
variáveis
ValorInicial : real;
ValorFinal : real;
Taxa : inteiro;

subalgoritmo CalculaJuros(Valor : real;


Taxa : inteiro;
ValorFin : variaveis
real): real;
início
ValorFin <- Valor + (Valor * Taxa);
CalculaJuros <- Valor * Taxa;
fim;

196
TÓPICO 3 | SUBALGORITMOS E ESCOPO DE IDENTIFICADORES

início
escreva(’Informe o valor a emprestar: ’);
leia(ValorInicial);
escreva(’Informe a taxa de juros: ’);
leia(Taxa);
escreva(‘O valor dos juros é ‘,
CalculaJuros(ValorInicial, Taxa, ValorFinal));
escreva(‘O valor valor a pagar é ‘, ValorFinal);
fim.

Implementação em C++

#include <iostream.h>

float CalculaJuros(float Valor,


int Tx,
float& Retorno)
{
Retorno = Valor + ((Valor * Tx) / 100);
return (Valor * Tx) / 100;
};

main()
{
float ValorInicial;
float ValorFinal;
int Taxa;
char Tecla;
cout << “\n”;
cout << “Informe o valor a emprestar: “;
cin >> ValorInicial;
cout << “Informe a taxa de juros: “;
cin >> Taxa;
cout << “O valor dos juros é “;
cout << CalculaJuros(ValorInicial, Taxa, ValorFinal);
cout << “O valor a pagar é “ << ValorFinal;
cout << “\n”;
cout << “Pressione uma tecla para continuar...”;
cin >> Tecla;
return 0;
}

Implementação em Pascal

197
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO

Program Juros;
uses crt;
var
ValorInicial : real;
ValorFinal : real;
Taxa : integer;

function CalculaJuros(Valor : real;


Tx : integer;
var Retorno : real): real;
begin
Retorno := Valor + (Valor * Tx) / 100;
CalculaJuros := (Valor * Tx) / 100;
end;

begin
clrscr;
write(‘Informe o valor a emprestar: ‘);
readln(ValorInicial);
write(‘Informe a taxa de juros: ‘);
readln(Taxa);
writeln(‘O valor dos juros é : ‘,
CalculaJuros(ValorInicial, Taxa, ValorFinal):6:2);
write(‘O valor a pagar é : ‘, ValorFinal:6:2);
write(‘Pressione qualquer tecla para continuar...’);
readkey;
end.

198
TÓPICO 3 | SUBALGORITMOS E ESCOPO DE IDENTIFICADORES

A diferença fundamental entre estas formas de passagem de parâmetros é


que na primeira os dados de origem não são afetados e, na segunda, são os dados
de origem que estão sendo alterados.

É importante que se conheça as consequências do uso de ambos para


utilizar cada forma nas situações que forem mais adequadas, evitando eventuais
falhas na execução por problemas na lógica empregada.

199
RESUMO DO TÓPICO 3

Caro acadêmico, neste tópico você estudou que:

• Os subalgoritmos são estruturas de programação que possuem praticamente


todas as características e potencialidades de algoritmos. Eles permitem que seja
definido um novo tipo de dado, declaradas constantes, declaradas variáveis
e em algumas linguagens de programação, até que se definam subalgoritmos
deles.

• É importante observar que os tipos de dados, constantes e variáveis declarados


num subalgoritmo possuem escopo de utilização apenas no subalgoritmo. As
variáveis, por exemplo, são chamadas de variáveis locais. Isso significa que elas
possuem “vida” apenas dentro do subalgoritmo, não estando disponíveis para
uso por outras partes do algoritmo/programa.

• A passagem de parâmetros é um recurso bastante útil nos subalgoritmos. A


maioria das linguagens de programação permite que se utilize duas formas de
passagem de parâmetros: por cópia e por referência.

• Na passagem de parâmetros por cópia, os dados são copiados para o subalgoritmo


para o qual estão sendo passados e utilizados em seu escopo. Isso significa que
os dados passam para o subalgoritmo e podem ser alterados em seu interior,
sem que os dados a partir dos quais foram copiados sejam alterados.

• Na passagem de parâmetros por referência, o endereço da variável é levado


para dentro do subalgoritmo, de forma que quaisquer alterações no conteúdo
da variável são realizados diretamente nela, com base no seu endereço. Isso
significa que é necessária muita atenção ao utilizar passagem de parâmetros
por referência, pois ao final da execução do subalgoritmo as variáveis passadas
poderão ter os valores alterados.

200
AUTOATIVIDADE

Caro acadêmico, como forma de fixar o conteúdo estudado, realize a


autoatividade proposta a seguir:

1 Desenvolva os algoritmos propostos a seguir.

a) Elabore um algoritmo que leia 30 números inteiros e utilizando um


subalgoritmo que recebe como parâmetro se deve mostrar os números pares
ou ímpares. Ao final, mostre os números pares e depois os números ímpares.

b) Para manter uma conta corrente, um banco cobra R$ 29,90 mensais de taxa.
Construa um algoritmo que leia quantos correntistas o banco possui e mostre
quanto o banco arrecadará em um ano. O cálculo deverá ser realizado por
um subalgoritmo.

c) Em uma competição de agilidade são cadastrados 20 cães. Construa um


algoritmo que leia o nome, a raça e a pontuação do cão. Ao final, utilize um
subalgoritmo para mostrar os dados em ordem crescente de pontuação.

d) Faça um algoritmo que leia a descrição e o valor de cada item de uma lista de
material escolar. Em seguida, mostre a lista (descrição e valor) e o percentual
que cada item representa em relação ao valor total da compra. O percentual
deverá ser calculado por um subalgoritmo.

e) Em um cinema são apresentados cinco filmes. Construa um algoritmo que


leia o nome do filme, a categoria, o gênero e a bilheteria alcançada. Utilizando
um subalgoritmo, mostre qual foi o campeão de bilheteria e quanto em
percentual ele está à frente do último colocado.

201
202
UNIDADE 3
TÓPICO 4

TIPOS ESTRUTURADOS

1 INTRODUÇÃO
A partir do momento em que se passa a construir algoritmos mais
sofisticados, aumenta proporcionalmente a necessidade de elementos que deem
suporte a esta construção.

Utilizando apenas os tipos de dados primitivos, os algoritmos podem ser


bastante restritos e limitados. Felizmente, os tipos estruturados permitem romper as
barreiras desta limitação.

Tipos estruturados são tipos de dados construídos a partir de outros


tipos de dados. Os tipos de dados utilizados como base para a criação dos tipos
estruturados podem ser tipos primitivos ou tipos estruturados que já tenham sido
previamente definidos.

Exemplo(s):

Registro:
TCadastroProdutos = registro
Codigo : inteiro;
Descricao : caractere;
fim registro;

Vetor:
TNomes = Vetor[1..10] de caractere;

Matriz:
TMatriz = Vetor[1..3, 1..3] de inteiro;

Registros

Registros permitem a criação de tipos de dados heterogêneos. Os elementos


que compõem o registro são chamados de campos. Estes campos devem ter nomes
(identificadores) diferentes e podem ter o mesmo tipo de dado ou tipos de dados
diferentes, conforme a necessidade.

Em algumas linguagens de programação a construção do tipo registro


pode ser encontrada com o nome estrutura (struct).

203
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO

Exemplo(s):

Exemplo 13: O algoritmo a seguir contém um registro que armazena o


código, o nome e o endereço de uma pessoa.

Implementação em descrição narrativa

Algoritmo Registro;
tipo
TCadastroPessoas = registro
Codigo : inteiro;
Nome : caracter;
Endereco : caracter;
fim registro;
variaveis
CadastroPessoas : TCadastroPessoas;
início
escreva(’Informe o código: ’);
leia(CadastroPessoas.codigo);
escreva(’Informe o nome: ’);
leia(CadastroPessoas.nome);
escreva(’Informe o endereço: ’);
leia(CadastroPessoas.endereco);
fim.

Implementação em C++

#include <iostream.h>

main()
{
struct TcadastroPessoas
{
int Codigo;
char Nome[50];
char Endereco[50];
};
TCadastroPessoas CadastroPessoas;
char Tecla;
cout << “\n”;
cout << “Informe o código: “;
cin >> CadastroPessoas.Codigo;
cout << “Informe o nome: “;
cin >> CadastroPessoas.Nome;
cout << “Informe o endereço: “;

204
TÓPICO 4 | TIPOS ESTRUTURADOS

cin >> CadastroPessoas.Endereco;


cout << “\n”;
cout << “Pressione uma tecla para
continuar...”;
cin >> Tecla;
return 0;
}

Implementação em Pascal

Program Registro;
uses crt;
type
TCadastroPessoas = Record
Codigo : integer;
Nome : string;
Endereco : string;
end;
var
CadastroPessoas : TCadastroPessoas;
begin
clrscr;
write(‘Informe o código: ‘);
readln(CadastroPessoas.Codigo);
write(‘Informe o nome: ‘);
readln(CadastroPessoas.Nome);
write(‘Informe o endereço: ‘);
readln(CadastroPessoas.Endereco);
write(‘Pressione qualquer tecla para
continuar...’);
readkey;
end.

Vetores

Vetor é o nome atribuído a um tipo estruturado que armazena um conjunto


unidimensional de elementos homogêneos. Os vetores são conjuntos homogêneos,
pois todos os elementos que o compõem são do mesmo tipo.

Vetor simples

Um vetor simples é composto por elementos com apenas um campo. Este


conjunto poderá ter vários elementos e em cada elemento poderá ser armazenado
apenas um valor.

205
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO

Exemplo(s):

Exemplo 14: O algoritmo a seguir implementa um vetor com capacidade


para armazenar 10 números do tipo inteiro.

Implementação em descrição narrativa

Algoritmo VetorSimples;
tipo
TNumeros = Vetor[1..10] de inteiro;
variáveis
VetorNumeros : TNumeros;
Contador : inteiro;
início
para Contador de 1 até 10 faça
início para
escreva(’Informe um número: ’);
leia(VetorNumeros[Contador]);
fim para;
fim.

Implementação em C++

#include <iostream.h>

main()
{
int VetorNumeros[10];
int Contador;
char Tecla;
cout << “\n”;
for (Contador = 0; Contador < 10; Contador++)
{
cout << “\n”;
cout << “Informe um número: “;
cin >> VetorNumeros[Contador];
}
cout << “\n”;
cout << “Pressione uma tecla para continuar...”;
cin >> Tecla;
return 0;
}

Implementação em Pascal

206
TÓPICO 4 | TIPOS ESTRUTURADOS

Program VetorSimples;
uses crt;
type
TNumeros = Array[1..10] of integer;
var
VetorNumeros : TNumeros;
Contador : integer;
begin
clrscr;
for Contador := 1 to 10 do
begin
write(‘Informe um número: ‘);
readln(VetorNUmeros[Contador]);
end;
write(‘Pressione qualquer tecla para continuar...’);
readkey;
end.

Vetor estruturado

Um vetor estruturado é composto por elementos cujo tipo de dado utilizado


é derivado de outros tipos de dados. Um vetor estruturado também é conhecido
como um vetor de registros.

Exemplo(s):

Exemplo 15: Este algoritmo armazena o código e a idade de 10 alunos em


um vetor homogêneo estruturado com registro de apenas um tipo de dado.

Implementação em descrição narrativa

Algoritmo VetorEstruturadoUm;
tipo
TCadastroAluno = registro
Codigo : inteiro;
Idade : inteiro;
Fim registro;
TAlunos = Vetor[1..10] de TCadastroAluno;
variáveis
VetCadAlu : TAlunos;
Contador : inteiro;
início
para Contador de 1 até 10 faça
início para
escreva(’Informe o código do aluno: ’);

207
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO

leia(VetCadAlu[Contador].Codigo);
escreva(’Informe a idade do aluno: ’);
leia(VetCadAlu[Contador].Idade);
fim para;
fim.

Implementação em C++

#include <iostream.h>

main()
{
struct TcadastroAluno
{
int Codigo;
int Idade;
};
TCadastroAluno VetCadAlu[10];
int Contador;
char Tecla;
cout << “\n”;
for (Contador = 0; Contador < 10; Contador++)
{
cout << “\n”;
cout << “Informe o código do aluno: “;
cin >> VetCadAlu[Contador].Codigo;
cout << “Informe a idade do aluno: “;
cin >> VetCadAlu[Contador].Idade;
}
cout << “\n”;
cout << “Pressione uma tecla para
continuar...”;
cin >> Tecla;
return 0;
}

Implementação em Pascal

Program VetorEstruturadoUm;
uses crt;
type
TCadastroAluno = Record
Codigo : integer;
Idade : integer;

208
TÓPICO 4 | TIPOS ESTRUTURADOS

end;
TAlunos = Array[1..10] of TCadastroAluno;
var
VetCadAlu : TAlunos;
Contador : integer;
begin
clrscr;
for Contador := 1 to 10 do
begin
write(‘Informe o código do aluno: ‘);
readln(VetCadAlu[Contador].Codigo);
write(‘Informe a idade do aluno: ‘);
readln(VetCadAlu[Contador].Idade);
end;
write(‘Pressione qualquer tecla para
continuar...’);
readkey;
end.

É importante observar que para criar um vetor homogêneo estruturado


deve-se, primeiro, criar um registro com os dados necessários. O passo seguinte
é criar um vetor que usará o tipo de dado criado no registro e então declarar uma
variável do tipo do vetor. O registro pode ter um ou vários tipos de dados.

Matrizes

Matriz é o nome atribuído a um tipo estruturado que armazena um conjunto


bidimensional de elementos homogêneos. As matrizes são conjuntos homogêneos,
pois todos os elementos que a compõem são do mesmo tipo.

Nas matrizes, além do limite inferior e superior do eixo X, há também o


limite inferior e superior do eixo Y.

Assim como nos vetores, as matrizes também podem ser compostas por
elementos baseados em tipos de dados primitivos ou estruturados.

Matriz simples

Uma matriz simples é composta por elementos com apenas um campo.


Este conjunto poderá ter vários elementos em cada dimensão e em cada elemento
poderá ser armazenado apenas um valor.

Exemplo(s):

Exemplo 16: Este algoritmo tem capacidade de armazenar nove números do


tipo inteiro.

209
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO

Implementação em descrição narrativa

Algoritmo MatrizSimples;
tipo
TMatriz = Vetor[1..3, 1..3] de inteiro;
variáveis
Matriz : TMatriz;
Linha : inteiro;
Coluna : inteiro;
início
para Linha de 1 até 3 faça
início para
para Coluna de 1 até 3 faça
início para
escreva(’Informe um número para
a ’, Coluna, ’ª coluna da ’,
Linha, ’ª Linha: ’);
leia(Matriz[Linha, Coluna]);
fim para;
fim para;
fim.

Implementação em C++

#include <iostream.h>

main()
{
int Matriz[3][3];
int Linha;
int Coluna;
char Tecla;
cout << “\n”;
for (Linha = 0; Linha < 3; Linha++)
{
for (Coluna = 0; Coluna < 3; Coluna++)
{
cout << “\n”;
cout << “Informe um número para a:
“;
cout << (Coluna + 1) << һ coluna da
“;
cout << (Linha + 1) << “ª linha: “;

210
TÓPICO 4 | TIPOS ESTRUTURADOS

cin >> Matriz[Linha][Coluna];


}
}
cout << “\n”;
cout << “Pressione uma tecla para
continuar...”;
cin >> Tecla;
return 0;
}

Implementação em Pascal

Program MatrizSimples;
uses crt;
type
TMatriz = Array[1..3, 1..3] of integer;
var
Matriz : TMatriz;
Linha : integer;
Coluna : integer;
begin
clrscr;
for Linha := 1 to 3 do
begin
for Coluna := 1 to 3 do
begin
write(‘Informe um número para a : ‘,
Coluna, ‘ª Coluna da ‘, Linha, ‘ª Linha: ‘);
readln(Matriz[Linha, Coluna]);
end;
end;
write(‘Pressione qualquer tecla para continuar...’);
readkey;
end.

Neste exemplo a matriz de 3 X 3 com tipo de dado inteiro foi carregada


com números na seguinte ordem:
• primeira coluna da primeira linha;
• segunda coluna da primeira linha;
• terceira coluna da primeira linha;
• primeira coluna da segunda linha;
• segunda coluna da segunda linha;
• terceira coluna da segunda linha;
• primeira coluna da terceira linha;
• segunda coluna da terceira linha; e
• terceira coluna da terceira linha.
211
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO

Matriz estruturada

Uma matriz estruturada é composta por elementos cujo tipo de dado


utilizado é derivado de outros tipos de dados. Uma matriz estruturada também é
conhecida como uma matriz de registros.

Exemplo(s):

Exemplo 17: Este algoritmo armazena os dados de 25 alunos em uma matriz


de registros onde cada célula da matriz recebe o código e a idade de um aluno.

Implementação em descrição narrativa

Algoritmo MatrizEstruturadaUm;
constantes
MaxLin = 5;
MaxCol = 5;
tipo
TAlu = registro
Codigo : inteiro;
Idade : inteiro;
fim registro;
TMatAlu = Vetor[1..MaxLin, 1..MaxCol] de
TAlu;
variaveis
Matriz : TMatAlu;
Linha : inteiro;
Coluna : inteiro;
início
para Linha de 1 até MaxLin faça
início para
para Coluna de 1 até MaxCol faça
início para
escreva(’Informe o código do aluno
da ’, Coluna, ’ª coluna da ’,
Linha, ’ª Linha: ’);
leia(Matriz[Linha, Coluna].Codigo);
escreva(’Informe a idade do aluno
da ’, Coluna, ’ª coluna da ’,
Linha, ’ª Linha: ’);
leia(Matriz[Linha, Coluna].Idade);
fim para;
fim para;
fim.

212
TÓPICO 4 | TIPOS ESTRUTURADOS

Implementação em C++

#include <iostream.h>

main()
{
const int MaxLin = 5;
const int MaxCol = 5;
struct TAlu
{
int Codigo;
int Idade;
};
TAlu Matriz[MaxLin][MaxCol];
int Linha;
int Coluna;
char Tecla;
cout << “\n”;
for (Linha = 0; Linha < MaxLin; Linha++)
{
for (Coluna = 0; Coluna < MaxCol; Coluna++)
{
cout << “\n”;
cout << “Informe o código do aluno da: “;
cout << (Coluna + 1) << “ª coluna da “;
cout << (Linha + 1) << “ª linha: “;
cin >> Matriz[Linha][Coluna].Codigo;
cout << “Informe a idade do aluno da: “;
cout << (Coluna + 1) << “ª coluna da “;
cout << (Linha + 1) << “ª linha: “;
cin >> Matriz[Linha][Coluna].Idade;
}
}
cout << “\n”;
cout << “Pressione uma tecla para
continuar...”;
cin >> Tecla;
return 0;
}

Implementação em Pascal

Program MatrizEstruturadaUm;

213
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO

uses crt;
const
MaxLin = 5;
MaxCol = 5;
type
TAlu = Record
Codigo : integer;
Idade : integer;
end;
TMatAlu = Array[1..MaxLin, 1..MaxCol] of TAlu;
var
Matriz : TMatAlu;
Linha : integer;
Coluna : integer;
begin
clrscr;
for Linha := 1 to MaxLin do
begin
for Coluna := 1 to MaxCol do
begin
write(‘Informe o código do aluno da : ‘,
Coluna, ‘ª Coluna da ‘, Linha, ‘ª
Linha:‘);
readln(Matriz[Linha, Coluna].Codigo);
write(‘Informe a idade do aluno da : ‘,
Coluna, ‘ª Coluna da ‘, Linha, ‘ª Linha:‘);
readln(Matriz[Linha, Coluna].Idade);
end;
end;
write(‘Pressione qualquer tecla para continuar...’);
readkey;
end.

Exemplo 18: Neste algoritmo é possível armazenar os dados de 50 pessoas


em uma matriz de registros onde cada célula da matriz recebe o código, o nome, o
endereço e a renda de uma pessoa.

Implementação em descrição narrativa

Algoritmo MatrizEstruturadaDois;
constantes
MaxLin = 10;
MaxCol = 5;
tipo
TCadPes = registro

214
TÓPICO 4 | TIPOS ESTRUTURADOS

Codigo : inteiro;
Nome : caracter;
Endereco : caracter;
Renda : real;
fim registro;
TCad = Vetor[1..MaxLin, 1..MaxCol] de TCadPes;
variáveis
{Declaração da variável do tipo TCad}
Cad : TCad;
Linha : inteiro;
Coluna : inteiro;
início
para Linha de 1 até MaxLin faça
início para
para Coluna de 1 até MaxCol faça
início para
escreva(’Informe o codigo da pessoa
da ’, Coluna, ’ª coluna da ’,
Linha, ’ª Linha: ’);
leia(Cad[Linha, Coluna].Codigo);
escreva(’Informe o nome da pessoa
da ’, Coluna, ’ª coluna da ’,
Linha, ’ª Linha: ’);
leia(Cad[Linha, Coluna].Nome);
escreva(’Informe o endereço da
pessoa da ’, Coluna, ’ª coluna da ’,
Linha, ’ª Linha: ’);
leia(Cad[Linha, Coluna].Endereco);
escreva(’Informe a renda mensal da
pessoa da ’, Coluna, ’ª coluna da ’,
Linha, ’ª Linha: ’);
leia(Cad[Linha, Coluna].Renda);
fim para;
fim para;
fim.

Implementação em C++

#include <iostream.h>

main()
{
const int MaxLin = 10;
const int MaxCol = 5;
struct TCadPes

215
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO

{
int Codigo;
char Nome[50];
char Endereco[50];
float Renda;
};
TCadPes Cad[MaxLin][MaxCol];
int Linha;
int Coluna;
char Tecla;
cout << “\n”;
for (Linha = 0; Linha < MaxLin; Linha++)
{
for (Coluna = 0; Coluna < MaxCol; Coluna++)
{
cout << “\n”;
cout << “Informe o código da pessoa da “;
cout << (Coluna + 1) << “ª coluna da “;
cout << (Linha + 1) << “ª linha: “;
cin >> Cad[Linha][Coluna].Codigo;
cout << “Informe o nome da pessoa da “;
cout << (Coluna + 1) << “ª coluna da “
cout << (Linha + 1) << “ª linha: “;
cin >> Cad[Linha][Coluna].Nome;
cout << “Informe o endereço da pessoa da
“;
cout << (Coluna + 1) << “ª coluna da “;
cout << (Linha + 1) << “ª linha: “;
cin >> Cad[Linha][Coluna].Endereco;
cout << “Renda mensal da pessoa da “;
cout << (Coluna + 1) << “ª coluna da “;
cout << (Linha + 1) << “ª linha: “;
cin >> Cad[Linha][Coluna].Renda;
}
}
cout << “\n”;
cout << “Pressione uma tecla para continuar...”;
cin >> Tecla;
return 0;
}

Implementação em Pascal

Program MatrizEstruturadaDois;
uses crt;

216
TÓPICO 4 | TIPOS ESTRUTURADOS

const
MaxLin = 10;
MaxCol = 5;
type
TCadPes = Record
Codigo : integer;
Nome : string;
Endereco : string;
Renda : real;
end;
TCad = Array[1..MaxLin, 1..MaxCol] of TCadPes;
var
Cad : TCad;
Linha : integer;
Coluna : integer;
begin
clrscr;
for Linha := 1 to MaxLin do
begin
for Coluna := 1 to MaxCol do
begin
write(‘Informe o código da pessoa da ‘,
Coluna, ‘ª Coluna da ‘, Linha, ‘ª
Linha:‘);
readln(Cad[Linha, Coluna].Codigo);
write(‘Informe o nome da pessoa da ‘,
Coluna, ‘ª Coluna da ‘, Linha, ‘ª
Linha:‘);
readln(Cad[Linha, Coluna].Nome);
write(‘Informe o endereço da pessoa da
‘,
Coluna, ‘ª Coluna da ‘, Linha, ‘ª
Linha:‘);
readln(Cad[Linha, Coluna].Endereco);
write(‘Renda mensal da pessoa da ‘,
Coluna, ‘ª Coluna da ‘, Linha, ‘ª
Linha:‘);
readln(Cad[Linha, Coluna].Renda);
end;
end;
write(‘Pressione qualquer tecla para
continuar...’);
readkey;
end.

217
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO

A leitura complementar desta unidade do Caderno de Estudos é um texto


do livro de André Koscianski e Michel dos Santos Soares que trata de alguns
aspectos relacionados aos fatores de qualidade na programação de computadores.
Observe que não basta apenas saber utilizar adequadamente as estruturas de
programação estudadas, é necessário utilizá-las de forma adequada no contexto
em que se está inserido. Boa leitura!

LEITURA COMPLEMENTAR

PROGRAMAÇÃO: fatores de qualidade

A implementação de um software não é consequência apenas de um


projeto de arquitetura. As atividades de concepção e implementação devem ser
planejadas desde a escolha de ferramentas e técnicas até o preparo de cronogramas
e administração de mudanças.

O sucesso de um projeto de software depende da realização correta de


todas as várias atividades que compõem o ciclo de vida. A programação deve ser a
continuação natural da análise e projeto e não a simples confecção de código para
implementar o sistema.

Muitos programadores praticam essa atividade de maneira um tanto


intuitiva, segundo uma compreensão geral “do que o software deva fazer”. Embora
essa forma de trabalhar aparentemente se enquadre em projetos atrasados e com
requisitos mal gerenciados, dificilmente garante a qualidade dos resultados e
pode ser totalmente inadequada em ambientes organizados, como empresas que
implementam o CMMI.

Durante o desenvolvimento de software existem inúmeras trocas de


informação entre as pessoas. As falhas de comunicação são um problema recorrente
e, por esse motivo, são mencionadas em diversos pontos deste livro.

Os desentendimentos entre as pessoas possuem algo em comum com um


conceito usado em informática, a chamada distância semântica ou gap semântico.
Uma busca em alguns artigos revela diversas definições, um pouco diferentes
entre si:

• A falta de coincidência entre a informação e sua interpretação;


• A distância entre o conhecimento sobre o domínio de aplicação e o formalismo
para representá-la;
• A diferença entre uma representação computacional e o mundo real.

O conceito é usado normalmente para se referir à diferença de significado


entre dois conceitos que, na verdade, deveriam representar exatamente a mesma
coisa. Um exemplo simples permitirá uma discussão inicial das consequências que
podem resultar dessa diferença.
218
TÓPICO 4 | TIPOS ESTRUTURADOS

As três representações a seguir são aparentemente idênticas:

Matemática Linguagem C Linguagem C++


y x = y / z; x = y / z;
x = -
z

A semelhança é só visual, ou seja, não é válida para o significado dos textos.


A representação matemática de uma divisão guarda seu sentido tradicional. Já nos
dois outros casos – linguagens de programação –, para ter certeza do que cada
trecho faz é preciso começar examinando a declaração das variáveis.

O código em linguagem C continuará perfeitamente válido se utilizarmos


qualquer uma destas declarações:

int x, y, z;
char x, y, z;
void *x; char y; int z;

Pode parecer estranho dividir um caractere por outro ou, ainda, dividir
um caractere por um número e atribuir o resultado a um ponteiro. Embora o
compilador possa emitir avisos (warnings) ao detectar as misturas de tipos de
dados, o código é compilado.

Em linguagem C++, a situação é mais confusa. Fazendo sobrecarga do


operador divisão, torna-se possível aceitar virtualmente qualquer tipo de dado
e realizar qualquer operação com as variáveis. Por exemplo, o código a seguir é
perfeitamente legal em C++.

int *C::operator / (C a) {
return (int*)(n + a.n);
}
...
int *x; C y, z;
x = y / z;

As variáveis y e z são do tipo C e o operador de divisão foi redefinido para


somar dois atributos. É possível que o programador desse código tivesse seguido
estritamente as especificações que lhe foram apresentadas. Também é possível que tais
especificações sigam exatamente o que foi prescrito pelo cliente. Entretanto, o texto-
fonte contraria o senso comum e trará dúvidas a alguém responsável por uma futura
manutenção. Além disso, um código tão confuso dificilmente não conterá defeitos.

FONTE: KOSCIANSKI, André; SOARES, Michel dos Santos. Qualidade de software: aprenda as
metodologias e técnicas mais modernas para o desenvolvimento de software. p. 277-279. São
Paulo: Novatec, 2006.

219
RESUMO DO TÓPICO 4
Caro acadêmico, neste tópico você estudou que:

• Os tipos estruturados ou estruturas de dados estáticas são arranjos de dados


que permitem o armazenamento e navegação no conjunto de dados de modo
simples e rápido.

• Os registros (record nas linguagens like Pascal ou struct nas linguagens like
C) são estruturas nas quais são definidos conjuntos de dados que podem ser
utilizados em vetores, matrizes ou mesmo em listas dinamicamente alocadas na
memória. Este conjunto de dados pode conter diferentes tipos de dados, pois o
registro é uma nova definição de tipo de dado.

• Vetores são estruturas homogêneas que permitem a rápida navegação pelos


elementos. Os vetores com os quais lidamos neste Caderno de Estudos
são estruturas estáticas, ou seja, o seu tamanho deve ser definido em tempo
de programação e a alocação é feita uma única vez na carga do programa.
Vetores são especialmente úteis para tratamento de dados intermediários cuja
quantidade seja pequena e previamente conhecida. Vetores estáticos não são
muito aconselháveis em situações em que não se conhece a quantidade de
elementos ou esta quantidade seja grande.

• Matrizes são estruturas homogêneas cuja diferença dos vetores é a possibilidade


de definir quantidade de linhas superior a uma. Os vetores permitem a definição
da quantidade de colunas, porém a quantidade de linhas é sempre uma. As
matrizes são especialmente úteis em situações em que é necessário armazenar e
navegar em um conjunto de dados bidimensional.

220
AUTOATIVIDADE

Caro acadêmico, como forma de fixar o conteúdo estudado, realize a


autoatividade proposta a seguir:

1 Elabore os algoritmos propostos a seguir.

a) Elabore um algoritmo que implemente uma matriz de 15 X 12 onde as linhas


são os produtos em estoque e as colunas são as quantidades incluídas em
cada mês do ano. Ao terminar a inclusão dos dados, liste a matriz.

b) Faça um algoritmo que leia uma matriz de 5 X 5 e multiplique cada um dos


seus elementos por um número qualquer. Carregue uma segunda matriz
com os valores multiplicados. Ao final, liste a matriz original e a matriz com
os números multiplicados.

c) Construa um algoritmo que leia duas matrizes de 3 X 3 e ao final mostre as


matrizes e uma terceira matriz com a soma das duas.

d) Uma empresa de turismo solicitou uma pesquisa que coletou dados sobre
o local onde as pessoas gostam de estar nos dias de feriado. A pesquisa
disponibilizou as opções: em casa, na praia ou no campo e dividiu em faixas
de idade: até 15 anos, de 16 a 25, de 26 a 40 e acima de 40 anos. Faça um
algoritmo que armazene os dados solicitados em uma matriz de 3 X 4 na qual
as colunas são as opções e as linhas são as faixas de idade. Ao final, mostre o
total de pessoas pesquisadas.

e) Para controlar a qualidade da água de uma fonte são retiradas três amostras
de manhã e três amostras à tarde. Uma análise considera o grau de turbidez,
que varia de 0 a 5 pontos. Construa um algoritmo com uma matriz de 2 X 3 que
armazene estes dados e ao final mostre em qual período a água se encontrava
melhor, qual o grau de turbidez, em qual período se encontrava pior e o grau
de turbidez.

221
222
REFERÊNCIAS
ALMEIDA, Marcus Garcia de. Fundamentos de Informática. Rio de Janeiro:
Brasport, 2002.

APPLE. Apple Inc. Disponível em: <http://www.apple.com>. Acesso em: 14 nov.


2011.

BASILI, Victor R.; CALDIERA, Gianluigi; ROMBACH, H. Dieter. Goal


Question Metric Paradigm. In: MARCINIAK, John J. Encyclopedia of Software
Engineering. John Wiley & Sons, 1994.

BASILI, Victor; HEIDRICH, Jens; LINDVALL, Mikael; MÜNCH, Jürgen;


REGARDIE, Myrna; ROMBACH, Dieter; SEAMAN, Carolyn; TRENDOWICZ,
Adam. Bridging the Gap between Business Strategy and Software Development.
ICIS 2007 Proceedings. Dusseldorf. Germany. April 2007.

BASILI, Victor R.; WEISS, David M. A methodology for collectin valid software
engineering data. IEEE Transactions on Software Engineering. v. SE-10, n. 6, 1984.

BOYER, Carl B. História da Matemática. São Paulo: Edgard Blücher, 1996.

BRIAND, Lionel C.; DIFFERDING, Christiane M.; ROMBACH, H. Dieter.


Practical guidelines for measurement-based process improvement. Software
Process Improvement and Practice. v. 2, 1997.

BROOKS, Frederick Phillips. O mítico homem-mês: ensaios sobre engenharia de


software. Rio de Janeiro: Elsevier, 2009.

CASACURTA, Alexandre et al. Computação gráfica: introdução, Rio Grande


do Sul, set. 1998. Disponível em: <http://www.inf.unisinos.br/~osorio/CG-Doc/
cg.pdf>. Acesso em: 15 dez. 2002.

COMER, Douglas E. Redes de computadores e Internet. Porto Alegre: Bookman,


2001.

COMPUTADORES E INFORMATICA. Disponível em: <http://www.


computadoreseinformatica.com.br>. Acesso em: 19 nov. 2011.

COULOURIS, George. Sistemas Distribuídos: conceitos e projeto. Porto Alegre:


Bookman, 2007.

CROSBY, P. B. Quality is free: the art of making quality certain. New York:
McGraw-Hill, 1979.

223
DeMARCO, Tom. Controle de projetos de software: gerenciamento, avaliação,
estimativa. Rio de Janeiro: Campus, 1991.

DEMING, W. E. Out of the crisis: quality, productivity and competitive position.


Cambridge University Press, 1988.

FEIGENBAUM, A. V. Total quality control. Singapore: McGraw-Hill, 1983.

FENTON, N.; LITTLEWOOD, B. Software Reliability and Metrics. Elsevier


Applied Science. London, 1991.

FENTON, Norman E.; PFLEEGER, Shari Lawrence. Software Metrics: a rigorous


and practical approach. 2. ed. Boston: PWS, 1997.

FLUCKIGER, François. Understanding Networked Multimedia: Applications


and Technology. Prentice Hall International, 1995.

FOROUZAN, Behrouz; MOSHARRAF, Firouz. Fundamentos da Ciência da


Computação. São Paulo: Cengage Learning, 2011.

GARCIA-MOLINA, Hector. Implementação de sistemas de bancos de dados.


Rio de Janeiro: Campus, 2001.

GROB, B. Televisão Básica. Rio de Janeiro: Guanabara Dois, 1979.

HODGES, Andrew. The Alan Turing Home Page. Disponível em: <http://www.
turing.org.uk>. Acesso em: 10 dez. 2011.

HP. Disponível em: <http://www.hp.com>. Acesso em: 11 dez. 2011.

IBM. Um pouco de história. Disponível em: <www.ibm.com>. Acesso em: 13 fev.


2007.

IBM. The Harvard Mark I. Disponível em: <www.ibm.com>. Acesso em: 10 dez.
2011.

ISHIKAWA, K. What is total quality control?: the Japanase way. Prentice-Hall,


1985.

ISO/IEC – International Organization for Standardization and International


Electrotechnical Commission. ISO/IEC 15939 Software engineering – Software
measurement process. 2002.

JURAN, J. M. Juran´s Quality Control Handbook. New York: McGraw-Hill,


1988.

KETTELERIJ, Richard. Designing a Measurement Programme for Software


Development Projects. Master’s Thesis. Faculty of Science. University of
Amsterdam. The Netherlands, 2006.
224
KISHIMOTO, Tizuko Morchida (Org.). Jogo, brinquedo, brincadeira e a
educação. 3 ed. São Paulo: Cortez, 1999.

KOSCIANSKI, André; SOARES, Michel dos Santos. Qualidade de software:


aprenda as metodologias e técnicas mais modernas para o desenvolvimento de
software. São Paulo: Novatec, 2006.

KUROSE, James S. Redes de Computadores e a Internet: uma nova abordagem.


São Paulo: Addison Wesley, 2003.

MARINHO. Elton. Novas Tecnologias de Informação e Comunicação. Disponível


em: <www.ebah.com.br>. Acesso em: 17 nov. 2011.

McLAUGHLIN, John; WEIMERS, Leigh; WINSLOW, Ward. Silicon Valley: 110


Years Renaissance. Palo Alto: Santa Clara Valley Historical Association, 2008.

MICROSOFT. Disponível em: <http://www.microsoft.com>. Acesso em: 11 dez.


2011.

MURCIA, J. A. M. et al. Aprendizagem através do jogo. Porto Alegre: Artmed,


2005.

PAPERT. Daily Papert. Disponível em: <http://dailypapert.com>. Acesso em: 10


dez. 2011.

PETERS, James F.; PEDRYCS, Witold. Engenharia de Software. Rio de Janeiro:


Campus, 2001.

PFLEEGER, Shari Lawrence. Engenharia de Software: teoria e prática. 2 ed. São


Paulo: Prentice Hall, 2004.
PRESSMAN, Roger S. Engenharia de Software. São Paulo: Makron Books, 1995.

PSM – Practical Software and Systems Measurement. Practical Software and


Systems Measurement: a foundation for objective project management, Version
4.0c. 2003. Disponível em: <http://www.psmsc.com>. Acesso em: 25 jan. 2008.

ROCHA, Luiz Augusto de Giordano. Jogos de empresa: desenvolvimento de um


modelo para aplicação no ensino de custos industriais. 1997. 56f. Dissertação
(Mestrado em Engenharia de Produção) – Programa de Pós-Graduação em
Engenharia de Produção, Universidade Federal de Santa Catarina, Florianópolis,
1997.

ROCKENBACH, Renato. FWMetric: framework para métricas. 2003. 98 f.


Dissertação (Mestrado em Ciência da Computação) – Programa de Pós-
Graduação em Ciência da Computação, Universidade Federal de Santa Catarina,
Florianópolis, 2003.

225
SC. University of South Carolina. Disponível em: <http://www.sc.edu>. Acesso
em: 17 nov. 2011.

SENGER, Hermes. Redes Locais, Metropolitanas e de Longa Distância.


Disponível em: <www-usr.inf.ufsm.br/~candia/aulas/espec/Aula_2_LAN_MAN_
WAN.pdf>. Acesso em: 29 jan. 2008.

SHEWHART, Walter Andrew. Economic control of quality of manufactured


product. New York: D. Van Nostrand Company, 1931.

SOARES, Luiz Fernando Gomes. Redes de computadores: das LANs, MANs e


WANs às
redes ATM. Rio de Janeiro: Campus, 1995.

SOLINGEN, Rini van; BERGHOUT, Egon. The Goal/Question/Metric Method:


a practical guide for quality improvement of software development. London:
McGraw-Hill, 1999.

SOMMERVILLE, Ian. Engenharia de Software. São Paulo: Pearson Addison


Wesley, 2003.

STRATHERN, Paul. Turing e o computador em 90 minutos. Rio de Janeiro: Jorge


Zahar Ed., 2000.

TAM. The Apple Museum. Disponível em: <http://www.theapplemuseum.com>.


Acesso em: 10 dez. 2011.

TANENBAUM, Andrew S. Redes de Computadores. Rio de Janeiro: Campus,


1997.

VIDAS FAMOSAS. Tim John Berners-Lee, el padre de la Web. Disponível em:


<http://vidasfamosas.com>. Acesso em: 10 dez. 2011.

UFRGS. Universidade Federal do Rio Grande do Sul. Disponível em: <http://


www.ufrgs.br>. Acesso em: 16 nov. 2011.

WILLRICH, Roberto. Apostila: sistemas multimídia distribuídos. Curso de


Mestrado em Ciências da Computação, Florianópolis (SC), UFSC, 2002.

WOSNIAK, Steve. iWoz: a verdadeira história da Apple segundo seu


cofundador. São Paulo: Évora, 2011.

226
ANOTAÇÕES

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________

227
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
228
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________

229
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________

230
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
231
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
232

Você também pode gostar