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

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

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

Apresentações semelhantes


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

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

2 Exercícios - Macros Definir macros: eh_minuscula(c) => substitui por 0 ou 1 eh_maiuscula(c) => substitui por 0 ou 1 minuscula(c) => minúscula de c maiuscula(c)=> maiúscula de c

3 Solução - Macros # define eh_maiuscula(c) ((c)>=A && (c)<=Z? 1: 0) # define eh_minuscula(c) ((c)>=a && (c)<=z? 1: 0) Só faremos a conversão para minúscula se o caracter for maiúsculo. Neste caso, adicionamos ao A a quantidade de caracteres que o c estiver distante de a: Por exemplo:se c = f, temos c – a = 5 logo, A + 5 => F # define maiuscula(c) (eh_minuscula(c)? A+ (c) – a: (c)) # define minuscula(c) (eh_maiuscula(c)? a+ (c) – A: (c))

4 Testando a Solução # include # define eh_maiuscula(c) ((c)>=A && (c)<=Z? 1: 0) # define eh_minuscula(c) ((c)>=a && (c)<=z? 1: 0) # define maiuscula(c) (eh_minuscula(c)? A+ (c) – a: (c)) # define minuscula(c) (eh_maiuscula(c)? a+ (c) – A: (c)) main() { char c; clrscr(); printf("\nDigite um caracter: "); scanf("%c", &c); printf("\nConverte para maiuscula: %c", maiuscula(c)); printf("\nConverte para minuscula: %c", minuscula(c)); getch(); }

5 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) ); }

6 Solução para boolean.h # define false 0 # define true 1 # define not ! # define and && # define or || # define bool(exp) ((exp)==0 ? false: true) main() { printf("%s ", bool(not false) ); printf("%s ", bool(false and true) ); printf("%s ", bool(true or false) ); }

7 Função X Macro Função e macro são a mesma coisa? Macro: substituição simples do código (durante o pré-processamento) Função: conj. de instruções com finalidade específica chamada em tempo de execução Possui parâmetros de entrada e saída bem definidos Aloca espaço de memória quando chamada Libera memória quando termina sua execução

8 Exercício de Fatorial Codifique a função fat(n), que devolve o fatorial de n. n! = n * (n-1) * (n-2) *... * 2 * 1 0! = 1 (por definição) recebe parâmetro: n tipo devolvido: inteiro

9 Solução – Fatorial # include int fat(int n) { int i, f; f = 1; for(i = n; i>0; i--) f = f*i; return f; } main() { int n; printf("Digite n:"); scanf("%d", &n); printf("\nFatorial de %d : %d", n, fat(n)); getch(); }

10 Exercícios - Funções 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.

11 Solução criando arquivo rodizio.h void exibe_rodizio (int placa) { if (placa 9999) printf("Placa invalida"); else switch(placa%10) { case 1: case 2: printf("%s", "Segunda-feira"); break; case 3: case 4: printf("%s", "Terca-feira"); break; case 5: case 6: printf("%s", "Quarta-feira"); break; case 7: case 8: printf("%s", "Quinta-feira"); break; default: printf("%s", "Sexta-feira"); }

12 Testando a função exibe_rodizio() # include # include "rodizio.h" main() { int placa; clrscr(); printf("Placa:"); scanf("%d", &placa); printf("\nRodizio da placa %4d : ", placa); exibe_rodizio(placa); getch(); }

13 Função – devolve dia do rodízio int dia_rodizio (int placa) { if (placa 9999) return -1; switch(placa%10) { case 1: case 2: return 1; case 3: case 4: return 2; case 5: case 6: return 3; case 7: case 8: return 4; default: return 5; }

14 Programa teste - dia_rodizio() # include # include "rodizio.h" main() { int placa; clrscr(); printf("Placa:"); scanf("%d", &placa); printf("\nRodizio da placa %4d : ", placa); exibe_rodizio(placa); printf("\nNo %do dia da semana.", dia_rodizio(placa)); getch(); }

15 Outra solução – dia do rodízio int dia_rodizio_2 (int placa) { if (placa 9999) return -1; if (placa%10 == 0) return 5; return (placa%10 + 1)/2; }

16 Lista de Exercícios Questão 12 Quais os valores das variáveis x e y após a execução da instrução? Por quê? x=5; y = x x; Recapitulando: A instrução: a = b++;a = ++b; Equivale a: a = b;b = b+1; b = b+1;a = b;

17 Solução A instrução: y = x x; Equivale a: x = x +1; y = x + x; x = x +1; Portanto: x = = 6 y = = 12 x = = 7 Valores finais: X = 7 e y = 12

18 Lista de exercícios – Questão 4 Dados 3 números imprimir o maior. main() { int x, y, z; printf("\nDigite 3 numeros:\n "); scanf("%d %d %d", &x, &y, &z); if (x>y) { if (x>z) printf("\nMaior %d", x); else printf("\nMaior %d", z); } else { if (y>z) printf("\nMaior %d", y); else printf("\nMaior %d", z); } }

19 Exercícios para entregar Em sala: Para casa:


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

Apresentações semelhantes


Anúncios Google