Estruturas de Repetição Comando Enquanto-FimEnquanto

Documentos relacionados
Estruturas de Repetição Comando while do... done

Estruturas de Repetição

Estruturas Condicionais

Algoritmos e Estruturas de Dados I. Universidade Federal de São João del-rei Pedro Mitsuo Shiroma Sala 119 Bloco 3

Aula 4 Oficina de Programação Algoritmos - Parte 3. Profa. Elaine Faria UFU

Estruturas de Repetição. Prof. Paulo Cesar F. de Oliveira, BSc, PhD

Amanda Gondim de Oliveira

Variáveis Compostas Homogêneas Vetores

Estruturas de Repetição. João Medeiros FATERN

INFORMÁTICA APLICADA AULA 06 ALGORITMOS

Estruturas de Repetição

COMANDOS DE REPETIÇÃO (ENQUANTO, REPITA E PARA)

Para começar... Algoritmos e Lógica de Programação 80 horas // 4 h/semana. Para começar... Comando REPITA (repeat) Comando REPITA (repeat)

Estruturas de Controle de Fluxo Estruturas de Repetição. Givanaldo Rocha

Algoritmos e Programação

Português Estruturado (VISUALG) Repetição

Comandos de Entrada. Lógica de Programação. Prof. Kleber Rezende

ESTRUTURAS DE REPETIÇÃO

ALGORITMOS E PROGRAMAÇÃO Estruturas de repetição. Andreza Leite andreza.leite@univasf.edu.br

UNIVERSIDADE FEDERAL DO PAMPA CAMPUS BAGÉ ALGORITMOS E PROGRAMAÇÃO. Estruturas de repetição. Prof. Alex Camargo

... contador = contador + 1; //contador++; ... <fim_da_estrutura_de_repetição> soma = 0; <estrutura_de_repetição_com_variável_x> soma = soma + x;

COMANDOS DE REPETIÇÃO (ENQUANTO)

E X E R C Í C I O S 01. Sobre o comando CASO, marque as alternativas como verdadeira (V) ou falsa (F):

ESTRUTURAS DE REPETIÇÃO - PARTE 1

Sistemas Operacionais e Introdução à Programação. Introdução à Lógica de Programação: estruturas de repetição

Computação eletrônica: Estruturas de repetição

Laços de repetição for, while, do-while

CAPÍTULO 5 ESTRUTURAS DE REPETIÇÃO

Algoritmos e Programação I

AULA 07. HABILIDADES TRABALHADAS: Desenvolver algoritmos utilizando laços a partir da leitura de fluxogramas ou algoritmos em portugol.

ESTRUTURAS DE CONTROLE ESTRUTURAS DE REPETIÇÃO

Fundamentos da programação de computadores.

PDA - Repetição. Estruturas de repetição. Slides adaptação de Deise Saccol

Estrutura Condicional

Estruturas de Controle de Fluxo

INFORMÁTICA APLICADA AULA 05 ALGORITMOS

CCO 016 / COM 110 Fundamentos de Programação

Estruturas de Repetição

Programação de Computadores IV. Estruturas de repetição Slides cedidos por Bruno Augusto Dorta Marques

Linguagem C ESTRUTURA DE CONTROLE

Aula 7 Oficina de Programação Estruturas de Repetição no C. Profa. Elaine Faria UFU

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: estruturas de repetição While / Do While / For

Linguagem Computacional. Estruturas de Controle: Estruturas de Repetição. Prof. Dr. Adriano Cansian Prof. Dr. Leandro Alves Neves

Programação II. Victor Amorim dos Santos

Recursividade. Estrutura de Dados. Prof. Kleber Rezende

Algoritmos I Aula 10 Estrutura de controle: repetição

Introdução a programação Comandos de repetição

LÓGICA DE PROGRAMAÇÃO. Estrutura de Repetição Determinada e Indeterminada. Sérgio Carlos Portari Júnior

Então, poderia basicamente dizer que em um algoritmo a sintaxe seria a seguinte:

Modulo 4: while do while (limites de variáveis)

Aula 5 - Mais C e repetição

Treinamento Olimpíada Brasileira de Informática

