algoritmos (parte 1)_alunos.ppt

Post on 13-Aug-2015

426 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Algoritmos

Prof. Ricardo Luiz de Freitasricardo@fumec.br

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br2

Aulas1 - Conceitos de Algoritmo2 - Compiladores, Dados, Variáveis, Comandos leia e escreva3 - Comando de atribuição, Expressões Aritméticas4 - Comando Condicional – SE5 - Comando Condicional – CASO6 - Comando de Repetição – PARA7 - Séries Matemáticas8 - Comando de Repetição – REPITA9 - Comando de Repetição – ENQUANTO10 – Vetor11 – Matriz12 – Mapeamento ALGORITMO x PASCAL

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br3

Aula 1

Conceito de ALGORITMOS Estruturas básicas de um Algoritmo

Seqüencial Condicional Repetição

Exercício

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br4

Conceitos de Algoritmos

Algoritmo é a descrição de uma seqüência de passos que deve ser seguida para a realização de uma tarefa;

Algoritmo é uma seqüência finita de instruções ou operações cuja execução, em tempo finito, resolve um problema computacional;

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br5

Exemplos de Algoritmos

Como fazer um sanduíche?Passo 1 – Pegar um pão

Passo 2 – Cortar o pão ao meio

Passo 3 – Pegar a maionese

Passo 4 – Passar a maionese no pão

Passo 5 – Pegar o alface e o tomate

Passo 6 – Cortar o tomate

Passo 7 – Colocar alface e o tomate no pão

Passo 8 – Pegar o hambúrguer

Passo 9 – Fritar o hambúrguer

Passo 10 – Colocar o hambúrguer no pão

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br6

Um robô conseguiria executar o algoritmo e fazer um sanduíche?

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br7

Como fazer um sanduíche (versão 2)Passo 1 – Pegar um pão

Passo 2 – Cortar o pão 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 horário

Passo 3.5 – Tirar a tampa

Passo 3.6 – Pegar uma espátula no armário

Passo 3.7 – Colocar a espátula dentro do vidro de maionese

Passo 3.8 – Pegar um pouco de maionese

Passo 3.9 – Tirar a espátula do vidro

Passo 4 – Passar a maionese no pão

...

Refinamento do passo 3 “Pegar a

maionese”

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br8

Estruturas básicas de um Algoritmo Estrutura Seqüencial

Estrutura Condicional (ou seletiva)

Estrutura de Repetição Repetições definidas Repetições indefinidas

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br9

Estrutura Seqüencial

As ações são executadas uma após a outra, na mesma ordem em que aparecem:

Trazer a cesta com batatas Pegar uma panela do armário Descascar as batatas Jogar as cascas no lixo Lavar a cesta e a panela Guardar a cesta e a panela no armário

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br10

Estrutura Condicional - SE

A execução ou não de uma ação depende se o resultado de uma condição é verdadeiro ou falso

Trazer a cesta com batatas Pegar uma panela do armário Se sua roupa é clara então

Colocar o avental Descascar as batatas Jogar as cascas no lixo Lavar a cesta e a panela Guardar a cesta e a panela no armário

Condição

Ação

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br11

Estrutura Condicional - SE

O se..então.. é uma estrutura condicional ou seletiva, onde a ação (ou mais de uma) é executada somente se o resultado da condição for verdadeiro:

Se sua roupa é clara então Colocar o avental Lavar as mãos Pentear o cabelo

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br12

Estrutura Condicional - SE

Podemos utilizar também se..então..senão... para tornar a seleção de ações mais completa:

Se sua roupa é clara então Colocar o avental Lavar as mãos

Senão Colocar a toca

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br13

Estrutura de Repetição Trazer a cesta com batatas Pegar uma panela do armário Se sua roupa é clara então

Colocar o avental Lavar as mãos

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 armário

50 vezes

Refinamento do passo “Descascar

as batatas”

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br14

Estrutura de Repetição - DEFINIDA Trazer a cesta com batatas

Pegar uma panela do armário Se sua roupa é clara então

Colocar o avental Lavar as mãos

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 armário

E se não soubermos quantas batatas tem no cesto?

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br15

Estrutura de Repetição - INDEFINIDA Trazer a cesta com batatas

Pegar uma panela no armário Se sua roupa é clara então

Colocar o avental Lavar as mãos

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 armário

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br16

A linguagem é um elemento chave na construção 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.br17

Conclusão

Para a construção e execução de algoritmos é necessário que tanto a pessoa que dará as ordens quanto a pessoa (ou máquina) que executará o algoritmo entendam a mesma linguagem e, dessa forma, consigam comunicar-se.

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br18

Exercício (para entregar)

Suponha que você não possa vir a escola em um dia de entrega do trabalho final de curso. Faça um ALGORITMO que sirva para programar um robô que será acionado na calçada em frente a entrada da FUMEC. O robô deverá ir até o laboratório onde a aula está acontecendo, imprimir o trabalho, que está armazenado na rede, e entregar o mesmo ao professor, quando se auto desligará.

Instruções no próximo slide...

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br19

Exercício (para entregar) Fazer no Word; Valores mínimos para o algoritmo: 50 ações (1 verbo por

ação), 2 estruturas condicionais e 2 estruturas de repetição; Valor: 1 ponto extra (se estiver dentro das regras); Forma de entrega: “Área do Aluno” ou “SINEF” na página da

escola na internet (Apoio Didático / Entrega de Trabalhos); Data máxima de entrega: FINAL DO DIA; Poderá ser feito em dupla (somente um elemento da dupla

entregará o exercício); Colocar seu nome, e de seu colega (se for o caso), no início

do algoritmo; Exercícios sem nome, iguais e mal feitos serão zerados.

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br20

Aula 2 Compiladores Compilador VisuAlg Dados Identificadores Variáveis Comando de entrada de dados – LEIA Comando de saída de dados – ESCREVA Exercícios

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br21

Compiladores São programas utilizados para se criar outros programas; Etapas:

Edição: digitação e alteração do programa; Compilação: verificação de erros de sintaxe do programa; Execução: rodar o programa, entrando com os dados e obtendo

os resultados. Erros que podem aparecer:

Sintaxe: identificado pelo compilador na etapa de compilação; Lógica: identificado pelo usuário na etapa de execução.

Exemplos: Visualg = Portugol PascalZIM = Pascal Delphi = Pascal Dreamworks = HTML

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br22

Compilador VisuAlg

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br23

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 confirmação 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 confirmação para salvá-lo antes que seja sobreposto.Salvar (Ctrl-S): Grava imediatamente o texto presente no editor. Na primeira vez que um novo texto é gravado, o VisuAlg pede seu nome e localização.Imprimir: Imprime imediatamente na impressora padrão o texto presente no editor. Copiar (Ctrl-C): Copia o texto selecionado para a área de transferência.Colar (Ctrl-V): Copia texto da área de transferência para o local em que está o cursor.

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br24

Compilador VisuAlg

Executar (F9): Inicia (ou continua) a execução automática do algoritmo.Executar com timer (Shift-F9):: Insere um atraso (que pode ser especificado no intervalo ao lado) antes da execução de cada linha. Também realça em fundo azul o comando que está sendo executado, da mesma forma que na execução passo a passo.Passo (F8): Inicia (ou continua) a execução linha por linha do algoritmo, dando ao usuário a oportunidade de acompanhar o fluxo de execução e os valores das variáveis.Parar (Ctrl-F2): Termina imediatamente a execução do algoritmo. Evidentemente, este botão fica desabilitado quando o algoritmo não está sendo executado.Gerar valores aleatórios: Ativa a geração de valores aleatórios que substituem a digitação de dados.

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br25

