Aula 14: Repetição (Parte 2)

Documentos relacionados
Puca Huachi Vaz Penna / José Américo T. Messias

Aula 15: Repetição (Parte 3)

Aula 16: Laços aninhados e desvios

Aula 08: Repetição (Parte 3)

MC102 Algoritmos e Programação de Computadores

Aula 05: Condicionais (if / else)

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

Aula 10: Manipulação do fluxo de laços

INF 1005 Programação I

Aula 06: Condicionais (switch)

Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I - BCC701

Estruturas de Repetição

MC-102 Aula 06 Comandos Repetitivos

controle de fluxo repetições iterativas

Linguagem C Estruturas de Repetição

Estruturas de repetição

Aula 05: Condicionais (Parte 2)

Laboratório 3 Comandos de repetição while, do-while e for

Disciplina de Algoritmos e Programação

Aula 04: Fluxogramas e condicionais

Aula 11: Laços e exercícios

Estruturas de Repetição

Linguagem C estruturas de repetição

Estruturas de Repetição

Linguagem C (repetição)

Aula 5 ESTRUTURAS DE REPETIÇÃO (WHILE)

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

Lógica de Programação I

Modulo 3: Else, Case, For...

Aula 4. Comandos de Repetição. Prof. Filipe Mutz.

Introdução à Programação C

MC-102 Aula 07 Comandos Repetitivos

Programação Estruturada

Módulo 3 Controle de Fluxo

Aula 14: Estruturas de Seleção e Controle em C

Controle de Fluxo Utilizando C

Programação Estruturada

Lógica de Programação I

INF1005: Programação 1. Repetições. 08/03/10 (c) Paula Rodrigues 1

MC-102 Aula 08 Comandos Repetitivos

imprimir seus quadrados.

Curso de C. Estruturas de Repetição 29/03/ :18 1

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

LÓGICA DE PROGRAMAÇÃO. PROFª. M.Sc. JULIANA H Q BENACCHIO

Aula 03 -Introdução àlinguagc Programação: Estrutura-Repetição. OPL e IC1 Prof: Anilton Joaquim da Silva

Programação de Computadores I Funções de Repetição da Linguagem C PROFESSORA CINTIA CAETANO

MC-102 Aula 05 Comandos Condicionais

Aula 25: Alocação Dinâmica

Estruturas de Repetição

Aula 2 Comandos de Decisão

Curso de C. Estruturas de Repetição 1/4/ :31 1

LISTA DE EXERCÍCIOS - ro. 02

Aula 07: Introdução a Funções

MAC2166 Introdução à Computação para Engenharia Escola Politécnica Primeira Prova 07 de abril de 2008

Aula 03: Introdução a C

Aula 10: Funções (Parte III)

Suponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa?

Capítulo 3: Repetições. Pontifícia Universidade Católica Departamento de Informática

Estruturas de Repetição

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

Prova 1 QUESTÃO 1. (1) nusp % 3 == 1. MAC2166 Introdução à Computação para a Engenharia. # include <stdio.h>

Algoritmos e Programação

Lógica de Programação I

Lista de Exercícios 2

Lista de Exercícios 3

Linguagem C ESTRUTURA DE CONTROLE

1) Operadores de auto incremento ++ e auto decremento --

Aula 11 - Repetições Encaixadas

Apresentar os comandos de controle associados com as estruturas de repetição.

Prof. A. G. Silva. 04 de abril de Prof. A. G. Silva INE5231 Computação Científica I 04 de abril de / 90

Fundamentos de Programação 1

Exercícios Repetição

Fixação de conteúdo teórico

Cap. 3 Entrada e Saída e Controle de Fluxo

Linguagens de programação. Introdução ao C (continuação)

Terminal. Entrada de dados via teclado. Processamento de dados (cálculos) Tomada de decisão (condição) Saída de dados (via vídeo) Ponto de conexão

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

