Sei sulla pagina 1di 63

i

Algoritmos









Notas de aulas



Prof. Alusio Eustquio da Silva






Betim, Fevereiro de 2012
ii

Sumrio

Introduo ................................................................................................... 1
Objetivos .................................................................................................... 2
Objetivos gerais .......................................................................................... 2
Objetivos especficos .................................................................................. 2
Conceitos .................................................................................................... 2
Elementos bsicos de um algoritmo ........................................................... 5
Dados ......................................................................................................... 5
Tipos de dados ........................................................................................... 5
Dados numricos ....................................................................................... 5
Dados lgicos ............................................................................................. 6
Dados literais .............................................................................................. 6
Identificao de variveis ........................................................................... 7
Declarao de variveis .............................................................................. 8
Operadores ................................................................................................. 8
Operador de atribuio ............................................................................... 8
Operadores aritmticos ............................................................................... 9
Funes ...................................................................................................... 11
Algumas funes matemticas ................................................................... 11
Comandos de entrada ................................................................................ 13
Comandos de sada ..................................................................................... 13
Comentrios ................................................................................................ 14
Estrutura de um algoritmo .......................................................................... 15
Estruturas sequenciais ................................................................................ 16
Exemplo 1 Calcular Massa corporal ....................................................... 16
Exemplo 2 - Converter Megabytes em Bytes ............................................ 17
Exemplo 3 - Calcular o salrio a receber .................................................. 18
Exemplo 4 - Calcular descontos ................................................................ 19
Exemplo 5 - Simular Caixa Eletrnico ...................................................... 20
Exemplo 6 - Calcular rea, permetro e diagonal de um quadrado ........... 22
Exemplo 7 - Transformar graus em radianos ............................................ 23
Exemplo 8 - Transforma milhas nuticas em metros ................................ 24
Exemplo 9 Separar os algarismos de um nmero inteiro .................... 25
Exemplo 10 Calcular digito verificador do cdigo de um produto ......... 26
iii

Lista de exerccios 1 ................................................................................... 27
Lista de exerccios 2 ................................................................................... 29
Lista de exerccios 3 ................................................................................... 31
Lista de exerccios 4 ................................................................................... 32
Estruturas condicionais ............................................................................... 33
Proposies ................................................................................................. 33
Operadores relacionais ............................................................................... 34
Operadores lgicos ..................................................................................... 35
Estruturas condicionais simples ................................................................. 36
Estruturas condicionais duplas ................................................................... 37
Exemplo 11 Verificar se um nmero positivo, negativo ou nulo ......... 38
Exemplo 12 Verificar se uma pessoa maior de idade ........................... 40
Exemplo 13 Calcular a razo entre dois nmeros ................................... 41
Exemplo 14 Verificar se um nmero divisvel por 2 e 11 .................... 42
Exemplo 15 Associar nome e telefone .................................................... 43
Exemplo 16 Verificar tipo de caractere ................................................... 45
Lista de exerccios 5 ................................................................................... 46
Lista de exerccios 6 ................................................................................... 48
Estruturas de repetio ............................................................................... 49
Repetio com condio no incio .............................................................. 49
Exemplo 17 Escrever nmeros mpares .................................................. 50
Exemplo 18 Calcular maior altura ........................................................... 51
Exemplo 19 Apurar pesquisa .................................................................. 52
Exemplo 20 Calcular tempo de desintegrao de material radioativo .... 54
Estruturas de repetio com varivel de controle ....................................... 55
Exemplo 21 Tabuada de multiplicao ................................................... 55
Exemplo 22 Soma dos N primeiros nmeros inteiros ............................. 56
Exemplo 23 Nmeros palndromos ......................................................... 57
Lista de exerccios 7 ................................................................................... 58
Lista de exerccios 8 ................................................................................... 59






1


ALGORITMOS

INTRODUO

O computador, fruto da evoluo da matemtica, eletrnica, telecomunicaes e outras cincias, foi o
responsvel por uma mudana radical do mundo moderno. As pessoas e as organizaes dependem
totalmente do ente computador. Por trs de todos os servios que utilizamos no dia a dia, como gua,
energia eltrica, transporte, comunicaes e sistemas pblicos em geral, existem milhares de computadores
interligados. E cada vez mais a sociedade moderna precisa de sistemas computacionais.
Um sistema computacional constitudo de:
Hardware: que so os componentes fsicos dos sistemas, tais como CPU, placa de rede,
teclado, mouse, monitor, pendrive, HD etc.
Software: so os programas, como editor de texto, planilha, gerenciador de banco de
dados, navegador de internet, compilador etc.
Peopleware: so as pessoas no entorno de um sistema computacional, seja como membro
de uma equipe de desenvolvimento, como responsvel pela manuteno de um
sistema ou como usurio deste.

Este texto se destina ao ensino dos fundamentos das tcnicas de programao de computadores,
portanto, se enquadra em duas das categorias acima: Software (programas) e Peopleware (desenvolvedor).
Um software programa ou um conjunto de programas e um programa um conjunto de comandos, escritos
numa dada linguagem (Linguagem de Programao) e executados por algum dispositivo tal como um
celular, um computador ou uma mquina. Em nosso curso, limitar-nos-emos a desenvolver programas que
sero executados em computador. Da o termo consagrado Programao de Computadores, que j virou
ttulo de livros, nome de disciplinas, e designao de cursos. Muitas vezes a programao de computadores
confundida com o aprendizado de uma linguagem de programao, e realmente pode-se aprender
programao de computadores, utilizando uma linguagem de programao. Alis, a Linguagem Pascal,
criada por Nicolau Wirth, na dcada de 70, tinha como um de seus objetivos, o ensino de programao de
computadores. Mas, existem metodologias e tcnicas de programao que no dependem de uma linguagem
formal de programao. Utilizaremos neste texto a metodologia denominada de Programao Estruturada
com a tcnica Top-Down, assim denominada por partir do simples para o complexo e por usar um
processo de refinamentos sucessivos. Para escrever programas de computador usaremos uma pseudo-
linguagem, composta de palavras-chaves, em lngua portuguesa, operadores, funes e comandos,
organizados em estruturas apropriadas.
Segundo NYHOFF (1993), o desenvolvimento de programas de computadores exige arte e tcnica.
Arte porque exige criatividade e capacidade de relacionar e generalizar. Tcnica porque exige conhecimento
de metodologias de desenvolvimento de softwares eficientes, rpidos e robustos.
Para desenvolver um programa de computador necessrio:
Analisar o problema que se quer resolver, definindo com clareza: os dados de entrada, o
processamento destes dados e a sada de resultados.
Descrever em forma de texto, passo a passo, os comandos de entrada, o processamento dos
dados e a sada de resultados (Algoritmo).
Codificar o algoritmo em uma linguagem de programao.


2


OBJETIVOS DESTE TEXTO

Este texto, fruto de vrios anos de experincia lecionando disciplinas bsicas de programao de
computadores em cursos de Cincia da Computao, Sistemas de Informao, Matemtica e
Engenharia.

OBJETIVOS GERAIS

Complementar a bibliografia indicada.
Facilitar o aprendizado de programao de computadores, usando exemplos simples e com nvel
crescente de dificuldade.

OBJETIVOS ESPECFICOS

Desenvolver tcnicas de programao estruturada
Abstrair da sintaxe das linguagens formais, focando apenas na lgica do programa
Escrever programas de computador em forma algortmica
Criar algoritmos corretos e eficientes

A programao de computadores pode ser aprendida com o uso direto de uma linguagem de
programao, conforme foi dito acima. Mas a preocupao com a sintaxe ou a semntica da linguagem faz
com que o programador, muitas vezes, se desvie do foco principal que a lgica do programa.
Este texto tem como objetivo principal desenvolver programas eficientes e corretos. Para que esse
objetivo seja alcanado as tcnicas de desenvolvimento de algoritmos tero mais preocupao com a lgica
e correo do programa do que com o formalismo ou a rigidez da sintaxe.

ALGORITMOS

CONCEITOS

Um algoritmo uma sequncia finita de instrues bem definidas e no ambguas, que podem ser
executada mecanicamente num perodo finito de tempo e com uma quantidade de esforo finita.
O conceito de algoritmo frequentemente associado a uma receita culinria, embora muitos
algoritmos sejam mais complexos. Eles podem repetir passos (fazer iteraes) ou necessitar de decises (tais
como comparaes lgicas) at que a tarefa seja completada.
Um algoritmo corretamente executado no ir resolver um problema se estiver implementado
incorretamente ou se no for apropriado ao problema.
Um algoritmo no representa, necessariamente, um programa de computador, e sim os passos
necessrios para realizar uma tarefa. Sua implementao pode ser feita por um computador, por outro tipo de
autmato ou mesmo por um ser humano. Diferentes algoritmos podem realizar a mesma tarefa usando um
conjunto diferenciado de instrues em mais ou menos tempo, espao ou esforo do que outros. Tal
diferena pode ser reflexo da complexidade computacional aplicada, que depende de estruturas de dados
adequadas ao algoritmo. Por exemplo, um algoritmo para se vestir pode especificar que voc vista primeiro
as meias e os sapatos antes de vestir a cala enquanto outro algoritmo especifica que voc deve primeiro
vestir a cala e depois as meias e os sapatos. Fica claro que o primeiro algoritmo mais difcil de ser
executado que o segundo apesar de ambos levarem ao mesmo resultado.

(Wikipdia 12/11/2011)
3


Um programa de computador essencialmente um algoritmo que diz ao computador os passos
especficos e em que ordem eles devem ser executados. Logo, o algoritmo pode ser considerado uma
sequncia de aes a serem executadas por uma mquina.
Quando os procedimentos de um algoritmo envolvem o processamento de dados, a informao lida
de uma fonte de entrada, processada e retornada sob novo valor, o que geralmente realizado com o auxlio
de uma ou mais estrutura de dados.
Para qualquer processo computacional, o algoritmo precisa estar rigorosamente definido,
especificando a maneira como ele se comportar em todas as circunstncias. A corretividade do algoritmo
pode ser provada matematicamente, bem como a quantidade de tempo e espao (complexidade) necessrios
para a sua execuo. Estes aspectos dos algoritmos so alvo da anlise de algoritmos.
A maneira mais simples de se pensar em um algoritmo por uma lista de procedimentos bem
definidos, na qual as instrues so executadas passo a passo a partir do comeo da lista. Tal formalizao
adota as premissas da programao imperativa, que uma forma mecnica para visualizar e desenvolver um
algoritmo. Concepes alternativas variam em programao funcional e programao lgica.
A maioria dos algoritmos desenvolvida para ser implementada em um programa de computador.
Apesar disso eles tambm podem ser implementados por outros modos tais como uma rede neural biolgica
(tal como no crebro quando efetuamos operaes aritmticas) em circuitos eltricos ou at mesmo em
dispositivos mecnicos.
Para programas de computador existe uma grande variedade de linguagens de programao, cada
uma com caractersticas especficas que podem facilitar a implementao de determinados algoritmos ou
atender a propsitos mais gerais.
Para que um computador faa qualquer coisa, necessrio um programa de computador. Para criar
um programa, preciso informar ao computador, passo a passo, exatamente o que se espera que ele faa. O
computador ento "executa" o programa, seguindo cada passo mecanicamente para atingir o objetivo final.
Quando se "diz" ao computador o que fazer, tambm se deve dizer como faz-lo. a que entram os
algoritmos de computador. Algoritmo a tcnica bsica usada para fazer o trabalho. Vamos acompanhar
um exemplo para ajudar a entender o conceito de algoritmo.