Estrutura básica de um Algoritmo no VisuAlg

algoritmo "semnome"// Função :// Autor :// Data : 1/8/2011// Seção de declaraçõesvar

inicio// Seção de Comandos

fimalgoritmo

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br26

Exemploalgoritmo "CalcSomaMedia"var n1, n2, n3, soma : inteiro media : realInicio escreva("Informe um número = ") leia(n1) escreva("Informe outro número = ") leia(n2) escreva("Informe mais um número = ") leia(n3) soma <- n1 + n2 + n3 media <- soma / 3 escreval("Média = ",media)fimalgoritmo

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br27

Dados

O dado é a própria essência de um algoritmo ou programa de computador.

Ele pode ser informado pelo usuário, gerado pelo programa, processado pelo computador, e impresso para o usuário como uma informação.

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br28

Tipos de dados

Tipos de dados são maneiras pelas quais os dados são tratados

Constantes: são aqueles dados cujos valores não se alteram durante a execução do algoritmo

Variáveis: são aqueles dados cujos valores podem ser alterados durante a execução do algoritmo

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br29

Tipos de dados Classificação

Simples Numéricos

Inteiro Real

Não Numéricos Lógico Caractere

Estruturados Arquivos Vetores Matrizes

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br30

Tipos de dados

Numéricos INTEIRO

São os valores numéricos inteiros (sem casas decimais) Podem ser valores positivos ou negativos Variando entre -999999999 e 999999999 Ex: 0, -2, 47, 58, 123220, -34235

REAL São os valores numéricos 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.br31

Tipos de dados Não Numéricos

LÓGICO Representadas por apenas 2 valores:

Verdadeiro Falso

CARACTERE Representadas por uma seqüência de caracteres

(letras, números ou caracteres especiais) Textos em geral Geralmente são delimitadas por aspas (“ ”) Ex: “Rua”, “Computação”, “20/10/1998”, “1234”

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br32

Identificadores

Todas as variáveis ou constantes são identificadas por um nome que chamamos de IDENTIFICADOR

Exemplos: Salario Idade J Xpto NomeDaVariavel

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br33

Identificadores Regras para formação de identificadores

Só podem conter LETRAS e NÚMEROS Devem começar OBRIGATORIAMENTE com uma LETRA Não podem conter ESPAÇOS ou caracteres especiais

(@, ?, !, -, caracteres acentuados, etc.) Composto por no máximo 30 caracteres

Nomes válidos: i, j, FRUTA, salario, a12, i23ER21, umnomequalquer

Nomes inválidos: 1, 25, nome-fruta, 5JOSE, A$1, um nome qualquer, média

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br34

Identificadores O identificador deve passar ao programador (ou quem está

lendo o programa/algoritmo) o tipo de dados que a variável ou constante vai armazenar, ou seja, não devemos criar nomes que não tem nada a ver com o conteúdo da variável 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.br35

Algoritmo Exemplo (identificadores apropriados e inapropriados)

algoritmo "X"var a, b, c : inteiroinicio

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.br36

Algoritmo Exemplo (identificadores apropriados e inapropriados)

algoritmo "CalculaFatorial"var Numero, Fatorial, Contador : inteiroinicio escreva("Informe um número: ") 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.br37

Variáveis(abreviação de dados variáveis)

O que é uma Variável?

Variável é uma posição na memória do computador reservada pelo algoritmo durante a sua execução para armazenar dados a serem utilizados pelo próprio algoritmo

Estes dados podem ter sido gerados pelo próprio algoritmo (comandos de repetição, comando de atribuição, etc.) ou inseridos pelo usuário quando da execução de um comando de entrada/leitura de dados

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br38

Cláusula VAR (declaração de variáveis)

var (declaração das variáveis do algoritmo)

As variáveis (ou dados) podem ser de vários tipos: inteiro: define variáveis numéricas do tipo inteiro, ou seja,

sem casas decimais. (Ex: 12, 1000, 5, 345) real: define variáveis numéricas do tipo real, ou seja, com

casas decimais. (Ex: 1.45, 0.05, 500.4, 3.4) caractere: define variáveis do tipo caractere, ou seja, cadeia

de caracteres. (Ex: “ABC”, “Ricardo”, “Agosto/2006”).

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br39

Cláusula VAR (declaração de variáveis)

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.br40

Etapas de um algoritmo

1ª etapa : entrada de dados (informados pelo usuário)

2ª etapa : processamento (cálculos)

3ª etapa : saída de dados (exibição dos resultados)

Processamento(cálculos)

Entradade dados

Saídade dados

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br41

Comando LEIA(comando de I/O – entrada de dados)

Comando utilizado para receber os valores digitados pelos usuário, atribuindo-os às variáveis cujos nomes estão em <lista-de-variáveis> (é respeitada a ordem especificada nesta lista).

leia(<lista-de-variáveis>)

Exemplos leia(nome) leia(idade, peso, altura)

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br42

Comando LEIA(comando de I/O – entrada de dados)

O tipo de dado a ser digitado pelo usuário depende do tipo da variável utilizada no comando, se a variável for do tipo INTEIRO não podemos digitar um texto ou um valor numérico real, pois abortará a execução do algoritmo.

O usuário digita o dado via teclado e aperta ENTER. O dado é gravado na VARIAVEL e o cursor da tela pula para a primeira coluna da próxima linha.

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br43

Comando ESCREVA(comando de I/O – saída de dados)

Comando utilizado para se escrever (imprimir) informações na tela ou em qualquer dispositivo de saída de dados (impressora, fax, modem, etc) pelo algoritmo.

escreva(...) A informação entre parênteses é impressa e o cursor

permanece na mesma linha. escreval(...)

Idem, porém o cursor pula para a primeira coluna da próxima linha.

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br44

Comando ESCREVA(comando de I/O – saída de dados)

Temos as seguintes variações para o comando:

escreva("Mensagem a ser impressa") O texto entre aspas é impresso.

escreva(variavel) O conteúdo na memória de VARIAVEL é impresso.

escreva("Mensagem 1 ",var1," Mensagem 2 ",var2) Os textos são impressos junto com os conteúdos das variáveis var1 e

var2, na mesma linha e um depois do outro totalmente colados uns aos outros.

ATENÇÃO: É importante o uso de espaços dentro das aspas a fim de que os dados (textos e conteúdos de variáveis) sejam impressos separados uns dos outros

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br45

Comando ESCREVA(comando de I/O – saída de dados)

Exemplos de uso do escreva/escreval:

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

escreva("Nome: ",nome) impressão: Nome: Joselito Sem Noçãoescreval("Sua idade é de ",idade) impressão: Sua idade é de 39escreval("Salário de ",salario," INSS de ",inss) impressão: Salário de 850.65 INSS de 87.40

escreval salto de uma linha em branco

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br46

Exemplo 1

algoritmo "CalcSomaMedia"

var n1, n2, soma : inteiro media : realinicio leia(n1) leia(n2) soma <- n1 + n2 media <- soma / 2 escreval(soma) escreval(media)fimalgoritmo

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br47

Exemplo 1

algoritmo "CalcSomaMedia"var n1, n2, soma : inteiro media : realInicio escreva("Digite um número : ")

