Aula 15
----------------------------
#define com e sem parâmetros
----------------------------
Exemplos:
----------------------------------------
- máximo entre 2 elementos
#define MAXIMO(A,B) A>B?A:B
....
t = MAXIMO(x*y,z+1); ==> x*y>z+1?x*y:z+1
----------------------------------------
- troca 2 elementos do tipo T (int, double, etc, etc)
em vez de {int t;t=a;a=b;b=t;}
escrevemos troca(int,a,b)
#define troca(T,A,B) ...
----------------------------------------
- letra maiúscula?
#define MAIUSC(C) (C>='A' && C<='Z')
int c;
if(MAIUSC(c+2)) blablabla;
else
blebleble;
----------------------------------------
algum perigo...
#define VAL 2+5
x = VAL*VAL;
printf("%d\n",x);
Comparação entre funções e macros...
-------------------
main com parâmetros
-------------------
Experimentemos...
int main(int np, char *par[]){
int i;
for(i=0;i<np;i++)
printf("par %d = %s\n",i,par[i]);
return 0;
}
a.out ... * ...
Nomes tradicionais: np: argc, par: argv
Utilidade:
uma calculadora
ler e escrever ficheiros (cp ... ...)
Nota.
Conversão de strings para inteiros
sscanf(s,"...",...)
\________^
--->
e vice-versa
sprintf(s,"...",...)
^_______/
<---
Em ambos os casos - como também em scanf, fscanf, printf e fprintf - o
valor retornado é o número de valores efectivamente lidos ou escritos.
Exercício
---------
Escreva uma calculadora com as operações +, -, *, / que funciona da
forma indicada
calc 12 + 100
112
- switch é útil
- erros: argc errado,
sscanf dá 0, operação errada...
PC/PI - página reservada - versão 2005.02.08