Digamos que voc tem um amigo chegando ao aeroporto e ele precisa ir do aeroporto at sua casa.
Aqui esto quatro algoritmos diferentes que voc poderia dar a seu amigo para ele chegue sua casa:

- O algoritmo do txi:
1. V para o ponto de txi
2. Entre em um txi
3. D meu endereo ao motorista

- O algoritmo "ligue-me":
1. Quando seu avio chegar, ligue para meu celular
2. Espere do lado de fora do terminal

- O algoritmo "alugue um carro":
1. Pegue o circular at o aluguel de automveis
2. Alugue um carro
3. Siga as instrues para chegar at minha casa

- O algoritmo do nibus:
1. Fora do terminal de bagagens, pegue o nibus nmero 70
2. Faa uma baldeao para o nibus 14 na Rua Dom Pedro
3. Desa na rua Aroeira
4. Ande duas quadras at minha casa

4

Todos esses quatro algoritmos atingem exatamente a mesma meta, mas cada um deles o faz de modo
completamente diferente. Cada algoritmo tambm possui um custo e um tempo de viagem, diferentes. O
txi, por exemplo, a maneira mais rpida e cara. J o nibus definitivamente mais barato, mas bem mais
lento. Voc escolhe o algoritmo com base nas circunstncias.

Na programao de computadores, freqentemente h diversos caminhos, ou algoritmos, para
cumprir qualquer tarefa determinada. Cada algoritmo tem vantagens e desvantagens em situaes
diferentes.
"HowStuffWorks - O que um algoritmo de computador?".
Publicado em 05 de setembro de 2001 (atualizado em 05 de abril de 2007)
http://informatica.hsw.uol.com.br/questao717.htm (11 de dezembro de 2011)


Em Cincia da Computao, um Programa uma sequncia de comandos (instrues) numa dada
ordem e logicamente relacionados, escritos numa linguagem de programao e o Algoritmo um projeto
desse programa, escrito numa pseudo-linguagem, linguagem essa, mais prxima da linguagem humana e,
geralmente, na prpria lngua do programador (no nosso caso, Portugus).
O termo algoritmo derivado do nome do matemtico rabe Abu Jafar Mohammed ibn Musa al
Khowarizmi (825), que escreveu um livro com procedimentos para efetuar operaes com nmeros escritos
em algarismos indus (os algarismos do sistema de numerao decimal, conhecidos, hoje, como indu-
arbicos).
Atualmente o termo algoritmo utilizado para descrever um procedimento passo a passo, para
resolver um problema qualquer. Vrios clculos matemticos so feitos por processos prticos ou
algoritmos. Como exemplo, podemos citar o processo de determinao do mximo divisor comum (MDC)
de dois nmeros inteiros, denominado Crivo de Eratstenes, que pode ser descrito da seguinte forma:

Sejam dois inteiros A e B, A > B
Divide-se A por B
Toma-se o resto R, da diviso de A por B
Faz-se A = B e B = R
Repete-se o processo (primeiro item) at que R seja igual a zero, e, quando isso ocorrer, B
ser o MDC.

Exemplo numrico: seja calcular o MDC de 28 e 48, pelo processo acima:

A = 48 e B = 28

Quociente 1 1 2 2
Valores 48 28 20 8 4
Resto 20 8 4 0

A = 48 e B = 28; 48 / 28 = 1 e sobra um resto R = 20
A = B e B = R ou seja, A = 28 e B = 20. 28 / 20 = 1 e sobra um resto R = 8
A = B e B = R ou seja, A = 20 e B = 8. 20 / 8 = 2 e sobra um resto R = 4
A = B e B = R ou seja, A = 8 e B = 4. 8 / 4 = 2 e sobra um resto R = 0
MDC o ltimo valor de B, ou seja 4.

MDC (28, 48) = 4

5

Todo problema de computao pode ser resolvido executando-se uma srie de aes em uma ordem
especfica. Um procedimento para resolver um problema em termos das aes a serem executadas e na
ordem em que essas aes devem ser executadas chamado de algoritmo (DEITEL, 2007).

Caractersticas de um algoritmo:
Bem definido: apresentar com exatido as instrues a serem executadas.
Sem ambiguidade: cada ao deve ser executada de forma nica
Eficiente: apresentar o resultado previsto, minimizando o nmero de instrues e o tempo de
execuo
Finito: ter incio e fim (No entrar em looping)
Possvel de ser executado por um computador.

Um algoritmo constitudo de um conjunto de instrues, escritas em uma pseudo-linguagem, com
termos de uma linguagem comum e de alguns smbolos.
Um programa de computador constitudo, em geral, das seguintes fases:
Entrada de dados
Processamento
Sada de resultados (Informao)

ELEMENTOS BSICOS DE UM ALGORITMO

DADOS (Variveis e constantes)
Entes do mundo real so representados em programas de computador atravs de dados. Assim um
aluno pode ser representado num programa, por seu nome, um conjunto de caracteres, ou por seu nmero de
matrcula. O sexo de uma pessoa pode ser simbolizado no computador por um caractere, como por exemplo
F para feminino e M para masculino ou um nmero inteiro: 0 para feminino e 1 para masculino.
Uma varivel um endereo de memria para armazenar um tipo de dado, que pode ser modificado
durante a execuo do programa. Cada tipo de varivel tem um tamanho fixo e uma forma prpria de ser
armazenada e de ser manipulada pelo programa onde definida. Uma varivel identificada por um nome
e associada a um endereo de memria.
Os valores que no podem ser alterados em um programa so denominados constantes.

TIPOS DE DADOS

Os principais tipos de dados, denominados Tipos Bsicos, por constiturem a base de outros tipos de
dados mais complexos so: Numricos, lgicos e literais.

NUMRICOS
Os tipos numricos se dividem em inteiros e reais. Os inteiros so os valores numricos que no
possuem parte fracionria e os reais so os valores numricos que possuem parte inteira e fracionria.


Exemplos de nmeros inteiros:
- O nmero de alunos em uma dada sala de aula
- A quantidade de pessoas que aderiu a um plano de sade
6

- O ano de nascimento de uma pessoa
- O ltimo dia do ms de fevereiro (28 ou 29)
- O nmero das casas
- A idade de um animal

Exemplos de nmeros reais:
- O peso de um objeto
- A altura de um edifcio
- A extenso de uma rua
- O preo de uma mercadoria
- O valor de uma Conta de gua
- As dimenses de uma sala retangular
- A medida de um ngulo

LGICOS
So tipos de dados que s podem assumir um dentre dois valores: verdadeiro ou falso. Este
tipo de varivel aplicado em situaes antagnicas do tipo sim, no, ligado, desligado, aceso,
apagado, claro, escuro, sonoro, mudo, marcado, desmarcado, quente, frio etc.

Exemplos de valores lgicos:
- Uma letra: vogal ou no vogal
- Nmero primo: um nmero inteiro primo ou no primo
- Sexo de um animal: macho ou fmea
- Dinheiro em um caixa eletrnico: tem ou no tem
- Funcionamento de um banco: aberto ou fechado em um dado horrio
- Horrio: antes ou depois do meio dia
- Horrio: dia ou noite
- Tempo: chove ou no chove
- Motor: ligado ou desligado
- Lmpada: acesa ou apagada
- Porta: aberta ou fechada
- Nmero inteiro: par ou mpar

LITERAIS
So dados formados por cadeia (sequncia) de caracteres, que sero chamados nos algoritmos
de literal (string, em ingls).

Exemplos de valores literais:
- O nome de uma empresa
- Um endereo
- Os nmeros de telefones
- Os nmeros de CPFs
- Os nmeros de RGs
- Os nmeros de RENAVAMs

7

Nos algoritmos desse texto usaremos os tipos de dados abaixo relacionados:


Tipos bsicos de dados
(variveis e constantes)
Designao nos algoritmos
Nmeros inteiros inteiro
Nmeros reais real
Seqncia de caracteres literal
Variveis lgicas lgico


IDENTIFICAO DE VARIVEIS

Na Matemtica uma varivel identificada por uma letra do nosso alfabeto, como por exemplo m, n,
p, q, r, x, y, z, t etc., ou uma letra grega como , , , , , , , , , etc. Nos programas de
computador a identificao de uma varivel feita com um nome significativo, de acordo com a
funo da mesma. Assim, usaremos a designao Salario para identificar, em um programa, a
varivel que armazenar o salrio de um funcionrio e Nota1 e Nota2 as variveis que armazenaro
duas notas de um aluno.
Adotaremos algumas convenes para identificar as variveis de um programa. Algumas destas
convenes so obrigatrias em linguagens de programao e outras sero adotadas pela clareza e
padronizao requeridas pela Cincia da Computao:

1. Todo identificador de varivel se iniciar com uma letra de A a Z. Por conveno, iniciaremos
todo identificador com uma letra maiscula, se esse possuir mais de um caractere, e os outros
caracteres sero minsculos. Se possuir um nico caractere, fica a cargo do programador,
identific-lo com letra maiscula ou minscula.

Exemplos: Imposto, Sobrenome, Apelido, K3, Nota4, X, P, Xyz, x, Z etc.

2. O identificador de uma varivel s poder conter letras do alfabeto ingls (a a z ou A a Z),
algarismos indu-arbicos (0 a 9) e travesso, tambm denominado sublinha (underscore, em
ingls). Nenhum outro caractere permitido.

Exemplos: Nome1, Nome2, Fim_Texto, Arquivo_Morto, Cateto_Oposto, Angulo_Reto

3. O identificador da varivel dever ser significativo (de acordo com a funo no programa)

Exemplos: Desconto, Salario_Bruto, Desconto_IR, CNPJ, Peso, Largura, Milimetro etc.

4. Se o identificador de uma varivel for formado com mais de uma palavra, cada palavra se iniciar
com letra maiscula e essas sero separadas por um travesso.

Exemplos: Peso_Liquido, Lado_Maior, Menor_Valor, Respondeu_Sim, Posicao_Anterior,
Lugar_Fixo etc.

8

DECLARAO DE VARIVEIS