leia(n1) escreva("Digite outro número : ") leia(n2) soma <- n1 + n2 media <- soma / 2 escreval("Soma = ",soma) escreval("Média = ",media)fimalgoritmo

Entrada de Dados

Cálculos

Saída de Dados

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br48

Exemplo 2

Faça um algoritmo que solicite ao usuário o seu nome completo e o número de filhos que ele tem, e depois imprima estas informações.

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br49

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("Número de filhos: ",numfilhos)

fimalgoritmo

Entrada de Dados

Saída de Dados

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br50

Exemplo 3

Faça um algoritmo que solicite ao usuário o seu nome, seu endereço completo (logradouro, número, bairro, cidade, estado e CEP), seu peso (em Kg) e o número do sapato. Depois imprima uma etiqueta com estas informações de acordo com o layout abaixo:

x---------------------nome------------------------xx---------logradouro----------x, x---numero---xBairro x-----------------bairro-------------------xx-----------cidade---------------x – x--estado—xCEP x---cep---x

Peso (kg): x---peso---xNúmero do sapato: x--numero do sapato--x

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br51

Exemplo 3

Exemplo de saída de dados:

RICARDO LUIZ DE FREITASRUA COBRE, 200Bairro CRUZEIROBELO HORIZONTE – MGCEP 30150-101

Peso (kg): 86.5Número do sapato: 40

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br52

Exemplo 3 (algoritmo resolvido)

algoritmo "Etiqueta"var nome, logradouro, bairro, cidade, uf, cep, numero: caractere sapato : inteiro peso : realinicio escreva("Informe o seu nome: ") leia(nome) escreva("Informe o logradouro: ") leia(logradouro) escreva("Informe o número: ") leia(numero) escreva("Informe o bairro: ") leia(bairro)

(continua...)

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br53

Exemplo 3(algoritmo resolvido)

(continuação...)

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

(continua...)

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br54

Exemplo 3(algoritmo resolvido)

(continuação...)

limpatela

escreval(nome)

escreval(logradouro,", ",numero)

escreval("Bairro ",bairro)

escreval(cidade," - ",uf)

escreval("CEP ",cep)

escreval

escreval("Peso (Kg): ",peso)

escreval("Número do sapato: ",sapato)

fimalgoritmo

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br55

Exercício 1Faça um algoritmo que solicite ao usuário o seu nome, seus documentos (CPF, identidade, título de eleitor, carteira de motorista), seu salário 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---xTitulo de eleitor ........................... x---título de eleitor---xCarteira de motorista ................... x---carteira de motorista ---x

Empresa: x-----nome da empresa------xSalário: R$ x-----salário-----x

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br56

Exercício 1

Exemplo de saída de dados:

FICHA FUNCIONAL DE: RICARDO LUIZ DE FREITAS

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

Empresa: FEA-FUMECSalario: R$ 10500.45

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br57

Exercício 1 (algoritmo resolvido)

algoritmo "FichaFuncional"var nome, empresa, cpf, ci, titulo, motorista : caractere salario : realinicio escreva("Entre com seu nome: ") leia(nome) escreva("Entre com o nome da empresa que trabalha: ") leia(empresa) escreva("Entre com o seu salário: ") leia(salario) escreva("Entre com o número do seu CPF: ") leia(cpf) escreva(" Entre com o número da sua identidade: ") leia(ci) escreva("Entre com o número do seu título de eleitor: ") leia(titulo)

(continua...)

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br58

Exercício 1 (algoritmo resolvido)

(continuação...)

escreva("Entre com o número da sua carteira de motorista: ") leia(motorista) limpatela escreval("FICHA FUNCIONAL DE: ",nome) escreval escreval("Documentos: ") escreval("CPF .............................. ",cpf) escreval("C.I. .............................. ",ci) escreval("Título de eleitor ............ ",titulo) escreval("Carteira de motorista ..... ",motorista) escreval escreval("Empresa: ",empresa) escreval("Salário: R$ ",salario)fimalgoritmo

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br59

Exercício 2A Secretaria do Meio Ambiente mediu a quantidade de poluentes atmosféricos emitidos por uma empresa. Dependendo do valor obtido, a empresa foi multada conforme a tabela abaixo. Faça um algoritmo que monte esta tabela, solicitando as informações variáveis (xxx) para o usuário:

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.br60

Exercício 2

Exemplo de saída 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.br61

Aula 3

Comando de ATRIBUIÇÃO Expressões Aritméticas Exercícios

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br62

Comando de ATRIBUIÇÃO

O comando de atribuição é utilizado para se atribuir valores ou resultado de operações (expressões aritméticas, etc.) a variáveis

Representado pelos símbolos: <- NUNCA coloque espaços no meio do comando

de atribuição (< -)

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br63

Comando de ATRIBUIÇÃO ATENÇÃO: quando um valor é atribuído a uma variável o valor anterior

armazenado na mesma é perdido.

Podemos atribuir um valor fixo (1), o conteúdo de uma outra variável (2) ou o resultado de uma expressão aritmética 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.br64

Expressão Aritmética É a tradução de uma equação matemática (fórmula) para a

linguagem algorítmica.

Podemos utilizar os seguintes operadores aritméticos:

Operador Operação Exemplo

+ Soma SOMA <- NUMERO + 4

- Subtração RESULTADO <- 100 – SOMA

* MultiplicaçãoINSS <- SALARIO * 0.08

/ Divisão MEDIA <- SOMA / 7

^ Potenciação QUADRADO <- VALOR ^ 2

\ Resultado de uma divisão inteira

METADE <- NUMERO \ 2

% Resto de uma divisão inteira

SOBRA <- NUMERO % 3

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br65

Expressão Aritmética

Operador ^ (potenciação):

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.br66

Expressão Aritmética

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.br67

Expressão Aritmética

Operação percentual:

10 % VALOR

VALOR * 10 / 100

10 % de VALOR

VALOR * 0.1

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br68

Expressão Aritmética Ordem de execução dos operadores aritméticos:

Primeiro: operador ^ (potenciação)

Segundo: operadores * (multiplicação), / (divisão), \ (resultado de uma divisão inteira) e % (resto de uma divisão inteira)

Terceiro: operadores + (adição) e – (subtração)

ATENÇÃO: Para mudarmos esta ordem de execução dos operadores utilizamos os parênteses, em quantos níveis 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.br69

Expressão Aritmética

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.br70

Expressão Aritmética

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.br71

Expressão Aritmética Exemplos:

2RA

