Buscar

aula_04

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 67 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 67 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 67 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

CCF 110
ALGORITMO E ESTRUTURA ALGORITMO E ESTRUTURA 
DE DADOS IDE DADOS I
Universidade Federal de Itajubá
Prof. Roberto Affonso da Costa Junior
AULA 04 – 1/2AULA 04 – 1/2
– Estrutura Condicionais
Estrutura CondicionaisEstrutura Condicionais
➢ Até agora estávamos trabalhando com algoritmos 
puramente sequenciais, ou seja, todas as instruções 
eram executadas seguindo a ordem do algoritmo 
(normalmente, de cima para baixo). A partir de agora 
começamos a estudar estruturas de seleção.
➢ Uma estrutura de seleção, como o próprio nome já 
diz, permite que determinadas instruções sejam 
executadas ou não, dependendo do resultado de uma 
condição (teste), ou seja, o algoritmo vai tomar 
decisão de um processo (leitura, processo e 
impressão) a ser realizado. 
4
Estruturas de ControleEstruturas de Controle
Condicional ou de seleçãoCondicional ou de seleção
 Isto é, são testados parâmetros e, dependendo de seus 
valores, tomamos um caminho ou outro. As condições 
que são testadas num Algoritmo são do tipo lógica 
(booleano), portanto podem ter somente dois resultados: 
Verdadeiro ou Falso. Assim, a seleção de ações pode 
seguir, no máximo, duas alternativas: uma se a condição 
for verdadeira e outra se a condição testada for falsa. 
Existem seleções simples, compostas e múltiplas.
Operadores LógicosOperadores Lógicos
● Utilizados na confecção das condições
● São eles:
– Maior que >
– Menor que <
– Maior ou igual a >= 
– Menor ou igual a <= 
– Diferente de <>
– Igual a = 
Operadores RelacionaisOperadores Relacionais
● Complementando a confecção das condições
● São eles:
– E e
– OU ou
– não nao
Operadores RelacionaisOperadores Relacionais
A Não A
V F
F V
A B A ou B
V V V
V F V
F V V
F F F
A B A e B
V V V
V F F
F V F
F F F
TreinamentoTreinamento
1) Com base nas tabelas de decisão, determine os resultados 
lógicos das expressões mencionadas, assinalando se são 
verdadeiras ou falsas. Considere para as respostas os 
seguintes valores: X = 1, A = 3, B = 5, C = 8 e D = 7.
a) nao (X <= 3) resp: ( )
b) (X <> 1) e nao (B > A) resp: ( )
c) nao (B < 0) e (D > 8) resp: ( )
d) nao (X > -2) ou (C < 9) resp: ( )
e) (X > A) ou (A > C) resp: ( )
f) (B >= 5) resp: ( )
g) (C < 1) e (B >= A) resp: ( )
9
Estruturas de ControleEstruturas de Controle
Condicional ou de seleçãoCondicional ou de seleção
Seleções Simples:
 A seleção mais simples existente é quando o único bloco 
de comando (leitura, processo e/ou escreva) a ser 
realizado é aquele que a situação da <condição> é 
verdadeira. Não existe a opção falsa, ou não é necessário 
realizar nada neste tipo de opção. É o que chamamos de 
opção “default”.
10
Estruturas de ControleEstruturas de Controle
Condicional ou de seleçãoCondicional ou de seleção
Portugol:
 se <condição> 
 então 
 bloco de comandos 
 fim-se
Fluxograma:
<condições>
F
V
Bloco de comandos
11
EXEMPLO 1:EXEMPLO 1:
Leia um número e diga se ele é “maior que 10”.Leia um número e diga se ele é “maior que 10”.
{declaração de variáveis}
real N
inicio
 {comandos de entrada de dados}
 leia (N)
 {processo e saída de dados}
 se N > 10
 então
 imprima (N,” maior que 10)
 fim-se
fim
INICIO
N
N, “ Maior que 10”
FIM
N > 10
F
V
12
Estruturas de ControleEstruturas de Controle
Condicional ou de seleçãoCondicional ou de seleção
Seleções Completa:
 A seleção completa é dada por se...então...senão...fim-se onde se a 