Comandos de Repetição -Laços

Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação. Recursão em C

Aula 4 ESTRUTURAS DE REPETIÇÃO (FOR)

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

Aula 10 Comandos de Repetição For e Do While

Aula 26: Arquivos de texto

Algoritmos e Programação

Aula Teórica 06. Material Didático Proposto. Conteúdos da Aula. Estruturas de Repetição Exercícios

MC-102 Aula 04 Expressões Relacionais, Lógicas e Comandos Condicionais

Laços. - receba o dinheiro - Pergunte qual refrigerante o cliente deseja - forneça o refrigerante - devolva o troco

Métodos Computacionais em Física

3. Linguagem de Programação C

DURAÇÃO DA PROVA: 2 horas

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

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

1ª Lista de Exercícios

Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria

Algoritmos e Programação

Aula 15 Variáveis Indexadas (vetores)

Transcrição:

Aula 14: Repetição (Parte 2) Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2019/1 Departamento de Computação UFOP

Aula Anterior Laços de repetição Comando de repetição while Exercícios 2 / 27 Túlio Toffolo Introdução a Programação Aula 14: Repetição (Parte 2)

Aula de Hoje 1 Exercícios da aula passada 2 Comando do while 3 Exemplos 4 Uso do laço 5 Exercícios 2 / 27 Túlio Toffolo Introdução a Programação Aula 14: Repetição (Parte 2)

Aula de Hoje 1 Exercícios da aula passada 2 Comando do while 3 Exemplos 4 Uso do laço 5 Exercícios 2 / 27 Túlio Toffolo Introdução a Programação Aula 14: Repetição (Parte 2)

Exercício 1 A média harmônica é dada pela seguinte equação: H = n n 1 x i=1 i n, ou seja: H = 1 + 1 +... + 1 x 1 x 2 x n Faça um programa em C para calcular a média harmônica de n valores digitados pelo usuário. Saída: 1 Cálculo da Média Harmônica. 2 Quanto números você quer digitar? 4 3 4 Número 1: 2 5 Número 2: 4 6 Número 3: 6 7 Número 4: 8 8 9 Média Harmônica: 3.84 3 / 27 Túlio Toffolo Introdução a Programação Aula 14: Repetição (Parte 2)

Aula de Hoje 1 Exercícios da aula passada 2 Comando do while 3 Exemplos 4 Uso do laço 5 Exercícios 3 / 27 Túlio Toffolo Introdução a Programação Aula 14: Repetição (Parte 2)

Laços ou Repetições (loop) Laços são comandos usados sempre que uma ou mais instruções devam ser repetidas enquanto um certa condição estiver sendo satisfeita Laços em C++ while do - while for 4 / 27 Túlio Toffolo Introdução a Programação Aula 14: Repetição (Parte 2)

Laços ou Repetições (loop) Em um laço controlado logicamente, os comandos (corpo do laço) são repetidos enquanto uma expressão lógica for verdadeira while do - while Em um laço controlado por contador, os comandos (corpo do laço) são repetidos um número predeterminado de vezes for Denomina-se iteração a repetição de um conjunto de comandos: cada execução do corpo do laço, juntamente com a condição de terminação do laço, é uma iteração 5 / 27 Túlio Toffolo Introdução a Programação Aula 14: Repetição (Parte 2)

Laço while Condição F V Comandos 6 / 27 Túlio Toffolo Introdução a Programação Aula 14: Repetição (Parte 2)

Laço while 1 while (<expressão>) 2 { 3 <comando_1>; 4... 5 <comando_n>; 6 } 7 / 27 Túlio Toffolo Introdução a Programação Aula 14: Repetição (Parte 2)

Laço do while Comandos V Condição F 8 / 27 Túlio Toffolo Introdução a Programação Aula 14: Repetição (Parte 2)

