Algoritmos
Fabrício Costa Santana
[email protected]
http://professorfabricio.net
Plano da Disciplina
• EMENTA
•
•
•
•
•
•
•
•
Declaração de variáveis e constantes
Tipos de variáveis
Instruções de entrada e saída
Tipos de representações de algoritmos
Operadores aritméticos e lógicos
Comandos de decisão
Estruturas de recepção
Vetores e matrizes
Plano da Disciplina
• OBJETIVO GERAL
• Estudar as técnicas de programação, baseando-se no aprendizado
de algoritmos computacionais.
• OBJETIVOS ESPECÍFICOS (Competências/Habilidades –
aprendizagens que serão consolidadas pelos estudantes)
• Resolver problemas computacionais.
• Desenvolver o raciocínio lógico voltado para criação de
programas e permitir o domínio das principais técnicas para a
produção de algoritmos
Avaliações
• UNIDADE I
• INSTRUMENTO
• Prova Individual
• Trabalho em Grupo – Listas de Exercícios
NOTA
Peso 8
Peso 2
• UNIDADE II
• INSTRUMENTO
• Prova Individual
• Trabalho em Grupo – Listas de Exercícios
NOTA
Peso 8
Peso 2
Referências Básicas
• MANZANO & OLIVEIRA. Algoritmos: Lógica para
Desenvolvimento de Programação de Computadores
• FORBELONE & EBERSPACHER. Lógica de Programação
• GUIMARÃES & LAGES. Algoritmos e Estruturas de Dados
• PEREIRA, S.L. Estruturas de Dados Fundamentais
Introdução
• O raciocínio lógico
• O raciocínio lógico na tecnologia da informação: Um esquema
sistemático que define as interações de sinais no equipamento
automático do processamento de dados, ou o computador
científico com o critério e princípios formais de raciocínio e
pensamento
• Segundo Venancio (1997) lógica pode ser definida como sendo
o estudo das leis do raciocínio e do modo de aplicá-las
corretamente na demonstração da verdade. A utilização da
lógica na vida do indivíduo é constante, visto que é ela quem
possibilita a ordenação do pensamento humano (Forbellone,
1993).
Introdução à lógica
É possível trocar uma lâmpada obedecendo a sequência
de ações abaixo?
1)Pegar uma escada;
2)Posicionar a escada
embaixo da lâmpada;
3)Buscar uma lâmpada
nova;
4)Colocar a lâmpada nova;
5)Retirar a lâmpada velha;
6)Subir na escada.
1)Pegar uma escada;
2)Posicionar a escada
embaixo da lâmpada;
3)Buscar uma lâmpada
nova;
4)Subir na escada;
5)Retirar a lâmpada velha;
6)Colocar a lâmpada nova.
Introdução à lógica
André e quatro amigos praticam esportes diferentes. Com base nas dicas
determine o nome e sobrenome de cada homem e o esporte que pratica.
a) João pratica pesca. Um sobrenome é Sr. Soares.
b) O Sr. Saraiva não pratica ciclismo, ele pratica golfe.
c) Nem Davi Silva nem o Sr. Rocha praticam natação.
d) O esporte de Pedro (cujo sobrenome não é Bernardes) é canoagem.
e) Nem o Sr. Bernardes nem Mauro praticam natação.
Nome
André
João
Davi
Pedro
Mauro
Sobrenome
Soares
Bernardes
Silva
Rocha
Saraiva
Esporte
Natação
Pesca
Ciclismo
Canoagem
Golfe
Exercício 1
Respostas Exercício 1
Nome
Emissora
Função
Sérgio
Globo
Câmera
Paulo
TVE
Cenógrafo
Flávio
SBT
Diretor
Carolina
Motorista
Cor
Partida
Chegada
Mauro
Marrom
5º
5º
Nara
Cinza
3º
1º
Laura
Vermelho
1º
4º
Bruno
Branco
4º
3º
Paula
Azul
2º
2º
O problema do bolo
A receita
Ingredientes:
• 1 Lata de leite condensado
• 1 Lata de milho sem a água
• 1 colher (de sopa) de manteiga
• 1 pacote de coco ralado
• 3 ovos
• 1 colher (de sopa) de fermento em pó
Modo de preparo:
• Bata no liquidificador, o milho, o leite condensado, a manteiga, o coco e os ovos.
• Despeje a mistura acima em uma tigela.
• Peneire o fermento e adicione-o à mistura.
• Mexa delicadamente a mistura.
• Em uma fôrma média de bolo, untada e polvilhada com fubá, despeje a massa.
• leve ao forno médio pré-aquecido, por 35 min.
O problema da média
• O problema: exibir a média das notas de um aluno de
matemática do ensino médio, sabendo que o aluno recebe
uma nota em cada unidade e o ano letivo possui 4 unidades.
• Entradas
• Processamento
• Saída
Algoritmo
Compreender o problema
Identificar os dados de entrada
Identificar os dados de saída
Determinar o que é preciso para transformar dados de entrada
em dados de saída:
•
•
•
•
usar a estratégia do dividir-para-conquistar
observar regras e limitações
identificar todas as ações a realizar
eliminar ambiguidades
Construir o algoritmo
Testar o algoritmo
Executar o algoritmo
Dividir-para-conquistar
É conhecido por método descendente (top-down method) ou método
de refinamento passo-a-passo
Consiste em dividir um problema em partes menores (ou
subproblemas) de modo a que seja mais fácil a sua resolução.
Exemplo: Fazer suco de laranja?
•
•
•
•
•
Lavar laranja;
Partir laranja ao meio;
Espremer laranja;
Filtrar o suco;
Servir o suco.
Passo-a-passo, significa que cada passo é completado antes que o
próximo comece. Exemplo: é impossível “ver novela” antes de
executar por inteiro o passo anterior de “ligar a TV”
Características dos Algoritmos
Um algoritmo tem cinco características importantes:
• Finitude: deve sempre terminar após um número finito de passos.
• Definição: cada passo de um algoritmo deve ser precisamente
definido. As ações devem ser definidas rigorosamente e sem
ambiguidades.
• Entradas: deve ter zero ou mais entradas, isto é informações que
são lhe são fornecidas antes do algoritmo iniciar.
• Saídas: deve ter uma ou mais saídas, isto é quantidades que tem
uma relação específica com as entradas.
• Efetividade: deve ser efetivo. Isto significa que todas as
operações devem ser suficientemente básicas de modo que
possam ser em princípio executadas com precisão em um tempo
finito por um humano usando papel e lápis.
Dicas para a criação de
algoritmos
1.
2.
3.
4.
5.
6.
Procure conhecer e compreender, ao máximo, o problema a ser
resolvido;
Identifique e defina os dados que, essencialmente, deverão ser
informados para que o processamento seja realizado com sucesso
(dados de entrada);
Descreva, detalhadamente, o processamento ou a transformação
a ser executada sobre os dados de entrada, em busca dos
resultados desejados (como chegar no objetivo);
Identifique e defina quais serão os dados resultantes do
processamento ou transformação (dados de saída);
Construa o algoritmo que represente a solução encontrada com o
detalhamento necessário para o seu entendimento;
Teste o algoritmo por meio de simulações e efetue as devidas
correções que possam vir a ser necessárias na lógica proposta.
Como representar um
algoritmo
• A descrição narrativa
• O fluxograma: Ex.: diagrama de blocos, diagrama de Chapin
• Linguagem algorítmica (também chamada de pseudocódigo).
Ex.: Português Estruturado
Como representar um
algoritmo
•
•
•
•
•
Linear
Estruturada
Modular
Diagrama de Chapin
Português Estruturado
Estruturada
Linear
Modular
Diagrama de Chapin
Português Estruturado
algoritmo "media"
var
n1, n2, n3, n4, soma, media: real
inicio
leia(n1, n2, n3, n4)
soma <- n1 + n2 + n3 + n4
media <- soma / 4
escreva("Media: ", media)
fimalgoritmo
Tipos de Dados
1. Dados Numéricos:
Tipos Inteiros: nos positivos e negativos.
exemplos: 35 0 -12
Tipos Reais: nos positivos, negativos e fracionários.
exemplos: 9 -12 4.6 -89.726
2. Dados Caracteres :
São sequências contendo letras, números e símbolos especiais.
Deve ser indicado entre aspas (“”).
Também chamado de alfanumérico, literal, string ou cadeia.
exemplos: “Rua Alfa, 52”
“Fone: 211-3456”
Tipos de Dados
3. Dados Lógicos:
Pode representar apenas dois valores: verdadeiro e falso.
Também chamado de booleano.
Deve ser indicado entre pontos.
exemplos:
.Falso.
.F. .N.
.Verdadeiro. .V. .S.
Tipos de Dados
Exercício:
Identifique os tipos de dados presentes na frase abaixo:
Ela tem 8 filhos, pesa 48,3 kg, seu exame de gravidez deu
positivo e pintou numa placa: “Precisa-se de Babás. Urgente!”
Variáveis
• É um dado que será armazenado no computador e que
assumirá valores diferentes à medida que for utilizado e
manipulado.
• Regras de representação
• O primeiro caractere do nome de uma variável não poderá ser,
em hipótese alguma, um número; sempre deverá ser uma letra;
• O nome de uma variável não poderá possuir espaços em branco;
• O nome de uma variável não poderá ser uma palavra reservada
(uma instrução ou comando);
• Não poderão ser utilizados outros caracteres a não ser letras,
números e sublinhado (underscore).
Variáveis
• Exemplo:
NOMEALUNO (Pedro, Afonso, Ana)
NOTAALUNO (7,23 10 2,8)
Deve ser identificado por um nome e pelo seu tipo.
Exemplo:
NOMEALUNO : caractere
NOTAALUNO : real
Constantes
•
•
•
•
Área da Circunferência = 3.14159 * Raio ^ 2
Kelvin = Celcius + 273
Celcius / 5 = (Fahrenheit – 32) / 9
(Kelvin – 273) / 5 = (Fahrenheit – 32) / 9
Operadores Matemáticos
Operador
Operação
Prioridade
+
Manutenção de sinal
1
Inversão de sinal
1
^ ou ** Exponenciação
2
Div
Divisão inteira
3
Mod Resto da divisão
3
/
Divisão
3
*
Multiplicação
3
+
Adição
4
Subtração
4
( )
Prioridade
1
Tipo
Unário
Unário
Binário
Binário
Binário
Binário
Binário
Binário
Binário
Resultado
Positivo
Negativo
Real
Inteiro
Inteiro
Real
Inteiro ou Real
Inteiro ou Real
Inteiro ou Real
Expressões Aritméticas
• AREA <- ( BASE * ALTURA ) / 2
• X = { 43 . [ 55 : ( 30 + 2 ) ] }
• X <- ( 43 * ( 55 / ( 30 + 2 ) ) )
• X <- 2 * 5 + 4
• X <- 2 * ( 5 + 4 )
Expressões Aritméticas
ax 2  bx  c
• a*x^2+b*x+c
Exercício 2
Respostas Exercício 2
1a) 2 ^ x +1 / 2 - y
b) z <- (1 + x) * (2 + y ^ 2) + 5
c) delta <- b ^ 2 - 4 * a * c
d) (8 / x + 6 / y ) * (3 ^ x / 2)
e) (1 / 2 - 5 ) + 2 ^ 3 * (5 + 3 / 2)
f) x <- 5 + sqrt(10) + (1 / 2) ^ 3
g) (sqrt(125) + 2 * 1 / 5) + 5 ^ 3 + (1/2*(5 / 2 + 8 + 1 / 3)) ^ 2
2–
a) I
i) L
b) L
j) S
3 – a, f, g, l, n
c) S
k) S
d) R
l) I
e) R
f) I
g) S
h) S
O Visualg
Diagrama de Blocos
Diagrama de Blocos
• Os diagramas devem ser feitos e quebrados em vários níveis.
Os primeiros devem conter apenas as ideias gerais e
detalhando-os posteriormente.
• Deve ser desenvolvido preferencialmente de cima para baixo e
da esquerda para a direita.
• As linhas de fluxo de dados nunca devem se cruzar.
Diagrama de Blocos
Diagrama de Blocos
Terminal
Seta de Fluxo de Dados
Processamento
Entrada de Dados ou Operação Manual
Entrada e Saída de Dados
Saída de Dados em Vídeo
Diagrama de Blocos
Saída de Dados em Impressora
Decisão
Conector
Conector
Entrada de Dados por Teclado
Armazenamento em Disco Magnético
Diagrama de Blocos
Sub-rotina
Diagrama de Blocos
Diagrama de Blocos
Algoritmos Simples – Soma de
dois números
Início
A
B
X <- A + B
X
Fim
algoritmo "soma_numeros"
var
X: inteiro
A: inteiro
B: inteiro
inicio
leia(A)
leia(B)
X <- A + B
escreva(X)
fimalgoritmo
Algoritmos Simples – Cálculo
da área de um círculo
Início
R
A <- 3.14159 * R ^ 2
A
Fim
algoritmo "area_circulo"
var
A: real
R: real
inicio
leia(R)
A <- 3.114159*R^2
escreva(A)
fimalgoritmo
Estruturas de Controle – A
Tomada de Decisões
• Desvio Condicional Simples
• Desvio Condicional Composto
• Desvios Condicionais Encadeados
Operadores Relacionais
Símbolo
=
<>
>
<
>=
<=
Significado
igual a
diferente
maior que
menor que
maior ou igual a
menor ou igual a
Desvio Condicional Simples
se (<condição>) então
<instruções para condição verdadeira>
fimse
Desvio Condicional Simples
algoritmo "Soma_numeros"
var
X, A, B: inteiro
inicio
leia(A)
leia(B)
X <- A + B
se (X>10) entao
escreva (X)
fimse
fimalgoritmo
Desvio Condicional Composto
se <(condição)> entao
<instrução para condição verdadeira>
senao
<instrução para condição falsa>
fimse
Desvio Condicional Composto
algoritmo "Soma_Numeros"
var
X, A, B, R: inteiro
inicio
leia(A, B)
X <- A + B
se (X >= 10) entao
R <- X + 5
senao
R <- X - 7
fimse
escreva(R)
fimalgoritmo
Desvio Condicional Encadeado
se (<condição1>) entao
<instruções para condição1 verdadeira>
senao
se (<condição2>) entao
<instruções para condição2 verdadeira, porém condição1 falsa>
senao
<instruções para condição1 e condição2 falsa>
fimse
fimse
Desvio Condicional Encadeado
Desvio Condicional Encadeado
Considere que o funcionário deverá receber um reajuste de 15%
caso seu salário seja menor que 500. Se o salário for maior ou
igual a 500, mas menor ou igual a 1000, seu reajuste será de
10%; caso seja maior que 1000, o reajuste deverá ser de 5%
Salário < 500, reajuste será de 15%
Salário >= 500, mas <= 1000, reajuste será de 10%
Salário > 1000, reajusto será de 5%
Desvio Condicional Encadeado
Desvio Condicional Encadeado
algoritmo "Reajusta_Salario"
var
novo_salario: real
salario: real
inicio
leia (salario)
se (salario < 500) entao
novo_salario <- salario * 1.15
senao
se (salario <= 1000) entao
novo_salario <- salario * 1.10
senao
novo_salario <- salario * 1.05
fimse
fimse
escreva (novo_salario)
fimalgoritmo
Operadores Lógicos
• Operador: E
• Operador: OU
• Operador: NÃO
Operador Lógico: E
Condição 1
FALSO
VERDADEIRO
FALSO
VERDADEIRO
Condição 2
FALSO
FALSO
VERDADEIRO
VERDADEIRO
Resultado
FALSO
FALSO
FALSO
VERDADEIRO
O operador do tipo E é utilizado quando dois ou
mais relacionamentos lógicos de uma determinada
condição necessitam ser verdadeiros.
Operador Lógico: E
algoritmo “TESTA_LOGICA_E”
var
NUMERO: inteiro
inicio
leia (NUMERO )
se (NUMERO >= 20) e (NUMERO <=90) entao
escreva (“Esta na faixa de 20 a 90")
senao
escreva (“Esta FORA da faixa de 20 a 90")
fimse
fimalgoritmo
Operador Lógico: OU
Condição 1
FALSO
VERDADEIRO
FALSO
VERDADEIRO
Condição 2
FALSO
FALSO
VERDADEIRO
VERDADEIRO
Resultado
FALSO
VERDADEIRO
VERDADEIRO
VERDADEIRO
O operador do tipo OU é utilizado quando pelo
menos um dos relacionamentos lógicos de uma
condição necessita ser verdadeiro.
Operador Lógico: OU
algoritmo “MEDIA_FALTAS_SITUACAO”
var
N1, N2, N3, N4, MEDIA: real
FALTAS: inteiro
inicio
leia (N1)
leia (N2)
leia (N3)
leia (N4)
leia (FALTAS)
MEDIA <- (N1+N2+N3+N4)/4
escreva (“A média é: ”, MEDIA)
se (MEDIA >= 7) ou (FALTAS < 10) entao
escreva (“Aprovado”)
senao
escreva (“Reprovado”)
fimse
fimalgoritmo
Operador Lógico: NÃO
Condição
VERDADEIRO
FALSO
Resultado
FALSO
VERDADEIRO
O operador do tipo NAO é utilizado quando se
necessita estabelecer que uma determinada
condição deve não ser verdadeira ou deve não ser
falsa. O operador NAO se caracteriza por inverter o
estado lógico de uma condição.
Operador Lógico: NÃO
algoritmo "Testa_Logica_NAO"
var
A, B, C, X: inteiro
inicio
leia (A, B, X)
se nao(X>5) entao
C <- (A + B) * X
senao
C <- (A - B) * X
fimse
escreva (C)
fimalgoritmo
TABELA VERDADE
A
F
F
V
V
B
F
V
F
V
NÃO A NÃO B A OU B
V
V
F
V
F
V
F
V
V
F
F
V
AEB
F
F
F
V
Algoritmo Triângulo
Problema:
Precisa-se de um programa capaz de ler três valores para os
lados de um triângulo e verificar se os lados fornecidos formam
realmente um triângulo. Se esta condição for verdadeira, deve
ser indicado qual tipo de triângulo foi formado: isósceles,
escaleno ou equilátero.
inicio
A, B, C
N
S
A<B+C .e. B<A+C
.e. C<A+B
S
N
N
“Não é Triângulo”
A=B .ou. A=C .ou.
B=C
“Triângulo
Escaleno”
A=B .e. B=C
S
“Triângulo
Isósceles”
fim
“Triângulo
Equilátero”
Algoritmo Triângulo
algoritmo "Triangulo"
var
a, b, c: real
inicio
leia (a, b, c)
se (a < b + c) e (b < a + c) e (c < a + b) entao
se (a=b) e (b=c) entao
escreva ("Triangulo Equilatero")
senao
se (a=b) ou (a=c) ou (c=b) entao
escreva ("Triangulo Isosceles")
senao
escreva ("Triangulo Escaleno")
fimse
fimse
senao
escreva ("As medidas nao formam um triangulo")
fimse
fimalgoritmo
Exercício 3
1.
2.
3.
4.
Escreva um algoritmo que leia dois números e mostre o produto
desses números.
Faça um algoritmo que leia o nome e as idades de duas pessoas e
mostre a soma das idades.
Escreva um algoritmo que deve ler uma temperatura em graus
Celsius e apresentá-la convertida em graus Fahrenheit. A fórmula
de conversão é F <- (9 * C + 160) / 5, sendo F a temperatura em
Fahrenheit e C a temperatura em Celsius.
Maria quer saber quantos litros de gasolina precisa colocar em
seu carro e quanto vai gastar para fazer uma viagem até a casa de
sua irmã.
• Dados extras:
• Distância da casa de Maria até sua irmã : 520 km
• Consumo do carro: 12 Km / l
• Preço da gasolina: R$ 2,00
Exercício 3
5. Escreva um algoritmo que leia dois números que deverão
ser colocados, respectivamente, nas variáveis VA e VB. O
algoritmo deve, então, trocar os valores de VA por VB e viceversa e mostrar o conteúdo destas variáveis.
6. Elaborar um programa que efetue a leitura de três valores
(A, B e C) e apresente como resultado final a soma dos
quadrados dos três valores lidos.
7. Resolva as expressões lógicas, determinando se a expressão
é verdadeira ou falsa:
a)
b)
c)
d)
2>3=
(6<8)ou(3>7)=
não (2<3)=
(5>=6 ou 6<7 ou não(a+5-6=8) {onde a = 5}
Exercício 3
8. Efetuar a leitura de um valor inteiro positivo ou negativo e
apresentar o número lido como sendo um valor positivo, ou
seja, o programa deverá apresentar o módulo de um
número fornecido. Lembre-se de verificar se o número
fornecido é menor que zero; sendo, multiplique-o por -1.
9. Elaborar um programa que efetue a leitura de um valor que
esteja entre a faixa de 1 a 9. Após a leitura do valor
fornecido pelo usuário, o programa deverá indicar uma de
duas mensagens: "O valor está na faixa permitida", caso o
usuário forneça o valor nesta faixa, ou a mensagem "O valor
está fora da faixa permitida", caso o usuário forneça valores
fora desta faixa numérica.
Exercício 3
10. Ler quatro valores referentes a quatro notas escolares de
um aluno e imprimir uma mensagem dizendo que o aluno
foi aprovado, se o valor da média escolar for maior ou igual
a 7. Se o valor da média for menor que 7, solicitar a nota de
exame, somar com o valor da média e obter nova média. Se
a nova média for maior ou igual a 5, apresentar uma
mensagem dizendo que o aluno foi aprovado em exame. Se
o aluno não foi aprovado, indicar uma mensagem
informando esta condição. Apresentar com as mensagens o
valor da média do aluno, para qualquer condição.
Exercício 4
1.
2.
3.
Escreva um algoritmo em português estruturado que seja capaz de ler
uma temperatura em graus Fahrenheit e apresentá-la convertida em
graus Celsius. A fórmula de conversão é: C <- (F - 32) * (5/9), sendo F a
temperatura em fahrenheit e C a temperatura em Celsius.
Escreva um algoritmo em português estruturado que seja capaz de
calcular e apresentar o valor do volume de uma lata de óleo
utilizando a fórmula: VOLUME <- 3.14159 * RAIO ^ 2 * ALTURA
Escreva um algoritmo em português estruturado que seja capaz de
efetuar o cálculo da quantidade de litros de combustível gasta em
uma viagem, utilizando um automóvel que faz 12 Km por litro. Para
obter o cálculo, o usuário deve fornecer o tempo gasto (TEMPO) e a
velocidade média (VELOCIDADE) durante a viagem. Desta forma, será
possível obter a distância percorrida com a fórmula DISTANCIA <TEMPO * VELOCIDADE. Possuindo o valor da distância, basta calcular
a quantidade de litros de combustível utilizada na viagem com a
fórmula LITROS_USADOS <- DISTANCIA / 12. Ao final, o programa
deve apresentar os valores da velocidade média (VELOCIDADE),
tempo gasto na viagem (TEMPO), a distancia percorrida (DISTANCIA) e
a quantidade de litros (LITROS_USADOS) utilizada na viagem.
Exercício 4
4.
5.
6.
7.
8.
Elaborar um programa que efetue a leitura de um número inteiro e apresentar
uma mensagem informando se o número é par ou ímpar. Dica: use o operador
mod que retorna o resto da divisão de um número por outro. Ex.: 4 mod 2 = 0
Elaborar um programa que efetue a leitura de um valor que esteja entre a
faixa de 50 a 100. Após aleitura do valor fornecido pelo usuário, o programa
deverá indicar uma de duas mensagens: "O valor está na faixa permitida",
caso o usuário forneça o valor nesta faixa, ou a mensagem "O valor está fora
da faixa permitida", caso o usuário forneça valores menores que 50 ou
maiores que 100.
Efetuar a leitura de quatro números inteiros e apresentar os números que são
divisíveis por 2 e 3. Caso o número seja divisível por 2 e 3, deverá ser exibida
uma mensagem indicando esta condição. Dica: use o operador Mod que
retorna o resto da divisão de um número por outro. Ex.: 4 Mod 2 = 0
Elaborar um programa que efetue a leitura de um determinado valor inteiro, e
efetue a sua apresentação, caso o valor não seja maior que três.
Crie um programa que leia dois valores numéricos, efetue a adição. Caso o
valor somado seja maior ou igual a 10, apresentar somando a ele mais 5; caso
contrário, apresentar subtraindo dele 7
Exercício 4
9.
Coloque verdadeiro ou falso, para o resultado lógico das
expressões abaixo. Considere para as respostas os valores: X = 1,
A = 3, B = 5, C = 8 e D = 7
a)
.não. (X > 3)
b)
(X < 1) .e. .não. (B > D)
c)
.não. (D < 0) .e. (C > 5)
d)
.não. (C > 3) .ou. (C < 7)
e)
(A > B) .ou. (C > B)
f)
(X >=2)
g)
(X < 1) .e. (B >=D)
h)
(D < 0) .ou. (C > 5)
i)
.não. (D > 3) .ou. .não. (B < 7)
j)
(A > B) .ou. .não. (C > B)
Exercício 4
10. Elaborar um programa que efetue a leitura de dois valores numéricos e
apresente a mensagem “Números Iguais” caso os valores sejam iguais. Se os
valores forem diferentes deverá ser exibido o resultado da diferença do maior
pelo menor. Faça também diagrama de blocos.
11. Faça um algoritmo para efetuar a leitura de um valor inteiro positivo ou
negativo e apresentar o número lido como sendo um valor positivo, ou seja, o
programa deverá apresentar o módulo de um número fornecido. Lembre-se
de verificar se o número fornecido é menor que zero; sendo, multiplique-o
por -1.
12. Faça um algoritmo para efetuar a leitura de três valores (variáveis A, B e C) e
efetuar o cálculo da equação completa de segundo grau (AX2 + BX + C),
apresentando as duas raízes, se para os valores informados for possível
efetuar o referido cálculo. Lembre-se de que a variável A deve ser diferente de
zero.
• Formulas:
• DELTA <- B ^ 2 - (4 * A * C)
• X1 <- (-B + sqrt(DELTA)) / 2 * A
• X2 <- (-B - sqrt(DELTA)) / 2 * A
13. Efetuar a leitura de três números inteiros e identificar o maior e o menor
valores.
Laços de Repetição
• Conceito
• Exemplo:
• Fatorial de 5!
• 5! = 5 x 4 x 3 x 2 x 1
• Fatorial de 8450
• 8450! = 8450 x 8449 x 8448 x 8447 x 8446 x ... X 3 x 2 x 1
• Probabilidade
• n = Total de números possíveis a se escolher.
• k = Quantidade de escolhas dentre o universo de números
disponíveis.
Tipos de Laços de Repetição
• Laço de Repetição com Teste Lógico no Início do Looping
• Laço de Repetição com Teste Lógico no Fim do Looping
• Laço de Repetição com Variável de Controle
Laço de Repetição com Teste
Lógico no Início do Looping
algoritmo "Pede_Numero"
var
X: inteiro
R: inteiro
inicio
leia (X)
R <- X * 3
escreva (R)
leia (X)
R <- X * 3
escreva (R)
leia (X)
R <- X * 3
escreva (R)
leia (X)
R <- X * 3
escreva (R)
leia (X)
R <- X * 3
escreva (R)
fimalgoritmo
Laço de Repetição com Teste
Lógico no Início do Looping
enquanto (condição) faca
instruções executadas enquanto a condição for verdadeira
fimenquanto
Laço de Repetição com Teste
Lógico no Início do Looping
Laço de Repetição com Teste
Lógico no Início do Looping
algoritmo “Looping_1A”
var
X, R, CONT: inteiro
inicio
CONT <- 1
enquanto (CONT <= 5) faca
leia (X )
R <- X * 3
escreval (R)
CONT <- CONT + 1
fimenquanto
fimalgoritmo
Laço de Repetição com Teste
Lógico no Início do Looping
algoritmo “FATORIAL _ENQUANTO”
var
CONT, FAT : inteiro
inicio
//isto é um contador
CONT  1
//isto é um acumulador
FAT  1
enquanto (CONT <= 5) faca
FAT  FAT * CONT
CONT  CONT + 1
fimenquanto
escreval (“Fatorial de 5 é = ”, FAT)
fimalgoritmo
Laço de Repetição com Teste
Lógico no Início do Looping
• Contador: Variável que controla a contagem do número de
vezes que o trecho de programa deverá ser executado.
• Acumulador: Variável usada para acumular valores. Deve ser
inicializada sempre com um valor que é elemento nulo na
operação a ser acumulada (se a operação for de multiplicação
deve iniciada com valor=1 se for soma deve ser iniciada com
valor=0)
Exercícios
1. Elabore um algoritmo que solicite ao usuário um número e
apresente os resultados da tabuada de multiplicar deste
número, a qual deverá ser impressa no seguinte formato
(considerando o fornecimento do número 2):
2x1=2
2x2=4
2x3= 6
2x4= 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18
2 x 10 = 20
Exercícios
2. Apresentar o total da soma obtida dos cem primeiros
números inteiros (1+2+3+4+...+98+99+100).
3. Elaborar um programa que apresente no final o somatório
dos valores inteiros pares existentes na faixa de 1 até 50.
4. Elaborar um programa que apresente os valores de
conversão de graus Celsius em Fahrenheit, de 10 em 10
graus, iniciando a contagem em 10 graus Celsius e
finalizando em 100 graus Celsius. O programa deve
apresentar os valores das duas temperaturas. A fórmula de
conversão F <- (9 * C + 160) / 5
5. Elaborar um programa que efetue a leitura de valores
positivos inteiros até que um valor negativo seja informado.
Ao final devem ser apresentados o maior e o menor valores
informados pelo usuário.
Resposta – 1º
algoritmo “TABUADA”
var
CONT,NUMERO:inteiro
inicio
escreva ("Digite um número: “)
leia (NUMERO)
CONT <- 1
enquanto (CONT <= 10) faca
escreva (NUMERO," X",CONT," =",NUMERO*CONT)
CONT <- CONT + 1
fimenquanto
fimalgoritmo
Resposta – 2º
algoritmo “ACUMULADOR”
var
CONTADOR,ACUMULADOR:inteiro
inicio
CONTADOR <-1
ACUMULADOR <-0
enquanto (CONTADOR<=100) faca
ACUMULADOR <- ACUMULADOR + CONTADOR
CONTADOR <- CONTADOR + 1
fimenquanto
escreva (ACUMULADOR)
fimalgoritmo
Resposta – 3º
algoritmo “SOMA_PARES_DE_1_A_50”
var
CONTADOR,ACUMULADOR:inteiro
inicio
CONTADOR <- 1
ACUMULADOR <- 0
enquanto (CONTADOR <= 50) faca
se (CONTADOR mod 2 = 0) entao
ACUMULADOR <- ACUMULADOR + CONTADOR
fimse
CONTADOR <- CONTADOR + 1
fimenquanto
escreva (ACUMULADOR)
fimalgoritmo
Resposta – 4º
algoritmo “TABELA_CELCIUS_FAHRENHEIT_10_A_10”
var
C,F:real
inicio
C <- 10
enquanto (C <= 100) faca
F <- (9 * C + 160) / 5
escreva (C,"ºC"," são",F,"ºF“)
C <- C + 10
fimenquanto
fimalgoritmo
Resposta – 5º
algoritmo “MAIOR_MENOR”
var
NUMERO,MAIOR,MENOR:inteiro
inicio
leia (NUMERO)
MAIOR <- NUMERO
MENOR <- NUMERO
enquanto (NUMERO >= 0) faca
se (NUMERO > MAIOR) entao
MAIOR <- NUMERO
fimse
se (NUMERO < MENOR) entao
MENOR <- NUMERO
fimse
leia NUMERO
fimenquanto
escreva ("Maior: ",MAIOR)
escreva ("Menor: ",MENOR)
fimalgoritmo
Laço de Repetição com Teste
Lógico no Fim do Looping
algoritmo "Pede_Numero"
var
X: inteiro
R: inteiro
inicio
leia (X)
R <- X * 3
escreva (R)
leia (X)
R <- X * 3
escreva (R)
leia (X)
R <- X * 3
escreva (R)
leia (X)
R <- X * 3
escreva (R)
leia (X)
R <- X * 3
escreva (R)
fimalgoritmo
Laço de Repetição com Teste
Lógico no Fim do Looping
repita
instruções executadas até que a condição se torne verdadeira
ate (Condição)
Laço de Repetição com Teste
Lógico no Fim do Looping
algoritmo “LOOPING_2A”
var
X, R, CONT: inteiro
inicio
CONT <- 0
repita
CONT <- CONT + 1
leia (X)
R <- X * 3
escreva (R)
ate (CONT >= 5)
fimalgoritmo
Exemplo
1. Iniciar o programa e o modo de laço repita;
2. Ler um valor para a variável X ;
3. Efetuar a multiplicação do valor de X por 3, implicando o
resultado em R;
4. Apresentar o valor calculado contido na variável R;
5. Solicitar do usuário se este deseja ou não continuar o
programa;
6. Repetir os passos 2, 3, 4 e 5 até que a resposta do usuário
seja diferente de sim.
Exemplo
algoritmo “LOOPING_2B”
var
X, R: inteiro
RESP: caracter
inicio
RESP <- "sim"
repita
leia (X)
R <- X * 3
escreva (R)
escreva ("Deseja continuar? ")
leia (RESP)
ate (RESP <> "sim")
fimalgoritmo
Laço de Repetição com Variável
de Controle
Conceito:
Laço de repetição usado quando se sabe exatamente quantas
repetições serão necessária para a execução de um programa.
Português Estruturado
para <variável> de <início> ate <fim> passo <incremento> faca
<instruções>
fimpara
Laço de Repetição com Variável
de Controle
• Diagrama de Blocos
Laço de Repetição com Variável
de Controle
algoritmo "Pede_Numero"
var
X: inteiro
R: inteiro
inicio
leia (X)
R <- X * 3
escreva (R)
leia (X)
R <- X * 3
escreva (R)
leia (X)
R <- X * 3
escreva (R)
leia (X)
R <- X * 3
escreva (R)
leia (X)
R <- X * 3
escreva (R)
fimalgoritmo
Laço de Repetição com Variável
de Controle
Algoritmo “LOOPING_PARA “
var
R, X, CONT : inteiro
inicio
para CONT de 1 ate 5 passo 1 faca
leia (X)
RX*3
escreva (R)
fimpara
fimalgoritmo
Laço de Repetição com Variável
de Controle
Exemplo de algoritmo que não pode ser resolvido usando o laço
de repetição com variável de controle:
• Faça um algoritmo que leia vários números e que informe
quantos desses números entre 100 e 200 foram digitados.
Quando o valor 0 (zero) for lido o algoritmo deverá cessar sua
execução.
Estrutura de dados - Vetores
A variável simples armazena somente um valor de cada vez.
As matrizes são variáveis que armazenam vários valores ao
mesmo tempo, que possuem os mesmos tipos de dados, sendo
chamadas de estruturas de dados homogêneas.
A matrizes também são chamadas de:
tabelas, arrays, variáveis indexadas, variáveis compostas,
variáveis subscritas ou arranjos.
A Matriz unidimensional é chamada de Vetor.
Estrutura de dados - vetores
Matriz:
Coluna

1
2
Linha  1
2
3
4
3
4
5
Estrutura de dados - vetores
Vetor:
Coluna

1
2
Linha  1
3
4
5
Estrutura de dados - vetores
Exemplo 1:
Crie um programa que calcule e apresente a média geral de uma
turma de 5 alunos.
Nº
Nome Aluno
Média
1
Alvaro
4.5
2
Carla
6.5
3
Felipe
8.0
4
Marcos
3.5
5
Sandra
6.0
Estrutura de dados - vetores
1
2
3
4
5
MEDIA = 4.5 6.5 8.0 3.5 6.0
var
MEDIA : vetor [1..5] de real;
Então:
MEDIA [1] = 4.5
MEDIA [2] = 6.5
MEDIA [3] = 8.0
MEDIA [4] = 3.5
MEDIA [5] = 6.0
Estrutura de dados - vetores
Algoritmo:
1- Criar a variável I para servir de contador, o
vetor MEDIA com 5 posições, e as variáveis
SOMA e MEDTUR;
2- Ler o valor da MEDIA [ I ];
5X 3- Somar MEDIA [ I ] à variável SOMA;
4- Repetir os passos 2 e 3 até que o valor de I
seja maior que 5;
5- Calcular a MEDTUR;
6- Mostrar o valor de MEDTUR.
Estrutura de dados - vetores
algoritmo "MEDIA_TURMA"
var
I : inteiro
SOMA, MEDTUR : real
MEDIA : vetor [1..5] de real
inicio
SOMA <- 0
escreval ("Digite 5 médias")
para I de 1 ate 5 passo 1 faca
leia (MEDIA [ I ])
SOMA <- SOMA + MEDIA [ I ]
fimpara
MEDTUR <- SOMA / 5
escreval ("Média da Turma =", MEDTUR)
fimalgoritmo
Estrutura de dados - vetores
Exemplo 2:
Crie um programa que leia dez elementos de um vetor A.
Construir um vetor B de mesmo tipo, da seguinte forma: se o
índice for par, o valor deverá ser multiplicado por 5, sendo ímpar,
deverá ser somado com 5. Ao final mostrar o conteúdo do vetor
B.
Algoritmo:
1- Criar a variável I para servir de contador, e os vetores A e
B com 10 posições;
2- Ler os 10 valores, e armazená-los em A;
3- Se o índice é par, multiplicar o elemento de A por 5 e
armazená-lo em B; senão somar o elemento de A com 5 e
armazená-lo em B;
4- Mostrar o vetor B;
Estrutura de dados - vetores
algoritmo "TRATA_INDICE"
var
I : inteiro
A, B : vetor [1..10] de inteiro
inicio
escreval ("Digite 10 valores")
para I de 1 ate 10 passo 1 faca
leia (A [ I ])
fimpara
para I de 1 ate 10 passo 1 faca
se ( I mod 2 = 0 ) entao
B [ I ] <- A [ I ] * 5
senao
B [ I ] <- A [ I ] + 5
fimse
escreval ( "B [“ , I , " ] =“ , B[I])
fimpara
fimalgoritmo
Estrutura de dados - vetores
Exemplo 3:
Crie um programa que leia cinco elementos de um vetor A. Calcule
e imprima o total da soma de todos os elementos que sejam
ímpares.
Algoritmo:
1- Criar a variável I para servir de contador, a variável SOMA e
o vetor A com 5 posições;
2- Ler os 5 valores, e armazená-los em A;
3- Se o elemento de A é ímpar, somá-lo à variável SOMA;
4- Mostrar SOMA.
Estrutura de dados - vetores
algoritmo "TRATA_ELEMENTO"
var
I , SOMA : inteiro
A : vetor [1..5] de inteiro
inicio
SOMA <- 0
escreval ("Digite 5 valores")
para I de 1 ate 5 passo 1 faca
leia (A [ I ])
se ( A [ I ] mod 2 <> 0 ) entao
SOMA <- SOMA + A [ I ]
fimse
fimpara
escreva ("Soma =", SOMA)
fimalgoritmo
Download

Algoritmos - WordPress.com