Toda varivel em um programa s pode ser usada depois de declarada e a declarao de uma varivel
escrita da seguinte forma:

Tipo_de_varivel Identificao_da_varivel

Exemplos:
inteiro N, Idade, Numero_Habitantes, Contador, Maior_Valor
real Salario, Desconto, X, Altura, Hipotenusa, Angulo
lgico Achou, Idoso, Colorido, Alto, Ligado, Branco, Transparente, Teste
literal Aprovado, Letra, Status, Sexo, Porta, Nome_Funcionario, CPF, Telefone,
Empresa, Frase, Legenda, Bairro, Rua

OPERADORES

OPERADOR DE ATRIBUIO

Na Matemtica usa-se o smbolo = em duas situaes:

1. Para atribuir valor a uma varivel
Exemplos: a = 1, b = -5 e c = 6

2. Para comparar dois valores
Exemplos: Se x = y, ento x y = 0

Em sistemas computacionais, como j dissemos anteriormente, uma instruo no pode ser ambgua,
isto , no pode ter dupla interpretao. Portanto devemos usar um smbolo para atribuio de valor e outro
para comparar valores. Nos algoritmos usaremos o smbolo (seta para a esquerda) para atribuir valor e
= para comparar valores.

Exemplos
1. inteiro x
x 4
2. literal Nome
Nome Maria Luiza de Almeida
Observao: o valor de variveis literais deve vir entre aspas
3. literal Sigla
Sigla CNPJ
4. real Soma
Soma 12.345
Observao: O ponto (.) separa a parte inteira da fracionria em um nmero real
5. lgico Achou
Achou falso


9

OPERADORES ARITMETICOS

As operaes matemticas bsicas adio e subtrao usam os smbolos + e -, respectivamente.
A operao de multiplicao tem vrias notaes. As expresses: ab, a.b, a x b tm o mesmo
significado: a multiplicado por b.
Da mesma forma b a b a b a
b
a
, : , / , , significam a dividido por b.
Em sistemas computacionais s podemos usar um smbolo para cada operao. Para as quatro
operaes bsicas acima usaremos:

Operador Operao
+ Adio
- Subtrao
* Multiplicao
/ Diviso

Usaremos tambm dois outros operadores:

1) Para a potenciao usaremos o smbolo ^, circunflexo. a ^ b significa a
b
.
Por exemplo: 2 ^ 5, significa 2 elevado ao expoente 5.

2) Uma operao muito til em sistemas computacionais e no usual na Matemtica o clculo do
resto da diviso inteira.
Um programa clssico de uso dessa operao o da contagem de notas numa retirada de
dinheiro em um caixa eletrnico. Vamos supor a retirada de R$ 215,00, em um caixa eletrnico,
com disponibilidade de notas de R$ 50,00, R$ 10,00 e R$ 5,00 . A primeira operao a ser feita
o clculo da quantidade de notas de 50 reais. 215 / 50 = 4 mais um resto de 15 reais. Depois a
quantidade de notas de R$ 10,00, 15 / 10 = 1 mais um resto de 5 reais. E finalmente a quantidade
de notas de R$ 5,00, 5 / 5 = 1 mais resto 0 (zero).
Portanto o valor a ser retirado consta de 4 notas de 50 reais, uma de 10 reais e uma de 5
reais.
Usaremos o termo mod para a operao resto da diviso de inteiros. Este tambm o
smbolo usado em algumas linguagens de programao como a linguagem Pascal

Assim: 17 mod 6 = 5, que o resto da diviso de 17 por 6.
18 mod 2 = 0, resto da diviso por 2
15 mod 20 = 15 (Por qu ?)
234abc7 mod 2 = 1, quaisquer que sejam os algarismos a, b e c. (Por qu ?)

^ Exponenciao
mod Resto da diviso inteira





10

Exemplos
Sejam os valores:
inteiro a, b,
real x, y, z

a 8
b 10
x 0.01
y 10,

Calcule:
a) c a + b * b (a * b)
b) z (y ^ 2) / 5 100 * x
c) k 99 mod (b mod a)

Soluo matemtica
a) c = 8 + 10 x 10 (8 x 10)
= 8 + 100 - 80
= 108 80
= 28
b) z = 10
2
/ 5 100 x 0,01
= 100 / 5 1
= 20 1
= 19
c) k = Resto(99 / Resto(10 / 8))
= Resto(99 / 2)
= 1

11

