Buscar

Prog I - Aula 4: Introdução a linguagem C

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 62 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 62 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 62 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Introdução a C • Tipos de Dados •
Variáveis • Operadores
INF1005 – Programação I – 33B
Prof. Gustavo Moreira
gmoreira@inf.puc-rio.br
1
introdução a C
tópicos
sistemas numéricos
tipos de dados
variáveis e constantesvariáveis e constantes
operadores
pré-processamento
referência
Capítulo 2 da apostila
2
algumas linguagens de programação
Java
Ruby
PHP
Lua
1993
C++
1983
Pascal
1970
ALGOL 68
1968
COBOL 61
FORTRAN I
1957
Visual Basic
1991
LISP
1959
... ...
3
PHP
1995
1972
C
Smalltalk
Prolog
COBOL 61
1961
Javascript
Perl
1996
2000
C#
linguagem C
Criada por Dennis Ritchie 
(co-criador do UNIX) 
entre 1969 e 1973 no AT&T Bell Labs
(Dennis Ritchie 1941-2011)
4(K&R 1972)
exemplo de programa em C
#include <stdio.h>
int main (void) {
float cels; 
float fahr; 
printf("Digite a temperatura em Celsius: ");
scanf("%f", &cels);
fahr = 1.8 * cels + 32; 
printf("Temperatura em Fahrenheit: %f", fahr);
return 0;
} 5
03_01_conversao_temp.c
exemplo de programa em C
/* Converte temperatura de Celsius em Fahrenheit */
#include <stdio.h> /* inclui biblioteca padrão */
int main (void) {
float cels; /* temperatura em Celsius */
float fahr; /* temperatura em Fahrenheit */
/* exibe instrução para usuário */
printf("Digite a temperatura em Celsius: ");
/* lê do teclado temperatura em Celsius */
scanf("%f", &cels);
/* calcula a conversão */
fahr = 1.8 * cels + 32; 
/* exibe na tela o resultado */
printf("Temperatura em Fahrenheit: %f", fahr);
return 0;
} 6
03_01_conversao_temp.c
exemplo de programa em C
/* Converte temperatura de Celsius em Fahrenheit */
#include <stdio.h> /* inclui biblioteca padrão */
int main (void) {
float cels; /* temperatura em Celsius */
float fahr; /* temperatura em Fahrenheit */
/* exibe instrução para usuário */
printf("Digite a temperatura em Celsius: ");
comentários são
marcados entre 
/* e */
/* lê do teclado temperatura em Celsius */
scanf("%f", &cels);
/* calcula a conversão */
fahr = 1.8 * cels + 32; 
/* exibe na tela o resultado */
printf("Temperatura em Fahrenheit: %f", fahr);
return 0;
} 7
exemplo de programa em C
/* Converte temperatura de Celsius em Fahrenheit */
#include <stdio.h> /* inclui biblioteca padrão */
int main (void) {
float cels; /* temperatura em Celsius */
float fahr; /* temperatura em Fahrenheit */
/* exibe instrução para usuário */
printf("Digite a temperatura em Celsius: ");
função main
indica início do 
programa
/* lê do teclado temperatura em Celsius */
scanf("%f", &cels);
/* calcula a conversão */
fahr = 1.8 * cels + 32; 
/* exibe na tela o resultado */
printf("Temperatura em Fahrenheit: %f", fahr);
return 0;
} 8
exemplo de programa em C
/* Converte temperatura de Celsius em Fahrenheit */
#include <stdio.h> /* inclui biblioteca padrão */
int main (void) {
float cels; /* temperatura em Celsius */
float fahr; /* temperatura em Fahrenheit */
/* exibe instrução para usuário */
printf("Digite a temperatura em Celsius: ");
cada bloco de 
instruções é 
marcado entre 
{ e }
/* lê do teclado temperatura em Celsius */
scanf("%f", &cels);
/* calcula a conversão */
fahr = 1.8 * cels + 32; 
/* exibe na tela o resultado */
printf("Temperatura em Fahrenheit: %f", fahr);
return 0;
} 9
exemplo de programa em C
/* Converte temperatura de Celsius em Fahrenheit */
#include <stdio.h> /* inclui biblioteca padrão */
int main (void) {
float cels; /* temperatura em Celsius */
float fahr; /* temperatura em Fahrenheit */
/* exibe instrução para usuário */
printf("Digite a temperatura em Celsius: ");
variáveis são
declaradas com 
seu tipo (número
inteiro, real, etc.)
/* lê do teclado temperatura em Celsius */
scanf("%f", &cels);
/* calcula a conversão */
fahr = 1.8 * cels + 32; 
/* exibe na tela o resultado */
printf("Temperatura em Fahrenheit: %f", fahr);
return 0;
} 10
exemplo de programa em C
/* Converte temperatura de Celsius em Fahrenheit */
#include <stdio.h> /* inclui biblioteca padrão */
int main (void) {
float cels; /* temperatura em Celsius */
float fahr; /* temperatura em Fahrenheit */
/* exibe instrução para usuário */
printf("Digite a temperatura em Celsius: "); printf é função
que exibe algo na/* lê do teclado temperatura em Celsius */
scanf("%f", &cels);
/* calcula a conversão */
fahr = 1.8 * cels + 32; 
/* exibe na tela o resultado */
printf("Temperatura em Fahrenheit: %f", fahr);
return 0;
} 11
que exibe algo na
tela
exemplo de programa em C
/* Converte temperatura de Celsius em Fahrenheit */
#include <stdio.h> /* inclui biblioteca padrão */
int main (void) {
float cels; /* temperatura em Celsius */
float fahr; /* temperatura em Fahrenheit */
/* exibe instrução para usuário */
printf("Digite a temperatura em Celsius: ");
/* lê do teclado temperatura em Celsius */
scanf("%f", &cels);
/* calcula a conversão */
fahr = 1.8 * cels + 32; 
/* exibe na tela o resultado */
printf("Temperatura em Fahrenheit: %f", fahr);
return 0;
} 12
scanf é função
que lê valores do 
teclado e os
atribui a variáveis
(nesse caso
apenas um valor 
real, atribuído à 
variável cels)
exemplo de programa em C
/* Converte temperatura de Celsius em Fahrenheit */
#include <stdio.h> /* inclui biblioteca padrão */
int main (void) {
float cels; /* temperatura em Celsius */
float fahr; /* temperatura em Fahrenheit */
/* exibe instrução para usuário */
printf("Digite a temperatura em Celsius: ");
/* lê do teclado temperatura em Celsius */
scanf("%f", &cels);
/* calcula a conversão */
fahr = 1.8 * cels + 32; 
/* exibe na tela o resultado */
printf("Temperatura em Fahrenheit: %f", fahr);
return 0;
} 13
comando de 
atribuição
(variável fahr
recebe valor à 
direita do = )
exemplo de programa em C
/* Converte temperatura de Celsius em Fahrenheit */
#include <stdio.h> /* inclui biblioteca padrão */
int main (void) {
float cels; /* temperatura em Celsius */
float fahr; /* temperatura em Fahrenheit */
/* exibe instrução para usuário */
printf("Digite a temperatura em Celsius: ");
/* lê do teclado temperatura em Celsius */
scanf("%f", &cels);
/* calcula a conversão */
fahr = 1.8 * cels + 32; 
/* exibe na tela o resultado */
printf("Temperatura em Fahrenheit: %f", fahr);
return 0;
} 14
retorno da main 
indica término do 
programa; por
convenção, 0 indica
que não houve erro
exemplo de programa em C - execução
/* Converte temperatura de Celsius em Fahrenheit */
#include <stdio.h> /* inclui biblioteca padrão */
int main (void) {
float cels; /* temperatura em Celsius */
float fahr; /* temperatura em Fahrenheit */
/* exibe instrução para usuário */
printf("Digite a temperatura em Celsius: ");
Digite a temperatura em Celsius: 0
Temperatura em Fahrenheit: 32.000000
/* lê do teclado temperatura em Celsius */
scanf("%f", &cels);
/* calcula a conversão */
fahr = 1.8 * cels + 32; 
/* exibe na tela o resultado */
printf("Temperatura em Fahrenheit: %f", fahr);
return 0;
} 15
03_01_conversao_temp.c
diretivas de pré-processamento
funções auxiliares
(Cap. 3 da apostila)
estrutura de um programa em C
#include <stdio.h>
/* Retorna o valor equivalente em Fahrenheit à 
temperatura c (em Celsius) */ 
float converte (float c) {
return 1.8F * c + 32;
}
comentários
(em todo o código)
função principal (main):
início da execução do programa
int main (void) {
float cels; /* temperatura em Celsius */
float fahr; /* temperatura em Fahrenheit */
printf("Digite a temperaturaem Celsius: ");
scanf("%f", &cels);
fahr = converte(cels); 
printf("Temperatura em Fahrenheit: %f", fahr);
return 0;
}
16
03_01_conversao_temp.c
comentários
(em todo o código)
a importância de escrever programas
legíveis
� legíveis (para você e outros programadores):
� comentários /* ignorados pelo compilador */
� endentação
� escolha dos nomes das variáveis e funções
� que os usuários consigam utilizar:
� instruções para os usuários� instruções para os usuários
17
Leia o código abaixo. 
Você gostaria de trabalhar assim? Seria eficiente?
#include <stdio.h> 
int main (void) { float x, y; scanf("%f", &x); y = 1.8 * x + 32; 
printf("%f", y); return 0; }
(sistemas
numéricos)
18
bits vs. algarismos decimais
0
1
bit algarismo 
decimal
0
1
5
6
19
2
3
4
7
8
9
sistemas numéricos
decimal
(base 10)
9 5 0 7
9×103 + 5×102 + 0×101 + 7×100=
9000 + 500 + 0 + 7
20
9000 + 500 + 0 + 7
binário
(base 2)
1 0 1 1
1×23 + 0×22 + 1×21 + 1×20=
8 + 0 + 2 + 1 = 11
sistemas numéricos
Os governantes do planeta Kroyz querem declarar guerra ao planeta
Bript, alegando que eles foram enganados na conta de um restaurante
da Federação de Planetas Matmatix.
Considerando que os Kroyzen possuem oito dedos em cada mão, e os
Briptus possuem quatro dedos em cada mão, verifique se as contas
abaixo estão corretas, se são equivalentes, e quais os valores
equivalentes no sistema decimal.
EX. 01
equivalentes no sistema decimal.
21
Kroyzen
2E9
+ 141
42A
Briptus
1351
+ 501
2052
bits & bytes
0
1
bit
22
byte 0 0 0 0 1 0 1 1
8 bits
Como obter a representação binária de um 
número decimal?
37 2
1 18 2
0 9 2
23
1 4 2
0 2 2
0 1
37 = 32 + 4 + 1 = 25+22+20 = 00100101
tipos de 
dados
24
Quanto cabe num byte?
28 valores → 256 valores
unsigned char – valores inteiros não negativos: 0 a 255
char – valores inteiros: -128 a 127
1 1 1 1 1 1 1 1 = 255 (0xFF)
03_03_tipos_de_dados.c
= 127 (0x7F)0 1 1 1 1 1 1 1
último bit utilizado como sinal
25
= -128 (0x80)1 0 0 0 0 0 0 0
= 127 (0x7F)0 1 1 1 1 1 1 1
= -1 (0xFF)1 1 1 1 1 1 1 1
= -127 (0x81)1 0 0 0 0 0 0 1
= -126 (0x82)1 0 0 0 0 0 1 0
tipos de dados
char
unsigned char: 0 a 255
char –128 a 127
short int
short int: –32 768 a 32 767
1 byte
2 bytes
letra ‘C’ = 67
0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0
0 1 0 0 0 0 1 1
26
short int: –32 768 a 32 767
unsigned short int: 0 a 65 535
long int
long int: –2 147 483 648 a 2 147 483 647
unsigned long int: 0 a 4 294 967 295 4 bytes
456
1.077.150.273
0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1
tipos de dados (cont.)
tipo bytes valores
números 
inteiros
char 1 -128 a 127
short int 2 –32.768 a 32.767
long int 4
–2.147.483.648
a 2.147.483.647
27
inteiros
long long 8
-9.223.372.036.854.775.808 
a 9.223.372.036.854.775.807
int (em geral = long int)
números 
reais
float 4 ~10-38 a 1038
double 8 ~10-308 a 10308
variáveisvariáveis
28
O que é uma variável?
O nomenomenomenome que se dá a um espaço reservado na memória, onde será
possível armazenar um valorvalorvalorvalor de um determinado tipotipotipotipo.
Antes de ser utilizada, uma variável deve ser declaradadeclaradadeclaradadeclarada, indicando
seu tipo e, opcionalmente, seu valor inicial:
int contador = 0;
float a, b;
float media = 0.0F;
29
memória (esquema meramente ilustrativo)
número inteiro de nome
contador
número de ponto flutuante
de nome a
número de ponto flutuante
de nome b
número de ponto flutuante
de nome media
0x24A57B89
0x24A57B8D
0x24A57B91
0x24A57B95
todo espaço de 
memória tem um 
endereço único
Como declarar uma variável?
declaração de variáveis
float tempC;
float tempF;
declaração de variáveis de um 
mesmo tipo (em uma só instrução)
float tempC, tempF;
int a, b;
inicialização de valor
(atribuição após a declaração)
int a, b;
a = 5;
b = 10;
30
Toda variável deve ser inicializada antes de ser utilizada
(ex.: exibida, incluída em uma expressão)
declaração com inicialização
int a = 5, b = 10;
constantes
valores constantes
int a = 5;
int b;
b = a + 12;
exemplos
inteiros
13 –4
double
12.45
1245e-21245e-2
float
12.45F
char
'a' 'A'
string (cadeia de char)
"Rio de Janeiro" "RJ" 
"a" "A"
31
Qual é o valor de a?
exemplo 1
int a;
a = 4;
a=?
EX. 02
a=?
exemplo 3
int a, b=5;
32
03_05_variavel_a.c!!
a=?
exemplo 2
int a;
a = 4.9F;
a=?
exemplo 4
int a, b, c=3;
a = b+c;
conversão de tipo
implícita (automática, na avaliação de uma expressão)
float a = 3; /* conversão para 3.0F */
explícita, através de cast
int x;
float y = 3.5F;
x = (int) y; /* descarta parte fracionária de y */
33
03_07_conv_tipo.c
exercício
Suponha que:
a = 3;
b = a / 2;
c = b + 3.1F;
EX. 03
Como as variáveis a, b e c devem ser declaradas 
(int, float etc.) para obter cada um dos seguintes 
resultados?
c = 4.6
c = 4.1
c = 4
34
float a, b, c;
int a, b; float c;
int a, b, c;
03_09_explora_tipo.c
caracteres (char: 1 byte) – tabela ASCII
American Standard Code for Information Interchange
35
caracteres: declaração e inicialização
char a = 98;
char b = 'A';
int c = b;
char d;
d = c + 32;
03_10_char.c
Qual é o caractere armazenado em a?
Qual é o valor de c?
Qual é o caractere armazenado em d?
36
d = c + 32;
'b'
65
'a'
Dado que, na tabela ASCII, A=65, Z=90, a=97 
e z=122, como converter uma letra maiúscula
em letra minúscula?
EX. 04
37
dúvidas?dúvidas?
38
operadoresoperadores
39
operadores
aritméticos
+ – * / % (módulo)
atribuição
=
relacionais
> < <= >= == !=
lógicos
&& (and)=
incremento e 
decremento
++ ––
&& (and)
|| (or)
! (not)
40
operadores aritméticos
+ – * / % (módulo)
7 / 2 � 3 (a parte fracionária é descartada)
7 / 2.02.02.02.0 � 7.07.07.07.0 / 2.0 � 3.57 / 2.02.02.02.0 � 7.07.07.07.0 / 2.0 � 3.5
7.07.07.07.0 / 2 � 7.0 / 2.02.02.02.0 � 3.5
(converte operandos para a maior precisão)
41
03_13_op_arit.c
operadores aritméticos – módulo %
Resto da divisão inteira (operandos devem ser inteiros)
0 % 3 resulta em 0
1 % 3 resulta em 1
2 % 3 resulta em 2
3 % 3 resulta em 0
4 % 3 resulta em 14 % 3 resulta em 1
5 % 3 resulta em 2
5 % 0 resulta em _____?
Útil para identificar números pares ou ímpares
se x % 2 é 0, o número x é par
se x % 2 é 1, o número x é impar
42
Em que outras 
situações o % é útil?
03_13_op_arit.c
operadores de atribuição
=
a = 5;
y = x = 5;
operadores de atribuição compostos
i += 2 equivale a i = i + 2 i += 2 equivale a i = i + 2 
i *= 2 equivale a i = i * 2 
i /= 2 equivale a i = i / 2 
...
var op= expr; equivale a var = var op (expr);
x *= y+1; equivale ao quê?
43
x = x * (y+1);
operadores de incremento e decremento
após a variável:
“utiliza” o valor original, depois incrementa
x = 3;
a = x++; a = x; x = x + 1; a=3; x=3+1;
antes da variável
primeiro incrementa, depois “utiliza” o valor 
resultante
x = 3;
a = ++x;
44
x = x + 1; a = x; x=3+1;a=4;
EX. 05operadores de incremento e decremento
int n = 4, x = 1;
n = 5;
x = n++;
n x
x = ++n;
x = ++n * 2;
x = n++ * 3;
45
03_11_op_inc_dec.c
operadores de incremento e decremento
int n = 4, x = 1;
n = 5; /* n � 5 */
x = n++; /* x � 5; n incrementa para 6 */
EX. 05
x = ++n; /* n incrementa para 7; x� 7 */
x = ++n * 2; /* n incrementa para 8; x � 16 */
x = n++ * 3; /* x � 24; n incrementa para 9 */
46
03_11_op_inc_dec.c
dúvidas?dúvidas?
47
operador sizeof
número de bytes ocupados por um tipo
int a = sizeof(long); /* 4 */
a = sizeof(char); /* 1 */
a = sizeof(short); /* 2 */a = sizeof(short); /* 2 */
a = sizeof(float); /* 4 */
a = sizeof(double); /* 8 */
48
número de bytes ocupados por um ponteiro
(endereço de memória)
máquinamáquinamáquinamáquina de 32 bitsde 32 bitsde 32 bitsde 32 bits
sizeof(void*): 4
máquinamáquinamáquinamáquina de 64 bitsde 64 bitsde 64 bitsde 64 bits
sizeof(void*): 8
49
precedência de operadores
tipo de operador operador associatividade
primários () [] . -> expr++ expr-- esquerda para direita
unários * & + - ! ~ ++expr --expr
(typecast) sizeof
direita para esquerda
binários * / % esquerda para direita
+ -
>> <<
< > <= >=< > <= >=
== !=
&
^
|
&&
||
ternário ? : direita para esquerda
atribuição = += -= *= /= %= >>= <<= &= ^= |= direita para esquerda
50
relembrando: ciclo de desenvolvimento
desenvolvimento editor de texto
correção em
caso de erros
de compilação
correção em
caso de erros
de exeçucão
programa em C
(código fonte: arq.c)
51
testes
saída
programa executável
(arq.exe)
compiladorcompilação
saída
saída
entrada
entrada
entrada
pré-processamento
pré-
processador
52
diretivas de pré-processamento: #include
#include <stdio.h> /* definições de printf, scanf, ... */
int main (void)
{
53
float raio; /* raio da esfera */
float vol; /* volume calculado */
printf("Entre com o raio da esfera: ");
scanf("%f", &raio);
vol = (4.0 / 3.0) * 3.14159F * raio * raio * raio;
printf("Volume da esfera : %f", vol);
return 0;
}
diretiva #include “arquivo” ou #include <arquivo>
o pré-processador substitui o “#include” pelo corpo do arquivo 
especificado
void testa_fatorial(int n);
void testa_etc(); 
void testa_fatorial(int n);
void testa_etc();
arquivo fc.h no subdiretório aux
54
#include "aux/fc.h"
int main(void)
{
testa_fatorial(1);
return 0;
}
void testa_etc(); 
int main(void)
{
testa_fatorial(1);
return 0;
}
pré-proc.
void testa_etc();
arquivo prog.c
diretivas de pré-processamento: #include
#include <stdio.h> /* definições de printf, scanf, ... */
int main (void)
{
55
float raio; /* raio da esfera */
float vol; /* volume calculado */
printf("Entre com o raio da esfera: ");
scanf("%f", &raio);
vol = (4.0 / 3.0) * 3.14159F * raio * raio * raio;
printf("Volume da esfera : %f", vol);
return 0;
}
diretivas de pré-processamento: #define
#include <stdio.h> /* definições de printf, scanf, ... */
#define PI 3.14159F /* símbolo a ser substituído no código */
int main (void)
{
56
float raio; /* raio da esfera */
float vol; /* volume calculado */
printf("Entre com o raio da esfera: ");
scanf("%f", &raio);
vol = (4.0 / 3.0) * PI * raio * raio * raio;
printf("Volume da esfera : %f", vol);
return 0;
}
diretiva #define constante valor
o pré-processador substitui toda ocorrência da constante pelo 
valor especificado
#define PI 3.14159F
57
float area (float r)
{
float a = PI * r * r;
return a;
}
float area (float r)
{
float a = 3.14159F * r * r;
return a;
}
pré-proc.
diretivas de pré-processamento: 
#include e #define
#include <stdio.h> /* definições de printf, scanf, ... */
#include <math.h> /* definições de pow(base, expoente), ...*/
#define PI 3.14159F /* símbolo a ser substituído no código */
int main (void)
{
58
float raio; /* raio da esfera */
float vol; /* volume calculado */
printf("Entre com o raio da esfera: ");
scanf("%f", &raio);
vol = (4.0 / 3.0) * PI * pow(raio, 3);
printf("Volume da esfera : %f", vol);
return 0;
}
diretiva #define nome macro
definição com parâmetros
#define MULT(a,b) ((a)*(b))
...
v = 4.5;
c = MULT(v, -3.0);
...
59
...
v = 4.5;
c = ((v)*(-3.0));
...
diretiva #define: cuidados
macro e seus parâmetros entre parênteses
exemplo
#define MULT(a,b) a*b#define MULT(a,b) a*b#define MULT(a,b) a*b#define MULT(a,b) a*b
int x = MULT (3+2, 4) /* 3+2*4 = 3+8 = 11, ERRADO */
#define MULT(a,b) ((a)*(b)) #define MULT(a,b) ((a)*(b)) #define MULT(a,b) ((a)*(b)) #define MULT(a,b) ((a)*(b)) 
int x = MULT (3+2, 4) /* ((3+2)*(4)) = (5*4) = 20, CERTO */
60
exercício EX. 06
Escreva um programa de caixa eletrônico que lê um valor e 
imprime o menor número de notas de R$50, R$20 e R$10 que 
devem ser entregues ao correntista para somar aquele valor. 
Indique ainda o total entregue e o resto que não poderá ser 
entregue.
exemplo de saída:
Digite a quantia desejada: R$ 215
61
03_19_caixa.c
Digite a quantia desejada: R$ 215
Notas de R$ 50: 4
Notas de R$ 20: 0
Notas de R$ 10: 1
Total entregue: R$ 210
Resto: R$ 5
dúvidas?dúvidas?
62
Prof. Gustavo Moreira
gmoreira@inf.puc-rio.br

Continue navegando