MC-102 Aula 08 Comandos Repetitivos

Documentos relacionados
Programação Estruturada

MC-102 Aula 06 Comandos Repetitivos

MC102 Algoritmos e Programação de Computadores

MC-102 Aula 07 Comandos Repetitivos

MC-102 Aula 09 Comandos Repetitivos

MC-102 Aula 09 Comandos Repetitivos

Aula 15: Repetição (Parte 3)

Aula 16: Laços aninhados e desvios

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

Aula 15 Variáveis Indexadas (vetores)

imprimir seus quadrados.

Aula 14: Repetição (Parte 2)

DURAÇÃO DA PROVA: 2 horas

PCI- Estrutura de Repetição II. Profa. Mercedes Gonzales Márquez

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

MC-102 Aula 14. Instituto de Computação Unicamp. 29 de Setembro de 2016

Campus de Sorocaba. Lista de Exercícios Recuperação Introdução à Ciência da Computação 1º Semestre de 2016

DURAÇÃO DA PROVA: 2 horas

MC-102 Aula 12 Matrizes e Vetores Multidimensionais

Universidade Federal de Goiás Instituto de Informática Introdução à Computação Professor: Julliano Rosa Nascimento

MAC 2166 Introdução à Computação para Engenharia

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

Programação Estruturada

Linguagem C estruturas de repetição

MC-102 Aula 05 Comandos Condicionais

Exercícios Repetição

MC102 Aula 27 Recursão II

Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Segunda Aula Prática - 29 de agosto de 2008

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

Linguagem C: Introdução

Aula 05: Condicionais (if / else)

Faculdade Anglo-Americano Curso de Ciência da Computação Linguagem de Programação. Lista de Exercícios 1

Aula 08: Funções (Parte II)

5 Comando de Seleção Simples e Composta

Programação Estruturada

Aula 4 Introdução ao C

1ª Lista de Exercícios

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

Linguagem C. IF61A/IF71A - Computação 1 Prof. Leonelo Almeida. Universidade Tecnológica Federal do Paraná

1 Exercícios com ponteiros

Linguagem C (repetição)

Fixação de conteúdo teórico

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

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

Estruturas de Repetição

MC-102 Aula 13. Instituto de Computação Unicamp. 29 de Setembro de 2016

Introdução à Ciência da Computação

Laboratório de 13 de maio de 2019

BAC004 Informática Teórica T2 Professora: Fabiana Costa Guedes Lista 05 Vetores e Matrizes Vetores

Aula 5 - Mais C e repetição

Algoritmos e Lógica de Programação. 6ª Lista de Exercícios Comandos de Repetição

MAC 2166 Introdução à Computação para Engenharia

Estruturas de repetição. Objetivos: - Compreender diversos tipos de comandos de repetições disponíveis na linguagem C.

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

Modulo 3: Else, Case, For...

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO MARANHÃO - CAMPUS CAXIAS. Aluno (s): 01 ATIVIDADE. Revisão de Conteúdo

Comandos de Repetição -Laços

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

Vejamos agora mais alguns exemplos de problemas envolvendo seqüência de números.

Expressões lógicas, expressões condicionais, prioridades e operadores, base binária, operadores de bits

Linguagem C Estruturas de Repetição

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

Programação: Vetores

Programação de Computadores I BCC701 Aula Teórica 08 Exercícios

Métodos Computacionais em Física

Aula 7 - Mais problemas com inteiros

Aula 11 - Repetições Encaixadas

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

Comando Switch. Embora a escada if else-if possa executar testes de várias maneiras, ela não é de maneira nenhuma elegante.

Linguagem C. Prof.ª Márcia Jani Cícero

GFM015 Introdução à Computação Algoritmos e Programação / Controle de Fluxo / Estutura Condicional

MAC2166 Introdução à Computação para Engenharia Escola Politécnica Terceira Prova 20 de junho de 2011

Estruturas de Repetição

Algoritmos de Enumeração

Controle de Fluxo Utilizando C

Quantas variáveis para armazenar as notas e as médias são necessárias para resolver este problema?

Primos... Determinar se um inteiro é primo. 1. Um número é primo se apenas é divisível por ele próprio e por 1.

MC-102 Aula 17 Strings e Matrizes

Mini apostila de Python - Oficina de Vestibulandos. PET Computação - UFPR September 2016

Faculdade de Computação

Aula 8 Oficina de Programação Vetores. Profa. Elaine Faria UFU

3.1 - Funções para manipular dados de entrada e saída padrão

Programação Estruturada

Comandos de repetição while

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

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

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

Algoritmos e Programação

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

Estruturas de Repetição

Exercícios - Questões Objetivas