FUNES
ALGUMAS FUNES MATEMTICAS
Matematicamente, funo a relao, entre dois conjuntos, que associa a todo elemento de
um conjunto A um nico elemento de um conjunto B.
As funes, em matemtica, tm como objetos (domnio e imagem) os conjuntos numricos.
Exemplos:
1. 4 ) (
2
+ = x x f
uma funo cujo domnio o conjunto dos nmeros reais e cuja imagem o conjunto do
nmeros reais maiores ou iguais a 2.

2. f(x) = | x |
uma funo cujo domnio o conjunto dos nmeros reais e cuja imagem o conjunto do
nmeros reais maiores ou iguais a 0 (funo modular ou funo valor absoluto).

3.

>
<
=
2 n se ), 1 (
2 n se , 1
) (
n nf
n f
Esta funo denominada Funo Fatorial, e definida de forma recursiva (faz referncia a
si prpria) para nmeros inteiros no negativos (funo discreta). Usa-se o sinal de
exclamao (!) como notao dessa funo.








12

Relacionamos abaixo algumas funes matemticas e as correspondentes formas que usaremos nos
algoritmos.

Matemtica Funo Algoritmos
|x| Mdulo ou valor absoluto Abs(x) ou abs(x)

Raiz quadrada Raiz(x) ou raiz(x)

a elevado potncia x a ^ x
ln x Logaritmo neperiano (base e = 2,71828) Ln(x) ou ln(x)
log x Logaritmo decimal Log(x) ou log(x)
sen x Seno do arco x Sen(x) ou sen(x)
cos x Cosseno do arco x Cos(x) ou cos(x)
tg x Tangente do arco x Tg(x) ou tg(x)
arcsen x Arco seno de x ArcoSen(x) ou arcsen(x)
arccos x Arco cosseno de x ArcoCos(x) ou arccos(x)
arctg x Arco tangente de x ArcoTg(x) ou arctg(x)

OUTRAS FUNES
Parte inteira de um nmero real x Inteiro(x) ou Int(x) ou int(x)
Parte fracionria de um nmero real x Frac(x) ou frac(x)
Arredondamento de x Arredonda(x) ou arredonda(x)


13

COMANDOS DE ENTRADA

Programas de computadores processam dados que podem ser gerados dentro do prprio programa ou
podem vir de dispositivos externos. Neste texto vamos supor a entrada de dados externos pelo teclado. A
entrada de dados ser feita com o comando: leia (variveis).
O comando leia obtm o valor de um dado do teclado e esse valor atribudo varivel cujo
identificador est entre parnteses. Portanto o comando leia tem duas funes: ler um dado digitado no
teclado e atribuir o valor deste dado varivel cujo identificador aparece na frente do comando.
Exemplos
inteiro Idade
leia (I dade)

real Peso
leia (Peso)

literal Nome
leia (Nome)

ou leia (I dade, Peso, Nome)

COMANDO DE SADA

Um programa pode no ter entrada de dados, pois os dados podem ser gerados dentro do prprio
programa, mas no existe programa que no apresente um resultado ou uma informao. A sada de
resultados ou de informao ser feita com o comando: escreva (expresso literal e/ou expresso e/ou
valor).

Exemplos
inteiro Quantidade
real Preco, Total

leia (Quantidade, Preco)
Total Quantidade * Preco

escreva (Quantidade, Preco, Total)


14

COMENTRIOS

Comentrios so textos introduzidos nos programas para torn-los mais claros. Podemos usar um
comentrio, dentre outros objetivos, para explicar o significado de uma varivel, esclarecer um trecho do
programa ou documentar um programa. Nos algoritmos, para definirmos os comentrios, usaremos os
mesmos smbolos utilizados nas linguagens C# (l-se: C charp) e C++ (l-se: C mais mais), ou seja:

1. // para comentrios de uma linha
O texto escrito aps // ser considerado um comentrio

2. E para comentrios multilinhas
/*
texto
*/

Todo o texto entre os smbolos /* */ um comentrio.

Exemplo

//Cabealho
//Algoritmo para somar duas notas
//Programador: Pedro Carlos Lisboa
//20/11/2011

Algoritmo //Inicio do algoritmo
inteiro Nota1, Nota2 //duas notas de um aluno
inteiro Soma //Varivel para acumular a soma das duas notas

//Entrada de dados
leia (Nota1, Nota2)

//Processamento
Soma Nota1 + Nota2

//Sada de resultados
escreva (Soma)
Fim do algoritmo //Fim do algoritmo

O cabealho acima poderia ser escrito como um comentrio multilinhas, da seguinte forma:
/*
Algoritmo Algoritmo somar duas notas
Programador: Pedro Carlos Lisboa
20/11/2011
*/


15

ESTRUTURA DE UM ALGORITMO

No texto acima os diversos componentes de um algoritmo foram vistos de forma isolada.
Passaremos, a escrever algoritmos completos, com todos os componentes bsicos interligados.

Adotaremos alguns padres, no obrigatrios, para tornar os algoritmos simples, legveis e
funcionais:

- Todo algoritmo comear com um comentrio onde ficar expresso de forma bem clara qual o
objetivo do mesmo, quem o desenvolveu e a data de elaborao.
- Os comandos (instrues) de um algoritmo sero delimitados pelas palavras Algoritmo e Fim do
algoritmo.
- As instrues do algoritmo sero escritas, uma por linha
- Cada linha ser alinhada esquerda, com espaos, endentaes, nas estruturas de um mesmo nvel.
- As palavras chaves do algoritmo, como leia, escreva e outras, sero escritas com letras minsculas
- Todo identificador de varivel que tiver mais de um caractere se iniciar com letra maiscula
- Os identificadores compostos tero cada palavra iniciada com letra maiscula e separadas por
travesso (underline).

Exemplo:
// Algoritmo para resolver equao do primeiro grau
// Programador: Nome do programador
// DD/MM/AAAA
Algoritmo
real a, b, x
leia (a, b)

se (a 0)
x -b/a
escreva (x)
fim se
Fim do algoritmo














16

ESTRUTURAS SEQUENCIAIS

De acordo com a sequncia das aes executadas por um programa, suas estruturas podem ser
classificadas em Estruturas Sequenciais, Condicionais ou de Repetio. Nas estruturas sequenciais os
comandos sero executados na ordem em que aparecem, linha por linha, de cima para baixo. Nas estruturas
condicionais os comandos so executados ou no, dependendo de certas condies verdadeiras ou falsas. E
as estruturas de repetio, as que formam sequncias repetitivas de comandos dependentes de condies
verdadeiras ou falsas. Os programas abaixo faro uso apenas de estruturas sequenciais, isto , sem estruturas
condicionais ou de repetio. Portanto no sero feitos testes de validao de dados, operaes ou de
impresso de resultados.
Usaremos com o mesmo significado os termos escreva ou imprima.





Anlise do problema
Pelo teclado o usurio deve digitar o peso e a altura de uma pessoa. O algoritmo deve calcular a
massa corporal usando a frmula dada e posteriormente imprimir o resultado.
As variveis usadas so: Peso, Altura e Massa_Corporal

/*
Clculo de massa corporal
Data: DD/MM/AAAA
Programador:
*/
Algoritmo
//Declarao de variveis
real Peso, //Peso da pessoa em kg
Altura, //Altura da pessoa em m
Massa_Corporal //Massa corporal (sem dimenso)

//Entrada de dados
leia (Peso, Altura)

//Processamento
Massa_Corporal Peso /(Altura * Altura)

//Sada de resultados
escreva (Massa_Corporal)
Fim do algoritmo



1. Escreva um algoritmo que leia do teclado o valor de duas variveis, o peso (kg) e a altura (m) de
uma pessoa, calcule e escreva a massa corporal dessa pessoa usando a frmula:
17





Anlise do problema
Como 1 GB corresponde a 1024 MB, 1 MB corresponde a 1024 KB e 1KB equivale a 1024
Bytes, para se transformar uma 1 gigabytes em bytes deve-se multiplicar a unidade em gigabytes
por 1024 x 1024 x 1024 ou 2^30.
Portanto 1GB = (1024 x 1024 x 1024) bytes ou 1 GB = 2 ^ 30 bytes

/*
Programa para transformar Gigabytes em Bytes
Programador: ...
Data:DD/MM/AAAA
*/

Algoritmo
//Declarao de variveis
inteiro Giga, Byte

//Entrada de dados
leia (Giga)

//Processamento
Byte Giga * 1024 * 1024 * 1024

//Sada de resultados
escreva (Byte)

Fim algoritmo




2. Algoritmo para ler a capacidade de armazenamento de um Pendrive, em Gigabytes, calcular e escrever
sua capacidade em bytes.

18





Anlise do problema
O usurio deve digitar o valor da hora de trabalho e o nmero de horas trabalhadas. O algoritmo
determina o valor a receber multiplicando o valor da hora trabalhada pelo nmero de horas de
trabalho. O resultado impresso na tela.

/*
Programa para calcular salrio
Programador:
Data:
*/
Algoritmo
//Declarao de variveis
inteiro Numero_Horas
real Valor_Hora, Salario

//Entrada de dados
leia (Valor_Hora, Numero_Horas)

//Processamento
Salario Valor_Hora * Numero_Horas

//Sada de resultados
escreva (Salario)

Fim do algoritmo



3. Escreva um algoritmo que leia o valor da hora de trabalho de um operrio e o nmero de horas
trabalhadas no ms.
Calcule e escreva o valor a receber.
4.

19






Anlise do problema
O valor de um desconto calculado pela frmula:
Desconto = (Preo * Percentual_de_Desconto) / 100
O Novo Preo corresponde ao preo primitivo menos o desconto
/*
Programa para calcular descontos em mercadorias
Programador:
DD/MM/AAAA
*/

Algoritmo
//Declarao de variveis
real Preco, Desconto_5, Desconto_7, Desconto_10,
Novo_Preco_5, Novo_Preco_7, Novo_Preco_10

//Entrada de dados
leia (Preco)

//Processamento
Desconto_5 (Preco * 5) / 100 //Desconto de 5%
Desconto_7 (Preco * 7) / 100 //Desconto de 7%
Desconto_10 (Preco * 10) / 100 //Desconto de 10%
Novo_Preco_5 Preco - Desconto_5 //Preco menos desconto de 5%
Novo_Preco_7 Preco - Desconto_7 // Preco menos desconto de 7%
Novo_Preco_10 Preco Desconto_10 / Preco menos desconto de 10%

//Sada de resultados
Escreva (Preco,Desconto_5,Desconto_7,Desconto_10,Novo_Preco_5,Novo_Preco_7,
Novo_Preco_10)
Fim do algoritmo


4. Escreva um programa que leia o preo de uma mercadoria.
Calcule e armazene em outras variveis descontos de 5%, 7% e 10% sobre esse preo.
Escreva o preo, os descontos e os novos preos.

20






Anlise do problema
O usurio deve digitar o valor desejado (mltiplo de 5).
Seja por exemplo: Valor_Desejado = R$ 185,00
O nmero de notas de R$ 50,00 corresponde ao nmero inteiro obtido pela diviso do valor
desejado por 50, ou seja:
Notas_50 = inteiro (185 / 50)
= 3
O nmero de notas de R$ 20,00 ser o quociente inteiro da diviso do resto da diviso do valor
desejado por 50.
No exemplo dado:
R = Resto(185, 50)
= 35
Notas_20 = inteiro(R / 20)
= inteiro (35 / 20)
= 1
Obtm-se novo resto.
R = Resto(R, 20)
= Resto (35, 20)
= 15
O nmero de notas de R$ 10,00 ser o quociente inteiro da diviso desse resto por 10.
Notas_10 = inteiro(R / 20)
= inteiro(15 / 10)
= 1
O nmero de notas de R$ 5,00 ser o resto dessa ltima diviso, dividido por 5.
R = Resto (15, 10)
Notas_5 = inteiro (R / 5)
= 1

5. Escreva um programa que simule um caixa eletrnico, com notas de R$ 50,00, R$ 20,00,
R$ 10,00 e R$ 5,00. O usurio deve solicitar a quantia a ser retirada no caixa eletrnico e o
programa deve calcular e imprimir a quantidade de notas de R$ 50,00, R$ 20,00, R$ 10,00 e R$
5,00, nessa ordem. Suponha que o usurio digite o valor correto (mltiplo de 5).

21


/*
Programa para simular um caixa eletrnico
Programador:
Data: DD/MM/AAAA
*/
Algoritmo
//Declarao de variveis
inteiro Valor, Nota_5, Nota_10, Nota_20, Nota_50, Resto

//Entrada de dados
leia (Valor) //Valor a ser retirado no caixa eletrnico

//Processamento
Nota_50 Inteiro(Valor / 50) //Clculo da quantidade de notas de 50 reais
Resto Valor mod 50 //Clculo do resto da diviso do valor digitado por 50
Nota_20 Inteiro (Resto / 20) // Clculo da quantidade de notas de 20 reais
Resto Resto mod 20 //Clculo do resto da diviso do resto anterior por 20
Nota_10 Inteiro (Resto / 10) //Clculo da quantidade de notas de 10 reais
Resto Resto mod 10 //Clculo do resto da diviso do resto anterior por 10
Nota_5 Inteiro (Resto / 10) //Clculo da quantidade de notas de 5 reais

//Sada de resultados
escreva (Nota_5, Nota_10, Nota_20, Nota_50)
Fim do algoritmo

22





Anlise do problema
A rea, permetro e diagonal de um quadrado so calculados pelas frmulas:


/*
Programa para calcular a rea, o permetro e a diagonal de um quadrado, dado o lado
Programador:
Data: DD/MM/AAAA
*/

Algoritmo
//Declarao de variveis
real Lado, Area, Diagonal, Perimetro

//Entrada de dados
leia (Lado) //Medida do lado do quadrado

//Processamento
Area Lado * Lado //Clculo da area
Diagonal Raiz(Lado * Lado + Lado * Lado) //Clculo da diagonal
Perimetro 4 * Lado // Clculo do permetro

//Sada de resultados
escreva (Area, Diagonal, Perimetro)
Fim do algoritmo

6. Escreva um programa para calcular a rea, o permetro e a diagonal de um quadrado, dado o lado
(lido do teclado).

23




Anlise do problema
Para a transformar graus em radianos ou radianos em graus usa-se a relao:



/*
Transformar a medida de um arco de graus para radianos
Programador:
Data: DD/MM/AAAA
*/
Algoritmo
//Declarao de variveis
real Graus, Radianos
real PI 3.141592 //Valor de

//Entrada de dados
leia (Graus)

//Processamento
Radianos (Graus * PI) / 180 //Frmula dada acima

//Sada de resultados
escreva (Radianos)
Fim do algoritmo

7. Escreva um programa para transformar a medida de um arco de graus para radianos.

24




Anlise do problema
1 milha nutica = 1852 metros
Ler a medida em milhas. Multiplicar a medida por 1852. Escrever o resultado.

/*
Transformar milhas nuticas em metros
Programador:
Data: DD/MM/AAAA
*/

Algoritmo
//Declarao de variveis
real Milhas, Metros

//Entrada de dados
leia (Milhas)

//Processamento
Metros Milhas * 1852

//Sada de resultados
escreva (Milhas, milhas = , Metros, metros)
Fim do algoritmo


8. Escreva um programa para transformar milhas nuticas em metros.

25





Anlise do problema
Seja, por exemplo, o nmero N = 3456. Cada algarismo pode ser obtido da seguinte forma:
Algarismo das unidades = Resto (N, 10)
Unidades = 6
Algarismo das dezenas = Resto (Inteiro (N / 10), 10)
Dezenas = Resto (345, 10) = 5
Algarismo das centenas = Resto (Inteiro (N / 100), 10)
Centenas = Resto (34, 10) = 4
Algarismo das milhares = Inteiro (N / 1000)
Milhares = 3

/*
Separar os algarismos de um nmero de 4 algarismos
Programador:
Data: DD/MM/AAAA
*/
Algoritmo
//Declarao de variveis
inteiro Numero, Unidades, Dezenas, Centenas, Milhares

//Entrada de dados
leia (Numero)

//Processamento
Unidades Numero mod 10
Dezenas Inteiro(Numero / 10) mod 10
Centenas Inteiro (Numero / 100) mod 10
Milhares Inteiro (Numero / 1000)

//Sada de resultados
escreva (Numero, Unidades, Dezenas, Centenas, Milhares)
Fim do algoritmo

9. Escreva um programa para ler do teclado um nmero inteiro de 4 algarismos e separar os
algarismos das unidades, das dezenas, das centenas e das milhares.

26













Anlise do problema
Separar cada algarismo usando o processo do algoritmo anterior.
Aplicar a frmula dada acima.
Escrever o resultado

/*
Calcular digito verificador
Programador:
Data: DD/MM/AAAA
*/

Algoritmo
//Declarao de variveis
inteiro Numero, Unidades, Dezenas, Centenas, Milhares, Digito

//Entrada de dados
leia (Numero)

//Processamento
//Usar o processo do problema anterior
Unidades Numero mod 10
Dezenas (Numero / 10) mod 10
Centenas (Numero / 100) mod 10
Milhares Numero / 1000
Digito (9 * Unidades + 7 * Dezenas +

5 * Centenas + 3 * Milhares) mod 10

//Sada de resultados
escreva (Numero, Digito)
Fim do algoritmo


10. O dgito verificador do cdigo de 4 algarismos de cada produto de uma loja de informtica, calculado da
seguinte forma:

S = 9 * Algarismo_Unidades + 7 * Algarismo_Dezenas + 5 * Algarismo_Centenas + 3 * Algarismo_Milhares

Digito = Resto(S, 10)

Escreva um programa que leia o cdigo de um produto, calcule e escreva o dgito verificador, usando a regra
acima.
27

Lista de Exerccios 01

Em todos os exerccios abaixo a entrada de dados (leitura) ser pelo teclado e a sada de resultados
(impresso) na tela.

Escrever um algoritmo para:

1. Imprimir seu nome e endereo.

2. Ler o nome e o sobrenome de uma pessoa.
Imprimir o sobrenome, uma vrgula, um espao e o nome da pessoa.

3. Calcular e escrever o valor de um troco, lendo o valor da compra e o valor dado pelo comprador.

4. Calcular e escrever o valor, em reais, apurado em um cofrinho.
Ler a quantidade de moedas de um real, 50 centavos, 25 centavos, 10 centavos, 5 centavos e um centavo.

5. Ler dois nmeros reais x e y, calcular e imprimir:
A soma desses valores
A diferena entre x e y e entre y e x
O produto de x e y
O quociente entre x e y e entre y e x (os nmeros x e y devem ser diferentes de zero)

6. Ler as medidas dos lados de um retngulo, calcular e escrever:
O permetro
A rea
A diagonal desse retngulo.



7. Ler:
O nmero de horas trabalhadas por um funcionrio de uma empresa
O valor da hora de trabalho, em reais
O percentual de descontos de INSS
O percentual de descontos de Imposto de Renda
Calcular e escrever:
O salrio bruto
O valor do desconto de INSS
O valor do desconto de Imposto de Renda
O salrio lquido

8. Armazenar em uma constante o valor do quilowatt hora de energia eltrica residencial fornecida por uma
empresa de Energia Eltrica.
Ler o nmero registrado no medidor de uma residncia em dois meses consecutivos.
Calcular e escrever o consumo registrado e o valor a pagar pela conta de energia eltrica no perodo
acima.


28

9. Ler o salrio de um funcionrio e o percentual de aumento que ter.
Calcular e imprimir: o salrio atual, o percentual de aumento e o novo salrio.

10. Sabe-se que os produtos de um supermercado so codificados com nmeros inteiros de 100 a 999 e mais
um dgito verificador X assim calculado X = Resto( (Cdigo * 1357), 10).
Ler o cdigo de um produto, determinar o seu dgito verificador.
Escrever o cdigo digitado e o dgito verificador calculado.



29

Lista de Exerccios 02

Escrever um algoritmo que:

1. Leia um nmero real x, calcule e escreva f(x), sendo


2. Leia a idade de uma pessoa.
Leia o ano do ltimo aniversrio dessa pessoa.
Calcule e escreva o ano de nascimento dessa pessoa.

3. Leia o dimetro de uma esfera, calcule e imprima:
A rea da superfcie esfrica
O volume da esfera



4. Leia a medida do raio do piso circular de uma sala.
Calcule e escreva a medida do permetro e da rea do piso dessa sala.

5. Leia os elementos (nmeros reais) de uma matriz 2 x 2.
Calcule e escreva o determinante dessa matriz.

6. Leia o valor da medida do lado do quadrado da figura abaixo.
Calcule e escreva a medida da rea fora do crculo e dentro do quadrado (rea sombreada).








7. Leia uma medida em polegadas, na forma: numerador e denominador (dois valores inteiros).
Calcule e escreva a medida correspondente em milmetros.
Observao: 1 = 25,4 mm
Medidas em polegadas so dadas na forma:


30

8. Leia uma medida de ngulo em graus.
Calcule e escreva a medida correspondente em radianos.
Observao: use a proporo:

9. Leia uma medida de ngulo em graus.
Converta essa medida para radianos.
Calcule e escreva o seno, o cosseno e a tangente desse ngulo.
10. Leia a medida do raio da base e da altura, em metros, de uma caixa dgua, em forma de cilindro
circular reto,
Calcule e escreva o volume dessa caixa dgua, em litros.


31

Lista de Exerccios 03
Escrever um algoritmo que:

1. Leia uma temperatura em graus Fahrenheit.
Calcule e escreva a temperatura correspondente, em graus Celsius.

2. Solicite ao usurio que digite uma temperatura em graus Celsius.
Determine o valor dessa temperatura em graus Fahrenheit.
Escreva o valor da temperatura nas duas unidades.

3. Leia a cotao atual do dlar (real).
Leia um valor em dlar.
Converta o valor lido para reais.
Escreva o valor em dlar e em real.

4. O clculo do valor da prestao mensal do pagamento de um financiamento dado pela frmula:

parcelas de nmero t e financiado Valor VF
juros de mensal taxa Taxa 100), / Taxa (1 k prestao, P sendo

1
) 1 (
= =
= + = =

=
t
k
k
VF P

Escreva um algoritmo que:
Leia o valor a financiar
Leia o valor da taxa mensal de juros
Leia o nmero de parcelas
Calcule e imprima o valor de cada parcela

5. Leia as coordenadas de dois pontos, A e B, do plano.
Calcule e escreva a distncia entre A e B.

6. Leia uma medida em milhas terrestres.
Calcule e escreva a medida correspondente em metros.

7. Leia a base e a altura de um tringulo.
Calcule e escreva a rea do mesmo.

8. Leia o nmero de lados de um polgono convexo.
Calcule e escreva o nmero de diagonais desse polgono.

9. Leia uma hora (uma varivel para horas e outra para minutos).
Converta e escreva essa hora em segundos.
10. Leia a cotao do dlar em reais.
Faa uma tabela com os valores abaixo em dlar e em reais.
Valores em dlar: 1, 2, 5, 10, 20, 50, 100, 500 e 1000.



32

Lista de Exerccios 04

Escrever um algoritmo que:

1. Leia as coordenadas de dois pontos A e B, do plano.
Calcule e escreva as coordenadas do ponto mdio do segmento AB.

2. Leia as medidas dos trs lados de um tringulo (Suponha medidas vlidas).
Calcule e escreva a rea do mesmo.
sendo



3. Leia as medidas dos catetos de um tringulo retngulo.
Calcule a medida da hipotenusa.
Escreva as medidas dos catetos e da hipotenusa.

4. Leia as medidas dos lados de um tringulo qualquer.
Calcule as alturas relativas a cada lado.
Escreva as medidas dos lados e das alturas.
Obs. A altura relativa ao lado a pode ser calculada pela frmula:



5. Uma herana em dinheiro foi dividida entre trs irmos, em partes diretamente proporcionais
idade de cada um.
Escreva um algoritmo que solicite ao usurio que digite o valor da herana e a idade de cada irmo.
Calcule o valor que caber a cada irmo.
Escreva o valor da herana, as idades e o valor que caber a cada irmo.

6. Uma liga metlica composta de 30% de nquel e 70% de cobre.
Escreva um algoritmo que solicite ao usurio que digite a quantidade de liga que se pretende
obter, em quilogramas.
Determine a quantidade de cada um dos componentes da liga.
Escreva a quantidade de liga e de cada um de seus componentes.

7. Solicite ao usurio que digite o raio da base e a altura, em metros, de uma caixa dgua cilndrica.
Calcule o volume dessa caixa.
Escreva o raio da base, a altura e o volume dessa caixa dgua, em litros.

8. Solicite ao usurio que digite a velocidade de um automvel, em quilmetros por hora.
Calcule essa velocidade em m/seg.
Escreva as duas velocidades.

9. Leia a medida do lado de um hexgono regular.
Calcule e escreva sua rea.

10. Calcule e escreva na tela 5%, 10%, 15% e 25% do salrio mnimo.

33

ESTRUTURAS CONDICIONAIS

Todos os algoritmos feitos at agora executaram apenas uma sequncia de aes, uma aps a outra,
em uma ordem pr-estabelecida seguindo o padro:
- Declarao de variveis
- Entrada de dados pelo teclado, sem validao dos mesmos
- Processamento sequencial (sem desvios ou repeties)
- Impresso de valores na tela
Nos prximos programas introduziremos comandos para controlar a ordem e o nmero de vezes que
uma tarefa deve ser executa.
No nosso cotidiano verificamos varias situaes em que uma determinada ao
condicionada a determinados fatores. Vejamos alguns exemplos:
- Na elaborao do Contra cheque dos funcionrios de uma empresa, o desconto de imposto
de renda depende da faixa salarial de cada funcionrio.
- O clculo do desconto a ser oferecido por uma loja depende da forma de pagamento: a vista,
a prazo, com carto de dbito ou carto de crdito.
- A dosagem de alguns medicamentos depende do peso da pessoa que vai us-lo.
- A classificao de um time num campeonato de futebol depende do nmero de vitrias,
empates, gols marcados, gols sofridos e resultado nos confrontos diretos, no caso de empate
na classificao.
Nos programas de computadores as aes dependentes de certas condies formo um bloco
de comandos denominado Estrutura condicional. As linguagens de programao oferecem
muitas opes de estruturas condicionais, mas nesse estudo de algoritmos usaremos apenas dois
tipos para que o enfoque seja a lgica de programao e no as diversas formas de especificar
uma estrutura.
Antes de estudarmos as estruturas condicionais vamos fazer uma breve exposio sobre a lgica
proposicional.

PROPOSIO
As estruturas condicionais fazem uso de proposies, que so sentenas declarativas cujo resultado
verdadeiro ou falso.
Exemplo de proposies:
Joo alto.
Ontem choveu.
A telefonia celular da empresa X eficiente.
O nmero de habitantes de So Paulo superior a vinte milhes.
Betim recicla lixo.
O telefone da empresa ZZ 31-3210-4567
O Shopping Betim abre as portas s 10 horas
O CPF 123.456.789-10 no vlido
(-3) x (-7) > 0

34

As proposies so escritas, em geral, com dois tipos de operadores: Operadores Relacionais
e Operadores Lgicos.

OPERADORES RELACIONAIS
So operadores que estabelecem uma relao entre dois operandos gerando um resultado
verdadeiro ou falso. Nos algoritmos, por questo de simplicidade, sem deixar de lado o rigor
cientfico, usaremos os mesmos operadores relacionais da Matemtica, ou seja:

Matemtica
Operador
Significado Algoritmo
Smbolo utilizado
= igual a =
diferente de
> maior que >
< menor que <
menor ou igual a ou <=
maior ou igual a ou >=

Exemplos:
4 = 2 + 2 Verdadeiro
6 (1 + 2 + 3) Falso
7 > (3 + 4) Falso
-5 < 0 Verdadeiro
3 (1 + 1 + 1) Verdadeiro
4 (4 - (-4)) Falso
Ana Maria = Anamaria Falso
Mario > Maria Verdadeiro
a < A Falso

35

As trs ltimas linhas estabelecem uma relao entre expresses literais. Para que os sistemas
computacionais possam estabelecer uma relao de ordem entre os caracteres de um texto, foram
criadas tabelas onde cada caractere recebe uma codificao numrica. As tabelas mais utilizadas so
a Tabela ASCII e a Tabela UNICODE. Nessas tabelas os caracteres tm um cdigo numrico que os
identifica de forma nica.
A Tabela ASCII codifica os caracteres de 0 a 255. Os caracteres de 0 a 31 so caracteres de controle,
como por exemplo: beep - nmero 7; fim de uma linha de texto nmero 10; enter nmero
13. Os cdigos de 32 a 127 representam os caracteres utilizados na lngua inglesa, como por
exemplo:
48 a 57: 0 a 9:
64: @
65 a 90: A a Z
97 a 122: a a z
Cada linguagem de programao adota uma tabela para ordenar caracteres. Num sistema que
use a Tabela ASCII o caractere a tem cdigo numrico 97 e o caractere A tem cdigo numrico 65.
Por essa razo a ltima linha da tabela acima resultou em valor falso (97 < 65).
Nessa apostila adotaremos a Tabela ASCII como padro.

OPERADORES LGICOS

So operadores que estabelecem uma conexo entre expresses lgicas.
Usaremos trs operadores lgicos: NO, OU e E.
O operador NO tem apenas um operando, o OU e o E tm dois operandos. Esses
operadores produzem um resultado lgico (verdadeiro ou falso) e so representados tambm, pelos
smbolos:
NO (apstrofo)
E ^
OU v
Exemplo
Sejam duas proposies, simbolizadas pelas letras p e q:
p = fala ingls
q = fala espanhol
O uso de tabelas facilita o entendimento dos operadores lgicos:

Operador NO
fala ingls NO fala ingls
V F
F V



36

Ou de forma simblica




Operador E
fala ingls
p
fala espanhol
q
fala ingls E fala espanhol
p ^ q
V V V
V F F
F V F
F F F

Operador OU
fala ingls
p
fala espanhol
q
fala ingls OU fala espanhol
p v q
V V V
V F V
F V V
F F F

Generalizando
Sejam duas proposies quaisquer p e q

p q p p v q p ^ q
V V F V V
V F F V F
F V V V F
F F V F F

ESTRUTURAS CONDICIONAIS SIMPLES

Notao
se (condio)
bloco de comandos_1
fim se
bloco de comandos_2

p p
V F
F V
37

Funcionamento
Se a condio entre parnteses for verdadeira ser executado o bloco de comandos_1, e posteriormente
o bloco de comandos_2, seno (condio falsa) a execuo passar diretamente para o bloco de
comandos_2.

Exemplo:
x 2012 //Atribui um valor varivel x
y 1995 //Atribui um valor varivel y

se (x > y) //Verifica se x maior que y
z x y //Se a condio acima verdadeira calcula a diferena entre x e y e atribui
fim se // varivel z
//fim da estrutura condicional

se (x < y) //Verifica se x menor que y
z y x //Se a condio acima verdadeira calcula a diferena entre y e x e atribui
//varivel z
fim se //fim da estrutura condicional
escreva (z) //Imprime o valor de z

Como a primeira condio verdadeira ser executado o comando z x y e o valor de z ser 17,
valor a ser impresso na tela.

ESTRUTURAS CONDICIONAIS DUPLAS

Notao
se (condio)
bloco de comandos_1
seno
bloco de comandos_2
fim se


38

Funcionamento
Se a condio, entre parnteses, for verdadeira ser executado o bloco de comandos_1, se for falsa ser
executado o bloco de comandos_2.
Exemplo:
x 20 //Atribui um valor varivel x
y 30 //Atribui um valor varivel y
se (x > y) //Verifica se x maior que y
z x y //Se a condio acima verdadeira calcula a diferena entre y e x e atribui o
resultado z seno //Se x menor ou igual a y
z y x // Se a condio acima falsa calcula a diferena entre y e x e atribui o
// resultado z
fim se //Fim da estrutura condicional

escreva (z) //Imprime o valor de z

Como a condio x > y falsa, ser executado o comando z y x, e o valor de z ser 10, valor a
ser impresso na tela.

39

Apresentaremos a seguir alguns problemas com estruturas condicionais.


Anlise do problema
O algoritmo deve verificar se o nmero menor que zero (negativo) ou igual a zero (nulo) ou
maior que zero (positivo).
/*
Verificar se um nmero negativo
Programador:
Data: DD/MM/AAAA
*/
Algoritmo
//Declarao de variveis
real Numero

//Entrada de dados
leia (Numero)

//Processamento e sada de resultados
se (Numero < 0)
escreva (Numero negativo)
seno
se (Numero = 0)
escreva (Numero nulo)
seno
escreva (Numero positivo)
fim se
fim se

Fim do algoritmo


11. Programa para ler um nmero inteiro e escrever se ele negativo, nulo (zero) ou positivo.

40




Anlise do problema
Uma pessoa maior de idade se possui 18 anos ou mais.
Ler a idade de uma pessoa. Verificar se a idade dessa pessoa maior ou igual a 18 anos ou no,
escrevendo mensagem adequada.
/*
Verificar se uma pessoa maior de idade ou no
Programador:
Data: DD/MM/AAAA
*/
Algoritmo
//Declarao de variveis
inteiro Idade

//Entrada de dados
leia (Idade)

//Processamento e sada de resultados
se (Idade < 18)
escreva (No maior de idade)
seno
escreva ( maior de idade)
fim se

Fim do algoritmo


16. Programa para ler a idade de uma pessoa e verificar se ela ou no, maior de idade.

41







Anlise do problema
Ler dois valores numricos. Verificar se o segundo diferente de zero. Em caso afirmativo
dividir o primeiro pelo segundo e escrever o resultado (quociente). Se o segundo valor for
negativo escrever uma mensagem indicando que a operao impossvel.

/*
Calcular a razo entre dois nmeros se o segundo diferente de zero
Programador:
Data: DD/MM/AAAA
*/
Algoritmo
//Declarao de variveis
real Numero1, Numero2, Razao

//Entrada de dados
leia (Numero1, Numero2)

//Processamento e sada de resultados
se (Numero2 <> 0)
Razao Numero1 / Numero2
escreva (A razo : , Razao)
seno
escreva (Impossvel dividir por zero)
fim se

Fim do algoritmo


13. Programa para ler do teclado dois nmeros reais.
Verificar se o segundo valor diferente de zero. Em caso afirmativo calcular e escrever a razo
entre o primeiro e o segundo.

42





Anlise do problema
Usa-se a operao mod, resto da diviso inteira, para verificar se um nmero divisvel por outro.
Se a mod b = 0, a divisvel por b.
Nesse problema deve-se verificar se Numero divisvel por 2 e 11.
/*
Verificar se um nmero divisvel por 2 e 11
Programador:
Data: DD/MM/AAAA
*/
Algoritmo
//Declarao de variveis
inteiro Numero

//Entrada de dados
leia (Numero)

//Processamento e sada de resultados
escreva (Numero)
se (Numero mod 2 = 0 e Numero mod 11 = 0)
escreva ( divisvel por 2 e 11)
seno
escreva ( No divisvel por 2 ou por 11 ou por ambos)
fim se

Fim do algoritmo


14. Programa para ler um nmero inteiro e verificar se ele divisvel por 2 e por 11, imprimindo
mensagem adequada.
43








Seguem dois algoritmos diferentes para esse programa:

Anlise do problema
Na primeira verso cada nome ser comparado com o nome digitado e se for igual a um dos nomes
escrever o telefone correspondente. Se o nome digitado for diferente de todos os nomes da lista ser
impressa uma mensagem indicando que o nome no consta na lista.

/*
Imprimir telefone de pessoa cujo nome foi digitado Verso 1
Programador:
Data: DD/MM/AAAA
*/
Algoritmo
//Declarao de variveis
literal NomeUsuario

//Entrada de dados
leia (NomeUsuario)

//Processamento e sada de resultados
se (NomeUsuario = Artur)
escreva (9587-3663)
fim se

se (NomeUsuario = Bernardo)
escreva (9961-3400)
fim se

se (NomeUsuario = Caio )
escreva (8824-6146)
fim se

se (NomeUsuario = Vinicus)
escreva (9974-7609)
fim se

se (NomeUsuario Artur e NomeUsuario Bernardo e NomeUsuario Caio e
NomeUsuario Vinicus)
escreva (No consta da lista)
fim se

Fim do algoritmo


15. Programa para ler um nome do teclado. Imprimir o telefone correspondente, de acordo com a lista:
Artur 9587-3663
Bernardo 9961-3400
Caio 8824-6146
Vincius 9974-7609
44


Verso 2 do problema anterior
Anlise do problema:
Na segunda verso cada nome ser comparado com o nome digitado, se for igual escrever o telefone
correspondente e encerra o programa, se for diferente comparar com o prximo nome. Se o nome digitado
for diferente de todos os nomes da lista ser impressa uma mensagem indicando que o nome no consta na
lista.

/*
Imprimir telefone de pessoa cujo nome foi digitado - Verso 2
Programador:
Data: DD/MM/AAAA
*/
Algoritmo
//Declarao de variveis
literal NomeUsuario

//Entrada de dados
leia (NomeUsuario)

//Processamento e sada de resultados
se (NomeUsuario = Artur)
escreva (9587-3663)
seno
se (NomeUsuario = Bernardo)
escreva (9961-3400)
seno
se (NomeUsuario = Caio)
escreva (8824-6146)
seno
se (NomeUsuario = Vinicus)
escreva (9974-7609)
seno
escreva(Nome no consta da lista)
fim se //se Vincius
fim se //se Caio
fim se //se Bernardo
fim se //se Artur
Fim do algoritmo

O segundo algoritmo mais eficiente que o primeiro, pois ao encontrar o nome digitado escreve o
telefone e encerra o programa. O primeiro, mesmo encontrando o nome digitado, faz todas as
comparaes seguintes.
45





Anlise do problema:
As linguagens de programao utilizam tabelas com todos os caracteres hoje conhecidos nas
diversas lnguas ou cincias. Nessas tabelas cada caractere tem um nmero de ordem que
facilita sua identificao. Assim os caracteres numricos so ordenados de 0 a 9. O alfabeto
ingls tem os caracteres maisculos de A a Z e os minsculos de a a z. Portanto
possvel usar a relao de ordem >, maior, < menor, =, menor ou igual ou maior ou igual
entre caracteres.
/*
Imprimir tipo de caractere digitado
Programador:
Data: DD/MM/AAAA
*/

Algoritmo
//Declarao de variveis
literal Caractere

//Entrada de dados
leia (Caractere)

//Processamento e sada de resultados
se (Caractere 0 e Caractere 9)
escreva (ALGARISMO)
seno
se (Caractere A e Caractere Z)
escreva (LETRA MAISCULA)
seno
se (Caractere a e Caractere z)
escreva (LETRA MINSCULA)
seno
escreva (OUTRO CARACTERE)
fim se //a ... z
fim se //A ... Z
fim se //0 ... 9
Fim do algoritmo

16. Programa para ler um caractere e imprimir se um digito de 0 a uma letra maiscula de A a Z ou
uma letra minscula de a a z.
46

LISTA DE EXERCCIOS NMERO 5
1. Faa um algoritmo para ler o valor do custo fixo e o destino de um frete.
Calcular e imprimir o custo de transporte (custo fixo + custo varivel) de acordo com a tabela:







2. Um posto de combustveis distribui brindes aos seus clientes de acordo com a quantidade de litros de
combustvel abastecidos:
De 10 a 20 litros: um chaveiro
Mais de 20 e menos de 30 litros: uma ducha
30 litros ou mais: um lanche

Faa um algoritmo que: leia a quantidade de litros abastecidos e imprima uma mensagem
dizendo o brinde ganho.

3. Em um clube h dois tipos de scios: Proprietrio e Usurio. Haver um reajuste nas mensalidades
de 15% para o scio Proprietrio e 12% para o scio Usurio.
Faa um algoritmo que:
Leia o cdigo do tipo de scio:
1 Proprietrio
2 Usurio
Leia o valor da mensalidade
Calcule e imprima o valor da mensalidade reajustada de acordo com o cdigo lido.

4. Em uma locadora o valor que se cobra do cliente obedece seguinte frmula:
Valor Cobrado = Quantidade de fitas X Quantidade de dias alugados X R$2,50
Nesta locadora existe uma promoo: os clientes que alugam 5 ou mais fitas de uma s vez ganham
um desconto de 20 % no valor total.
Levando em considerao esse desconto, faa um algoritmo que:
Leia a quantidade de fitas alugadas
Leia a quantidade de dias
Calcule e imprima o valor a pagar

5. Em uma revenda de carros existem os seguintes planos de venda:
De 6 a 24 parcelas: juros de 1.8% ao ms
De 25 a 48 parcelas: juros de 2.1% ao ms
De 49 a 72 parcelas: juros de 2.5% ao ms

Faa um algoritmo que:
Leia o valor do carro a ser financiado
Leia o nmero de parcelas
Calcule e imprima o valor da parcela, usando a frmula da lista de exerccios 3.

6. Faa um algoritmo que leia a idade de uma pessoa, calcule e escreva o tipo de eleitor segundo a
tabela:
Menos de 16 anos: no eleitor
De 16 ou 17 anos, ou mais de 69 anos: facultativo
De 18 a 69: obrigatrio
DESTINO CUSTO VARIVEL
Alfenas 0.5 * FIXO
Arax 0.3 * FIXO
Corinto 0.2 * FIXO
Ipatinga 0.1 * FIXO
47


7. Faa um algoritmo que leia a altura (h) e o sexo de uma pessoa. Calcule e imprima o peso ideal desta
pessoa de acordo com as frmulas:

Para homens: 72,7h 58,0
Para mulheres: 62,1h 44,7

8. Escreva um algoritmo para :
Ler o nmero de LADOS de um polgono regular, nmero inteiro, maior ou igual a 3.
Ler a medida do lado, nmero real.
Calcular e escrever:
A altura, se o nmero de lados igual a 3
A rea, se nmero de lados igual a 4
O permetro, se o nmero de lados igual a 5
O raio do crculo circunscrito, se nmero de lados igual a 6

9. Escreva um algoritmo para ler um nmero inteiro.
Verificar se ele par ou mpar.

10. Escreva um algoritmo para ler um nmero real.
Verificar se ele positivo, negativo ou nulo.


48

LISTA DE EXERCCIOS NMERO 6

1) Escreva um algoritmo para ler trs nmeros reais.
Determinar e imprimir o menor valor.

