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 duas claras em neve 2. Adicionar duas gemas 3. Adicionar uma xícara de açucar 4. Adicionar duas colheres de margarina 5. Adicionar uma xícara de farinha de trigo 6. Adicionar uma colher de chá de fermento 7. Adicionar uma xícara de chocolate em pó 8. Levar à batedeira até formar uma massa homogênea 9. Colocar numa forma e levar ao forno em fogo brando 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 • Fluxograma: Dica: 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ó executará se média 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 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 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 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 fim enquanto expressão booleana 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. Exemplos com Repetições variaveis f, n inicio leia n f=1 enquanto(n > 1) faça f=f*n n=n-1 fim escreva f fim