Vous êtes sur la page 1sur 185

Algoritmos

Prof. Ricardo Luiz de Freitas


ricardo@fumec.br
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
2
Aulas
1 - Conceitos de Algoritmo
2 - Compiladores, Dados, Variveis, Comandos leia e escreva
3 - Comando de atribuio, Expresses Aritmticas
4 - Comando Condicional SE
5 - Comando Condicional CASO
6 - Comando de Repetio PARA
7 - Sries Matemticas
8 - Comando de Repetio REPITA
9 - Comando de Repetio ENQUANTO
10 Vetor
11 Matriz
12 Mapeamento ALGORITMO x PASCAL
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
3
Aula 1
Conceito de ALGORITMOS
Estruturas bsicas de um Algoritmo
Seqencial
Condicional
Repetio
Exerccio

Prof. Ricardo Luiz de Freitas ricardo@fumec.br
4
Conceitos de Algoritmos
Algoritmo a descrio de uma seqncia
de passos que deve ser seguida para a
realizao de uma tarefa;
Algoritmo uma seqncia finita de
instrues ou operaes cuja execuo, em
tempo finito, resolve um problema
computacional;
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
5
Exemplos de Algoritmos
Como fazer um sanduche?

Passo 1 Pegar um po
Passo 2 Cortar o po ao meio
Passo 3 Pegar a maionese
Passo 4 Passar a maionese no po
Passo 5 Pegar o alface e o tomate
Passo 6 Cortar o tomate
Passo 7 Colocar alface e o tomate no po
Passo 8 Pegar o hambrguer
Passo 9 Fritar o hambrguer
Passo 10 Colocar o hambrguer no po
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
6
Um rob conseguiria executar o algoritmo e fazer um sanduche?
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
7
Como fazer um sanduche (verso 2)
Passo 1 Pegar um po
Passo 2 Cortar o po ao meio em sentido longitudinal
Passo 3.1 Abrir a geladeira
Passo 3.2 Pegar o vidro de maionese na geladeira
Passo 3.3 Fechar a porta da geladeira
Passo 3.4 Girar a tampa do vidro de maionese em sentido horrio
Passo 3.5 Tirar a tampa
Passo 3.6 Pegar uma esptula no armrio
Passo 3.7 Colocar a esptula dentro do vidro de maionese
Passo 3.8 Pegar um pouco de maionese
Passo 3.9 Tirar a esptula do vidro
Passo 4 Passar a maionese no po
...
Refinamento do
passo 3 Pegar a
maionese
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
8
Estruturas bsicas de um Algoritmo
Estrutura Seqencial

Estrutura Condicional (ou seletiva)

Estrutura de Repetio
Repeties definidas
Repeties indefinidas
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
9
Estrutura Seqencial
As aes so executadas uma aps a outra,
na mesma ordem em que aparecem:

Trazer a cesta com batatas
Pegar uma panela do armrio
Descascar as batatas
Jogar as cascas no lixo
Lavar a cesta e a panela
Guardar a cesta e a panela no armrio
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
10
Estrutura Condicional - SE
A execuo ou no de uma ao depende se o
resultado de uma condio verdadeiro ou falso

Trazer a cesta com batatas
Pegar uma panela do armrio
Se sua roupa clara ento
Colocar o avental
Descascar as batatas
Jogar as cascas no lixo
Lavar a cesta e a panela
Guardar a cesta e a panela no armrio
Condio
Ao
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
11
Estrutura Condicional - SE
O se..ento.. uma estrutura condicional
ou seletiva, onde a ao (ou mais de uma)
executada somente se o resultado da
condio for verdadeiro:

Se sua roupa clara ento
Colocar o avental
Lavar as mos
Pentear o cabelo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
12
Estrutura Condicional - SE
Podemos utilizar tambm se..ento..seno...
para tornar a seleo de aes mais
completa:

Se sua roupa clara ento
Colocar o avental
Lavar as mos
Seno
Colocar a toca
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
13
Estrutura de Repetio
Trazer a cesta com batatas
Pegar uma panela do armrio
Se sua roupa clara ento
Colocar o avental
Lavar as mos
Pegar uma batata na cesta
Lavar a batata
Descascar a batata
...
...
Jogar as cascas no lixo
Lavar a cesta e a panela
Guardar a cesta e a panela no armrio

50 vezes
Refinamento do
passo
Descascar as
batatas
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
14
Estrutura de Repetio - DEFINIDA
Trazer a cesta com batatas
Pegar uma panela do armrio
Se sua roupa clara ento
Colocar o avental
Lavar as mos
Repetir 50 vezes
Pegar uma batata na cesta
Lavar a batata
Descascar a batata
Jogar as cascas no lixo
Lavar a cesta e a panela
Guardar a cesta e a panela no armrio

E se no soubermos quantas batatas tem no cesto?
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
15
Estrutura de Repetio - INDEFINIDA
Trazer a cesta com batatas
Pegar uma panela no armrio
Se sua roupa clara ento
Colocar o avental
Lavar as mos
Enquanto ainda tivermos batatas no cesto
Pegar uma batata na cesta
Lavar a batata
Descascar a batata
Jogar as cascas no lixo
Lavar a cesta e a panela
Guardar a cesta e a panela no armrio
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
16
A linguagem um elemento chave na
construo de Algoritmos
Schlieben sie Ihre augen.
Fermez vos yeux.
Cierre sus ojos.
Close your eyes.
Feche seus olhos.
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
17
Concluso
Para a construo e execuo de algoritmos
necessrio que tanto a pessoa que dar as
ordens quanto a pessoa (ou mquina) que
executar o algoritmo entendam a mesma
linguagem e, dessa forma, consigam
comunicar-se.
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
18
Exerccio (para entregar)
Suponha que voc no possa vir a escola em
um dia de entrega do trabalho final de curso.
Faa um ALGORITMO que sirva para
programar um rob que ser acionado na
calada em frente a entrada da FUMEC. O
rob dever ir at o laboratrio onde a aula
est acontecendo, imprimir o trabalho, que est
armazenado na rede, e entregar o mesmo ao
professor, quando se auto desligar.

Instrues no prximo slide...

Prof. Ricardo Luiz de Freitas ricardo@fumec.br
19
Exerccio (para entregar)
Fazer no Word;
Valores mnimos para o algoritmo: 50 aes (1 verbo por
ao), 2 estruturas condicionais e 2 estruturas de repetio;
Valor: 1 ponto extra (se estiver dentro das regras);
Forma de entrega: rea do Aluno ou SINEF na pgina da
escola na internet (Apoio Didtico / Entrega de Trabalhos);
Data mxima de entrega: FINAL DO DIA;
Poder ser feito em dupla (somente um elemento da dupla
entregar o exerccio);
Colocar seu nome, e de seu colega (se for o caso), no incio
do algoritmo;
Exerccios sem nome, iguais e mal feitos sero zerados.
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
20
Aula 2
Compiladores
Compilador VisuAlg
Dados
Identificadores
Variveis
Comando de entrada de dados LEIA
Comando de sada de dados ESCREVA
Exerccios
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
21
Compiladores
So programas utilizados para se criar outros programas;
Etapas:
Edio: digitao e alterao do programa;
Compilao: verificao de erros de sintaxe do programa;
Execuo: rodar o programa, entrando com os dados e obtendo
os resultados.
Erros que podem aparecer:
Sintaxe: identificado pelo compilador na etapa de compilao;
Lgica: identificado pelo usurio na etapa de execuo.
Exemplos:
Visualg = Portugol
PascalZIM = Pascal
Delphi = Pascal
Dreamworks = HTML
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
22
Compilador VisuAlg
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
23
Compilador VisuAlg
Abrir (Ctrl-A): Abre um arquivo anteriormente gravado, substituindo o texto presente no editor. Se
este tiver sido modificado, o VisuAlg pedir sua confirmao para salv-lo antes que seja
sobreposto.
Novo (Ctrl-N): Cria um novo "esqueleto" de algoritmo, substituindo o texto presente no editor. Se
este tiver sido modificado, o VisuAlg pedir sua confirmao 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 localizao.
Imprimir: Imprime imediatamente na impressora padro o texto presente no editor.
Copiar (Ctrl-C): Copia o texto selecionado para a rea de transferncia.
Colar (Ctrl-V): Copia texto da rea de transferncia para o local em que est o cursor.
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
24
Compilador VisuAlg
Executar (F9): Inicia (ou continua) a execuo automtica do algoritmo.
Executar com timer (Shift-F9):: Insere um atraso (que pode ser especificado no intervalo ao lado)
antes da execuo de cada linha. Tambm reala em fundo azul o comando que est sendo
executado, da mesma forma que na execuo passo a passo.
Passo (F8): Inicia (ou continua) a execuo linha por linha do algoritmo, dando ao usurio a
oportunidade de acompanhar o fluxo de execuo e os valores das variveis.
Parar (Ctrl-F2): Termina imediatamente a execuo do algoritmo. Evidentemente, este boto fica
desabilitado quando o algoritmo no est sendo executado.
Gerar valores aleatrios: Ativa a gerao de valores aleatrios que substituem a digitao de
dados.
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
25
Estrutura bsica de um Algoritmo no
VisuAlg
algoritmo "semnome"
// Funo :
// Autor :
// Data : 1/8/2011
// Seo de declaraes
var

inicio
// Seo de Comandos

fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
26
Exemplo
algoritmo "CalcSomaMedia"
var n1, n2, n3, soma : inteiro
media : real
Inicio
escreva("Informe um nmero = ")
leia(n1)
escreva("Informe outro nmero = ")
leia(n2)
escreva("Informe mais um nmero = ")
leia(n3)
soma <- n1 + n2 + n3
media <- soma / 3
escreval("Mdia = ",media)
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
27
Dados
O dado a prpria essncia de um algoritmo
ou programa de computador.

Ele pode ser informado pelo usurio, gerado
pelo programa, processado pelo computador,
e impresso para o usurio como uma
informao.
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
28
Tipos de dados
Tipos de dados so maneiras pelas quais os
dados so tratados

Constantes: so aqueles dados cujos valores
no se alteram durante a execuo do algoritmo
Variveis: so aqueles dados cujos valores
podem ser alterados durante a execuo do
algoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
29
Tipos de dados
Classificao
Simples
Numricos
Inteiro
Real
No Numricos
Lgico
Caractere
Estruturados
Arquivos
Vetores
Matrizes
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
30
Tipos de dados
Numricos
INTEIRO
So os valores numricos inteiros (sem casas decimais)
Podem ser valores positivos ou negativos
Variando entre -999999999 e 999999999
Ex: 0, -2, 47, 58, 123220, -34235
REAL
So os valores numricos que possuem casas decimais
Podem ser valores positivos ou negativos
Ex: 0.12, -45.17, 3.14159, 0.000001, 2
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
31
Tipos de dados
No Numricos
LGICO
Representadas por apenas 2 valores:
Verdadeiro
Falso
CARACTERE
Representadas por uma seqncia de caracteres
(letras, nmeros ou caracteres especiais)
Textos em geral
Geralmente so delimitadas por aspas ( )
Ex: Rua, Computao, 20/10/1998, 1234
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
32
Identificadores
Todas as variveis ou constantes so
identificadas por um nome que chamamos de
IDENTIFICADOR