<condição> for verdadeira é realizado o então e dentro dele os blocos de 
comandos 1, se for falsa, é realizado o senão e dentro dele os blocos de 
comandos 2.
13
Estruturas de ControleEstruturas de Controle
Condicional ou de seleçãoCondicional ou de seleção
Portugol:
se <condição> 
então 
 bloco de comandos 1
senão
 bloco de comandos 2
fim-se
Fluxograma:
<condições>
F
V
Bloco de comandos 1
Bloco de comandos 2
14
EXEMPLO 2:EXEMPLO 2:
Leia um número natural e diga se ele é par ou impar.Leia um número natural e diga se ele é par ou impar.
{declaração de variáveis}
inteiro N
inicio
 leia (N)
 se resto (N,2) = 0
 então
 imprima (N, “ é par”)
 senão
 imprima (N,” é impar)
 fim-se
fim
INICIO
FIM
N
N, “ é par”
resto (N, 2) = 0
F
V
N, “ é impar”
 
TreinamentoTreinamento
2) Determine o resultado lógicos das expressões mencionadas, assinalando se 
são verdadeiras ou falsas. Considere para as respostas os seguintes valores:
X = 3 A = 1 B = 5 C = 8 D = 0
a) não (X > 3) b) (X > 3) ou não (B > D)
c) não (D < 0) e (C > 5) d) não (X > 3) ou (C < 7)
3) Indique a saída dos trechos de programa em português estruturado, 
mostrado abaixo. Para as saídas considere os seguintes valores:
A = 0 B = 9 C = 3 D = 2
a) se nao (D > 3)
 então
 X ← (A + B) * D
 senão
 X ← (A - B) / C
 fim-se
 imprima (X)
b) se (A > B) ou (C <= 3) 
 então
X ← (A + 2) * (B - 2)
 senão
 X ← (A + B) / D * (C + D)
 fim-se
 imprima (X)
16
Estruturas de ControleEstruturas de Controle
Condicional ou de seleçãoCondicional ou de seleção
Seleções Composta:
 A estrutura de seleções composta também é designada como seleção 
aninhada e é utilizada quando estivermos fazendo várias comparações 
(testes) sempre com a mesma variável. Esta estrutura é chamada de 
aninhada porque na sua representação fica uma seleção dentro de outra 
seleção.
17
Estruturas de ControleEstruturas de Controle
Condicional ou de seleçãoCondicional ou de seleção
Portugol:
se <condição 1> 
então 
 se <condição 2> 
 então 
 bloco de comandos 11
 senão
 bloco de comandos 12
 fim-se
 bloco de comandos 1
senão
 se <condição 3> 
 então 
 bloco de comandos 21
 senão
 bloco de comandos 22
 fim-se
 bloco de comandos 2
fim-se
18
<condições 1>
F
V
Bloco de comandos 1 Bloco de comandos 2
Fluxograma:
<condições 2> <condições 3>
V V
F F
Bloco de comandos 11
Bloco de comandos 12
Bloco de comandos 21
Bloco de comandos 22
19
EXEMPLO 3:EXEMPLO 3:
Montar um programa que leia Montar um programa que leia 
três medidas e determine se três medidas e determine se 
essas medidas formam um essas medidas formam um 
triângulo, se formam que tipo triângulo, se formam que tipo 
de triângulo ele é (isósceles, de triângulo ele é (isósceles, 
escaleno ou eqüilátero).escaleno ou eqüilátero). 
{declaração de variáveis}
real A, B, C
inicio
 leia (A, B, C)
 se (A < B + C) e (B < A + C) e (C < A + B)
 então
 se (A = B) e (B = C)
 então
 imprima(“Triângulo Eqüilátero”)
 senão
 se (A = B) ou (A = C) ou (B = C)
 então
 imprima (“Triângulo Isósceles”)
 senão
 imprima (“Triângulo escaleno”)
 fim-se
 fim-se
 senão
 imprima (“As medidas não formam um triângulo”)
 fim-se
fim
TreinamentoTreinamento
4) Indique a saída dos trechos de programa do pedaço de 
fluxograma a seguir. Considerando os seguintes de valores 
inteiros: A = 2, B = 3, C = 5, D = 9.
 
