Prévia do material em texto
Lógica de
Programação I
Universidade do Estado do Amazonas
Lógica de
Programação I
E d i ç õ e s
2 0 0 7
Danielle Pompeu Noronha Pontes
Danielle Gordiano Valente
Marcos Fabiano P. Santiago
Tecnologia em Análise e Desenvolvimento de Sistemas
(Sistema Presencial Mediado)
Escola Superior de Tecnologia
Vicente de Paulo Queiroz Nogueira
Diretor
Ficha Técnica
Pontes, Danielle Pompeu Noronha.
Lógica de programação I / Danielle Pompeu Noronha Pontes –
Manaus/AM: UEA Edições, 2007. – (Tecnologia em Análise e
Desenvolvimento de Sistemas. 2. Período)
P814log
130 p.: il. ; 23 cm.
Inclui bibliografia e anexo.
ISBN
1. Programação - Informática. I. Valente, Danielle Gordiano. II.
Santiago, Marcos Fabiano P. III. Série. IV. Título.
CDU (1997): 004.421
Governo do Estado do Amazonas
Carlos Eduardo de Souza Braga
Governador do Estado
Omar José Abdel Aziz
Vice-Governador do Estado
Universidade do Estado do Amazonas
Marilene Corrêa da Silva Freitas
Reitora
Carlos Eduardo de Souza Gonçalves
Vice-Reitor
Fares Franc Abinader Rodrigues
Pró-Reitor de Administração
Osail Medeiros de Souza
Pró-Reitor de Planejamento
Edinea Mascarenhas Dias
Pró-Reitora de Ensino de Graduação
José Luiz de Souza Pio
Pró-Reitor de Pós-Graduação e Pesquisa
Rogelio Casado Marinho Filho
Pró-Reitor de Extensão e Assuntos Comunitários
Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas
(Sistema Presencial Mediado por Tecnologia)
Odwald Schreder
Coordenador Geral
Ângela Timótia Pereira Lima
Coordenadora Pedagógica
Ednaldo Coelho Pereira
Coordenador Técnico Administrativo
Projeto gráfico
Aurelino da Silva Bentes
Revisão
Ângela Timótia Pereira Lima
Danielle Pompeu Noronha Pontes
Especialista em Informática
pela Universidade Federal do Ceará - UFC
Danielle Gordiano Valente
Professora da Escola Superior de Tecnologia (EST/UEA)
Mestre em Ciência da Computação
pela Universidade de Minas Gerais - UFMG
Marcus Fabiano Praciano Santiago
Professor da Escola Superior de Tecnologia (EST/UEA)
Mestre em Ciência da Computação
pela Universidade de Brasília - UnB
Professora da Escola Superior de Tecnologia (EST/UEA)
Perfil dos Autores
Palavra da Reitora
Nós últimos anos, o avanço da tecnologia da informática mudou os
conceitos de ensino e de trabalho. A preocupação com o que se denominou de
“inclusão digital” passou a ser um problema urgente a ser enfrentado pelos
dirigentes do País, já que todos os processos de novas tecnologias deságuam
no conhecimento de informática. No Amazonas, a dificuldade de locomoção
na região, por falta de rodovias, por sua grande extensão territorial, pela
baixa densidade demográfica e pelo subdesenvolvimento secular imposto à
população ribeirinha, torna-se árduo o esforço do Governo para tornar
realidade à inclusão digital.
A UEA, que já nasceu moderna, incorporando tecnologias educacionais
de ponta, utilizando-se particularmente da informática pela massificação do
uso de microcomputadores combinados com uma rede complexa de acesso à
Internet, não poderia ficar alheia a essa necessidade premente. Por isso,
propôs e realizou o primeiro vestibular para levar a 12 municípios um curso
que formasse a mão-de-obra inicial que tornasse a inclusão digital uma
realidade em nosso Estado.
A proposta do curso de Tecnologia em Análise e Desenvolvimento de
Sistemas oferecido pela UEA vislumbra criar mão-de-obra qualificada em um
número significativo de localidades do Estado, cabendo às pessoas
beneficiadas com essa iniciativa a tarefa de irradiar o uso de tecnologias de
informática, abrindo caminhos novos e suscitando novos empregos para a
população local, consolidando, assim, o exercício da cidadania.
Professora Doutora Marilene Corrêa da Silva Freitas
Reitora da Universidade do Estado do Amazonas
09
Sumário
1. Introdução ao Estudo da Resolução de Problemas utilizando o
Computador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1. Introdução à Resolução de Problemas . . . . . . . . . . . . 11
1.2. Descrevendo Soluções . . . . . . . . . . . . . . . . . . . . . . 13
1.3. Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.4. Lógica e Algoritmos . . . . . . . . . . . . . . . . . . . . . . . 20
1.5. Algoritmos e Processamento de Dados . . . . . . . . . . . . 24
1.6. Lógica de Programação . . . . . . . . . . . . . . . . . . . . . 28
2. Descrevendo Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . 31
2.1. Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2. 2. Fluxogramas . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.3. Português Estruturado ou Pseudocódigo . . . . . . . . . . . 36
3. O VisuAlg. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.1. Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.2. A Tela Principal do VisuAlg 2.0 . . . . . . . . . . . . . . . . . 40
3.2.1 A barra de Tarefas do VisuAlg . . . . . . . . . . . . . . 41
3.2.2 Barra de Status . . . . . . . . . . . . . . . . . . . . . . 43
3.2.3 Quadro de Variáveis . . . . . . . . . . . . . . . . . . . 44
3.3. A Linguagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4. Tipos de Dados e Variáveis . . . . . . . . . . . . . . . . . . . . . . 46
4.1. Introdução: funcionamento do acesso à memória em um
computador . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.2 Constantes e Variáveis . . . . . . . . . . . . . . . . . . . . . . 49
4.2.1 Conceitos Iniciais . . . . . . . . . . . . . . . . . . . . . 49
4.2.2 Constantes . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.2.3. Variáveis . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.2.4. Identificadores . . . . . . . . . . . . . . . . . . . . . . 52
4.3. Conceito de tipos de dados . . . . . . . . . . . . . . . . . . . 55
4.3.1 Tipos Primitivos . . . . . . . . . . . . . . . . . . . . . . 55
4.4. Declaração de Variáveis e Constantes. . . . . . . . . . . . . 61
4.5 Uso de Variáveis na Entrada e Saída de Dados . . . . . . . . 62
4.6 Palavras Reservadas . . . . . . . . . . . . . . . . . . . . . . . . 67
4.7 Revisão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5. Expressões e Operadores . . . . . . . . . . . . . . . . . . . . . . . 69
5.1.Operador de Atribuição. . . . . . . . . . . . . . . . . . . . . . 69
5.2 Expressões Aritméticas: . . . . . . . . . . . . . . . . . . . . . 72
5.2.1. Operadores aritméticos . . . . . . . . . . . . . . . . . 72
5.3 Expressões Lógicas . . . . . . . . . . . . . . . . . . . . . . . . 74
5.3.1. Operadores relacionais . . . . . . . . . . . . . . . . . . 75
5.3.2. Operadores lógicos . . . . . . . . . . . . . . . . . . . . 76
6. Estrutura de um algoritmo . . . . . . . . . . . . . . . . . . . . . . 81
6.1 Estruturas de controle . . . . . . . . . . . . . . . . . . . . . . 82
6.1.1 Estrutura Seqüencial. . . . . . . . . . . . . . . . . . . . 82
6.1.2 Estrutura de Seleção. . . . . . . . . . . . . . . . . . . . 87
6.1.3 Estrutura de repetição . . . . . . . . . . . . . . . . . . 102
6.2 Combinando as estruturas de controle . . . . . . . . . . . . 109
Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
Anexo - Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
10
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
11
Introdução ao Estudo
da Resolução
de Problemas
Capítulo 1
Lógica de Programação I
Tecnologia em Análise e Desenvolvimento de Sistemas
No dia-a-dia rotineiramente encontramos e resolvemos
problemas. Muitos deles nós mesmos criamos, outros somos
obrigados a enfrentar. Para solucioná-los, temos que verificar de
que recursos dispomos para então poder elaborar uma solução.
Quando utilizamosa palavra problema, queremos
significar as dificuldades que impedem que um objetivo seja
atingido [MOURSUND07]. Alguns podem ser bastante simples. Por
exemplo, ao calçar os sapatos você tem de atar os cadarços.
Observe que da forma como definimos um “problema”, resolvê-
lo tem o mesmo significado de cumprir uma tarefa.
Pense em algumas das tarefas que concluiu hoje – alguns
dos problemas que resolveu. Tomou café da manhã? Se o fez,
Utilizando o computador
1.1. Introdução à Resolução de Problemas
12
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
resolveu o problema de se alimentar. Pagou contas? Se o fez,
resolveu um problema de pagamento. Discutiu com alguém? Se o
fez, resolveu um problema interpessoal.
Vamos levar este exercício um pouco além. Para cada
problema, vamos pensar nos recursos necessários para resolvê-
los. Talvez, você tenha resolvido os problemas apenas com o uso
de sua mente e seu corpo. Para outros problemas talvez seja
necessária a ajuda de amigos. Ou ainda, para outros, seja
necessário o uso de ferramentas tais como um telefone, uma
calculadora ou um carro.
A tabela 1.1 (a seguir) apresenta um resumo de informações
sobre problemas do dia-a-dia. Ela é útil para compreender dois
fatos:
? Rotineiramente encontramos e resolvemos uma grande
variedade de problemas;
? Na medida em que resolvemos problemas, utilizamos
recursos tais como o raciocínio, nosso corpo, ferramentas
ou dinheiro para adquirir outros recursos.
Dor de cabeça
Problema Recurso
Fome de manhã (café da manhã) Frutas na geladeira
Transporte para o trabalho Carro
Aspirina, descanso
Pagamento de Contas Dinheiro
Tabela 1.1 : Problemas e recursos
Computadores são recursos que ajudam na resolução de
certos tipos de problemas. Ele pode ser visto como uma ferra-
menta muito poderosa e versátil. Há várias formas para um
computador ser utilizado para minimizar o tempo e o esforço
13
necessários para encontrar uma solução. Assim, vale a pena se
esforçar para aprender a utilizar esta importante ferramenta.
1.1 Pense em 6 problemas que você resolveu e descreva os
recursos que utilizou na solução, preenchendo a tabela
abaixo.
ATIVIDADES
Descrição do Problema Recurso
1.2. Descrevendo Soluções
O que é necessário para se elaborar uma solução para um
problema? Parece uma pergunta simples, mas envolve estabele-
cermos algumas definições formais.
Para descobrir quais são, vamos fazer um pequeno exercí-
cio. Imagine que alguém lhe pede para descobrir um defeito
mecânico em um carro utilizando apenas instruções fornecidas
pelo telefone a uma pessoa inexperiente. Você poderia resolver
este problema?
A resposta seria dificilmente. Mesmo um mecânico hábil
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
14
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
não teria como obter todas as informações sobre o defeito do
carro sem testá-lo ou visualizá-lo (o problema).
Vamos fazer outro exercício. Imagine que alguém lhe
informe que um quadro está “feio” e simplesmente lhe pede
para torná-lo “bonito”, sem lhe fornecer maiores informações.
Neste caso mesmo que você seja um às da pintura não poderá
resolver o problema, pois não sabe o que tornaria o quadro
“bonito” para seu cliente (a solução).
Com estes dois exemplos descobrimos algumas condições
necessárias para se resolver um problema. A primeira é que a
situação inicial em que o problema se desenvolve esteja bem
definida (no exemplo do defeito no carro, não se sabia qual este
era). A segunda é que o objetivo a ser alcançado com a solução
também esteja (no exemplo do quadro, não se sabia o que era
“bonito”).
Uma terceira condição é ter a posse de recursos para
resolver o problema. Os recursos podem ser, por exemplo,
ferramentas ou mão-de-obra. Esta condição é bem fácil de ser
visualizada. Por exemplo, se você estiver com dor de cabeça em
um ambiente barulhento e sem remédio, não poderá resolver seu
problema: não há os recursos (remédio ou local para descanso).
Outro exemplo seria resolver o problema do pagamento de
contas vencidas sem ter dinheiro: não há como resolver este
problema por falta de recursos!
Como já comentamos, o computador, objeto de nosso
estudo, é uma ferramenta a ser utilizada como recurso na solu-
ção de problemas.
Por último é necessário o comprometimento de alguém
15
para implementar a solução utilizando os recursos. Pode ser uma
pessoa, uma empresa, o governo, em suma tem de haver uma
parte interessada em resolver o problema.
Colocando o que discutimos de uma maneira mais formal,
resolver um problema significa mudar uma situação inicial para
uma situação desejada (objetivo) [MOURSUND07].
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
Figura 1.1: Processo de solução de problemas
Resumindo, você pode solucionar um problema se as
seguintes condições são satisfeitas:
1. Você tem uma situação inicial claramente definida.
2. Você tem uma situação desejada (objetivo) claramente
definida.
3. Você tem a posse dos recursos necessários para alterar a
situação inicial para a final.
4. Há comprometimento – existe alguém com o compromis-
so de solucionar o problema com seus atributos tais
como energia, esforço físico ou conhecimento.
1.2. O dono de um restaurante considera que sua comida é boa.
No entanto, um cliente lhe informa que sua comida é ruim,
sem maiores detalhes. Ele pode resolver o problema de
agradar ao cliente? Por que?
ATIVIDADES
Situação
Inicial
A
Situação
Desejada
(Objetivo)
B
Como ir de A para B?
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
16
1.3.Seu chefe lhe diz simplesmente que seu relatório está muito
ruim, sem fornecer motivos para tal, e que você precisa
melhorá-lo. Você será capaz de resolver o problema (fazer
com que seu relatório agrade ao chefe)? Por quê?
1.4.Uma pessoa lhe diz que suas roupas não são boas e que
precisa melhorar seu vestuário, sem lhe fornecer maiores
detalhes. Mesmo que você possua dinheiro e vá a uma loja
de vestuário você poderia resolver o problema de “vestir-se
melhor”? Por quê?
1.5. Escolha 3 dos problemas de seu dia-a-dia que citou anterior-
mente e descreva a situação inicial, a desejada (objetivo) e
os recursos de que dispõe.
1.3. Algoritmos
Computadores são extraordinárias ferramentas a serem
utilizadas em soluções de problemas. No entanto, nem todas as
soluções são passíveis de resolução utilizando o computador.
Quais seriam as condições para a utilização de um computador
como ferramenta?
Há duas condições necessárias. Elas decorrem do próprio
funcionamento de um computador e foram descritas pelo mate-
mático inglês Alan Turing (responsável pela criação do primeiro
computador eletrônico e pelo que é chamada a “Teoria da
Computação”).
A primeira é que a descrição da solução deve ser clara e
precisa (em termos mais formais não deve ser ambígua). Em
outras palavras, deve ser possível descrever cada parte (passo)
17
da solução com tantos detalhes que qualquer um (mesmo uma
máquina) possa executá-la. Isto requer não apenas saber exata-
mente como executar cada passo, mas muitas vezes também a
ordem exata de sua execução.
A segunda é a de que ao final da execução da descrição da
solução, o problema deve ser resolvido. Em outras palavras,
quem está encarregado da resolução do problema deve poder
atingir seu objetivo em um tempo e um número de passos finito.
Lembre-se que ter um objetivo definido/situação desejada é
uma das condições para elaborar uma solução, como vimos na
seção anterior.
Uma descrição passo-a-passo de uma solução atendendo às
condiçõesque acabamos de citar é comumente chamada de
algoritmo. Deve-se ressaltar que há grandes divergências sobre
a definição de algoritmo e os tipos de soluções que podem ser
adequadas ao termo. A definição que utilizaremos é adequada
para os problemas computacionais, atendendo às duas condições
que descrevemos: “uma seqüência finita e ordenada de passos
sem ambigüidade que leva à resolução de um problema”
[BALDWIN04].
Apesar de o computador ser relativamente recente (os
primeiros foram criados na década de 40), a utilização de
algoritmos para resolver problemas é bem antiga. O algoritmo de
Euclides, por exemplo, foi criado por volta de 300 anos antes de
Cristo, sendo utilizado para descobrir o Máximo Divisor Comum
(MDC) entre dois números inteiros conhecidos.
A palavra algoritmo tem origem no sobrenome,
Al-Khwarizmi, do matemático persa do século IX, Mohamed ben
Musa, cujas obras foram traduzidas no ocidente cristão no século
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
18
XII, tendo uma delas recebido o nome "Algorithmi de numero
indorum", sobre os algoritmos usando o sistema de numeração
decimal (indiano). Outros autores, contudo, defendem a origem
da palavra em Al-goreten.
Os algoritmos são muito comuns para resolver problemas do
nosso cotidiano. Para exemplificar descrevemos uma atividade
bem conhecida: trocar uma lâmpada. Apesar de parecer óbvio
demais, muitas vezes fazemos este tipo de atividade inconscien-
temente, sem percebermos os pequenos detalhes. Vejamos
como seria descrevê-la passo a passo:
1. pegar uma escada;
2. posicionar a escada embaixo da lâmpada;
3. buscar uma lâmpada nova;
4. subir na escada;
5. retirar a lâmpada velha;
6. colocar a lâmpada nova.
Observe que a descrição que apresentamos é uma seqüên-
cia de passos que descrevem claramente (sem ambigüidades) o
que deve ser feito e que leva à solução do problema (trocar a
lâmpada). Portanto, é um algoritmo.
A forma como estamos descrendo os algoritmos é chamada
de “Linguagem narrativa”, e é bastante próxima do linguajar que
utilizamos em nosso cotidiano. Consiste apenas em especificar
cada passo do algoritmo com um verbo e um complemento,
representando a ação a ser realizada. Observe que numeramos
cada passo para representar a seqüência da execução (a ordem).
Infelizmente, esta forma de representar algoritmos é prolixa,
imprecisa e freqüentemente pouco confiável como um veículo
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
19
de transferir informação. Como veremos, há maneiras melhores
de descrever algoritmos.
Há vários outros problemas de nosso dia-a-dia que podería-
mos descrever desta forma:
Consumir um chiclete:
1. pegar o chiclete;
2. retirar o papel;
3. mascar o chiclete;
4. jogar o papel no lixo;
5. jogar o chiclete no lixo.
Escovar os dentes:
1. Pegar a escova;
2. Colocar a pasta de dentes na escova;
3. Molhar a escova;
4. Escovar os dentes;
5. Enxaguar a boca;
6. Enxaguar a escova.
Figura 1.2: Visualização de formas para atingir um objetivo
Deve-se frisar que assim como pode haver várias soluções
para um mesmo problema, também pode haver vários algorit-
mos, mas sempre chegando ao resultado (objetivo) desejado de
forma correta. Sendo assim, podem existir vários algoritmos que
OBJETIVO
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
20
solucionem um problema, alguns mais rápidos, outros mais
seguros, mas todos conseguem resolver o problema corretamen-
te, apesar das diferenças existentes no percurso de toda a lógica
proposta como solução.
1.6 Crie um algoritmo para “tomar banho”.
1.7 Faça um algoritmo para somar dois números e multiplicar o
resultado pelo primeiro número.
1.8 Descreva com detalhes o algoritmo para trocar um pneu de
um carro.
1.9 Selecione dois dentre os problemas de seu dia-a-dia que você
descreveu nos exercícios das seções anteriores e elabore
algoritmos para solucioná-los.
ATIVIDADES
1.4. Lógica e Algoritmos
Como vimos, para solucionar um problema utilizando um
computador como ferramenta é necessário que a solução seja
descrita por um algoritmo. No entanto, como devemos criá-lo?
Para elaborar um algoritmo é necessário encontrar uma
solução e descrevê-la em uma seqüência finita de passos que
levam ao objetivo desejado. Freqüentemente esta não é uma
tarefa fácil, sendo necessário elaborar um raciocínio por vezes
complexo para implementá-la.
A lógica é o estudo do raciocínio correto, sendo uma ativi-
dade mental [Shapiro 06]. Ela é uma ferramenta importante para
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
21
a elaboração de algoritmos. Sempre que se quer pensar, falar ou
escrever corretamente, deve-se colocar os pensamentos em
ordem. A seguir é mostrado um exemplo de inferência utilizando
a lógica:
- Todo mamífero é animal
- Todo cavalo é mamífero
- Portanto, todo cavalo é animal
A utilização da lógica deve ser considerada por todos, mas
para alguns profissionais, como os da área de tecnologia de
informação, ela requer sempre muita atenção e desempenho
rápido do raciocínio sobre o conhecimento disponível. Outros
exemplos abaixo:
a) A gaveta está fechada.
A bala está na gaveta.
Preciso primeiro abrir a gaveta, para depois pegar a bala.
b) Moramos em três pessoas.
Nenhum de nós dois quebrou o vaso de porcelana.
Quem quebrou o vaso?
Criar um raciocínio lógico coerente exige uma organização
sobre os pensamentos a serem realizados por um indivíduo ou
mesmo por cada indivíduo da equipe que busca a solução. A
realização deste tipo de atividade demanda de tempo, compre-
ensão e cooperação dos envolvidos que precisam entender todas
as informações envolvidas em tal processo. Sendo assim, é
fundamental a organização clara e simples de todos os raciocíni-
os possíveis a serem elaborados e testados na busca da solução
para um problema computacional.
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
22
A seguir é apresentada uma solução para um problema de
lógica bastante conhecido, chamado de “Torres de Hanói”.
Considere o seguinte problema:
Temos três hastes. Uma das hastes serve de suporte para
três discos de tamanhos diferentes. Os discos menores são
sempre colocados sobre os discos maiores. A figura abaixo mostra
uma possível situação inicial das hastes e discos.
Figura 1.3: Situação Inicial dos Discos no Problema das Torres de Hanói
Desejamos mover todos os discos para outra haste, porém
só podemos movimentar um disco de cada vez e um disco maior
nunca pode ser colocado sobre um disco de menor tamanho.
Pense em uma solução. Você consegue resolver este proble-
ma? Basta apenas utilizar o raciocínio lógico.
A solução (em linguagem narrativa) é apresentada a seguir.
Nomeamos as hastes como 1 2 e 3 e os discos como p, m e g.
Considera-se que inicialmente os discos estão na haste 1. Os
passos são:
1. mover o disco p para a haste 2.
2. mover o disco m para a haste 3.
3. mover o disco p para a haste 3.
4. mover o disco g para a haste 2.
5. mover o disco p para a haste 1.
6. mover o disco m para a haste 2.
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
23
Figura 1.4: Solução do Problema das Torres de Hanói
7. mover o disco p para a haste 2.
Podemos também representar a solução em forma gráfica,
desenhando as hastes e a posição dos discos a cada momento (ou
passo).
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
24
1.5. Algoritmos e Processamento de Dados
Até agora utilizamos exemplos de problemasdo cotidiano
para a criação de algoritmos. Os computadores, em geral, não
Crie algoritmos em linguagem narrativa utilizando o raciocínio
lógico para resolver os seguintes problemas.
1.10. Temos três recipientes de tamanhos distintos: o primeiro
com capacidade para 8 litros, outro para 5 litros e o tercei-
ro com capacidade para 3 litros. O recipiente de 8 litros
está totalmente cheio. Deseja-se colocar 4 litros em dois
recipientes. Considere que os recipientes não sejam
graduados.
1.11. Numa determinada noite, acontece uma queda de energia.
Você sabia que poderia encontrar uma vela na gaveta da
cozinha, um lampião embaixo da cama, fusíveis de reserva
no armário da sala e fósforos na estante da cozinha.
Descreva a seqüência de passos que poderia ser utilizada
para diagnosticar e resolver o problema, o que pode ser
previsto em duas possibilidades:
a) o fusível queimou;
b) a queda é na estação da companhia elétrica.
1.12. Um homem quer atravessar um rio com um barco que pode
carregar ele mesmo e apenas mais uma de suas três cargas:
um lobo, um carneiro e um maço de alfafas. O que o
homem deve fazer para atravessar o rio sem perder nenhu-
ma de suas cargas, sabendo-se que o carneiro não pode
ficar sozinho com a alfafa e o lobo não pode ficar sozinho
com o carneiro.
ATIVIDADES
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
25
são utilizados para tratar destes problemas. Os problemas que
suportam tratamento computacional envolvem grandes quanti-
dades de dados ou são problemas de natureza complexa, exigin-
do a execução de um grande número de passos para alcançar a
solução. Isto porque o computador, como ferramenta, é utilizado
para transformar dados/informações em outros em uma ativida-
de conhecida como processamento de dados.
Pode-se definir processamento de dados qualquer ativida-
de que, utilizando informações (ou dados), efetua transforma-
ções para obter novas informações (ou dados) como resultado.
De forma geral, podemos compreender um sistema de processa-
mento de dados como um conjunto de três etapas fundamentais.
Entrada de dados, Processamento e Saída de dados.
Entrada
Processamento
Saída
Figura 1.5: Representação do Processamento de Dados
?Entrada de dados: é o ato de fornecer dados ao computa-
dor que os manipulará de acordo com o que foi elaborado
no algoritmo.
?Processamento: consiste na manipulação dos dados
armazenados de forma a gerar os resultados desejados. É
neste ponto que os algoritmos são executados. O proces-
samento é relacionado diretamente com os dispositivos
de armazenamento de dados (memórias), pois estão neles
armazenados os dados que serão acessados e manipulados
para efetivação do processamento desejado, que possi-
velmente também armazenará os resultados obtidos
neste mesmo recurso.
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
26
?Saída de dados: é a ação, ou processamento, que o com-
putador realiza para disponibilizar ao usuário os resulta-
dos obtidos no processamento.
Normalmente, os dados brutos informados e processados
geram os dados informativos desejados pelo usuário que possui
algumas necessidades. Estes dados processados e contextualiza-
dos para um fim ou momento específico são chamados de infor-
mação.
Para que o computador realize alguma tarefa é necessário
que nos comuniquemos com ele. O que nos permite este tipo de
comunicação são os dispositivos de entrada e os dispositivos de
saída acoplados ao computador (periféricos).
O termo dispositivo de entrada representa o grupo de
componentes que podem ser ligados (ou conectados) ao compu-
tador para permitir que o mundo externo (mundo real) envie
dados a ele. Por exemplo, o teclado, que permite ao usuário se
comunicar com o computador, fornecendo dados a serem usados
no processamento de alguma informação, o mouse.
O termo dispositivo de saída representa o grupo de compo-
nentes que podem ser ligados (ou conectados) ao computador,
permitindo o envie de dados dele ao mundo externo (mundo
real). Por exemplo, o monitor, que permite ao computador
comunicar o resultado de uma operação ao usuário que precisa
de tal informação. Outro exemplo de dispositivo de saída seria a
impressora.
Alguns dispositivos podem ser tanto entrada como saída de
dados.
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
27
Exemplos são o pen drive, o disquete, o CD.
Como o processamento só ocorre com dados que estejam
armazenados em memória, então os processos relacionados ao
armazenamento e recuperação de dados são de fundamental
importância ao funcionamento do computador.
Como exemplo de um algoritmo computacional, imagine o
seguinte problema. Calcular a média final dos alunos da 6ª Série.
Os alunos realizarão quatro provas: P1, P2, P3 e P4. A Média
Final é calculada por:
(P1 + P2 + P3 + P4) / 4.
Para montar o algoritmo proposto, faremos três perguntas:
a) Quais são os dados de entrada?
R: Os dados de entrada são P1, P2, P3 e P4
b) Qual será o processamento a ser utilizado?
R: O procedimento será somar todos os dados de entrada e
dividi-los por 4 (quatro) (P1 + P2 + P3 + P4)/4
c) Quais serão os dados de saída?
R: O dado de saída será a média final.
pen drive disquete CD
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
28
Identifique as entradas, o processamento e as saídas de dados e
descreva em linguagem narrativa os seguintes algoritmos com-
putacionais.
1.13 Algoritmo que a partir de dois números N1 e N2 retorna o
produto entre esses números.
1.14 Algoritmo que a partir de um valor fornecido em real e da
cotação do real para o dólar informe ao usuário o valor
equivalente em dólar americano.
1.15 Algoritmo que a partir de um número inteiro N que repre-
senta a quantidade de metros, retorna a quantos quilôme-
tros e centímetros ele corresponde.
ATIVIDADES
1.6.Lógica de Programação
A implementação das lógicas, elaboradas e representadas
em um algoritmo, é realizada sobre o computador, por meio da
transcrição, representada no algoritmo, para uma linguagem de
programação, que também possibilitará a compreensão e execu-
ção das instruções pelo computador. Essa transcrição também
pode ser chamada de tradução, pois somente efetuará mudança
na forma de descrever o raciocínio a ser implementado no com-
putador. O resultado da transcrição é o programa. De acordo com
O algoritmo computacional proposto poderia ser descrito
da seguinte forma:
1. Receber as Notas P1, P2, P3, P4 (Entrada de Dados)
2. Calcular a média final (P1 + P2 + P3 + P4)/4
3. Retornar a média final ao usuário (saída de dados).
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
29
Niklaus Wirth [WIRTH 86], "Programas são formulações comple-
tas de algoritmos abstratos, baseados em representações espe-
cíficas de dados.”.
Antes da transcrição de um programa é necessário que os
algoritmos que serão utilizados na solução do problema estejam
definidos e elaborados. Poderíamos então, de maneira simplifi-
cada, dividir a tarefa de programação em duas etapas:
?Modelização (ou Resolução) do Problema: determinação
do modelo de solução para o problema proposto na forma
de um algoritmo computacional. Assim, a elaboração de
um algoritmo é o primeiro passo para a preparação de um
programa de computador. Este algoritmo deve ser inde-
pendente da linguagem de programação que será utiliza-
da.
?Implementação: é a transformação (ou codificação) do
algoritmo em alguma Linguagem de Programação adequa-
da ao modelo elaborado.
Figura 1.6: Representação do processo de “transcrição”
A
lg
or
it
m
o
Linguagem de
Programação
Pr
og
ra
m
a
Tradução
?? ??? ?
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
30
Problema
Solução
na forma de
Algoritmo
Solução como um
programa de computador
Fase de
Resolução
do Problema
1
Fase de Implementação
(Codificação do Algoritmo
em alguma Ling. de Programação
2
Figura 1.7: Representação simplificada da Programação
?? ??
? ?
Introdução à Informática
Tecnologia em Análise e
Desenvolvimento de Sistemas
31
Descrevendo Algoritmos
Capítulo 2
Lógica de Programação I
Tecnologia em Análise e Desenvolvimento de Sistemas
2.1. Introdução
Até agora representamos algoritmos utilizando a linguagem
narrativa com a especificação verbal do algoritmo em linguagem
natural. Como citamos, esta é uma forma prolixa e imprecisa,
porém de fácil aprendizagem.
Para entender os motivos que tornam a linguagem narrativa
ineficaz para a representação de algoritmos, vamos descrever,
na tabela 2.1, duas maneiras diferentes de fazer um algoritmo
de uma tarefa corriqueira: escovar os dentes:
Ordem Algoritmo 1 Algoritmo 2
1 Pegar a escova Colocar a pasta na escova
2 Pegar o creme dental Molhar a escova
3 Colocar o creme
dental da escova
Escovar
4 Molhar a escova Enxaguar a boca
5 Escovar Enxaguar a escova
6 Enxaguar a boca
7 Limpar a escova
Tabela 2.1: Algoritmo para escovar os dentes
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
32
Observe que as duas descrições são algoritmos similares
para a mesma tarefa. No entanto, por estarem em linguagem
narrativa, possuem diferenças de representação: o algoritmo 1
divide o passo “colocar a pasta na escova” do algoritmo 2 em três
outros diferentes e o último passo “limpar a escova” em um é
descrito como “enxaguar a escova” em outro. No entanto, ambos
estão corretos por representar soluções para o problema de
“escovar os dentes”.
Duas pessoas que executem os algoritmos podem compre-
endê-los de maneiras diferentes. “Pasta” e “creme dental” são a
mesma coisa? “Limpar” e “enxaguar” também? Pode-se passar a
pasta na escova sem pegá-la primeiro? Há uma imprecisão nos
algoritmos que pode levar a diversas interpretações. Observe
que, mesmo neste caso simples, os resultados podem ser dife-
rentes: a escova pode não ficar limpa ao final dependendo da
interpretação de “enxaguar”.
Este problema acontece devido ao fato de que na lingua-
gem narrativa, pode-se utilizar diversos termos para representar
uma mesma ação. No exemplo, utilizou-se “limpar” e “enxa-
guar”. Ao mesmo tempo, não há uma definição sobre o que pode
e o que não pode ser considerado um “passo” do algoritmo:
enquanto em um uma ação é representada por um único passo
(“colocar a pasta na escova”) no outro é dividido em três.
Há diversas técnicas para a descrição de algoritmos que
resolvem os problemas da linguagem narrativa. A seguir, serão
mostradas duas muito utilizadas para a representação de algorit-
mos computacionais: fluxogramas e pseudocódigo.
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
33
Tabela 2.2: Figuras utilizadas em Fluxograma
2.1 Crie algoritmos para solucionar os seguintes problemas em
linguagem narrativa.
? Trocar um pneu.
? Tomar banho.
A seguir compare seu algoritmo com o de colegas e verifique as
diferenças.
ATIVIDADES
2.2. Fluxogramas
O fluxograma utiliza figuras geométricas predefinidas para
descrever as ações (ou instruções) a serem realizadas na resolu-
ção de um problema. Um fluxograma mostra, de forma gráfica, a
lógica de um algoritmo, enfatizando passos individuais e o fluxo
de execução.
As principais figuras usadas em fluxogramas são relaciona-
das na tabela 2.2, apresentadas a seguir:
FIGURA SIGNIFICADO
Figura para definir início e fim do algoritmo.
Figura usada no processamento de cálculo,
atribuições e processamento de dados em geral.
Figura utilizada na representação de entrada de
dados.
Figura utilizada para representação da saída de
dados.
Figura que indica o processamento seletivo ou
condicional, possibilitando o desvio no caminho
do processamento.
Símbolo geométrico usado como conector.
Símbolo que identifica o sentido do fluxo de
dados, permitindo a conexão entre as outras
figuras existentes.
Para a representação de um algoritmo em fluxograma
temos algumas regras básicas:
? o início e o fim de um algoritmo devem ser representados
em separado com a figura ;
? cada “passo” da execução do algoritmo deve ser repre-
sentado em separado e descrito dentro de uma figura. Por
enquanto, a principal figura que utilizaremos é o retângu-
lo, que representa na maior parte das vezes a execução
de um “passo”. As outras serão apresentadas no decorrer
do curso à medida que novos conceitos forem sendo
apresentados;
Início
Colocar a pasta na escova
Molhar a escova
Escovar
Enxaguar a boca
Enxaguar a escova
Fim
Figura 2.1: Fluxograma do
Algoritmo de “Escovar os Dentes”
?as figuras devem ser conectadas
por setas que indicam a seqüên-
cia de execução do algoritmo.
Utilizando como exemplo o algo-
ritmo de “escovar os dentes” apresen-
tado no item anterior, teríamos que sua
descrição seria descrita pelo fluxogra-
ma abaixo.
Observe, na Figura 2.1, que a
seqüência é criada utilizando-se setas
ligando as figuras. Observe também que 34
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
35
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
o início e o fim do algoritmo são marca-
dos por figuras específicas e que cada
“passo” é descrito em uma figura em
separado.
Outro exemplo é o algoritmo de
“trocar uma lâmpada” descrito anteri-
ormente e representado pelo fluxogra-
ma mostrado a seguir.
Como último exemplo, vamos
utilizar um algoritmo computacional
que calcula a média de dois números.
Observe que iremos utilizar figuras
para representar as operações compu-
tacionais de entrada e saída de dados
(verifique as figuras na tabela 2.2).
A principal vantagem do uso do
fluxograma é que muitas vezes o
entendimento de sua representação
gráfica é mais fácil e simples que
utilizando apenas a escrita. Como
veremos também diversas das estrutu-
ras utilizadas em algoritmos computa-
cionais são representadas em fluxogra-
mas por meio de figuras específicas,
evitando a imprecisão característica da
linguagem narrativa.
Início
Pegar uma escada
Posicionar a escada
embaixo da lâmpada
Buscar uma lâmpada nova
Subir na escada
Retirar a lâmpada velha
Fim
Colocar a lâmpada nova
Figura 2.2: Algoritmo para
“trocar uma lâmpada”
Início
N1
N2
Média = (N1 + N2)/2
Fim
Média
Figura 2.3: Algoritmo para
calcular a soma de
dois números
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
36
2.2 Crie fluxogramas para executar os seguintes algoritmos.
? trocar um pneu;
? tomar banho;
? fazer o produto de dois números: N1 e N2 (utilize a figura
para entrada de dados de cada um dos números);
ATIVIDADES
2.3. Português Estruturado ou Pseudocódigo
Essa forma de representação, também chamada de “portu-
gol” ou pseudocódigo, consiste na descrição estruturada, por
meio de regras predefinidas, de passos (ou instruções) a serem
realizados para a resolução do problema. O português estrutu-
rado utiliza a linguagem natural para representar o raciocínio.
No caso brasileiro, a linguagem natural é o Português, que será
utilizado na representação. Para a Espanha ou França, por
exemplo, seriam utilizados o Espanhol e o Francês respectiva-
mente.
Suponha o exemplo de calcular a soma de dois números e
observe as características descritivas existentes no português
estruturado a seguir:Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
37
Algoritmo 2.1 – Soma de dois número
Observe as seguintes características:
? há regras sobre como o algoritmo deve ser descrito.
Observe que N1, N2 e Soma são “declarados” no início do
algoritmo;
? o início e o fim do algoritmo são claramente representa-
dos
? os “passos” que podem ser realizados são descritos em
uma linguagem única e padronizada.
Enquanto a linguagem narrativa ou de comunicação é
prolixa e imprecisa, o português estruturado agrega regras e
normas que permitem a representação organizada e eficiente da
solução algorítmica. No entanto, faz-se necessário aprender as
regras utilizadas na representação dos algoritmos.
Assim não se preocupe se você não entendeu completa-
mente o exemplo mostrado. A partir de agora nos dedicaremos a
estudar esta forma de representar algoritmos!
Entre as duas formas de representação apresentadas
algoritmo "Soma de dois números"
var
N1,N2,Soma: inteiro
inicio
escreva ("Entre com o primeiro número (N1)")
leia (N1)
escreva ("Entre com o segundo número (N2)")
leia (N2)
Soma <- (N1+N2)
escreva ("A soma dos números é")
escreva (Soma)
fimalgoritmo
38
(fluxograma e português estruturado), o português estruturado
será o mais relevante no desenvolvimento deste estudo, porque
através dele se conseguirá:
? facilitar o desenvolvimento dos algoritmos;
? facilitar o seu entendimento pelo ser humano;
? antecipar à depuração (localização de erros) em sua
lógica;
? facilitar a sua manutenção e modificação;
? facilitar e agilizar a sua codificação (escrita do progra-
ma);
? permitir o desenvolvimento simultâneo de vários profissi-
onais (trabalho em equipe).
Por meio dessa última representação de raciocínio (portu-
guês estruturado), alia-se a facilidade de uso da linguagem
natural do indivíduo, com a técnica de desenvolvimento estrutu-
rado. Apesar disso, essa junção, por si só, ainda não atinge
automaticamente os objetivos visados, ela apenas preconiza
uma ajuda sistemática para o alcance deste objetivo. Sua
aplicação ainda conta com o esforço e a disciplina incessante na
busca da simplicidade e da clareza, que fornecerão facilidades
inestimáveis à manutenção e modificação evolutiva do algorit-
mo.
É importante ter a consciência de que:
O algoritmo é a parte mais importante no desenvolvi-
mento de um programa, pois é nele que está a lógica do
programa.
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
39
2.3 Crie algoritmos em portugol para executar os seguintes
algoritmos.
? trocar um pneu;
? tomar banho;
ATIVIDADES
Introdução à Informática
Tecnologia em Análise e
Desenvolvimento de Sistemas
40
O VisuAlg
Capítulo 3
Lógica de Programação I
Tecnologia em Análise e Desenvolvimento de Sistemas
O Visualg(VisuAlg) é um programa que edita, interpreta e
executa algoritmos como um programa normal de computador
em pseudocódigo ou “Português Estruturado”. É um ótimo
recurso para quem está iniciando no aprendizado de algoritmos,
não só para praticar a sua criação, mas também para melhor
entender a sua execução através de seus múltiplos recursos.
O Visualg atualmente se encontra na versão 2.0 e possui
recursos como simulação da "tela" do computador, visualização
de variáveis, "breakpoints", ajuda on-line, impressão dos fontes
e outras características que auxiliam o aprendizado das técnicas
de programação.
Esta ferramenta será utilizada no restante deste curso para
o ensino de algoritmos estruturados.
3.1. Introdução
3.2. A Tela Principal do VisuAlg 2.0
A tela do VisuAlg compõe-se da barra de tarefas, do editor
de textos (que toma toda a sua metade superior), do quadro de
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
41
variáveis (no lado esquerdo da metade inferior), do simulador de
saída (no correspondente lado direito) e da barra de status.
Quando o programa é carregado, já apresenta no editor um
"esqueleto" de pseudocódigo, com a intenção de poupar trabalho
ao usuário e de mostrar o formato básico que deve ser seguido.
Explicaremos a seguir cada componente da interface do VisuAlg,
mostrado na figura 3.1.
3.2.1 A barra de Tarefas do VisuAlg
A barra de tarefas, visto na figura 3.2, contém os comandos
mais utilizados no VisuAlg (estes comandos também podem ser
acessados pelo menu ou por atalhos no teclado).
Figura 3.1: Tela Inicial do VisualG
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
42
A seguir é apresentada uma descrição sucinta dos comandos
relacionados com a edição de arquivos. Os outros serão apresen-
tados mais tarde, à medida que aprendermos a escrever algorit-
mos.
? Abrir (Ctrl-A): Abre um arquivo anteriormente gravado,
substituindo o texto presente no editor. Se este tiver sido
modificado, o VisuAlg pedirá sua confirmação para salvá-
lo antes que seja sobreposto.
? Novo (Ctrl-N): Cria um novo "esqueleto" de pseudocódigo,
substituindo o texto presente no editor. Se este tiver sido
modificado, o VisuAlg pedirá sua confirmação para salvá-
lo antes que seja sobreposto.
? Salvar (Ctrl-S): Grava imediatamente o texto presente no
editor. Na primeira vez que um novo texto é gravado, o
VisuAlg pede seu nome e localização.
? Imprimir: Imprime imediatamente na impressora padrão
o texto presente no editor. Para configurar a impressão,
use o comando Imprimir do menu Arquivo (acessível
também pelo atalho Ctrl-P).
? Cortar (Ctrl-X): Apaga texto selecionado, armazenando-o
em uma área de transferência.
? Copiar (Ctrl-C): Copia o texto selecionado para a área de
transferência.
Figura 3.2: Barra de Tarefas do VisuAlg
43
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
? Colar (Ctrl-V): Copia texto da área de transferência para
o local em que está o cursor.
? Gravar bloco de texto: Permite a gravação em arquivo de
um texto selecionado no editor. A extensão sugerida para
o nome do arquivo é .inc.
? Inserir bloco de texto: Permite a inserção do conteúdo de
um arquivo. A extensão sugerida para o nome do arquivo é
.inc.
?Desfazer (Ctrl-Z): Desfaz último comando efetuado.
?Refazer (Shift-Ctrl-Z): Refaz último comando desfeito.
?Localizar (Ctrl-L): Localiza no texto presente no editor
determinada palavra especificada.
?Substituir (Ctrl-U): Localiza no texto presente no editor
determinada palavra especificada, substituindo-a por
outra.
? Corrigir Indentação (Ctrl-G): Corrige automaticamente a
indentação (ou tabulação) do pseudocódigo, tabulando
cada comando interno com espaços à esquerda.
? Numerar linhas: Ativa ou desativa a exibição dos números
das linhas na área à esquerda do editor. A linha e a coluna
do editor em que o cursor está em um determinado
momento também são mostradas na barra de status
(parte inferior da tela). Por motivos técnicos, esta opção
é automaticamente desativada durante a execução do
pseudocódigo, mas volta a ser ativada logo em seguida.
3.2.2 Barra de Status
Situada na parte inferior da tela, esta barra contém dois
painéis: o primeiro mostra a linha e a coluna onde o cursor está, e
Figura 3.3: Barra de Status do VisuAlg
o segundo mostra a palavra “modificado” no caso em que o
pseudocódigo tenha sido alterado desde que foi carregado ou
salvo pela última vez. A barra de status pode ser vista na figura
3.3.
44
3.2.3. Quadro de Variáveis
O quadro de variáveis (figura 3.4), é formado por uma grade
na qual são mostrados o escopo de cada variável, seus nomes e o
seu valor corrente. Será mostrado em maiores detalhes quando
for apresentado o conceito de variáveis.Figura 3.4: Quadro de Variáveis
3.3.A Linguagem
A linguagem que o VisuAlg interpreta é bem simples: é uma
versão de um pseudocódigo em Português largamente utilizado
e, como nós vimos, também conhecido como "Portugol".
Para facilitar a digitação e evitar confusões, todas as
palavras-chave do VisuAlg foram implementadas sem acentos e
caracteres especiais como o cedilha. Portanto, para a palavra
lógico ser escrita em um algoritmo, deve ser escrita como logico.
Do mesmo modo as palavras se..então..senão devem ser escri-
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
45
tas como se..entao..senao, e assim por diante. O VisuAlg tam-
bém não distingue maiúsculas e minúsculas no reconhecimento
de palavras (case insensitive).
Formato Básico do Pseudocódigo e Inclusão de
Comentários
O formato básico do nosso pseudocódigo é o seguinte:
algoritmo "semnome"
// Função :
// Autor :
// Data :
inicio
// Seção de Comandos
fimalgoritmo
A primeira linha é composta pela palavra-chave algoritmo
seguida do seu nome delimitado por aspas duplas. Este nome
será usado como título nas janelas de leitura de dados. A seção
que se segue é a de declaração de variáveis, que termina com a
linha que contém a palavra-chave inicio. Deste ponto em diante
está a seção de comandos, que continua até a linha em que se
encontre a palavra-chave fimalgoritmo. Esta última linha marca
o final do pseudocódigo: todo texto existente a partir dela é
ignorado pelo interpretador.
O VisuAlg permite a inclusão de comentários: qualquer
texto precedido de "//" é ignorado, até se atingir o final da sua
linha.
Figura 4.1: Elementos do computador
Processador
UCP
Dispositivo
de Entrada
(Teclado mouse,
etc.)
Dispositivo
de Saída
(Impressora
vídeo, disco, etc.)
Memória
(Endereço e conteúdo)
Leitura Escrita
Entrada Saída
Dados
Controle
Introdução à Informática
Tecnologia em Análise e
Desenvolvimento de Sistemas
46
Tipos de Dados
e Variáveis
Capítulo 4
Lógica de Programação I
Tecnologia em Análise e Desenvolvimento de Sistemas
4.1. Introdução: funcionamento do acesso
à memória em um computador
A tecnologia atual de computadores envolve vários disposi-
tivos eletrônicos, que são interligados coerentemente (figura
4.1). Estes circuitos eletrônicos fazem a distinção entre dois
tipos de sinais elétricos, caracterizados pela passagem de cor-
rente elétrica em um ou dois sentido. Desta forma, os computa-
dores representam dados e operações por meio de dois símbolos,
constituindo a linguagem binária, usualmente descrita com 0 e 1
(zero e um).
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
47
A Unidade Central de Processamento (Figura 4.1) de um
computador utiliza uma memória de alta velocidade para arma-
zenar, temporariamente, dados e programas que estão sendo
processados, uma vez que um programa para ser executado tem
que estar na memória. Esta memória e denominada “memória
principal”, “memória de trabalho” ou “memória temporária”.
EXEMPLO DA VIDA REAL
Para entender melhor o que significa a memória no
aspecto computacional, imagine a seguinte situação do
mundo real:
Imagine um armário repleto de gavetas, onde seriam
armazenados fisicamente os objetos. Esses objetos podem ser
substituídos. Os objetos seriam os dados e as gavetas as
variáveis
A memória é semelhante, pois na memória (armário)
existem inúmeras variáveis (gavetas). Cada variável (gave-
ta) pode guardar apenas um dado (objeto) de cada vez, sendo
de um mesmo tipo (tipo primitivo).
Figura 4.2: Armários e gavetas
A B C
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
48
MEMÓRIA RAM (Random Access Memory): Ela também é
chamada “memória principal”,” memória de trabalho” ou
“memória temporária” (Random Access Memory - RAM), consis-
tindo de uma seqüência finita de unidades de armazenamento de
dados identificadas por um endereço único, descrito por um
número inteiro não negativo;
Vamos entender alguns conceitos importantes:
BIT:
? É o menor item da informação binária.
? A palavra bit é uma contração de Binary digit (dígito
binário). Significa que um dígito pode assumir um dos dois
valores ou estados diferentes 0 ou 1.
? Os bits quando são agrupados podem representar dados e
programas.
BYTE:
? É um conjunto de bits. (figura 4.3).
? Um byte é formado por 8 bits.
PALAVRA:
? É um conjunto de bytes.
? Uma palavra e formada por bytes, a quantidade de bytes
que formará uma palavra depende da máquina considera-
da.
Figura 4.3: Bit e Byte
1 0 1 1 0 1 0 1 0 1 0 0 0 0
bit
byte
A memória de um computador é constituída por um conjun-
to de bits, sendo que o byte, ou palavra, recebe um endereço a
fim de que os programas possam fazer referência aos seus dados.
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
49
A capacidade de um computador é medida pelo tamanho de
sua memória e a unidade utilizada para fazer essa medida é o
byte.
Cada 1024 Bytes representam 1 Kbyte (quilobyte).
Cada 1024 Kbytes representam 1 Mbyte (megabyte)
4.2 Constantes e Variáveis
Para entendermos melhor o uso da memória dentro dos
programas vamos introduzir o conceito de variável, constante e
identificadores.
4.2.1 Conceitos Iniciais
Variáveis e constantes são locais na memória principal,
com endereços que armazenam conteúdos. Em linguagens de
programação de alto nível, nos é permitido dar nomes a esses
endereços da memória para facilitar a programação, é o que
chamamos de Identificadores das constantes ou das variáveis do
programa.
4.2.2 Constantes
Uma constante é um determinado valor fixo que não se
modifica ao longo do tempo [FARRER89]. A constante é um dado
que pode ser criado pelo programador para armazenar um único
valor de um tipo definido. Este dado não sofre variações no seu
valor armazenado, ou seja:
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
50
O valor guardado em uma constante não sofre altera-
ção, se mantendo sempre o mesmo após a sua criação.
Este valor é constante do início até o fim da execução do
algoritmo, assim como é constante para as diferentes execuções
no tempo.
O nome dado a uma constante é um identificador. Quando
esta constante, descrita no algoritmo é traduzida para um
programa no computador, ela ocupará uma área da memória que
poderá ser acessada por meio de seu nome (identificador), mas o
valor armazenado nela nunca poderá ser alterado enquanto o
programa estiver em execução.
USANDO O VISUALG
O VisuAlg tem três tipos de constantes:
? Numéricos: Podem ser inteiros ou reais. O separador de
decimais é o ponto e não a vírgula. O VisuAlg também não
suporta separadores de milhares.
? Caracteres: qualquer cadeia de caracteres delimitada
por aspas duplas (").
? Lógicos: admite os valores VERDADEIRO ou FALSO.
4.2.3. Variáveis
LEMBRE-SE: Não é possível modificar o conteúdo da constante.
Uma variável fornece o nome a uma área de memória que
pode armazenar um ou vários valores de um mesmo tipo de dado.
51
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
EXEMPLO 4.1 - Exemplos de variáveis
Figura 4.4: Variáveis
Uma variável é identificada e acionada por um nome (iden-
tificador). Cada variável corresponde a uma posição de memó-
ria, cujo conteúdo pode ser alterado ao longo do tempo durante
a execução de um programa. Embora uma variável possa assumir
diferentes valores, ela só pode armazenar um valor a cada
instante.
No intuito de consolidar o conceito e a utilização das variá-
veis, considere o exemplo a seguir:EXEMPLO DA VIDA REAL
Você acabou de comprar um par de sapatos e é óbvio que
eles lhe foram entregues dentro de uma caixa. Esta caixa era
resistente e bela e você resolveu reutilizá-la para guardar
alguns documentos profissionais seus. Assim, sempre que
você desejava encontrar um documento deste tipo, sabia
exatamente onde eles estavam guardados. Com o passar do
tempo você trocou o conteúdo armazenado na caixa, passan-
do a guardar as suas caixas de CD. Com o desgaste da caixa
você, finalmente, resolveu jogá-la fora.
Variável
Conteúdo
da variável
Nome = “José”
Idade = 50
Variáveis
Total = Produto Quantidadex
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
52
4.2.4. Identificadores
Vamos conhecer melhor este conceito.
Identificador é o nome fornecido a um recurso computacio-
nal que o identifica. Um exemplo são os nomes próprios de
pessoas. Para identificar alguém você a chama pelo nome, pois
este a identifica como uma pessoa única. Quando alguém precisa
falar com você, simplesmente chama o seu nome.
EXEMPLO DA VIDA REAL
Continuando o exemplo do armário com várias gavetas
apresentado anteriormente. Observe que se no armário
(memória) existem inúmeras gavetas (variáveis), se faz
necessário diferenciá-las, o que é feito por meio de etiquetas
ou rótulos (Identificadores).
Da mesma forma que as gavetas do exemplo, em um algo-
ritmo todos os recursos de armazenamento e manipulação de
dados devem possuir nomes únicos que os identifiquem. Desta
Na situação anterior pode-se observar a variação do conte-
údo armazenado pela mesma caixa de sapatos. Esta variação
aconteceu de acordo com a sua necessidade no armazenamento
de coisas ao longo do tempo.
Uma variável funciona de forma similar a caixa de sapatos,
sendo que, como já vimos, ela é um espaço de memória que o
computador reserva para utilização de um programa. Quando o
programa termina, a variável é destruída, assim como a caixa de
sapatos foi jogada fora.
53
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
EXEMPLO 4.2:
Alpha , X , XYZ , FGTS
? Devem começar por um caractere alfabético, ou seja, por
uma letra;
EXEMPLO 4.3:
Notas J Salário J 98_notas L 5x L
? Não devem ser usados caracteres especiais (!@#$%&*/-
+<>?), ou seja no identificador só pode ter, após o primei-
ro caractere, letras, números e sublinhada ( _ );
EXEMPLO 4.4:
A:B ou a:b L x-y ou X-Y L nota 2 J
a98_notas J a_5x L
? Podem ser seguidos por mais caracteres alfabéticos ou
numéricos;
EXEMPLO 4.5:
A23 J abc123 J
? Não podem conter espaços em branco;
JJJJ
forma, quando um recurso for ser usado, ele será acionado pelo
seu nome para participar do processamento desejado dentro do
algoritmo.
Os identificadores são conjuntos de caracteres, que repre-
sentam constantes, variáveis, tipos, procedimentos, unidades,
programas e campos de um registro. A formação deste conjunto
de caracteres segue regras pré-determinadas, que são:
? Podem ter qualquer tamanho, mas no VisuAlg são conside-
rados apenas os 30 primeiros caracteres.
54
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
EXEMPLO 4.6:
Nome próprio abc 123
? Devem ser únicos;
? Não podem ter o mesmo nome de uma palavra reservada.
USANDO O VISUALG [HELPVISUALG]
Nomes de Variáveis e sua Declaração
Os nomes das variáveis devem começar por uma letra e
depois conter letras, números ou underline, até um limite de
30 caracteres. As variáveis podem ser simples ou estruturadas
(na versão atual, os vetores podem ser de uma ou duas dimen-
sões). Não pode haver duas variáveis com o mesmo nome,
com a natural exceção dos elementos de um mesmo vetor.
L L
4.1 – Marque (C) para correto e (I) para incorreto dentre os
identificadores abaixo; justificar os Incorretos.
a. W2YZ;
b. B10PQ;
c. AB,3Y;
d. 432mudar;
e. Lápis.cor;
f. Dia noite;
g. And;
4.2 – Assinale os identificadores válidos.
a) (w)
ATIVIDADES
55
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
4.3. Conceito de tipos de dados
Enquanto apresentávamos os conceitos de constantes e
variáveis diversas vezes citamos os tipos de dados. Vamos agora
apresentar este conceito.
Um tipo de dado é a identificação de como um dado poderá
se apresentar, qual a sua simbologia e quais operações podem ser
realizadas sobre o mesmo. Os tipos de dados escalares ou primi-
tivos são: inteiro, real, caractere e lógico.
Veja a seguir uma especificação mais detalhada dos tipos
de dados primitivos que um computador pode processar.
4.3.1 Tipos Primitivos
Antes de falar de tipos primitivos, vamos entender um
conceito muito importante: a informação. A informação é a
matéria-prima que faz com que seja necessária a existência dos
computadores, pois eles são capazes de manipular e armazenar
um grande volume de dados com alta performance, liberando o
homem para outras tarefas nas quais seu conhecimento é indis-
pensável [FORBELONE].
b) AwA
c) UHHi?
d) “maria”
e) *10
f) cm/G
g) P{0}
h) ASDRUBAL
i) DIAMÊS/ANO
j) TELEFONE
56
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
Pode não parecer, mas existe uma diferença entre dado e
informação. Por exemplo, ao citarmos uma data, como “24 de
outubro”, estamos apresentando um dado; ao dizermos que esta
data é o dia do aniversário da cidade de Manaus, estamos agre-
gando valor ao dado, apresentando uma informação.
Como vimos anteriormente o computador gera informação
através da manipulação dos dados que são armazenados nas
variáveis do programa. Este dado armazenado na variável do
programa pode ser de vários tipos primitivos: inteiro, real,
caractere, lógico entre outros [Lopes 02]. Quando ensinamos
algoritmos, trabalhamos com os quatro tipos citados.
Podemos agrupar estes tipos em: Numéricas, String,
Lógicas
4.3.1.1 Numéricas
São as variáveis e constantes que armazenam dados numé-
ricos representados por valores inteiros ou reais.
INTEIRO:
- Toda e qualquer informação numérica que pertença ao
conjunto dos números inteiros relativos (negativa, nula
ou positiva) [FORBELONE].
- Os números inteiros são aqueles que não possuem
componentes decimais ou fracionários, podendo ser
positivos ou negativos. [LOPES 02]
EXEMPLO 4.7
Vejamos algumas proposições declarativas comuns em que
é usado o tipo inteiro:
57
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
REAL:
Toda e qualquer informação numérica que pertença ao
conjunto dos números reais (negativa, nula ou positiva),
corresponde ao conjunto matemático dos valores numé-
ricos reais.
EXEMPLO 4.8
Vejamos algumas proposições declarativas comuns em que
é usado o tipo real:
a) Ela tem 1,73 metros de altura.
b) Meu saldo bancário e de 1000,00 reais.
c) No momento a bebê pesa 10 kilos.
Também conhecida como caractere, alfanumérica ou
literal. Formadas por um caractere ou uma seqüência de carac-
teres aceitos na simbologia da linguagem (símbolos especiais,
letras e números). Elas são representadas pelos caracteres
correspondentes colocados entre aspas (" ").
4.3.1.2 String
a) Ele tem 15 irmãos.
- Observe que 15 é um dado do tipo inteiro e a informação
surge quando associamos que 15 é o numero de irmãos
b) A escada possui 8 degraus.
- Observe que 8 é um dado do tipo inteiro e a informação
surge quando associamos que 8 é o numero de degraus
c) Meu vizinho comprou 2 carros novos.
- Observe que 2 é um dado do tipo inteiro e a informação
surge quando associamos que 2 é o número de carros
novos
58
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
CARACTER:
Toda e qualquer informaçãocomposta de um conjunto
de caracteres alfanuméricos: numéricos(0..9),
alfabéticos (A..Z,a..z) e especiais (por exemplo *, &, ^,
%, #, $), estando sempre descritos entre aspas (“”). O
conjunto de caracteres também é chamado de cadeia de
caracteres ou string.
EXEMPLO 4.9
Vejamos algumas proposições declarativas comuns em que
é usado o tipo caractere:
a) Constava no aviso “Não entre.”.
b) O parque municipal estava repleto de placas: “Não pise
na grama”.
c) O nome do santo é “São Jorge”.
4.3.1.3 Lógicas
Também conhecido como Booleano. É representada no
algoritmo pelos dois únicos valores lógicos possíveis:
VERDADEIRO/ FALSO ou SIM/NÃO ou TRUE/FALSE ou 1/0.
LÓGICO:
Toda e qualquer informação que pode assumir apenas
duas situações (biestáveis). Conjunto de valores possíve-
is na lógica convencional (booleana) - FALSO ou
VERDADEIRO. Esse tipo só apresenta um desses dois
valores, sendo eles mutuamente exclusivos.
59
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
4.3 – Escreva o tipo de dado ideal par se representar as seguintes
informações.
a. O número de telefone;
b. Número de alunos de uma classe
c. Se uma pessoa gosta de bolo ou não.
d. O valor de um carro.
e. A cor de uma casa.
f. Resultado de uma divisão.
g. Total de jogadores de um time.
4.4 – Identificar os tipos dos seguintes dados.
a) “Mariana”
b) 0.10;
c) “11.9E10”;
d) False;
e) “!”;
f) “ ”;
g) 30
ATIVIDADES
EXEMPLO 4.10
Vejamos algumas proposições declarativas comuns em que
é usado o tipo lógico:
a) A porta está aberta ou fechada.
b) A lâmpada pode estar acesa ou apagada.
IMPORTANTE:
Uma vez definidos o nome (identificador) e
o tipo de uma variável ou constante, não é
possível alterá-los no decorrer de um algo-
ritmo.
60
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
4.5 – Declare corretamente as variáveis e os respectivos tipos
primitivos para:
a) NOME DO ALUNO:
b) NOTA DO ALUNO:
c) NÚMERO DA MATRÍCULA:
d) SEXO:
4.6 – Identifique os erros nas declarações de variáveis apresenta-
das a seguir:
a) Inteiro: NOTA, RUA
b) Caracter: PESO,NOME,ENDERECO
c) Real: MENSALIDADE, PESO
d) Lógico: NOTA, APROVADO
4.7 – Determine qual o tipo primitivo de informação presente nas
sentenças a seguir:
a) Na placa esta escrito “Não pise na grama”.
b) O preço das 5 maçãs era 4,50 reais.
c) A altura do prédio era de 20 metros.
d) Nos jogos do Pan Xuxa ganhou 3 medalhas e alcançou o record
de 40,2 segundos
4.8 – Determine qual o tipo primitivos dos seguintes dados:
a) 10
b) 10.0
c) -10
d) “10”
e) -30.025x 10 13
f) “fim de questão”
61
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
EXEMPLO DA VIDA REAL
Na caixa de sapatos, vista anteriormente, provavel-
mente não caberiam todos os seus livros da estante, e seria
no mínimo impróprio se tentar guardar água dentro dela. É
por isso que uma variável deve ter o seu tipo de dado defini-
do, identificando por meio dele, exatamente, quais as
informações que poderão ser armazenadas nesta variável.
Como pôde ser observado, a declaração de variáveis é bem
parecida com a de constantes, devendo ser informado qual o tipo
4.4. Declaração de Variáveis e Constantes
Como citamos anteriormente, as variáveis e as constantes
podem ser basicamente de quatro tipos: numéricas, caracteres,
alfanuméricas ou lógicas.
A especificação do tipo de dados correto é fundamental
para o computador, pois ele reconhecerá quais dados podem ou
não sofrer determinadas manipulações e quais as necessidades
de espaços para a efetivação do armazenamento de cada dado
ou informação a ser processada.
No caso das variáveis, elas só podem armazenar valores de
um mesmo tipo. Veja a seguir uma especificação mais detalhada
dos tipos de dados primitivos que um computador pode proces-
sar.
Mas agora surge uma pergunta: Qual o tamanho do espaço
de memória que o computador reserva para meu programa? Isso
é você, programador, quem decide.
62
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
de seu conteúdo e qual o seu nome. A principal diferença entre
estes recursos ou objetos consiste na possibilidade de modifica-
ção do conteúdo armazenado na variável, sendo ele alterado
quantas vezes forem necessárias para o correto funcionamento
do algoritmo e conseqüentemente do programa.
USANDO O VISUALG [HELPVISUALG]
A seção de declaração de variáveis começa com a palavra-
chave var, e continua com as seguintes sintaxes:
<lista-de-variáveis> : <tipo-de-dado>
<lista-de-variáveis> : vetor "["<lista-de-
intervalos>"]" de <tipo-de-dado>
Na <lista-de-variáveis>, os nomes das variáveis estão separa-
dos por vírgulas.
4.5 Uso de Variáveis na Entrada e Saída de Dados
Para fazer uma comida precisamos seguir uma receita. Na
receita encontramos a declaração dos ingredientes necessários
para sua execução e temos uma saída que e o produto resultante
deste processo que será a comida.
Entrada Processamento Saída
Percepção das
impressões
sensoriais
Saída do resultado
dos processos
de pensamento
Processo de Pensamento
Com o auxílio da nossa memória,
executamos diversos processos,
como controlar, comparar
combinar, deduzir, etc.
Figura 4.5 - Representação do Processamento
?? ??
?
63
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
Preparo:
Numa panela, aqueça o azeite de oliva e refogue a
cebola até murchar. Acrescente a carne e refogue
por mais 3 minutos. Junte a mandioca e a cenoura
picada e 1 xícara (chá) de água.
Cozinhe, mexendo de vez em quando, por 25
minutos ou até os legumes ficarem macios. Então,
adicione o macarrão e uma pitada de sal e cozinhe
até ficar macio e com um pouco de caldo. Coloque
a preparação em um prato e amasse.
Algoritmo
Saída
No processo de execução da receita inserimos os diversos
ingredientes declarados, realizando assim uma entrada de
substâncias, executamos os passos descritos para então termos
como saída deste processo a comida pronta.
Analogamente podemos dizer que:
Papa de carne, cenoura e mandioca
Ingredientes:
110g de mandioca
100g de cenoura pequena
1 colher (sopa) de cebola ralada
2 colheres (chá) de azeite de oliva
100g de carne moída
5 colheres (sopa) de macarrão conchinha
Declaração das
variáveis de entrada
Figura 4.6 - Receita
Fonte: www.cybercook.com.br
64
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
Os ingredientes declarados na receita correspondem à
declaração das variáveis de entrada
A receita corresponde ao algoritmo
A comida pronta corresponde à saída.
O Comando de Entrada de Dados que utilizaremos nos
algoritmos apresentados será:
leia (<lista-de-variáveis>)
Através deste comando é possível receber os valores digita-
dos pelos usuários e atribui-los às variáveis cujos nomes estão em
<lista-de-variáveis> (é respeitada a ordem especificada nesta
lista).
USANDO O VISUALG [HELPVISUALG]
Veja no exemplo abaixo o resultado:
algoritmo "exemplo 1”
var x: inteiro;
inicio
leia (x)
escreva (x)
fimalgoritmo
O comando de leitura acima irá exibir uma janela com a
mensagem padrão:
"Entre com o valor de <nome-de-variável>”
O Comando de Saída que utilizaremos nos algoritmos
apresentados será:
escreva (<lista-de-expressões>)
Este comando escreve no dispositivo de saída padrão o
conteúdo de cada uma das expressões que compõem <lista-de-
65
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
expressões>. De acordo com a sintaxe do VisuAlg, as expressões
dentro desta lista devem estar separadas por vírgulas; depois de
serem avaliadas, seus resultados são impressos na ordem indica-
da.
USANDO O VISUALG[HELPVISUALG]
Exemplos:
algoritmo "exemplo”
var x: real
y: inteiro
a: caractere
l: logico
inicio
x <- 2.5
y <- 6
a <- "teste”
l <- VERDADEIRO
escreval ("x", x:4:1, y+3:4) // Escreve: x 2.5 9
escreval (a, "ok") // Escreve: teste ok (e depois pula
linha)
escreval (a, " ok") // Escreve: teste ok (e depois
pula linha)
escreval (a + " ok") // Escreve: teste ok (e depois
pula linha)
escreva (l) // Escreve: VERDADEIRO
fimalgoritmo
66
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
EXEMPLO 4.11
PROBLEMA:
Imprimir a mensagem: “O ALUNO DEVE EXERCITAR PARA
APRENDER”
RESOLUÇÃO:
O Algoritmo 4.1 mostra uma solução que utiliza apenas
uma seqüência simples.
algoritmo "imprimindo frase"
var
num : inteiro
inicio
escreval "O ALUNO DEVE EXERCITAR PARA APRENDER”)
fimalgoritmo
Algoritmo 4.1: Imprime frase.
4.9 Imprimir seu nome
4.10 Ler um número inteiro e imprima-o
4.11 Criar um algoritmo que imprima a media aritmética entre os
números 10, 15 e 20.
4.12 Ler um número inteiro e imprimir seu sucessor e seu ante-
cessor
4.13 Ler dois números inteiros. Antes do resultado deve aparecer
a palavra “Resultado:”
4.14 Ler o Nome, Endereço e Telefone e imprimí-los.
ATIVIDADES
67
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
4.6 Palavras Reservadas
Os identificadores devem ser únicos dentro do programa,
ou seja, não pode haver duas variáveis ou constantes com o
mesmo nome. Nesta regra inclui-se as palavras reservadas.
Palavras reservadas são identificadores que já foram usados pela
linguagem de programação, ou seja, se caso o programador
utilizar uma palavra reservada para declarar uma variável ou
constante no programa, estará infringindo a regra de que não se
pode repetir o nome dos identificadores em um mesmo algorit-
mo.
Segue abaixo uma tabela de palavras que geralmente são
reservadas, ou seja, que já foram destinadas pelas linguagens de
programação (seja portugol, ou linguagens de programação
comerciais ou acadêmicas) para identificar outros elementos
dentro dos algoritmos.
Estas palavras apresentadas na tabela 4.1 fazem parte da
lista de palavras reservadas do VisuAlg.
aleatorio
algoritmo
arquivo
ate
caractere
caso
cronometro
debug
e
eco
enquanto
entao
escolha
escreva
escreval
faca
falso
fimalgoritmo
fimenquanto
fimescolha
fimfuncao
fimpara
fimprocedimento
fimrepita
fimse
funcao
inicio
int
inteiro
interrompa
leia
limpatela
logico
mod
nao
ou
outrocaso
para
passo
pausa
real
procedimento
repita
retorne
se
senao
timer
var
vetor
verdadeiro
xou
Tabela 4.1 - Lista de palavras reservadas
68
4.7 Revisão
Variáveis e constantes são os elementos básicos que um
programa manipula, é um espaço reservado na memória do
computador para armazenar um tipo de dado determinado.
Variáveis e constantes devem receber nomes para poderem ser
referenciadas e no caso das variáveis, para poderem ser
modificadas quando necessário. Um programa deve conter
declarações que especificam de que tipo são as variáveis e as
constantes que ele utilizará e um valor inicial, não obrigatório no
caso das variáveis. Esses tipos podem ser derivados dos tipos
primitivos como, por exemplo: inteiros, reais, caracteres, etc.
As expressões combinam variáveis e constantes para calcular
novos valores.
A seguir estão detalhados esses conceitos.
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
69
Introdução à Informática
Tecnologia em Análise e
Desenvolvimento de Sistemas
Expressões e operadores
Capítulo 5
Lógica de Programação I
Tecnologia em Análise e Desenvolvimento de Sistemas
Os operadores têm grande utilidade no desenvolvimento de
algoritmos, com eles é possível comparar e efetuar cálculos
entre constantes e variáveis. Comandos utilizando operadores
serão muito utilizados em nossos algoritmos.
A identificação das operações que podem ser executadas
sobre determinados tipos de dados são descritas por símbolos, ou
caracteres específicos, onde as operações aritméticas, relacio-
nais e lógicas são empregadas sobre os dados.
5.1. Operador de Atribuição
A operação de atribuição é uma forma muito natural para
especificar que uma variável irá receber um valor.
O comando de atribuição permite que seja fornecido um
valor a certa variável, porém, a natureza deste valor tem que ser
compatível com o tipo da variável na qual está sendo armazena-
do.
A operação de atribuição consiste na possibilidade de um
recurso ou objeto poder receber (ou armazenar) um dado
(ou valor).
70
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
OPERAÇÃO SÍMBOLO
ATRIBUIÇÃO
A representação geral do comando de atribuição é:
IDENTIFICADOR EXPRESSÃO
Onde:
IDENTIFICADOR é o nome da variável a qual esta sendo atribuído o valor;
ßÉ o símbolo de atribuição
EXPRESSÃO
pode ser uma expressão aritmética, expressão lógica
ou expressão literal de cuja avaliação é obtido o valor
a ser atribuído a variável.
Sua sintaxe sempre atribui ao recurso identificado à
esquerda do símbolo de atribuição o valor ou resultado da opera-
ção existente a direita do mesmo símbolo.
EXEMPLO 5.1
? X 10
? Indica que a variável x irá receber o valor 10. Portanto a
variável X á do tipo NUMÉRICO INTEIRO
? Y 5.2 + 3.0
? Indica que a variável Y ira receber o RESULTADO da
EXPRESSÃO 5.2+3.0 que é 8.2, logo a variável Y é do tipo
NUMÉRICO REAL
Após a execução do comando a variável conterá o valor
atribuído e uma vez que uma palavra na memória pode conter
71
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
somente um valor por vez, o valor atual substitui qualquer valor
armazenado anteriormente na palavra. Assim pode-se dizer que
esta é uma operação destrutiva, pois qualquer valor que a variá-
vel possuía antes do processamento da operação de atribuição se
perdeu, sendo substituído pelo novo valor.
Observe esta seqüência de operações de atribuições:
X 500
X 1000
X 200
Ao final da seqüência o valor da variável X será 200. Os
valores 500 e 1000 forma destruídos (substituídos).
ß
ß
ß
USANDO O VISUALG [HELPVISUALG]
A atribuição de valores as variáveis é feita com o operador
<-. Do seu lado esquerdo fica a variável à qual está sendo
atribuído o valor, e à sua direita pode-se colocar qualquer
expressão (constantes, variáveis, expressões numéricas),
desde que seu resultado tenha tipo igual ao da variável.
Alguns exemplos de atribuições, usando as variáveis
declaradas acima:
a <- 3
Valor1 <- 1.5
Valor2 <- Valor1 + a
vet[1] <- vet[1] + (a * 3)
matriz[3,9] <- a/4 – 5
nome_do_aluno <- "José da Silva"
sinalizador <- FALSO
72
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
5.2 Expressões Aritméticas:
EXPRESSÕES ARITMÉTICAS: Expressões cujos operadores
são aritméticos e cujos operandos são constantes ou variáveis do
tipo numérico (inteiro ou real)
As expressões aritméticas são realizadas através dos opera-
dores aritméticos.
5.2.1. Operadores aritméticos
Os operadores aritméticos são os utilizados para obter
resultados numéricos. São conjuntos de símbolos que represen-
tam as operações básicas da matemática como: adição, subtra-
ção, multiplicação, divisão, e exponenciação.
As operações aritméticas mais comuns são representadas
pelos símbolos descritos na tabela 5.1.
FUNCÃO OPERADOR OPERANDOS RESULTADOS EXEMPLOS
Adição + Inteiro, Real Inteiro, Real 4+4, a+b
Subtração -
Inteiro, Real
Inteiro, Real
4-5, a-b
Multiplicação *
Inteiro, Real
Inteiro, Real4*5, A*B
Divisão /
Inteiro, Real
Real
4/5, a/b
Divisão inteira
DIV
Inteiro
Inteiro
Resto da divisão MOD Inteiro Inteiro
Tabela 5.1 - Operações Aritméticas
Na resolução das expressões aritméticas, as operações
guardam uma hierarquia entre si, como mostra a tabela 5.2.
PRIORIDADE OPERADORES
1 º ( ) Parênteses
2 º Exponenciação
3 º Multiplicação, divisão (o que aparecer primeiro)
4 º + ou – (o que aparecer primeiro)
Tabela 5.2 - Hierarquia das Operações Aritméticas
73
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
EXEMPLO 5.2
TOTAL = PREÇO * QUANTIDADE
3 * (1—2) + 4 * 2 = 5
EXEMPLO 5.3 [SALVETTI98]
PROBLEMA :
Calcular a soma de dois números inteiros.
RESOLUÇÃO:
O primeiro passo é obter os dados do problema que são dois
números, em seguida somar esses dois valores e, finalmente,
fornecer o valor de saída, que é o resultado da operação efetua-
da. Vamos ver a seqüência das operações:
- leitura dos dados.
- soma dos valores e
- saída do resultado.
A obtenção dos dados consiste no armazenamento dos
mesmos em localizações da memória do computador, identifica-
das por um endereço. Um endereço pode ser representado por
meio de um nome qualquer, que chamamos de identificador que
compõem as variáveis.
Neste problema a entrada consiste de dois números inteiros
nomeados de A e B. A saída será identificada pela variável SOMA.
A adição é representada por A+B.
74
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
O fornecimento de valores às variáveis A e B é indicado pela
instrução:
leia (A,B)
A atribuição de um valor a uma variável é indicado pelo
símbolo <-:
soma <-(A+B)
Finalmente, para representar a saída de informações,
utilizamos a instrução de saída:
escreva(soma)
O Algoritmo 4.2 mostra uma solução em pseudocódigo.
algoritmo "soma de 2 números"
var
A : inteiro
B : inteiro
soma : inteiro
inicio
leia(A,B)
soma <- (A+B)
escreva(soma)
fimalgoritmo
Algoritmo 5.1: Soma de 2 números.
5.3 Expressões Lógicas
É comum nos algoritmos surgirem situações em que a
execução de uma ação ou seqüência de sub-ações, está sujeita a
certa condição. Esta condição é representada no texto do algo-
ritmo por meio de uma expressão lógica.
EXPRESSÕES LÓGICAS: Expressões cujos operadores são
lógicos ou relacionais e cujos operandos são relações, constantes
ou variáveis do tipo lógico.
75
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
As expressões lógicas sempre retornaram True (Verdadeiro)
e False (Falso). Para se montar expressões lógicas são utilizados
operadores relacionais e operadores lógicos. A seguir você
entenderá o que são e como funciona cada um destes operado-
res. Observe que a utilização das expressões lógicas somente
será aplicada em termos com o mesmo tipo de dados.
5.3.1. Operadores relacionais
Os operadores relacionais são utilizados para comparar
duas expressões ou variáveis e retornar se a comparação é
verdadeira ou falsa (valor lógico). Os valores comparados são
representados por constantes, variáveis ou expressões aritméti-
cas.
Os operadores relacionais são:
Os símbolos utili-
zados para comparação
entre expressões são:
Variável com variável Variável com Constante
Numérica
Código = Codant
Sim
Não
Código = 1000 Sim
Não
Variável com Constante
Alfanumérica
Nome: “JOSÉ”
Sim
Não
OPERADOR OPERAÇÃO EXEMPLO RESULTADO
= Igual 1 = 2 FALSE
> Maior 5 > 2 TRUE
< Menor 11 < 4 FALSE
>= Maior ou Igual 3 >= 3 TRUE
<= Menor ou igual TRUE <= FALSE FALSE
<> Diferente 2 + 3 <> 5 FALSE
Tabela 5.3 - Operadores relacionais
Figura 5.1 - Variáveis
76
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
EXEMPLO 5.4
Tendo duas variáveis A = 5 e B = 3, os resultados das expres-
sões seriam:
5.3.2. Operadores lógicos
É possível identificar as operações lógicas por meio dos
símbolos apresentados na tabela 5.4 a seguir. As características
existentes nestas operações são empregadas na elaboração dos
algoritmos e conseqüentemente nos programas que deles resul-
tarão. Os operadores lógicos servem para combinar resultados
de expressões, retornando se o resultado final é verdadeiro ou
falso. Os operadores lógicos são:
OPERAÇÃO
SÍMBOLO
DESCRICÃO
CONJUNÇÃO
E – AND Uma expressão AND (E) é verdadeira se todas as
condições forem verdadeiras
DISJUNÇÃO
OU – OR
Uma expressão OR (OU) é verdadeira se pelo menos
uma condição for verdadeira
NEGAÇÃO NÃO – NOT Uma expressão NOT (NÃO) inverte o valor da expressão
ou condição, se verdadeira inverte para falsa e vice-
versa.
Tabela 5.4: Operações lógicas
A tabela 5.5 mostra todos os valores possíveis criados pelos
três operadores lógicos (AND, OR e NOT):
Expressão Resultado
A = B
A <> B
A > B
A < B
A > = B
A < = B
Falso
Verdadeiro
Verdadeiro
Falso
Verdadeiro
Falso
77
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
A ordem de prioridade em que uma expressão lógica obede-
ce, esta apresentada na tabela 5.6
EXEMPLO 5.5
Considere três variáveis A = 15, B =18 e C =11. Os resultados
das expressões seriam:
USANDO O VISUALG [HELPVISUALG]
Operadores Aritméticos
+,- Operadores unários, isto é, são aplicados a um único
operando. São os operadores aritméticos de maior
O1 Valor
T
T
F
F
T
T
F
F
T
F
Operador
AND
AND
AND
AND
OR
OR
OR
OR
NOT
NOT
2 Valor
T
F
T
F
T
F
T
F
O Resultado
T
F
F
F
T
T
T
F
F
T
Prioridade Operadores
1ª Not
2ª And
3ª Or
4ª = > < >= <= <>
Tabela 5.5 - Valores dos Operadores Lógicos
Tabela 5.6 - Prioridades
Expressões
AND
OR
NOT
AND
OR
NOT
B > C
B < C
B > C
B = C
Resultado
Falso
Verdadeiro
Verdadeiro
Verdadeiro
Falso
Falso
A = B
A <> B
A > B
A < B
A >= B
A <= B
78
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
+,-,*,/
Operadores aritméticos tradicionais de adição, subtração,
multiplicação e divisão. Por convenção, * e / têm
precedência sobre + e - . Para modificar a ordem de
avaliação das operações, é necessário usar parênteses
como em qualquer expressão aritmética.
MOD
ou %
Operador de módulo (isto é, resto da divisão inteira). Por
exemplo, 8 MOD 3 = 2. Tem a mesma precedência do
operador de divisão tradicional.
^
Operador de potenciação. Por exemplo, 5 ^ 2 = 25. Tem a
maior precedência entre os operadores aritméticos binários
(aqueles que têm dois operandos).
Operadores de Caracteres
Operador de concatenação de strings (isto é, cadeias de
caracteres), quando usado com dois valores (variáveis ou
constantes) do tipo "caractere". Por exemplo: "Rio " + "
de Janeiro" = "Rio de Janeiro".
+
Operadores Relacionais
=, <, >,
<=, >=,
<>
Respectivamente: igual, menor que, maior que, menor ou igual
a, maior ou igual a, diferente de. São utilizados em expressões
lógicas para se testar a relação entre dois valores do mesmo tipo.
Exemplos: 3 = 3 ( 3 é igual a 3?) resulta em VERDADEIRO;
"A" > "B" ("A" está depois de "B" na ordem alfabética?) resulta
em FALSO.
Importante: No VisuAlg, as comparações entre strings não
diferenciam as letras maiúsculas das minúsculas. Assim, "ABC" é
igual a "abc". Valores lógicos obedecem à seguinte ordem: FALSO
< VERDADEIRO.
\ Operador de divisão inteira. Por exemplo, 5 \ 2 = 2. Tem a mesma precedência do operador de divisão tradicional.
precedência. Exemplos: -3, +x. Enquanto o operador
unário -inverte o sinal do seu operando, o operador + não
altera o valor em nada o seu valor.79
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
nao
Operador unário de negação. não VERDADEIRO =
FALSO, e não FALSO = VERDADEIRO. Tem a maior
precedência entre os operadores lógicos. Equivale ao
NOT do Pascal.
Operadores Lógicos
Operador que resulta VERDADEIRO quando um dos seus
operandos lógicos for verdadeiro. Equivale ao OR do
Pascal.
ou
Operador que resulta VERDADEIRO somente se seus
dois operandos lógicos forem verdadeiros. Equivale ao
AND do Pascal.
Operador que resulta VERDADEIRO se seus dois
operandos lógicos forem diferentes, e FALSO se forem
iguais. Equivale ao XOR do Pascal.
E
xou
5.1- Considerando que X = 1, Y = 2 e Z = 5, desenvolva.
a. Z mod Y div Y
b. X + Y + Z / 3
c. FRAC (X / Z) + ROUND (Z / Y) * TRUNC (Z / Y)
d. SQRT (Z div Y + X * Y)
e. Z – ABS (X – SQR(Y))
5.2- Dadas as comparações abaixo, escreva os resultados.
a. 3 = 3.0
b. a' <= “A”
c. “=”
d. CASA <> “casa”
e. FALSE = FALSE
f. JOAQUIM' < “JOSE”
g. 22' > “200”
ATIVIDADES
80
5.3- Sendo A = TRUE e B = FALSE. Qual o resultado das expressões
abaixo?
a. not A and B or A and not B
b. not (not (A or B) and (A or B))
c. A or B and not A or not B
d. (A or B) and (not A or not B)
5.4 - Tendo as variáveis SALARIO, IR e SALLIQ, e considerando os
valores abaixo. Informe se as expressões são verdadeiras ou
falsas.
5.5 - Sabendo que A=3, B=7 e C=4, informe se as expressões
abaixo são verdadeiras ou falsas.
a. (A+C) > B ( )
b. B >= (A + 2) ( )
c. C = (B –A) ( )
d. (B + A) <= C ( )
e. (C+A) > B ( )
5.6 - Sabendo que A=5, B=4 e C=3 e D=6, informe se as expressões
abaixo são verdadeiras ou falsas.
a. (A > C) AND (C <= D) ( )
b. (A+B) > 10 OR (A+B) = (C+D) ( )
c. (A>=C) AND (D >= C) ( )
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
100,00
200,00
300,00
0,00
10,00
15,00
100
190,00
285,00
(SALLIQ > = 100,00)
(SALLIQ < = 190,00)
SALLIQ = SALÁRIO - IR
SALÁRIO IR SALLIQ EXPRESSÃO V ou F
81
Introdução à Informática
Tecnologia em Análise e
Desenvolvimento de Sistemas
Estrutura de um
algoritmo
Capítulo 6
Lógica de Programação I
Tecnologia em Análise e Desenvolvimento de Sistemas
A partir deste capítulo, os algoritmos serão construídos em
uma estrutura em “pseudocódigo” ou “português estruturado”
como mostrado no Algoritmo 6.1.
algoritmo "<nome do algoritmo>"
var
<lista de variáveis> : <tipo>
inicio
<comando 1>
<comando 2>
<comando 3>
.
.
.
<comando n>
fimalgoritmo // isto é um comentário
Declaração do
algoritmo
Seção de declaração
de variáveis
Bloco de
comandos
Comentário
Algoritmo 6.1. Estrutura de um algoritmo.
No Algoritmo 6.1, encontramos inicialmente a declaração
do nome do algoritmo, em seguida, vem a seção de declaração
de variáveis e finalmente o corpo do algoritmo, delimitado por
uma estrutura seqüencial como será visto na seção a seguir.
82
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
Comentários feitos dentro dos algoritmos são bem vindos, e são
precedidos de //.
6.1 Estruturas de controle
O fluxo de execução de um algoritmo deve ser tal que
execute as ações necessárias para realizar a tarefa a que se
propõe. Para que isto aconteça, é necessário o uso das estruturas
básicas de controle do fluxo de execução:
? Seqüenciação
? Seleção (Decisão)
? Repetição (Iteração, Loop)
Estas estruturas devem ser combinadas, como um mosaico,
a fim de refletir a solução que se deseja, de acordo com o proble-
ma enunciado.
Nas próximas seções serão descritas as estruturas de con-
trole básicas que serão utilizadas no decorrer deste curso e que
também podem ser encontradas na maioria das linguagens de
programação.
6.1.1 Estrutura Seqüencial
Também conhecida como bloco de comandos, esta é a
estrutura básica mais simples. Trata-se apenas da reunião de
diversos comandos que serão executados de cima para baixo, em
seqüência [FORBELLONE05].
Normalmente cada linha corresponde a um comando para
facilitar a leitura e a compreensão do algoritmo.
Estruturas seqüenciais são definidas quando se deseja
83
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
agrupar diversos comandos relacionados. A estrutura seqüencial
mais comum é aquela que define o início e o fim do algoritmo
como vemos no Algoritmo 6.1.
DICAS:
Nas linguagens de programação, os comandos são geral-
mente separados por ponto-e-vírgula. Isto possibilita que
mais de um comando seja escrito por linha.
Neste curso de lógica, você deve colocar apenas um
comando por linha, o ponto-e-vírgula não é necessário. Com
esta estratégia, os algoritmos ficam mais legíveis
Outra estratégia muito usada é a de indentar os blocos de
comandos. Indentar significa afastar (use a tecla tab ou 4
espaços) todos os comandos do bloco, de modo que facilite a
leitura do algoritmo.
inicio //identificação do início do bloco de comandos do
algoritmo
<comando 1>
<comando 2>
<comando 3>
.
.
.
<comando n>
fimalgoritmo // término do bloco de comandos.
A seguir serão mostrados exemplos de algoritmos que
utilizam apenas comandos agrupados em uma estrutura seqüen-
cial.
EXEMPLO 6.1
PROBLEMA:
Ler 4 notas de um aluno, calcular e escrever a sua média.
Algoritmo 6.2. Modelo geral da estrutura seqüencial de um algoritmo.
84
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
RESOLUÇÃO (Algoritmo 6.3):
? Ler as 4 notas, n1, n2, n3, n4 (variáveis do tipo real)
? Calcular a média e armazenar ou atribuir a uma variável
media (note que um valor calculado não é lido)
? Escrever o resultado do cálculo contido em media.
algoritmo "Media de 4 notas"
var
n1, n2, n3, n4, media : real
inicio
leia (n1, n2, n3, n4)
media <- (n1 + n2 + n3 + n4) / 4
escreva ("A media é:", media)
fimalgoritmo
Algoritmo 6.3. Cálculo da média de 4 notas de um aluno.
EXEMPLO 6.2
PROBLEMA:
Ler 3 notas de um aluno, calcular e escrever a sua média
ponderada segundo o critério de pesos de 2, 3 e 5, respectiva-
mente.
RESOLUÇÃO (Algoritmo 6.4):
? Ler as 3 notas, n1, n2, n3 (variáveis do tipo real)
? Calcular a média e armazenar ou atribuir a uma variável
mediaFinal (note que um valor calculado não é lido)
? Escrever o resultado do cálculo contido em media.
algoritmo "Conversão de graus Fahrenheit para Celsius"
var
celsius, fahrenheit : real
inicio
leia(fahrenheit)
celsius <- (9/5) * (fahrenheit - 32)
escreva (celsius)
fimalgoritmo
Algoritmo 6.5. Conversão de graus Celsius para Fahrenheit. 85
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
algoritmo "Média Ponderada"
var
n1, n2, n3, mediaFinal : real
inicio
leia (n1, n2, n3)
mediaFinal <- ((2 * n1) + (3 * n2) + (5 * n3)) / 10
escreva (mediaFinal)
Algoritmo 6.4. Cálculo da média ponderada de 3 notas de um aluno.
EXEMPLO 6.3
PROBLEMA:
Ler uma temperatura em graus Fahrenheit e transformá-la
em Celsius segundo a fórmula: C = 5/9(F-32).
RESOLUÇÃO (Algoritmo 6.5):
? Ler a temperatura em graus para uma variável fahrenheit
(variável do tipo real)
? Converter a temperatura e armazenar em uma variável
celsius. (Note que a temperatura em Celsius não é lida,
pois será calculada).
? Escrever o resultado da conversão.
86
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
EXEMPLO 6.4
PROBLEMA:
Ler as coordenadas de dois pontos:
? Ponto 1 (P) em x1, y1 e
? Ponto 2 (Q) em x2, y2.
Calcular a distância (d) entre os dois pontos segundo a
fórmula:
RESOLUÇÃO (Algoritmo 6.6):
? Ler as coordenadas dos dois pontos: x1, y1, x2,y2 (variá-
veis do tipo real)
? Calcular a distância segundo a fórmula descrita acima
(verificar a sintaxe no algoritmo). Note que a raiz quadra-
da de um número é equivalente a elevar este número a ½.
? Escrever o resultado do cálculo.
algoritmo "Distância entre dois pontos"
var
x1, y1, x2, y2, distancia : real
inicio
leia (x1, y1)
leia (x2, y2)
distancia <- (((x2 - x1) ^ 2) + ((y2 - y1) ^ 2)) ^ 0.5
escreva (distancia)
fimalgoritmo
Algoritmo 6.6. Calcula a distância entre 2 pontos lidos.
d(P,Q) = (x — x )² + (y — y )²1 2 1 2
87
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
6.1.2 Estrutura de Seleção
Às vezes é necessário decidir por um ou por outro fluxo de
execução dentro de um algoritmo. Acontece que, dependendo
das circunstâncias (valores lidos, cálculos efetuados, condições
de erro), é preciso realizar ações diferentes dentro de um algo-
ritmo. A seguir, vemos alguns exemplos:
? Verificar se um divisor é diferente de zero a fim de realizar
uma operação de divisão;
? O usuário digitou um valor inválido? Dê uma mensagem de
erro.
? Caso o resultado seja negativo, transformar em positivo.
A estrutura de seleção, também conhecida por decisão, é
responsável por testar uma condição e desviar o fluxo de execu-
ção de acordo com a avaliação realizada [FORBELLONE05].
Uma condição é representada por expressões lógicas ou
relacionais e, ao serem avaliadas, podem ser satisfeitas, ou não.
Dizemos que o resultado é verdadeiro se a condição é satisfeita.
Quando a condição não é satisfeita, o resultado é falso.
Existem dois tipos de seleção: a seleção simples e a seleção
composta. Na seleção simples, se uma condição for verdadeira,
um bloco de comandos (BLOCO VERDADE) é executado como é
mostrado no Algoritmo 6.7. A seleção composta é responsável
por executar um bloco de comandos caso a condição seja verda-
deira (BLOCO VERDADE) e outro bloco de comandos caso a condi-
ção seja falsa (BLOCO FALSO). A seleção composta é mostrada no
Algoritmo 6.8.
Um bloco verdade é o conjunto de comandos entre as
cláusulas entao e fimse no caso de seleção simples. Em uma
Algoritmo 6.8. Estrutura de uma seleção composta.
88
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
seleção composta, o bloco verdade fica entre as cláusulas entao
e senao.
Um bloco falso existe apenas se a seleção é composta e está
definido entre as cláusulas senao e fimse.
Algoritmo 6.7. Estrutura de uma seleção simples
se <condição> entao
<comando 1>
<comando 2>
<comando 3>
.
.
.
<comando n>
fimse
Bloco
verdade
se <condição> entao
<comando 1>
<comando 2>
.
.
.
<comando n>
senao
<comando 1>
<comando 2>
.
.
.
<comando n>
fimse
Bloco
verdade
Bloco
falso
A seguir serão mostrados exemplos de algoritmos que
fazem uso da estrutura de seleção para solucionar os problemas
propostos.
89
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
EXEMPLO 6.5
PROBLEMA:
Lê quatro notas de um aluno e calcula a sua média, infor-
mando se o aluno está aprovado (média >= 6,0) ou reprovado
(média < 6,0).
RESOLUÇÃO (Algoritmo 6.9):
? Ler as 4 notas, n1, n2, n3, n4 (variáveis do tipo real)
? Calcular a média e armazenar ou atribuir a uma variável
media (note que um valor calculado não é lido)
? Escrever o resultado do cálculo contido em media.
? Escrever se o aluno está aprovado ou reprovado de acordo
com a média calculada. Se a média é maior ou igual a 6,0,
o aluno estará aprovado; caso contrário, estará reprova-
do.
algoritmo "Situação Aluno"
var
n1, n2, n3, n4, media : real
inicio
leia (n1, n2, n3, n4)
media <- (n1 + n2 + n3 + n4) / 4
escreva ("A media é:", media)
se media >= 6 entao
escreva ("O aluno está aprovado")
senao
escreva ("O aluno está reprovado")
fimse
fimalgoritmo
Algoritmo 6.9. Algoritmo Situação do Aluno.
EXEMPLO 6.6
PROBLEMA:
Ler 2 valores inteiros e escrever o resultado da divisão do
primeiro pelo segundo.
90
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
RESOLUÇÃO (Algoritmo 6.10):
? Ler dois valores inteiros v1, v2 (variáveis do tipo inteiro)
? Verificar se o segundo número é diferente de zero (não
existe divisão por zero).
? Realizar a divisão caso a condição acima seja satisfeita e
armazenar em uma variável divisao (variável do tipo real)
? Escrever o resultado deste cálculo.
algoritmo "Divisão de dois números lidos"
var
v1, v2 : inteiro
divisao : real
inicio
leia (v1, v2)
se v2 <> 0 entao
divisao <- v1 / v2
escreva (divisao)
fimse
fimalgoritmo
Algoritmo 6.10. Algoritmo divisão de dois números lidos.
EXEMPLO 6.7
PROBLEMA:
Ler 2 valores inteiros e escrever o resultado da divisão do
primeiro pelo segundo.
RESOLUÇÃO (Algoritmo 6.11):
? Ler dois valores inteiros v1, v2 (variáveis do tipo inteiro)
? Verificar se o segundo número é diferente de zero (não
existe divisão por zero).
? Realizar a divisão caso a condição acima seja satisfeita e
armazenar em uma variável divisao (variável do tipo real)
91
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
? Escrever o resultado deste cálculo.
? Exibir uma mensagem de erro no caso da condição não ser
satisfeita.
algoritmo "Divisão de dois números lidos com mensagem de
erro"
var
v1, v2 : inteiro
divisao : real
inicio
leia (v1, v2)
se v2 <> 0 entao
divisao <- v1 / v2
escreva (divisao)
senao
escreva ("Não é possível dividir por zero!")
fimse
fimalgoritmo
Algoritmo 6.11. Divisão de dois números inteiros com mensagem de erro.
EXEMPLO 6.8
PROBLEMA:
Ler 2 valores inteiros e informar se o segundo é divisor do
primeiro. Considere que o segundo valor nunca é zero.
RESOLUÇÃO (Algoritmo 6.12):
? Ler dois valores inteiros n1, n2 (variáveis do tipo inteiro)
? Verificar se o segundo número é divisor do primeiro (para
isto, basta testar se o resto da divisão inteira do primeiro
pelo segundo é igual a zero). O operador de resto é o %.
? Escrever o resultado do teste.
92
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
Algoritmo 6.12. Algoritmo divisor de um número.
EXEMPLO 6.9
PROBLEMA:
Ler um número inteiro e escrever se este é par ou ímpar.
RESOLUÇÃO (Algoritmo 6.13):
· Ler um número num (variável do tipo inteiro)
· Verificar se o valor lido é par ou ímpar (para isto, basta
testar se o resto da divisão inteira do número por dois é
igual a zero). O operador de resto é o %.
· Escrever o resultado do teste.
algoritmo "Par ou ímpar"
var
num : inteiro
inicio
leia (num)
se (num % 2) = 0 entao
escreval ("Número Par")
senao
escreval ("Número Ímpar")
fimse
fimalgoritmo
Algoritmo 6.13. Algoritmo Par ou Ímpar.
algoritmo "Divisores"
var
n1, n2 : inteiro
inicio
leia (n1, n2)
se (n1 % n2) = 0 entao
escreval (n2, " é divisor de", n1)
senao
escreval (n2, " não é divisor de", n1)
fimse
fimalgoritmo
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
93
algoritmo "Ordem crescente"
var
n1, n2 : inteiro
inicio
leia (n1, n2)
se n1 > n2 entao
escreval(n2, n1)
senao
escreval(n1, n2)
fimse
fimalgoritmo
Algoritmo 6.14. Algoritmo dois número em ordem crescente.
EXEMPLO 6.11
PROBLEMA:
Ler um raio não negativo para uma esfera e calcular seu
volume.
RESOLUÇÃO (Algoritmo 6.15):
? Ler o raio da esfera (variável do tipo real)
? Calcular o seu volume apenas se o raio é válido, ou seja,
não negativo. A fórmulado volume da esfera é dada por
? Volume = (4/3) ð R³
? Escrever o resultado do cálculo.
EXEMPLO 6.10
PROBLEMA:
Ler 2 valores inteiros e escrevê-los em ordem crescente.
RESOLUÇÃO (Algoritmo 6.14):
? Ler dois valores inteiros n1, n2 (variáveis do tipo inteiro)
? Escrever em ordem crescente, ou seja, o menor deve ser
escrito primeiro.
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
94
Algoritmo 6.15. Algoritmo Volume da Esfera.
6.1.2.1Seleção encadeada
Devido à complexidade do problema a ser resolvido por um
algoritmo, é comum serem utilizadas várias estruturas de sele-
ção [FORBELLONE05]. Quando existe uma ou mais seleções
dentro de outra seleção, chamamos esta estrutura de seleção
encadeada ou seleção aninhada. O Algoritmo 6.8 mostra uma
seleção encadeada.
EXEMPLO 6.12
PROBLEMA:
Lê uma idade e informa se a pessoa já alcançou a maiorida-
de ou não. Não se deve aceitar valores de idade inválidos.
RESOLUÇÃO (Algoritmo 6.16):
? Ler um valor inteiro idade (variável do tipo inteiro)
? Verificar se a idade está entre 0 e 17 anos. Neste caso, a
pessoa é menor de idade.
? Verificar se a idade está entre 18 e 130 anos. Neste caso, a
pessoa é maior de idade.
algoritmo "Volume da Esfera"
var
raio, volume : real
inicio
escreva("Raio da Esfera: ")
leia(raio)
se raio < 0 entao
escreval("O raio não pode ser negativo!")
senao
volume <- (4/3) * 3.14 * (raio ^ 3)
escreval("O volume da esfera é: ", volume)
fimse
fimalgoritmo
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
95
algoritmo "Maioridade"
var
idade : inteiro
inicio
leia (idade)
se (idade >=0) e (idade < 18) entao
escreva ("Indivíduo Menor de Idade")
senao
se (idade >= 18) e (idade <= 130) entao
escreva ("Individuo Maior de Idade")
senao
escreva ("Erro: Idade inválida!")
fimse
fimse
fimalgoritmo
Algoritmo 6.16. Maioridade.
EXEMPLO 6.13
PROBLEMA:
Ler um valor inteiro, determinar e escrever se o valor lido é
positivo, negativo ou zero.
RESOLUÇÃO (Algoritmo 6.17):
? Ler um valor inteiro num (variável do tipo inteiro)
? Verificar se o valor lido é maior que zero. Neste caso,
escrever “positivo”.
? Verificar se o valor lido é menor que zero. Neste caso,
escrever “negativo”.
? Se não for negativo, nem positivo, só resta escrever
“zero”.
? Deve-se exibir uma mensagem de erro para idades inváli-
das, tais como valores negativos e maiores de 130.
Algoritmo 6.17. Algoritmo Positivo, Negativo ou Zero.
EXEMPLO 6.14
PROBLEMA:
Ler uma nota quantitativa e escrever a nota qualitativa
segundo os critérios abaixo:
[0..2] Sem rendimento [7..8] Bom
[3..4] Insuficiente [9..10] Excelente
[5..6] Regular
RESOLUÇÃO (Algoritmo 6.18):
? Ler uma nota (variável do tipo real)
? Verificar a classificação de qualidade da nota de acordo
com as regras dadas e escrever o conceito apropriado.
algoritmo "Positivo, Negativo ou Zero"
var
num : inteiro
inicio
leia(num)
se num > 0 entao
escreval("Número positivo!")
senao
se num < 0 entao
escreval("Número Negativo!")
senao
escreval("Zero!")
fimse
fimse
fimalgoritmo
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
96
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
97
algoritmo "Nota Qualitativa"
var
nota : real
inicio
leia (nota)
se (nota >= 0) e (nota <=2) entao
escreva ("Sem Rendimento")
senao
se (nota = 3) ou (nota = 4) entao
escreva ("Rendimento Insuficiente")
senao
se (nota = 5) ou (nota = 6) entao
escreva ("Rendimento Regular")
senao
se (nota = 7) ou (nota = 8) entao
escreva ("Rendimento Bom")
senao
se (nota = 9) ou (nota = 10) entao
escreva ("Rendimento Excelente")
fimse
fimse
fimse
fimse
fimse
fimalgoritmo
Algoritmo 6.18. Algoritmo nota qualitativa.
EXEMPLO 6.15
PROBLEMA:
Lê uma idade e informa se a pessoa é um eleitor obrigatório
(entre 18 e 69 anos), facultativo (entre 16 e 17 anos e acima de
70) ou não é eleitor (menos de 16 anos).
RESOLUÇÃO (Algoritmo 6.19):
? Ler uma idade (variável do tipo inteiro)
? Verificar se a idade está entre 0 e 17 anos. Neste caso, a
pessoa não é um eleitor.
? Verificar se a idade está entre 18 e 69 anos. Neste caso, a
pessoa é um eleitor obrigatório.
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
98
Algoritmo 6.19. Eleitores.
EXEMPLO 6.16
PROBLEMA:
Calcula as raízes de uma equação o segundo grau (se houve-
rem) dados os coeficientes (a, b, c) da equação.
RESOLUÇÃO (Algoritmo 6.20):
? Ler os coeficientes da equação do segundo grau a , b, c.
? Calcular o delta e armazenar em uma variável.
? Se o delta for negativo, informar que não existem raízes
reais.
? Se o delta for zero, calcular e informar a única raiz real.
? Se o delta for positivo, calcular e informar as duas raízes
reais.
algoritmo "Eleitores"
var
idade: inteiro
inicio
leia (idade)
se (idade = 16) ou (idade = 17) ou ((idade >= 70) e (idade
<= 130)) entao
escreva ("Eleitor Facultativo")
senao
se (idade >= 18) e (idade < 70) entao
escreva ("Eleitor Obrigatório")
senao
se (idade >= 0) e (idade < 16) entao
escreva("Não é Eleitor")
senao
escreva ("Erro: Idade inválida!")
fimse
fimse
fimse
fimalgoritmo
? Verificar se a idade é 16 ou 17 anos ou acima de 70 anos.
Neste caso a pessoa é um eleitor facultativo.
99
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
algoritmo "Raízes da equação do 2o. Grau"
var
a, b, c, delta, x1, x2 : real
inicio
leia (a, b, c)
delta <- (b * b) - (4 * a * c)
se delta < 0 entao
escreval ("Não existem raízes reais")
senao
se delta = 0 entao
x1 <- (-b) / (2 * a)
escreval ("Apenas uma raiz real: ", x1)
senao
x1 <- ((-b) + (delta ^ 0.5)) / (2 * a)
x2 <- ((-b) - (delta ^ 0.5)) / (2 * a)
escreval ("Raiz 1: ", x1)
escreval ("Raiz 2: ", x2)
fimse
fimse
fimalgoritmo
Algoritmo 6.20. Raízes de uma equação do 2º grau.
6.1.2.2 Seleção de múltipla escolha
Este tipo de seleção é utilizado quando se necessita testar
um conjunto de valores discretos para uma mesma variá-
vel[FORBELLONE05]. Esta seleção também é conhecida como
seleção múltipla. A sua sintaxe é diferente da sintaxe dos outros
tipos de seleção.
Além dos valores discretos a serem testados, é possível
definir uma situação de exceção, quando nenhuma das alternati-
vas é válida. Para tanto, deve ser utilizada a cláusula outrocaso
como no exemplo do algotimo 6.22.
O algoritmo 6.21 mostra o modelo geral para uma estrutu-
ra de seleção de múltipla escolha.
escolha <variável>
caso <expressão constante 1>
<comando 1>
caso <expressão constante 2>
<comando 2>
...
caso <expressão constante n>
<comando n>
outrocaso
<este comando será executado se o valor testado
não corresponder a nenhuma opcao>
fimescolha
Algoritmo 6.21. Modelo geral da seleção de múltipla escolha.
EXEMPLO 6.17
PROBLEMA:
Ler um código que representa uma escolha de um cardápio.
Escrever o nome do prato correspondente. De acordo com os
valores abaixo:
1: Peixe frito
2: Frango à milanesa
3: Churrasco
4: Pizza
5: Hamburguer com fritas
6: Feijoada
RESOLUÇÃO (Algoritmo 6.22):? Ler um código numérico:
? De acordo com o valor lido para o código, escrever o nome
do prato correspondente.
100
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
EXEMPLO 6.18
PROBLEMA:
Ler o nome de um time de futebol e informar se é um dos
times cariocas, paulistas ou de outro estado.
RESOLUÇÃO (Algoritmo 6.23):
? Ler um nome de time (variável do tipo caractere)
? De acordo com nome, escrever a naturalidade do time.
algoritmo "Pratos de um cardápio"
var
codPrato : inteiro
inicio
escreva ("Entre com o código do prato: ")
leia (codPrato)
escolha codPrato
caso 1
escreval ("Peixe frito")
caso 2
escreval ("Frango à milanesa")
caso 3
escreval ("Churrasco")
caso 4
escreval ("Pizza")
caso 5
escreval ("Hamburguer com fritas")
caso 6
escreval ("Feijoada")
outrocaso
escreval ("Código inválido")
fimescolha
fimalgoritmo
Algoritmo 6.22. Opções do cardápio de um restaurante.
101
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
102
algoritmo "Naturalidade de um time lido"
var
time: caractere
inicio
escreva ("Entre com o nome de um time de futebol: ")
leia (time)
escolha time
caso "Flamengo", "Fluminense", "Vasco", "Botafogo"
escreval ("É um time carioca.")
caso "São Paulo", "Palmeiras", "Santos", "Corinthians"
escreval ("É um time paulista.")
outrocaso
escreval ("É de outro estado.")
fimescolha
fimalgoritmo
Algoritmo 6.23. Naturalidade dos times.
6.1.3 Estrutura de repetição
Normalmente as tarefas realizadas por um algoritmo
devem ser refeitas para muitos valores de entrada ou para
diversos usuários.
Por exemplo, um algoritmo que realiza vendas em um
supermercado deve poder receber o código e o preço de vários
produtos em uma única venda. Mas como saber quantos itens
serão comprados por cada cliente? Ao efetuar a entrada de
dados, não é possível colocar um comando de leitura para cada
item de venda. Imagine um algoritmo que leia 100 itens de uma
venda.
Para resolver problemas com repetição de atividades,
existem as estruturas de repetição (laço de repetição, loop)
[FORBELLONE05]. Com estas estruturas de controle especiais, é
possível realizar facilmente a mesma tarefa quantas vezes forem
necessárias. Veja alguns exemplos de problemas que devem
fazer uso de estruturas de repetição.
? Calcule a média anual de 40 alunos de uma turma;
? Calcule o total a pagar de n itens vendidos para um clien-
te;
? Verifique todos os brasileiros que não declararam o impos-
to de renda;
? Exiba os emails da caixa de entrada de um usuário.
Um detalhe essencial sobre estrutura de repetição é que o
número de iterações (repetições) deve ser, necessariamente,
finito. Caso isto não ocorra, o algoritmo não terá fim, ocasionan-
do erro.
É possível utilizar o comando “interrompa” para terminar
um laço (repetição) dentro do bloco de comandos. Isto será visto
no exemplo do algoritmo 6.33.
Existem várias estruturas conhecidas para realizar repeti-
ção. Neste curso de lógica de programação, serão vistas as
estruturas de repetição:
? Com teste no início;
? Com variável de controle.
6.1.3.1 Estrutura de repetição com teste
Neste tipo de repetição, um conjunto ou bloco de coman-
dos é repetido enquanto uma condição é verdadeira. Esta verifi-
cação é feita no início da estrutura de repetição. A implicação
disto é que o bloco de comandos pode não ser executado nenhu-
ma vez caso a condição seja falsa já de início [FORBELLONE05].
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
103
enquanto <condição> faça // executa os comandos se condição é
verdadeira
<comando 1>
<comando 2>
<comando 3>
.
.
.
<comando n>
fimenquanto // término do bloco de comandos do enquanto.
Algoritmo 6.24. Modelo geral do enquanto.
Quando o resultado da avaliação da <condição> é falso, a
estrutura de repetição enquanto é abandonada.
O exemplo do Algoritmo 6.25 mostra um enquanto cuja
<condição> utiliza um contador para realizar um determinado
número de repetições.
EXEMPLO 6.19
PROBLEMA:
Ler 4 notas de 40 alunos, calcular e escrever cada média.
RESOLUÇÃO (Algoritmo 6.25):
? Realizar 40 vezes os comandos a seguir:
? Ler as 4 notas, n1, n2, n3, n4 (variáveis do tipo real)
? Calcular a média e armazenar ou atribuir a uma variável
media (note que um valor calulado não é lido)
? Escrever o resultado do cálculo contido em media.
Neste exemplo, o algoritmo de cálculo da média das 4 notas
de um aluno é modificado para realizar este cálculo para 40
alunos. Note que o bloco de comandos do enquanto é repetido
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
104
A estrutura utilizada é o enquanto. A estrutura geral do
enquanto é vista no Algoritmo 6.24.
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
105
algoritmo "Media de 4 notas para 40 alunos"
var
n1, n2, n3, n4, media : real
cont : inteiro
inicio
cont <- 1
enquanto cont <= 40 faca
leia (n1, n2, n3, n4)
media <- (n1 + n2 + n3 + n4) / 4
escreva ("A media é:", media)
cont <- cont + 1
fimenquanto
fimalgoritmo
Algoritmo 6.25. Média de 4 notas para 40 alunos.
Os passos necessários para utilizar um contador para
controle de uma repetição são:
?Inicializar o contador: cont <- 1
?Isto é necessário pois a variável precisa ter um valor
inicial para a primeira comparação e para o incremento
?Testar o contador: cont <= 40 ?
?Quando o valor da variável cont for maior que n, o
enquanto termina.
?Incrementar o contador (dentro do bloco de comandos)
cont <- cont + 1
?Isto permite que o valor de cont mude; inicialmente
possui o valor zero, depois é incrementado de um em um
(1, 2, 3, ..., 40).
?O último valor que cont recebe antes que o enquanto
seja abandonado é 41, pois, visto 41 ser maior que 40, a
<condição> torna-se falsa.
DICA:
Um contador é uma variável cujo conteúdo é incre-
mentado de uma constante. Exemplo: cont <- cont + 1
até que a condição se torne falsa, ou seja, o bloco será executa-
do enquanto cont for menor ou igual a 40 (condição verdadeira).
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
106
O exemplo do algoritmo 6.13 mostra uma repetição onde
não se sabe, a priori, o número de vezes que o bloco de comandos
será executado.
EXEMPLO 6.20
PROBLEMA: Ler 4 notas de n alunos, calcular e escrever
cada média.
RESOLUÇÃO (Algoritmo 6.26):
? Ler o número de alunos em uma variável n
? Realizar n vezes os comandos a seguir:
? Ler as 4 notas, n1, n2, n3, n4 (variáveis do tipo real)
? Calcular a média e armazenar ou atribuir a uma variável
media (note que um valor calulado não é lido)
? Escrever o resultado do cálculo contido em media.
Neste exemplo, o valor de controle do fim da repetição é
trocado para uma variável. A condição agora testa o valor de cont
em relação ao conteúdo da variável n.
algoritmo "Media de 4 notas para n alunos"
var
n1, n2, n3, n4, media : real
cont, n : inteiro
inicio
cont <- 1
leia (n)
enquanto cont <= n faca
leia (n1, n2, n3, n4)
media <- (n1 + n2 + n3 + n4) / 4
escreva ("A media é:", media)
cont <- cont + 1
fimenquanto
Algoritmo 6.26. Média de 4 notas para n alunos.
107
6.1.3.2 Estrutura de Repetição
com variável de controle
Uma maneira mais fácil de realizar uma repetição quando
se sabe os valores inicial e final da variável de controle (conta-
dor) é utilizar a estrutura para. Nesta estruturade repetição, a
variável de controle é inicializada, testada e incrementada em
apenas uma linha, na declaração do para [FORBELLONE05].
A primeira parte do para é a inicialização da variável de
controle:
? para <variável_controle> de <valor_inicial>
A segunda parte é o teste de fim da repetição, ou seja o
último valor válido:
? até <valor_final>
A última parte é o incremento da variável de controle:
? passo <incremento>
Se o incremento é de 1, pode ficar implícito como valor
padrão. No Algoritmo 6.27 é mostrada a estrutura geral desta
estrutura de repetição.
para <variável_controle> de <valor_inicial> até <valor_final>
[passo <incremento>] faça
<comando 1>
<comando 2>
<comando 3>
.
.
.
<comando n>
fimpara // término do bloco de comandos do para.
Algoritmo 6.27. Modelo geral da estrutura de repetição para.
No exemplo do Algoritmo 6.26, o problema das médias para
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
108
n alunos está escrito utilizando a estrutura de repetição para.
Note os passos equivalentes ao enquanto:
? variável de controle cont é inicializada com 1 (para cont
de 1)
? teste da variável de controle (até n)
? incremento implícito
algoritmo "Media de 4 notas para n alunos"
var
n1, n2, n3, n4, media : real
cont, n : inteiro
inicio
leia (n)
para cont de 1 ate n faca
leia (n1, n2, n3, n4)
media <- (n1 + n2 + n3 + n4) / 4
escreva ("A media é:", media)
fimpara
fimalgoritmo
Algoritmo 6.28. Média de 4 notas para n alunos utilizando PARA.
EXEMPLO 6.21
PROBLEMA:
Mostrar a tabuada de multiplicação de um número lido.
RESOLUÇÃO (Algoritmo 6.29):
· Ler o número num.
· Escrever a tabuada de num como segue:
? num x 1 = ?
? num x 2 = ?
? num x 3 = ?
? num x 4 = ?
? num x 5 = ?
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
109
? num x 6 = ?
? num x 7 = ?
? num x 8 = ?
? num x 9 = ?
? num x 10 = ?
A estrutura para é adequada porque se sabe a priori o
número de repetições que serão feitas (10).
algoritmo "Tabuada de Multiplicação"
var
num, i : inteiro
inicio
escreva("Entre com um numero inteiro: ")
leia (num)
escreval("Tabuada de Multiplicação do ", num)
para i de 1 ate 10 faca
escreval(i, " * ", num, " = ", i * num)
fimpara
fimalgoritmo
Algoritmo 6.29. Tabuada de Multiplicação de um número.
6.2 Combinando as estruturas de controle
Como já foi dito, as estruturas devem ser combinadas a fim
de resolver quaisquer problemas de lógica de programação.
Nesta seção serão mostrados exemplos de algoritmos que combi-
nam as estruturas vistas neste curso: seleção (se-então-[senão],
escolha) e repetição (enquanto, para). Estas, juntamente com os
comandos de entrada (leia) e saída (escreva) e com as expres-
sões lógicas e relacionais, são as ferramentas básicas para a
construção de algoritmos que atendam às necessidades dos
problemas a serem solucionados.
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
110
Nos exemplos a seguir, temos os algoritmos do “Maior” e do
“Menor” nas suas variações mais comuns.
Nos último exemplo vemos condições elaboradas de manei-
ra mais complexa para resolver problema envolvendo triângulos.
EXEMPLO 6.22
PROBLEMA:
Ler 10 número 3 e verificar qual é o maior dentre eles.
RESOLUÇÃO (Algoritmo 6.30):
? Ler um número 10 vezes.
? Armazenar a primeira leitura em uma variável maior.
? A cada nova leitura, testar se o valor é maior que o valor da
variável maior. Neste caso, este é o maior valor até então,
portanto, maior recebe o valor lido.
Escrever o conteúdo de maior.
algoritmo "Maior de 10 números"
var
num, maior, i : inteiro
inicio
escreva("Numero 1: ")
leia(num)
maior <- num
para i de 2 ate 10 faca
escreva("Numero ", i, ": ")
leia(num)
se num > maior entao
maior <- num
fimse
fimpara
escreva("O maior numero lido foi: ", maior)
fimalgoritmo
Algoritmo 6.30. Maior de 10 números.
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
111
EXEMPLO 6.23
PROBLEMA:
Ler N números e verificar qual é o menor dentre eles.
RESOLUÇÃO (Algoritmo 6.31):
? Ler N (total de repetições).
? Ler um número N vezes (apenas se N é positivo).
? Armazenar a primeira leitura em uma variável menor.
? A cada nova leitura, testar se o valor é menor que o valor
da variável menor. Neste caso, este é o menor valor até
então, portanto, menor recebe o valor lido.
? Escrever o conteúdo de menor.
algoritmo "Menor de N numeros"
var
N, num, menor, i : inteiro
inicio
leia (N)
se (n > 0) entao
escreva("Numero 1: ")
leia(num)
menor <- num
para i de 2 ate N faca
escreva("Numero ", i, ": ")
leia(num)
se num < menor entao
menor <- num
fimse
fimpara
escreva("O menor numero lido foi: ", menor)
fimse
fimalgoritmo
Algoritmo 6.31. Menor de N valores lidos.
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
112
EXEMPLO 6.24
PROBLEMA:
Ler uma seqüência de números que termina com um sinali-
zador (flag) igual a –999 que deve ser desprezado.
RESOLUÇÃO (Algoritmo 6.32):
· Ler um número até que seja lido o flag = -999
? Armazenar a primeira leitura em menor e em maior.
? A cada nova leitura, testar se o valor é menor que o valor
da variável menor (novo menor, trocar) ou maior que a
variável maior (novo maior, trocar).
· Escrever o conteúdo de menor e de maior.
algoritmo "Menor e Maior de uma seqüência de números"
var
N, num, maior, menor, i : inteiro
inicio
a
i <- 1
escreva("Numero 1: ")
leia(num)
menor <- num
maior <- num
enquanto num <> -999 faca
se num < menor entao
menor <- num
senao
se num > maior entao
maior <- num
fimse
fimse
i <- i + 1
escreva("Numero ", i, ": ")
leia(num)
fimenquanto
se (maior <> -999) entao
escreval("O menor numero lido foi: ", menor)
escreval("O maior numero lido foi: ", maior)
fimse
fimalgoritmo
Algoritmo 6.32. Maior e Menor de uma seqüência de valores lidos.
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
113
EXEMPLO 6.25
PROBLEMA:
Ler 3 valores e verificar se podem ser lados de um triângulo.
Em caso afirmativo, informar o tipo de triângulo: eqüilátero,
isósceles ou escaleno.
RESOLUÇÃO (Algoritmo 6.34):
? Ler os 3 lados.
? Verificar se podem formar um triângulo (a soma de dois
lados quaisquer não pode ser menor que o lado restante).
algoritmo "Menor e Maior de uma seqüência de números (com
interrompa)"
var
num, maior, menor, i : inteiro
inicio
maior <- -9999;
menor <- 9999;
i<- 1;
enquanto num <> -999 faca
escreva("Numero ", i, ": ")
leia(num)
se num = -999 entao
interrompa
fimse
se num < menor entao
menor <- num
senao
se num > maior entao
maior <- num
fimse
fimse
i <- i + 1
fimenquanto
se (maior <> -9999) entao
escreval("O menor numero lido foi: ", menor)
escreval("O maior numero lido foi: ", maior)
fimse
fimalgoritmo
Algoritmo 6.33. Menor e Maior de uma seqüência de números (com interrompa)
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
114
EXEMPLO 6.26
PROBLEMA:
Ler 3 valores e verificar se podem ser lados de um triângulo.
Em casoafirmativo, informar se é triângulo retângulo.
RESOLUÇÃO (Algoritmo 6.35):
? Ler os 3 lados e verificar se podem formar um triângulo (a
soma de dois lados quaisquer não pode ser menor que o
lado restante)
? Verificar e escrever se é triângulo retângulo (hip² = cat1² +
cat²)
algoritmo "Triângulos"
var
l1, l2, l3 : real
inicio
leia (l1, l2, l3)
se ((l1 + l2) < l3) ou ((l1 + l3) < l2) ou ((l2 + l3) <
l1) entao
escreval ("Estes valores não podem ser lados de um
triângulo")
senao
se (l1 = l2) e (l2 = l3) entao
escreval ("Triângulo Equilátero")
senao
se (l1 = l2) ou (l2 = l3) ou (l1 = l3) entao
escreval ("Triângulo Isósceles")
senao
escreval ("Triângulo Escaleno")
fimse
fimse
fimse
fimalgoritmo
Algoritmo 6.34. Triângulos.
? Verificar e escrever o tipo de triângulo.
? Eqüilátero se todos os lados forem iguais.
? Isósceles se apenas dois lados forem iguais.
? Escaleno caso contrário (todos os lados são diferentes).
115
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
algoritmo "Triangulo Retangulo"
var
l1, l2, l3: inteiro
inicio
escreval("Lados do Triangulo")
leia(l1)
leia(l2)
leia(l3)
se (l1 > l2) e (l1 > l3)
se (l1^2) = ((l2^2) + (l3^2)) entao
escreval("É Triangulo Retangulo!")
senao
escreval("Não é Triangulo Retangulo!")
fimse
senao
se (l2 > l1) e (l2 > l3)
se (l2^2) = ((l1^2) + (l3^2)) entao
escreval("É Triangulo Retangulo!")
senao
escreval("Não é Triangulo Retangulo!")
fimse
senao
se (l3^2) = ((l1^2) + (l2^2)) entao
escreval("É Triangulo Retangulo!")
senao
escreval("Não é Triangulo Retangulo!")
fimse
fimse
fimse
fimalgoritmo
Algoritmo 6.35. Triângulos
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
116
6.1. Faça um algoritmo que leia a idade de uma pessoa expressa
em anos, meses e dias e mostre-a expressa apenas em dias.
6.2. Faça um algoritmo que leia a idade de uma pessoa expressa
em dias e mostre-a expressa em anos, meses e dias.
6.3. Um sistema de equações lineares do tipo:
ATIVIDADES
feydx
cbyax
=+
=+
, pode ser resolvido assim:
bdae
bfcex
−
−
=
bdae
cdafy
−
−
=e
Escreva um algoritmo que lê os coeficientes a, b, c, d, e, f,
e calcula e mostra os valores de x e y.
6.4. Elaborar um algoritmo que lê 2 valores a e b e os escreve com
a mensagem: “São múltiplos” ou “Não são múltiplos”.
6.5. Faça um algoritmo que leia um nº inteiro e mostre uma
mensagem indicando se este número é par ou ímpar, e se é
positivo ou negativo.
6.6. Fazer um programa para imprimir o conceito de um aluno,
dada a sua nota. Supor notas inteiras somente. O critério
para conceitos é o seguinte:
notas inferiores a 3 - conceito E
nota de 3 a 5 - conceito D
notas 6 e 7 - conceito C
notas 8 e 9 - conceito B
nota 10 - conceito A
117
6.7. Elabore um algoritmo que dada a idade de um nadador,
classifique-o em uma das seguintes categorias:
· infantil A = 5-7 anos;
· infantil B = 8-10 anos;
· juvenil A = 11-13 anos;
· juvenil B = 14-17 anos;
· sênior = mais de 18 anos.
6.8. Para cada uma das mercadorias diferentes vendidas em um
armazém, dispõe-se dos seguintes dados:
a. Código da mercadoria
b. Preço de compra
c. Preço de venda
d. Quantidade vendida no mês.
6.9. Fazer um algoritmo que leia os dados disponíveis e calcule e
dê saída no total faturado no mês e no lucro total.
10. Num frigorífico existem 100 bois. Cada um traz no pescoço
um placa com o seu número e seu peso. Pede-se um algorit-
mo que leia o número e o peso de cada boi e escreva o
número e o peso do boi mais gordo e do mais magro.No
algoritmo que você desenvolveu, se houver mais de um boi
com o mesmo peso e que seja esse o mais gordo ou o mais
magro, qual o número será escrito?
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
118
Introdução à Informática
Tecnologia em Análise e
Desenvolvimento de Sistemas
Bibliografia
Lógica de Programação I
Tecnologia em Análise e Desenvolvimento de Sistemas
[MOURSUND07] MOURSUND, David. Increasing your expertise as
a problem solver: Some roles of computers. Disponível em: <
h t t p : / / w w w. u o r e g o n . e d u / ~ m o u r s u n d / B o o k s / P S -
Expertise/index.htm>. Acesso em 05/06/2007
[BALDWIN04] BALDWIN,Douglas, SCRAGG,Greg. Algorithms and
Data Structures: The Science of Computing. 1st edition,Charles
River Media. 2004
[Shapiro 06] Shapiro, Stewart, "Classical Logic". The Stanford
Encyclopedia of Philosophy (Winter 2006 Edition).Disponível em:
<http://plato.stanford.edu/archives/win2006 /entries/logic-
classical/>. Acesso em 10/06/2007
[WIRTH 86] WIRTH, Niklaus, Algoritmos e Estruturas de Dados.
Editora PHB. 1986.
[TREMBLAY39] Tremblay, Jean-Paul, 1939 – Ciência dos computa-
dores: uma abordagem algorítmica/ Jean-Paul Tremblay,
Richard B. Bunt; Traducai Moacir de Souza Prado; revisão técnica
João Pedro Perotti. – São Paulo: McGraw-Hill do Brasil 1983
[FARRER89] FARRER, HARRY; Cristiano Gloncalves Becker;
119
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
Eduardo Faria, Helton Matos, Marcos Santos, Miriam Maia –
Algoritmos Estruturados – LTC 2ª Edição - Rio de Janeiro, 1989.
[SALVETTI98] SALVETTI, Direceu Douglas , 1933 – Algoritmos
/Dirceu Douglas Salvetti, Lisbete Madsen Barbosa. – São Paulo :
Makron Books, 1998
[FORBELLONE05] Forbellone, André e Eberspacher, Henri. Lógica
de Programação. 3a. Edição. Makron Books. 2005.
[HELPVISUALG] Help Visualg
[LOPES 02] LOPES, Anita. Introdução à Programação/ Anita
Lopes, Guto Garcia – Rio De Janeiro: Elsevier, 2002 – 7ª
Reimpressão.
120
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
Anexo
Exercícios
Lógica de Programação I
Tecnologia em Análise e Desenvolvimento de Sistemas
1. Ler 6 notas de um aluno e calcular sua média.
2. Ler um valor da cotação do dólar de um determinado dia
e calcular o valor em dólares para um valor lido em reais.
Ex: Cotação: R$ 2,15
Valor em reais para cálculo: R$10,00
Total em Dólares: R$ 21,50
3. Leia 2 valores, no caso variáveis A e B.
? Efetue a soma das variáveis A e B atribuindo o seu resulta-
do na variável X.
? Apresente o valor da variável X após a soma dos dois
valores indicados.
4. A fórmula para calcular a área de uma circunferência é:
A = pi * (Raio)^2. Sendo que o valor de pi = 3.14159 crie o seguinte
algoritmo:
? Leia um valor para o raio, no caso a variável R.
Estruturas Seqüenciais
? Efetue o cálculo da área, elevando o valor de R ao quadra-
do e multiplicando por pi.
? Apresente o valor da área (variável A).
5. Escreva um algoritmo para calcular e exibir o compri-
mento de uma circunferência, sendo dado o valor de seu raio.
C = 2 * Pi * raio.
6. Escrever um algoritmo que leia a idade de uma pessoa
em dias e informe-a em anos, meses e dias.
7. Faça um algoritmo que leia a idade de uma pessoa
expressa em anos, meses e dias e mostre-a expressa apenas em
dias (considere que os meses possuem 30 dias).
8. Escreva um algoritmo que leia duas variáveis inteiras e
troque o conteúdo entre elas.
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
Estruturas de Seleção
9. Ler um número e escrever o seu valor negativo.
10. Ler dois números reais e informar se o segundo é o
quadrado do primeiro.
11. Escreva um algoritmo que leia dois números e exiba-osem ordem crescente.
12. Escreva um algoritmo que leia as notas da 1a. e da 2a.
avaliações de um aluno. A seguir, calcule a média aritmética
simples e escreva uma mensagem que diga se o aluno foi ou não
121
122
aprovado (considerar que nota igual ou maior que 6 o aluno é
aprovado). Escrever também a média calculada.
13. Escreva um algoritmo que leia o nome de 2 times e o
número de gols marcados em uma partida. Escrever o nome do
vencedor. Caso não haja vencedor deverá ser impressa a palavra
EMPATE.
14. Em um supermercado as maçãs custam R$ 1,30 cada se
forem compradas menos de uma dúzia, e R$ 1,00 se forem
compradas pelo menos 12. Escreva um algoritmo que leia o
número de maçãs compradas, calcule e escreva o custo total da
compra.
15. Escreva um algoritmo que determine o grau de obesida-
de de uma pessoa, sendo fornecido seu peso e sua altura. O grau
de obesidade é determinado pelo índice da massa corpórea
(Massa = Peso (em kg) / Altura (em cm)) através da tabela abaixo:
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
Índice de Massa
Corpórea
Grau de
Obesidade
< 0,52 Normal
Entre 0,52 e 0,68
Obeso
Maior que 0,68 Obeso Mórbido
16. Faça um algoritmo para calcular a conta final de um
hóspede de um hotel, considerando que:
a) serão lidos: o nome do hóspede, o tipo do apartamento
utilizado (A, B, C ou D), o número de diárias utilizadas
pelo hóspede e o valor do consumo interno do hóspede;
b) o valor da diária é determinado pela seguinte tabela:
Tipo de
Apartamento
Valor da Diária
(R$)
A 150,00
B 100,00
C 75,00
D 50,00
123
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
c) o valor total das diárias é calculado pela multiplicação do
número de diárias utilizadas pelo valor da diária do
apartamento;
d) o subtotal é calculado pela soma do valor total das
diárias e o valor do consumo interno;
e) o valor da taxa de serviço equivale a 10% do subtotal;
f) o total geral resulta da soma do subtotal com a taxa de
serviço.
g) escreva a conta final contendo: o nome do hóspede, o
tipo do apartamento, o número de diárias utilizadas, o
valor unitário da diária, o valor total das diárias, o valor
do consumo interno, o subtotal, o valor da taxa de
serviço e o total geral.
17. Construa um algoritmo que receba o código de um
produto e o classifique de acordo com a tabela abaixo:
Código Classificação
1 Alimento Não-Perecível2 a 4
Alimento Perecível
5 e 6
Vestuário
7
Higiene Pessoal
8 a 15 Limpeza e Utilidades Domésticas
Outros Códigos Inválido
18. Calcular a média final para um aluno dadas as notas de
3 provas e produzir uma saída com a média e a situação do aluno
de acordo com o seguinte critério:
média >= 7, aprovado; 5 < média < 7, recuperação;
média < 5, reprovado.
19. Crie um algoritmo que leia a velocidade máxima permi-
tida em uma avenida e a velocidade com que o motorista estava
dirigindo nela e calcule a multa que uma pessoa vai receber,
sabendo que são pagos:
a) 50 reais se o motorista ultrapassar em até 10km/h a
velocidade permitida.
(ex.: velocidade máxima: 50km/h; motorista a 60km/h
ou a 56km/h);
b) 100 reais, se o motorista ultrapassar de 11 a 30 km/h a
velocidade permitida.
c) 200 reais, se estiver acima de 31km/h da velocidade
permitida.
20. O cardápio de uma lanchonete é o seguinte:
124
Especificação Código Preço
Cachorro quente 100 1,20
Bauru simples
101
1,30
Bauru com ovo
102
1,50
Hambúrger
103
1,20
Cheeseburguer
104
1,30
Refrigerante 105 1,00
21. Escreva um algoritmo que leia o código do item pedido,
a quantidade e calcule o valor a ser pago por aquele lanche.
Considere que a cada execução somente será calculado um item.
22. Ler uma hora do dia (0-23) e escrever a saudação corre-
ta: bom dia(0-12); boa tarde (13-18) ou boa noite(19-23)
23. lê 2 valores a e b e os escreva com a mensagem:
“São múltiplos” ou “Não são múltiplos”.;
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
125
24. leia um nº inteiro e mostre uma mensagem indicando se
este número é par ou ímpar, e se é positivo ou negativo.
25. Conceito de um aluno A-B-C-D-E.
26. Crie um algoritmo que informe se um dado ano é ou não
bissexto. Obs: um ano é bissexto se ele for divisível por 400 ou se
ele for divisível por 4 e não por 100.
27. Dada uma abreviação (SEG-TER-QUA-QUI-SEX-SAB-
DOM), escrever por extenso ; ler n letras e informar o total de
ocorrências de cada uma das letras do alfabeto (a..z).
28. Escolha: ler um código de letra para o estado civil de
uma pessoa (S/C/D/V) e escrever o seu equivalente por extenso.
29. Escrever o número de dias de um determinado mês
(lido); ler um valor numérico e um código (H:horas/M: minutos/
S:segundos). Escrever o valor lido em segundos.
30. Um vendedor necessita de um algoritmo que calcule o
preço total devido por um cliente. O algoritmo deve receber o
código de um produto e a quantidade comprada e calcular o
preço total, usando a tabela abaixo:
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
Código do Produto Preço unitário
1001 5,32
1324
6,45
6548
2,37
0987 5,32
7623 6,45
Estruturas de Repetição
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
31. Faça um algoritmo que mostre todos os números intei-
ros pares de 2 a 100.
32. Faça um algoritmo para gerar e exibir os números
inteiros de 20 até 10, decrescendo de 1 em 1.
33. ler 3 valores e escrever em ordem crescente.
34. Faça um algoritmo que leia uma lista de números intei-
ros positivos terminada pelo número 0 (zero). Ao final, o algorit-
mo deve mostrar a média aritmética de todos os números lidos
(excluindo o zero).
35. Escrever n (lido) asteriscos na tela.
36. Ler 20 números e escrever quantos dos valores lidos são
múltiplos de 3.
37. Ler x e y e calcular x * y utilizando somas sucessivas.
38. Ler x e y e calcular x^y utilizando multiplicações
sucessivas.
39. Função do 2o grau. Ler a, b, c e calcular x1, x2 verificar
se o delta é válido.
40. Ler a carga horária de uma disciplina e a freqüência de 126
127
40 alunos. Informar para cada um se está aprovado ou não (+ de
75% de presença).
41. Calcular a média salarial de 1000 funcionários de uma
empresa.
42. Ler n vezes o total de quilos de peixe vendidos a um
frigorífico e o seu preço por quilo. Calcular o total a receber.
43. Média de vários (flag = 0) números usar interrompa; ler
1000 salários dos funcionários de uma empresa e informar quan-
tos são maiores que R$5.000,00.
44. Ler o mês de aniversário dos alunos de uma turma e
informar o total de alunos que fazem aniversário no mês de
Agosto.
45. Calcular a média das temperaturas de uma região nos
últimos 10 dias.
46. No exemplo anterior, não aceitar valores de temperatu-
ras abaixo de -100 ou acima de 60. Calcular também quantos dias
a temperatura ficou acima da média.
47. Para N embarcações, ler a lotação de passageiros e o
total de passageiros embarcados, informando se a embarcação
pode seguir viagem (total de passageiros dentro dos limites de
lotação).
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
128
48. Contar e escrever o total de ocorrências de números
negativos entre 10 números lidos.
49. Faça um algoritmo que leia um valor para M. Se este
valor for positivo, calcule e mostre o seu fatorial, sabendo-se
que:
N ! = 1 x 2 x 3 x ... x N-1 x N
0 ! = 1
49. Num frigorífico existem 90 bois. Cada boi traz preso em
seu pescoço um cartão contendo seu número de identificação e
seupeso. Faça um algoritmo que escreva o número e o peso do
boi mais gordo e do boi mais magro (supondo que não haja empa-
tes).
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
129
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
130
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
Página 1
Página 2
Página 3
Página 4
Página 5
Página 6
Página 7
Página 8
Página 9
Página 10
Página 11
Página 12
Página 13
Página 14
Página 15
Página 16
Página 17
Página 18
Página 19
Página 20
Página 21
Página 22
Página 23
Página 24
Página 25
Página 26
Página 27
Página 28
Página 29
Página 30
Página 31
Página 32
Página 33
Página 34
Página 35
Página 36
Página 37
Página 38
Página 39
Página 40
Página 41
Página 42
Página 43
Página 44
Página 45
Página 46
Página 47
Página 48
Página 49
Página 50
Página 51
Página 52
Página 53
Página 54
Página 55
Página 56
Página 57
Página 58
Página 59
Página 60
Página 61
Página 62
Página 63
Página 64
Página 65
Página 66
Página 67
Página 68
Página 69
Página 70
Página 71
Página 72
Página 73
Página 74
Página 75
Página 76
Página 77
Página 78
Página 79
Página 80
Página 81
Página 82
Página 83
Página 84
Página 85
Página 86
Página 87
Página 88
Página 89
Página 90
Página 91
Página 92
Página 93
Página 94
Página 95
Página 96
Página 97
Página 98
Página 99
Página 100
Página 101
Página 102
Página 103
Página 104
Página 105
Página 106
Página 107
Página 108
Página 109
Página 110
Página 111
Página 112
Página 113
Página 114
Página 115
Página 116
Página 117
Página 118
Página 119
Página 120
Página 121
Página 122
Página 123
Página 124
Página 125
Página 126
Página 127
Página 128
Página 129
Página 130