08/05/2012. Tipos de dados. Tipos de dados. Elementos Básicos. Tipos de dados. Elementos Básicos Tipos de dados. Dados e seus tipos:

69) Acrescentar uma mensagem de VALOR INVÁLIDO no exercício [68], caso o segundo valor informado seja ZERO.

Lista 02 Vetores. escreval("agora, digte um nome a ser buscado.") leia(nome)

ESTRUTURAS DE CONTROLE - LAÇOS OU MALHAS DE REPETIÇÃO

Estruturas de Repetição

Estrutura de Repetição C++

A resposta apresentada em aula, no quadro, (em Chapin e/ou Português Estruturado) está correta?

Algoritmos. Prof. Jonatas Bastos Site:

Algoritmos e Estruturas de Dados I

Linguagem C Estruturas de Repetição

ESTRUTURAS DE REPETIÇÃO - PARTE 2

Universidade Estadual de Mato Grosso do Sul Ciência da Computação Algoritmos e Estruturas de Dados I (AED-I)

Linguagem C (repetição)

Aula 5 ESTRUTURAS DE REPETIÇÃO (WHILE)

Estruturas de Repetição. Estruturas de Repetição. Estruturas de Repetição. Estruturas de Repetição. Estruturas de Repetição Condicionais

Aula 14: Repetição (Parte 2)

UNIVERSIDADE ESTADUAL VALE DO ACARAÚ EXERCÍCIOS RESOLVIDOS Estruturas de Repetição

Processamento de Dados aplicado à Geociências. AULA 8: Comandos de repetição Repita-até

Introdução à Programação. Estruturas de Repetição

Programação de Computadores III

LINGUAGEM DE PROGRAMAÇÃO

Programação de Computadores:

Algoritmos e Lógica de Programação 80 horas // 4 h/semana. Exercício... Para começar... Resolução... Para começar... Para começar...

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição

1 TECNOLOGIA ELEMENTAR CAPÍTULO 4 E-books PCNA. Vol. 1 TECNOLOGIA ELEMENTAR CAPÍTULO 4 ROTINAS DE REPETIÇÃO. Página 1

Estruturas de Repetição

MC-102 Aula 06 Comandos Repetitivos

5 Comando de Seleção Simples e Composta

LINGUAGEM C: COMANDOS DE REPETIÇÃO

Sumário. Ciência da Computação. Prof. Dr. Leandro Alves Neves. Aula 10. Algoritmos e Programação. Enquanto (Teste no início) Repeat (Teste no final)

INFORMÁTICA APLICADA AULA 05 LINGUAGEM DE PROGRAMAÇÃO C++

Programação Básica. Estrutura de um algoritmo

Comandos de Repetição -Laços

Controle de Fluxo Comandos de repetição: while e do-while

Estruturas de Repetição

Estrutura de Repetição

Aula 8: Estruturas de Repetição: O comando while

Algoritmos e Programação

Resumindo As estruturas de repetição são utilizadas quando necessitamos realizar comandos diversas vezes

Aula 5 Controle do Fluxo de Execução

Estruturas de Repetição

Programação de Computadores III

Algoritmos e Técnicas de Programação. Professora: Luciana Faria

9. Comando de repetição com variável de controle (para.. de.. até.. faça)

Disciplina de Algoritmos e Programação

Comandos de repetição while

Algoritmos e Programação

Transcrição:

Estruturas de Repetição Comando Enquanto-FimEnquanto Algoritmos e Técnicas de Programação Prof. Kleber Rezende

Considerações Iniciais Quando não temos condições de precisar quantas vezes um determinado conjunto de comandos precisa ser executado, devemos utilizar outras Estruturas de Repetição, como: ENQUANTO...FACA ou REPITA...ATE.

Considerações Iniciais Por exemplo, suponha que estamos oferecendo ao usuário 3 opções de menu sendo que uma dessas 3 opções seria a opção de SAIR do programa. Caso desejemos que o usuário possa executar várias vezes as opções dispostas no menu, não temos como adivinhar quando o usuário irá optar por SAIR do algoritmo Sendo assim, não podemos limitar a repetição a um número de vezes.