Comando do while 1 do { 2 <comando_1>; 3... 4 <comando_n>; 5 } while (<expressão>); No comando do while, ao contrário do comando while, o teste do laço/loop está no final, isso significa que os <comandos> serão executados no mínimo uma vez. 9 / 27 Túlio Toffolo Introdução a Programação Aula 14: Repetição (Parte 2)

Aula de Hoje 1 Exercícios da aula passada 2 Comando do while 3 Exemplos 4 Uso do laço 5 Exercícios 9 / 27 Túlio Toffolo Introdução a Programação Aula 14: Repetição (Parte 2)

Exemplo 1 Faça um programa que leia as notas da primeira prova de BCC201 e calcule e imprima a média das notas. Considere que o número de alunos é desconhecido. Utilize como critério de parada do programa uma nota negativa. 10 / 27 Túlio Toffolo Introdução a Programação Aula 14: Repetição (Parte 2)

Exemplo 1 (usando while) 1 #include <stdio.h> 2 3 int main() 4 { 5 int alunos = 0; 6 double nota, soma = 0; 7 8 printf("digite um nro negativo para sair ou a nota do aluno: "); 9 scanf("%lf", &nota); 10 11 while (nota >= 0) { 12 soma += nota; 13 alunos++; 14 printf("digite um nro negativo para sair ou a nota do aluno: "); 15 scanf("%lf", &nota); 16 } 17 double media = soma / alunos; 18 printf("a média das notas é: %.2lf\n", soma); 19 20 return 0; 21 } 11 / 27 Túlio Toffolo Introdução a Programação Aula 14: Repetição (Parte 2)

Exemplo 1 (usando do while) 1 #include <stdio.h> 2 3 int main() 4 { 5 int alunos = 0; 6 double nota, soma = 0; 7 8 do { 9 printf("digite um nro negativo para sair ou a nota do aluno: "); 10 scanf("%lf", &nota); 11 if (nota >= 0) { 12 soma += nota; 13 alunos++; 14 } 15 } while(nota >= 0); 16 17 double media = soma / alunos; 18 printf("a média das notas é: %.2lf\n", soma); 19 20 return 0; 21 } 12 / 27 Túlio Toffolo Introdução a Programação Aula 14: Repetição (Parte 2)

Exemplo 2: Jogo de Adivinhar Faça um jogo onde o usuário tem que acertar um número selecionada pelo programa. O jogo termina quando o número digitado estiver correto. Imprimir o número de tentativas até o acerto. 13 / 27 Túlio Toffolo Introdução a Programação Aula 14: Repetição (Parte 2)

Exemplo 2: Jogo de Adivinhar 1 // Jogo adivinha usando do-while 2 #include <stdio.h> 3 4 int main() 5 { 6 int resp, adivinha = 10; 7 int tentativas = 0; 8 9 do { 10 printf("digite um nro: "); 11 scanf("%d", &resp); 12 if (resp!= adivinha) 13 printf("%d é incorreto, tente novamente!\n\n", resp); 14 tentativas++; 15 } while (resp!= adivinha); 16 17 printf("%d é o nro CORRETO!\n", resp); 18 printf("número de tentativas: %d\n", tentativas); 19 printf("fim DO JOGO...\n"); 20 return 0; 21 } 14 / 27 Túlio Toffolo Introdução a Programação Aula 14: Repetição (Parte 2)

Exemplo 2: Jogo de Adivinhar 1 // Jogo adivinha usando while 2 #include <stdio.h> 3 4 int main() 5 { 6 int resp, adivinha = 10; 7 int tentativas = 1; 8 9 printf("digite um nro: "); 10 scanf("%d", &resp); 11 12 while (resp!= adivinha); { 13 printf("digite um nro: "); 14 scanf("%d", &resp); 15 if (resp!= adivinha) 16 printf("%d é incorreto, tente novamente!\n\n", resp); 17 tentativas++; 18 } 19 printf("%d é o nro CORRETO!\n", resp); 20 printf("número de tentativas: %d\n", tentativas); 21 printf("fim DO JOGO...\n"); 22 return 0; 23 } 15 / 27 Túlio Toffolo Introdução a Programação Aula 14: Repetição (Parte 2)