Comandos de entrada. e saída. Comandos de entrada. Comandos de entrada. Comandos de entrada. Comandos de entrada. Comandos de entrada.

3. Linguagem de Programação C

1. Faça um programa que leia uma string digitada pelo usuário e salve em um arquivo em branco.

Pontifícia Universidade Católica de São Paulo Faculdade de Ciências Exatas e Tecnologia Depto. de Computação Curso: Ciência da Computação

Aula 04. Agregados Homogêneos. Agregados Heterogêneos. Matrizes

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

Simulado da Prova Parcial 2 (01/08/2013)

Transcrição:

MC-102 Aula 08 Comandos Repetitivos Instituto de Computação Unicamp 13 de Setembro de 2016

Roteiro 1 Exemplos com laços Menu de Escolhas Representação Binário-Decimal Representação Decimal-Binário 2 Laços Encaixados Equações Lineares Inteiras 3 Exercícios (Instituto de Computação Unicamp) MC-102 Aula 08 13 de Setembro de 2016 2 / 28

Menu de Escolhas Em programas de computador, é comum a apresentação de um menu de opções para o usuário. Vamos fazer um menu com algumas opções, incluindo uma última para encerrar o programa. (Instituto de Computação Unicamp) MC-102 Aula 08 13 de Setembro de 2016 3 / 28

Menu de Escolhas O programa terá as seguintes opções: 1 - Cadastrar um produto. 2 - Buscar informações de produto. 3 - Remover um produto. 4 - Sair do Programa. Após realizar uma das operações, o programa volta para o menu. (Instituto de Computação Unicamp) MC-102 Aula 08 13 de Setembro de 2016 4 / 28