Exemplos:
Salario
Idade
J
Xpto
NomeDaVariavel
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
33
Identificadores
Regras para formao de identificadores
S podem conter LETRAS e NMEROS
Devem comear OBRIGATORIAMENTE com uma LETRA
No podem conter ESPAOS ou caracteres especiais
(@, ?, !, -, caracteres acentuados, etc.)
Composto por no mximo 30 caracteres

Nomes vlidos: i, j, FRUTA, salario,
a12, i23ER21, umnomequalquer
Nomes invlidos: 1, 25, nome-fruta,
5JOSE, A$1, um nome qualquer, mdia
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
34
Identificadores
O identificador deve passar ao programador (ou quem est
lendo o programa/algoritmo) o tipo de dados que a varivel
ou constante vai armazenar, ou seja, no devemos criar
nomes que no tem nada a ver com o contedo da varivel
ou constante:

Nomes inapropriados: i, j, a12, i23ER21,
xyz, xibobo, ricardo

Nomes apropriados: idade, salario,
nomefruta, contador,
enderecocorrespondencia

Prof. Ricardo Luiz de Freitas ricardo@fumec.br
35
Algoritmo Exemplo
(identificadores apropriados e inapropriados)
algoritmo "X"
var a, b, c : inteiro
inicio
leia(a)
b <- 1
para c de 2 ate a faca
b <- b * c
fimpara
escreval(b)
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
36
Algoritmo Exemplo
(identificadores apropriados e inapropriados)
algoritmo "CalculaFatorial"
var Numero, Fatorial, Contador : inteiro
inicio
escreva("Informe um nmero: ")
leia(Numero)
Fatorial <- 1
para Contador de 2 ate Numero faca
Fatorial <- Fatorial * Contador
fimpara
escreval("Fatorial = ",Fatorial)
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
37
Variveis
(abreviao de dados variveis)
O que uma Varivel?

Varivel uma posio na memria do computador
reservada pelo algoritmo durante a sua execuo para
armazenar dados a serem utilizados pelo prprio algoritmo
Estes dados podem ter sido gerados pelo prprio algoritmo
(comandos de repetio, comando de atribuio, etc.) ou
inseridos pelo usurio quando da execuo de um
comando de entrada/leitura de dados
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
38
Clusula VAR (declarao de variveis)
var (declarao das variveis do algoritmo)

As variveis (ou dados) podem ser de vrios
tipos:
inteiro: define variveis numricas do tipo inteiro, ou seja,
sem casas decimais. (Ex: 12, 1000, 5, 345)
real: define variveis numricas do tipo real, ou seja, com
casas decimais. (Ex: 1.45, 0.05, 500.4, 3.4)
caractere: define variveis do tipo caractere, ou seja, cadeia
de caracteres. (Ex: ABC, Ricardo, Agosto/2006).
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
39
Clusula VAR (declarao de variveis)
Exemplo

algoritmo "PrimeiroAlgoritmo"
var IDADE, NUMERO : inteiro
ALTURA, PESO, SALARIO : real
NOMEPAI, RUA, BAIRRO, DTNASC : caractere
inicio
...
fimalgoritmo

Prof. Ricardo Luiz de Freitas ricardo@fumec.br
40
Etapas de um algoritmo
1 etapa : entrada de dados (informados pelo usurio)

2 etapa : processamento (clculos)

3 etapa : sada de dados (exibio dos resultados)
Processamento
(clculos)
Entrada
de dados
Sada
de dados
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
41
Comando LEIA
(comando de I/O entrada de dados)
Comando utilizado para receber os valores
digitados pelos usurio, atribuindo-os s variveis
cujos nomes esto em <lista-de-variveis> (
respeitada a ordem especificada nesta lista).

leia(<lista-de-variveis>)

Exemplos
leia(nome)
leia(idade, peso, altura)
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
42
Comando LEIA
(comando de I/O entrada de dados)
O tipo de dado a ser digitado pelo usurio depende
do tipo da varivel utilizada no comando, se a
varivel for do tipo INTEIRO no podemos digitar
um texto ou um valor numrico real, pois abortar a
execuo do algoritmo.

O usurio digita o dado via teclado e aperta
ENTER. O dado gravado na VARIAVEL e o cursor
da tela pula para a primeira coluna da prxima linha.
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
43
Comando ESCREVA
(comando de I/O sada de dados)
Comando utilizado para se escrever (imprimir)
informaes na tela ou em qualquer dispositivo de
sada de dados (impressora, fax, modem, etc) pelo
algoritmo.

escreva(...)
A informao entre parnteses impressa e o cursor
permanece na mesma linha.
escreval(...)
Idem, porm o cursor pula para a primeira coluna da
prxima linha.
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
44
Comando ESCREVA
(comando de I/O sada de dados)
Temos as seguintes variaes para o comando:

escreva("Mensagem a ser impressa")
O texto entre aspas impresso.
escreva(variavel)
O contedo na memria de VARIAVEL impresso.
escreva("Mensagem 1 ",var1," Mensagem 2 ",var2)
Os textos so impressos junto com os contedos das variveis var1 e
var2, na mesma linha e um depois do outro totalmente colados uns
aos outros.

ATENO: importante o uso de espaos dentro das aspas a
fim de que os dados (textos e contedos de variveis) sejam
impressos separados uns dos outros
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
45
Comando ESCREVA
(comando de I/O sada de dados)
Exemplos de uso do escreva/escreval:

var NOME : caractere
IDADE : inteiro
SALARIO, INSS : real

escreva("Nome: ",nome)
impresso: Nome: Joselito Sem Noo
escreval("Sua idade de ",idade)
impresso: Sua idade de 39
escreval("Salrio de ",salario," INSS de ",inss)
impresso: Salrio de 850.65 INSS de 87.40

escreval
salto de uma linha em branco

Prof. Ricardo Luiz de Freitas ricardo@fumec.br
46
Exemplo 1
algoritmo "CalcSomaMedia"
var n1, n2, soma : inteiro
media : real
inicio
leia(n1)
leia(n2)
soma <- n1 + n2
media <- soma / 2
escreval(soma)
escreval(media)
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
47
Exemplo 1

algoritmo "CalcSomaMedia"
var n1, n2, soma : inteiro
media : real
Inicio
escreva("Digite um nmero : ")
leia(n1)
escreva("Digite outro nmero : ")
leia(n2)
soma <- n1 + n2
media <- soma / 2
escreval("Soma = ",soma)
escreval("Mdia = ",media)
fimalgoritmo
Entrada
de Dados
Clculos
Sada de
Dados
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
48
Exemplo 2
Faa um algoritmo que solicite ao usurio o seu nome
completo e o nmero de filhos que ele tem, e depois
imprima estas informaes.
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
49
Exemplo 2
(algoritmo resolvido)
algoritmo "TerceiroAlgoritmo"
var nome : caractere
numfilhos : inteiro
inicio
escreva("Qual o seu nome? ")
leia(nome)
escreva("Quantos filhos voc tem? ")
leia(numfilhos)
escreval("Nome: ",nome)
escreval("Nmero de filhos: ",numfilhos)
fimalgoritmo
Entrada
de Dados
Sada de
Dados
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
50
Exemplo 3
Faa um algoritmo que solicite ao usurio o seu nome, seu
endereo completo (logradouro, nmero, bairro, cidade, estado e
CEP), seu peso (em Kg) e o nmero do sapato. Depois imprima uma
etiqueta com estas informaes de acordo com o layout abaixo:

x---------------------nome------------------------x
x---------logradouro----------x, x---numero---x
Bairro x-----------------bairro-------------------x
x-----------cidade---------------x x--estadox
CEP x---cep---x

Peso (kg): x---peso---x
Nmero do sapato: x--numero do sapato--x
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
51
Exemplo 3
Exemplo de sada de dados:

RICARDO LUIZ DE FREITAS
RUA COBRE, 200
Bairro CRUZEIRO
BELO HORIZONTE MG
CEP 30150-101

Peso (kg): 86.5
Nmero do sapato: 40
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
52
Exemplo 3
(algoritmo resolvido)
algoritmo "Etiqueta"
var nome, logradouro, bairro, cidade, uf, cep, numero: caractere
sapato : inteiro
peso : real
inicio
escreva("Informe o seu nome: ")
leia(nome)
escreva("Informe o logradouro: ")
leia(logradouro)
escreva("Informe o nmero: ")
leia(numero)
escreva("Informe o bairro: ")
leia(bairro)

(continua...)
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
53
Exemplo 3
(algoritmo resolvido)
(continuao...)

escreva("Informe a cidade: ")
leia(cidade)
escreva("Informe a UF: ")
leia(uf)
escreva("Informe o CEP: ")
leia(cep)
escreva("Informe o nmero do seu sapato: ")
leia(sapato)
escreva("Informe o seu peso em Kg: ")
leia(peso)

(continua...)
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
54
Exemplo 3
(algoritmo resolvido)
(continuao...)

limpatela
escreval(nome)
escreval(logradouro,", ",numero)
escreval("Bairro ",bairro)
escreval(cidade," - ",uf)
escreval("CEP ",cep)
escreval
escreval("Peso (Kg): ",peso)
escreval("Nmero do sapato: ",sapato)
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
55
Exerccio 1
Faa um algoritmo que solicite ao usurio o seu nome, seus documentos
(CPF, identidade, ttulo de eleitor, carteira de motorista), seu salrio e o nome
da empresa em que trabalha, e depois imprima a sua FICHA FUNCIONAL
de acordo com o layout abaixo:

FICHA FUNCIONAL DE: x---------------------nome------------------------x

Documentos:
CPF ............................................. x-----cpf-----x
C.I. ............................................... x---identidade---x
Titulo de eleitor ........................... x---ttulo de eleitor---x
Carteira de motorista ................... x---carteira de motorista ---x

Empresa: x-----nome da empresa------x
Salrio: R$ x-----salrio-----x

Prof. Ricardo Luiz de Freitas ricardo@fumec.br
56
Exerccio 1
Exemplo de sada de dados:

FICHA FUNCIONAL DE: RICARDO LUIZ DE FREITAS

Documentos:
CPF ............................................. 415467889-03
C.I. ............................................... M5677823
Titulo de eleitor ........................... 458690688444
Carteira de motorista ................... 22349377

Empresa: FEA-FUMEC
Salario: R$ 10500.45