Considerações Iniciais Considere um problema mais específico onde necessitamos fazer a leitura de vários nomes de pessoas e a cada nome que é lido devemos escrever na tela a frase "O nome digitado foi NOME". A princípio isso deve ser feito inúmeras vezes e quando o usuário digitar um NOME igual a FIM o algoritmo deve parar.

Considerações Iniciais Da mesma maneira que no exemplo anterior, não podemos definir quando o usuário irá digitar FIM, e não temos como precisar a quantidade de vezes que o algoritmo deverá repetir esse conjunto de ações.

Considerações Iniciais Nessas situações, a repetição de um conjunto de comandos é determinada pela avaliação de uma expressão lógica, ou seja: caso o valor da expressão lógica seja verdadeiro o conjunto de comandos continua a ser executado, caso o valor da expressão lógica seja falso a estrutura de repetição é abortada.

Considerações Iniciais A estrutura de repetição ENQUANTO FACA FIMENQUANTO é utilizada da seguinte maneira: ENQUANTO (<EXPRESSÃO LÓGICA>) comando 1 comando 2... comando n FIMENQUANTO

Considerações Iniciais Antes de entrar na estrutura de repetição, a expressão lógica é avaliada; Caso o resultado da mesma seja VERDADEIRO os comandos que estão dentro da estrutura serão executados e ao final volta-se a avaliar a expressão lógica novamente. Caso o resultado da expressão lógica seja falso, o algoritmo sai da estrutura de repetição.

Exemplos Considere o algoritmo abaixo: Linha 1... Linha 2... Linha 3... Linha 4... Linha 5... Linha 6... Linha 7... Linha 8... Linha 9... Linha 10... Linha 11... algoritmo "exemplo" variavel cadeia nome inicio nome "" enquanto (nome <> "fim") escreva("digite o nome") leia(nome) escreva("o nome digitado foi ", nome) fimenquanto Fimalgoritmo

Exemplos Ao chegar na linha 5, o algoritmo irá inicializar a variável NOME com o valor comeco. Linha 1... Linha 2... Linha 3... Linha 4... Linha 5... Linha 6... Linha 7... Linha 8... Linha 9... Linha 10... Linha 11... algoritmo "exemplo" variavel cadeia nome inicio nome "" enquanto (nome <> "fim") escreva("digite o nome") leia(nome) escreva("o nome digitado foi ", nome) fimenquanto Fimalgoritmo

Exemplos Na linha 6 temos o início da estrutura de repetição sendo que a expressão lógica que está sendo avaliada é NOME <> "fim", ou seja, está sendo avaliado se o conteúdo da variável NOME é diferente da palavra "fim". Linha 1... Linha 2... Linha 3... Linha 4... Linha 5... Linha 6... Linha 7... Linha 8... Linha 9... Linha 10... Linha 11... algoritmo "exemplo" variavel cadeia nome inicio nome "" enquanto (nome <> "fim") escreva("digite o nome") leia(nome) escreva("o nome digitado foi ", nome) fimenquanto Fimalgoritmo

Exemplos No nosso exemplo, o valor da variável NOME é igual a começo, então ao avaliar se NOME <> "fim", teremos que "comeco" <> "fim" é igual a VERDADEIRO, e então os comandos das linhas 7, 8 e 9 serão executados. Linha 1... Linha 2... Linha 3... Linha 4... Linha 5... Linha 6... Linha 7... Linha 8... Linha 9... Linha 10... Linha 11... algoritmo "exemplo" variavel cadeia nome inicio nome "" enquanto (nome <> "fim") escreva("digite o nome") leia(nome) escreva("o nome digitado foi ", nome) fimenquanto Fimalgoritmo

Exemplos Ao chegar no final da estrutura de repetição (linha 10), o algoritmo irá retornar ao início dessa estrutura para avaliar novamente a expressão lógica NOME <> "fim" (linha 6). Linha 1... Linha 2... Linha 3... Linha 4... Linha 5... Linha 6... Linha 7... Linha 8... Linha 9... Linha 10... Linha 11... algoritmo "exemplo" variavel cadeia nome inicio nome "comeco" enquanto (nome <> "fim") escreva("digite o nome") leia(nome) escreva("o nome digitado foi ", nome) fimenquanto Fimalgoritmo