Exemplo 3: Jogo de Adivinhar E se o usuário quiser jogar mais de uma vez? 16 / 27 Túlio Toffolo Introdução a Programação Aula 14: Repetição (Parte 2)

1 #include <stdio.h> 2 #include <stdlib.h> // para incluir a função rand 3 4 int main() 5 { 6 int tentativas, adivinha, resp, novamente; 7 8 do { 9 tentativas = 0; 10 adivinha = rand() % 10; 11 12 do { 13 printf("digite um nro: "); 14 scanf("%d", &resp); 15 if (resp!= adivinha) 16 printf("%d é incorreto, tente novamente!\n\n", resp); 17 tentativas++; 18 } while (resp!= adivinha); 19 20 printf("%d é o nro CORRETO!\n", resp); 21 printf("número de tentativas: %d\n", tentativas); 22 printf("deseja jogar novamente? (0=NAO, 1=SIM)\n"); 23 scanf("%d", &novamente); 24 } while (novamente == 1); 25 26 return 0; 27 } 17 / 27 Túlio Toffolo Introdução a Programação Aula 14: Repetição (Parte 2)

Aula de Hoje 1 Exercícios da aula passada 2 Comando do while 3 Exemplos 4 Uso do laço 5 Exercícios 17 / 27 Túlio Toffolo Introdução a Programação Aula 14: Repetição (Parte 2)

Validação de entrada Exemplo: 1 O usuário deve digitar um valor inteiro, positivo e par. 2 O programa continua após a digitação de um valor que atende essas restrições. 3 Observe que o usuário pode errar na digitação do valor.. Deve ser utilizado o if, while ou do while? 18 / 27 Túlio Toffolo Introdução a Programação Aula 14: Repetição (Parte 2)

Validando entrada 1... 2 printf("\ndigite um valor: "); 3 scanf("%d", &x); 4 5 while (x <= 0 x % 2!= 0) 6 { 7 printf("\nerro: Valor Inválido!"); 8 printf("\ndigite um valor: "); 9 scanf("%d", &x); 10 } 11 12 // o programa prossegue com um número que 13 // atende a restrição Observação: Não se pode prever quantas vezes o usuário entrará com um valor incorreto; O comando if não nos atende neste caso... 19 / 27 Túlio Toffolo Introdução a Programação Aula 14: Repetição (Parte 2)

Validando entrada 1... 2 do { 3 printf("\ndigite um valor: "); 4 scanf("%d", &x); 5 6 if (x <= 0 x % 2!= 0) 7 printf("\nerro: Valor Inválido!"); 8 } while (x <= 0 x % 2!= 0); 9 10 // o programa prossegue com um número que 11 // atende a restrição Observação: Não se pode prever quantas vezes o usuário entrará com um valor incorreto; O comando if não nos atende neste caso... 20 / 27 Túlio Toffolo Introdução a Programação Aula 14: Repetição (Parte 2)

Repetição do programa O comando do while é útil para implementar repetição do programa: 1 char op; 2 do { 3 4 /* o código do programa entra aqui... */ 5 6 printf("\nrepetir a execução (s/n)?"); 7 scanf("%d", &op); 8 } while (op == 's' op == 'S') // o programa aceita S maiúsculo tb Em geral, o comando do while é usado quando os <comandos> devem ser executados no mínimo uma vez. 21 / 27 Túlio Toffolo Introdução a Programação Aula 14: Repetição (Parte 2)