X
nao (D > 5)
F
V
X ← (A + B) * D X ← (A - B) / C
TreinamentoTreinamento
5) Indique a saída dos trechos de programa do pedaço de 
fluxograma a seguir.Considerando os seguintes de valores 
inteiros: A = 4, B = 1, C = 0, D = 10.
 
X
(A > 2) .e.
(B < 7)
F
V
X ← (A + 2) * (B – 2) X ← (A + B) div D * (C + D)
22
Estruturas de ControleEstruturas de Controle
Condicional ou de seleçãoCondicional ou de seleção
Seleções Múltiplas:
 Podemos com as seleções aninhadas criarmos múltiplas seleções, mas 
existe um comando ao qual as seleções múltiplas são melhor representadas. 
E com isto, podemos escolher mais opções que somente verdadeira e falsa.
Portugol:
caso (<variável>) 
 <valor_variável 1>:Comandos de bloco 1 
 <valor_variável 2>:Comandos de bloco 2 
 ...
 <valor_variável n>:Comandos de bloco n 
 senão: Comandos de bloco F (opcional)
fim-caso
23
<variável>
Bloco de comandos F
Fluxograma:
F
Bloco de comandos 1<valor_variável 1>
<valor_variável 2> Bloco de comandos 2
<valor_variável n> Bloco de comandos n
Exemplo 4Exemplo 4
● Calcular a seguinte expressão:
 
VL= 5A+B
(A−B)+ 2A
B+3A
ALGORITMO
objetivo: Calcular uma expressão aritmética
 1) Definir variáveis
 inteiros A, B, num1, num2, den1, den2, VL
 inicio
 2) Entrada dos dados
 imprima ( “entre com dois valores “ )
 leia ( A, B )
 3) Calculo do numerador
 num1 ← 5 A + B
 
 4) Calculo do numerador do denominador
 num2 ← 2 A
 5) Calculo do denominador simples
 den 1 ← B + 3A
 6) calculo da expressao
 se ( den1 = 0 )
 então 
 imprima ( “expressão não calculada “ )
 imprima ( “denominador nulo” )
 senão
 
 senão
 6.1) calculo do denominador geral
 den2 ← ( A – B ) + num2 / den1
 6.2) calculo da expressão
 se ( den2 = 0 ) 
 então
 imprima ( “expressão não calculada “ )
 imprima ( “denominador nulo” )
 senão
 VL ← num1 / den2 
 imprima ( “ valor da expressao = “, VL )
 fim_se
 fim_se
 7) mostrando os dados de entrada
 imprima ( “A = “, A )
 imprima ( “B = “, B )
fim
 
Exemplo 5Exemplo 5
● São dados os resultados de uma prova que consta 
de 5 questões, cujas respostas podem ser uma das 
3 alternativas A, B ou C;
● São dados também as respostas de um aluno para 
esta prova.
● Desenvolva um algoritmo para calcular o 
desempenho deste aluno na prova segundo o 
seguinte critério:
– Acerto de 3 ou mais questões – conceito A
– Acerto de 1 ou 2 questões – conceito B
– Acerto de nenhuma questão - conceito R
ALGORITMO
objetivo: calcular o conceito de um aluno frente ao gabarito 
 de uma prova
 1) definição das variáveis
 caracter gab1, gab2, gab3, gab4, gab5
 caracter resp1, resp2, resp3, resp4, resp5
 caracter conceito
 inteiro n_questoes
 inicio
2) entrada dos dados
 2.1 ) dados do gabarito
 imprima ( “entre com as 5 alternativas do gabarito” ) 
 leia ( gab1, gab2, gab3, gab4, gab5 )
2.2 ) dados do aluno
 imprima ( “entre com as 5 resposta do aluno” ) 
 leia ( resp1, resp2, resp3, resp4, resp5 )
3) inicializando variáveis
 n_questoes ← 0
4) calculando quantas questões estão certas
Se ( gab1 = resp1 ) 
 então n_questoes ← n_questoes + 1
fim_se
Se ( gab2 = resp2 ) 
 então n_questoes ← n_questoes + 1
