Baixe o app para aproveitar ainda mais
Prévia do material em texto
INF01040 ‐ Introdução à Programação Revisão – Primeira Prova Boas Práticas •Ajuda visual por cores •Indentação •Dividir para conquistar •Debugging e comentários Boas Práticas – Ajuda visual por cores Código com ajuda visual por cores Código sem ajuda visual por cores Salvem seus programas logo ao iniciar a digitação! Olha um problema ali! 3 Boas Práticas – Identação Código bem indentado Código mal indentado 4 Boas Práticas – Dividir para conquistar Problema da calculadora Implementar uma calculadora de quarto operações • Soma (+) • Subtração (‐) • Multiplicação (*) • Divisão (/) Solicitar uma operação e dois operandos Realizar a operação correspondente e mostrar o resultado na tela Sair do programa quando o usuário digitar ‘q’ 5 Boas Práticas – Dividir para conquistar Problema da calculadora Passo 1: Ler operação e do‐while //Limpa o que estiver no buffer do teclado antes de ler a operação 6 Boas Práticas – Dividir para conquistar Problema da calculadora Passo 2: Incluir um switch/case 7 Boas Práticas – Dividir para conquistar Problema da calculadora Passo 3: Controlar divisão por zero com if Comentários 8 Boas Práticas – Debugging Teste de mesa “automatizado” para as variáveis “fat “e “n” Programa final para entrega Resolvendo problemas 1. Usar debugging 2. Revisar o código 3. Ler os logs 9 Operadores •Aritméticos •Relacionais •Atribuição •Lógicos Operadores Aritméticos: / divisão * multiplicação + adição - subtração % resto da divisão inteira Relacionais: < menor > maior == igual <= menor ou igual >= maior ou igual != diferente Lógicos: && e || ou ! negação Atribuição: = atribuição ++ incremento -- decremento 11 Tipos de Variáveis •Inteiros (int) •Ponto Flutuante (float) •Caractere (char) Tipos de Variáveis Inteiros (1, 2, ‐30, 100) • Declaração: • int i; • Atribuição/Inicialização: • i = 1; • Leitura (Lembrar do &): • scanf("%d", &i); • Escrita (Lembrar que não tem &): • printf("Esse eh um inteiro %d \n", i); • Operações relacionais (para if, while, do‐while, etc): • (i == 10), (i < 0), (i >= -10) • Operações aritméticas • i / 5; i + 1; f++; Cuidado com as divisões de inteiros 13 Tipos de Variáveis Ponto Flutuante (1.0, 6.7, ‐2.1, 159.99) • Declaração: float f; • Atribuição/Inicialização: f = 1.0; • Leitura (Lembrar do &): scanf("%f", &f); • Escrita (Lembrar que não tem &): printf("Esse eh um float %f \n", f); • Operações relacionais (para if, while, do‐while, etc): (f == 10.0), (f < 0.0), (f >= -10.0) • Operações aritméticas f / 5.0; f + 1.0; f++; 14 Tipos de Variáveis Caractere ('a', 'b', 'x') – Armazena apenas uma letra • Declaração: char c; • Atribuição/Inicialização: c = 'a'; • Leitura (Lembrar do &): scanf("%c", &c); • Escrita (Lembrar que não tem &): printf("Esse eh um char %c \n", c); • Operações relacionais (para if, while, do‐while, etc): (c == 'a'), (c != 's') • Operações aritméticas Não se usa pode ser necessário usar um fflush(stdin) antes de ler um char sempre atribuir com aspas simples 15 Estruturas de Seleção •if‐else •If‐else‐if Estruturas de Seleção if‐else • Seleção a partir de condição lógica if (y != 0) { // Verdadeiro printf("Resultado: %f\n", x / y); } else { // Falso // O divisor deve ser != de zero } • Não necessariamente tem else if (x == 123) { printf("Parabens!!!\n"); } If‐else‐if • Compara variável com valores if (op == '+' ) { // soma } else if (op == '-’) { // subtrai } else { // opção inválida } ? V F 19 Estruturas de Repetição •while •do‐while •for Estruturas de Repetição while • Executar várias vezes um bloco de comandos de acordo com uma condição lógica int i = 0; while (i < 10) { // Faz alguma coisa i++; } • Ou char op = 'a'; while (op != 'q') { scanf("%c", &op); } do‐while • Mesmo que o while só que verifica a condição no final da execução int i = 0; do { // Faz alguma coisa i++; } while (i < 10); • Ou char op; do { scanf("%c", &op); } while (op != 'q'); ? V ? V 21 Estruturas de Repetição (mais uma) for • Forma geral for (inicialização; condição; incremento) { // Comandos } • Especialmente útil para contadores for (i = 0; i < 10; i++) { // Faz alguma coisa } ? V i = 0; while (i < 10) { // Faz alguma coisa i++; } 22 Arranjos Unidimensionais (Vetores) •Operações básicas •Operações avançadas Arranjos Unidimensionais (Vetores) Operações básicas • Declaração (de qualquer tipo): int i[10]; float f[10]; char c[10]; • Inicialização/Atribuição: int i[10] = {1, 5, 2, 1, 2, 3, 7, 8, 9, 1}; f[3] = 5.0; // Atribuição em uma posição qualquer • Leitura na primeira posição (Lembrar do &): scanf("%d", &i[0]); • Escrita da primeira posição (Lembrar que não tem &): printf("Esse eh um float %f \n", f[0]); 24 Arranjos Unidimensionais (Vetores) Operações avançadas • Percorrer para imprimir: int v[10], i; for (i = 0; i < 10; i++) { printf("%d \t", v[i]); } • Percorrer para ler: int v[10], i; for (i = 0; i < 10; i++) { scanf("%d", &v[i]); } • Percorrer para atribuir aleatórios entre 1 e 80: int v[10], i; for (i = 0; i < 10; i++) { v[i] = 1 + rand() % 80; } 25 Fluxogramas Representação do algoritmo que gera elementos da série de Fibonacci 30 Pseudo‐código •Calcular o fatorial de n •Contador •Acumulador •Sinalizador Pseudo‐código 1. //Calcular o fatorial de n 2. Principal() 3. Início 4. fat ← 1; 5. Ler n; 6. Enquanto(n > 1) 7. Faça 8. fat ← fat * n; 9. n ← n - 1; 10. Fim 11. Imprime fat; 12. Fim 32 Pseudo‐código (Contador) 1. Principal() 2. Início 3. aprovados← 0; 4. Para(i←0; i<20; i++) 5. Faça 6. Lê media; 7. Se(media >= 6) 8. Então 9. aprovados++; 10. Fim 11. Fim 12. Imprime aprovados; 13.Fim Para uma turma de 20 alunos contar quantos foram aprovados (média maior ou igual a 6) Para uma turma de 20 alunos contar quantos foram aprovados (média maior ou igual a 6) 33 Pseudo‐código (Acumulador) 1.Principal() 2.Início 3. valor← 0; 4. despesas← 0; 5. Faça 6. despesas ← despesas + valor; 7. Lê valor; 8. Enquanto(valor >= 0); 9. Imprime despesas; 10.Fim Somar as despesas de uma pessoa, até ela digitar uma despesa negativa para sair Somar as despesas de uma pessoa, até ela digitar uma despesa negativa para sair 34 Pseudo‐código (Sinalizador) 1. Principal() 2. Início 3. Lê numero; 4. eh_primo← 0; 5. Para(i←2; i < numero; i++) 6. Faça 7. Se (numero % i = 0) 8. Então 9. eh_primo ← 1; 10. Fim 11. Fim 12. Se (eh_primo = 0) 13. Então 14. Imprime “O numero eh primo”; 15. Senão 16. Imprime “O numero não eh primo”; 17. Fim 18. Fim Procurar os divisores de um valor. Se pelo menos um divisor for encontrado então o número NÃO é primo. Assumindo que o numero digitado é maior que zero. Procurar os divisores de um valor. Se pelo menos um divisor for encontrado então o número NÃO é primo. Assumindo que o numero digitado é maior que zero. 35
Compartilhar