Escolar Documentos
Profissional Documentos
Cultura Documentos
Fundamentos Da Computação
Fundamentos Da Computação
Computação
Prof. Djone Kochanski
2012
Copyright © UNIASSELVI 2012
Elaboração:
Prof. Djone Kochanski
004
K766f Kochanski, Djone
Fundamentos da computação / Djone Kochanski. Indaial : Uniasselvi, 2012.
232 p. : il
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.
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.
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.
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.
IV
V
VI
Sumário
UNIDADE 1 – HISTÓRICO DA COMPUTAÇÃO ........................................................................... 1
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
VIII
UNIDADE 3 – LÓGICA DE PROGRAMAÇÃO ................................................................................ 151
IX
X
UNIDADE 1
HISTÓRICO DA COMPUTAÇÃO
OBJETIVOS DE APRENDIZAGEM
A partir desta unidade, você será capaz de:
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.
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.
UNI
3
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO
UNI
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.
I V X L C D M
FONTE: O autor
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.
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.
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
7
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO
8
RESUMO DO TÓPICO 1
Caro(a) acadêmico(a), nesse capítulo você estudou que:
9
AUTOATIVIDADE
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.
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
12
TÓPICO 2 | OS PRIMEIROS PROJETOS
FIGURA 8 – PASCALINA
FONTE: O autor.
13
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO
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.
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.
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.
15
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO
FONTE: O autor.
16
TÓPICO 2 | OS PRIMEIROS PROJETOS
FONTE: O autor.
17
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO
UNI
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
FIGURA 18 – ARITHMOMETER
FONTE: O autor.
FIGURA 19 – TELÉGRAFO
20
TÓPICO 2 | OS PRIMEIROS PROJETOS
FONTE: O autor.
21
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO
FONTE: O autor.
22
TÓPICO 2 | OS PRIMEIROS PROJETOS
UNI
Se você quiser saber mais sobre a IBM e sua história, consulte: <http://www.ibm.com>.
23
RESUMO DO TÓPICO 2
Caro(a) acadêmico(a), nesse tópico você estudou que:
24
AUTOATIVIDADE
25
26
UNIDADE 1
TÓPICO 3
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.
27
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO
28
TÓPICO 3 | EVOLUÇÕES DO INÍCIO DO SÉCULO XX
FONTE: O autor.
29
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO
FIGURA 26 – ABC
FONTE: O autor.
30
TÓPICO 3 | EVOLUÇÕES DO INÍCIO DO SÉCULO XX
31
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO
32
TÓPICO 3 | EVOLUÇÕES DO INÍCIO DO SÉCULO XX
FIGURA 30 – ACE
33
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO
FIGURA 32 – ENIGMA
FONTE: O autor.
34
TÓPICO 3 | EVOLUÇÕES DO INÍCIO DO SÉCULO XX
FONTE: O autor
35
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO
36
TÓPICO 3 | EVOLUÇÕES DO INÍCIO DO SÉCULO XX
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
38
TÓPICO 3 | EVOLUÇÕES DO INÍCIO DO SÉCULO XX
39
RESUMO DO TÓPICO 3
Caro(a) acadêmico(a), nesse capítulo você estudou que:
40
AUTOATIVIDADE
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.
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).
43
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO
FIGURA 39 – GARAGEM DA HP
FONTE: O autor
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.
45
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO
FIGURA 42 – ENIAC
FONTE: O autor.
46
TÓPICO 4 | O BERÇO DA INFORMÁTICA
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).
47
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO
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?
49
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO
50
TÓPICO 4 | O BERÇO DA INFORMÁTICA
51
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO
52
TÓPICO 4 | O BERÇO DA INFORMÁTICA
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>.
FIGURA 50 – ALTAIR
FONTE: O autor.
54
TÓPICO 4 | O BERÇO DA INFORMÁTICA
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.
FONTE: O autor
FIGURA 54 – APPLE I
56
TÓPICO 4 | O BERÇO DA INFORMÁTICA
FIGURA 55 – APPLE II
FONTE: O autor.
FONTE: O autor.
57
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO
FONTE: O autor.
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: O autor
59
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO
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.
60
TÓPICO 4 | O BERÇO DA INFORMÁTICA
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.
FONTE: O autor
61
UNIDADE 1 | HISTÓRICO DA COMPUTAÇÃO
UNI
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.
FONTE: O autor
62
TÓPICO 4 | O BERÇO DA INFORMÁTICA
FONTE: O autor
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.
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.
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.
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).
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.
“Claro”, eu disse. “Algum dia”. Podia ser feito, pensei, mas então já seria
antiquado.
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.
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.
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
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:
69
AUTOATIVIDADE
4 Descreva o que Bill Gates pretendia dizer quando pronunciou a frase “Um
computador em cada casa e em cada mesa de trabalho”.
70
UNIDADE 2
CONCEITOS FUNDAMENTAIS DA
COMPUTAÇÃO
OBJETIVOS DE APRENDIZAGEM
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.
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.
Símbolo I V X L C D M
FONTE: O autor
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
74
TÓPICO 1 | SISTEMAS DE NUMERAÇÃO
UNI
UNI
75
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃ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).
77
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO
FONTE: O autor
Divisões sucessivas:
FONTE: O autor
79
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO
FONTE: O autor
FONTE: O autor
80
TÓPICO 1 | SISTEMAS DE NUMERAÇÃO
FONTE: O autor
81
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO
FONTE: O autor
FONTE: O autor
82
TÓPICO 1 | SISTEMAS DE NUMERAÇÃO
FONTE: O autor
FONTE: O autor
83
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO
FONTE: O autor
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
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:
86
AUTOATIVIDADE
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.
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).
90
TÓPICO 2 | BASES COMPUTACIONAIS
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.
91
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO
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.
92
TÓPICO 2 | BASES COMPUTACIONAIS
93
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO
94
TÓPICO 2 | BASES COMPUTACIONAIS
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.
96
TÓPICO 2 | BASES COMPUTACIONAIS
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:
97
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO
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.
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).
UNI
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
101
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO
UNI
102
RESUMO DO TÓPICO 2
Caro acadêmico, neste tópico você estudou que:
103
AUTOATIVIDADE
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.
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).
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.
106
TÓPICO 3 | SUPORTES COMPUTACIONAIS
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;
107
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO
• Planejamento da qualidade;
• Controle da qualidade;
• Melhoria da qualidade.
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).
111
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO
PSM
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).
112
TÓPICO 3 | SUPORTES COMPUTACIONAIS
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
114
TÓPICO 3 | SUPORTES COMPUTACIONAIS
115
RESUMO DO TÓPICO 3
Caro acadêmico, nesse tópico você estudou que:
116
AUTOATIVIDADE
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.
UNI
119
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO
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).
UNI
UNI
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
3 TIPOS DE MÍDIA
122
TÓPICO 4 | INTELIGÊNCIA COMPUTACIONAL
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.
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.
FONTE: O autor
UNI
124
TÓPICO 4 | INTELIGÊNCIA COMPUTACIONAL
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.
125
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO
UNI
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.
UNI
126
TÓPICO 4 | INTELIGÊNCIA COMPUTACIONAL
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.
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
FONTE: O autor
UNI
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).
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.
UNI
129
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO
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
130
TÓPICO 4 | INTELIGÊNCIA COMPUTACIONAL
FONTE: O autor
131
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO
UNI
FONTE: SC (2011)
132
TÓPICO 4 | INTELIGÊNCIA COMPUTACIONAL
UNI
O conceito Tristimulus define que qualquer cor, utilizando luz, pode ser reproduzida
pela combinação de vermelho, verde e azul.
UNI
134
TÓPICO 4 | INTELIGÊNCIA COMPUTACIONAL
UNI
135
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO
UNI
UNI
FONTE: O autor
137
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO
UNI
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).
139
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO
UNI
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).
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).
UNI
142
TÓPICO 4 | INTELIGÊNCIA COMPUTACIONAL
UNI
143
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO
LEITURA COMPLEMENTAR
O MÍTICO HOMEM-MÊS
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.
144
TÓPICO 4 | INTELIGÊNCIA COMPUTACIONAL
Otimismo
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.
Mas como nossas ideias têm falhas, nós temos problemas. Por isso, tanto
otimismo não se justifica.
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.
146
TÓPICO 4 | INTELIGÊNCIA COMPUTACIONAL
147
UNIDADE 2 | CONCEITOS FUNDAMENTAIS DA COMPUTAÇÃO
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.
• 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
150
UNIDADE 3
LÓGICA DE PROGRAMAÇÃO
OBJETIVOS DE APRENDIZAGEM
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.
151
152
UNIDADE 3
TÓPICO 1
FUNDAMENTOS DE LÓGICA DE
PROGRAMAÇÃO
1 INTRODUÇÃO
153
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO
Software
Programa
Sistema
Rotina
154
TÓPICO 1 | FUNDAMENTOS DE LÓGICA DE PROGRAMAÇÃO
Sub-rotina
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
Sintaxe
Exemplo(s):
Correta: “Vamos aprender algoritmos.”
Incorreta: “Aprende argoritmos vamo.”
Semântica
155
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO
Exemplo(s):
Correta: “Diga a cor dos seus olhos.”
Incorreta: “Diga qual a cor sua idade.”
Teste de Mesa
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.
156
TÓPICO 1 | FUNDAMENTOS DE LÓGICA DE PROGRAMAÇÃO
Dado
Informação
Comentário
Endentação
157
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO
Algoritmo
Descrição Narrativa
158
TÓPICO 1 | FUNDAMENTOS DE LÓGICA 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 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 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.
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
160
TÓPICO 1 | FUNDAMENTOS DE LÓGICA DE PROGRAMAÇÃO
Exemplo(s):
Nome
Cor_dos_Olhos
_Valor
Encontrou
Idade
Constantes
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.
Tipos de Dados
161
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO
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”.
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
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
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
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
Exemplo(s):
leia(Continuar);
leia(Total_Bruto);
leia(Idade);
leia(Nome);
leia(Prosseguir);
Escrita
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
166
AUTOATIVIDADE
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
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
a) ( ) Aritmético e Lógico
b) ( ) Lógico e Relacional
c) ( ) Relacional e Lógico
a) ( ) Aritmético e Relacional
b) ( ) Relacional e Lógico
c) ( ) Relacional
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.
Sequência
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
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.
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.
171
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO
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.
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
Seleção Simples
Exemplo(s):
Seleção Composta
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
175
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO
Exemplo(s):
Seleção Múltipla
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.
Algoritmo Escolha;
variáveis
Numero : inteiro;
início
176
TÓPICO 2 | ESTRUTURAS DE CONTROLE
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
Enquanto faça
Exemplo(s):
Quantidade ← 0;
enquanto (Quantidade <= 5) faça
início enquanto
Quantidade ← Quantidade + 1;
escreva(Quantidade, ’ª execução.’);
fim enquanto;
Para faça
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é
Exemplo(s):
Quantidade ← 0;
repita
Quantidade ← Quantidade + 1;
escreva(Quantidade, ’ª execução.’);
até (Quantidade >= 5);
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.
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.
181
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO
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
• 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.
184
AUTOATIVIDADE
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.
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.
Exemplo(s):
Algoritmo Soma;
variáveis
Primeiro : inteiro;
Segundo : inteiro;
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>
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;
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.
Exemplo(s):
Variáveis do tipo Global (Primeiro, Segundo e Resultado) podem ser vistas
por todo o algoritmo.
Algoritmo Calcula;
variáveis
Primeiro : inteiro;
Segundo : inteiro;
Resultado : 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;
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;
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.
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;
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
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.
Algoritmo Media;
variáveis
inteiro : Nota1;
inteiro : Nota2;
real : Media;
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;
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;
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.
Exemplo(s):
Algoritmo Emprestimo;
variáveis
ValorInicial : real;
ValorFinal : real;
Taxa : inteiro;
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
Implementação em C++
#include <iostream.h>
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;
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.
Exemplo(s):
Algoritmo Juros;
variáveis
ValorInicial : real;
ValorFinal : real;
Taxa : inteiro;
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>
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;
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
199
RESUMO DO TÓPICO 3
200
AUTOATIVIDADE
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.
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.
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.
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
203
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO
Exemplo(s):
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
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 simples
205
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO
Exemplo(s):
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
Exemplo(s):
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.
Matrizes
Assim como nos vetores, as matrizes também podem ser compostas por
elementos baseados em tipos de dados primitivos ou estruturados.
Matriz simples
Exemplo(s):
209
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO
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
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.
Matriz estruturada
Exemplo(s):
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.
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
LEITURA COMPLEMENTAR
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.
int *C::operator / (C a) {
return (int*)(n + a.n);
}
...
int *x; C y, z;
x = y / z;
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 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.
220
AUTOATIVIDADE
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.
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.
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.
HODGES, Andrew. The Alan Turing Home Page. Disponível em: <http://www.
turing.org.uk>. Acesso em: 10 dez. 2011.
IBM. The Harvard Mark I. Disponível em: <www.ibm.com>. Acesso em: 10 dez.
2011.
225
SC. University of South Carolina. Disponível em: <http://www.sc.edu>. Acesso
em: 17 nov. 2011.
226
ANOTAÇÕES
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
227
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
228
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
229
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
230
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
231
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
232