Prof. Ricardo Luiz de Freitas ricardo@fumec.br
57
Exerccio 1
(algoritmo resolvido)
algoritmo "FichaFuncional"
var nome, empresa, cpf, ci, titulo, motorista : caractere
salario : real
inicio
escreva("Entre com seu nome: ")
leia(nome)
escreva("Entre com o nome da empresa que trabalha: ")
leia(empresa)
escreva("Entre com o seu salrio: ")
leia(salario)
escreva("Entre com o nmero do seu CPF: ")
leia(cpf)
escreva(" Entre com o nmero da sua identidade: ")
leia(ci)
escreva("Entre com o nmero do seu ttulo de eleitor: ")
leia(titulo)

(continua...)
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
58
Exerccio 1
(algoritmo resolvido)
(continuao...)

escreva("Entre com o nmero da sua carteira de motorista: ")
leia(motorista)
limpatela
escreval("FICHA FUNCIONAL DE: ",nome)
escreval
escreval("Documentos: ")
escreval("CPF .............................. ",cpf)
escreval("C.I. .............................. ",ci)
escreval("Ttulo de eleitor ............ ",titulo)
escreval("Carteira de motorista ..... ",motorista)
escreval
escreval("Empresa: ",empresa)
escreval("Salrio: R$ ",salario)
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
59
Exerccio 2
A Secretaria do Meio Ambiente mediu a quantidade de poluentes
atmosfricos emitidos por uma empresa. Dependendo do valor obtido,
a empresa foi multada conforme a tabela abaixo. Faa um algoritmo
que monte esta tabela, solicitando as informaes variveis (xxx) para
o usurio:
Quantidade de Poluente Emitido x Valor da Multa
At xxx
(1)
multa de R$ xxx
(3)

Entre xxx
(1)
e xxx
(2)
multa de R$ xxx
(4)

Acima de xxx
(2)
multa de R$ xxx
(5)
por poluente emitido
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
60
Exerccio 2
Exemplo de sada de dados:
Quantidade de Poluente Emitido x Valor da Multa
At 1500 multa de R$ 1000.55
Entre 1500 e 3000 multa de R$ 3550.34
Acima de 3000 multa de R$ 1200.21 por poluente emitido
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
61
Aula 3
Comando de ATRIBUIO
Expresses Aritmticas
Exerccios
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
62
Comando de ATRIBUIO
O comando de atribuio utilizado para se
atribuir valores ou resultado de operaes
(expresses aritmticas, etc.) a variveis

Representado pelos smbolos: <-
NUNCA coloque espaos no meio do comando
de atribuio (< -)
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
63
Comando de ATRIBUIO
ATENO: quando um valor atribudo a uma varivel o valor anterior
armazenado na mesma perdido.
Podemos atribuir um valor fixo (1), o contedo de uma outra varivel
(2) ou o resultado de uma expresso aritmtica ou booleana (3).

var SOMA, NUMERO1, NUMERO2 : real
NOME : caractere

SOMA <- 10.5
(1)
NUMERO1 <- 3.74
NOME <- "Ricardo"
NUMERO2 <- NUMERO1
(2)
SOMA <- (NUMERO1 + NUMERO2) * 2
(3)
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
64
Expresso Aritmtica
a traduo de uma equao matemtica (frmula) para a
linguagem algortmica.
Podemos utilizar os seguintes operadores aritmticos:
Operador Operao Exemplo
+ Soma
SOMA <- NUMERO + 4
- Subtrao
RESULTADO <- 100 SOMA
* Multiplicao
INSS <- SALARIO
*
0.08
/ Diviso
MEDIA <- SOMA / 7
^ Potenciao
QUADRADO <- VALOR ^ 2
\ Resultado de uma
diviso inteira
METADE <- NUMERO \ 2
% Resto de uma
diviso inteira
SOBRA <- NUMERO % 3

Prof. Ricardo Luiz de Freitas ricardo@fumec.br
65
Expresso Aritmtica
Operador ^ (potenciao):
5 4
3
2
9
9
9
9
9 ^ 2
9 ^ (4/5)
9 ^ (1/2)
9 ^ (1/3)
9 ^ 0.5
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
66
Expresso Aritmtica
Operadores \ e %:
9 4
1 2 \

%
9 \ 4 = 2
9 % 4 = 1
9 + 4 = 13
9 4 = 5
9 * 4 = 36
9 / 4 = 2.25
9 ^ 4 = 6561
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
67
Expresso Aritmtica
Operao percentual:
10 % VALOR
VALOR * 10 / 100
10 % de VALOR
VALOR * 0.1
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
68
Expresso Aritmtica
Ordem de execuo dos operadores aritmticos:
Primeiro: operador ^ (potenciao)
Segundo: operadores * (multiplicao), / (diviso), \ (resultado de
uma diviso inteira) e % (resto de uma diviso inteira)
Terceiro: operadores + (adio) e (subtrao)
ATENO: Para mudarmos esta ordem de execuo dos
operadores utilizamos os parnteses, em quantos nveis
precisarmos.
Exemplos:
VALOR <- 3 + 4 * 5 \ 6 * 7 - 8 = 16
VALOR <- (3 + 4) * 5 \ 6 * ( 7 - 8 ) = - 5
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
69
Expresso Aritmtica
VALOR <- 3 + 4 * 5 \ 6 * 7 - 8
VALOR <- 3 + 20 \ 6 * 7 - 8
VALOR <- 3 + 3 * 7 - 8
VALOR <- 3 + 21 - 8
VALOR <- 24 - 8
VALOR <- 16

Prof. Ricardo Luiz de Freitas ricardo@fumec.br
70
Expresso Aritmtica
VALOR <- (3 + 4) * 5 \ 6 * (7 - 8)
VALOR <- 7 * 5 \ 6 * (7 - 8)
VALOR <- 7 * 5 \ 6 * -1
VALOR <- 35 \ 6 * -1
VALOR <- 5 * -1
VALOR <- -5

Prof. Ricardo Luiz de Freitas ricardo@fumec.br
71
Expresso Aritmtica
Exemplos:
2
R A t =
2 7 4 ) (
2
+ = x x x f
5
3
3 2 1

+ +
=
N N N
VALOR
VALOR <- (N1+N2+N3) / 3 5
F <- 4
*
X^2 + 7
*
X 2
A <- 3.1416 * R^2
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
72
Exemplo 1
Faa um algoritmo que leia 5 nmeros inteiros
diferentes informados pelo usurio e calcule e
imprima a soma e a mdia aritmtica destes
nmeros.

Frmulas:
SOMA = N1 + N2 + N3 + N4 + N5
MEDIA = SOMA / 5
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
73
Exemplo 1
(algoritmo resolvido)
algoritmo "CalculaSomaMedia"
var n1, n2, n3, n4, n5, soma : inteiro
media : real
incio
escreva("Digite o primeiro nmero: ")
leia(n1)
escreva("Digite o segundo nmero: ")
leia(n2)
escreva("Digite o terceiro nmero: ")
leia(n3)
escreva("Digite o quarto nmero: ")
leia(n4)
escreva("Digite o quinto nmero: ")
leia(n5)
soma <- n1 + n2 + n3 + n4 + n5
media <- soma / 5
escreval("Soma = ",soma)
escreval("Mdia = ",media)
fimalgoritmo
Entrada
de Dados
Clculos
Sada de
Dados
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
74
Exemplo 2
Faa um algoritmo que calcule e imprima o valor da
hipotenusa de um tringulo retngulo. Os valores dos
catetos sero informados pelo usurio.

Frmula:
2
2
2
1
Cateto Cateto Hipotenusa + =
Dados de
Entrada
Dado de
Sada
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
75
Exemplo 2
(algoritmo resolvido)
algoritmo "CalculaHipotenusa"
var hipotenusa, cateto1, cateto2 : real
inicio
escreva("Informe o valor do cateto 1: ")
leia(cateto1)
escreva("Informe o valor do cateto 2: ")
leia(cateto2)
hipotenusa <- (cateto1^2 + cateto2^2) ^ (1/2)
escreval("Hipotenusa = ",hipotenusa)
fimalgoritmo
Entrada
de Dados
Clculos
Sada de
Dados
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
76
Exemplo 3
Faa um algoritmo que solicite ao usurio o valor do
seu salrio bruto e calcule e imprima quanto ele ir
pagar de INSS.

Frmula:
INSS = 8% do salrio

Dado de
Entrada
Dados de
Sada
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
77
Exemplo 3
(algoritmo resolvido)
algoritmo "CalculaINSS"
var salario, inss : real
inicio
escreva("Informe o valor do seu salrio: ")
leia(salario)
inss <- salario * 0.08
escreval("O valor do INSS = ",inss)
fimalgoritmo


#115. Exemplo 1 (algoritmo resolvido Soluo 1)


Entrada
de Dados
Clculos
Sada de
Dados
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
78
Exerccio 1
Fazer um algoritmo que calcule e imprima o
valor da funo abaixo, sendo o valor de x
informado pelo usurio.
Para testar: x = 15 f(x) = 3445
10 4 ) (
3
+ + = x x x f
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
79
Exerccio 1
(algoritmo resolvido)
algoritmo "Funcao"
var fx, x : real
inicio
escreva("Informe o valor de X: ")
leia(x)
fx <- x^3 + 4 * x + 10
escreval("F(x) = ",fx)
fimalgoritmo
Entrada
de Dados
Clculos
Sada de
Dados
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
80
Exerccio 2
A rea da superfcie esfrica e o volume de uma esfera
so calculados a partir das frmulas abaixo. Faa um
algoritmo que leia o raio R de uma esfera e calcule e
imprima a sua rea e volume. Utilizar o valor PI = 3.1416.
Para testar: Raio = 10 rea = 1256.64 e Volume = 4188.8
3
2
3
4
4
R Volume
R rea
t
t
=
=
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
81
Exerccio 2
(algoritmo resolvido)
algoritmo "EsferaAreaVolume"
var Raio, Area, Volume : real
inicio
escreva("Informe o valor do Raio: ")
leia(Raio)
Area <- 4 * 3.1416 * Raio^2
escreval("rea da esfera = ",Area)
Volume <- 4 / 3 * 3.1416 * Raio^3
escreval("Volume da esfera = ",Volume)
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
82
Exerccio 3
Faa um algoritmo que calcule e imprima o valor a
ser retido de Imposto de Renda de uma pessoa de
acordo com as frmulas abaixo. O salrio e o nmero
de dependentes sero informados pelo usurio.

Frmulas:
Lquido = Salrio (N de Dependentes x R$60,00)
IR = 15% do Lquido
Para testar: Salrio = 1000 e Dependentes = 3 IR = 123
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
83
Exerccio 3
(algoritmo resolvido)
algoritmo "CalculaImpostoRenda"
var salario, liquido, ir : real
dependentes : inteiro
inicio
escreva("Informe o seu salrio: ")
leia(salario)
escreva("Informe o nmero de dependentes: ")
leia(dependentes)
liquido <- salario - dependentes * 60
ir <- liquido * 0.15
escreval("O valor do IR R$",ir)
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
84
Exerccio 4
Faa um algoritmo que leia as coordenadas X e Y de 2
pontos do plano cartesiano e calcule e imprima a
distncia entre eles.

Ponto 1 (X
1
,Y
1
) e Ponto 2 (X
2
,Y
2
)

Frmula:
( ) ( )
2
2 1
2
2 1
y y x x Distncia + =
Para testar: Ponto 1 (X
1
=3, Y
1
=4) e Ponto 2 (X
2
=6, Y
2
=7) Distncia = 4.24..
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
85
Exerccio 4
(algoritmo resolvido)
algoritmo "CalculaDistancia"
var X1, Y1, X2, Y2, DISTANCIA : real
inicio
escreva("Informe coordenada X do ponto 1: ")
leia(X1)
escreva("Informe coordenada Y do ponto 1: ")
leia(Y1)
escreva("Informe coordenada X do ponto 2: ")
leia(X2)
escreva("Informe coordenada Y do ponto 2: ")
leia(Y2)
DISTANCIA <- ((X1 - X2)^2 + (Y1 - Y2)^2) ^ (1/2)
escreval("Distncia = ",DISTANCIA)
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
86
Exerccio 5
Fazer um algoritmo que calcule a converso de
temperaturas. O usurio informar o valor de uma
temperatura em Celsius e o algoritmo ir calcular e
imprimir esta mesma temperatura em Kelvin e Fahrenheit.
Para testar: Celsius = 30 Kelvin = 303 e Fahrenheit = 86
9
160 5
273

=
=
t xFahrenhei
Celsius
Kelvin Celsius
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
87
Exerccio 5
(algoritmo resolvido)
algoritmo "ConversorTemperatura"
var C, K, F : real
inicio
escreva("Informe a temperatura em Celsius: ")
leia(C)
K <- C + 273
F <- (C * 9 + 160) / 5
escreval("Temperatura em Kelvin = ",K)
escreval("Temperatura em Fahrenheit = ",F)
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
88
Exerccio 6
A distncia entre um ponto P e uma reta R dado pela
funo abaixo. Faa um algoritmo que solicite ao usurio
os valores de A, B e C da reta R e as coordenadas Xo e Yo
do ponto P e calcule e imprima o valor da distncia.
Para testar: A=1, B=2, C=3, X
o
=4 e Y
o
=5 D = 7.60...
2 2
0 0
) , (
B A
C By Ax
Distncia
Y X P
C By Ax R
o o
+
+ +
=
+ + =
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
89
Exerccio 6
(algoritmo resolvido)
algoritmo "CalculaDistancia"
var X, Y, A, B, C, DISTANCIA : real
inicio
escreva("Entre com o valor de A: ")
leia(A)
escreva("Entre com o valor de B: ")
leia(B)
escreva("Entre com o valor de C: ")
leia(C)
escreva("Coordenada X do ponto: ")
leia(X)
escreva("Coordenada Y do ponto: ")
leia(Y)
DISTANCIA <- (A * X + B * Y + C) / (A^2 + B^2) ^ (1/2)
escreval("Distancia = ",DISTANCIA)
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
90
Exerccio 7
Faa um algoritmo que solicite ao usurio o
valor de x e calcule e imprima o valor da
funo f(x).
Para testar: x = 5 F(x) = 2.46...
x
x
x f
5
1
) 1
4
( ) (
2
+ + =
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
91
Exerccio 7
(algoritmo resolvido)
algoritmo "Funcao"
var fx, x : real
inicio
escreva("Informe o valor de X: ")
leia(x)
fx <- ((x / 4 + 1)^2 + 1 / 5 * x) ^ (1/2)
escreval("F(x) = ",fx)
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
92
Exerccio 8
Faa um algoritmo que solicite ao usurio
dois valores numricos inteiros e calcule e
imprima:

a) A soma dos nmeros;
b) A subtrao dos nmeros;
c) A multiplicao dos nmeros;
d) O resto da diviso inteira do primeiro pelo segundo;
e) O quadrado da soma dos dois nmeros;
f) A raiz quadrada da multiplicao dos dois nmeros;
g) A raiz cbica da soma dos dois nmeros.
Para testar: N1 = 5 e N2 = 2 a=7 b=3 c=10 d=1 e=49 f=3.16... g=1.91...
Ver prximo slide >
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
93
Exerccio 8
Observao: Quando criamos uma expresso
aritmtica com os operadores % e \ (diviso
inteira) TODAS as variveis da expresso tem ser
do tipo INTEIRO.