fim_se
Se ( gab3 = resp3 ) 
 então n_questoes ← n_questoes + 1
fim_se
Se ( gab4 = resp4 ) 
 então n_questoes ← n_questoes + 1
fim_se
Se ( gab5 = resp5 ) 
 então n_questoes ← n_questoes + 1
fim_se
5) verificando o conceito do aluno
se ( n_questoes ≥ 3 )
 então 
conceito ← ‘A’
 senão
 se ( n_questoes > 0 )
 então 
conceito ← ‘B’
 senão
conceito ← ‘R’
 fim_se
 fim_se
6) mostrando os resultados
6.1 ) dados de entrada
 imprima ( “gabarito: “ )
 imprima ( “questao 1: “, gab1 )
 imprima ( “questao 2: “, gab2 )
 imprima ( “questao 3: “, gab3 )
 imprima ( “questao 4: “, gab4 )
 imprima ( “questao 5: “, gab5 )
 imprima ( “resposta do aluno: “ )
 imprima ( “resposta 1: “, resp1 )
 imprima ( “resposta 2: “, resp2 )
 imprima ( “resposta 3: “, resp3 )
 imprima ( “resposta 4: “, resp4 )
 imprima ( “resposta 5: “, resp5 )
 6.2 ) quantidade de acertos
 imprima ( “quantidade de questoes certas = “ , 
n_questoes )
 6.3 ) conceito do aluno
 imprima ( “conceito do aluno: “, conceito )
 fim
Exemplo 7Exemplo 7
 Dado a data de nascimento de uma pessoa, no formato 
DD MM AAAA, fazer um programa para ler esta 
data e imprimi-la na forma corrente, ou seja:
 DD de nome do mês ao qual MM corresponde de AAA
 O programa deverá fazer a consistência dos dados de 
entrada. ( dia e mês )
Observação: antes de fazer o programa, faça o algoritmo do mesmo.
Exemplos: 
 dado: 20 3 1950
 saída: 20 de março de 1950
dado: 35 10 1980
 saída: dia do mês não permitido
dado: 3 20 1980
 saída: mês não permitido
dado: 31 4 1980
 saída: mês não tem 31 dias
Sugestão:
os valores DD, MM e AAAA devem ser fornecidos pelo 
usuário e armazenados cada um numa variável;
Primeira versãoPrimeira versão
Observar nestas soluções o seguinte:
● A entrada de dados é fornecida num único registro, ou 
seja, dia mês ano ( isto significa utilizar-se apenas uma 
declaração de entrada para todas as variáveis )
● Nesta versão após conferidas as consistências da 
entrada dos dados, o programa inicia a conversão 
pedida no enunciado; 
● Observe que esta tarefa só é realizada após toda a 
consistência dos dados tiver terminado. Por isto ela fica 
dentro do senão do ultimo Se da consistência.
ALGORITMO calendario
algoritmo para imprimir de forma corrente uma data de nascimento
1) Definição das variáveis
inteiros dia, mês, ano
2) Entrada de dados
imprima ( “entre com a data de nascimento” )
leia ( dia, mês, ano )
3) fazendo consistência dos dados e a conversão da data 
se ( dia < 1) ou ( dia > 31 )
 então
 imprima ( “dia errado” )
 senão
 se ( mes < 1 ) ou ( mes > 12 )
 então
 imprima ( “mês errado” )
 senão
 
 senão 
 se ( ano < 0 ) ou ( ano > 2010 )
 então
 imprima ( “verifique o ano “ )
 senão
 se ( mes = 1 )
 então
 imprima ( dia, “ de janeiro de “, ano )
 senão
 se ( mes = 2 )
 então
 se ( dia > 29 )
 então
 imprima ( “mes com dias errado“ )
 senão 
 imprima ( dia, “ de fevereiro de “, ano )
 fim_se
 senão
 
 senão
 se ( mes = 3 )
 então
 imprima ( dia, “ de março de “, ano )
 senão
 se ( mes = 4 )
 então
 se ( dia > 30 )
 entãoimprima ( “mes com dias errado“ )
 senão 
 imprima ( dia, “ de abril de “, ano )
 fim_se
 
 senão
