Sumário da sintaxe das estruturas de controle de fluxo em C
=========== = IF/ELSE = =========== if(EXPRESSÃO) COMANDO1 else COMANDO2 Executa COMANDO1 se EXPRESSÃO for verdadeira, caso contrário executa COMANDO2. A cláusula do 'else' pode ser omitida. ========== = SWITCH = ========== switch(EXPRESSÃO INTEIRA) CASOS Executa o CASO relativo ao valor da EXPRESSÃO INTEIRA, ou o CASO padrão (default) se não existir caso relativo ao valor da EXPRESSÃO INTEIRA. Exemplo: char operando; scanf("%c", &operando); switch(operando) { case '+': COMANDO case '-': COMANDO case '/': COMANDO case '*': COMANDO default: COMANDO /* caso padrão */ } ========= = WHILE = ========= while(EXPRESSÃO) COMANDO repete COMANDO enquanto EXPRESSÃO for verdadeira. ============ = DO/WHILE = ============ do COMANDO while(EXPRESSÃO) executa COMANDO uma vez e depois repete COMANDO enquanto EXPRESSÃO for verdadeira. ======= = FOR = ======= for(INICIO; TESTE; AVANÇO) COMANDO executa a expressão INICIO. depois repete COMANDO e AVANÇO, nesta ordem, enquanto a expressão TESTE for verdadeira. ========= = NOTAS = ========= Lembramos que um comando pode ser uma expressão seguida de ponto-e-vírgula ou um bloco de comandos entre chaves. Uma expressão é qualquer qualquer construção que tem um valor (uma variável, uma constante, uma chamada de função, uma expressão aritmética, ou uma expressão lógica).
Exercício 1. Uma importadora importa produtos de vários países. O preço do frete varia de acordo com o país seguindo a tabela abaixo. Faça um programa que lê o valor de um produto, o país de origem (imprima as opções possíveis em um menu) e imprima o valor total do produto mais frete.
País | Estados Unidos | França | México | Argentina | China |
Frete | 60,00 | 75,50 | 50,00 | 27,35 | 80,00 |
Exercício 2. O conceito de um aluno é calculado a partir de sua nota, seguindo a tabela abaixo. Faça dois programa que lêem a nota de um aluno e imprimem seu conceito. O primeiro programa deve utilizar IF/ELSE e o segundo programa deve utilizar SWITCH. Assuma que alunos só podem receber notas inteiras (isto é, sem decimais).
Nota | 0 a 4 | 5 | 6 | 7 | 8 | 9+ |
Conceito | F | E | D | C | B | A |
Exercício 3. Faça um programa para imprimir as raízes de uma equação do segundo grau na forma ax2 + bx + c. Caso a seja zero, imprima a mensagem "Equação não é de segundo grau". Se delta = b2 - 4ac for menor que zero, imprima a mensagem "Não existe raiz". Se delta for zero imprima a raíz e a mensagem "Raíz única".
Exercício 4. Faça um programa para imprimir todos os números pares entre 0 e 500.
Exercício 5. Faça um programa que calcule a soma de todos os números entre 0 e 500.
Exercício 6. Calcule o valor de i após a execução de cada um dos laços abaixo (no papel, sem rodar o código):(a) int i = 0; int j = 0; while(j < 1000) { j = j - 2; i++; } (b) for(int i = 0; i < 10; i++); (c) int i = 0; int j = 0; int k = 0; for(j = 0; j < 10; j++) { for(k = 0; k < 10; k++) { i++; } } (d) int i = 0; int j = 1; while(j < 1024) { j = j*2; i++; } (e) int i = 0; int j = 1; while(j < 65536) { j = j*2; i++; } /* dica: generalize o resultado da letra (d) */
Exercício 7. Faça um programa que lê um número inteiro e imprime todos os seus divisores.
Exercício 8. Faça um programa que lê um número inteiro N e imprime as N primeiras linhas do triangulo de Floyd:
1Exercício 9. O valor de e (número de Euler) pode ser aproximado pelo somatório 1 + 1/1! + 1/2! + 1/3! + 1/4! + 1/5! + ...
Implemente um programa para aproximar o valor de e. Seu programa deve aumentar a precisão da aproximação calculando iterativamente (isto é, num laço) os termos do somatório acima. Seu programa deve parar a aproximação quando o i-ésimo termo 1/i! for menor do que 10-6.
Desafio. Faça um programa para imprimir o triangulo de Pascal:
1Onde o k-ésimo elemento da n-ésima linha é o coeficiente binomial C(n, k) = n!/((k!)*(n-k)!), o número de combinações de n elementos com tamanho k.