Exemplo 4: Algoritmo de Euclides Calcula o MDC (máximo divisor comum) entre dois inteiros. Efetuar várias divisões até chegar a uma divisão exata. O divisor desta divisão é o MDC. Ex.: cálculo do mdc(48,30). Regra prática: 1º) dividimos o número maior pelo número menor: 48 / 30 = 1 (com resto 18) 2º) dividimos o divisor 30, que é divisor da divisão anterior, por 18, que é o resto da divisão, e assim sucessivamente: 30 / 18 = 1 (com resto 12) 18 / 12 = 1 (com resto 6) 12 / 6 = 2 (com resto zero - divisão exata) 3º) O divisor da divisão exata é 6. Então mdc(48, 30) = 6. 22 / 27 Túlio Toffolo Introdução a Programação Aula 14: Repetição (Parte 2)

Exemplo 4: Algoritmo de Euclides Deve ser utilizado do-while ou while para calcular o MDC? 23 / 27 Túlio Toffolo Introdução a Programação Aula 14: Repetição (Parte 2)

Exemplo 4: Algoritmo de Euclides (I) 1 /* 2 * Calcula o MDC (máximo divisor comum) entre dois inteiros. 3 */ 4 int mdc(int x, int y) 5 { 6 // criando variável para armazenar o resto 7 int resto; 8 9 // garantindo que x >= y 10 if (x < y) 11 troca(&x, &y); // função que troca os valores de x e y 12 13 resto = x % y; // calcula o resto 14 while (resto!= 0) { 15 x = y; // x é atualizado 16 y = resto; // y armazena o MDC 17 resto = x % y; // recalcula o resto 18 } 19 20 return y; 21 } 24 / 27 Túlio Toffolo Introdução a Programação Aula 14: Repetição (Parte 2)

Exemplo 4: Algoritmo de Euclides (II) 1 /* 2 * Calcula o MDC (máximo divisor comum) entre dois inteiros. 3 */ 4 int mdc(int x, int y) 5 { 6 // criando variável para armazenar o resto 7 int resto; 8 9 // garantindo que x >= y 10 if (x < y) 11 troca(&x, &y); // função que troca os valores de x e y 12 13 do { 14 resto = x % y; // calcula o resto 15 x = y; // x armazena o MDC 16 y = resto; // atualiza o valor de y para o resto 17 } while (resto!= 0); 18 19 return x; 20 } 25 / 27 Túlio Toffolo Introdução a Programação Aula 14: Repetição (Parte 2)

Exemplo 4: Algoritmo de Euclides Usando while 1 int mdc(int x, int y) 2 { 3 if (x < y) 4 troca(&x, &y); 5 6 int resto = x % y; 7 8 while (resto!= 0) { 9 x = y; 10 y = resto; 11 resto = x % y; 12 } 13 14 return y; 15 } Usando do while 1 int mdc(int x, int y) 2 { 3 if (x < y) 4 troca(&x, &y); 5 6 int resto; 7 8 do { 9 resto = x % y; 10 x = y; 11 y = resto; 12 } while (resto!= 0); 13 14 return x; 15 } 26 / 27 Túlio Toffolo Introdução a Programação Aula 14: Repetição (Parte 2)

Aula de Hoje 1 Exercícios da aula passada 2 Comando do while 3 Exemplos 4 Uso do laço 5 Exercícios 26 / 27 Túlio Toffolo Introdução a Programação Aula 14: Repetição (Parte 2)

Exercício Apenas para praticar, use o comando do while em uma das questões: Exercício 1 Escreva um programa que imprima o quadrado dos números inteiros, no intervalo fechado de 1 a 20. A seguir, um exemplo de execução do programa. 1 1 4 9 16 25 36 49 64 81 100 121 144 169 196 225 256 289... 400 Exercício 2 Suponha que exista 50 alunos em uma sala. Faça um programa que determina quantos desses alunos tem idade maior que 20 anos. O usuário (coitado) deve digitar a matrícula e idade de todos os 50 alunos. 27 / 27 Túlio Toffolo Introdução a Programação Aula 14: Repetição (Parte 2)

/ 12 Perguntas?