Professional Documents
Culture Documents
Dijkstra
Algoritmos
• Definição:
Nota 1,
Nota 2,
Aprovado Reprovado
Nota 3
Soma
Nota 1 + Nota
2 + Nota 3 Fim
Algoritmos
• Tipos de algoritmos:
– Algoritmo descritivo:
• Expresso em forma de texto;
• O texto deve conter todos os passos a serem
executados, incluindo as entradas, decisões e
saídas;
• Pode ser representado em linguagem natural ou
em alguma linguagem técnica estruturada
(pseudolinguagem ou pseugocódigo ou portugol);
Algoritmos
• Tipos de algoritmos:
– Algoritmo descritivo:
• Exemplo: utilizando o mesmo algoritmo para
verificar se o aluno foi aprovado:
1. Obter as notas 1, 2 e 3.
2. Efetuar o cálculo da soma.
3. Se a soma for maior ou igual a 60 o aluno
está aprovado.
4. Se a soma for menor que 60 o aluno está
reprovado.
Algoritmos
• Tipos de algoritmos:
– Algoritmo descritivo:
• Perceba que o exemplo anterior foi escrito em
linguagem natural, sem preocupação com
formalização ou estruturação.
Algoritmos
• Tipos de algoritmos:
– Algoritmo codificado:
• Expresso em uma linguagem de programação
específica;
• Representa o próprio programa;
Algoritmos
• Tipos de algoritmos:
– Algoritmo codificado:
• Exemplo: ainda para verificar se o aluno foi
aprovado:
Algoritmos
• Tipos de algoritmos:
– Algoritmo codificado:
• O algoritmo apresentado na tela anterior foi
escrito na linguagem de programação Java;
• A entrada dos dados é feita através de caixas de
texto apresentadas ao usuário;
• A saída (mensagem informando se o aluno está
aprovado ou reprovado) é feita no console do
sistema.
Algoritmos
• Formas de representação:
– Um algoritmo pode ser representado de
diversas formas;
– A escolha da melhor forma dependerá da
finalidade do algoritmo;
– Manuais, receitas e guias, por exemplo, são
geralmente escritos em linguagem natural;
Algoritmos
• Formas de representação:
– Esquemas e modelos são geralmente
representados através de uma forma gráfica
(fluxograma);
– Para a programação, a melhor forma de
representar algoritmos é da forma descritiva,
utilizando-se uma linguagem estruturada,
conhecida por pseudolinguagem, pseudocódigo
ou portugol;
Algoritmos
• Formas de representação:
– O pseudocódigo está bastante próximo das
linguagens de programação sequenciais e, ao
mesmo tempo, da linguagem natural;
– O pseudocódigo possui regras para sua escrita,
isso o diferencia da linguagem natural;
Algoritmos
• Formas de representação:
– De agora em diante, vamos adotar o
pseudocódigo como forma de representação.
Para mais detalhes sobre as outras formas,
consulte Cunha; Melo (2009, pp. 11-15).
Algoritmos
• Estrutura de um algoritmo em pseudocódigo:
Programa <nome>
<declarações de variáveis>
<subalgoritmos>
Início
<comandos>
Fim
Observação: Por hora, não se preocupe com a possibilidade de divisão por zero.
Atividades
3. Dois candidatos concorreram a uma eleição sindical. Além dos votos dados a cada um dos
candidatos, foram computados também votos nulos e brancos. Faça um programa que leia o
nome de cada candidato e a quantidade de votos que ele obteve. O programa deverá ler
também a quantidade de votos nulos e brancos. O resultado a ser apresentado pelo
programa deverá ser conforme abaixo:
Total de votos: 150
Total de votos válidos: 100
Votos brancos: 30
Votos nulos: 20
Resultado absoluto por candidato:
João da Silva: 45
Joaquim Manoel: 55
Resultado relativo em relação aos votos válidos:
João da Silva: 45 %
Joaquim Manoel: 55 %
Resultado relativo em relação ao total de votos:
João da Silva: 30 %
Joaquim Manoel: 37 %
Estruturas de decisão
• Agora, vamos aprender como montar
estruturas de decisão em um algoritmo;
• Para tanto, precisaremos montar expressões
condicionais (condições);
• Uma expressão condicional é uma expressão
que resulta um valor lógico, portanto,
verdadeiro ou falso;
Estruturas de decisão
• Para fazer expressões condicionais precisamos
conhecer os operadores relacionais com os
quais podemos trabalhar:
Operador Descrição
= Igual a
> Maior que
< Menor que
>= Maior ou igual a
<= Menor ou igual a
<> Diferente de
Estruturas de decisão
• Exemplos de expressões condicionais:
Expressão Significado
a=b Testa se o valor da variável a é igual ao valor da variável b
a>b Testa se o valor da variável a é maior que o valor da variável b
a <= b Testa se o valor da variável a é menor ou igual ao valor da variável b
a <> b Testa se o valor da variável a é diferente do valor da variável b
Estruturas de decisão
• Além dos operadores relacionais, precisamos
conhecer os operadores lógicos que podem
estar presentes entre duas expressões
condicionais:
Operador Descrição
e Avalia duas expressões lógicas e retorna verdadeiro se e
somente se todas elas forem verdadeiras
ou Avalia duas expressões lógicas e retorna verdadeiro se pelo
menos uma delas for verdadeira
não Nega (inverte) uma expressão lógica
Estruturas de decisão
• Exemplos de expressões condicionais com
operadores lógicos:
Expressão Significado
(a = b) e (a = c) Testa se o valor da variável a é igual ao valor da variável b e
também se o valor da variável a é igual ao valor da variável c. O
retorno será verdadeiro somente se as duas expressões simples
retornarem verdadeiro.
(a = b) e (a = c) Testa se o valor da variável a é igual ao valor da variável b e
também se o valor da variável a é igual ao valor da variável c. O
retorno será verdadeiro se pelo menos uma delas for verdadeira.
não (a = b) Inverte o resultado da expressão (a = b). Portanto, se o valor da
variável a for igual ao valor da variável b, o resultado da
expressão será falso, caso contrário, será verdadeiro.
Estrutura condicional simples
• A estrutura condicional simples para
algoritmos, é a seguinte:
...
Se (Expressão_lógica) Então
<comandos para expressão lógica verdadeira>
FimSe
...
Estrutura condicional simples
• Um exemplo:
Programa Exemplo
Inteiro a;
Início
Escreva("Digite um número:");
Leia(a);
Se (a >= 0) Então
Escreva("O número não é negativo!");
FimSe
Se (a < 0) Então
Escreva("O número é negativo!");
FimSe
Fim
Estrutura condicional composta
• O exemplo do slide anterior utilizou duas
estruturas condicionais simples, porém,
podemos abrir mão de uma estrutura
condicional composta, conforme abaixo:
...
Se (Expressão_lógica) Então
<comandos para expressão lógica verdadeira>
Senão
<comandos para expressão lógica falsa>
FimSe
...
Estrutura condicional composta
• Um exemplo:
Programa Exemplo
Inteiro a <- 0;
Início
Escreva("Digite um número:");
Leia(a);
Fim
Atividades
1. Faça um programa que receba as medidas dos lados de um quadrilátero e retorne: (1) a
área do quadrilátero e (2) uma mensagem informando se esse quadrilátero é um
quadrado.
2. Faça um programa que, a partir da idade de um nadador, informada pelo usuário, faça a
sua classificação como abaixo:
Infantil A: 5 – 7 anos Juvenil B: 14 – 17 anos
Infantil B: 8 – 10 anos Adulto: 18 anos ou mais
Juvenil A: 11 – 13 anos
Atividades
3. Uma empresa precisa de um programa para calcular a premiação de seus vendedores. O
usuário irá digitar a média de vendas (R$) e o programa deverá calcular o valor da premiação
com base em um percentual, definido na tabela abaixo. O valor da premiação tem um teto de
R$ 2.000,00 e deve ser apresentado pelo programa no final da execução.
Média de vendas (R$) Premiação (%)
De 0 a 5.000,00 0
De 5.000,01 a 10.000,00 1
De 10.000,01 a 20.000,00 2
De 20.000,01 a 30.000,00 3
Acima de 30.000,00 4
Estrutura condicional composta
• Encadeamento de estruturas condicionais:
– É perfeitamente possível utilizar uma estrutura
condicional dentro de outra, aninhando-as para
obter o resultado desejado;
– As boas práticas de programação dizem que o
aninhamento de grau maior que três torna o
programa complexo e deve ser evitado;
Estrutura condicional composta
• Encadeamento de estruturas condicionais:
– Um exemplo:
Programa Exemplo
Inteiro a <- 0, b <- 0;
Início
Escreva("Digite dois números:");
Leia(a, b);
Se (a > b) Então
Escreva("O primeiro número é maior que o segundo");
Senão
Se (a < b) Então
Escreva("O primeiro número é menor que o segundo");
Senão
Escreva("Os números são iguais");
FimSe
FimSe
Fim
Estrutura condicional composta
• O SenãoSe:
– A estrutura condicional
Se...Então...Senão...FimSe exige um
fechamento para cada Se. Além disso, o Senão
não permite a utilização de uma expressão
lógica depois dele;
– Porém, há casos em que pode ser interessante
fazer um novo teste lógico logo após um Senão,
sem encadear as estruturas explicitamente;
Estrutura condicional composta
• O SenãoSe:
– O SenãoSe é um comando que permite que seja
colocada uma nova expressão lógica (um novo
teste) logo após o senão;
– O FimSe continua sendo utilizado, porém, só
para fechar o Se. Ou seja, não se utiliza FimSe
para fechar o SenãoSe;
Estrutura condicional composta
• O SenãoSe:
– Um exemplo:
Programa Exemplo
Inteiro a <- 0, b <- 0;
Início
Escreva("Digite dois números:");
Leia(a, b);
Se (a > b) Então
Escreva("O primeiro número é maior que o segundo");
SenãoSe (a < b) Então
Escreva("O primeiro número é menor que o segundo");
Senão
Escreva("Os números são iguais");
FimSe
Fim
Estrutura condicional composta
• O SenãoSe:
– Outro exemplo:
Programa Exemplo
Inteiro preco <- 0, desconto <- 0;
Início
Escreva("Digite o preço do produto:");
Leia(preco);
Se (preco >= 100) Então
desconto <- preco * 0.05;
SenãoSe ((preco > 100) E (preco <= 500)) Então
desconto <- preco * 0.1;
SenãoSe (preco > 500) Então
desconto <- preco * 0.2;
FimSe
Escreva("Preço líquido: ", (preco – desconto));
Fim
Estrutura condicional de
múltipla escolha
• Em situações em que o número de escolhas é
grande, pode ser interessante utilizar uma
estrutura condicional de múltipla escolha;
• A estrutura é:
...
Escolha <variáve>
Caso <valor 1>: <lista de comandos 1>
Caso <valor 1>: <lista de comandos 2>
Caso <valor 1>: <lista de comandos 3>
...
Caso Senão: <lista de comandos n>
FimEscolha
...
Estrutura condicional de
múltipla escolha
• Veja um exemplo onde só se utiliza uma linha
de comando para cada caso de escolha:
...
Escolha mes
Caso 1: descricaoMes <- "Janeiro";
Caso 2: descricaoMes <- "Fevereiro";
Caso 3: descricaoMes <- "Março";
...
Caso 12: descricaoMes <- "Dezembro";
FimEscolha
...
Estrutura condicional de
múltipla escolha
• Para mais de uma linha de comando para cada
caso de escolha, faça conforme o exemplo abaixo:
...
Escolha mes
Caso 1:
descricaoMes <- "Janeiro";
mensagem <- "Primeiro mês do ano";
Caso 2:
descricaoMes <- "Fevereiro";
mensagem <- "Segundo mês do ano";
...
Caso 12:
descricaoMes <- "Dezembro";
mensagem <- "Terceiro mês do ano";
FimEscolha
...
Estrutura condicional de
múltipla escolha
• Vamos a um exemplo completo onde o
programa deve retornar o preço de um
produto de acordo com o código digitado pelo
usuário:
Código Preço (R$)
1 5,00
2 10,00
3 12,50
4 8,00
Estrutura condicional de
múltipla escolha
// Usando SenãoSe
Programa CalculaPreco
Inteiro codigo <- 0;
Real preco <- 0;
Início
Escreva("Digite o código do produto:");
Leia(codigo);
Se (codigo = 1) Então
preco <- 5.00;
SenãoSe (codigo = 2) Então
preco <- 10.00;
SenãoSe (codigo = 3) Então
preco <- 12.50;
SenãoSe (codigo = 4) Então
preco <- 8.00;
FimSe
Escreva("O preço é: ", preco);
Fim
Estrutura condicional de
múltipla escolha
// Usando Escolha
Programa CalculaPreco
Inteiro codigo <- 0;
Real preco <- 0;
Início
Escreva("Digite o código do produto:");
Leia(codigo) ;
Escolha codigo
Caso 1: preco <- 5.00;
Caso 2: preco <- 10.00;
Caso 3: preco <- 12.50;
Caso 4: preco <- 8.00;
FimEscolha
Escreva("O preço é: ", preco);
Fim
Atividades
1. Faça um algoritmo que receba como parâmetro o número de um mês do ano e retorne o
nome desse mês ao usuário. Se o usuário digitar um valor inválido, ele deve ser informado.
Utilize a estrutura Se...Então...SenãoSe...Senão...FimSe.
2. Refaça o algoritmo da atividade anterior agora utilizando a estrutura
Escolha...Caso...CasoSenão...FimEscolha.
Estruturas de repetição
• Para começar, uma questão para discussão:
– Com o que vimos até agora, se você fosse
solicitado a desenvolver um programa para ler o
nome de um usuário e escrevê-lo na tela 100
vezes, o que faria?
Estruturas de repetição
• É comum que os programas ou partes deles
precisem ser executados por várias vezes;
• As estruturas de repetição permitem que os
programas façam esta execução utilizando um
mesmo trecho. Quando isso acontece,
dizemos que o programa tem um laço ou loop;
Estruturas de repetição
• Utilizando nossa questão inicial desse
capítulo, você concorda que ler o nome do
usuário é uma ação a ser executada uma única
vez?
• Porém, escrever o nome desse usuário é uma
ação única, bem definida, que deve ser
repetida por 100 vezes;
• Então, nesse caso, só uma parte do programa
deve ter repetição.
Estruturas de repetição
• Tipos de estruturas de repetição:
– Repetição controlada por variável;
– Repetição condicional com teste no início;
– Repetição condicional com teste no fim.
Repetição controlada por
variável
• Esse tipo de repetição é ideal para ser
utilizado quando os comandos precisam ser
repetidos por um número de vezes dado por
um limite inicial e um limite final;
• Ou seja, tendo-se os limites inicial e final, o
trecho de repetição sempre será repetido
entre esses limites;
Repetição controlada por
variável
• Estrutura:
...
Para <variável> De <início> Até <fim> Passo <incremento> Faça
<comandos>
FimPara
...