1 / 31

Linguagem de Programação

Linguagem de Programação. Aula 06 – Macros e Funções. Média de uma seqüência de valores. Dado n positivo e uma seqüência de n números reais calcular a média dos elementos da seqüência.

thuong
Download Presentation

Linguagem de Programação

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Linguagem de Programação Aula 06 – Macros e Funções

  2. Média de uma seqüência de valores • Dado n positivo e uma seqüência de n números reais calcular a média dos elementos da seqüência. • Faça um loop para validar se n é maior que zero, ou seja, enquanto n<=0 exiba uma mensagem de erro e solicite um novo valor de n.

  3. Solução main() { int qtd, i; float vlr, soma, media; soma = 0; do /* loop validação*/ { printf("\nDigite a quantidade: "); scanf("%d", &qtd); } while (qtd <=0); printf("\nDigite os valores:\n "); for(i=0; i<qtd; i++) /*loop entrada de dados*/ { scanf("%f", &vlr); soma = soma + vlr; } media = soma/qtd; /*Calcula média*/ printf("\nMedia %.2f", media); }

  4. Exercício para entregar • Numa agência bancária, as contas são identificadas por números de até 6 dígitos seguidos de um dígito verificador, calculado da seguinte forma: Ex.: Seja n = 7314 o número da conta. 1) Obtemos a soma dos dígitos de n: s = 7+3+1+4 = 15 2) Obtemos o dígito verificador a partir do resto da divisão de s por 10: d = s % 10 = 15 % 10 = 5 O número da conta é: 007314-5 • Dado um número de conta n, exiba o número de conta completo correspondente.

  5. Lógica para a solução • Leia n (long int para suportar 6 dígitos); • Use um laço de repetição para somar seus dígitos; • Após o laço, obtenha o DV pelo resto da divisão por 10; • Imprima o número da conta formatado, incluindo o DV;

  6. Solução main(){long int n, s, c; printf("\n Digite numero da conta: "); scanf("%ld", &n); c = n; s = 0; while (n != 0) { s = s + (n % 10); /* ou s += (n%10);*/ n /= 10; /* ou n = n / 10;*/ } printf("\nConta: %06ld-%1d",c ,s%10);}

  7. Mais exercícios Um comerciante precisa informatizar o caixa de sua loja. Codifique um programa que: • Leia uma série de valores correspondendo aos preços das mercadorias compradas por um cliente (o valor zero finaliza a entrada); • Calcule o valor total; • Aplique o desconto conforme tabela ao lado; • Mostre o valor a ser pago pelo cliente.

  8. Solução main() { float total, vlr, final; total = 0; do { printf ("\nValor do item:"); scanf("%f", &vlr); total = total + vlr; } while (vlr!= 0); (...)

  9. Solução - continuação (...)if (total < 50) final = (total * 0.95); else if (total <= 100) final = (total * 0.90); else if (total <=200) final = (total * 0.85); else final = (total * 0.80); printf ("\nTotal da compra: %.2f", total); printf ("\nValor final com desconto: %.2f", final); }

  10. Pré-processador • Módulo adicional pelo qual passa o programa C antes de ser compilado. • Modifica o programa antes do mesmo ser compilado • Modificações feitas a partir de diretivas embutidas no código fonte • Principais diretivas: • #include • #define

  11. Diretiva #define • Usada para definir constantes simbólicas (substituições) • Dá maior legibilidade do código. • Sintaxe: #define identificador texto • Ex.: #define PI 3.14

  12. Exemplo # include <stdio.h> # define diga printf # define oi “\nOlá, tudo bem?” main() { diga (oi); }

  13. Exercício Inclua as diretivas define para o programa abaixo compilar/executar corretamente. programa inicio limpaTela; diga ("olá !"); fim

  14. Macros • Quando a diretiva é usada para definir substituições com parâmetros. • Exemplo: #define quad(n) nn Substituições: quad( x ) => x * x quad( 2 ) => 2 * 2 quad( f(x-3)) => f(x–3) * f(x–3) quad( x+4 ) => x+4 * x+4 Cuidado com espaços!

  15. Possíveis erros • Cuidado ao construir macros, pois a substituição pode provocar alguns erros. Por exemplo: quad( 2+3 ) = 25? 2+3 * 2+3 = 11 100/quad(2) = 25? 100/ 2 * 2 = 100

  16. Corrigindo • Gostaríamos que ao invés de: quad(2 + 3) = 2+3*2+3 Tivéssemos: quad(2 + 3) = (2+3)*(2+3) • Então alteremos: #define quad(n) nn Para: #define quad(n) (n)(n)

  17. Exercício • Defina as seguintes macros: • soma(x, y); • max(x, y); • abs(n); • Para casa: • eh_minuscula(c); • eh_maiuscula(c); • minuscula(c); • maiuscula(c);

  18. Diretiva #include • Inclui uma cópia do arquivo entre <> ou “” no código fonte do nosso programa • Exemplos: #include <stdio.h> #include <conio.h> #include <math.h>

  19. Incluindo nossos arquivos • Podemos desenvolver nossos arquivos cabeçalho (header) e incluí-los usando a diretiva #include. • Em geral usamos os sinais <> para arquivos do compilador C que ficam no diretório INCLUDE. • E “” para arquivos que nós mesmos desenvolvemos.

  20. Exemplo: arquivo de macros /* macros.h */ # define abs(n) ((n)<0 ? -(n) : (n)) # define max(x, y) ((x)>(y)? (x) : (y)) # define soma(x, y) ((x) + (y)) Salvar como macros.h

  21. Usando arquivo de macros /*teste.c*/ #include <stdio.h> #include “macros.h” main() { int n1 = -7; int n2 = 8; printf("\n %d ", soma(2*3, 1 + 3)); printf("\n %d ", abs(n2)); printf("\n %d ", max(n1, n2)); }

  22. Exercício para casa • Crie o arquivo boolean.h com as definições necessárias para que o programa abaixo possa produzir a saída: true false true. main() { printf("%s ", bool(not false) ); printf("%s ", bool(false and true) ); printf("%s ", bool(true or false) ); }

  23. Funções • Que são funções? • Programas em C possuem uma função main( ) com a lógica principal do programa. • Fazemos uso de funções existentes em bibliotecas C. • printf(); • scanf(); • getch(); • clrscr();

  24. Definição de funções • Podemos definir nossas próprias funções. • Vantagens: • Clareza do código fonte • Reuso da lógica. Uma vez codificada pode ficar disponível em bibliotecas

  25. Sintaxe tipo_devolvidonome_funcao(parâmetros) { declarações comandos } • tipo_devolvido: tipo de dado que a função devolve. (void: não devolve dados) • nome_funcao: nome que identifica a função • parâmetros: lista de variáveis que representam entrada de dados na função

  26. Funções que não devolvem valores void boas_vindas( void ) { printf("\nSeja bem vindo."); } void main() { boas_vindas(); getch(); } Não é possível atribuir a variáveis ou expressões; x = boas_vindas (); Não é possível usar parâmetros quandonão definidos; boas_vindas(“Olá”);

  27. Funções com parâmetros void cumprimentos( char c ) { switch(c) { case ‘N’: printf("\nBoa noite!"); break; case ‘T’: printf("\nBoa tarde! ");break; default : printf("\nBom dia!"); } } void main() { cumprimentos(‘N’); getch(); }

  28. Funções que devolvem valores • Funções que não são do tipo void usam comando return para devolver o resultado da função; • O comando return interrompe a execução da função, voltando com o controle para o programa principal ou para a função que a chamou. • Neste caso, as linhas de comando codificadas após o comando return não serão executadas.

  29. Exemplos float hip (float a, float b) { float h; h = sqrt( pow(a,2)+pow(b,2)); return h; } ... x = hip (3, 4); /* x recebe 5 */ double max (double a, double b) { if ( a>b ) return a; /* interrompe a função*/ return b; } ... y = max (10, 20); /* y recebe 20*/

  30. Exercícios (entregar) • Codifique a função fat(n), que devolve o fatorial de n. • Codifique a função rodizio(placa), que recebe o número da placa de um veículo e exibe o dia em ele está no rodízio.

  31. Data da P1 • Primeira prova de LP • 13/out • Após semana de tecnologia

More Related