A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Linguagem de Programação Aula 06 – Macros e Funções."— Transcrição da apresentação:

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

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 = = 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 é: 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 # 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) nn 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= /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) nn 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

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 #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_devolvido nome_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 quando nã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


Carregar ppt "Linguagem de Programação Aula 06 – Macros e Funções."

Apresentações semelhantes


Anúncios Google