2) Escreva um algoritmo para ler trs nmeros reais.
Verificar se eles podem ser lados de um tringulo.
Em caso afirmativo, verificar se o tringulo eqiltero, isscele ou escaleno, seno, imprimir
uma mensagem adequada.

3) Escreva um algoritmo para ler trs valores inteiros.
Imprimi-los em ordem crescente.

4) Escreva um algoritmo que leia o nome e o salrio bruto de um funcionrio. Dados os descontos
abaixo, calcule e escreva:
- O nome do funcionrio
- O desconto de INSS
- O desconto de Imposto de Renda
- O salrio bruto
- O salrio lquido

Salrio bruto (SB) Imposto de Renda INSS
SB s R$ 700,00 Isento 8%
R$ 700,00 < SB s R$ 2.800,00 15% 9%
SB > R$ 2.800,00 27,5% 10%

5) Escreva um algoritmo para verificar se um ano bissexto, inserindo mensagem adequada.
6) Escreva um algoritmo para determinar e escrever as razes reais ou complexas de uma equao do
2 grau.
7) Escreva um algoritmo para verificar se um sistema linear com duas equaes e duas variveis
DETERMINADO, INDETERMINADO ou IMPOSSVEL.
8) Escreva um algoritmo que leia a idade de uma pessoa e escreva na tela Voc jovem se idade
for menor que 18 anos, Voc adulto se idade maior ou igual a 18 e menor que 65 anos e
Voc idoso se idade maior ou igual a 65 anos.

