61
Algoritmos e Linguagem de Programação Professor: Mauro Jansen Parte 3 – Pseudocódigo 15/09/2010

Algoritmos e lp parte3-pseudocódigo

Embed Size (px)

Citation preview

Page 1: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Linguagem de Programação

Professor: Mauro Jansen

Parte 3 – Pseudocódigo

15/09/2010

Page 2: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 2Prof. Mauro

Page 3: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 3Prof. Mauro

Pseudocódigo

� Assemelha-se à forma como os programas são escritos.� Para traduzir o pseudocódigo para uma linguagem de

programação, basta conhecer o vocabulário e regras sintáticas da linguagem.

� Busca a rigidez sintática e semântica, porém sem o detalhamento exigido nas linguagens de programação

Forma para a representação de algoritmos rica em detalhes, como a definição dos tipos das

variáveis usadas no algoritmo.

Forma para a representação de algoritmos rica em detalhes, como a definição dos tipos das

variáveis usadas no algoritmo.

Page 4: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 4Prof. Mauro

Estrutura básica� Todo pseudocódigo possui a seguinte estrutura básica:

� As palavras em negrito são palavras reservadas:palavras em português que indicam seções do pseudocódigo ou ações a serem executadas pelo computador (instruções)

Algoritmo <nome do Algoritmo>

Variáveis

<lista de variáveis>

Início

<bloco de comandos>

Fim

Page 5: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 5Prof. Mauro

Estrutura básica

� Na seção Variaveis ou Var declaramos as variáveis

� Entre as palavras Inicio e Fim inserimos a sequência de comandos do nosso algoritmo, que pode conter também referência a variáveis e expressões

� Toda linha de comando termina com “;” (ponto e vírgula) (há exceções para esta regra)

Page 6: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 6Prof. Mauro

Exemplo de pseudocódigo

� Pseudocódigo referente ao problema do maior número:

Algoritmo Maior

Var

num1, num2, maior: inteiro:

Inicio

Leia(num1,num2);

se (num1>num2) então

maior ���� num1;

senão

maior ���� num2;

fimse;

escreva(maior);

Fim

Page 7: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 7Prof. Mauro

Notação usada nas sintaxes

� Ao definirmos a sintaxe de comandos e instruções é usada a seguinte notação:� Palavras em negrito são palavras reservadas� Palavras entre < > são elementos do algoritmo a serem substituídos por nomes ou valores a serem definidos pelo programador

� Elementos entre [ ] são opcionais� Textos entre { } são comentários explicativos do algoritmo e não são executados pelo computador

Page 8: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 8Prof. Mauro

Declaração de variáveis

� Declaração de Variáveis: todas as variáveis que serão utilizadas pelo algoritmo devem ser declaradas entre as palavras reservadas Variaveis (ou Var) e Inicio:

Algoritmo Exemplo

Variaveis

a: Inteiro;

b: Real;

Inicio

<bloco de comandos>

Fim

Page 9: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 9Prof. Mauro

Comando de atribuição (�)

� Armazena um valor em uma variável previamente declarada

� No pseudocódigo, o comando de atribuição é o símbolo “�”

� Sintaxe: � Exemplos:

salario ���� 1200; {variável salario recebe o valor 1200}

