Escolar Documentos
Profissional Documentos
Cultura Documentos
0 Reviso
06/08/2015
Tpicos Principais
Variveis e Constantes
Operadores e Expresses
Entrada e Sada
Tomada de Deciso
Construo com laos
Definio de funes
Pilha de Execuo
06/08/2015
Variveis e Constantes
Tipos bsicos na linguagem C:
06/08/2015
Variveis e Constantes
Valor Constante:
armazenado na memria
06/08/2015
Variveis e Constantes
Varivel:
espao de memria para armazenar um dado
06/08/2015
Variveis e Constantes
Declarao de varivel:
variveis devem ser explicitamente declaradas
06/08/2015
Variveis e Constantes
Declarao de varivel:
variveis s armazenam valores do mesmo tipo
com que foram declaradas
int a;
a = 4.3;
06/08/2015
Variveis e Constantes
Varivel com valor indefinido:
uma varivel pode receber um valor quando definida
(inicializada), ou atravs de um operador de atribuio
int a;
int b;
float c;
a=5;
b=10;
c=5.3f;
06/08/2015
Variveis e Constantes
Varivel com valor indefinido:
uma varivel deve ter um valor definido quando utilizada
int a, b, c;
a = 2;
c = a + b;
06/08/2015
Operadores e Expresses
Operadores:
aritmticos: + , - , * , / , %
atribuio: = , += , -= , *= , /= , %=
incremento e decremento: ++ , - relacionais e lgicos: < , <= , == , >= , > , !=
outros
06/08/2015
10
Operadores e Expresses
Operadores aritmticos ( + , - , * , / , % ):
operaes so feitas na preciso dos operandos
o operando com tipo de menor expressividade convertido para
o tipo do operando com tipo de maior expressividade
diviso entre inteiros trunca a parte fracionria
int a
double b, c;
a = 3.5;
/* a recebe o valor 3 */
b = a / 2.0;
/* b recebe o valor 1.5 */
c = 1/3 + b; /* 1/3 retorna 0 pois a operao ser sobre inteiros */
/* c recebe o valor de b */
06/08/2015
11
Operadores e Expresses
Operadores aritmticos (cont.):
o operador mdulo, %, aplica-se a inteiros
precedncia dos operadores: * , / , - , +
x % 2
a + b * c / d
equivalente a
06/08/2015
(a + ((b * c) / d))
12
Operadores e Expresses
Operadores de atribuio :
( = , += , -= , *= , /= , %= )
C trata uma atribuio como uma expresso
a ordem da direita para a esquerda
06/08/2015
equivalente a
equivalente a
i = i + 2;
x = x * (y +1);
13
Operadores e Expresses
n++
++n
n
x
x
a
b
=
=
=
=
=
5;
n++;
++n;
3;
a++ * 2;
06/08/2015
14
Operadores e Expresses
Operadores Relacionais
<
<=
==
>=
>
!=
a=0 e b=1
06/08/2015
15
Operadores e Expresses
Operadores lgicos
&& ||
int a, b, f;
int c = 23;
int d = c + 4;
a = (c < 20) || (d > c);
a=1 e b=0
16
Operadores e Expresses
converso de tipo:
converso de tipo automtica na avaliao de uma expresso
06/08/2015
17
06/08/2015
18
especifica um char
%d
especifica um int
%u
%f
%e
%g
%s
06/08/2015
19
%4d
3 3
4
%7.2f
5 .
3 0
2
06/08/2015
20
06/08/2015
21
06/08/2015
22
Entrada e Sada
Especificao de formato:
%c
especifica um char
%d
especifica um int
%u
%f,%e,%g
especificam um float
especificam um double
%s
06/08/2015
23
Entrada e Sada
Funo scanf (cont.):
caracteres diferentes dos especificadores no formato servem
para cercar a entrada
espao em branco dentro do formato faz com que sejam
"pulados" eventuais brancos da entrada
06/08/2015
24
Tomada de Deciso
Comando if:
comando bsico para codificar tomada de deciso
se expr for verdadeira ( 0), executa o bloco de comandos 1
se expr for falsa (= 0), executa o bloco de comandos 2
if ( expr )
{ bloco de comandos 1 }
else
{ bloco de comandos 2 }
ou
if ( expr )
{ bloco de comandos }
06/08/2015
25
Exemplo
/* nota */
#include <stdio.h>
int main (void)
{
float nota ;
printf("Digite sua nota: ");
scanf("%f", ¬a);
if (nota >= 7 ){
printf(" Boa nota, parabens! \n");
}
else {
printf(" Voce precisa melhorar. \n");
}
return 0;
}
06/08/2015
26
Exemplo
/* nota */
#include <stdio.h>
int main (void)
{
float nota ;
printf("Digite sua nota: ");
scanf("%f", ¬a);
if (nota >= 7 )
printf(" Boa nota, parabens! \n");
else
printf(" Voce precisa melhorar. \n");
return 0;
06/08/2015
27
Bloco de comandos
{
comando1;
comando2;
...
}
ou
06/08/2015
comando;
28
Tomada de Deciso
Exemplo:
funo para qualificar a temperatura:
06/08/2015
29
Tomada de Deciso
/* temperatura (versao 1 - incorreta) */
#include <stdio.h>
int main (void)
{
int temp;
printf("Digite a temperatura: ");
scanf("%d", &temp);
if (temp < 30)
if (temp > 20)
printf(" Temperatura agradvel \n");
else
printf(" Temperatura quente \n");
return 0;
}
Em C, um
06/08/2015
Tomada de Deciso
/* temperatura (versao 1 - incorreta) */
#include <stdio.h>
int main (void)
{
int temp;
printf("Digite a temperatura: ");
scanf("%d", &temp);
if (temp < 30)
if (temp > 20)
printf(" Temperatura agradvel \n");
else
printf(" Temperatura quente \n");
return 0;
}
06/08/2015
31
Tomada de Deciso
/* temperatura (versao 2) */
#include <stdio.h>
int main (void)
{
int temp;
printf ( "Digite a temperatura: " );
scanf ( "%d", &temp );
if ( temp < 30 ) {
if ( temp > 20 )
printf ( " Temperatura agradvel \n" );
}
else
printf ( " Temperatura quente \n" );
return 0;
}
06/08/2015
32
/* temperatura (versao 3) */
#include <stdio.h>
int main (void)
{
int temp;
printf("Digite a temperatura: ");
scanf("%d", &temp);
if (temp < 10)
printf("Temperatura muito fria \n");
else if (temp < 20)
printf(" Temperatura fria \n");
else if (temp < 30)
printf("Temperatura agradvel \n");
else
printf("Temperatura quente \n");
return 0;
}
06/08/2015
33
/* temperatura (versao 3) */
#include <stdio.h>
int main (void)
{
int temp;
printf("Digite a temperatura: ");
scanf("%d", &temp);
if (temp < 10)
printf("Temperatura muito fria \n");
else if (temp < 20)
printf(" Temperatura fria \n");
else if (temp < 30)
printf("Temperatura agradvel \n");
else
printf("Temperatura quente \n");
return 0;
}
06/08/2015
34
/* temperatura (versao 3) */
#include <stdio.h>
int main (void)
{
int temp;
printf("Digite a temperatura: ");
scanf("%d", &temp);
if (temp < 10)
printf("Temperatura muito fria \n");
else if (temp < 20)
printf(" Temperatura fria \n");
else if (temp < 30)
printf("Temperatura agradvel \n");
else
printf("Temperatura quente \n");
return 0;
}
06/08/2015
35
/* temperatura (versao 3) */
#include <stdio.h>
int main (void)
{
int temp;
printf("Digite a temperatura: ");
scanf("%d", &temp);
if (temp < 10)
printf("Temperatura muito fria \n");
else if (temp < 20)
printf(" Temperatura fria \n");
else if (temp < 30)
printf("Temperatura agradvel \n");
else
printf("Temperatura quente \n");
return 0;
}
06/08/2015
36
/* temperatura (versao 3) */
#include <stdio.h>
int main (void)
{
int temp;
printf("Digite a temperatura: ");
scanf("%d", &temp);
if (temp < 10)
printf("Temperatura muito fria \n");
else if (temp < 20)
printf(" Temperatura fria \n");
else if (temp < 30)
printf("Temperatura agradvel \n");
else
printf("Temperatura quente \n");
return 0;
}
06/08/2015
37
Tomada de Deciso
Estrutura de bloco:
declarao de variveis:
s podem ocorrer no incio do corpo da funo ou de um bloco
(esta restrio no existe no C99)
06/08/2015
... }
/* a varivel i no existe neste ponto do programa */
38
Tomada de Deciso
Operador condicional:
formato geral:
se a condio for verdadeira, a expresso1 avaliada;
caso contrrio, a expresso2 avaliada
condio ? expresso1 : expresso2;
exemplo:
comando
maximo = a > b ? a : b ;
comando if equivalente
if ( a > b )
maximo = a;
else
maximo = b;
06/08/2015
39
n
!
(
n
1
)
(
n
2
)...
3
1
onde
:
0
!
06/08/2015
40
faa enquanto k n
fatorial = fatorial * k
incremente k
06/08/2015
41
06/08/2015
42
/* Fatorial */
#include <stdio.h>
int main (void)
{
int i;
int n;
long int f = 1;
printf("Digite um numero inteiro nao negativo:");
scanf("%d", &n);
/* calcula fatorial */
i = 1;
while (i <= n)
{
f = f * i;
/* equivalente a f *= i */
i = i + 1;
/*
equivalente a i++
*/
}
printf(" Fatorial = %d \n", f);
return 0;
}
06/08/2015
43
equivalente a:
expresso_inicial;
while ( expresso_booleana )
{
bloco de comandos
...
expresso_de_incremento
}
06/08/2015
44
/* Fatorial (versao 2) */
#include <stdio.h>
int main (void)
{
int i;
int n;
int f = 1;
printf("Digite um numero inteiro nao negativo:");
scanf("%d", &n);
/* calcula fatorial */
for (i = 1; i <= n; i=i+1) {
f = f * i;
}
printf(" Fatorial = %d \n", f);
return 0;
}
06/08/2015
45
/* Fatorial (versao 2) */
#include <stdio.h>
int main (void)
{
int i;
int n;
int f = 1;
printf("Digite um numero inteiro nao negativo:");
scanf("%d", &n);
/* calcula fatorial */
for (i = 1; i <= n; i+1) {
/* o que acontece com este programa?
f = f * i;
}
printf(" Fatorial = %d \n", f);
return 0;
*/
}
06/08/2015
46
06/08/2015
47
/* Fatorial (versao 3) */
#include <stdio.h>
int main (void)
{
int i;
int n;
int f = 1;
/* requisita valor at um nmero no negativo ser informado */
do
{
printf("Digite um valor inteiro nao negativo:");
scanf ("%d", &n);
} while (n<0);
/* calcula fatorial */
for (i = 1; i <= n; i++)
f *= i;
printf(" Fatorial = %d\n", f);
return 0;
}
06/08/2015
48
/* Fatorial (versao 4) */
#include <stdio.h>
int main (void)
{
int i;
int n;
int f = 1;
/* O que faz este programa? */
do {
printf("Digite um valor inteiro nao negativo:");
scanf ("%d", &n);
/* calcula fatorial */
for (i = 1; i <= n; i++)
f *= i;
printf(" Fatorial = %d\n", f);
} while (n>=0);
return 0;
}
06/08/2015
49
06/08/2015
50
51
Definio de Funes
Comando para definio de funo:
tipo_retornado nome_da_funo
{
corpo da funo
}
06/08/2015
( lista de parmetros... )
52
53
void fat(int n)
{
}
06/08/2015
54
55
Pilha de Execuo
Comunicao entre funes:
funes so independentes entre si
06/08/2015
56
Pilha de Execuo
Comunicao entre funes (cont.):
Pergunta: Como implementar a comunicao entre funes?
Resposta: Atravs de uma pilha
c
b
a
06/08/2015
'x
'
4
3
.5
7
ri
v
e
lcn
oe
n
d
e
re
o1
1
2c
o
m
v
a
lo
rig
u
a
la'x
'
1
1
2 -va
1
0
8 -va
ri
v
e
lbn
oe
n
d
e
re
o1
0
8c
o
m
v
a
lo
rig
u
a
la4
3
.5
1
0
4 -va
ri
v
e
lan
oe
n
d
e
re
o1
0
4c
o
m
v
a
lo
rig
u
a
la7
57
58
59
60
61
62
Exerccios
Faa um programa que recebe como entrada trs graus:
G1, G2 e G3 e calcula a mdia, se o aluno estiver
aprovado, ou informa a necessidade de uma prova final,
se o aluno no tiver satisfeito o seguinte critrio:
Todas as notas maiores ou iguais a 3 E
Mdia aritmtica maior ou igual a 5
06/08/2015
63
Exerccios
#include <stdio.h>
float calculaMedia(float g1, float g2, float g3);
int main(void) {
float g1, g2, g3, media;
printf(Digite os graus G1, G2 e G3: );
scanf(%f %f %f, &g1, &g2, &g3);
media = calculaMedia(g1, g2, g3);
if (media >= 5.0 && g1 >= 3.0 && g2 >= 3.0 && g3 >= 3.0) {
printf(SF = APROVADO, MF = %f\n, media);
}
else {
printf(ALUNO EM PROVA FINAL.\n);
}
}
float calculaMedia(float g1, float g2, float g3) {
float media;
media = (g1 + g2 + g3) / 3;
return media;
}
06/08/2015
64
Exerccios
Implemente uma funo que retorne uma aproximao do valor de
PI, de acordo com a Frmula de Leibniz:
1
1
1
11
4
*
(
1
...)
3
5
7
9
11
Ou seja:
1
)
4*
2*i
1
n
i
0
65
#include <stdio.h>
float pi(int n);
Exerccios
int main(void) {
int n;
float p;
06/08/2015
66
#include <stdio.h>
#include <math.h>
Exerccios
1;
= 1; i < n; i++) {
= soma + (pow(-1,i) / ((2 * i) + 1));
4*soma;
06/08/2015
67
Referncias
Captulo 4 Funes
06/08/2015
68