9) Escreva um algoritmo que leia trs notas de um aluno. Calcule e escreva a soma das duas maiores
notas.

10) Escreva um algoritmo que leia uma senha, determine e escreva se ela igual a 7531 (Permitir 3
tentativas)






49

ESTRUTURAS DE REPETIO

Uma estrutura de repetio utilizada quando um comando ou uma sequncia de comandos de um
algoritmo deve ser repetida. Cada linguagem de programao tem suas estruturas especficas de repetio.
Nos algoritmos desse texto usaremos apenas duas:
1) Se o nmero de repeties dependente de uma condio: estrutura de repetio enquanto.
2) Se o nmero de repeties definido, isto , se o nmero de repeties controlado por uma
varivel: estrutura de repetio para.


REPETIES DEPENDENTES DE CONDIO NO INCIO

ESTRUTURA enquanto

NOTAO

enquanto (condio)
bloco de comandos_1
fim enquanto
bloco de comandos_2

Funcionamento

Enquanto a condio entre parnteses for verdadeira o bloco de comandos_1 ser executado e
quando for falsa o processamento passar ao bloco de comandos_2.

Exemplo

x 0 //Valor inicial de x
enquanto (x < 10) //Verifica se x menor que 10
escreva (x) //Se a condio do enquanto verdadeira escreve x
x x + 1 //Aumenta x em uma unidade
fim enquanto //Termina a repetio quando x = 10
//Novos comandos

