Baixe o app para aproveitar ainda mais
Prévia do material em texto
LING. PROG. ESTRUTURADA Aula 03: Estruturas de Repetição Prof. André Alves Nogueira, MSc. SUMÁRIO ▪ Estrutura de repetição: FOR ▪ Operadores Unários ▪ Operadores Bitwise ▪ Operadores de atribuição composta ▪ Estrutura de repetição: WHILE ▪ Estrutura de repetição: DO..WHILE ▪ Palavras reservadas para controle de fluxo: break, continue e goto. ESTRUTURA DE REPETIÇÃO: FOR ▪ O comando for cria um laço de repetição no fluxo do programa baseado em três parâmetros: ▪ expressão inicial: Onde é executado apenas uma vez, na entrada do laço. ▪ condição: É executado a cada iteração do laço e determina quando o programa deve sair do mesmo. Caso a condição seja verdadeira, repete- se os do laço uma vez, caso seja falsa, o programa pula para a próxima instrução seguinte ao laço. ▪ incremento: É uma operação normal,executada a cada iteração. Geralmente é usada para incrementar contadores ou configurar variáveis. ▪ Sintaxe: for (<expressão inicial>; <condição>; <incremento>) { <comandos> } ESTRUTURA DE REPETIÇÃO: FOR - exemplo #include <stdio.h> #include <stdlib.h> int main (void){ int acum = 0, aux, i; for (i=0; i<10; i++) { printf("Insira um valor: "); scanf("%d",&aux); printf("Contador eh %d \n", i); acum += aux; printf("Acumulador eh %d \n\n", acum); } for (;;) { printf("Laco infinito.\n"); } system("pause"); return 0; } OPERADORES UNÁRIOS n A.f o r P.p s E ahle d a G n o s r e d a r uotn o F Operador Exemplo de expressão Explicação ++ (prefixo) ++a Incrementa ‘a’ em 1, e então usa o novo valor de ‘a’ na expressão em que estiver. -- (prefixo) --b Decrementa ‘b’ em 1, e então usa o novo valor de ‘b’ na expressão em que estiver. ++ (pós-fixo) a++ Usa o valor corrente de ‘a’ na expressão em que estiver, e então incrementa ‘a’ em 1. -- (pós-fixo) b-- Usa o valor corrente de ‘b’ na expressão em que estiver, e então decrementa ‘b’ em 1. + +c Positivo. Não tem efeito sobre ‘c’. - -c Negativo. Inverte o sinal de ‘c’. OPERADORES DE ATRIBUIÇÃO COMPOSTA P . p s E sr e d n A.f o r ahle d a G n o a r uotn o F 7 Operador Exemplo de expressão Equivalência += a += 1; a = a + 1; -= a -= 1; a = a - 1; *= a *= 1; a = a * 1; /= a /= 1; a = a / 1; %= a %= 1; a = a % 1; |= a |= 1; a = a | 1; ^= a ^= 1; a = a ^ 1; &= a &= 1; a = a & 1; <<= a <<= 1; a = a << 1; >>= a >>= 1; a = a >> 1; >>>= a >>>= 1; a = a >>> 1; OPERADORES DE ATRIBUIÇÃO COMPOSTA int x = 1; // Atribui 1 a x x += 5; //Equivalente a x = x + 5; x é igual a 6 x *= 2; //Equivalente a x = x * 2; x é igual a 12 x /= 2; //Equivalente a x = x / 2; x é igual a 6 x -= 3; //Equivalente a x = x - 3; x é igual a 3 x %= 5; //Equivalente a x = x % 5; x é igual a 3 x |= 4; //Equivalente a x = x | 4; x é igual a 7 x ^= 1; //Equivalente a x = x ^ 1; x é igual a 7 x &= 255 //Equivalente a x = x & 255; x é igual a 6 x <<= 2; //Equivalente a x = x << 2; x é igual a 24 x >>= 4; //Equivalente a x = x >> 3; x é igual a 1 x >>>= 7; //Equivalente a x = x >>> 7; x é igual a 0 PRECEDÊNCIA DE OPERADORES EM C . p s E re d n A.f o r P le d a G n o s ruotn o F a h a Operador Nome Prioridade () Parênteses 1 ++ -- + - ! (cast) Operadores unários 2 * / % Multip.,divisão e resto 3 + - Soma, subtração 4 << >> >>> Bitwise de deslocamento 5 < > <= >= Operador relacional 6 == != Igualdade e desigualdade 7 & AND lógico (bit) 8 ^ XOR lógico (bit) 9 | OR lógico (bit) 10 && AND lógico 11 || OR lógico 12 ?: Operador ternário 13 = *= /= %= += -= <<= >>= >>>= &= |= Operadores compostos 14 ESTRUTURA DE REPETIÇÃO: WHILE O comando while é utilizada quando não se quer que o corpo do laço seja necessariamente executado. A expressão de comparação é avaliada ANTES que o laço seja executado, enquanto ela for verdadeira os comandos são repetidos. Sintaxe: while (<condição>) { <comandos> } ESTRUTURA DE REPETIÇÃO: WHILE #include <stdio.h> #include <stdlib.h> int main (void){ int acum = 0, aux, i = 0; while (i < 10) { printf("Insira um valor: "); scanf("%d",&aux); printf("Contador eh %d \n", i); i++; acum += aux; printf("Acumulador eh %d \n\n", acum); } while (1) { printf("Laco infinito.\n"); } system("pause"); return 0; } ESTRUTURA DE REPETIÇÃO: DO..WHILE O comando do..while é utilizada quando se quer que o corpo do laço seja executado pelo menos uma vez. A expressão de comparação é avaliada DEPOIS que o laço foi executado, enquanto ela for verdadeira os comandos são repetidos. Sintaxe: do { <comandos> } while (<condição>); ESTRUTURA DE REPETIÇÃO: DO..WHILE #include <stdio.h> #include <stdlib.h> int main (void){ int acum = 0, aux, i = 0; do { printf("Insira um valor: "); scanf("%d",&aux); printf("Contador eh %d \n", i); i++; acum += aux; printf("Acumulador eh %d \n\n", acum); } while (i < 10); do { printf("Laco infinito.\n"); } while (1); system("pause"); return 0; } PALAVRAS RESERVADAS: BREAK, CONTINUE E GOTO ▪ Break: esta instrução serve para terminar a execução das instruções de um laço (for, do..while, while) ou para terminar um conjunto switch..case. ▪ Quando em um laço de repetição, esta instrução força a interrupção do laço independentemente da condição de controle. Ex: #include <stdio.h> #include <stdlib.h> int main (void){ int num = 0; float soma = 0.0, val; printf("Digite valores:\n"); do{ printf(“Valor: "); scanf("%f",&val); if (val < 0){ break; // saída do laço } num++; // Incrementa o contador soma += val; // Acumula o valor } while(1); //sempre verdadeiro printf(“Media = %.2f",soma/num); system("pause"); return 0; } ▪ Continue: esta instrução opera de modo semelhante a instrução break dentro do laço de repetição. Quando executada, ela pula as instruções de um laço de repetição sem sair do laço. Isto é, a instrução força a avaliação da condição de controle do laço. Ex: #include <stdio.h> #include <stdlib.h> int main (void){ int num = 0; float soma = 0.0, val; printf("Digite valores:\n"); do{ printf("Valor: "); scanf("%f",&val); if (val < 0){ continue; // pula a iteração } PALAVRAS RESERVADAS: BREAK, CONTINUE E GOTO num++; // Incrementa o contador soma += val; // Acumula o valor }while(num<10); // 10 valores printf("Media = %.2f",soma/num); system("pause"); return 0; } ▪ goto: esta instrução é chamada de desvio de fluxo. A instrução desvia o programa para um rótulo (posição identificada) no programa. São raros os casos onde a instrução goto é necessária, no entanto, há certas circunstancias, onde com prudência, ela pode ser útil. Sintaxe: goto rotulo; ... rotulo; ... PALAVRAS RESERVADAS: BREAK, CONTINUE E GOTO ▪ Exemplo do goto: #include <stdio.h> #include <stdlib.h> int main (void){ int num = 0; float soma = 0.0, val; printf("Digite valores:\n"); inicio: // rótulo printf("Valor: "); scanf("%f",&val); if (val < 0){ goto fim; // saída do laço } num++; // Incrementa o contador soma += val; // Acumula o valor goto inicio; fim: printf("Media = %.2f",soma/num); system("pause"); return 0; } PALAVRAS RESERVADAS: BREAK, CONTINUE E GOTO EXERCÍCIOS 1. A conversão de graus Fahrenheit para gerar centrígrados é obtida pela formula: 𝐶 = 5 ∗ (𝐹 − 32)/9 . Escreva um algoritmo que calcule e escreva uma tabela de graus centigrados em função de graus Fahrenheit que variem de 50 a 150 de 1 em 1. 2. Escreva um algoritmo para imprimir os números de 1 (inclusive) a 10 (inclusive) em ordem decrescente. 3. Escreva um algoritmo que mostre a serie de Fibonaccidos 20 primeiros termos. A sequência é dada por uma série de valores que cada termo subsequente é gerado pela soma de dois termos anteriores. A formula que explica isso é dada abaixo: 𝐹 𝑛 = 0, 𝑠𝑒 𝑛 = 0 1, 𝑠𝑒 𝑛 = 1 𝐹 𝑛 − 1 + 𝐹 𝑛 − 2 , 𝑐𝑎𝑠𝑜 𝑐𝑜𝑛𝑡𝑟á𝑟𝑖𝑜 4. Crie um programa para calcular o fatorial do número n inserido pelo usuário. Exemplo: 4! = 4*3*2*1 = 24 REFERÊNCIAS ▪ DEITEL, Harvey M.; DEITEL, P. J. C: como programar. 6.ed. São Paulo: Pearson, 2011. ▪ DAMAS, Luís. Linguagem C. 10.ed. São Paulo: LTC, 2013. ▪ BACKES, André. Linguagem C: Completa e Descomplicada. Rio de Janeiro: Elsevier, 2012.
Compartilhar