INF1005: Programação I
Algoritmos e Pseudocódigo
Tópicos Principais • • • • • • •
Definição de Algoritmo Exemplos Básicos Formas de representação Condicionais Exemplos com Condicionais Repetições Exemplos com Repetições
Definição de Algoritmo
• Um algoritmo é uma sequência de ações que resolve um problema.
Problema
Algoritmo
Definição de Algoritmo • Mais formalmente: Um algoritmo é uma sequência finita de instruções bem definidas e não ambíguas, cada uma das quais pode ser executada mecânicamente num período de tempo finito e com uma quantidade de esforço finito.
Exemplos Básicos •
Receita de um bolo de chocolate: 1.
Bater ater duas duas clar claras as em neve neve
2.
Adici dicion onar ar duas duas gem gemas
3.
Adic Ad icio iona narr u uma ma xíca xícara ra de açuc açucar ar
4.
Adic Ad icio iona narr dua duass col colhe here ress d de e marg margar arin inaa
5.
Adic Ad icio iona narr uma uma xíca xícara ra de de far farin inha ha de de trig trigo o
6.
Adic Ad icio iona narr u uma ma colh colher er de de chá chá d de e fer ferme ment nto o
7.
Adic Ad icio iona narr u uma ma xíca xícara ra de choc chocol olat ate e em em pó pó
8.
Levar Levar à b bate atedei deira ra até até formar formar uma massa massa homogê homogênea nea
9.
Coloca Colocarr numa numa forma forma e levar levar ao forn forno o em fogo fogo br brand ando o
Exemplos Básicos •
Para trocar um pneu de um carro: 1. Afrouxar ligeiramente as porcas 2. Suspender o carro com o macaco 3. Retirar as porcas e o pneu 4. Colocar o pneu reserva 5. Apertar as porcas 6. Abaixar o carro 7. Dar o aperto final nas porcas
Formas de Representação
• 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.
Formas de Representação • 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.
Formas de Representação
• Linguagem natural:
1. Obter as 3 notas das provas do aluno 2. Calcular a média aritmética das 3 notas 3. Comparar a média com o valor 5.0 4. Se for maior ou igual, escrever “aprovado” 5. Caso contrário, escrever “reprovado”
Formas de Representação • Fluxograma:
Formas de Representação • Fluxograma:
bug
Formas de Representação • Pseudocódigo: 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
Formas de Representação • Pseudocódigo: 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
armazenam informações necessárias para solução do problema
Formas de Representação • Problema: A partir das três notas de um aluno, calcular sua média aritmética e determinar se ele foi aprovado, vai fazer prova final ou foi reprovado. O aluno é aprovado se tem média maior ou igual a 5.0, é reprovado se tem média menor que 3.0 e tem que fazer prova final se não cai em nenhum dos casos anteriores.
Formas de Representação • Fluxograma: OBS: Tem um erro nesse diagrama. Quem consegue ver?
Formas de Representação Dica:
• Fluxograma:
O erro está aqui
Formas de Representação • Pseudocódigo:
variaveis media, nota1, nota2, nota3 inicio leia nota1, nota2 e nota3 media = (nota1+nota2+nota3)/3 se (media >= 5) entao escreva “aluno aprovado” senao se (media >= 3) entao escreva “aluno em prova final” senao escreva “aluno reprovado” fim fim fim
Condicionais • Em diversos momentos, nós precisamos controlar a execução de um bloco de instruções, só permitindo sua execução quando uma condição for verdadeira.
Condicionais • Exemplo: 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
Condicionais • Exemplo:
escreva só só executará se média for for maior ou igual a 5
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
Condicionais se (media >= 5) entao escreva “aluno aprovado” fim
Condicionais se (media >= 5) entao escreva “aluno aprovado” fim
se (condição verdadeira) entao instrução 1 instrução 2 ... fim
Condicionais • Podemos tratar também quando uma condição é falsa
Executa quando condição verdadeira
se (media >= 5) entao escreva “aluno aprovado” senao escreva “aluno reprovado” fim
Condicionais • Podemos tratar também quando uma condição é falsa
Executa quando condição falsa
se (media >= 5) entao escreva “aluno aprovado” senao escreva “aluno reprovado” fim
Condicionais • Podemos incluir condicionais dentro dos blocos de instruções de condicionais
Bloco executa apenas quando média < 5
variaveis media, nota1, nota2, nota3 inicio leia nota1, nota2 e nota3 media = (nota1+nota2+nota3)/3 se (media >= 5) entao escreva “aluno aprovado” senao se (media >= 3) entao escreva “aluno em prova final” senao escreva “aluno reprovado” fim fim
Testes Condicionais • Podemos incluir testes condicionais dentro dos blocos de instruções de testes condicionais Instrução executa apenas quando média < 5 e média >= 3
variaveis media, nota1, nota2, nota3 inicio leia nota1, nota2 e nota3 media = (nota1+nota2+nota3)/3 se (media >= 5) entao escreva “aluno aprovado” senao se (media >= 3) entao escreva “aluno em prova final” senao escreva “aluno reprovado” fim fim
Testes Condicionais • Podemos incluir testes condicionais dentro dos blocos de instruções
Instrução executa apenas quando média < 3
variaveis media, nota1, nota2, nota3 inicio leia nota1, nota2 e nota3 media = (nota1+nota2+nota3)/3 se (media >= 5) entao escreva “aluno aprovado” senao se (media >= 3) entao escreva “aluno em prova final” senao escreva “aluno reprovado” fim fim
Testes Condicionais • Outra forma de escrever o pseudocódigo anterior: variaveis media, nota1, nota2, nota3 inicio leia nota1, nota2 e nota3 media = (nota1+nota2+nota3)/3 se (media >= 5) entao escreva “aluno aprovado” senao se (media >= 3) entao escreva “aluno em prova final” senao escreva “aluno reprovado” fim fim fim
variaveis media, nota1, nota2, nota3 inicio leia nota1, nota2 e nota3 media = (nota1+nota2+nota3)/3 se (media >= 5) entao escreva “aluno aprovado” senao se (media >= 3) entao escreva “aluno em prova final” senao escreva “aluno reprovado” fim fim
Expressões Booleanas • A expressão que escrevemos até agora para testar se uma condição é verdadeira chama-se expressão booleana.
• Uma expressão booleana sempre gera um resultado verdadeiro ou falso.
Expressões Booleanas •
usaremos os seguintes formatos de expressões booleanas:
-
média > 5 (média maior que 5?) média < 5 (média menor que 5?) média >= 5 (média maior ou igual a 5?) média <= 5 (média menor ou igual a 5?) média != 5 (média diferente de 5?) média == 5 (média igual a 5?)
Combinando Expressões Booleanas • Nós podemos combinar expressões booleanas de duas formas
• Essas combinações que nós veremos geram um resultado verdadeiro ou falso.
Combinando Expressões Booleanas • Usando a conjunção e se(media < 5 e media >= 3) entao escrever “em prova final” fim
Combinando Expressões Booleanas • Usando a conjunção e se(media < 5 e media >= 3) entao escrever “em prova final” fim Expressão 1 Falso Falso soFasl Verdadeiro Verdadeiro dd
Expressão 2 Falso Verdadeiro Falso Verdadeiro
Resultado Falso Falso Falso Verdadeiro
Combinando Expressões Booleanas • Usando a disjunção ou se(nota == A ou nota == B) entao escrever “passou com louvor” fim
Combinando Expressões Booleanas • Usando a disjunção ou se(nota == A ou nota == B) entao escrever “passou com louvor” fim Expressão 1 Falso Falso soFasl Verdadeiro Verdadeiro dd
Expressão 2 Falso Verdadeiro Falso Verdadeiro
Resultado Falso Verdadeiro Verdadeiro Verdadeiro
Exemplos com Condicionais • Problema: Escreva um pseudocódigo que obtém as 3 notas de um aluno, calcula sua média e caso o aluno tenha sido aprovado, escreva na tela “Aprovado”. O aluno é aprovado se ele teve média maior ou igual a 5 e nenhuma nota menor que 3.
Exemplos com Condicionais variaveis media, nota1, nota2, nota3 inicio leia nota1, nota2 e nota3 media = (nota1+nota2+nota3)/3 se (media >= 5 e nota1 >= 3 e nota2 >= 3 e nota3 >= 3) entao escreva “Aprovado” fim fim
Exemplos com Condicionais • Problema: Escreva um pseudocódigo que obtém as 3 notas de um aluno, calcula sua média e caso o aluno esteja em prova final, escrever “Prova final”. O aluno fica em prova final se ele teve média menor que 5 ou se tirou menos que 3 em uma de suas provas.
Exemplos com Condicionais variaveis media, nota1, nota2, nota3 inicio leia(nota1, nota2, nota3) media = (nota1+nota2+nota3)/3 se (media < 5 ou nota1 < 3 ou nota2 < 3 ou nota3 < 3) entao escreva “Prova final” fim fim
Repetições • Existem diversos problemas que, para resolvê-los, precisamos executar uma sequência de instruções várias vezes.
• Para programar uma repetição, precisamos criar um laço (loop).
Repetições • Uma forma de criar uma repetição é usar a palavra enquanto. enquanto(expressão booleana) faça instrução 1 instrução 2 ... fim
Repetições • Uma forma de criar uma repetição é usar a palavra enquanto. enquanto(expressão booleana) faça instrução 1 instrução 2 ... instruções executam executam fim enquanto expressão booleana for for verdadeira
Repetições • Para escrever os números 0, 1 e 2 na tela: numero = 0 enquanto(numero < 3) faça escrever numero numero = numero + 1 fim
Repetições • Para escrever os números 0, 1 e 2 na tela: numero = 0 enquanto(numero < 3) faça escrever numero numero = numero + 1 fim Valor do número
0
Tela do Computador
Repetições • Para escrever os números 0, 1 e 2 na tela: numero = 0 enquanto(numero < 3) faça escrever numero numero = numero + 1 fim Valor do número
0
Tela do Computador
Repetições • Para escrever os números 0, 1 e 2 na tela: numero = 0 enquanto(numero < 3) faça escrever numero numero = numero + 1 fim Valor do número
0
Tela do Computador
0
Repetições • Para escrever os números 0, 1 e 2 na tela: numero = 0 enquanto(numero < 3) faça escrever numero numero = numero + 1 fim Valor do número
1
Tela do Computador
0
Repetições • Para escrever os números 0, 1 e 2 na tela: numero = 0 enquanto(numero < 3) faça escrever numero numero = numero + 1 fim Valor do número
1
Tela do Computador
0
Repetições • Para escrever os números 0, 1 e 2 na tela: numero = 0 enquanto(numero < 3) faça escrever numero numero = numero + 1 fim Valor do número
1
Tela do Computador
01
Repetições • Para escrever os números 0, 1 e 2 na tela: numero = 0 enquanto(numero < 3) faça escrever numero numero = numero + 1 fim Valor do número
2
Tela do Computador
01
Repetições • Para escrever os números 0, 1 e 2 na tela: numero = 0 enquanto(numero < 3) faça escrever numero numero = numero + 1 fim Valor do número
2
Tela do Computador
01
Repetições • Para escrever os números 0, 1 e 2 na tela: numero = 0 enquanto(numero < 3) faça escrever numero numero = numero + 1 fim Valor do número
2
Tela do Computador
012
Repetições • Para escrever os números 0, 1 e 2 na tela: numero = 0 enquanto(numero < 3) faça escrever numero numero = numero + 1 fim Valor do número
3
Tela do Computador
012
Repetições • Para escrever os números 0, 1 e 2 na tela: numero = 0 enquanto(numero < 3) faça escrever numero numero = numero + 1 fim Valor do número
3
Tela do Computador
012
Repetições • Para escrever os números 0, 1 e 2 na tela: numero = 0 enquanto(numero < 3) faça escrever numero numero = numero + 1 fim Valor do número
3
Tela do Computador
falso
012
Exemplos com Repetições • Problema: Escreva um pseudocódigo que lê o número de alunos de uma turma e depois para cada aluno, lê a suas 3 notas da prova e no final escreve a média da turma.
Exemplos com Repetições variaveis num_alunos, i media, mediaTurma, nota1, nota2, nota3 inicio leia num_alunos i=0 mediaTurma = 0 enquanto(i < num_alunos) faça leia nota1, nota2 e nota3 media = (nota1+nota2+nota3)/3 mediaTurma = mediaTurma + media i=i+1 fim mediaTurma = mediaTurma / num_alunos escrever mediaTurma fim
Exemplos com Repetições • Problema: Ler um número não negativo e escrever na tela seu fatorial.