Baixe o app para aproveitar ainda mais
Prévia do material em texto
Linguagem C MÓDULO 3 Estruturas de Repetição Gustavo Luís F. Vicente Linguagem C 2 Estruturas de Repetição • Úteis quando precisamos executar um conjunto de instruções repetidas vezes • Dois tipos de repetição: • Quando NÃO sabemos a priori a quantidade de repetições a serem feitas (p.ex.: “calcule a média da idade de uma turma qualquer”) • Quando sabemos a priori a quantidade de repetições a serem feitas (p.ex.: “escreva seu nome 10 vezes na tela”.) ? Linguagem C 3 Estruturas de Repetição • Quando NÃO sabemos a priori a quantidade de repetições a serem feitas (p.ex.: “calcule a média da idade de uma turma qualquer”) • Utilizamos uma condição a ser avaliada para que o bloco de instruções seja executado • Pseudocódigo: enquanto a <condição> é VERDADE <instruções> Fim_enquanto IMPORTANTE: Dentro do bloco de <instruções> deve haver instruções que permitam a avaliação da <condição> para um valor FALSO. Caso contrário, o fluxo do programa nunca sairá de dentro da estrutura de repetição. condição ? V instruções F Linguagem C 4 Estruturas de Repetição • Quando NÃO sabemos a priori a quantidade de repetições a serem feitas • “calcule a média da idade de uma turma qualquer” • Sabemos a priori quantos alunos a turma tem? N-A-O-til • Utilizamos uma condição a ser avaliada para que o bloco de instruções seja executado • Qual poderia ser esta condição? • Dica: defina uma situação dentro do problema a ser resolvido que nunca ocorrerá. • Exemplo: idade igual a zero enquanto a idade digitada for diferente de zero <instruções> Fim_enquanto Linguagem C 5 Estruturas de Repetição • Quando NÃO sabemos a priori a quantidade de repetições a serem feitas • “calcule a média da idade de uma turma qualquer” • Pseudocódigo Zera total e contador Leia a idade Enquanto a idade digitada for diferente de zero total <- total + idade incrementa o contador leia idade Fim_enquanto Media = total / contador Linguagem C 6 Estruturas de Repetição • Estrutura while • Sintaxe: while(<expressão lógica>) { <instruções> } Lê-se: “enquanto a <expressão_lógica> for verdadeira, as <instruções> serão executadas.” 1 #include <stdio.h> 2 main() 3 { 4 int idade, contador; 5 float total, media; 6 total = 0; 7 contador = 0; 8 printf( ”\nDigite a idade de um aluno (0 para sair): " ); 9 scanf( "%d", &idade ); 10 while (idade > 0) 11 { 12 total += idade; 13 contador += 1; 14 printf( ”\nDigite a idade de um aluno (0 para sair): " ); 15 scanf( "%d", &idade ); 16 } 17 if (contador > 0) 18 { 19 media = total / contador; 20 printf(“\n A média de idade da turma é de %5.2f.\n”, media); 21 } 22 } /* Fim da função main() */ Linguagem C 7 Estruturas de Decisão Linguagem C 8 Estruturas de Decisão EXERCÍCIOS 1. Uma grande empresa comprou 200t de minério e quer controlar a quantidade de minério que está sendo entregue. A entrega está sendo feita por caminhões-caçamba com tamanhos diferentes, que são pesados um a um. Faça um programa que peça a quantidade de minério de cada caminhão (em t) e emite uma mensagem indicando que a quantidade comprada foi alcançada, quando isso ocorrer. 2. Pedro cresce 3cm por ano e Paulo cresce 2cm por ano. Faça um programa que pede a altura de Pedro e de Paulo e informa, se Pedro for menor que Paulo, quantos anos serão necessários para que os dois tenham a mesma altura. 3. Lista: 33, 34, 36, 37, 38, 40. Estruturas de Repetição • Quando sabemos a priori a quantidade de repetições a serem feitas (p.ex.: “escreva seu nome 10 vezes na tela”.) • Um caso particular do caso geral visto anteriormente, onde a condição será sempre a avaliação de uma quantidade • Utilizamos uma variável para contabilizar o número de repetições sendo executadas: a variável de controle • três momentos da estrutura: • 1) inicialização da variável de controle • 2) avaliação do valor da variável de controle • 3) atualização da variável de controle condição ? V instruções F atualização inicialização Linguagem C 10 Estruturas de Repetição • Quando sabemos a priori a quantidade de repetições a serem feitas (p.ex.: “escreva seu nome 10 vezes na tela”.) • 1) inicialização da variável de controle • 2) avaliação do valor da variável de controle • 3) atualização da variável de controle • Pseudocódigo: cont <- 0 enquanto cont < 10 escrever “Fulano” cont <- cont + 1 Fim_enquanto Inicialização da variável Avaliação da variável Atualização da variável 1 #include <stdio.h> 2 main() 3 { 4 int contador; 5 contador = 0; 6 while (contador < 10) 7 { 8 printf( ”\nFulano de Tal" ); 9 contador += 1; 10 } 11 } /* Fim da função main() */ Linguagem C 11 Estruturas de Decisão Inicialização da variável Avaliação da variável Atualização da variável Linguagem C 12 Estruturas de Decisão EXERCÍCIOS Programa que mostra o seu nome 20 vezes. 1. Programa que mostra os números de 1 a 50. 2. Programa que mostra os números pares entre 50 e 80. 3. Programa que mostra os números ímpares entre 120 e 30 (em ordem descrescente). 4. Programa que pede 30 números e informa quantos são pares e quantos são ímpares. 5. Programa que pede um número inteiro e informa se ele é primo ou não. Estruturas de Repetição • Quando sabemos a priori a quantidade de repetições a serem feitas • três momentos da estrutura: • 1) inicialização da variável de controle • 2) avaliação do valor da variável de controle • 3) atualização da variável de controle • A linguagem C tem uma estrutura específica for(inicialização; avaliação; atualização) { <instruções> } avaliação ? V instruções F atualização inicialização • Códigos equivalentes: for(inicialização; avaliação; atualização) { <instruções> } inicialização while (avaliação) { <instruções> atualização } Estruturas de Repetição avaliação ? V instruções F atualização inicialização ... É EQUIVALENTE A ESTE ESTE CÓDIGO... #include <stdio.h> main() { int cont; cont = 0; while ( cont < 10 ) { printf( ”\nFulano de Tal" ); cont += 1; } } Linguagem C 15 Estruturas de Decisão #include <stdio.h> main() { int cont; for(cont=0; cont<10; cont+=1 ) { printf( ”\nFulano de Tal" ); } } Estruturas de Decisão • Observação: • Todos os três parâmetros da estrutura for(;;) são opcionais. • Exemplos: for(;x<10;x+=1) <instruções> for(;x<10;) <instruções> for(;;) <instruções> Operadores de Incremento e Decremento • Uma maneira mais compacta de representar incremento e decremento • A linguagem C e os operadores ++ e – – • O operador ++ incrementa a variável associada a ele • O operador -- decrementa a variável associada a ele Tradicional Operador de Atribuiçção Operador Unário Significado x = x + 1; x += 1; x++; Adiciona 1 a x x = x - 1; x -= 1; x--; Subtrai 1de x Operadores de Incremento e Decremento • Característica importante dos operadores ++ e -- quando estão em uma expressão • Pré-operação: • Incrementa/decrementa ANTES de processar a expressão • a = b + ++c; • Primeiro incrementa c, depois soma com b • Pós-operação: • Incrementa/decrementa DEPOIS de processar a expressão • a = b + c--; • Primeiro soma c com b, depois decrementa c Operadores de Incremento e Decremento • Exemplo: • Pré-operação: a = 0; b = 1; c = 2; a = b + ++c; Valores antesda expressão a = 0; b = 1; c = 2; Valores depois da expressão a = 4; b = 1; c = 3; Operadores de Incremento e Decremento • Exemplo: • Pós-operação: a = 0; b = 1; c = 2; a = b + c++; Valores antes da expressão a = 0; b = 1; c = 2; Valores depois da expressão a = 2; b = 1; c = 3; #include <stdio.h> main() { int cont; cont = 0; while ( cont < 10 ) { printf( ”\nFulano de Tal" ); cont++; } } Linguagem C 21 Operadores de Incremento e Decremento #include <stdio.h> main() { int cont; for(cont=0; cont<10; cont++ ) { printf( ”\nFulano de Tal" ); } } Linguagem C 22 Estruturas de Decisão EXERCÍCIOS Refazer os exercícios abaixo, utilizando a estrutura for(;;) 1. Programa que mostra o seu nome 20 vezes. 2. Programa que mostra os números de 1 a 50. 3. Programa que mostra os números pares entre 50 e 80. 4. Programa que mostra os números ímpares entre 120 e 30 (em ordem descrescente). 5. Programa que pede 30 números e informa quantos são pares e quantos são ímpares. 6. Programa que pede um número inteiro e informa se ele é primo ou não. Linguagem C 23 Estruturas de Repetição • Estrutura do...while • Sintaxe: do { <instruções> } while(<expressão lógica>); Lê-se: “as <instruções> serão executadas, enquanto a <expressão_lógica> for verdadeira” Linguagem C 24 Estruturas de Repetição - comparação • Estrutura do...while do { <instruções> } while(<expressão lógica>); Lê-se: “as <instruções> serão executadas, enquanto a <expressão_lógica> for verdadeira” AVALIAÇÃO DA CONDIÇÃO DEPOIS • Estrutura while while(<expressão lógica>) { <instruções> } Lê-se: “enquanto a <expressão_lógica> for verdadeira, as <instruções> serão executadas” AVALIAÇÃO DA CONDIÇÃO ANTES Linguagem C 25 Estruturas de Repetição • while or do...while, THAT´S THE QUESTION!!! • Qual estrutura usar???? • A que você quiser, desde que a estrutura cumpra as necessidades da solução • Comportamento das estruturas • while – executa nenhuma ou mais vezes as <instruções> • do...while – executa uma ou mais vezes as <instruções> #include <stdio.h> main() { int cont; cont = 0; while ( cont < 10 ) { printf( ”\nFulano de Tal" ); cont++; } } Linguagem C 26 Operadores de Incremento e Decremento #include <stdio.h> main() { int cont; cont = 0; do { printf( ”\nFulano de Tal" ); cont++; } while ( cont < 10 ); } Linguagem C 27 Exercícios de Fixação 1. Faça um programa que leia um número de 1 a 5 e escreva por extenso. Caso o usuário digite um número que não esteja neste intervalo, exibir mensagem: número inválido. Utilize a estrutura switch...case. 1. A série de Fibonacci pode ser expressa pela expressão abaixo: ni = ni-1 + ni-2 onde ni é o i-ésimo elemento da série. Sabendo-se que os dois primeiros elementos da série são 0 e 1, o início da série tem os seguintes elementos: 0, 1, 1, 2, 3, 5, 8, 13, 21, ... Desenvolva um programa que mostre os primeiros N elementos da série de Fibonacci, sendo N um valor inteiro digitado pelo usuário. 1. A concessionária de veículos “CARANGO VELHO” está vendendo os seus veículos com desconto. Faça um programa que calcule e exiba o valor do desconto e o valor a ser pago pelo cliente de vários carros. O desconto deverá ser calculado de acordo com o ano do veículo. Até 2000 - 12% e acima de 2000 - 7%. O sistema deverá perguntar se deseja continuar calculando desconto até que a resposta seja: “(N) Não” . Informar total de carros com ano até 2000 e total geral. Linguagem C 28 Exercícios de Fixação 1. A escola “APRENDER” faz o pagamento de seus professores por hora/aula. Faça um programa que peça o nível do professor e o número de aulas que ele deu no mês, e calcule e exiba o salário do professor. Sabe-se que o valor da hora/aula segue a tabela abaixo: Professor Nível 1: R$12,00 por hora/aula Professor Nível 2: R$17,00 por hora/aula Professor Nível 3: R$25,00 por hora/aula Linguagem C 29 Tipos Básicos em C • Informação básica armazenada em C • VALORES NUMÉRICOS, e só! • Tipos básicos definidos • char – armazena um valor numérico inteiro de 1 byte • int – armazena um valor numérico inteiro de 2 ou 4 bytes • float – armazena um valor numérico real de 4 bytes • double – armazena um valor numérico real de 8 bytes • void – não armazena coisa nenhuma... Linguagem C 30 Tipos Básicos em C Tipo Tamanho em Bytes Faixa Mínima char 1 -127 a 128 int 4 -2.147.483.648 a 2.147.483.647 float 4 Seis digitos de precisão double 8 Dez digitos de precisão Linguagem C 31 Tipos Básicos em C • Informação básica armazenada em C • VALORES NUMÉRICOS, e só! • Como então C armazena caracteres??? • Através da representação de cada caractere por um código • Tabela ASCII • Através da apresentação como um caractere • Como assim??? 65 variável conteúdo da variável Apresentações do valor 65 através do printf()“%d” 65 (número decimal) “%x” 41 (número hexadecimal) “%c” A (caractere) Linguagem C 32 Tabela ASCII básica Linguagem C 33 Tabela ASCII extendida Linguagem C 34 Tipos Básicos em C • Como representar um dado do tipo caractere? • Um caractere: com aspas simples • Exemplos: ‘A’, ‘+’, ‘#’, ‘a’, ... • Uma cadeia de caracteres (uma string): com aspas duplas • Exemplos: “Alô mundo!”, “Digite um número: “, ... • Atribuindo um caractere a uma variável do tipo char, e mostrando na tela: char letra; letra = ‘G’; fflush(stdin); scanf(“%c”, &letra); printf(“\nLetra digitada: %c”, letra): #include <stdio.h> main() { int x; for (x=32; x<128; x++) printf( ”\n %3d - %c”, x, x ); } Linguagem C 35 Tipos Básicos em C EXERCÍCIOS 1. Programa que pede 10 letras e informa quantas são vogais. 2. Programa que pede indefinidamente letras e informa quantas são vogais. O programa deve sair quando for digitado o caracter '*' (asterisco). 3. Dados três valores A, B e C, em que A e B são números reais e C é um caractere, pede-se para imprimir o resultado da operação de A por B se C for um símbolo de operador aritmético; caso contrário deve ser impressa uma mensagem de operador não definido. Tratar erro de divisão por zero. Linguagem C 36 Tipos Básicos em C EXERCÍCIOS Escrever um programa para uma empresa que decide dar um reajuste a seus 584 funcionários de acordo com os seguintes critérios: a) 50% para aqueles que ganham menos do que três salários mínimos; b) 20% para aqueles que ganham entre três até dez salários mínimos; c) 15% para aqueles que ganham acima de dez até vinte salários mínimos; d) 10% para os demais funcionários. O programa deve primeiro pedir o valor do salário mínimo. Depois deve pedir o salário dos funcionários, calculando e mostrando o reajuste e o novo salário reajustado. Mostrar no final quanto a empresa vai aumentar sua folha de pagamento. Linguagem C 37 Tipos Básicos em C Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21 Slide 22 Slide 23 Slide 24 Slide 25 Slide 26 Slide 27 Slide 28 Slide 29 Slide 30 Slide 31 Slide 32 Slide 33 Slide 34 Slide 35 Slide 36 Slide 37
Compartilhar