senão
 se ( mes = 5 )
 então
 imprima ( dia, “ de maio de “, ano )
 senão
 se ( mes = 6 )
 então
 se ( dia > 30 )
 então
 imprima ( “mes com dias errado“ )
 senão 
 imprima ( dia, “ de junho de “, ano )
 fim_se
 
 senão
senão
 se ( mes = 7 )
 então
 imprima ( dia, “ de julho de “, ano )
 senão
 se ( mes = 8 )
 então
 imprima ( dia, “ de agosto de “, ano )
 senão
 se ( mes = 9 )
 então
 se ( dia > 30 )
 então
 imprima ( “mes com dias errado“ )
 senão 
 imprima ( dia, “ de setembro de “, ano )
 fim_se
 
 senão
senão
 se ( mes = 10 )
 então
 imprima ( dia, “ de outubro de “, ano )
 senão
 se ( mes = 11 )
 então
 se ( dia > 30 )
 então
 imprima ( “mes com dias errado“ )
 senão 
 imprima ( dia, “ de novembro de “, ano )
 fim_se
 
 senão
 se ( mes = 12 )
 então
 imprima ( dia, “ de dezembro de “, ano )
 fim_se
 fim_se
 fim_se
 fim_se
 fim_se
 fim_se
 fim_se
 fim_se
 fim_se
 fim_se
 fim_se
 fim_se
 fim_se
 fim_se
 fim_se
Fim_algoritimo
Segunda VersãoSegunda Versão
● A entrada de dados é a mesma;
● Nesta versão foram criadas algumas variáveis com o 
objetivo de otimizar o programa, quanto a leitura do 
mesmo:
– Variável CHAVE
– Variável MÊS_SAIDA
● A variável CHAVE é utilizada para controlar a 
impressão da saída, ou seja, inicialmente ela vale 
zero; se qualquer um erro ocorrer, tal como por 
exemplo, uma inconstência nos dados de entrada, 
esta variável passa para o valor 1; No final do 
programa ela é testada afim de verificar se a 
impressão pode ou não ocorrer.
● Diferentemente que na versão anterior, aqui o 
programa inicializa várias variáveis, as quais 
contém cada o nome do mês por extenso, as quais 
vão ser utilizadas nas comparações com os dados 
de entrada;
ALGORITMO calendario
algoritmo para imprimir de forma corrente uma data de nascimento
1) Definição das variáveis
inteiros dia, mês, ano
inteiros chave
cadeia mes01, mes02, mes03, mes04, mes05, mes06, mes07, mes08,
 mes09, mes10, mes11, mes12
2) Entrada de dados
imprima ( “entre com a data de nascimento” )
leia ( dia, mês, ano )
3) Inicializando chave de controle da impressão
 chave ← 0 
4) inicializando variáveis referentes ao mês
mes01 ← “ de Janeiro de ” 
mes02 ← “ de Fevereiro de ” 
mes03 ← “ de Março de ” 
mes04 ← “ de Abril de ” 
mes05 ← “ de de Maio de ” 
 mes06 ← “ de Junho de ” 
mes07 ← “ de Julho de ” 
mes08 ← “ de Agosto de ” 
mes09 ← “ de Setembro de ” 
mes10 ← “ de Outubro de ” 
mes11 ← “ de Novembro de ” 
mes12 ← “ de Dezembro de ” 
5) fazendo consistência dos dias e meses e ano
 se ( dia < 1) ou ( dia > 31 )
 então
 imprima ( “dia errado” )
 chave ← 1 
 fim_se
 se ( mes < 1 ) ou ( mes > 12 )
 então
 imprima ( “mês errado” )
 chave ← 1 
 fim_se
 se ( ano < 0 ) ou ( ano > 2010 )
 então
 imprima ( “verifique o ano “ )
 chave ← 1
 fim_se
6) fazendo a conversão da data
se ( mes = 1 )
 então
 mes_sai ← mes01
fim_se
 se ( mes = 2 )
 então
 mes_sai ← mes02
 Se ( dia > 29 )
 então 
 imprima ( “ mês não tem mais de 29 dias “ )
 chave ← 1 
 fim_se