274)( 2 xxxf

53

321

NNNVALOR 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.br72

Exemplo 1

Faça um algoritmo que leia 5 números inteiros diferentes informados pelo usuário e calcule e imprima a soma e a média aritmética destes números.

Fórmulas:SOMA = N1 + N2 + N3 + N4 + N5MEDIA = SOMA / 5

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br73

Exemplo 1 (algoritmo resolvido)

algoritmo "CalculaSomaMedia"var n1, n2, n3, n4, n5, soma : inteiro media : realinício escreva("Digite o primeiro número: ")

leia(n1) escreva("Digite o segundo número: ")

leia(n2) escreva("Digite o terceiro número: ")

leia(n3) escreva("Digite o quarto número: ")

leia(n4) escreva("Digite o quinto número: ")

leia(n5) soma <- n1 + n2 + n3 + n4 + n5 media <- soma / 5 escreval("Soma = ",soma) escreval("Média = ",media)fimalgoritmo

Entrada de Dados

Cálculos

Saída de Dados

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br74

Exemplo 2

Faça um algoritmo que calcule e imprima o valor da hipotenusa de um triângulo retângulo. Os valores dos catetos serão informados pelo usuário.

Fórmula:

22

21 CatetoCatetoHipotenusa

Dados de Entrada

Dado de Saída

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br75

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

Cálculos

Saída de Dados

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br76

Exemplo 3

Faça um algoritmo que solicite ao usuário o valor do seu salário bruto e calcule e imprima quanto ele irá pagar de INSS.

Fórmula:INSS = 8% do salário

Dado de Entrada

Dados de Saída

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br77

Exemplo 3 (algoritmo resolvido)

algoritmo "CalculaINSS"

var salario, inss : real

inicio

escreva("Informe o valor do seu salário: ")

leia(salario)

inss <- salario * 0.08

escreval("O valor do INSS = ",inss)

fimalgoritmo

#115. Exemplo 1 (algoritmo resolvido – Solução 1)

Entrada de Dados

Cálculos

Saída de Dados

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br78

Exercício 1Fazer um algoritmo que calcule e imprima o

valor da função abaixo, sendo o valor de x informado pelo usuário.

Para testar: x = 15 f(x) = 3445

104)( 3 xxxf

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br79

Exercício 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

Cálculos

Saída de Dados

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br80

Exercício 2A área da superfície esférica e o volume de uma esfera são calculados a partir das fórmulas abaixo. Faça 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

RVolume

RÁrea

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br81

Exercício 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.br82

Exercício 3Faça um algoritmo que calcule e imprima o valor a ser retido de Imposto de Renda de uma pessoa de acordo com as fórmulas abaixo. O salário e o número de dependentes serão informados pelo usuário.

Fórmulas: Líquido = Salário – (N° de Dependentes x R$60,00)

IR = 15% do Líquido

Para testar: Salário = 1000 e Dependentes = 3 IR = 123

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br83

Exercício 3 (algoritmo resolvido)

algoritmo "CalculaImpostoRenda"var salario, liquido, ir : real dependentes : inteiroinicio escreva("Informe o seu salário: ") leia(salario) escreva("Informe o número 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.br84

Exercício 4

Faça um algoritmo que leia as coordenadas X e Y de 2 pontos do plano cartesiano e calcule e imprima a distância entre eles.

Ponto 1 (X1,Y1) e Ponto 2 (X2,Y2)

Fórmula:

221

221 yyxxDistância

Para testar: Ponto 1 (X1=3, Y1=4) e Ponto 2 (X2=6, Y2=7) Distância = 4.24..

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br85

Exercício 4 (algoritmo resolvido)

algoritmo "CalculaDistancia"var X1, Y1, X2, Y2, DISTANCIA : realinicio 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("Distância = ",DISTANCIA)fimalgoritmo

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br86

Exercício 5Fazer um algoritmo que calcule a conversão de temperaturas. O usuário 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

1605

273

txFahrenhei

Celsius

KelvinCelsius

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br87

Exercício 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.br88

Exercício 6A distância entre um ponto P e uma reta R é dado pela função abaixo. Faça um algoritmo que solicite ao usuário 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 distância.

Para testar: A=1, B=2, C=3, Xo=4 e Yo=5 D = 7.60...

22

00

),(

BA

CByAxDistância

YXP

CByAxR

oo

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br89

Exercício 6 (algoritmo resolvido)

algoritmo "CalculaDistancia" var X, Y, A, B, C, DISTANCIA : realinicio 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.br90

Exercício 7

Faça um algoritmo que solicite ao usuário o valor de x e calcule e imprima o valor da função f(x).

Para testar: x = 5 F(x) = 2.46...

xx

xf5

1)1

4()( 2

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br91

Exercício 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.br92

Exercício 8

Faça um algoritmo que solicite ao usuário dois valores numéricos inteiros e calcule e imprima:

a) A soma dos números;b) A subtração dos números;c) A multiplicação dos números;d) O resto da divisão inteira do primeiro pelo segundo;e) O quadrado da soma dos dois números;f) A raiz quadrada da multiplicação dos dois números;g) A raiz cúbica da soma dos dois números.

Para testar: N1 = 5 e N2 = 2 a=7 b=3 c=10 d=1 e=49 f=3.16... g=1.91...

Ver próximo slide >

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br93

Exercício 8

Observação: Quando criamos uma expressão aritmética com os operadores % e \ (divisão inteira) TODAS as variáveis da expressão tem ser do tipo INTEIRO.

Exemplo:

var RESTO, NUMERO1, NUMERO2 : inteiro

....

RESTO <- NUMERO1 % NUMERO2

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br94

Exercício 8(algoritmo resolvido)algoritmo "Calculos"var raiz, quadrado, cubo : real A, B, resto, soma, subtracao, multiplicacao : inteiroinicio escreva("Informe um número: ") leia(A) escreva("Informe outro número: ") 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 números é: ",soma) escreval("A subtração do primeiro número pelo segundo é: ",subtracao) escreval("A multiplicação dos dois números é: ",multiplicacao) escreval("O resto da divisão inteira do primeiro número pelo segundo é: ",resto) escreval("O quadrado da soma dos dois números é: ",quadrado) escreval("A raiz quadrada da multiplicação dos dois números é: ",raiz)

escreval("A raiz cúbica da soma dos dois números é: ",cubo) fimalgoritmo

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br95

Exercício 9

Faça um algoritmo que solicite ao usuário 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

2RS

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br96

Exercício 9(algoritmo resolvido)

algoritmo "AreaCircular"var Raio, Angulo, Area : realinicio 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.br97

Exercício Extra 1

Faça um algoritmo que leia as 3 notas de um aluno e calcule imprima a média final deste aluno. Considerar que a média é ponderada e que o peso das notas é: 2, 3 e 5, respectivamente.

Para testar: Nota 1 = 10, Nota 2 = 15 e Nota 3 = 12 Média = 12.5

Média ponderada é a soma das multiplicações dos valores dados pelos respectivos pesos, dividido pela soma dos pesos.

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br98

Exercício 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("Média Final = ",media)

fimalgoritmo

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br99

Exercício Extra 2

Faça um algoritmo que leia o tempo de duração 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 divisão inteira.

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br100

Exercício 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.br101

Aula 4

Comando CONDICIONAL – SE Exercícios

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br102

Comando SE(Estrutura condicional)

Comando que nos permite selecionar outros comandos a serem executados, dependendo se uma determinada condição for VERDADEIRA ou FALSA.

Permite que o computador tome decisões a respeito de qual caminho a seguir quando da execução de um programa/algoritmo.

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br103

Comando SE(Estrutura condicional)

Estrutura condicional - SIMPLES

se condição entao {condição pode ser verdadeira ou falsa}

comando1

comando2

... comandon

fimse

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br104

Comando SE(Estrutura condicional)

se condição entao comando1

comando2

... comandon

fimsecomandocomandocomando

comandocomando

Condição VERDADEIRA: os comandos depois do entao SERÃO executados

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br105

Comando SE(Estrutura condicional)

se condição entao comando1

comando2

... comandon

fimsecomandocomandocomando

comandocomando

Condição FALSA: os comandos depois do entao NÃO SERÃO executados

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br106

Comando SE(Estrutura condicional)

Estrutura condicional - COMPLETA

se condição entao {condição pode ser verdadeira ou falsa}

comando1

... comandon

senao comandon+1

... comandom

fimse

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br107

Comando SE(Estrutura condicional)

se condição entao comando1

comandon

senao comandon+1