Exemplos Em C, nosso algoritmo seria representado assim: main() { char nome[51]; strcpy (nome, "comeco"); } while (strcmp (nome, "fim")!= 0) { printf("digite o nome: "); scanf("%s", nome); printf("o nome digitado foi %s\n", nome); }

Estrutura de Repetição Fluxograma Início nome "" nome!= "fim"? Verdadeiro Escreva "digite o nome: " Falso Leia nome Escreva " ("o nome digitado foi " + nome " Fim

Transformando comando PARA em comando ENQUANTO A estrutura de repetição ENQUANTO deve ser utilizada, especialmente, quando não podemos determinar o número de vezes que o conjunto de comandos será repetido; Porém, nada impede que utilizemos uma expressão lógica que avalie o valor de um número, simulando dessa forma uma estrutura de repetição PARA.

Transformando comando PARA em comando ENQUANTO Suponha que desejemos realizar um conjunto de operações 10 vezes, como por exemplo, pedir a idade de 10 pessoas e calcular a soma dessas 10 idades.

Transformando comando PARA em comando ENQUANTO Utilizando a estrutura de repetição PARA teríamos o seguinte algoritmo: algoritmo "exemplo" variaveis inteiro cont, idade, soma inicio soma 0 para cont 1 ate 10 faca escreva("digite a idade") leia(idade) soma soma + idade fimpara escreva("soma das idades = ", soma) Fimalgoritmo

Transformando comando PARA em comando ENQUANTO Caso desejássemos escrever esse mesmo algoritmo utilizando a estrutura de repetição ENQUANTO, teríamos que nos preocupar em avaliar uma expressão lógica que garanta que o contador chegue ao número máximo de 10 vezes, ou seja, o contador deve ser sempre menor ou no máximo igual a 10.

Transformando comando PARA em comando ENQUANTO Além disso, é importante ressaltar que diferentemente da estrutura PARA, a estrutura de repetição ENQUANTO deve se preocupar em incrementar o seu contador, ou seja, a cada iteração devemos fazer com que o contador aumente o seu valor em um.

Transformando comando PARA em comando ENQUANTO Veja o algoritmo a seguir: Linha 1... Linha 2... Linha 3... Linha 4... Linha 5... Linha 6... Linha 7... Linha 8... Linha 9... Linha 10... Linha 11... Linha 12... Linha 13... Linha 14... algoritmo "exemplo" variaveis inteiro cont, idade, soma inicio soma 0 cont 1 enquanto (cont <= 10) escreva("digite a idade") leia(idade) soma soma + idade cont cont + 1 fimenquanto escreva("soma das idades = ", soma) Fimalgoritmo

Transformando comando PARA em comando ENQUANTO Note que na linha 6 é necessário que inicializemos o contador cont com o valor 1 Linha 1... Linha 2... Linha 3... Linha 4... Linha 5... Linha 6... Linha 7... Linha 8... Linha 9... Linha 10... Linha 11... Linha 12... Linha 13... Linha 14... algoritmo "exemplo" variaveis inteiro cont, idade, soma inicio soma 0 cont 1 enquanto (cont <= 10) escreval("digite a idade") leia(idade) soma soma + idade cont cont + 1 fimenquanto escreva("soma das idades = ", soma) Fimalgoritmo

Transformando comando PARA em comando ENQUANTO E na linha 11, a variável cont deve ser incrementada, ou seja, aumentada em 1. Linha 1... Linha 2... Linha 3... Linha 4... Linha 5... Linha 6... Linha 7... Linha 8... Linha 9... Linha 10... Linha 11... Linha 12... Linha 13... Linha 14... algoritmo "exemplo" variaveis inteiro cont, idade, soma inicio soma 0 cont 1 enquanto (cont <= 10) escreval("digite a idade") leia(idade) soma soma + idade cont cont + 1 fimenquanto escreva("soma das idades = ", soma) Fimalgoritmo

Transformando comando PARA em comando ENQUANTO Pensando na execução do algoritmo anterior, veremos que a cada iteração, a variável cont é testada na linha 7 e enquanto a mesma tiver um valor menor ou igual a 10 (valores 1, 2,3, 4, 5, 6, 7, 8, 9,10) o algoritmo irá executar as linhas 8, 9, 10 e 11. Assim que o contador (variável cont) atingir o valor 11 a expressão lógica cont <= 10 será considerada falsa e o algoritmo irá pular para a linha 13.