fim_se
 se ( mes = 3 )
 então
 mes_sai ← mes03
 fim_se
 se ( mes = 4 )
 então
 mes_sai ← mes04
 se ( dia > 30 )
 então 
 imprima ( “ mês não tem mais de 30 dias “ )
 chave ← 1 
 fim_se
 fim_se
 se ( mes = 5 )
 então
 mes_sai ← mes05
 fim_se
 se ( mes = 6 )
 então
 mes_sai ← mes06
 se ( dia > 30 )
 então 
 imprima ( “ mês não tem mais de 30 dias “ )
 chave ← 1 
 fim_se
 fim_se
 se ( mes = 7 )
 então
 mes_sai ← mes07
 fim_se
 se ( mes = 8 )
 então
 mes_sai ← mes08
 fim_se
 se ( mes = 9 )
 então
 mes_sai ← mes09
 se ( dia > 30 )
 então 
 imprima ( “ mês não tem mais de 30 dias “ )
 chave ← 1 
 fim_se
 fim_se
 se ( mes = 10 )
 então
 mes_sai ← mes10
 fim_se
se ( mes = 11 )
 então
 mes_sai ← mes11
 se ( dia > 30 )
 então 
 imprima ( “ mês não tem mais de 30 dias “ )
 chave ← 1 
 fim_se
fim_se
 
se ( mes = 12 )
então
 mes_sai ← mes12
fim_se
7) saida do resultado
se ( chave = 0 )
 entao
 imprima ( dd, mês_sai, ano )
 fim_se
Fim_algoritimo
Terceira VersãoTerceira Versão
● Observe que na versão anterior, para determinados meses, 
aqueles que têm menos de 31 dias, o programa verifica esta 
possibilidade,e se o usuário entrou com a informação errada, 
o programa envia uma mensagem e troca a CHAVE para o 
valor 1;
● Deste modo, quando chegar ao final do programa e CHAVE 
for diferente de 1, ele imprime o valor do mês convertido;
● Ao invés de se ter um trecho igual para todos os meses onde 
esta verificação é feita, pode-se fazer uma única verificação 
conforme mostre o programa seguinte.
● Apenas o item 6) é trocado da versão anterior para esta;
6) fazendo a conversão da data
se ( mes = 1 )
 então
 mes_sai ← mes01
fim_se
se ( mes = 2 )
 então
 mes_sai ← mes02
fim_se
se ( mes = 3 )
 então
 mes_sai ← mes03
fim_se
se ( mes = 4 )
 então
 mes_sai ← mes04
fim_se
 se ( mes = 5 )
 então
 mes_sai ← mes05fim_se
se ( mes = 6 )
 então
 mes_sai ← mes06
fim_se
se ( mes = 7)
 então
 mes_sai ← mes07
fim_se
se ( mes = 8 )
 então
 mes_sai ← mes08
fim_se
 se ( mes = 9 )
 então
 mes_sai ← mes09
fim_se
se ( mes = 10 )
 então
 mes_sai ← mes10
fim_se
se ( mes = 11 )
 então
 mes_sai ← mes11
fim_se
se ( mes = 12 )
 então
 mes_sai ← mes12
fim_se
se ( mes = 2 ) e ( dia > 29 )
 então
 chave ← 1
 imprima ( “mês tem mais de 29 dias “ )
 senão
 se ( ( mes = 4 ) ou ( mes = 6 ) ou ( mes = 9 ) ou ( mes = 11 ) ) e
 ( dia > 30 )
 então
 chave ← 1
 imprima ( “mês tem mais de 30 dias “ )
 fim_se
 fim_se
 
ComentáriosComentários
● Todas as versões são soluções para o problema, porém é bom 
analisá-las e verificar que a primeira é a mais pobre de todas, 
tendo em vista que há um aninhamento muito grande de Seleções;
● A segunda versão já melhorou no sentido de que agora a saída é 
controlada por uma chave e foi retirada uma grande parte do 
aninhamento das seleções;
● A ultima versão é a mais otimizada, visto que todos os 
aninhamentos foram retirados, a chave de controle foi mantida e 
uma única verificação é responsável por decidir qual dos meses 
possui mais de 30 dias; além disto ela ficou com menos 
declarações.
Exemplo 8Exemplo 8
● Dados os coeficientes de uma equação do segundo 
grau, calcular as raízes reais da mesma.
● Fazer a consistência dos dados de entrada.
 ( verificar se é equação do segundo grau )
 Se as raízes não forem reais, o programa deverá comunicar ao usuário este 