comandom

fimsecomandocomandocomando

comandocomando

Condição VERDADEIRA: apenas os comandos depois do então SERÃO executados

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br108

Comando SE(Estrutura condicional)

se condição entao comando1

comandon

senao comandon+1

comandom

fimsecomandocomandocomando

comandocomando

Condição FALSA: apenas os comandos depois do senão SERÃO executados

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br109

Na condição do comando SE utilizamos expressões booleanas (lógicas) que retornam VERDADEIRO ou FALSO

Podemos utilizar os seguintes operadores booleanos:

VOTO <> 99Diferente<>

IDADE >= MAIORIDADEMaior ou igual>=

SOMA <= 0Menor ou igual<=

NUMERO1 > NUMERO2Maior>

VALOR < 100Menor<

N1 = N2Igual=

ExemploOperaçãoOperador

Comando SE(Estrutura condicional)

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br110

Na condição do comando SE podemos utilizar uma condição composta, ou seja, mais de uma proposição, unidas por conectores booleanos (lógicos):

ATENÇÃO: No caso de uma condição composta, ou seja, com mais de uma proposição, separadas pelos conectores booleanos (E e OU), utilizamos os parêntesis para delimitar cada proposição.

nao (CIDADE = "BH") Nega a condiçãonao

(IDADE >= 65) ou (SALARIO < 650)Um V = Vou

(NOTA >= 60) e (FALTAS <= 18)Todos V = Ve

ExemploOperaçãoConector

Comando SE(Estrutura condicional)

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br111

Comando SE(Estrutura condicional)

Operação Resultado

V e V V

V e F F

F e V F

F e F F

Conector E

Operação 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.br112

Exemplos:

se NUMERO > 10 entao escreval("Número é MAIOR que 10")fimse

se NUMERO > 10 entao escreval("Número é MAIOR que 10")senao escreval("Número é MENOR ou IGUAL a 10")fimse

se (NUMERO >= 10) e (NUMERO <= 100) entao escreval("Número está entre 10 e 100")senao escreval("Número está fora do limite")fimse

Comando SE(Estrutura condicional)

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br113

algoritmo "Exemplo"var NUMERO : inteiroinicio escreva("Digite um número inteiro: ") leia(NUMERO) se NUMERO > 10 entao escreval("Número é MAIOR que 10") fimse escreval("Fim do algoritmo")fimalgoritmo

Exemplo (algoritmo resolvido)

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br114

algoritmo "Exemplo"var NUMERO : inteiroinicio escreva("Digite um número inteiro: ") leia(NUMERO) se (NUMERO > 10) e (NUMERO < 100) entao escreval("Número está entre 10 e 100") fimse escreval("Fim do algoritmo")fimalgoritmo

Exemplo (algoritmo resolvido)

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br115

algoritmo "Exemplo"var NUMERO : inteiroinicio escreva("Digite um número inteiro: ") leia(NUMERO) se (NUMERO > 10) e (NUMERO < 100) entao escreval("Número está entre 10 e 100") senao escreval("Número está FORA DO LIMITE") fimse escreval("Fim do algoritmo")fimalgoritmo

Exemplo (algoritmo resolvido)

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br116

Contra-exemplo:

se N1 > 10 e < 100 entao ...

ERRADO

se (N1 > 10) e (N1 < 100) entao ... CERTO

Comando SE(Estrutura condicional)

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br117

Contra-exemplo:

se N1 > N2 > N3 entao ...

ERRADO

se (N1 > N2) e (N2 > N3) entao ...

CERTO

Comando SE(Estrutura condicional)

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br118

Faça um algoritmo para calcular e imprimir o valor a ser descontado de INSS no salário de um empregado utilizando a tabela abaixo. O usuário fornecerá o salário.

#76. Exemplo (algoritmo resolvido)

Faixa Salarial AlíquotaAté R$300,00 8%Acima de R$300,00 10%

Exemplo 1

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br119

algoritmo "CalculaINSS"var SALARIO, INSS : realinicio escreva("Digite o valor do seu salário: ") 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 – Solução 1)

Alíquota de 8%

Alíquota de 10%

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br120

algoritmo "CalculaINSS" var SALARIO, INSS : realinicio escreva("Digite o valor do seu salário: ") 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 – Solução 2)

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br121

algoritmo "CalculaINSS" var SALARIO, INSS : realinicio escreva("Digite o valor do seu salário: ") leia(SALARIO) se SALARIO <= 300 entao INSS <- SALARIO * 0.08 escreval("Você caiu na alíquota de 8%") senao INSS <- SALARIO * 0.10 escreval("Você caiu na alíquota de 10%") fimse escreval("Valor do INSS = ",INSS)fimalgoritmo

Exemplo 1 (algoritmo resolvido)

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br122

Exemplo 2

Faixa Salarial AlíquotaAté R$300,00 8%Acima de R$300,00 até R$1.000,00 9%Acima de R$1.000,00 10%

Faça um algoritmo para calcular e imprimir o valor a ser descontado de INSS no salário de um empregado utilizando a tabela abaixo. O usuário fornecerá o salário.

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br123

Exemplo 2 (algoritmo resolvido – Solução 1)

algoritmo "CalculaINSS"var SALARIO, INSS : realinicio escreva("Digite o valor do seu salário: ") 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

Alíquota de 8%

Alíquota de 9%

Alíquota de 10%

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br124

Exemplo 2(algoritmo resolvido – Solução 2)

algoritmo "CalculaINSS"var SALARIO, INSS : realinicio escreva("Digite o valor do seu salário: ") 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.br125

Exercício 1A Secretaria do Meio Ambiente mediu a quantidade de poluentes atmosféricos emitidos por uma empresa. Dependendo do valor obtido, a empresa foi multada conforme a tabela abaixo. Faça 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 = 0Para testar: Poluentes = 2820.24 Multa = R$3000

Poluentes = 3521.2 Multa = R$17606000

Quantidade de Poluente emitido [mg/(t*m2)]

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.br126

Exercício 1(algoritmo resolvido – Solução 1)

algoritmo "CalculaPoluente1"var poluente, multa : realinicio 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.br127

Exercício 1(algoritmo resolvido – Solução 2)

algoritmo "CalculaPoluente2"var poluente, multa : realinicio 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.br128

Exercício 1(algoritmo resolvido – Solução 3)

algoritmo "CalculaPoluente3"var poluente, multa : realinicio 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) fimsefimalgoritmo

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br129

Exercício 2Faça um algoritmo para ler o nome, a altura (em metros) e o peso (em kg) de uma pessoa e informar a ela a sua situação corporal de acordo com o seu IMC (Índice de Massa Corporal) que será calculado pelo algoritmo.

IMC = Peso / Altura2

IMC menor que 18 pessoa está desnutridaIMC menor que 20 pessoa está abaixo do pesoIMC entre 20 e 25 pessoa está no peso idealIMC maior que 25 pessoa está acima do pesoIMC 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.br130

Exercício 2(algoritmo resolvido)

algoritmo "CalculaIMC"var NOME : caractere PESO, ALTURA, IMC : realinicio 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. ") fimsefimalgoritmo

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br131

Exercício 3Faça um algoritmo que solicite ao usuário um número inteiro e calcule e imprima se ele é divisível ao mesmo tempo por 5 e 7.

Observação: Para testarmos se um número é divisível por outro utilizamos o operador % (RESTO DE UMA DIVISÃO INTEIRA).

