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

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

Linguagem de Programação

Apresentações semelhantes


Apresentação em tema: "Linguagem de Programação"— 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 <stdio.h> # include <conio.h>
# 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 <stdio.h> # include <conio.h>
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<0 || 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"); case 5: case 6: printf("%s", "Quarta-feira"); case 7: case 8: printf("%s", "Quinta-feira"); default: printf("%s", "Sexta-feira"); }

12 Testando a função exibe_rodizio()
# include <stdio.h> # include <conio.h> # 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<0 || 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 <stdio.h> # include <conio.h> # 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<0 || 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: Equivale a: x = x +1; y = x + x; Portanto:
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: 2 5 8 Para casa: 12 16 17 24


Carregar ppt "Linguagem de Programação"

Apresentações semelhantes


Anúncios Google