fato, mas não calculá-las.
Observação: antes de fazer o programa, faça o algoritmo do mesmo.
ALGORITMO equacao_segundo_grau
algoritmo para calcular as raízes reais de uma equação do segundo grau
1) Definição das variáveis
inteiros coef1, coef2, coef3
reais delta, raiz1, raiz2
2) Entrada de dados
imprima ( “entre com os coeficientes da equação do segundo grau” )
leia ( coef1, coef2, coef3)
3) mostrando os dados de entrada
 imprima ( “coeficientes da equacao: “, coef1, coef2, coef3 )
4) Fazendo consistência dos dados de entrada
 Se ( coef1 = 0 )
então
 imprima ( “equação não é do segundo grau” )
 senão
 4.1 ) cálculo do discriminante
 delta ← coef2 . coef2 – 4 coef1 . coef3
 4.2 ) verificação do discriminante
 se ( delta < 0 ) 
 então
 imprima ( “raízes complexas” )
 senão
 4.2.1) calculo das raízes reais
 - coef2 + raiz ( discriminante )
 raiz1 ← ------------------------------------------
 2 coef1
 - coef2 – raiz ( discriminante )
 raiz2 ← ------------------------------------------
 2 coef1
 4.2.2) mostrando as raízes calculadas
 imprima ( “raízes reais: “ , raiz1, raiz2 )
fim_se
 fim_se
fim_algoritmo
 
TreinamentoTreinamento
1)Faça um programa que leia um número e diga se 
ele é divisível por 2 e por 3. Use estrutura de 
desvio condicional simples.
2)Faça um programa que leia um número e diga se 
ele é divisível por 5 ou por 7. Use estrutura de 
desvio condicional simples.
3)Faça um programa que leia dois números e 
apresente-os em ordem crescente. Use estrutura 
de desvio condicional simples.
 
TreinamentoTreinamento
4)Elabore um algoritmo que dada a idade de um 
nadador classifica-o em uma das seguintes 
categorias:
infantil A = 5 - 7 anos
infantil B = 8 - 10 anos
juvenil A = 11 - 13 anos
juvenil B = 14 - 17 anos
adulto = maiores de 18 anos
 
TreinamentoTreinamento
5) Um vendedor necessita de um algoritmo que 
calcule o preço total devido por um cliente. O 
algoritmo deve receber o código de um produto e 
a quantidade comprada e calcular o preço total, 
usando a tabela abaixo:
Código do Produto Preço unitário
101 R$ 3,20
102 R$ 2,80
103 R$ 1,50
104 R$ 10,25
105 R$ 2,90
	Slide 1
	Slide 2
	Slide 3
	Slide 4
	Slide 5
	Slide 6
	Slide 7
	Slide 8
	Slide 9
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Slide 15
	Slide 16
	Slide 17
	Slide 18
	Slide 19
	Slide 20
	Slide 21
	Slide 22
	Slide 23
	Slide 24
	Slide 25
	Slide 26
	Slide 27
	Slide 28
	Slide 29
	Slide 30
	Slide 31
	Slide 32
	Slide 33
	Slide 34
	Slide 35
	Slide 36
	Slide 37
	Slide 38
	Slide 39
	Slide 40
	Slide 41
	Slide 42
	Slide 43
	Slide 44
	Slide 45
	Slide 46
	Slide 47
	Slide 48
	Slide 49
	Slide 50
	Slide 51
	Slide 52
	Slide 53
	Slide 54
	Slide 55
	Slide 56
	Slide 57
	Slide 58
	Slide 59
	Slide 60
	Slide 61
	Slide 62
	Slide 63
	Slide 64
	Slide 65
	Slide 66
	Slide 67

Continue navegando