Exemplo Se X % 2 = 0 estamos constatando que X é divisível por 2.

Para testar: 35 é divisível simultaneamente por 5 e 7

40 não é divisível simultaneamente por 5 e 7

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br132

Exercício 3(algoritmo resolvido – Solução 1)

algoritmo "DivisivelPor5e7a"var numero : inteiroinicio escreva("Informe um número: ") leia(numero) se (numero % 5 = 0) e (numero % 7 = 0) entao escreval(numero," é divisível por 5 e 7") senao escreval(numero," não é divisível por 5 e 7") fimsefimalgoritmo

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br133

Exercício 3(algoritmo resolvido – Solução 2)

algoritmo "DivisivelPor5e7b"var numero, resto1, resto2 : inteiroinicio escreva("Informe um número: ") leia(numero) resto1 <- numero % 5 resto2 <- numero % 7 se (resto1 = 0) e (resto2 = 0) entao escreval(numero," é divisível por 5 e 7") senao escreval(numero," não é divisível por 5 e 7") fimsefimalgoritmo

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br134

Exercício 4Pela fórmula de Báskara abaixo calculamos as raízes reais de uma equação do segundo grau. Faça um algoritmo para solicitar ao usuário os valores de A, B e C e calcular e imprimir as raízes da função f(x).

ACB

A

BRaízes

CBxAxxf

4

2

)(

2

2

raízestemnão

raíz

reaisraízes

__0

_10

__20

A=2, B=4 e C=2 teremos 1 raiz = -1Para testar: A=4, B=3 e C=5 não teremos raízes

A=3, B=3 e C=0 teremos 2 raízes = 0 e -1

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br135

Exercício 4(algoritmo resolvido)

algoritmo "Baskara"var a, b, c, delta, raiz : realinicio 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("Não tem Raiz") fimsefimalgoritmo

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br136

Exercício 5Fazer um algoritmo que leia 3 valores numéricos inteiros e verifique se eles podem ser as medidas dos seguintes triângulos:

a) Equilátero = as medidas dos 3 lados são iguaisb) Escaleno = as medidas dos 3 lados são diferentesc) Retângulo = o quadrado de um dos lados é igual a soma dos quadrados dos outros 2 lados

Valores: 3, 4 e 5 = Triângulo retângulo

= Triângulo escaleno

Para testar: Valores: 7, 7 e 7 = Triângulo eqüiláteroValores: 4, 8 e 9 = Triângulo

escaleno

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br137

Exercício 5(algoritmo resolvido)

algoritmo "Triangulos"var lado1, lado2, lado3 : inteiroinicio 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 triângulo eqüilátero") fimse se (lado1 <> lado2) e (lado1 <> lado3) e (lado2 <> lado3) entao escreval("Lados de um triângulo 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 triângulo retângulo") fimsefimalgoritmo

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br138

Exercício 6Fazer um algoritmo que leia 2 valores numéricos inteiros e a opção referente a operação que o usuário deseja que seja feita. Imprima o resultado da operação.

Números 10 e 12 Operação 1 Resultado = 11Para testar: Números 5 e 7 Operação 2 Resultado = 35 Números 24 e 11 Operação 3 Resultado = 2

Opção Operação

1 Média aritmética entre os números

2 Produto dos números

3 Resultado da divisão inteira do primeiro pelo segundo

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br139

Exercício 6(algoritmo resolvido)

algoritmo "CalculaOperacao"var NUM1, NUM2, OPERACAO, PRODUTO, QUOCIENTE : inteiro MEDIA : realinicio escreva("Informe primeiro número: ") leia(NUM1) escreva("Informe segundo número: ") leia(NUM2) escreva("Informe operação (1, 2 ou 3): ") leia(OPERACAO) se OPERACAO = 1 entao MEDIA <- (NUM1 + NUM2) / 2 escreval("Média: ",MEDIA) fimse se OPERACAO = 2 entao PRODUTO <- NUM1 * NUM2 escreval("Produto: ",PRODUTO) fimse se OPERACAO = 3 entao QUOCIENTE <- NUM1 \ NUM2 escreval("Quociente: ",QUOCIENTE) fimsefimalgoritmo

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br140

Exercício 7Faça um algoritmo que receba o valor de x, e calcule e imprima o valor de f(x) conforme a função abaixo.

x = 4 f(x) = 0Para testar: x = 15 f(x) = 5.3953... x = 2 f(x) =

3.7527...

4,16

35

4,0

4,16