Transformando comando PARA em comando ENQUANTO Mas afinal, qual seria a vantagem de utilizarmos a estrutura ENQUANTO para esse tipo de situação, considerando que já possuímos a estrutura de repetição PARA? A vantagem está no fato da estrutura de repetição ENQUANTO nos permitir utilizar expressões lógicas compostas, ou seja, podemos trabalhar com contadores ao mesmo tempo em que avaliamos outras variáveis do nosso algoritmo.

Exemplo Suponhamos que necessitamos realizar um algoritmo semelhante ao do exemplo anterior; Porém agora além de limitarmos o número máximo de pessoas em 10, queremos também limitar a soma das idades dessas pessoas.

Exemplo Por exemplo, o algoritmo deve solicitar as idades das pessoas, enquanto o número de pessoas não chegar a 10, e também enquanto a soma de idade dessas pessoas não ultrapassar 100 anos. Caso uma dessas condições não seja obedecida a estrutura de repetição deverá ser abortada.

Exemplo Vejamos como ficaria esse algoritmo : algoritmo "exemplo" variaveis inteiro cont, idade, soma inicio soma 0 cont 1 enquanto (cont <= 10) e (soma < 100) faca escreva("digite a idade") leia(idade) soma soma + idade cont cont + 1 fimenquanto escreva("numero de pessoas", cont - 1) escreva("soma das idades = ", soma) Fimalgoritmo

Exercício Comentado Sabemos que um determinado elevador tem espaço para no máximo 7 pessoas e pode suportar transportar até 500 kg. Como você desenvolveria um algoritmo para permitir a entrada de pessoas nos elevadores considerando essas condições e utilizando a estrutura de repetição ENQUANTO?

Solução Possível algoritmo "exemplo" variavel inteiro cont, peso, pesototal inicio pesototal 0 cont 1 enquanto ((cont <= 7) e (pesototal <= 500)) escreva("peso do proximo a subir no elevador") leia(peso) pesototal pesototal + peso cont cont + 1 fimenquanto escreva("numero de pessoas que subiram", cont - 1) escreva("peso total do elevador = ", pesototal) Fimalgoritmo

Problema!!!!! A solução anterior apresenta um problema. Você consegue identificar qual seria esse problema? O problema existente é que mesmo depois de realizar a verificação do pesototal, é possível que a soma do pesototal com o próximo peso exceda 500 quilos. Isso acontece pois dentro da estrutura de repetição o pesototal é somado com o valor do peso que foi recentemente lido, e o resultado dessa soma somente é verificado para a realização da próxima iteração.

Teste de Mesa Por exemplo, considere a execução do algoritmo para os seguintes valores: cont Peso Pesototal Pesototal <= 500 1 100 100 VERDADEIRO 2 100 200 VERDADEIRO 3 120 320 VERDADEIRO 4 120 440 VERDADEIRO 5 120 560 FALSO

Problema!!!!! Ao chegar na 4a iteração, quando o contador cont está com o valor 4, o peso lido será de 120 quilos e o pesototal será de 440. Ao sair dessa iteração, o algoritmo irá avaliar se o pesototal é menor ou igual a 500, e o resultado será verdadeiro. Entrando novamente na estrutura de repetição e indo para a 5a iteração, o peso lido será de 120 quilos e o pesototal irá para 560 quilos, excedendo o limite do elevador.

Solução Alternativa Uma alternativa seria fazer a avaliação antecipada da soma do pesototal e do peso da próxima pessoa que iria entrar no elevador.

Solução Alternativa algoritmo "exemplo" variavel inteiro cont, peso, pesototal inicio pesototal 0 cont 1 escreva("peso do proximo a subir no elevador") leia(peso) enquanto ((cont <= 7) e (pesototal + peso <= 500)) pesototal pesototal + peso cont cont + 1 escreva("peso do proximo a subir no elevador") leia(peso) fimenquanto escreva("numero de pessoas que subiram", cont - 1) escreva("peso total do elevador = ", pesototal) Fimalgoritmo