Menu de Escolhas O comportamento do seu programa deveria ser algo como: do{ printf("1 - Cadastrar um produto\n"); printf("2 - Buscar informaç~oes de produto\n"); printf("3 - Remover um produto\n"); printf("4 - Sair do programa\n"); printf("\nentre com a opç~ao: "); scanf("%d", &opcao); //Faça o que for esperado conforme opç~ao digitada while(opcao!= 4); (Instituto de Computação Unicamp) MC-102 Aula 08 13 de Setembro de 2016 5 / 28

Menu de Escolhas int main(){ int opcao; do{ printf("1 - Cadastrar um produto\n"); printf("2 - Buscar informaç~oes de produto\n"); printf("3 - Remover um produto\n"); printf("4 - Sair do programa\n"); printf("\nentre com a opç~ao: "); scanf("%d", &opcao); if(opcao == 1) printf("cadastrando...\n\n\n"); else if(opcao == 2) printf("buscando...\n\n\n"); else if(opcao == 3) printf("removendo...\n\n\n"); else if (opcao == 4) printf("seu programa será encerrado.\n\n\n"); else printf("opç~ao Inválida!\n\n\n"); while(opcao!= 4); (Instituto de Computação Unicamp) MC-102 Aula 08 13 de Setembro de 2016 6 / 28

Representação Binário-Decimal Já sabemos que um computador armazena todas as informações na representação binária. É útil saber como converter valores binário em decimal e vice versa. Dado um número em binário b n b n 1... b 2 b 1 b 0, este corresponde na forma decimal à: n b i 2 i Exemplos: i=0 101 = 2 2 + 2 0 = 5 1001110100 = 2 9 + 2 6 + 2 5 + 2 4 + 2 2 = 512 + 64 + 32 + 16 + 4 = 628 OBS: Em uma palavra no computador um bit é usado para indicar o sinal do número: ou +. (Instituto de Computação Unicamp) MC-102 Aula 08 13 de Setembro de 2016 7 / 28

Representação Binário-Decimal Vamos supor que lemos do teclado um inteiro em binário. Ou seja, ao lermos n = 111 assumimos que este é um número binário (e não cento e onze). Como transformar este número no correspondente valor decimal (7 neste caso)?? Basta usarmos a expressão: n b i 2 i i=0 (Instituto de Computação Unicamp) MC-102 Aula 08 13 de Setembro de 2016 8 / 28

Representação Binário-Decimal Um passo importante é conseguir recuperar os dígitos individuais do número: Note que n%10 recupera o último dígito de n. Note que n/10 remove o último dígito de n, pois ocorre a divisão inteira por 10. Exemplo: Com n = 345, ao fazermos n%10 obtemos 5. E ao fazermos n/10 obtemos 34. (Instituto de Computação Unicamp) MC-102 Aula 08 13 de Setembro de 2016 9 / 28

Representação Binário-Decimal Para obter cada um dos dígitos de um número n podemos fazer algo como: Leia n Enquanto n!= 0 faça digito = n%10 Imprima o digito n = n/10 (Instituto de Computação Unicamp) MC-102 Aula 08 13 de Setembro de 2016 10 / 28

Representação Binário-Decimal O programa abaixo imprime cada um dos dígitos de n separadamente: int main(){ int n, digito; printf("\n Digite um número:"); scanf("%d",&n); while( n!= 0 ){ digito = n%10; printf("%d\n", digito); n = n/10; (Instituto de Computação Unicamp) MC-102 Aula 08 13 de Setembro de 2016 11 / 28

Representação Binário-Decimal Usar a fórmula n i=0 b i 2 i, para transformar um número em binário para decimal. Devemos gerar as potências 2 0,..., 2 n, e multiplicar cada potência 2 i pelo i-ésimo dígito. Calcular as potência já sabemos (acumuladora pot ). Para armazenar a soma n i=0 b i 2 i usamos uma outra variável acumuladora soma. Leia n pot = 1 soma = 0 Enquanto n!= 0 faça digito = n%10 n = n/10 soma = soma + (pot*digito) pot = pot * 2 (Instituto de Computação Unicamp) MC-102 Aula 08 13 de Setembro de 2016 12 / 28

Representação Binário-Decimal Em C: int main(){ int n, digito, soma, pot; printf("digite um número em binário:"); scanf("%d",&n); soma = 0; pot = 1; while( n!= 0 ){ digito = n%10; n = n/10; soma = soma + (digito*pot); pot = pot*2; printf("valor em decimal: %d\n", soma); (Instituto de Computação Unicamp) MC-102 Aula 08 13 de Setembro de 2016 13 / 28

Representação Decimal-Binário Dado um número em decimal, vamos obter o correspondente em binário. Qualquer decimal pode ser escrito como uma soma de potências de 2: 5 = 2 2 + 2 0 13 = 2 3 + 2 2 + 2 0 Nesta soma, para cada potência 2 i, sabemos que na representação em binário haverá um 1 no dígito i. Exemplo: 13 = 1101 O que acontece se fizermos sucessivas divisões por 2 de um número decimal? 13/2 = 6 com resto 1 6/2 = 3 com resto 0 3/2 = 1 com resto 1 1/2 = 0 com resto 1 (Instituto de Computação Unicamp) MC-102 Aula 08 13 de Setembro de 2016 14 / 28

Representação Decimal-Binário Dado n em decimal, fazemos repetidas divisões por 2, obtendo os dígitos do valor em binário: 13/2 = 6 com resto 1 Leia n Enquanto n!= 0 faça digito = n%2 Imprima digito n = n/2 6/2 = 3 com resto 0 3/2 = 1 com resto 1 1/2 = 0 com resto 1 (Instituto de Computação Unicamp) MC-102 Aula 08 13 de Setembro de 2016 15 / 28

Representação Decimal-Binário Em C: int main(){ int n, digito; printf("digite um número:"); scanf("%d",&n); while( n!= 0 ){ digito = n%2; n = n/2; printf("%d\n", digito); (Instituto de Computação Unicamp) MC-102 Aula 08 13 de Setembro de 2016 16 / 28

Laços Encaixados Para resolver alguns problemas, é necessário implementar um laço dentro de outro laço. Estes são conhecidos como laços encaixados. int main(){ int i,j; for(i=1;i<=10;i++){ for(j=1;j<=5;j++){ printf("%d %d\n",i,j); O que será impresso por este programa? (Instituto de Computação Unicamp) MC-102 Aula 08 13 de Setembro de 2016 17 / 28

Laços Encaixados for(i=1;i<=10;i++){ for(j=1;j<=5;j++){ printf("%d %d\n",i,j); Fixado um valor para i no primeiro laço for, começa-se o segundo laço for, que varia o valor de j entre 1 e 5. No final deste segundo laço for voltamos para o primeiro laço onde a variável i assumirá seu próximo valor. Fixado este valor de i começa-se novamente o segundo laço for. (Instituto de Computação Unicamp) MC-102 Aula 08 13 de Setembro de 2016 18 / 28

Laços Encaixados for(i=1;i<=10;i++){ for(j=1;j<=5;j++){ printf("%d %d\n",i,j); Será impresso: 1 1 1 2 1 3 1 4 1 5 2 1... 10 1 10 2 10 3 10 4 10 5 (Instituto de Computação Unicamp) MC-102 Aula 08 13 de Setembro de 2016 19 / 28

Laços Encaixados: Equações Lineares Inteiras Um uso comum de laços encaixados ocorre quando para cada um dos valores de uma determinada variável, precisamos gerar/checar algo sobre os valores de outras variáveis. Problema Determinar todas as soluções inteiras de um sistema linear como: x 1 + x 2 = C com x 1 0, x 2 0, C 0 e todos inteiros. (Instituto de Computação Unicamp) MC-102 Aula 08 13 de Setembro de 2016 20 / 28

Laços Encaixados: Equações Lineares Inteiras Problema Determinar todas as soluções inteiras de um sistema linear como: x 1 + x 2 = C com x 1 0, x 2 0, C 0 e todos inteiros. Uma solução: para cada um dos valores de 0 x 1 C, teste todos os valores de x 2 possíveis e verifique quais deles são soluções. Para cada x1 entre 0 e C faça Para cada x2 entre 0 e C faça Se x1 + x2 = C ent~ao imprima soluç~ao (Instituto de Computação Unicamp) MC-102 Aula 08 13 de Setembro de 2016 21 / 28

Laços Encaixados: Equações Lineares Inteiras Em C: int main(){ int C; int x1, x2; printf("digite o valor de C:"); scanf("%d", &C); for(x1 = 0; x1 <= C; x1++){ for(x2 = 0; x2 <= C; x2++){ if(x1 + x2 == C) printf("%d + %d = %d\n",x1,x2,c); (Instituto de Computação Unicamp) MC-102 Aula 08 13 de Setembro de 2016 22 / 28

Laços Encaixados: Equações Lineares Inteiras OBS: Note que fixado x 1, não precisamos testar todos os valores de x 2, pois este é determinado como x 2 = C x 1. int main(){ int C; int x1, x2; printf("digite o valor de C:"); scanf("%d", &C); for(x1 = 0; x1 <= C; x1++){ x2 = C - x1; printf("%d + %d = %d\n",x1, x2, C); Mas em um caso geral com n variáveis, x 1 + x 2 +... + x n = C será preciso fixar (n 1) variáveis para só então determinar o valor de x n. (Instituto de Computação Unicamp) MC-102 Aula 08 13 de Setembro de 2016 23 / 28

Laços Encaixados: Equações Lineares Inteiras Problema Quais são as soluções de x 1 + x 2 + x 3 = C com x 1 0, x 2 0, x 3 0, C 0 e todas inteiras? Uma solução: para cada um dos valores de 0 x 1 C, teste todos os valores de x 2 e x 3 e verifique quais deles são soluções. Para cada x1 entre 0 e C faça Para cada x2 entre 0 e C faça Para cada x3 entre 0 e C faça Se x1 + x2 + x3 = C ent~ao imprima soluç~ao (Instituto de Computação Unicamp) MC-102 Aula 08 13 de Setembro de 2016 24 / 28

Laços Encaixados: Equações Lineares Inteiras Em C: int main(){ int C; int x1, x2, x3; printf("digite o valor de C:"); scanf("%d", &C); for(x1 = 0; x1 <= C; x1++){ for(x2 = 0; x2 <= C; x2++){ for(x3 = 0; x3<= C; x3++){ if(x1 + x2 + x3 == C) printf("%d + %d + %d = %d\n",x1,x2,x3,c); (Instituto de Computação Unicamp) MC-102 Aula 08 13 de Setembro de 2016 25 / 28

Laços Encaixados: Equações Lineares Inteiras Note que fixado x 1, o valor máximo de x 2 é C x 1. Fixados x 1 e x 2, o valor de x 3 é determinado como C x 1 x 2. Podemos alterar o programa com estas melhorias: int main(){ int C; int x1, x2, x3; printf("digite o valor de C:"); scanf("%d", &C); for(x1 = 0; x1 <= C; x1++){ for(x2 = 0; x2 <= C - x1; x2++){ x3 = C - x1 - x2; printf("%d + %d + %d = %d\n",x1,x2,x3,c); (Instituto de Computação Unicamp) MC-102 Aula 08 13 de Setembro de 2016 26 / 28

Exercício Na transformação decimal para binário, modifique o programa para que este obtenha o valor binário em uma variável inteira, ao invés de imprimir os dígitos um por linha na tela. Dica: Suponha n = 7 (111 em binário), e você já computou x = 11, para inserir o último dígito 1 em x você deve fazer x = x + 100. Ou seja, você precisa de uma variável acumuladora que armazena as potências de 10: 1, 10, 100, 1000 etc. (Instituto de Computação Unicamp) MC-102 Aula 08 13 de Setembro de 2016 27 / 28

Exercício Implemente um programa que compute todas as soluções de equações do tipo x 1 + x 2 + x 3 + x 4 = C Melhore o seu programa com as seguinte idéias. Fixado x 1, os valores possíveis para x 2 são 0,..., C x 1. Fixado x 1 e x 2, os valores possíveis para x 3 são 0,..., C x 1 x 2. Fixados x 1, x 2, e x 3, então x 4 é unicamente determinado. (Instituto de Computação Unicamp) MC-102 Aula 08 13 de Setembro de 2016 28 / 28