Esse trecho de algoritmo tem como objetivo escrever os nmeros inteiros de 0 a 9.
Para facilitar o entendimento numeramos as linhas de comandos.

1) x 0
2) enquanto (x < 10)
3) escreva (x)
4) x x + 1
5) fim enquanto
6) //Novos comandos

50

1) Atribui o valor inicial (0 zero) varivel x.
2) Comando que verifica o valor da varivel x, gerando um valor verdadeiro ou falso, que indicar se o
processamento continuar na prxima linha de comandos (linha 3) ou se desviar para a linha 6.
3) Escreve o valor de x: 0, 1, 2, 3, 4, 5, 6, 7,8, 9
4) Aumenta uma unidade na varivel x e coloca o resultado na prpria varivel x que passar a ser: 1, 2,
3, 4, 5, 6, 7, 8, 9, 10 (ltimo valor que ser o responsvel pelo encerramento da estrutura de
repetio).
5) Limita os comandos da estrutura de repetio.
6) Prximos comandos do algoritmo, fora da estrutura de repetio.

PROGRAMAS EXEMPLOS DE ESTRUTURAS DE REPETIO



Anlise do problema:
Os nmeros impares menores que 100 so: 1, 3, 5, ..., 95, 97, 99
O primeiro nmero impar 1 e os prximos so obtidos pelo acrscimo de 2 unidades ao
anterior, at que o valor ultrapasse 99.
/*
Escrever na tela os nmeros mpares de 1 a 99
Programador:
Data: DD/MM/AAAA
*/
Algoritmo
//Declarao de variveis
inteiro Numero

//Valor inicial
Numero 1

//Processamento e sada de resultados
enquanto (Numero < 100)
escreva (Numero)
Numero Numero + 2
fim enquanto

Fim do algoritmo


17. Programa para escrever na tela os nmeros positivos mpares menores que 100.
51




Anlise do problema:
Uma varivel deve armazenar o valor da maior altura e outra o nome da pessoa que a tem.
A maior altura deve ser iniciada com o valor zero.
A varivel Contador controla a repetio para ler 5 nomes e alturas.
/*
Programa para ler o nome e a altura de cinco pessoas.
Escrever o nome e a altura da pessoa mais alta
Programador:
Data: DD/MM/AAAA
*/
Algoritmo
//Declarao de variveis
real Altura, Maior_Altura
literal Nome, Nome_do_mais_Alto
inteiro Contador

Maior_Altura 0
Contador 1

//Processamento e sada de resultados
enquanto (Contador <= 5)

//Entrada de dados
leia (Altura)
leia (Nome)

se (Altura > Maior_Altura)
Maior_Altura Altura
Nome_do_mais_Alto Nome
fim se

Contador Contador + 1
fim enquanto

escreva (Maior_Altura, Nome_do_mais_Alto)

Fim do algoritmo


18. Leia o nome e a altura de cinco pessoas.
Determine e escreva o nome e a altura da pessoa mais alta
52











Anlise do problema:
Sexo pode ser representado por 0 (zero) feminino e 1 (um) masculino e resposta 1 equivalendo a Sim
e 0 a No.
Todos os contadores devem ser inicializados com 0.

19. Foi feita uma pesquisa com 150 pessoas sobre a aprovao ou no de um determinado governo.
Escreva um programa que determine e escreva:
- O nmero de homens que respondeu pesquisa
- O nmero de mulheres que respondeu pesquisa
- O nmero de homens que respondeu SIM
- O nmero de mulheres que respondeu NO
- A porcentagem de pessoas que respondeu SIM
53

/*
Avaliao de pesquisa
Programador:
Data: DD/MM/AAAA
*/
Algoritmo
//Declarao de variveis
inteiro Sexo, Resposta, Numero_do_Entrevistado, Numero_Homens, Numero_Mulheres,
Numero_Homens_Sim, Numero_Muheres_Nao, Porcentagem_Sim, Total_Sim