Exemplo:
var RESTO, NUMERO1, NUMERO2 : inteiro
....
RESTO <- NUMERO1 % NUMERO2
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
94
Exerccio 8
(algoritmo resolvido)
algoritmo "Calculos"
var raiz, quadrado, cubo : real
A, B, resto, soma, subtracao, multiplicacao : inteiro
inicio
escreva("Informe um nmero: ")
leia(A)
escreva("Informe outro nmero: ")
leia(B)
soma <- A + B
subtracao <- A - B
multiplicacao <- A * B
resto <- A % B
quadrado <- soma ^ 2
raiz <- multiplicacao ^ (1/2)
cubo <- soma ^ (1/3)
escreval("A soma dos dois nmeros : ",soma)
escreval("A subtrao do primeiro nmero pelo segundo : ",subtracao)
escreval("A multiplicao dos dois nmeros : ",multiplicacao)
escreval("O resto da diviso inteira do primeiro nmero pelo segundo : ",resto)
escreval("O quadrado da soma dos dois nmeros : ",quadrado)
escreval("A raiz quadrada da multiplicao dos dois nmeros : ",raiz)
escreval("A raiz cbica da soma dos dois nmeros : ",cubo)
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
95
Exerccio 9
Faa um algoritmo que solicite ao usurio o valor
de S (rea de um setor circular) e (ngulo) e calcule
e imprima o valor de R (raio). Utilizar o valor PI =
3.1416.
Para testar: S = 20 e = 3 R = 27.63...
360
2
R
S
ot
=
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
96
Exerccio 9
(algoritmo resolvido)
algoritmo "AreaCircular"
var Raio, Angulo, Area : real
inicio
escreva("Informe o valor da Area: ")
leia(Area)
escreva("Informe o valor do Angulo: ")
leia(Angulo)
Raio <- ((Area * 360) / (Angulo * 3.1416)) ^ (1/2)
escreval("Raio = ",Raio)
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
97
Exerccio Extra 1
Faa um algoritmo que leia as 3 notas de um
aluno e calcule imprima a mdia final deste aluno.
Considerar que a mdia ponderada e que o
peso das notas : 2, 3 e 5, respectivamente.

