INF1005 – Programação 1
Aula 02: 03/01/2012 – Algoritmos e Ciclo de Desenvolvimento
2012.1
Introdução à Algoritmos
INF 1005 e INF1004 - Programação I
Pontifícia Universidade Católica
Departamento de Informática
1
Algoritmo: Conceito
Sequência finita e não ambígua de passos para a
solução de um problema.
Em um algoritmo pode-se ter:
– tomada de decisões
– repetição de passos (iteração)
Diferentes algoritmos podem levar a solução de um
mesmo problema:
– exemplo: como se vestir de manhã? Primeiro colocar a calça ou
a camisa?
2
1
INF1005 – Programação 1
Aula 02: 03/01/2012 – Algoritmos e Ciclo de Desenvolvimento
2012.1
Algoritmos: Seqüência
Exemplo
– receita de bolo
3
Algoritmo: Tomada de Decisão
É fundamental que seja possível tomar diferentes
decisões baseado em condições que são avaliadas em
tempo de execução.
Padrão de sintaxe a ser usado na “Linguagem Natural”:
se condicao_teste então
ação(ões) a ser tomada se condicao_teste for verdadeira
senão
ação(ões) a ser tomada se condicao_teste for falsa
fimse
4
2
INF1005 – Programação 1
Aula 02: 03/01/2012 – Algoritmos e Ciclo de Desenvolvimento
2012.1
Algoritmo: Tomada de Decisão
Decidir se determinados passos devem ser executados
ou não
– filtro
Exemplo
– selecionar a quantidade de ovos
– solução:
» se quiser bolo mais macio então
acrescente 2 ovos
5
Algoritmo: Tomada de Decisão
Decidir qual conjunto de passos devem ser executados
– categorização
Exemplo
– escolher o tipo de açúcar
– solução:
» se bolo for para diabéticos então
utilizar adoçante
» senão
utilizar açúcar refinado
6
3
INF1005 – Programação 1
Aula 02: 03/01/2012 – Algoritmos e Ciclo de Desenvolvimento
2012.1
Algoritmo: Repetição
Precisamos de mecanismos de programação que nos
permitam requisitar que um conjunto de instruções seja
repetidamente executado, até que uma determinada
condição seja alcançada:
– REPETIÇÕES SÃO PROGRAMADAS ATRAVÉS DA
CONSTRUÇÃO DE LAÇOS (OU CICLOS).
Padrão de sintaxe a ser usado na “Linguagem Natural”:
enquanto condicao_execucao faça
ação(ões) a ser tomada se condicao_execucao for verdadeira
fimenquanto
7
Algoritmo: Repetição
Repetir um determinado conjunto de passos.
Exemplo (continuando na arte culinária!):
– preparar uma lasanha
– solução
» montagem da lasanha
coloque
coloque
coloque
coloque
uma
uma
uma
uma
camada
camada
camada
camada
de
de
de
de
molho
massa
presunto
queijo
» repita o processo acima quantas vezes desejar
– problema!!!!
8
4
INF1005 – Programação 1
Aula 02: 03/01/2012 – Algoritmos e Ciclo de Desenvolvimento
2012.1
Formas de Representação de um
Algoritmo
Linguagem Natural: Os algoritmos são expressos diretamente em
linguagem natural (o português, por exemplo).
Fluxograma: Representação gráfica que emprega formas
geométricas padronizadas para indicar as diversas ações e
decisões que devem ser executadas para resolver o problema.
Pseudocódigo: Emprega uma linguagem intermediária entre a
linguagem natural e uma linguagem de programação para
descrever algoritmos.
Linguagem de Programação: Método padronizado para
expressar instruções para um computador. É um conjunto de
regras sintáticas e semânticas usadas para definir um programa de
computador.
9
Exemplo 1
Faça um algoritmo que leia 2 números inteiros e
imprima a diferença entre o primeiro e o segundo
número.
Passos da solução:
– identificação da entrada de dados
» 2 números inteiros
– identificação da saída
» 1 número inteiro representando a diferença entre os 2 números
obtidos na entrada
– descrição do algoritmo
10
5
INF1005 – Programação 1
Aula 02: 03/01/2012 – Algoritmos e Ciclo de Desenvolvimento
2012.1
Exemplo 1
Descrição do algoritmo (versão 1):
1.
2.
3.
4.
obter o primeiro número inteiro com o usuário
obter o segundo número inteiro com o usuário
calcular a diferença do primeiro número para o segundo
exibir o resultado da diferença
11
Exemplo 1
Problemas:
– Como obter os números com o usuário? Por que meio?
– Como guardar os números que o usuário forneceu?
– Como identificar qual foi o primeiro valor e qual foi o segundo
valor fornecido?
12
6
INF1005 – Programação 1
Aula 02: 03/01/2012 – Algoritmos e Ciclo de Desenvolvimento
2012.1
Exemplo 1
Descrição do algoritmo (versão 2):
1. obter o primeiro número inteiro com o usuário e armazená-lo
na caixa chamada numero1
2. obter o segundo número inteiro com o usuário e armazená-lo
na caixa chamada numero2
3. calcular a diferença e armazená-la na caixa chamada
diferenca
diferenca numero1 - numero2
4. exibir o conteúdo da caixa chamada diferenca
numero1
numero2
diferenca
13
Exemplo 1
Descrição do algoritmo (versão 3):
1. solicitar ao usuário que informe o primeiro número inteiro
2. obter o primeiro número inteiro com o usuário e armazená-lo
na caixa chamada numero1
3. solicitar ao usuário que informe o segundo número inteiro
4. obter o segundo número inteiro com o usuário e armazená-lo
na caixa chamada numero2
5. calcular a diferenca e armazená-la na caixa chamada
diferenca
diferenca numero1 - numero2
6. exibir o conteúdo da caixa chamada diferenca
numero1
numero2
diferenca
14
7
INF1005 – Programação 1
Aula 02: 03/01/2012 – Algoritmos e Ciclo de Desenvolvimento
2012.1
Exemplo 1
Descrição do algoritmo (versão 4):
1.
2.
3.
4.
5.
6.
solicitar ao usuário que informe o primeiro número inteiro
obter numero1
solicitar ao usuário que informe o segundo número inteiro
obter numero2
diferenca numero1 - numero2
exibir diferenca
numero1
numero2
diferenca
15
Exemplo 2
Problema: A partir de 3 notas de um aluno, calcular sua
média aritmética e escrever na tela se ele foi aprovado
ou reprovado, levando em conta que a média para
aprovação deve ser pelo menos 5.0.
16
8
INF1005 – Programação 1
Aula 02: 03/01/2012 – Algoritmos e Ciclo de Desenvolvimento
2012.1
Exemplo 2
Linguagem Natural:
1.
2.
3.
4.
5.
Obter as 3 notas das provas do aluno.
Calcular a média aritmética das 3 notas.
Comparar a média com o valor 5.0.
Se for maior ou igual, escrever “aprovado”.
Caso contrário, escrever “reprovado”.
17
Exemplo 2
Fluxograma:
Início
Leia (nota1,nota2, nota3)
media <- (nota1 + nota2 + nota3)/3.0
sim
media>=5.0?
Escreva(“Aluno aprovado)
não
Escreva(“Aluno reprovado)
Fim
18
9
INF1005 – Programação 1
Aula 02: 03/01/2012 – Algoritmos e Ciclo de Desenvolvimento
2012.1
Exemplo 2
Pseudocódigo:
Variáveis: armazenam
Informações necessárias
para solução do
problema
variaveis
media, nota1, nota2, nota3
inicio
leia nota1, nota2 e nota3
media = (nota1+nota2+nota3)/3
se (media >= 5) entao
escreva “aluno aprovado”
senao
escreva “aluno reprovado”
fim
fim
19
Exemplo 2
Linguagem de Programação:
#include <stdio.h>
int main(void)
{
float media, nota1, nota2, nota3;
printf("Entre com a nota da p1:");
scanf("%f", &nota1);
printf("Entre com a nota da p2:");
scanf("%f", &nota2);
printf("Entre com a nota da p3:");
scanf("%f", &nota3);
media = (nota1 + nota2 + nota3)/3.0;
if (media >= 5.0)
printf("Aprovado!\n");
else
printf("Reprovado!\n");
return 0;
}
10
20
INF1005 – Programação 1
Aula 02: 03/01/2012 – Algoritmos e Ciclo de Desenvolvimento
2012.1
Exemplo 3
Escreva um algoritmo que fica recebendo como entrada
a matricula e duas notas (P1 e P2) dos alunos de uma
turma enquanto a matrícula do aluno for maior que 0.
Para cada aluno, seu algoritmo deve calcular a média
dele na disciplina. Como uma das saídas, seu algoritmo
deve imprimir a matricula do aluno, seu média e a
mensagem “Aluno aprovado” se a média dele for maior
ou igual a 5.0 ou “Aluno reprovado”, caso contrário.
Após a entrada de alunos chegar ao fim, a média da
turma deve ser calculada e exibida como saída.
21
Exemplo 3 – Solução Proposta em
Linguagem Natural
1. Declarar e inicializar uma variável chamada somaMedias com o valor 0.
2. Declarar e inicializar uma variável que conta o número de alunos da turma.
Inicialmente este valor é 0.
3. Ler matricula de um aluno.
4. Enquanto matricula>0 faça
4.1. Ler e armazenar nota1, nota2
4.2. Calcular media do aluno: mediaAlun = (nota1+nota2)/2.0
4.3. Escrever matricula e a media do aluno (mediaAlun)
4.4. se mediaAlun >5 então
4.4.1. Escrever “aluno aprovado”,
4.4.2. senão
4.4.2.1. Escrever “aluno reprovado”
4.4.3. fimse
4.5. Aumentar de 1 unidade o valor do contador dos alunos: contAlun <- contAlun +1
4.6. Acumular o valor da media do aluno: somaMedias <- somaMedias + mediaAlun
4.7. Ler uma nova matricula
4.8. fimenquanto
5. Calcular média da turma: mediaTurma <- somaMedias / contAlun
6. Escrever media da turma
22
11
INF1005 – Programação 1
Aula 02: 03/01/2012 – Algoritmos e Ciclo de Desenvolvimento
2012.1
Exercícios
Escreva em linguagem natural uma solução algorítmica
para cada um dos problemas apresentados.
23
Exercícios
1.
2.
3.
Escreva um algoritmo que dado o raio de um círculo,
calcula o volume da esfera com este raio. Sabe-se que
4
3
o volume da esfera é dado por volume = 3 * π * r
Escreva um algoritmo que pede para o usuário
fornecer o tempo total em segundos que ele levou para
percorrer uma maratona. Seu algoritmo deve
apresentar como saída o tempo equivalente no formato
hora minuto segundo.
Escreva um algoritmo que recebe dois números
inteiros como entrada e exibe, como saída, a soma, o
produto, a diferença, o quociente e o resto entre estes
dois números.
24
12
INF1005 – Programação 1
Aula 02: 03/01/2012 – Algoritmos e Ciclo de Desenvolvimento
2012.1
Exercícios
4.
5.
6.
Modifique o algoritmo da questão 3 (anterior) para que
ele leia também uma opção que define qual das
operações que o usuário quer executar. Esta alteração
faz com que o usuário possa apenas executar uma das
operações aritméticas.
Escreva um algoritmo que recebe dois números como
entrada e imprime, como saída, qual a relação entre
esses dois números: se são “iguais”, “maior que” ou
“menor que”.
Escreva um algoritmo que recebe 3 números inteiros
como entrada e exibe, como saída, os números em
ordem crescente.
25
Exercícios
7.
8.
Escreva um algoritmo que recebe um número inteiro
como entrada e exibe, como saída, se o número é par
ou é ímpar.
Escreva um algoritmo que recebe como entrada um
número de dias decorrido em um evento, fornecido
pelo usuário, e exiba como saída o mesmo valor
expresso em numero de semanas e numero de dias.
Por exemplo, se um usuário fornecer o valor 17, o
programa deve imprimir 2 e 3, pois 17 dias
correspondem a 2 semanas e 3 dias.
26
13
INF1005 – Programação 1
Aula 02: 03/01/2012 – Algoritmos e Ciclo de Desenvolvimento
2012.1
Exercícios
9.
Considerando a existência de notas (cédulas) nos
valores R$ 100, R$ 50, R$ 20, R$ 10, R$ 5, R$ 2 e R$
1, escreva um algoritmo que capture um valor inteiro
em reais (R$) e determine o menor número de notas
para se obter o montante fornecido. O seu algoritmo
deve exibir o número de notas para cada um dos
valores de nota existentes.
27
14
Download

Introdução à Algoritmos - Departamento de Informática