//Atribuio inicial de valor: inicializao
Numero_do_Entrevistado 0
Numero_Homens 0
Numero_Muheres 0
Numero_Homens_Sim 0
Numero_Muheres_Nao 0
Total_Sim 0

//Entrada de dados e processamento
enquanto (Numero_do_Entrevistado <= 150)

Numero_do_Entrevistado Numero_do_Entrevistado + 1

leia (Sexo, Resposta)

se (Resposta = 1)
Total_Sim Total_Sim + 1
fim se
se (Sexo = 0)
Numero_Mulheres Numero_Mulheres + 1
se (Resposta = 0)
Numero_Muheres_Nao Numero_Muheres_Nao + 1
fim se
seno
se (Resposta = 1)
Numero_ Homens_Sim Numero_ Homens_Sim + 1
fim se
fim se // Sexo = 0
Numero_do_Entrevistado Numero_do_Entrevistado + 1
fim enquanto

Porcentagem_Sim (Total_Sim / 150) * 100
Numero_Homens 150 Numero_Mulheres

//Sada de resultados
escreva (Numero_Homens, Numero_Mulheres, Numero_Muheres_Nao)
escreva (Numero_ Homens_Sim, Porcentagem_Sim)

Fim do algoritmo

54





Anlise do problema:
A cada 40 segundos a massa do material se reduz metade da massa anterior. O algoritmo deve
aumentar o tempo em 40 e reduzir a massa do material metade (dividir por 2), at que a massa
fique menor que 1 grama

/*
Programa para determinar tempo de desintegrao de matria
Programador:
Data: DD/MM/AAAA
*/
Algoritmo
//Declarao de variveis
real Massa_Inicial, Massa_Atual
inteiro Tempo, Horas, Minutos, Segundos,

Tempo 0
//Entrada de dados
leia (Massa_Inicial)
Massa_Atual Massa_Inicial

//Processamento e sada de resultados
enquanto (Massa_Atual >= 1)
Massa_Atual Massa_Atual / 2
Tempo Tempo + 40
fim enquanto

Horas inteiro(Tempo / 3600)
Minutos inteiro((Tempo Horas * 3600) / 60)
Segundos (Tempo Horas * 3600 Minutos * 60
escreva (Horas, Minutos, Segundos)
Fim do algoritmo








20. Um material radioativo reduz-se metade de sua massa a cada 40 segundos.
Escreva um programa que leia a massa desse material, em quilogramas, calcule e escreva o
tempo (horas, minutos e segundos) necessrio para que a massa fique menor que 1 grama.
55

ESTRUTURA DE REPETIO COM VARIVEL DE CONTROLE

Quando o nmero de repeties conhecido, pode-se usar a estrutura:
para Var Valor_Inicial at Valor_Final passo p faa
Bloco de comandos_1
fim para
Bloco de comandos_2

Para cada valor de Var ser executado o bloco de comandos_1. Var sofre um acrscimo p, positivo
ou negativo, podendo ser omitido se a varivel aumenta de 1 em 1.
Alguns problemas anteriores podem ser resolvidos usando-se essa estrutura.



Anlise do problema:
A tabuada de um nmero inteiro qualquer composta do produto desse nmero pelos fatores 0, 1,
2, ..., 9.
Assim, o algoritmo deve imprimir 0 x 9, 1 x 9, 2 x 9, ..., 8 x 9 e 9 x 9

/*
Imprimir a tabuada de 9
Programador:
Data: DD/MM/AAAA
*/
Algoritmo
//Declarao de variveis
inteiro Multiplicador, Fator_Fixo, Produto

Fator_Fixo 9

//Processamento e sada de resultados
para Multiplicador 0 at 9 passo 1 faa
Produto Multiplicador * Fator_Fixo
escreva (Fator_Fixo, *, Multiplicador, = , Produto)
fim para

Fim do algoritmo


21. Faa um programa para imprimir a tabuada de multiplicao do nmero inteiro 9.
56





Anlise do problema:
Verificamos que cada termo da sequncia formada por um numerador e um denominador.
O numerador tem valor inicial 1 e varia de 1 em 1 at N (passo ou acrscimo 1) e o
denominador tem valor inicial 2 e cresce de 3 em 3 (passo ou acrscimo 3).
O algoritmo consiste em calcular cada termo da sequncia e acrescentar (somar) esse termo a uma
varivel (somatrio), cujo valor inicial deve ser 0 (zero).

/*
Soma dos N primeiros termos da sequncia: 1/2, 2/5, 3/8, 4/11, 5/14, 6/17, ...
Programador:
Data: DD/MM/AAAA
*/
Algoritmo
//Declarao de variveis
inteiro Numerador, Denominador, N
real Termo, Soma

Soma 0
Numerador 1
Denominador 2

//Entrada de dados
leia (N)

//Processamento e sada de resultados
para Numerador 1 at N faa
Termo Numerador / Denominador
Soma Soma + Termo
Denominador Denominador + 3
fim para

escreva (Soma)

Fim do algoritmo



22. Escreva um programa que leia um nmero inteiro e positivo N.
Calcule e escreva a soma dos N primeiros termos da seqncia
1/2, 2/5, 3/8, 4/11, 5/14, 6/17, ...
57





Anlise do problema:
Um nmero palndromo ou frase palndroma aquela que idntica se lida da direita para a
esquerda ou da esquerda para a direita.

Exemplos:
luz azul, acaiaca, ovo, ana, arara, socorram-me subi no onibus em marrocos
12321, 2002
Os nmeros palndromos de 4 algarismos seguem o padro XYYX, onde X um nmero
inteiro de 1 a 9 e Y um nmero inteiro de 0 a 9. Assim cada nmero inteiro palndromo de 4
algarismos ter a forma:
N = 1000 X + 100 Y + 10 Y + X
/*
Nmeros palndromos de 4 algarismos
Programador:
Data: DD/MM/AAAA
*/
Algoritmo
//Declarao de variveis
inteiro Numero, X, Y

//Processamento e sada de resultados
para X 1 at 9 faa
para Y 0 at 9 faa
Numero 1000 * X + 100 * Y + 10 * Y + X
escreva (Numero)
fim para
fim para

Fim do algoritmo




23. Escreva um programa para escrever todos os nmeros inteiros palndromos de 4 algarismos.
58

LISTA DE EXERCCIOS NMERO 7

Escreva um algoritmo que:
01) Determine e escreva todos os nmeros inteiros positivos menores que 1000, divisveis por 7 e por
17.
02) Leia uma seqncia indeterminada de nmeros reais positivos.
Determine e escreva o menor e o maior valor digitado.
Use um flag adequado.
03) Leia a altura de um nmero indeterminado de pessoas, calcule e escreva a mdia aritmtica
das alturas.

04) Leia dois nmeros inteiros A e B. Calcule e escreva a soma dos nmeros mpares entreA e B.

05) Leia dois nmeros inteiros e positivos, calcule e escreva o MDC desses nmeros, usando o
mtodo das subtraes sucessivas.
06) Calcule e escreva o fatorial de um nmero inteiro e positivo.
07) Calcule e escreva o fatorial dos nmeros inteiros de 0 a 12.
08) Leia do teclado um nmero inteiro e positivo N (validar). Calcule e escreva a soma dos N
primeiros termos da srie:


...
8 7
6
7 6
5
6 5
4
5 4
3
4 3
2
3 2
1
+
+

+
+
+

+
+
+

+
= S

09) Leia do teclado um nmero inteiro e positivo N (validar) e um nmero real x, positivo (verificar se
positivo). Calcule e escreva a soma dos N primeiros termos da srie:


...
11 9 7 5 3 1
6 5 4 3 2
+ + + =
x x x x x x
S

10) Leia um nmero inteiro e positivo (validar), verifique se primo ou no.



59

LISTA DE EXERCCIOS NMERO 8

1) Faa um algoritmo para imprimir a raiz quadrada de todos os inteiros positivos menores que 21.

2) Faa um algoritmo para imprimir todos os divisores de um nmero inteiro lido do teclado.

3) O nmero 3025 possui a seguinte caracterstica:

=
= +
3025 55 * 55
55 25 30

Faa um algoritmo para escrever todos os nmeros de 4 algarismos que apresentam tal caracterstica.

4) Capicua (origem catal: "cap i cua", cabea e cauda) ou nmero palndromo um nmero (ou
conjunto de nmeros) cujo reverso ele prprio (Wikipdia-12/12/2011)
Exemplos: 9339, 55, 884488, 1234567890987654321

Faa um algoritmo para escrever todos os nmeros capicuas de cinco algarismos.

5) Um determinado material radioativo perde metade de sua massa a cada 50 segundos.
Escreva um algoritmo para:
Ler a massa inicial desse material, em gramas.
Determinar o tempo para que essa massa se torne menor que 0,5 gramas.
Escrever na tela:
A massa inicial
A massa final
Tempo calculado, em horas, minutos e segundos.

6) Escreva um algoritmo para imprimir os 20 primeiros termos da sequncia de Fibonacci.
Sequncia de Fibonacci: 1, 1, 2, 3, 5, 8, 13, 21, 34, ...

7) Escreva um algoritmo para ler o sexo e a idade de um nmero indeterminado de pessoas,
calcular e escrever:
A mdia de idade dos homens.
O nmero de mulheres com mais de 30 anos.
O nmero de homens com idade acima de 17 anos e abaixo de 60 anos,

A condio de encerramento do programa deve ser idade menor ou igual a 0.

8) Um pas A tem 50 milhes de habitantes e cresce a uma taxa de 2% ao ano e outro pas B tem
100 milhes de habitantes e cresce a uma taxa de 1,2% ao ano.
Faa um algoritmo que calcule o tempo para que o pas A ultrapasse o pas B em nmero de
habitantes.

9) Na terceira lista de exerccios foi dada uma frmula para calcular o valor da prestao de um
emprstimo bancrio dados o valor a ser financiado, a taxa de juros e o tempo de
financiamento.
Escreva um algoritmo que leia do teclado uma taxa de juros e um valor a ser financiado, calcule e
escreva o valor de prestaes para financiamentos em 6, 12, 18, 24, 30, 36, 42 e 48 parcelas.




60

10) Uma editora presume que vender 180 livros a R$ 100,00 a unidade e que a cada R$ 5,00 que
diminuir no preo do livro aumenta as vendas em 30 unidades.
Escreva um algoritmo que imprima uma tabela com o valor do lucro esperado, em funo do
nmero e do preo dos livros vendidos, supondo uma despesa fixa de R$ 40,00 no preo de cada
livro.
Calcule e escreva o lucro mximo esperado, o nmero e o preo do livro.






Cpia autorizada para fins no comerciais.
So bem-vindas crticas, sugestes e correes.
aluisioeustaquio@gmail.com
16/02/2012