35

)(

2

2

xsex

x

xse

xsex

x

xf

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br141

Exercício 7(algoritmo resolvido – Solução 1)

algoritmo "FunçaoMultipla"var x, f : realinicio 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 função = ",f)fimalgoritmo

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br142

Exercício 7(algoritmo resolvido – Solução 2)

algoritmo "FunçaoMultipla"var x, f : realinicio 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 função = ",f)fimalgoritmo

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br143

Exercício 8A legislação brasileira prevê a distribuição dos lucros de uma empresa semestralmente. Cada empresa faz esta distribuição proporcional ao salário de cada empregado e com cálculos específicos. Faça um algoritmo que solicite ao usuário o salário de um empregado e calcule e imprima o valor de sua participação nos lucros (PL Líquido) de acordo com a tabela e fórmulas abaixo:

PL Bruto = Valor Fixo + Percentual sobre o Salário Imposto de Renda = 25% sobre PL Bruto PL Líquido = PL Bruto - Imposto de Renda

Salário Valor fixo % sobre Salário

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.br144

Exercício 8(algoritmo resolvido)

algoritmo "ParticipacaoLucros"var Salario, PLBruto, PLLiquido, IR : realinicio escreva("Informe seu salário: ") 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.br145

Exercício Extra 1Faça um algoritmo que leia o nome e a altura (em metros) de uma pessoa e calcule e imprima os pesos mínimo e máximo para que ela esteja dentro da faixa de peso ideal de acordo com a tabela de IMC (Índice de Massa Corporal) abaixo.

IMC = Peso / Altura2

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 Mínimo = 61.25 e Peso Máximo = 76.56

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br146

Exercício Extra 1(algoritmo resolvido)

algoritmo "PesoMinimoMaximo"var altura, pesominimo, pesomaximo : real nome : caractereinicio 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 mínimo deve ser: ",pesominimo) escreval(nome," seu peso máximo deve ser: ",pesomaximo)fimalgoritmo

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br147

Exercício Extra 2Uma operadora de TV a cabo nacional oferece uma série de serviços aos seus assinantes. A conta a ser paga por um assinante, no fim do mês, é constituída por um valor fixo mensal somado ao consumo dos canais pay-per-view, que são cobrados por uso diário, ambos de acordo com o pacote que ele contratou (ver tabela 1), mais os serviços extras, além da cobrança dos impostos sobre os serviços prestados que varia conforme a cidade do assinante (ver tabela 2).

Faça um algoritmo que solicite ao usuário o código do seu pacote, a quantidade de dias de consumo de canais pay-per-view, o valor dos serviços extras, e a cidade do assinante, e calcule e imprima o valor da conta que o assinante deverá pagar.

Conta = Valor Fixo + Diárias Canais PPP + Serviços Extras + Imposto (sobre Fixo/PPP/Extras)

Pacote Código Valor Fixo (mês)

Canais PPP (diária)

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

São 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.88Pacote = 3 Dias = 2 Extras = 980.00 Cidade = Aracaju Conta = 1139.34

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br148

algoritmo "TVaCabo"var dias, codigo : inteiro conta, contafinal, imposto, extras : real cidade: caractereinicio escreva("Informe código do pacote: ") leia(codigo) escreva("Informe a quantidade de dias utilizado: ") leia(dias) escreva("Informe valor dos serviços 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...)

Exercício Extra 2(algoritmo resolvido)

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br149

(continuação...) 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 = "São 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

Exercício Extra 2(algoritmo resolvido)

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br150

Exercício Extra 3Uma escola de línguas tem uma fórmula bem peculiar para calcular o RESULTADO FINAL de seus alunos. Ela leva em conta o número de faltas, as três notas de provas, a nota do trabalho final e a idade do aluno. Faça 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 = Média aritmética 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.br151

Exercício Extra 3(algoritmo resolvido)

algoritmo "EscolaLinguas"var faltas, idade, peso1, peso2 : inteiro prova1, prova2, prova3, somaprova, trabalho, notafinal : real resultado : caractereinicio 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.br152

Exercício Extra 3(algoritmo resolvido)

(Continuação...)

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.br153

Exercício Extra 3(algoritmo resolvido)

(Continuação...)

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.br154

Exercício Extra 3(algoritmo resolvido)

(Continuação...)

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.br155

Aula 5

Comando CONDICIONAL – CASO Exercícios

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br156

Comando CASO(Estrutura condicional de seleção múltipla)

Comando utilizado para seleções múltiplas de outros comandos.

Pode-se utilizar várias opções de escolha e vários valores de seleção.

Se nenhuma opção for encontrada pode-se criar uma opção default.

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br157

Comando CASO(Estrutura condicional de seleção múltipla)

escolha <variável ou expressão aritmética>caso <valor1>, <valor2>, ... , <valorn> comando1

... comandon

caso <valorn+1>, <valorn+2>, ... , <valorm> comandon+1

... comandom

caso <valorm+1> ate <valorm+2>, ... , <valoro> comandoo+1

... comandop

...fimescolha

ate: utilizado para se definir um intervalo.

Variável ou Expressão: Tem que retornar valores INTEIROS ou CARACTERES.

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br158

Comando CASO(Estrutura condicional de seleção múltipla)

var IDADE : inteiro

...

leia(IDADE)

escolha IDADE

caso 0,1,2,3,4,5,6,7,8,9,10

escreval("Criança")

caso 11,12,13,14,15,16,17

escreval("Adolescente")

caso 18 ate 45

escreval("Adulto")

fimescolha

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br159

Comando CASO(Estrutura condicional de seleção múltipla)

escolha <variável ou expressão aritmética>caso <valor1>, <valor2>, ... , <valorn> comando1

... comandon

caso <valorn+1>, <valorn+2>, ... , <valorm> comandon+1

... comandom

...outrocaso comandom+1

... comandoo

fimescolha

Opção default: pode ou não ser declarada no comando caso.

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br160

Comando CASO(Estrutura condicional de seleção múltipla)

var IDADE : inteiro

...

leia(IDADE)

escolha IDADE

caso 0 ate 10

escreval("Criança")

caso 11 ate 17

escreval("Adolescente")

caso 18 ate 45

escreval("Adulto")

outrocaso

escreval("Idoso")

fimescolha

Opção default: pode ou não ser declarada no comando caso.

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br161

Comando CASO(Estrutura condicional de seleção múltipla)

escolha IDADE

caso IDADE <= 10

escreval("Criança")

caso de 11 ate 17

escreval("Adolescente")

caso > 45

escreval("Adulto")

outrocaso (NÃO COLOCAR NADA AQUI)

escreval("Idoso")

fimescolha

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br162

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. Faça 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 recuperação

De 8 até 10 Aprovado

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br163

Exemplo 1 (utilizando SE)(algoritmo resolvido)

algoritmo "ResultadoFinal"var nota : inteiroinicio 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 recuperação") fimse se nota >= 8 entao escreval("Aprovado") fimse fimalgoritmo

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br164

Exemplo 1 (utilizando CASO)(algoritmo resolvido)

algoritmo "ResultadoFinal"var nota : inteiroinicio 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 recuperação") caso 8,9,10 escreval("Aprovado") fimescolhafimalgoritmo

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br165

Exemplo 1 (utilizando CASO)(algoritmo resolvido)

algoritmo "ResultadoFinal"var nota : inteiroinicio escreva("Entre com a nota final do aluno: ") leia(nota) escolha nota caso 0 ate 3 escreval("Reprovado") caso 4 ate 7 escreval("Em recuperação") caso 8 ate 10 escreval("Aprovado") fimescolhafimalgoritmo

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br166

Exemplo 1 (utilizando SE)(algoritmo resolvido)

algoritmo "ResultadoFinal"var nota : inteiroinicio 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 recuperação") fimse se nota >= 8 entao escreval("Aprovado") fimse senao escreval("Nota inválida!") fimsefimalgoritmo

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br167

Exemplo 1 (utilizando CASO)(algoritmo resolvido)

algoritmo "ResultadoFinal"var nota : inteiroinicio escreva("Entre com a nota final do aluno: ") leia(nota) escolha nota caso 0 ate 3 escreval("Reprovado") caso 4 ate 7 escreval("Em recuperação") caso 8 ate 10 escreval("Aprovado") fimescolhafimalgoritmo

outrocaso escreval("Nota inválida")

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br168

Exemplo 2

Faça um algoritmo que leia o nome de um time de futebol do Brasil e informe se ele é do Rio de Janeiro, de São Paulo ou de Minas Gerais.

Atlético Mineiro => Time de Minas GeraisPara testar:Botafogo => Time do Rio de Janeiro

Corinthians => Time de São Paulo

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br169

Exemplo 2(algoritmo resolvido)

algoritmo "Times"var time : caractereinicio escreva("Entre com o nome de um time de futebol: ") leia(time) escolha time caso "Flamengo","Fluminense","Vasco","Botafogo"   escreval("É um time carioca.") caso "São Paulo","Palmeiras","Santos","Corinthians"   escreval("É um time paulista.") caso "Atlético Mineiro","Cruzeiro","América Mineiro","Villa Nova"   escreval("É um time mineiro.") outrocaso   escreval("É um time de outro estado.") fimescolhafimalgoritmo

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br170

Exercício 1Uma loteria esportiva paga prêmios proporcionais a quantidade de acertos de cada apostador. Ela tem 13 jogos. Se o apostador acertar até 5 jogos ele não ganha nada, se acertar de 6 a 10 jogos ele ganha um outro cartão para apostar, se acertar 11 jogos ganha R$100, 12 jogos R$1000 e 13 jogos R$50000. Faça um algoritmo que leia o nome do apostador e a quantidade de jogos que ele acertou, e calcule e imprima o prêmio que ele ganhou.

Para testar: 4 acertos = Nenhum prêmio 7 acertos = Ganha outro cartão

13 acertos = Prêmio de R$50.000,00

Acertos Prêmio

Até 5 Nenhum

De 6 até 10 Outro cartão

11 R$100,00

12 R$1.000,00

13 R$50.000,00

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br171

Exercício 1(algoritmo resolvido)

algoritmo "Loteria"var nome : caractere acertos : inteiroinicio 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 prêmio") caso 6 ate 10 escreval(nome," -> Ganha outro cartão") caso 11 escreval(nome," -> Prêmio de R$100,00") caso 12 escreval(nome," -> Prêmio de R$1.000,00") caso 13 escreval(nome," -> Prêmio de R$50.000,00") outrocaso escreval("Quantidade de acertos inválidos") fimescolhafimalgoritmo

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br172

Exercício 2

Faça um algoritmo que solicite ao usuário o nome de um mês do ano (por extenso) e imprima a qual bimestre ele pertence.

Para testar: Mês: Janeiro = Bimestre 1 Mês: Julho = Bimestre 4

Mês: Dezembro = Bimestre 6

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br173

Exercício 2(algoritmo resolvido)

algoritmo "Bimestre"var mes : caractereinicio escreva ("Entre com o nome de um mês do ano: ") leia(mes) escolha mes caso "Janeiro","Fevereiro"   escreval ("Este mês pertence ao Bimestre 1") caso "Março","Abril"   escreval ("Este mês pertence ao Bimestre 2") caso "Maio","Junho"   escreval ("Este mês pertence ao Bimestre 3") caso "Julho","Agosto"   escreval ("Este mês pertence ao Bimestre 4") caso "Setembro","Outubro"   escreval ("Este mês pertence ao Bimestre 5") caso "Novembro","Dezembro"   escreval ("Este mês pertence ao Bimestre 6") outrocaso   escreval ("Mês inválido!") fimescolhafimalgoritmo

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br174

Exercício 3

Faça 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.br175

Exercício 3(algoritmo resolvido)

algoritmo "Conceito"var nota1, nota2, nota3, notafinal: inteiroinicio 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 inválida!") fimescolhafimalgoritmo

Uso de uma variável do tipo

INTEIROresultado de uma

expressão aritmética

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br176

Exercício 3(algoritmo resolvido)

algoritmo "Conceito"var nota1, nota2, nota3 : inteiroinicio 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 inválida!") fimescolhafimalgoritmo

Uso de uma expressão

aritmética cujo resultado será

INTEIRO

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br177

Exercícios (para entregar) Valor: 8 pontos (cada exercício vale 1 ponto); Forma de entrega: área do aluno na página da

escola na internet (exercício por exercício); Data máxima de entrega: 31/03/2013 (domingo até

meia-noite); Um ou mais exercícios poderão ser feitos em dupla

(somente um elemento da dupla entregará o exercício);

Colocar seu nome, e de seu colega (se for o caso), em cada algoritmo, em “Autor”;

Exercícios sem nome, iguais e mal feitos serão zerados;

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br178

Exercício 1

Faça um algoritmo que leia um número real qualquer. Se o valor for maior que zero, calcule e imprima a área e o perímetro de um quadrado. Caso o valor seja menor ou igual a zero, mostre uma mensagem dizendo que o valor é INVÁLIDO.

xLADOPERÍMETRO

LADOÁREA

4

2

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br179

Exercício 2Tendo como dados de entrada a altura (em metros) e o sexo de uma pessoa (“F” para feminino e “M” para masculino), faça um algoritmo que calcule o peso ideal da mesma, utilizando as seguintes fórmulas:

Para homens: Para mulheres:

7.441.62 xALTURAPesoIdeal

587.72 xALTURAPesoIdeal

Altura = 1.75 Sexo = F Peso = 63.975Para testar: Altura = 1.75 Sexo = M Peso = 69.225

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br180

Exercício 3Ao se fazer uma determinada aplicação financeira, quando resgatamos o dinheiro, a financeira calcula o valor a ser resgatado levando-se em conta o número de dias que o dinheiro ficou aplicado, a taxa de juros diária, uma taxa de administração de R$10,00 e o valor a ser retido na fonte de imposto de renda (percentual de 15%). Faça um algoritmo que calcule o valor resgatado, solicitando ao usuário o capital aplicado, o número de dias que ficou aplicado e a taxa diária e calcule e imprime o rendimento, o imposto de renda e o valor a ser resgatado.

Rendimento = Capital Aplicado x Taxa Diária x Número de DiasImposto de Renda = 15% sobre o Rendimento Valor Resgatado = Capital Aplicado + Rendimento – IR – Taxa de Administração

Observação: A Taxa Diária é informada percentualmente pelo usuário mas deve ser convertida para ser utilizada na fórmula do cálculo do rendimento.

Para testar: Capital Aplicado = R$10000 - Dias = 60 - Taxa Diária = 0.1% Rendimento = R$600 - IR = R$90 - Valor Resgatado = R$10500

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br181

Exercício 4A multa sobre o pagamento de um determinado imposto é calculada de acordo com o número de dias de atraso (vide tabela abaixo). Faça um algoritmo que leia o valor do imposto e o número 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$0Para testar: Imposto = R$100 Dias = 50 Multa = R$35

Imposto = R$100 Dias = 120 Multa = R$270

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br182

Exercício 5Faça um algoritmo que calcule o salário mensal a receber de um vendedor comissionado. O salário é constituído de um valor fixo de R$240,00 mais o valor referente a comissão, calculada de acordo com a tabela abaixo, que varia com as vendas mensais realizadas pelo vendedor. O algoritmo deverá solicitar ao usuário o valor mensal das vendas do vendedor e calcular e imprimir o seu salário no mês.

SALÁRIO = VALOR FIXO + COMISSÃO

Total Mensal Vendido Cálculo da Comissão

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 Salário = R$240,00Para testar: Vendas = R$7500,00 Salário = R$990,00

Vendas = R$23000,00 Salário = R$1240,00

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br183

Exercício 6Pelas novas regras da CBV, a pontuação que as equipes de vôlei ganham ao fim de uma partida da Super Liga são: placares de 3 a 0 ou 3 a 1, dão 3 pontos a equipe vencedora e nenhum ponto a equipe perdedora; placar de 3 a 2, dão 2 pontos a equipe vencedora e 1 ponto a equipe perdedora. Faça 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 pontuação que cada equipe ganhou na partida.

Equipe 1 = Cruzeiro Equipe 2 = MinasPara testar: Sets equipe 1 = 2 Sets equipe 2 = 3

Pontos Cruzeiro = 1 Pontos Minas = 2

Prof. Ricardo Luiz de Freitas – ricardo@fumec.br184

Exercício 7Uma indústria 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 produção em galpões a serem alugados até a Copa. As bolas serão armazenadas em caixas de papelão, que comportam até 10 bolas. Cada galpão a ser alugado comporta até 850 caixas de papelão. Faça um algoritmo que leia a quantidade de bolas produzidas pela fábrica, a quantidade de bolas com defeito e que serão descartadas, o preço unitário das caixas de papelão, a quantidade de meses até a Copa, além do valor mensal do aluguel, e calcule e imprima o custo total de embalagem mais estocagem de toda a produção.

 

Observação: A última caixa de papelão deverá ser estocada mesmo que incompleta. O último galpão deverá ser alugado mesmo que não esteja totalmente cheio.

Para testar: Produção de bolas = 85000 Bolas com defeito = 103

Caixa Papelão = 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.br185

Exercício 8Faça um algoritmo que leia a hora inicial, minuto inicial, hora final e minuto final de um jogo. A seguir, calcule e imprima a duração do jogo, mostrando o resultado no seguinte formato:

“O jogo durou xxx horas e yyy minutos”.

Observação: O jogo terminou no mesmo dia em que ele começou.

Hora Inicio = 10:15 Hora Fim = 16:25 Duração = 6 hs 10 minPara testar: Hora Inicio = 10:15 Hora Fim = 10:45 Duração = 0 hs 30 min

Hora Inicio = 10:15 Hora Fim = 18:05 Duração = 7 hs 50 min

top related