Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade Federal da Grande Dourados Faculdade de Ciências Exatas e de Tecnologias Curso de Bacharelado em Sistemas de Informação Algoritmos e programação Comandos while e do...while Profª Janne Oeiras Lachi 1 Plano de aula ` Estrutura de repetição na Linguagem C: ` Comando while ` Comando do...while Laço de repetição condicional pré-teste ` Em Português estruturado usa os comandos: enquanto, faça e fim_enquanto ` Sintaxe do comando: enquanto (<condição>) faça comando 1 comando 2 ... comando n fim_enquanto Exemplo 1 ` Escreva um algoritmo que leia dois números inteiros. Enquanto o primeiro número for menor que o segundo, incremente o primeiro com 2 unidades e o segundo número com 1 unidade. Ao término do algoritmo, imprima os novos valores dos números. programa novo_valor var x, y: inteiro início escreva “Informe dois numeros inteiros: ” leia x, y enquanto (x < y) faça x Å x +2 y Å y + 1 fim_enquanto escreva “O novo valor de x eh: ”, x escreva “O novo valor de y eh: ”, y fim Exemplo 1: execução da repetição com o comando enquanto Simulação:Exemplo: x ← 1 y ← 5 enquanto (x < y) faça x ← x + 2 y ← y + 1 fim_enquanto x y condição .v. .v. .v. .v. 1 5 3 6 5 7 7 8 9 9 .f. Valores iniciais Valores obtidos dentro do enquanto Valores informados pelo usuário A saída do algoritmo neste caso vai ser: O novo valor de x eh: 9 O novo valor de y eh: 9 Comando while: sintaxe while (condição) comando; while (condição) { comando1; comando2; ... } Quando você tiver 1 comando dentro do bloco. Quando você tiver mais de 1 comando dentro do bloco, não esqueça de usar as chaves para delimitar o bloco. Comando while: atenção! while (condição) comando; while (condição) { comando1; comando2; ... } Não existe ; após a condição Exemplo 1 ` Escreva um algoritmo que leia dois números inteiros. Enquanto o primeiro número for menor que o segundo, incremente o primeiro com 2 unidades e o segundo número com 1 unidade. Ao término do algoritmo, imprima os novos valores dos números. programa novo_valor var x, y: inteiro início escreva “Informe dois numeros inteiros: ” leia x, y enquanto (x < y) faça x Å x +2 y Å y + 1 fim_enquanto escreva “O novo valor de x eh: ”, x escreva “O novo valor de y eh: ”, y fim Exemplo 1: código em Linguagem C ` Escreva um algoritmo que leia dois números inteiros. Enquanto o primeiro número for menor que o segundo, incremente o primeiro com 2 unidades e o segundo número com 1 unidade. Ao término do algoritmo, imprima os novos valores dos números. #include <stdio.h> #include <stdlib.h> int main() { int x, y; printf("Informe dois numeros inteiros: "); scanf("%d%d", &x, &y); while (x < y) { x = x +2; y = y + 1; } printf(“\nO novo valor de x eh:%d", x); printf(“\nO novo valor de y eh:%d", y); system("pause"); return 0; } Note que o bloco do while possui 2 comandos dentro dele. Por essa razão precisamos de { e } enquanto (x < y) faça x Å x +2 y Å y + 1 fim_enquanto Exemplo 2 ` Elaborar um algoritmo que receba como entrada um número inteiro qualquer, em seguida multiplique o valor de entrada por 3 e apresente o resultado. Realizar a execução dos passos anteriores cinco vezes. Exemplo 2: solução com o “para” ` Elaborar um algoritmo que receba como entrada um número inteiro qualquer, em seguida multiplique o valor de entrada por 3 e apresente o resultado. Realizar a execução dos passos anteriores cinco vezes. programa MULT_3 var N, R, I : inteiro início para I de 1 até 5 passo 1 faça escreva “Informe um número inteiro:” leia N R Å N * 3 escreva R fim_para fim Exemplo 2: solução com “enquanto” programa MULT_3 var N, R, I : inteiro início I Å 1 enquanto (I <=5) faça escreva “Informe um número inteiro:” leia N R Å N * 3 escreva R I Å I + 1 fim_enquanto fim ` Note que podemos resolver este problema também com o comando enquanto ... fim_enquanto Observe que neste caso é necessário inicializar a variável I que controla o laço e incrementá-la explicitamente dentro do laço. Exemplo 2: código em Linguagem C ` Elaborar um algoritmo que receba como entrada um número inteiro qualquer, em seguida multiplique o valor de entrada por 3 e apresente o resultado. Realizar a execução dos passos anteriores cinco vezes. programa MULT_3 var N, R, I : inteiro início I Å 1 enquanto (I <= 5) faça escreva “Informe um número inteiro:” leia N R Å N * 3 escreva R I Å I +1 fim_enquanto fim #include <stdio.h> int main() { int N, R, I; I = 1; while (I <= 5) { printf(“Informe um número inteiro:”); scanf(“%d”, &N); R = N * 3; printf(“%d”, R); I = I +1; } return 0; } Exemplo 3 O teste condicional avaliará os valores 0, 1, 2, 3, 4 e 5. x = 0; while (x != 5) { printf(“Valor de x = %d\n”,x); x = x + 1; } printf(“Valor de x depois de sair da estrutura =%d\n”,x); Note que a variável de controle do laço geralmente é alterada de modo que em algum momento a repetição chegue ao fim. Saída do programa: Valor de x = 0 Valor de x = 1 Valor de x = 2 Valor de x = 3 Valor de x = 4 Valor de x depois de sair da estrutura = 5 Exemplo 3 ` Elaborar um algoritmo que receba como entrada um número inteiro qualquer, em seguida multiplique o valor de entrada por 3 e apresente o resultado. Ao final da apresentação do resultado o programa deve perguntar ao usuário se ele deseja inserir um novo número e fazer novamente o cálculo. Exemplo 3: solução em Port. estruturado ` Elaborar um algoritmo que receba como entrada um número inteiro qualquer, em seguida multiplique o valor de entrada por 3 e apresente o resultado. Ao final da apresentação do resultado o programa deve perguntar ao usuário se ele deseja inserir um novo número e fazer novamente o cálculo. programa MULT_user var N, R : inteiro RESP : caractere início RESP Å “S” enquanto (RESP = “S” .ou. RESP = “s”) faça escreva “Informe um número inteiro:” leia N R Å N * 3 escreva R escreva “Deseja continuar (S ou N)?” leia RESP fim_enquanto fim Em se tratando do comando ENQUANTO, você não pode esquecer de pensar em qual será o valor inicial da variável que controla o laço (neste caso RESP) Exemplo 3 ` Elaborar um algoritmo que receba como entrada um número inteiro qualquer, em seguida multiplique o valor de entrada por 3 e apresente o resultado. Ao final da apresentação do resultado o programa deve perguntar ao usuário se ele deseja novo cálculo. #include <stdio.h> int main() { int N, R; char RESP; RESP = 'S'; while (RESP == 'S' || RESP == 's') { printf("\nInforme um número inteiro:"); scanf("%d", &N); R = N * 3; printf("\n%d", R); fflush(stdin); printf("\nDeseja continuar (S/N)?"); scanf("%c", &RESP); } return 0; } Exemplo 3 ` Elaborar um algoritmo que receba como entrada um número inteiro qualquer, em seguida multiplique o valor de entrada por 3 e apresente o resultado. Ao final da apresentação do resultado o programa deve perguntar ao usuário se ele deseja novo cálculo. #include <stdio.h> #include <ctype.h> int main() { int N, R; char RESP; RESP = 'S'; while (toupper(RESP) == 'S') { printf("\nInforme um número inteiro:"); scanf("%d", &N); R = N * 3; printf("\n%d", R); fflush(stdin); printf("\nDeseja continuar (S/N)?"); scanf("%c", &RESP); } return 0; } Exemplo 4 ` Faça um algoritmo que receba números e imprima o dobro de cada número. A execução do algoritmo termina quando o usuário entrar com o número 0 (zero). ` Neste caso, qual o tipo de repetição você usaria? ` Comando para ... fim_para ` Comando enquanto ... fim_enquantoExemplo 4: uma possível solução ` Faça um algoritmo que receba números e imprima o dobro de cada número. A execução do algoritmo termina quando o usuário entrar com o número 0 (zero). programa DOBRO var num : realinícioescreva “Entre com um número ou 0 para terminar: ”leia numenquanto (num <> 0) façaescreva num*2escreva “Entre com um número ou 0 para terminar: ”leia numfim_enquantofim Exemplo 4: código em Linguagem C ` Faça um algoritmo que receba números e imprima o dobro de cada número. A execução do algoritmo termina quando o usuário entrar com o número 0 (zero). #include <stdio.h> int main() { float num; printf("\nEntre com um número ou 0 para terminar: "); scanf("%f", &num); while(num != 0) { printf("O dobro eh: %.2f", num*2); printf("\nEntre com um número ou 0 para terminar: "); scanf("%f", &num); } system("pause"); return 0; } Exercício 1 ` Converta o algoritmo abaixo para um programa em Linguagem C. O algoritmo recebe números enquanto forem positivos e imprime quantos números positivos foram digitados. programa POSITIVOS var num, qtde : real início qtde ← 0escreva “Entre com um número positivo: ”leia numenquanto (num > 0) faça qtde ← qtde +1 escreva “Entre com um número positivo: ”leia numfim_enquanto escreva “A quantidade de números positivos digitados foi”, qtdefim Exercício 1: resolução em Linguagem C #include <stdio.h> int main() { float num; int qtde = 0; printf("\nEntre com um número positivo: "); scanf("%f", &num); while (num > 0) { qtde = qtde + 1; printf("\nEntre com um número positivo: "); scanf("%f", &num); } printf("\nA quantidade de números digitados foi: %d", qtde); return 0; } Exercício 2 ` Transforme o algoritmo abaixo para um programa na Linguagem C. programa FEMININO var num_fem : inteiro sexo : caractereinícioescreva “Entre com o sexo (F ou M) ou outra letra para sair: ”leia sexo num_fem ← 0enquanto (sexo = “F” .ou. sexo = “M”) faça se sexo = “F” então num_fem ← num_fem +1 fim_seescreva “Entre com o sexo (F ou M) ou outra letra para sair: ”leia sexofim_enquanto escreva “A quantidade de mulheres foi ”, num_femfim Exercício 2: resolução #include <stdio.h> #include <ctype.h> int main() { int num_fem; char sexo; printf("\nEntre com o sexo (F ou M) ou outra letra para sair: "); scanf("%c", &sexo); num_fem = 0; while (toupper(sexo) == 'F' || toupper(sexo) == 'M') { printf("\n sexo: %c", sexo); if (toupper(sexo) == 'F') num_fem++; fflush(stdin); printf("\nEntre com o sexo (F ou M) ou outra letra para sair: "); scanf("%c", &sexo); } printf("\nA quantidade de mulheres foi: %d", num_fem); return 0; } Laço de repetição condicional pós-teste ` Em Português estruturado usa os comandos: continua ... enquanto_for ` Sintaxe do comando: continua comando 1 comando 2 ... comando n enquanto_for (<condição>) Comando continua ... enquanto_for ` Estrutura de repetição para número indefinido de repetições ` Utilizada quando não se sabe o número de vezes que um trecho do algoritmo deve ser repetido. ` Embora também possa ser utilizada quando se conhece esse número. ` Estrutura com teste no final ` Baseia-se na análise de uma condição, ou seja, a repetição será feita enquanto a condição for verdadeira. ` Quando o teste condicional resultar em valor falso, os comandos dentro do bloco de repetição não serão executados. ` A diferença entre a estrutura enquanto e a estrutura continua-enquanto_for é que nesta última, os comandos são repetidos pelo menos uma vez, já que a condição de parada se encontra no final. Comando do ... while: sintaxe do comando; while (condição); do { comando1; comando2; ... } while (condição); Quando você tiver 1 comando dentro do bloco. Quando você tiver mais de 1 comando dentro do bloco, não esqueça de usar as chaves para delimitar o bloco. Comando do ... while: sintaxe do comando; while (condição); do { comando1; comando2; ... } while (condição); Note que em ambos os casos EXISTE o ; no final Exemplo 1 ` Elaborar um algoritmo que receba um valor numérico inteiro qualquer. Em seguida calcule o valor de entrada, multiplicando-o por 3 e apresente o resultado dessa operação. Após mostrar o resultado, o algoritmo deve perguntar se o usuário deseja um novo cálculo. programa mult_3 var num: inteiro resp: caractere início continua escreva “Informe um número inteiro:” leia num escreva num * 3 escreva “Deseja continuar calculando (S ou N)?” leia resp enquanto_for (resp = “S” .ou. resp = “s”) fim Exemplo 1: em Linguagem C ` Elaborar um algoritmo que receba como entrada um número inteiro qualquer, em seguida multiplique o valor de entrada por 3 e apresente o resultado. Ao final da apresentação do resultado o programa deve perguntar ao usuário se ele deseja novo cálculo. #include <stdio.h> #include <ctype.h> int main() { int N, R; char RESP; do { printf("\nInforme um número inteiro:"); scanf("%d", &N); R = N * 3; printf("\n%d", R); fflush(stdin); printf("\nDeseja continuar (S/N)?"); scanf("%c", &RESP); } while (toupper(RESP) == 'S'); return 0; } Exemplo 2: em Português estruturado ` Elaborar um algoritmo que receba como entrada um número inteiro qualquer, em seguida multiplique o valor de entrada por 3 e apresente o resultado. Realizar a execução dos passos anteriores cinco vezes. ` Qual tipo de repetição usar? ` Para ` Enquanto Exemplo 2: solução com enquanto_for ` Elaborar um algoritmo que receba como entrada um número inteiro qualquer, em seguida multiplique o valor de entrada por 3 e apresente o resultado. Realizar a execução dos passos anteriores cinco vezes. programa MULT_3 var N, R, I : inteiro início I Å 1 continua escreva “Informe um número inteiro:” leia N R Å N * 3 escreva R I Å I +1 enquanto_for (I <=5) fim Exemplo 2: em Linguagem C ` Elaborar um algoritmo que receba como entrada um número inteiro qualquer, em seguida multiplique o valor de entrada por 3 e apresente o resultado. Realizar a execução dos passos anteriores cinco vezes. #include <stdio.h> #include <ctype.h> int main() { int N, R, I; I = 1; do { printf("\nInforme um número inteiro:"); scanf("%d", &N); R = N * 3; printf("\n%d", R); I = I +1; } while (I <= 5); return 0; } Exercício 1 ` Faça um algoritmo para calcular a área de um triângulo, que não permita a entrada de dados inválidos, ou seja, medidas menores ou iguais a 0. Dica: área = (base x altura) / 2. Exercício 1 ` Transforme o algoritmo abaixo para um programa na Linguagem C. programa AREA_TRIANGULO var area, base, altura: realiníciocontinua escreva “Entre com a base do triângulo: ”leia baseenquanto_for (base <= 0) continua escreva “Entre com a altura do triângulo: ”leia alturaenquanto_for (altura <= 0) area ← (base * altura) / 2 escreva “Medida da área é:”, area fim Exercício 1: resolução #include <stdio.h> int main() { float base, altura, area; do { printf("\nEntre com a base do triangulo: "); scanf("%f",&base); }while(base <= 0); do { printf("\nEntre com a altura do triangulo: "); scanf("%f",&altura); }while(altura <= 0); area = (base * altura)/2; printf("\nArea = %.2f", area); return 0; } Exercício 2 ` Converta o algoritmo abaixo para um programa em linguagem C. O algoritmo calcula e imprime o valor de bn. O valor de n deverá ser maior do que 1 e inteiro e o valor de b maior ou igual a 2 e inteiro . programa B_N var res, b, n: inteiroiníciocontinua escreva “Entre com um valor inteiro de b >= 2: ”leia benquanto_for (b < 2) continua escreva “Entre com um valor inteiro de n > 1: ”leia nenquanto_for (n <= 1) res ← b ↑ n escreva“O valor final é:”, res fim Exercício 3 ` Considere os seguintes valores: 2, 9, 47, -7, -11, -49, 47, 30, 100, -100, -120, -47, 14, 114, 13. Quantos números serão impressos? a) 8 números b) 9 números c) 7 números d) 15 números e) 6 números (Observe que nem todos os números precisam ser lidos.) programa E3 var A: inteiro inicio leia A enquanto (A ≤ 100) faça se (A > -10) escreva A leia A fim_enquanto fim Exercício 4 ` Considere os seguintes valores: 2, 9, 47, -7, -11, -49, 47, 30, 100, -100, -120, -47, 14, 114, 13. Quantos números serão impressos? a) 8 números b) 9 números c) 7 números d) 15 números e) 6 números (Observe que nem todos os números precisam ser lidos.) programa E3 var A: inteiro inicio continua leia A se (A > -10) escreva A enquanto_for (A ≤ 100) fim Exercício 5 ` Analise o programa em C a seguir e indique qual será a saída, considerando 5 como entrada. Referências ` Algoritmos – Fundamento e Prática. Everton Coimbra de Araújo. Florianópolis: Visual Book, 2007. ` Algoritmos - Lógica para desenvolvimento de programação de computadores. José Augusto N. G. Manzano, Jayr Figueiredo de Oliveira. São Paulo: Érica, 2006. ` Victorine Viviane Mizrahi. Treinamento em linguagem C. São Paulo: Pearson Prentice Hall, 2008. ` Ricardo Sonaglio Albano e Silvie Guedes Albano. Programação em Linguagem C. Rio de Janeiro; Editora Ciência Moderna, 2010. 42 Algoritmos e programação Plano de aula Laço de repetição condicional pré-teste Exemplo 1 Exemplo 1: execução da repetição com o comando enquanto Comando while: sintaxe Comando while: atenção! Exemplo 1 Exemplo 1: código em Linguagem C Exemplo 2 Exemplo 2: solução com o “para” Exemplo 2: solução com “enquanto” Exemplo 2: código em Linguagem C Exemplo 3 Exemplo 3 Exemplo 3: solução em Port. estruturado Exemplo 3 Exemplo 3 Exemplo 4 Exemplo 4: uma possível solução Exemplo 4: código em Linguagem C Exercício 1 Exercício 1: resolução em Linguagem C Exercício 2 Exercício 2: resolução Laço de repetição condicional pós-teste Comando continua ... enquanto_for Comando do ... while: sintaxe Comando do ... while: sintaxe Exemplo 1 Exemplo 1: em Linguagem C Exemplo 2: em Português estruturado Exemplo 2: solução com enquanto_for Exemplo 2: em Linguagem C Exercício 1 Exercício 1 Exercício 1: resolução Exercício 2 Exercício 3 Exercício 4 Exercício 5 Referências
Compartilhar