nome ���� “Maria”; {variável nome recebe “Maria”`}

media ���� (nota1+nota2)/2; {variável media recebe o

resultado da expressão}

<variável> ���� <valor>;

Page 10: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 10Prof. Mauro

Comando de entrada de dados (Leia)

� Sempre que precisamos que o usuário digite algum dado para ser processado, teremos uma entrada de dados

� O comando usado para receber essa entrada de dados no pseudocódigo é o comando Leia

� Sintaxe:

� Exemplos:Leia salario; {obtém valor digitado e armazena na variável salário}

Lea nome;

Leia nota1,nota2;

Leia <variável>[,<variável>,...];

ou Leia(<variável>[,<variável>,...]);

Page 11: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 11Prof. Mauro

Comando de saída de dados (Escreva)

� Usado para exibir ou retornar qualquer valor ou mensagem ao usuário:� Mensagem de orientação� Valor constante� Valor armazenado em uma variável

� Sintaxe:� Exemplos:

Escreva “Olá Mundo!”;

Escreva 12345;

Escreva media;

Exibe a frase “Olá Mundo!”

Exibe o valor 12345

Exibe o valor da variável media

Escreva <expressão>[,<expr.>,...];

ou Escreva(<expressão>[,<expr.>,...]);

Page 12: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 12Prof. Mauro

Exemplo de algoritmo 1

� Algoritmo que lê duas notas, calcula a média e mostra o resultado:

Algoritmo CalculaMedia

Variáveis

nota1, nota2, media: Real

Início

Escreva “Digite a primeira nota”

Leia nota1

Escreva “Digite a segunda nota”

Leia nota2

media ← (nota1 + nota2)/2

Escreva media

Fim

Nome do Algoritmo

Declaração de

Variáveis

Mensagem de Orientação

Inserção da segunda nota

Mensagem de Orientação

Cálculo da média e atribuição

do resultado à variável media

Exibição do resultado

Inserção da primeira nota

Page 13: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 13Prof. Mauro

� Um algoritmo que lê o salário de uma pessoa, calcula e mostra o valor do novo salário após um aumento de 10%.� Inicialmente, devemos identificar os dados de entrada.

� Neste caso, a entrada consiste no valor do salário.

� Em seguida, identificamos a saída.� Para este problema, a saída é o novo salário.

� O processamento necessário para transformar a entrada na saída é dado pelo cálculo do reajuste (10% do salário) e, em seguida, pelo acréscimo desse valor ao salário.

� Reajuste = salário * 0.10� Novo salário = salário + Reajuste

Exemplo de algoritmo 2

Page 14: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 14Prof. Mauro

Algoritmo NovoSalario

Variáveis

salario, reajuste, novosalario: Real

Início

Escreva “Digite o valor do salario”

Leia salario

reajuste ← salario * 0.10

novosalario ← salario + reajuste

Escreva novosalario

Fim

O processamento poderia ser expresso de maneira simplificada através da fórmula:

novosalario ← salario + salario * 0.10, ou ainda

novosalario ← salario * 1.10

O processamento poderia ser expresso de maneira simplificada através da fórmula:

novosalario ← salario + salario * 0.10, ou ainda

novosalario ← salario * 1.10

Exemplo de algoritmo 2

Page 15: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 15Prof. Mauro

Teste de algoritmos

� Testar ou “depurar” um programa ou algoritmo consiste em analisar os resultados do programa gradativamente, linha por linha, em busca de possíveis erros

� Para isso os ambientes de desenvolvimento oferecem uma ferramenta chamada “debugger”

� Manualmente, dispomos do teste de mesa ou tabela de teste

Page 16: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 16Prof. Mauro

Teste de mesa ou tabela de teste� É uma tabela onde temos:

� Uma coluna para o número da linha do algoritmo� Uma coluna para cada variável (de entrada e saída) do algoritmo

� Uma coluna para comentários

� A cada linha do algoritmo, preenchemos a tabela com o valor das variáveis e comentário do ocorrido

� É útil para analisar o funcionamento de um algoritmo pequeno ou fragmento de um algoritmo maior

Page 17: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 17Prof. Mauro

Teste de mesa ou tabela de teste� Tabela de teste para uma possível execução do algoritmo

da média de duas notas

Mostra a média7.5786

Calcula a média7.5785

Aguarda usuário digitar nota2??84

Solicita que usuário digite nota2??83

Aguarda usuário digitar nota1???2

Solicita que usuário digite nota1???1

Comentáriomedianota2nota1Lin

Page 18: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 18Prof. Mauro

Exercícios de fixação

� Qual a estrutura (formato) básica de um pseudocódigo?

� Em que parte do pseudocódigo declaramos as variáveis?

� Em que parte do pseudocódigo colocamos os comandos?

� Em que consiste o teste de algoritmos?

Page 19: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 19Prof. Mauro

Exercícios de aplicação

� Usando pseudocódigo, faça algoritmos para resolver os seguintes problemas:� Calcular a área de um retângulo� Armazenar dois números em variáveis e trocar os valores das variáveis

� Calcular as raízes de uma equação do segundo grau

� Calcular o custo estimado com combustível em uma viagem de carro

Page 20: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 20Prof. Mauro

Page 21: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 21Prof. Mauro

Estruturas condicionais� São estruturas que permitem a tomada de decisões em função de condições estabelecidas e assim, o algoritmo apresenta ações alternativas.

� A classificação das estruturas de seleção é feita de acordo com o número de condições que devem ser testadas para que se decida qual o caminho a ser seguido. Segundo esta classificação, têm-se dois tipos de estruturas de decisão:� se

� escolha

Page 22: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 22Prof. Mauro

Estrutura SE

� São estruturas de controle de fluxo, que executam um ou vários comandos se a condição testada for verdadeira e, em alguns casos, executam um ou vários comandos se for falsa.

� Podem ser:� Simples

� Compostas

Page 23: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 23Prof. Mauro

Estrutura SE simples

� Um bloco de instruções será executado somente se uma condição for verdadeira. Caso contrário, o fluxo de execução segue para depois do bloco (ou após o FimSe)

� Formato:

� <condição> pode ser uma variável booleana, uma constante (V ou F) ou uma expressão de valor lógico

Se <condição> então

<bloco de comandos>

FimSe

Se <condição> então

<bloco de comandos>

FimSe

Page 24: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 24Prof. Mauro

Estrutura SE simples – exemplo 1

� Algoritmo para solicitar um número e verificar se o número digitado é maior que 10

Algoritmo MaiorQue10

Variáveis

num: Real

Início

Escreva(“Digite um número”)

Leia(num)

Se num>10 então

Escreva(“O número é maior que 10.”)

FimSe

Escreva(“Fim do algoritmo”)

Fim

Page 25: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 25Prof. Mauro

Estrutura SE simples – exemplo 2� Algoritmo CalculaMedia alterado para mostrar se aluno está

aprovado, sendo que a média para aprovação é 7

Algoritmo CalculaMedia

Variáveis

nota1, nota2, media: Real

Início

Escreva(“Digite a primeira nota”)

Leia(nota1)

Escreva(“Digite a segunda nota”)

Leia(nota2)

media ← (nota1 + nota2)/2

Escreva(“Sua média é: “,media)

Se media>=7 então

Escreva(“Você está aprovado”)

FimSe

Fim

Page 26: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 26Prof. Mauro

Estrutura SE composta

� Se a condição for verdadeira, o bloco de comandos 1 será executado. Caso contrário, o bloco de comandos 2 será executado.

� Formato:

� <condição> pode ser uma variável booleana, uma constante (V ou F) ou uma expressão de valor lógico

Se <condição> então

<bloco de comandos 1>

Senão

<bloco de comandos 2>

FimSe

Se <condição> então

<bloco de comandos 1>

Senão

<bloco de comandos 2>

FimSe

Page 27: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 27Prof. Mauro

Estrutura SE composta – exemplo 1

� Algoritmo para solicitar um número e verificar se o número digitado é maior que 10

Algoritmo MaiorQue10

Variáveis

num: Real

Início

Escreva(“Digite um número”)

Leia(num)

Se num>10 então

Escreva(“O número é maior que 10.”)

senão

Escreva(“O número é menor ou igual a 10”)

FimSe

Escreva(“Fim do algoritmo”)

Fim

Page 28: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 28Prof. Mauro

Estrutura SE composta – exemplo 2� Algoritmo CalculaMedia alterado para mostrar se aluno está

aprovado, sendo que a média para aprovação é 7Algoritmo CalculaMedia

Variáveis

nota1, nota2, media: Real

Início

Escreva(“Digite a primeira nota”)

Leia(nota1)

Escreva(“Digite a segunda nota”)

Leia(nota2)

media ← (nota1 + nota2)/2

Escreva(“Sua média é: “,media)

Se media>=7 então

Escreva(“Você está aprovado”)

senão

Escreva(“Você está de recuperação”)

FimSe

Fim

Page 29: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 29Prof. Mauro

Estruturas SE encadeadas

� É quando o bloco de instruções subordinado ao comando se/senão contém outros comandos se/senão (quando temos mais de 2 situações):

Se <condição 1> então

<bloco de comandos 1>

Senão se <condição 2> entao

<bloco de comandos 2>

Senão se <condição 3> entao

<bloco de comandos 3>

...

Senão se <condição N> entao

<bloco de comandos N>

FimSe

Se <condição 1> então

<bloco de comandos 1>

Senão se <condição 2> entao

<bloco de comandos 2>

Senão se <condição 3> entao

<bloco de comandos 3>

...

Senão se <condição N> entao

<bloco de comandos N>

FimSe

Page 30: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 30Prof. Mauro

Estruturas SE encadeadas - exemplo� Algoritmo CalculaMedia alterado para tratar mais uma regra: se a

média for menor que 3, o aluno já estará reprovado, sem direito àrecuperação

Algoritmo CalculaMedia

Variáveis

nota1, nota2, media: Real

Início

Escreva(“Digite a primeira nota”)

Leia(nota1)

Escreva(“Digite a segunda nota”)

Leia(nota2)

media ← (nota1 + nota2)/2

Escreva(“Sua média é: “,media)

Se media>=7 então

Escreva(“Você está aprovado”)

senão se media<3 então

Escreva(“Você está reprovado”)

senão

Escreva(“Você está de recuperação”)

FimSe

Fim

Page 31: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 31Prof. Mauro

Estrutura ESCOLHA� Estrutura de decisão por igualdade, onde temos:

� uma variável a ser testada (variável de escolha)� um ou mais valores constantes a serem comparados com a variável, com um bloco de comandos associado a cada um

� Também é chamada de estrutura CASO� É similar a estruturas SE encadeadas, mas as comparações são só por igualdade

� São úteis em menus ou situações onde as decisões estão centradas em apenas uma variável e valores pré-fixados

Page 32: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 32Prof. Mauro

Estrutura ESCOLHA� Sintaxe:

Escolha <variável>

caso <val.constante 1>:

<bloco de comandos 1>

caso <val.constante 2>:

<bloco de comandos 2>

...

caso <val.constante n>:

<bloco de comandos n>

outrocaso

<bloco de comandos alternativo>

FimEscolha

Escolha <variável>

caso <val.constante 1>:

<bloco de comandos 1>

caso <val.constante 2>:

<bloco de comandos 2>

...

caso <val.constante n>:

<bloco de comandos n>

outrocaso

<bloco de comandos alternativo>

FimEscolha

� <variável> será comparada com o valor constante de cada “caso”� Será executado somente o bloco de comandos abaixo do “caso” onde

houver igualdade entre a variável e o valor constante

Page 33: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 33Prof. Mauro

Estrutura ESCOLHA - exemploAlgoritmo MenuCalculo

Variáveis

num1, num2, opcao: Real

Início

Escreva(“1-Soma”)

Escreva(“2-Subtração”)

Escreva(“3-Multiplicação”)

Escreva(“Digite a sua opção:”)

Leia(opcao)

Escreva(“Digite o primeira numero: ”)

Leia(num1)

Escreva(“Digite o segunda número: ”)

Leia(num2)

Escolha opcao

caso 1

Escreva(“Soma=“,num1+num2)

caso 2

Escreva(“Subtração=“,num1-num2)

caso 3

Escreva(“Multiplicação=“,num1*num2)

outrocaso

Escreva(“Opção inválida”)

FimEscolha

Fim

Page 34: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 34Prof. Mauro

Exercícios

� Faça um algoritmo que leia um número inteiro diferente de zero e diga se este é positivo ou negativo

� Altere o algoritmo anterior para dizer também se o número é igual a zero (use se encadeados)

� Faça uma algoritmo que leia três valores que representam os três lados de um triângulo e verifique:� se o triângulo é válido� Se é um triângulo equilátero, isósceles ou escaleno

Page 35: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 35Prof. Mauro

Exercícios

� Propriedades de um triângulo:� A soma de dois lados não pode ser menor que a do terceiro lado (ou o comprimento de cada lado deve ser menor que a soma dos outros dois lados)

� Equilátero: três lados iguais� Isósceles: dois lados iguais� Escaleno: três lados diferentes

Page 36: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 36Prof. Mauro

Page 37: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 37Prof. Mauro

Estruturas de repetição

� Permitem a repetição de um bloco de instruções por um número vezes pré-determinado ou até a satisfação de uma condição

� Também são chamados de loops (laços)� Tipos de estruturas:

� Repetição contada (estrutura para)� Repetição condicional

� Com teste no início (estrutura enquanto)� Com teste no final (estrutura repita)

Page 38: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 38Prof. Mauro

Estruturas de repetição

� “Laço sem fim” ou deadLock: é quando uma estrutura de repetição fica executando interminavelmente� As estruturas de repetição devem sempre ter um fim, ou seja, devem ter um limite pré-definido de repetições ou alguma condição que faça a repetição parar, caso contrário teremos um loop sem fim ou deadlock

� É uma das causas dos “travamentos” de software (mensagem “Este programa não estárespondendo”)

Page 39: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 39Prof. Mauro

Estrutura de repetição contada

� É utilizada quando conhecemos previamente a quantidade de vezes que queremos executar o bloco de comandos� A quantidade de vezes pode ser um valor constante ou informado pelo usuário

� É representada pelo comando PARA

Page 40: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 40Prof. Mauro

Comando Para (repetição contada)

� Sintaxe:

� Descrição:� <variável>: nome de uma variável do tipo inteiro� <valor inicial>: é o valor inicial que será atribuído à variável� <valor final>: quando a variável for maior ou igual ao valor final,

a repetição termina� <incremento> é o valor que será incrementado à variável a cada

repetição (ao final do bloco de comandos). É opcional; se não for informado, é assumido incremento 1.

Para <variável> de <valor inicial> até <valor final> [passo <incremento>] faça

<bloco de comandos>

FimPara

Para <variável> de <valor inicial> até <valor final> [passo <incremento>] faça

<bloco de comandos>

FimPara

Page 41: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 41Prof. Mauro

Comando Para (exemplo 1)

� Algoritmo que lista os dez primeiros números inteiros positivosAlgoritmo DezPrimeiros

Variáveis

i: Inteiro

Início

Para i de 1 até 10 faça

Escreval(i)

FimPara

Fim

A variável i fará o controle da

repetição, seu valor inicia com

1 e para cada execução do

bloco seu valor aumenta em 1

unidade.

Para cada repetição, basta

mostrar o valor de i, uma vez

que este valor variará de 1 até

10.

Page 42: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 42Prof. Mauro

Comando Para (exemplo 2)

� Algoritmo que lista os números inteiros pares menores ou iguais a um número informado pelo usuário

Algoritmo NumerosPares

Variáveis

i,limite: Inteiro

Início

Escreva(“Listar números pares até: “)

Leia(limite)

Para i de 2 ate limite passo 2 faca

Escreval(i)

FimPara

Fim

Page 43: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 43Prof. Mauro

Estruturas de repetição condicional

� São usadas quando não sabemos previamente a quantidade exata de vezes que queremos executar o bloco de comandos� A quantidade de repetições depende de uma condição (expressão lógica) controlada internamente

� Existem duas estruturas de repetição condicional:� Com teste no início (estrutura enquanto...faça)� Com teste no final (estrutura repita...até)

Page 44: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 44Prof. Mauro

Características da repetição condicional

� As estruturas de repetição condicional caracterizam-se por conter dois blocos de comandos importantes:� PREPARO: um ou mais comandos que afetam a condição para entrar no bloco de repetição ou que preparam variáveis que serão usadas dentro da bloco de comandos

� CONTROLE: um ou mais comandos que afetam a condição para finalizar a repetição

Page 45: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 45Prof. Mauro

Estrutura Enquanto...faça� Sintaxe:

� Uso: repete o bloco de comandos enquanto uma determinada condição (especificada através da expressão lógica) for satisfeita.

� A <expressão lógica> é verificada logo na entrada e a cada repetição. Se for falsa, a execução continua logo após o FimEnquanto

� O FimEnquanto marca o final do bloco de comandos a ser repetido e causa o retorno ao comando Enquanto

Enquanto <expressão lógica> faca

<bloco de comandos>

FimEnquanto

Enquanto <expressão lógica> faca

<bloco de comandos>

FimEnquanto

Page 46: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 46Prof. Mauro

Estrutura Enquanto (exemplo 1)

� Algoritmo para contar de 1 a 10, listando os números na tela

algoritmo “Conta com enquanto”

var i: inteiro

Inicio

i <- 1

enquanto i <= 10 faca

escreval(i)

i <- i + 1

fimenquanto

fimalgoritmo

PREPARO: A variável i fará o

controle da repetição e inicia a

contagem, portanto devemos

inicializá-la com o valor 1

CONTROLE: dentro do laço

deve haver um comando que

afete a expressão lógica. Aqui

incrementamos a variável i, de

modo que quando ela for

maior que 10 a repetição irá

parar

Page 47: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 47Prof. Mauro

Estrutura Enquanto (exemplo 2)

� Algoritmo para somar números digitados pelo usuário, enquanto não for digitado zero

algoritmo “Soma”

var n,soma: real

Inicio

n <- 0

soma <- 0

enquanto n<>0 faca

escreva(“Digite um número (0=fim):”)

leia(n)

soma <- soma + n

fimenquanto

Escreva(“A soma dos numeros é: “,soma)

fimalgoritmo

PREPARO: Aqui inicializamos

a variável com um valor maior

que zero, para entrar no laço e zeramos a variável soma que irá guardar a soma

CONTROLE: o próprio

número digitado pelo usuário

será usado como controle. Se

for digitado zero, a condição

ficará falsa e o laço irá parar

Page 48: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 48Prof. Mauro

Estrutura Repita...Até� Sintaxe:

� Uso: repete o bloco de comandos até que determinada condição (especificada através da expressão lógica) seja satisfeita

� A <expressão lógica> é verificada ao final de cada repetição. Se for verdadeira, a execução continua logo após o Até

� O Até marca o final do bloco de comandos a ser repetido e causa o retorno ao comando repita, caso a expressão lógica seja falsa

Repita

<bloco de comandos>

Até <expressão lógica>

Repita

<bloco de comandos>

Até <expressão lógica>

Page 49: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 49Prof. Mauro

Estrutura Repita (exemplo 1)

� Algoritmo para contar de 1 a 10, listando os números na tela

algoritmo “Contar com repita”

var i: inteiro

Inicio

i <- 1

Repita

escreval(i)

i <- i + 1

até i>10

fimalgoritmo

PREPARO: A variável i fará o

controle da repetição e inicia a

contagem, portanto devemos

inicializá-la com o valor 1

CONTROLE: Aqui

incrementamos a variável i, de

modo que quando ela for maior

que 10 a repetição irá parar

Page 50: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 50Prof. Mauro

Estrutura Repita (exemplo 2)

� Algoritmo para somar números digitados pelo usuário, até que seja digitado zero

algoritmo “Soma”

var n,soma: real

Inicio

soma <- 0

Repita

escreva(“Digite um número (0=fim):”)

leia(n)

soma <- soma + n

Ate n=0

Escreva(“A soma dos numeros é: “,soma)

fimalgoritmo

PREPARO: Aqui apenas

zeramos a variável soma. Não

é necessário prepararmos a

expressão lógica, visto que a

variável de controle será lida

dentro do laço

CONTROLE: o próprio

número digitado pelo usuário

será usado como controle. Se

for digitado zero, a condição

será verdadeira e o laço irá

parar

Page 51: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 51Prof. Mauro

Estrutura Enquanto x Repita� Estruturas tipo Enquanto:

� São úteis quando precisamos de teste desde a entrada no laço

� O bloco de comandos só será executado se a condição for verdadeira logo no início

� A repetição termina quando a expressão lógica for falsa� Estruturas tipo Repita:

� São úteis quando não há necessidade de teste no início� O bloco de comandos será executado sempre, pelo menos uma vez

� A repetição termina quando a expressão lógica for verdadeira

Page 52: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 52Prof. Mauro

Intervenções forçadas na repetição

� Apesar de não ser uma boa prática de programação, algumas linguagens oferecem comandos para a intervenção forçada (retorno ao início ou interrupção) nas estruturas de repetição retorno� Retorno ao início (comando “volte”): faz com que a execução volte ao início do laço (comando enquanto ou repita)

� Interrupção (comando “interrompa”): faz com que a repetição pare (a execução continua no comando após o comando fimenquanto ou até)

� Geralmene esses comandos podem ser usados em qualquer estrutura (para, enqunto ou repita)

Page 53: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 53Prof. Mauro

Retorno ao início (comando “volte”)

� Sintaxe da Enquanto com comando de retorno ao início:

Enquanto <expressão lógica> faca

<bloco de comandos>

se <condição> então

volte

fimse

<Bloco de comandos>

FimEnquanto

Enquanto <expressão lógica> faca

<bloco de comandos>

se <condição> então

volte

fimse

<Bloco de comandos>

FimEnquanto

O comando volte força a “próxima rodada” do laço: o fluxo de execução volta para o início do laço (comando Enquanto)Numa estrutura “para” a variável será incrementada

Page 54: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 54Prof. Mauro

Interrupção forçada (comando “interrompa”)

� Sintaxe da Enquanto com comando de interrupção forçada:

Enquanto <expressão lógica> faca

<bloco de comandos>

se <condição> então

interrompa

fimse

<Bloco de comandos>

FimEnquanto

<comando>...

Enquanto <expressão lógica> faca

<bloco de comandos>

se <condição> então

interrompa

fimse

<Bloco de comandos>

FimEnquanto

<comando>...

O comando interrompa faz com que a repetição termine e o fluxo de execução continue no comando após o laço (após o FimEnquanto)

Page 55: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 55Prof. Mauro

Combinando estruturas� Você pode combinar as estruturas estudadas (sequencial, condicional e repetição), uma dentro do bloco de comandos de outra� Condicional dentro de condicional (estruturas se encadeadas) (já estudado)

� Condicional dentro de repetição� Repetição dentro de uma condicional� Repetição dentro de outra repetição (estruturas de repetição encadeadas)

� ..etc.

� Vejamos alguns exemplos a seguir...

Page 56: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 56Prof. Mauro

Condicional dentro de repetição

� Ex: listar os números de 1 a 100, destacando os múltiplos de 10Algoritmo “0 a 100 destacando pares”

Variáveis

i: Inteiro

Início

Para i de 1 ate 100 faca

Escreva(i)

se i mod 10 = 0 entao

escreval(“ (múltiplo de 10)”)

senao

escreval(“”)

fimse

FimPara

Fim

Estrutura PARA contando de

1 a 100

Testa se o número é divisível

por 10 (resto da divisão por 10

é zero)

Page 57: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 57Prof. Mauro

Estruturas de repetição encadeadas

� Ex: imprimir a tabuada de multiplicar de 1 até 10

Algoritmo “tabuada de multiplicar”

Variáveis

n1,n2: Inteiro

Início

Para n1 de 1 ate 10 faca

Escreva(“Tabuada de “,n1)

Para n2 de 1 ate 10 faca

escreval(n1,” x “,n2,” = “,n1*n2)

FimPara

escreval(“--------------”)

FimPara

Fim

Laço dos multiplicandos (n1

varia de 1 até 10)

Laço dos multiplicadores (n2

varia de 1 até 10)

Page 58: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 58Prof. Mauro

Cuidados ao combinar estruturas

� Ao combinar estruturas, você nunca deve “cruzar” uma estrutura com outra:

Para i de 1 ate 100 faca

Escreva(i)

se i mod 10 = 0 entao

escreval(“ (múltiplo de 10)”)

FimPara

fimse

Enquanto i<100

Escreva(i)

se i mod 10 = 0 entao

escreval(“ (múltiplo de 10)”)

FimEnquanto

fimse

Page 59: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 59Prof. Mauro

Cuidados ao combinar estruturas

� Quando combinadas, elas devem sempre estar contidas uma dentro da outra:

Para .....

Enquanto

Repita

Escreva(i)

se .... entao

<comandos>

senao

<comandos>

fimse

Ate <condição>

FimEnquanto

FimPara

Page 60: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 60Prof. Mauro

Exercícios – faça algoritmos para:

� Multiplicar dois números usando somas repetidas

� Solicitar uma quantidade pré-determinada de números e calcular a soma e média entre esses números

� Calcular a soma dos números ímpares entre um intervalo informado

� Calcular o fatorial de um número

Page 61: Algoritmos e lp parte3-pseudocódigo

Algoritmos e Ling.de Programação

Pseudocódigo 61Prof. Mauro

Exercício-desafio:� Solicitar os nomes e notas dos alunos de uma turma, mostrar o nome

e nota dos alunos com a maior e menor nota e calcular a média entre as notas da turma. O fim da turma será indicado quando o usuário digitar “FIM” para o nome do aluno

� Melhorar o algoritmo acima para efetuar os mesmos cálculos para todas as turmas de uma escola, mostrando também a maior e menor nota da escola e a nota média da escola

� Listar os números primos entre dois números informados pelo usuário. Dicas:

� Número primo é o número que só é divisível por ele mesmo e por 1.

� Para saber se um número é primo você precisará usar um laço e testar, com a função MOD, se ele é divisível por todos os números menores que ele

� Listar os números da série de Fibonacci de 1 até um número informado pelo usuário. Dica:

� A séria de Fibonacci é uma lista de números cujos dois primeiros númereos são iguais a 1 e cada número seguinte é igual à soma dos dois números anteriores: 1, 1, 2, 3, 5, 8, ..