Para testar: Nota 1 = 10, Nota 2 = 15 e Nota 3 = 12 Mdia = 12.5
Mdia ponderada a soma das
multiplicaes dos valores dados pelos
respectivos pesos, dividido pela soma dos
pesos.
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
98
Exerccio Extra 1
(algoritmo resolvido)
algoritmo "MediaPonderada"
var media, nota1, nota2, nota2 : real
inicio
escreva("Informe a nota 1: ")
leia(nota1)
escreva("Informe a nota 2: ")
leia(nota2)
escreva("Informe a nota 3: ")
leia(nota3)
media <- (nota1*2 + nota2*3 + nota3*5) / 10
escreval("Mdia Final = ",media)
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
99
Exerccio Extra 2
Faa um algoritmo que leia o tempo de durao
de um evento expresso em segundos e mostre-o
expresso em horas, minutos e segundos.
Para testar: Segundos = 10000 Hor = 2, Min = 46, Seg = 40
Dicas:
1) 1 hora = 60 minutos = 3600 segundos;
2) Utilizar os operadores \ e % (resultado e
resto de uma diviso inteira.
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
100
Exerccio Extra 2
(algoritmo resolvido)
algoritmo "TempoDuracao"
var totseg, hor, min, seg : inteiro
inicio
escreva("Informe o total de segundos do evento: ")
leia(totseg)
hor <- totseg \ 3600
min <- totseg % 3600 \ 60
seg <- totseg % 3600 % 60
escreval("Hora = ",hor)
escreval("Minutos = ",min)
escreval("Segundos = ",seg)
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
101
Aula 4
Comando CONDICIONAL SE
Exerccios
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
102
Comando SE
(Estrutura condicional)
Comando que nos permite selecionar outros
comandos a serem executados, dependendo se
uma determinada condio for VERDADEIRA
ou FALSA.
Permite que o computador tome decises a
respeito de qual caminho a seguir quando da
execuo de um programa/algoritmo.
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
103
Comando SE
(Estrutura condicional)
Estrutura condicional - SIMPLES
se condio entao {condio pode ser verdadeira ou falsa}
comando
1
comando
2
...
comando
n
fimse
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
104
Comando SE
(Estrutura condicional)
se condio entao
comando
1
comando
2
...
comando
n
fimse
comando
comando
comando

comando
comando

Condio VERDADEIRA: os
comandos depois do entao
SERO executados
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
105
Comando SE
(Estrutura condicional)
se condio entao
comando
1
comando
2
...
comando
n
fimse
comando
comando
comando

comando
comando

Condio FALSA:
os comandos depois do
entao NO SERO
executados
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
106
Comando SE
(Estrutura condicional)
Estrutura condicional - COMPLETA
se condio entao {condio pode ser verdadeira ou falsa}
comando
1
...
comando
n
senao
comando
n+1
...
comando
m
fimse
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
107
Comando SE
(Estrutura condicional)
se condio entao
comando
1
comando
n
senao
comando
n+1
comando
m
fimse
comando
comando
comando

comando
comando

Condio VERDADEIRA:
apenas os comandos
depois do ento SERO
executados
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
108
Comando SE
(Estrutura condicional)
se condio entao
comando
1
comando
n
senao
comando
n+1
comando
m
fimse
comando
comando
comando

comando
comando

Condio FALSA:
apenas os comandos
depois do seno
SERO executados
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
109
Na condio do comando SE utilizamos expresses booleanas
(lgicas) que retornam VERDADEIRO ou FALSO
Podemos utilizar os seguintes operadores booleanos:
VOTO <> 99 Diferente <>
IDADE >= MAIORIDADE Maior ou igual >=
SOMA <= 0 Menor ou igual <=
NUMERO1 > NUMERO2 Maior >
VALOR < 100 Menor <
N1 = N2 Igual =
Exemplo Operao Operador
Comando SE
(Estrutura condicional)
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
110
Na condio do comando SE podemos utilizar uma condio
composta, ou seja, mais de uma proposio, unidas por conectores
booleanos (lgicos):





ATENO: No caso de uma condio composta, ou seja, com mais de
uma proposio, separadas pelos conectores booleanos (E e OU),
utilizamos os parntesis para delimitar cada proposio.

nao (CIDADE = "BH")
Nega a condio nao
(IDADE >= 65) ou (SALARIO < 650) Um V = V ou
(NOTA >= 60) e (FALTAS <= 18) Todos V = V e
Exemplo Operao Conector
Comando SE
(Estrutura condicional)
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
111
Comando SE
(Estrutura condicional)
Operao Resultado
V e V V
V e F F
F e V F
F e F F
Conector E
Operao Resultado
V ou V V
V ou F V
F ou V V
F ou F F
Conector OU
MAPA DA VERDADE
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
112
Exemplos:
se NUMERO > 10 entao
escreval("Nmero MAIOR que 10")
fimse
se NUMERO > 10 entao
escreval("Nmero MAIOR que 10")
senao
escreval("Nmero MENOR ou IGUAL a 10")
fimse
se (NUMERO >= 10) e (NUMERO <= 100) entao
escreval("Nmero est entre 10 e 100")
senao
escreval("Nmero est fora do limite")
fimse
Comando SE
(Estrutura condicional)
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
113
algoritmo "Exemplo"
var NUMERO : inteiro
inicio
escreva("Digite um nmero inteiro: ")
leia(NUMERO)
se NUMERO > 10 entao
escreval("Nmero MAIOR que 10")
fimse
escreval("Fim do algoritmo")
fimalgoritmo
Exemplo
(algoritmo resolvido)
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
114
algoritmo "Exemplo"
var NUMERO : inteiro
inicio
escreva("Digite um nmero inteiro: ")
leia(NUMERO)
se (NUMERO > 10) e (NUMERO < 100) entao
escreval("Nmero est entre 10 e 100")
fimse
escreval("Fim do algoritmo")
fimalgoritmo
Exemplo
(algoritmo resolvido)
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
115
algoritmo "Exemplo"
var NUMERO : inteiro
inicio
escreva("Digite um nmero inteiro: ")
leia(NUMERO)
se (NUMERO > 10) e (NUMERO < 100) entao
escreval("Nmero est entre 10 e 100")
senao
escreval("Nmero est FORA DO LIMITE")
fimse
escreval("Fim do algoritmo")
fimalgoritmo
Exemplo
(algoritmo resolvido)
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
116
Contra-exemplo:
se N1 > 10 e < 100 entao
...
se (N1 > 10) e (N1 < 100) entao
...
Comando SE
(Estrutura condicional)
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
117
Contra-exemplo:
se N1 > N2 > N3 entao
...
se (N1 > N2) e (N2 > N3) entao
...
Comando SE
(Estrutura condicional)
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
118
Faa um algoritmo para calcular e imprimir o
valor a ser descontado de INSS no salrio de um
empregado utilizando a tabela abaixo. O usurio
fornecer o salrio.





#76. Exemplo (algoritmo resolvido)
Faixa Salarial Alquota
At R$300,00 8%
Acima de R$300,00 10%
Exemplo 1

Prof. Ricardo Luiz de Freitas ricardo@fumec.br
119
algoritmo "CalculaINSS"
var SALARIO, INSS : real
inicio
escreva("Digite o valor do seu salrio: ")
leia(SALARIO)
se SALARIO <= 300 entao
INSS <- SALARIO * 0.08
fimse
se SALARIO > 300 entao
INSS <- SALARIO * 0.10
fimse
escreval("Valor do INSS = ",INSS)
fimalgoritmo
Exemplo 1
(algoritmo resolvido Soluo 1)
Alquota de 8%
Alquota de 10%
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
120
algoritmo "CalculaINSS"
var SALARIO, INSS : real
inicio
escreva("Digite o valor do seu salrio: ")
leia(SALARIO)
se SALARIO <= 300 entao
INSS <- SALARIO * 0.08
senao
INSS <- SALARIO * 0.10
fimse
escreval("Valor do INSS = ",INSS)
fimalgoritmo
Exemplo 1
(algoritmo resolvido Soluo 2)
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
121
algoritmo "CalculaINSS"
var SALARIO, INSS : real
inicio
escreva("Digite o valor do seu salrio: ")
leia(SALARIO)
se SALARIO <= 300 entao
INSS <- SALARIO * 0.08
escreval("Voc caiu na alquota de 8%")
senao
INSS <- SALARIO * 0.10
escreval("Voc caiu na alquota de 10%")
fimse
escreval("Valor do INSS = ",INSS)
fimalgoritmo
Exemplo 1
(algoritmo resolvido)
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
122
Exemplo 2
Faixa Salarial Alquota
At R$300,00 8%
Acima de R$300,00 at R$1.000,00 9%
Acima de R$1.000,00 10%
Faa um algoritmo para calcular e imprimir o
valor a ser descontado de INSS no salrio de um
empregado utilizando a tabela abaixo. O usurio
fornecer o salrio.
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
123
Exemplo 2
(algoritmo resolvido Soluo 1)
algoritmo "CalculaINSS"
var SALARIO, INSS : real
inicio
escreva("Digite o valor do seu salrio: ")
leia(SALARIO)
se SALARIO <= 300 entao
INSS <- SALARIO * 0.08
fimse
se (SALARIO > 300) e (SALARIO <= 1000) entao
INSS <- SALARIO * 0.09
fimse
se SALARIO > 1000 entao
INSS <- SALARIO * 0.10
fimse
escreval("Valor do INSS = ",INSS)
fimalgoritmo
Alquota de 8%
Alquota de 9%
Alquota de 10%
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
124
Exemplo 2
(algoritmo resolvido Soluo 2)
algoritmo "CalculaINSS"
var SALARIO, INSS : real
inicio
escreva("Digite o valor do seu salrio: ")
leia(SALARIO)
se SALARIO <= 300 entao
INSS <- SALARIO * 0.08
senao
se SALARIO <= 1000 entao
INSS <- SALARIO * 0.09
senao
INSS <- SALARIO * 0.10
fimse
fimse
escreval("Valor do INSS = ",INSS)
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
125
Exerccio 1
A Secretaria do Meio Ambiente mediu a quantidade de poluentes
atmosfricos emitidos por uma empresa. Dependendo do valor obtido,
a empresa foi multada conforme a tabela abaixo. Faa um algoritmo
que leia a quantidade de poluentes emitidos por uma empresa e
calcule e imprima a multa aplicada, se for o caso.
Poluentes = 750 Multa = 0
Para testar: Poluentes = 2820.24 Multa = R$3000
Poluentes = 3521.2 Multa = R$17606000
Quantidade de Poluente
emitido [mg/(t*m
2
)]
Valor da Multa [R$]
At 1500 Isento
Acima de 1500 at 3000 3000,00
Acima de 3000 5000,00 x quantidade de poluentes
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
126
Exerccio 1
(algoritmo resolvido Soluo 1)
algoritmo "CalculaPoluente1"
var poluente, multa : real
inicio
escreva("Informe o total de poluentes: ")
leia(poluente)
se poluente <= 1500 entao
multa <- 0
fimse
se (poluente > 1500) e (poluente <= 3000) entao
multa <- 3000
fimse
se poluente > 3000 entao
multa <- poluente * 5000
fimse
escreval("Multa de R$ ",multa)
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
127
Exerccio 1
(algoritmo resolvido Soluo 2)
algoritmo "CalculaPoluente2"
var poluente, multa : real
inicio
escreva("Informe o total de poluentes: ")
leia(poluente)
se poluente <= 1500 entao
multa <- 0
senao
se poluente <= 3000 entao
multa <- 3000
senao
multa <- poluente * 5000
fimse
fimse
escreval("Multa de R$ ",multa)
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
128
Exerccio 1
(algoritmo resolvido Soluo 3)
algoritmo "CalculaPoluente3"
var poluente, multa : real
inicio
escreva("Informe o total de poluentes: ")
leia(poluente)
se poluente <= 1500 entao
escreval("Isento de multa. ")
fimse
se (poluente > 1500) e (poluente <= 3000) entao
escreval("Multa de R$3000.00")
fimse
se poluente > 3000 entao
multa <- poluente * 5000
escreval("Multa de R$ ",multa)
fimse
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
129
Exerccio 2
Faa um algoritmo para ler o nome, a altura (em
metros) e o peso (em kg) de uma pessoa e informar
a ela a sua situao corporal de acordo com o seu
IMC (ndice de Massa Corporal) que ser calculado
pelo algoritmo.
I MC = Peso / Altura
2

IMC menor que 18 pessoa est desnutrida
IMC menor que 20 pessoa est abaixo do peso
IMC entre 20 e 25 pessoa est no peso ideal
IMC maior que 25 pessoa est acima do peso
IMC maior que 27 pessoa est obesa
Para testar: Altura = 1.75 e Peso = 87.5 > Pessoa est acima do peso
Pessoa est obesa
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
130
Exerccio 2
(algoritmo resolvido)
algoritmo "CalculaIMC"
var NOME : caractere
PESO, ALTURA, IMC : real
inicio
escreva("Informe seu nome: ")
leia(NOME)
escreva("Informe seu peso em Kg: ")
leia(PESO)
escreva("Informe sua altura em metros: ")
leia(ALTURA)
IMC <- PESO / ALTURA^2
se IMC < 18 entao
escreval(NOME," est desnutrido. ")
fimse
se IMC < 20 entao
escreval(NOME," est abaixo do peso. ")
fimse
se (IMC >= 20) e (IMC <= 25) entao
escreval(NOME," est no peso ideal. ")
fimse
se IMC > 25 entao
escreval(NOME," est acima do peso. ")
fimse
se IMC > 27 entao
escreval(NOME," est obesa. ")
fimse
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
131
Exerccio 3
Faa um algoritmo que solicite ao usurio um nmero
inteiro e calcule e imprima se ele divisvel ao mesmo
tempo por 5 e 7.

Observao: Para testarmos se um nmero divisvel por outro
utilizamos o operador % (RESTO DE UMA DIVISO INTEIRA).

Exemplo Se X % 2 = 0
estamos constatando que X divisvel por 2.
Para testar: 35 divisvel simultaneamente por 5 e 7
40 no divisvel simultaneamente por 5 e 7
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
132
Exerccio 3
(algoritmo resolvido Soluo 1)
algoritmo "DivisivelPor5e7a"
var numero : inteiro
inicio
escreva("Informe um nmero: ")
leia(numero)
se (numero % 5 = 0) e (numero % 7 = 0) entao
escreval(numero," divisvel por 5 e 7")
senao
escreval(numero," no divisvel por 5 e 7")
fimse
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
133
Exerccio 3
(algoritmo resolvido Soluo 2)
algoritmo "DivisivelPor5e7b"
var numero, resto1, resto2 : inteiro
inicio
escreva("Informe um nmero: ")
leia(numero)
resto1 <- numero % 5
resto2 <- numero % 7
se (resto1 = 0) e (resto2 = 0) entao
escreval(numero," divisvel por 5 e 7")
senao
escreval(numero," no divisvel por 5 e 7")
fimse
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
134
Exerccio 4
Pela frmula de Bskara abaixo calculamos as razes reais de uma
equao do segundo grau. Faa um algoritmo para solicitar ao
usurio os valores de A, B e C e calcular e imprimir as razes da
funo f(x).
AC B
A
B
Razes
C Bx Ax x f
4
2
) (
2
2
= A
A
=
+ + =

< A
= A
> A
razes tem no
raz
reais razes
_ _ 0
_ 1 0
_ _ 2 0
A=2, B=4 e C=2 teremos 1 raiz = -1
Para testar: A=4, B=3 e C=5 no teremos razes
A=3, B=3 e C=0 teremos 2 razes = 0 e -1
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
135
Exerccio 4
(algoritmo resolvido)
algoritmo "Baskara"
var a, b, c, delta, raiz : real
inicio
escreva("Informe o valor de A: ")
leia(a)
escreva("Informe o valor de B: ")
leia(b)
escreva("Informe o valor de C: ")
leia(c)
delta <- b^2 4 * a * c
se delta > 0 entao
raiz <- (- b + delta^(1/2)) / (2 * a)
escreval("Raiz 1 = ",raiz)
raiz <- (- b - delta^(1/2)) / (2 * a)
escreval("Raiz 2 = ",raiz)
fimse
se delta = 0 entao
raiz <- - b / (2 * a)
escreval("Raiz = ",raiz)
fimse
se delta < 0 entao
escreval("No tem Raiz")
fimse
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
136
Exerccio 5
Fazer um algoritmo que leia 3 valores numricos inteiros e
verifique se eles podem ser as medidas dos seguintes
tringulos:

a) Equiltero = as medidas dos 3 lados so iguais
b) Escaleno = as medidas dos 3 lados so diferentes
c) Retngulo = o quadrado de um dos lados igual a
soma dos quadrados dos outros 2 lados
Valores: 3, 4 e 5 = Tringulo retngulo
= Tringulo escaleno
Para testar: Valores: 7, 7 e 7 = Tringulo eqiltero
Valores: 4, 8 e 9 = Tringulo escaleno
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
137
Exerccio 5
(algoritmo resolvido)
algoritmo "Triangulos"
var lado1, lado2, lado3 : inteiro
inicio
escreva("Informe o valor do lado 1 = ")
leia(lado1)
escreva("Informe o valor do lado 2 = ")
leia(lado2)
escreva("Informe o valor do lado 3 = ")
leia(lado3)
se (lado1 = lado2) e (lado1 = lado3) entao
escreval("Lados de um tringulo eqiltero")
fimse
se (lado1 <> lado2) e (lado1 <> lado3) e (lado2 <> lado3) entao
escreval("Lados de um tringulo escaleno")
fimse
se (lado1^2=lado2^2+lado3^2)ou(lado2^2=lado1^2+lado3^2)ou(lado3^2=lado1^2+lado2^2)entao
escreval("Lados de um tringulo retngulo")
fimse
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
138
Exerccio 6
Fazer um algoritmo que leia 2 valores numricos inteiros e a
opo referente a operao que o usurio deseja que seja feita.
Imprima o resultado da operao.
Nmeros 10 e 12 Operao 1 Resultado = 11
Para testar: Nmeros 5 e 7 Operao 2 Resultado = 35
Nmeros 24 e 11 Operao 3 Resultado = 2
Opo Operao
1 Mdia aritmtica entre os nmeros
2 Produto dos nmeros
3 Resultado da diviso inteira do primeiro pelo segundo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
139
Exerccio 6
(algoritmo resolvido)
algoritmo "CalculaOperacao"
var NUM1, NUM2, OPERACAO, PRODUTO, QUOCIENTE : inteiro
MEDIA : real
inicio
escreva("Informe primeiro nmero: ")
leia(NUM1)
escreva("Informe segundo nmero: ")
leia(NUM2)
escreva("Informe operao (1, 2 ou 3): ")
leia(OPERACAO)
se OPERACAO = 1 entao
MEDIA <- (NUM1 + NUM2) / 2
escreval("Mdia: ",MEDIA)
fimse
se OPERACAO = 2 entao
PRODUTO <- NUM1 * NUM2
escreval("Produto: ",PRODUTO)
fimse
se OPERACAO = 3 entao
QUOCIENTE <- NUM1 \ NUM2
escreval("Quociente: ",QUOCIENTE)
fimse
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
140
Exerccio 7
Faa um algoritmo que receba o valor de x, e calcule
e imprima o valor de f(x) conforme a funo abaixo.
x = 4 f(x) = 0
Para testar: x = 15 f(x) = 5.3953...
x = 2 f(x) = 3.7527...

>

+
=
<

+
=
4 ,
16
3 5
4 , 0
4 ,
16
3 5
) (
2
2
x se
x
x
x se
x se
x
x
x f
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
141
Exerccio 7
(algoritmo resolvido Soluo 1)
algoritmo "FunaoMultipla"
var x, f : real
inicio
escreva("Escreva o valor de X: ")
leia(x)
se x < 4 entao
f <- (5*x + 3)/(16 - x^2)^(1/2)
fimse
se x = 4 entao
f <- 0
fimse
se x > 4 entao
f <- (5*x + 3)/(x^2 - 16)^(1/2)
fimse
escreval("Valor da funo = ",f)
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
142
Exerccio 7
(algoritmo resolvido Soluo 2)
algoritmo "FunaoMultipla"
var x, f : real
inicio
escreva("Escreva o valor de X: ")
leia(x)
se x < 4 entao
f <- (5*x + 3)/(16 - x^2)^(1/2)
senao
se x = 4 entao
f <- 0
senao
f <- (5*x + 3)/(x^2 - 16)^(1/2)
fimse
fimse
escreval("Valor da funo = ",f)
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
143
Exerccio 8
A legislao brasileira prev a distribuio dos lucros de uma
empresa semestralmente. Cada empresa faz esta distribuio
proporcional ao salrio de cada empregado e com clculos
especficos. Faa um algoritmo que solicite ao usurio o salrio
de um empregado e calcule e imprima o valor de sua
participao nos lucros (PL Lquido) de acordo com a tabela e
frmulas abaixo:








PL Bruto = Valor Fixo + Percentual sobre o Salrio
Imposto de Renda = 25% sobre PL Bruto
PL Lquido = PL Bruto - Imposto de Renda
Salrio Valor fixo % sobre Salrio
At R$ 300,00 R$ 500,00 70%
De R$ 300,01 at R$ 1000,00 R$ 200,00 50%
Acima de R$ 1000,00 Zero 30%
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
144
Exerccio 8
(algoritmo resolvido)
algoritmo "ParticipacaoLucros"
var Salario, PLBruto, PLLiquido, IR : real
inicio
escreva("Informe seu salrio: ")
leia(Salario)
se Salario <= 300 entao
PLBruto <- 500 + Salario * 0.7
fimse
se (Salario > 300) e (Salario <= 1000) entao
PLBruto <- 200 + Salario * 0.5
fimse
se Salario > 1000 entao
PLBruto <- Salario * 0.3
fimse
IR <- PLBruto * 0.25
PLLiquido <- PLBruto - IR
escreval("PL = ",PLLiquido)
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
145
Exerccio Extra 1
Faa um algoritmo que leia o nome e a altura (em
metros) de uma pessoa e calcule e imprima os pesos
mnimo e mximo para que ela esteja dentro da faixa
de peso ideal de acordo com a tabela de IMC (ndice
de Massa Corporal) abaixo.
I MC = Peso / Altura
2

IMC menor que 20 pessoa est abaixo do peso
IMC entre 20 e 25 pessoa est no peso ideal
IMC maior que 25 pessoa est acima do peso
Para testar: Altura = 1.75 > Peso Mnimo = 61.25 e Peso Mximo = 76.56
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
146
Exerccio Extra 1
(algoritmo resolvido)
algoritmo "PesoMinimoMaximo"
var altura, pesominimo, pesomaximo : real
nome : caractere
inicio
escreva("Informe seu nome: ")
leia(nome)
escreva("Informe sua altura em metros: ")
leia(altura)
pesominimo <- 20 * altura ^ 2
pesomaximo <- 25 * altura ^ 2
escreval(nome," seu peso mnimo deve ser: ",pesominimo)
escreval(nome," seu peso mximo deve ser: ",pesomaximo)
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
147
Exerccio Extra 2
Uma operadora de TV a cabo nacional oferece uma srie de servios aos seus
assinantes. A conta a ser paga por um assinante, no fim do ms, constituda por
um valor fixo mensal somado ao consumo dos canais pay-per-view, que so
cobrados por uso dirio, ambos de acordo com o pacote que ele contratou (ver
tabela 1), mais os servios extras, alm da cobrana dos impostos sobre os
servios prestados que varia conforme a cidade do assinante (ver tabela 2).
Faa um algoritmo que solicite ao usurio o cdigo do seu pacote, a quantidade de
dias de consumo de canais pay-per-view, o valor dos servios extras, e a cidade do
assinante, e calcule e imprima o valor da conta que o assinante dever pagar.
Conta = Valor Fixo + Dirias Canais PPP + Servios Extras + Imposto (sobre Fixo/PPP/Extras)
Pacote Cdigo Valor Fixo (ms) Canais PPP (diria)
Basic 1 R$65,00 R$1,20 limitado a R$65,00
Advanced 2 R$104,00 R$2,10
Premium 3 R$137,00 Isento
Cidade Imposto
Belo Horizonte Isento
So Paulo 1%
Rio de Janeiro 1,5%
Demais cidades 2%
Pacote = 1 Dias = 70 Extras = 57.50 Cidade = Belo Horizonte Conta = 187.50
Testar: Pacote = 2 Dias = 10 Extras = 0.00 Cidade = Rio de Janeiro Conta = 126.88
Pacote = 3 Dias = 2 Extras = 980.00 Cidade = Aracaju Conta = 1139.34
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
148
algoritmo "TVaCabo"
var dias, codigo : inteiro
conta, contafinal, imposto, extras : real
cidade: caractere
inicio
escreva("Informe cdigo do pacote: ")
leia(codigo)
escreva("Informe a quantidade de dias utilizado: ")
leia(dias)
escreva("Informe valor dos servios extras: ")
leia(extras)
escreva("Informe nome da cidade do assinante: ")
leia (cidade)
se codigo = 1 entao
se 1.20*dias > 65 entao
conta <- 65 + 65 + extras
senao
conta <- 65 + 1.20*dias + extras
fimse
fimse
(continua...)

Exerccio Extra 2
(algoritmo resolvido)
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
149
(continuao...)
se codigo = 2 entao
conta <- 104 + 2.10*dias + extras
fimse
se codigo = 3 entao
conta <- 137 + extras
fimse
se cidade = "Belo Horizonte" entao
imposto <- 0
senao
se cidade = "So Paulo" entao
imposto <- 0.01
senao
se cidade = "Rio de Janeiro" entao
imposto <- 0.015
senao
imposto <- 0.02
fimse
fimse
fimse
contafinal <- conta + imposto*conta
escreval("Valor da conta = ", contafinal)
fimalgoritmo
Exerccio Extra 2
(algoritmo resolvido)
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
150
Exerccio Extra 3
Uma escola de lnguas tem uma frmula bem peculiar para calcular o
RESULTADO FINAL de seus alunos. Ela leva em conta o nmero de faltas, as
trs notas de provas, a nota do trabalho final e a idade do aluno. Faa um
algoritmo para ler as faltas, as notas das provas, a nota do trabalho final e a
idade do aluno, e que calcule e imprima o seu resultado final.

Nota Final = Mdia aritmtica das duas maiores Notas das Provas X Peso1 + Nota do Trabalho Final X Peso2
Nota Final Resultado Final
At 50 Reprovado
De 50 at 70 Regular
De 70 at 80 Bom
De 80 at 90 Muito Bom
Acima de 90 Excelente
Faltas Peso 1
At 5 3
De 5 at 10 2
Acima de 10 1
Idade Peso 2
At 17 1
De 18 at 50 2
Acima de 50 3
Faltas = 0 Provas = 5, 9, 7.2 Trabalho = 10.5 Idade = 15 Resultado = Reprovado
Testar: Faltas = 6 Provas = 12, 20, 3 Trabalho = 30 Idade = 22 Resultado = Excelente
Faltas = 20 Provas = 8, 2.5, 4 Trabalho = 17 Idade = 60 Resultado = Regular
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
151
Exerccio Extra 3
(algoritmo resolvido)
algoritmo "EscolaLinguas"
var faltas, idade, peso1, peso2 : inteiro
prova1, prova2, prova3, somaprova, trabalho, notafinal : real
resultado : caractere
inicio
escreva("Informe idade do aluno: ")
leia(idade)
escreva("Informe quantidade de faltas: ")
leia(faltas)
escreva("Informe nota da prova 1: ")
leia(prova1)
escreva("Informe nota da prova 2: ")
leia(prova2)
escreva("Informe nota da prova 3: ")
leia(prova3)
escreva("Informe nota do trabalho final: ")
leia(trabalho)

(Continua...)
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
152
Exerccio Extra 3
(algoritmo resolvido)
(Continuao...)

se faltas < 5 entao
peso1 <- 3
senao
se faltas < 10 entao
peso1 <- 2
senao
peso1 <- 1
fimse
fimse
se idade < 18 entao
peso2 <- 1
senao
se idade < 50 entao
peso2 <- 2
senao
peso2 <- 3
fimse
fimse

(Continua...)
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
153
Exerccio Extra 3
(algoritmo resolvido)
(Continuao...)

se (prova1 < prova2) e (prova1 < prova3) entao
somaprova <- prova2 + prova3
senao
se (prova2 < prova1) e (prova2 < prova3) entao
somaprova <- prova1 + prova3
senao
somaprova <- prova1 + prova2
fimse
fimse

notafinal <- somaprova / 2 * peso1 + trabalho * peso2

(Continua...)
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
154
Exerccio Extra 3
(algoritmo resolvido)
(Continuao...)

se notafinal < 50 entao
resultado <- "Reprovado"
senao
se notafinal < 70 entao
resultado <- "Regular"
senao
se notafinal < 80 entao
resultado <- "Bom"
senao
se notafinal < 90 entao
resultado <- "Muito Bom"
senao
resultado <- "Excelente"
fimse
fimse
fimse
fimse
escreval("Resultado Final = ",resultado)
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
155
Aula 5
Comando CONDICIONAL CASO
Exerccios
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
156
Comando CASO
(Estrutura condicional de seleo mltipla)
Comando utilizado para selees mltiplas de
outros comandos.
Pode-se utilizar vrias opes de escolha e
vrios valores de seleo.
Se nenhuma opo for encontrada pode-se criar
uma opo default.
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
157
Comando CASO
(Estrutura condicional de seleo mltipla)
escolha <varivel ou expresso aritmtica>
caso <valor
1
>, <valor
2
>, ... , <valor
n
>
comando
1
...
comando
n
caso <valor
n+1
>, <valor
n+2
>, ... , <valor
m
>
comando
n+1
...
comando
m
caso <valor
m+1
> ate <valor
m+2
>, ... , <valor
o
>
comando
o+1
...
comando
p
...
fimescolha
ate: utilizado para
se definir um
intervalo.
Varivel ou Expresso: Tem que
retornar valores INTEIROS ou
CARACTERES.
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
158
Comando CASO
(Estrutura condicional de seleo mltipla)
var IDADE : inteiro
...
leia(IDADE)
escolha IDADE
caso 0,1,2,3,4,5,6,7,8,9,10
escreval("Criana")

caso 11,12,13,14,15,16,17
escreval("Adolescente")

caso 18 ate 45
escreval("Adulto")
fimescolha
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
159
Comando CASO
(Estrutura condicional de seleo mltipla)
escolha <varivel ou expresso aritmtica>
caso <valor1>, <valor
2
>, ... , <valor
n
>
comando
1
...
comando
n
caso <valor
n+1
>, <valor
n+2
>, ... , <valor
m
>
comando
n+1
...
comando
m
...
outrocaso
comando
m+1
...
comando
o
fimescolha
Opo default: pode
ou no ser declarada
no comando caso.
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
160
Comando CASO
(Estrutura condicional de seleo mltipla)
var IDADE : inteiro
...
leia(IDADE)
escolha IDADE
caso 0 ate 10
escreval("Criana")

caso 11 ate 17
escreval("Adolescente")

caso 18 ate 45
escreval("Adulto")
outrocaso
escreval("Idoso")
fimescolha
Opo default: pode
ou no ser declarada
no comando caso.
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
161
Comando CASO
(Estrutura condicional de seleo mltipla)
escolha IDADE
caso IDADE <= 10
escreval("Criana")

caso de 11 ate 17
escreval("Adolescente")

caso > 45
escreval("Adulto")
outrocaso (NO COLOCAR NADA AQUI)
escreval("Idoso")
fimescolha
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
162
Exemplo 1
O resultado final de um aluno em uma determinada escola
depende da nota final obtida por ele, de acordo com a
tabela abaixo. Faa um algoritmo que leia a nota final (que
inteira) de um aluno, e calcule e imprima o seu resultado
final.
Nota Final Resultado
At 3 Reprovado
De 4 at 7 Em recuperao
De 8 at 10 Aprovado
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
163
Exemplo 1 (utilizando SE)
(algoritmo resolvido)
algoritmo "ResultadoFinal"
var nota : inteiro
inicio
escreva("Entre com a nota final do aluno: ")
leia(nota)
se nota <= 3 entao
escreval("Reprovado")
fimse
se (nota >= 4) e (nota <= 7) entao
escreval("Em recuperao")
fimse
se nota >= 8 entao
escreval("Aprovado")
fimse
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
164
Exemplo 1 (utilizando CASO)
(algoritmo resolvido)
algoritmo "ResultadoFinal"
var nota : inteiro
inicio
escreva("Entre com a nota final do aluno: ")
leia(nota)
escolha nota
caso 0,1,2,3
escreval("Reprovado")
caso 4,5,6,7
escreval("Em recuperao")
caso 8,9,10
escreval("Aprovado")
fimescolha
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
165
Exemplo 1 (utilizando CASO)
(algoritmo resolvido)
algoritmo "ResultadoFinal"
var nota : inteiro
inicio
escreva("Entre com a nota final do aluno: ")
leia(nota)
escolha nota
caso 0 ate 3
escreval("Reprovado")
caso 4 ate 7
escreval("Em recuperao")
caso 8 ate 10
escreval("Aprovado")
fimescolha
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
166
Exemplo 1 (utilizando SE)
(algoritmo resolvido)
algoritmo "ResultadoFinal"
var nota : inteiro
inicio
escreva("Entre com a nota final do aluno: ")
leia(nota)
se (nota >= 0) e (nota <= 10) entao
se nota <= 3 entao
escreval("Reprovado")
fimse
se (nota >= 4) e (nota <= 7) entao
escreval("Em recuperao")
fimse
se nota >= 8 entao
escreval("Aprovado")
fimse
senao
escreval("Nota invlida!")
fimse
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
167
Exemplo 1 (utilizando CASO)
(algoritmo resolvido)
algoritmo "ResultadoFinal"
var nota : inteiro
inicio
escreva("Entre com a nota final do aluno: ")
leia(nota)
escolha nota
caso 0 ate 3
escreval("Reprovado")
caso 4 ate 7
escreval("Em recuperao")
caso 8 ate 10
escreval("Aprovado")


fimescolha
fimalgoritmo
outrocaso
escreval("Nota invlida")
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
168
Exemplo 2
Faa um algoritmo que leia o nome de um time de futebol
do Brasil e informe se ele do Rio de Janeiro, de So
Paulo ou de Minas Gerais.
Atltico Mineiro => Time de Minas Gerais
Para testar: Botafogo => Time do Rio de Janeiro
Corinthians => Time de So Paulo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
169
Exemplo 2
(algoritmo resolvido)
algoritmo "Times"
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 "So Paulo","Palmeiras","Santos","Corinthians"
escreval(" um time paulista.")
caso "Atltico Mineiro","Cruzeiro","Amrica Mineiro","Villa Nova"
escreval(" um time mineiro.")
outrocaso
escreval(" um time de outro estado.")
fimescolha
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
170
Exerccio 1
Uma loteria esportiva paga prmios proporcionais a quantidade de
acertos de cada apostador. Ela tem 13 jogos. Se o apostador acertar
at 5 jogos ele no ganha nada, se acertar de 6 a 10 jogos ele ganha
um outro carto para apostar, se acertar 11 jogos ganha R$100, 12
jogos R$1000 e 13 jogos R$50000. Faa um algoritmo que leia o nome
do apostador e a quantidade de jogos que ele acertou, e calcule e
imprima o prmio que ele ganhou.
Para testar: 4 acertos = Nenhum prmio
7 acertos = Ganha outro carto
13 acertos = Prmio de R$50.000,00
Acertos Prmio
At 5 Nenhum
De 6 at 10 Outro carto
11 R$100,00
12 R$1.000,00
13 R$50.000,00
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
171
Exerccio 1
(algoritmo resolvido)
algoritmo "Loteria"
var nome : caractere
acertos : inteiro
inicio
escreva("Entre com nome do apostador: ")
leia(nome)
escreva("Entre com quantidade de acertos: ")
leia(acertos)
escolha acertos
caso 0 ate 5
escreval(nome," -> Nenhum prmio")
caso 6 ate 10
escreval(nome," -> Ganha outro carto")
caso 11
escreval(nome," -> Prmio de R$100,00")
caso 12
escreval(nome," -> Prmio de R$1.000,00")
caso 13
escreval(nome," -> Prmio de R$50.000,00")
outrocaso
escreval("Quantidade de acertos invlidos")
fimescolha
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
172
Exerccio 2
Faa um algoritmo que solicite ao usurio o nome de um
ms do ano (por extenso) e imprima a qual bimestre ele
pertence.
Para testar: Ms: Janeiro = Bimestre 1
Ms: Julho = Bimestre 4
Ms: Dezembro = Bimestre 6
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
173
Exerccio 2
(algoritmo resolvido)
algoritmo "Bimestre"
var mes : caractere
inicio
escreva ("Entre com o nome de um ms do ano: ")
leia(mes)
escolha mes
caso "Janeiro","Fevereiro"
escreval ("Este ms pertence ao Bimestre 1")
caso "Maro","Abril"
escreval ("Este ms pertence ao Bimestre 2")
caso "Maio","Junho"
escreval ("Este ms pertence ao Bimestre 3")
caso "Julho","Agosto"
escreval ("Este ms pertence ao Bimestre 4")
caso "Setembro","Outubro"
escreval ("Este ms pertence ao Bimestre 5")
caso "Novembro","Dezembro"
escreval ("Este ms pertence ao Bimestre 6")
outrocaso
escreval ("Ms invlido!")
fimescolha
fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
174
Exerccio 3
Faa um algoritmo que leia as 3 notas parciais de um
aluno (valores inteiros), calcule a NOTA FINAL (soma das
notas parciais) e imprima o CONCEITO do aluno conforme
a tabela abaixo:
Para testar: Notas 20, 40 e 10 = Conceito C
Notas 5, 10 e 40 = Conceito E
Notas 20, 30 e 40 = Conceito A
Nota Final Conceito
Entre 90 e 100 A
Entre 80 e 89 B
Entre 70 e 79 C
Entre 60 e 69 D
Abaixo de 60 E
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
175
Exerccio 3
(algoritmo resolvido)
algoritmo "Conceito"
var nota1, nota2, nota3, notafinal: inteiro
inicio
escreva("Informe a nota 1: ")
leia(nota1)
escreva("Informe a nota 2: ")
leia(nota2)
escreva("Informe a nota 3: ")
leia(nota3)
notafinal <- nota1 + nota2 + nota3
escolha notafinal
caso 0 ate 59
escreval("Conceito E")
caso 60 ate 69
escreval("Conceito D")
caso 70 ate 79
escreval("Conceito C")
caso 80 ate 89
escreval("Conceito B")
caso 90 ate 100
escreval("Conceito A")
outrocaso
escreval("Nota final invlida!")
fimescolha
fimalgoritmo
Uso de uma
varivel do tipo
INTEIRO
resultado de uma
expresso
aritmtica
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
176
Exerccio 3
(algoritmo resolvido)
algoritmo "Conceito"
var nota1, nota2, nota3 : inteiro
inicio
escreva("Informe a nota 1: ")
leia(nota1)
escreva("Informe a nota 2: ")
leia(nota2)
escreva("Informe a nota 3: ")
leia(nota3)
escolha nota1 + nota2 + nota3
caso 0 ate 59
escreval("Conceito E")
caso 60 ate 69
escreval("Conceito D")
caso 70 ate 79
escreval("Conceito C")
caso 80 ate 89
escreval("Conceito B")
caso 90 ate 100
escreval("Conceito A")
outrocaso
escreval("Nota final invlida!")
fimescolha
fimalgoritmo
Uso de uma
expresso
aritmtica cujo
resultado ser
INTEIRO
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
177
Exerccios (para entregar)
Valor: 8 pontos (cada exerccio vale 1 ponto);
Forma de entrega: rea do aluno na pgina da
escola na internet (exerccio por exerccio);
Data mxima de entrega: 31/03/2013 (domingo at
meia-noite);
Um ou mais exerccios podero ser feitos em dupla
(somente um elemento da dupla entregar o
exerccio);
Colocar seu nome, e de seu colega (se for o caso),
em cada algoritmo, em Autor;
Exerccios sem nome, iguais e mal feitos sero
zerados;
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
178
Exerccio 1
Faa um algoritmo que leia um nmero real qualquer.
Se o valor for maior que zero, calcule e imprima a
rea e o permetro de um quadrado. Caso o valor seja
menor ou igual a zero, mostre uma mensagem
dizendo que o valor INVLIDO.
xLADO PERMETRO
LADO REA
4
2
=
=
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
179
Exerccio 2
Tendo como dados de entrada a altura (em metros)
e o sexo de uma pessoa (F para feminino e M
para masculino), faa um algoritmo que calcule o
peso ideal da mesma, utilizando as seguintes
frmulas:

Para homens:
Para mulheres: 7 . 44 1 . 62 = xALTURA PesoIdeal


58 7 . 72 = xALTURA PesoIdeal
Altura = 1.75 Sexo = F Peso = 63.975
Para testar: Altura = 1.75 Sexo = M Peso = 69.225

Prof. Ricardo Luiz de Freitas ricardo@fumec.br
180
Exerccio 3
Ao se fazer uma determinada aplicao financeira, quando resgatamos o
dinheiro, a financeira calcula o valor a ser resgatado levando-se em conta
o nmero de dias que o dinheiro ficou aplicado, a taxa de juros diria, uma
taxa de administrao de R$10,00 e o valor a ser retido na fonte de
imposto de renda (percentual de 15%). Faa um algoritmo que calcule o
valor resgatado, solicitando ao usurio o capital aplicado, o nmero de dias
que ficou aplicado e a taxa diria e calcule e imprime o rendimento, o
imposto de renda e o valor a ser resgatado.

Rendimento = Capital Aplicado x Taxa Diria x Nmero de Dias
Imposto de Renda = 15% sobre o Rendimento
Valor Resgatado = Capital Aplicado + Rendimento IR Taxa de Administrao

Observao: A Taxa Diria informada percentualmente pelo usurio mas deve
ser convertida para ser utilizada na frmula do clculo do rendimento.
Para testar: Capital Aplicado = R$10000 - Dias = 60 - Taxa Diria = 0.1%
Rendimento = R$600 - IR = R$90 - Valor Resgatado = R$10500
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
181
Exerccio 4
A multa sobre o pagamento de um determinado imposto calculada
de acordo com o nmero de dias de atraso (vide tabela abaixo). Faa
um algoritmo que leia o valor do imposto e o nmero de dias de atraso
e calcule e imprima a multa a ser paga.
Dias de atraso Percentual de multa s/ Imposto
At 10 Isenta
De 11 a 30 2%
De 31 a 60 10% + 0,5% por dia de atraso
De 61 a 100 100%
Acima de 100 150% + R$1,00 por dia de atraso
Imposto = R$100 Dias = 5 Multa = R$0
Para testar: Imposto = R$100 Dias = 50 Multa = R$35
Imposto = R$100 Dias = 120 Multa = R$270
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
182
Exerccio 5
Faa um algoritmo que calcule o salrio mensal a receber de um
vendedor comissionado. O salrio constitudo de um valor fixo de
R$240,00 mais o valor referente a comisso, calculada de acordo com
a tabela abaixo, que varia com as vendas mensais realizadas pelo
vendedor. O algoritmo dever solicitar ao usurio o valor mensal das
vendas do vendedor e calcular e imprimir o seu salrio no ms.

SALRIO = VALOR FIXO + COMISSO


Total Mensal Vendido Clculo da Comisso
At R$1000,00 Zero
De R$1000,01 a 10000,00 10% sobre o valor vendido
Acima de R$10000,00 R$1000,00 fixos
Vendas = R$560,00 Salrio = R$240,00
Para testar: Vendas = R$7500,00 Salrio = R$990,00
Vendas = R$23000,00 Salrio = R$1240,00
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
183
Exerccio 6
Pelas novas regras da CBV, a pontuao que as equipes
de vlei ganham ao fim de uma partida da Super Liga so:
placares de 3 a 0 ou 3 a 1, do 3 pontos a equipe
vencedora e nenhum ponto a equipe perdedora; placar de
3 a 2, do 2 pontos a equipe vencedora e 1 ponto a equipe
perdedora. Faa um algoritmo que leia os nomes das
equipes (equipe 1 e equipe 2) e o placar de um jogo (sets
ganhos da equipe 1 e sets ganhos da equipe 2), e calcule
e imprima os pontuao que cada equipe ganhou na
partida.
Equipe 1 = Cruzeiro Equipe 2 = Minas
Para testar: Sets equipe 1 = 2 Sets equipe 2 = 3
Pontos Cruzeiro = 1 Pontos Minas = 2
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
184
Exerccio 7
Uma indstria produtora de bolas de futebol fabricou uma grande quantidade
para vender na poca da Copa do Mundo em 2014. Para isto ela dever
estocar toda a produo em galpes a serem alugados at a Copa. As bolas
sero armazenadas em caixas de papelo, que comportam at 10 bolas. Cada
galpo a ser alugado comporta at 850 caixas de papelo. Faa um algoritmo
que leia a quantidade de bolas produzidas pela fbrica, a quantidade de bolas
com defeito e que sero descartadas, o preo unitrio das caixas de papelo,
a quantidade de meses at a Copa, alm do valor mensal do aluguel, e calcule
e imprima o custo total de embalagem mais estocagem de toda a produo.

Observao: A ltima caixa de papelo dever ser estocada mesmo que
incompleta. O ltimo galpo dever ser alugado mesmo que no esteja
totalmente cheio.
Para testar: Produo de bolas = 85000 Bolas com defeito = 103
Caixa Papelo = R$0,50 Aluguel Mensal = R$100,00
Meses para a Copa = 44 Custo Total = R$ 48245,00
Prof. Ricardo Luiz de Freitas ricardo@fumec.br
185
Exerccio 8
Faa um algoritmo que leia a hora inicial, minuto inicial,
hora final e minuto final de um jogo. A seguir, calcule e
imprima a durao do jogo, mostrando o resultado no
seguinte formato:

O jogo durou xxx horas e yyy minutos.

Observao: O jogo terminou no mesmo dia em que ele
comeou.


Hora Inicio = 10:15 Hora Fim = 16:25 Durao = 6 hs 10 min
Para testar: Hora Inicio = 10:15 Hora Fim = 10:45 Durao = 0 hs 30 min
Hora Inicio = 10:15 Hora Fim = 18:05 Durao = 7 hs 50 min