You are on page 1of 70

Tipos de Dados, Variveis e

comandos de entrada e sada


DCC 119 Algoritmos

Introduo
Nesta aula, sero construdos programas de

computador muito simples.


Por enquanto, vamos assumir que todo
programa tem a seguinte estrutura bsica:
int main()
{
...
return 0;
}
(quando estudarmos funes, os conceitos
que definem esta estrutura sero vistos)

Introduo
Um programa de computador utiliza diversos

dados durante seu processamento.


Exemplo:
Imagine um programa
que calcule a rea de
um crculo.

rea = . r 2

Introduo
Algoritmo para calcular a rea de um crculo:
1.

Pea ao usurio que informe o


comprimento do raio

2.

Obtenha o valor da rea,


calculando
raio * raio * 3.14159

3.

Informe ao usurio o valor da


rea

Introduo
Quais valores numricos aparecem no algoritmo?
Raio (nmero real): representa a medida do raio

do crculo e seu valor pode variar dependendo do


tamanho do crculo.
Pi (nmero real): representa a constante
numrica 3,14159... Apresenta sempre o mesmo
valor, independente do crculo.
rea (nmero real): representa a rea de um
crculo. Seu valor pode variar dependendo do
tamanho do crculo.
5

Introduo
Assim como neste exemplo, um valor, em um
programa, pode ser classificado como:
Constante: dado cujo valor se manter

inalterado toda vez que o programa for utilizado.


Varivel: dado cujo valor pode ser modificado a

cada execuo ou, at mesmo, durante a


execuo do programa.

Constantes
Uma constante pode ser representada no texto

diretamente pelo seu valor.


int main()
{
int a;
float b;
float c;
a = 0;
b = 2.5;
c = 8.7 * b;
return 0;
}

Variveis
Uma varivel armazena um valor de

determinado tipo que pode variar ao longo


da execuo do programa.
Para cada varivel, reservado um espao

na memria do computador para armazenar


seu valor.

Variveis
Exemplo: para armazenar um nmero inteiro, o
programa normalmente reserva 4 bytes de
memria.
O nmero binrio
armazenado nestes
4 bytes representa
o valor da varivel
(neste caso, 10).

...

1712

1713

1714

1715

1716

1717

...

0
9

Variveis
No texto de um programa, uma varivel

representada por um identificador nico.


int main()
{
int a;
float b;
float c;
a = 0;
b = 2.5;
c = 8.7 * b;
return 0;
}

...

1712

1717

...

0
10

Variveis
O valor da varivel pode ser alterado ao

longo do programa, mas seu nome


permanece o mesmo.
int main()
{
int a;
float b;
float c;
a = 0;
b = 2.5;
c = 8.7 * b;
return 0;
}

...

1712

1717

...

0
11

Variveis
Identificador da varivel:
Nome nico criado pelo programador.
No pode ser uma palavra reservada da

linguagem C.
Exemplos: int, main, return,...
Pode conter apenas letras, dgitos e sublinha.
Deve comear com uma letra (por padro

utilizam-se letras minsculas).


Deve permitir a identificao do valor que
representa (ex: raio, area, etc).
12

Variveis
Exemplos
Vlidos:
nome
x1
nota_01
telefone
salario_base
nota2aProva

Invlidos:

1ano
salrio
valor-1
endereo
salario/hora
2aProva
13

Tipos de dados
Toda constante e toda varivel de um

programa tem um tipo de dados associado.


Toda linguagem de programao contm um

conjunto de tipos de dados pr-definido


chamados de implcitos, primitivos ou
bsicos.

14

Tipos de dados bsicos em C


int utilizado para representar um nmero
inteiro. Exemplo: 1, -5, 1024 ,etc.
float ou double utilizados para
representar nmeros reais (ponto flutuante).
Exemplo: -1.0, 3.14159, 2.718281
char utilizado para representar um nico
caractere (letra, dgito, smbolo, ponto, etc).
Exemplo: 'a', '5', '@', '!', etc.
15

Tipos de dados bsicos em C


Ateno
Para valores dos tipos float ou double, o

separador decimal o ponto.

3.14159
Constantes do tipo de dados char sempre

aparece entre aspas simples.

'a'

16

Tipos de dados
booleano utilizado para representar um
valor lgico que pode ser verdadeiro ou falso.
No um tipo bsico de C
Em C, so representados por inteiros:
Falso: 0
Verdadeiro: 1 (ou qualquer valor diferente de 0)

Vrias operaes da linguagem utilizam este

tipo de dado, como veremos posteriormente.

17

Exerccio
1) Indique quais das constantes abaixo so do tipo int:
( )1000
( )-456

( ) '8'
( ) 34

( )-900
( )-1.56

2) Indique quais das constantes abaixo so do tipo float:


( ) -678.0
( ) -456.0

( ) 0.87
( )Cinco

( ) -9.12
( ) -1.56

3) Indique quais das constantes abaixo so do tipo char:


( ) 'z'
( ) 45

( ) onze
( ) '8'

()d
( ) 'F'
18

Declarao de variveis
A declarao de uma varivel o momento

em que esta criada no programa.


Para criar uma varivel, necessrio indicar:

o tipo da varivel
o identificador da varivel

int idade;
float peso, altura;
char sexo;
19

Declarao de variveis
Como todo comando simples em C, a

declarao termina com um ponto e vrgula.

int idade;
float peso, altura;
char sexo;

20

Declarao de variveis
Implicaes da declarao de variveis:
alocado um espao na memria onde seja
possvel armazenar valores do tipo
especificado.
Tipo

Espao que ocupa na


memria

Faixa

char

1 byte

-128 a 127
(incluindo letras e smbolos)

int

4 bytes*

-2147483648 a 2147483647*

float

4 bytes

3.4E-38 a 3.4E+38
(6 casas de preciso)

1.7E-308 a 1.7E+308
(15 casas de preciso)
* Estes valores podem variar dependendo da configurao da mquina.

double

8 bytes

21

Declarao de variveis
Implicaes da declarao de variveis:
O nome da varivel associado ao endereo
de memria reservado.
Assim, toda vez que a varivel for
referenciada, o computador vai trabalhar com
o contedo de seu endereo de memria.

22

Declarao de variveis
Observaes importantes:
Durante todo o programa, a varivel
armazenar apenas valores do tipo
especificado na sua declarao.
Uma varivel s pode ser utilizada em um

programa aps sua declarao. Por isso, as


declaraes de variveis so realizadas no
incio do programa.

23

Exerccio
Indique as opes com declaraes vlidas:
(
(
(
(
(
(
(
(
(
(

)
)
)
)
)
)
)
)
)
)

char endereo;
int valor1, valor2;
float rea;
int 21;
char a, b, char;
int a,
int a,b,a;
float f1,f2,f3,4f;
int meu_nro;
float leitura_sensor;
24

Operador de atribuio
Um comando de atribuio a forma mais
bsica de modificar o valor de uma varivel:
nomeVar = expressao;
nomeVar

identificador da varivel que ser modificada


apenas uma varivel pode ser modificada por vez
o nome da varivel fica sempre no lado
esquerdo do operador de atribuio
25

Operador de atribuio
Um comando de atribuio a forma mais
bsica de modificar o valor de uma varivel:
nomeVar = expressao;
operador =

operador de atribuio
para no confundir com o operador de
comparao, evite ler var=10; como var igual
a 10; normalmente, l-se var recebe 10
26

Operador de atribuio
Um comando de atribuio a forma mais
bsica de modificar o valor de uma varivel:
nomeVar = expressao;
expressao

expresso cujo resultado ser armazenado na varivel

pode ser composta por um valor constante, uma outra


varivel ou uma expresso (matemtica ou lgica) que
utilize constantes e variveis, etc

fica sempre do lado direito do operador de atribuio


27

Operador de atribuio
Um comando de atribuio a forma mais
bsica de modificar o valor de uma varivel:
nomeVar = expressao;
; (ponto e vrgula)

como todo comando simples em C, o comando de


atribuio finalizado com um ponto e vrgula.

28

Operador de atribuio
Exemplos:
raio = 2.5;
area = 3.14159 * (raio * raio);
raio2 = raio;
sexo = 'F';
delta = (b * b) - 4 * a * c;
digito = '5';

29

Inicializao de variveis
Quando uma varivel declarada, seu valor

inicial no modificado e seu contedo no


conhecido. Por isso, dizemos que a
varivel contem lixo. 0 1 2 3 4 5 6 7
int main()
{
int a;
int b;
b = a;
a = 10;
return 0;
}

...

1712

1713

1714

1715

1716

1717

...

0
30

Inicializao de variveis
Quando uma varivel declarada, seu valor

inicial no modificado e seu contedo no


conhecido. Por isso, dizemos que a
varivel contem lixo. 0 1 2 3 4 5 6 7
int main()
{
int a;
int b;
b = a;
a = 10;
return 0;
}

...

1712

1717

...

0
31

Inicializao de variveis
Nenhuma varivel deve ser utilizada antes de ser

inicializada! No exemplo abaixo, b recebe


1100011001011001000000001010 x 2 = 207982602 x 2 = 415.965.204

Em outra execuo do mesmo programa, o valor


provavelmente ser outro. 0 1 2 3 4 5 6 7
int main()
{
int a;
int b;
b = a;
a = 10;
return 0;
}

...

1712

1717

...

0
32

Inicializao de variveis
A inicializao da varivel deve ser

realizada antes que seu valor aparea em


uma expresso ou comando do
0
1
2
3
4
5
6
7
programa.
int main()
{
int a;
int b;
a = 10;
b = a * 2;
return 0;
}

...

1712

1717

...

0
33

Inicializao de variveis
Em C, possvel inicializar uma varivel

em sua declarao:
int a = 10;
char setor = '1';
float elem1 = 0.0, elem2 = 1.0;
int x = 5, y, z = 20;
Obs: no exemplo acima, apenas a
varivel y no foi inicializada.
34

Inicializao de variveis
Ateno
esquecer de inicializar o
valor de uma varivel um
erro lgico comum e difcil
de detectar...
Como acontece: varivel
declarada sem que seu
valor seja explicitamente
inicializado.
Problema: valor da
varivel desconhecido
(lixo)

//
//
//
//
//

Erro !!!
Varivel y no foi
inicializada e
contm lixo de
memria

float x, y, z;
x = 1.0;
z = x + y;

35

Expresses
Combinao de variveis, constantes e
operadores que, quando avaliada, resulta em
um valor.
Expresso aritmtica:
resulta em um nmero (inteiro ou real).
Expresso lgica:
resulta em VERDADEIRO ou FALSO.
36

Expresses aritmticas
10
a + 15
base * altura
90 / 4.0
3.065
189 % divisor
(x1 - 5) * x2

Variveis:
a, base, altura,
divisor, x1, x2
Constantes:
10, 15, 90, 4.0,
3.065, 189, 5

Operadores:
+, *, /, %, 37

Expresses aritmticas
Operadores
INTEIROS
U
N
A
R
I
O

B
I
N
A
R
I
O
S

REAIS

sinal negativo

-2
-a

-2.0
-b

+
*
/
%

adio
subtrao
multiplicao
diviso
mdulo

a+2
a2
a*2
a/2
a%2

b + 2.0
b 2.0
b * 2.0
b / 2.0

(resto da diviso)

(operao no definida para reais)


38

Expresses aritmticas
Operadores

Para a = 5 e b = 5.0:
INTEIROS

U
N
A
R
I
O

B
I
N
A
R
I
O
S

REAIS

sinal negativo

-2
-a -5

-2.0
-b -5.0

+
*
/
%

adio
subtrao
multiplicao
diviso
mdulo

a+27
a23
a * 2 10
a/22
a%21

b + 2.0 7.0
b 2.0 3.0
b * 2.0 10.0
b / 2.0 2.5

(resto da diviso)

(operao no definida para reais)


39

Expresses aritmticas
Operaes aritmticas mais complexas:
pow(base,2)
sqrt(16)
sin(x)
cos(x)
cos(2*x)
sin(x)*cos(y)
abs(-5)

Veremos mais detalhes sobre funes adiante...


40

Expresses lgicas
Envolvem os operadores:
Relacionais:
igual (==), diferente (!=),
menor que (<), menor ou igual a (<=),
maior que (>), maior ou igual a (>=)
Lgicos:
negao (!), conjuno (&&), disjuno (||)

41

Expresses lgicas
Sempre resultam em VERDADEIRO ou

FALSO.
Sero abordadas mais detalhadamente na

introduo de estruturas condicionais.

42

Avaliao de expresses
Prioridade para execuo de operaes em
uma expresso:
1.

Parnteses (dos mais internos para os mais externos);

2.

Expresses aritmticas, seguindo a ordem: funes,


multiplicao e diviso, adio e subtrao;

3.

Expresses lgicas relacionais: <, <=, ==, >, >= e !=;

4.

Expresses lgicas, seguindo a ordem: negao,


conjuno, disjuno;

5.

Da esquerda para a direita, quando houver


indeterminaes.

Na dvida, use parnteses em suas expresses.


43

Exerccio
Dadas as declaraes:

int a, b;
float x, y;

Indique as opes com expresses vlidas:


(
(
(
(
(
(
(
(
(
(

)
)
)
)
)
)
)
)
)
)

a
a
x
y
2
b
b
x
x
y

+
=
=
=
=
=
=
=
*
=

b = 2;
a % b;
y + a;
x % y;
a + b a / 3;
(a + b a) / 3;
(a + b) (a / 3);
sqrt(y) * 7;
x * x = pow(x,3);
x * x * x - pow(x,3);
44

Impresso na tela
A funo printf escreve um texto no
dispositivo de sada padro do computador
(isto , na tela do computador).
int main()
{
printf("Alo mundo!");
return 0;
}
45

Impresso na tela
A funo printf escreve um texto no
dispositivo de sada padro do computador
(isto , na tela do computador).
#include <stdio.h>
int main()
{
printf("Estou aprendendo a programar em C");
return 0;
}
46

Impresso na tela
Nos exemplos j vistos, a funo printf

escreve na tela apenas textos constantes.


printf tambm pode ser utilizada para

escrever valores armazenados em variveis


(por exemplo: resultados de clculos
realizados no programa).
A sintaxe da funo printf permite que seja

possvel imprimir, em um nico comando:


apenas um texto (sem valores variveis); ou
uma ou mais variveis de diferentes tipos.

47

Sintaxe da funo printf


printf( "Expresso" , Lista de argumentos );

A Expresso pode conter:


mensagens a serem exibidas;
cdigos de formatao que indicam como o
contedo de uma varivel deve ser exibido; e
cdigos especiais para a exibio de alguns
caracteres especiais.

48

Sintaxe da funo printf


printf( "Expresso" , Lista de argumentos );

A Lista de argumentos (opcional) indica que valores


devero ser impressos. Podem ser:
identificadores de variveis,
expresses aritmticas,
valores constantes.
Estes valores devem aparecer numa lista separada
por vrgulas.

49

Sintaxe da funo printf


printf("Imprime o inteiro %d.", valorInteiro);

O cdigo de formatao %d na expresso, indica


que um valor inteiro dever ser impresso na
posio do texto onde o %d se encontra.

50

Sintaxe da funo printf


int a = 10;
printf("\n Imprime variavel inteira: %d",a);
printf("\n Imprime constante inteira: %d",34);
printf("\n Imprime resultado: %d", (a*2)+5);
printf("\n Imprime expressao 1: (a*%d)+%d=%d",
2, 5,(a*2)+5);
printf("\n Imprime expressao 2: (%d*%d)+%d=%d",
a, 2, 5,(a*2)+5);
Imprime
Imprime
Imprime
Imprime
Imprime

variavel inteira: 10
constante inteira: 34
resultado: 25
expressao 1: (a*2)+5=25
expressao 2: (10*2)+5=25
51

Sintaxe da funo printf


printf("Imprime o valor real %f.", valorReal);

O cdigo de formatao %f na expresso, indica


que um valor flutuante (float ou double) dever ser
impresso na posio do texto onde o %f se
encontra.

52

Sintaxe da funo printf


float x = 1.0 / 3;
printf("\n Imprime variavel real: %f",x);
printf("\n Imprime constante real: %f",8.4);
printf("\n Imprime resultado: %f", 5.0/2 );
printf("\n Imprime expressao 1: (x*%d)+%d=%f",
2, 5,(x*2)+5);
printf("\n Imprime expressao 2: (%f*%d)+%d=%f",
x, 2, 5,(x*2)+5);
Imprime
Imprime
Imprime
Imprime
Imprime

variavel real: 0.333333


constante real: 8.400000
resultado: 2.500000
expressao 1: (x*2)+5=5.666666
expressao 2: (0.333333*2)+5=5.666666
53

Impresso de Tipos de Dados


Cdigo

Tipo

Elemento armazenado

%c

char

um nico caractere

%d ou %i

int

um inteiro

%f

float

um nmero em ponto
flutuante

%lf

double

ponto flutuante com dupla


preciso

%e

float ou double

um nmero na notao
cientfica

%s

(tipo composto)

uma cadeia de caracteres

54

Impresso de Tipos de Dados


#include <stdio.h>
int main()
{
printf("Caracter A: %c" , 'A');
return 0;
}
#include <stdio.h>
int main()
{
int a=10;
printf("Valor inteiro %d e um float %f" ,a ,1.10);
printf("Outro valor float %f", 1.10+2.35);
return 0;
}
55

Impresso de Tipos de Dados


#include <stdio.h>
int main()
{
printf("Minha string: %s", "Entendi tudo!!!! ");
return 0;
}
#include <stdio.h>
int main()
{
printf("Deveria imprimir um float, ");
printf("mas mandei imprimir um inteiro: %d" ,1.10);
return 0;
}
56

Leitura de dados do teclado


A funo scanf armazena em uma varivel
dados informados pelo usurio atravs do
teclado.
int main()
{
float raio, area;
printf("Digite o raio do circulo: ");
scanf("%f", &raio );
area = 3.14159 * raio * raio;
printf("Area do circulo: %f", area);
return 0;
}
57

Sintaxe da funo scanf


scanf( "Codigos de Formatacao" ,
Lista de endereos de variveis );

Os Cdigos de Formatao indicam o tipo e a


ordem esperada dos valores que sero lidos.
A Lista de endereos de variveis contm uma
sequncia de variveis dos tipos indicados nos
cdigos de formatao, todas precedidas por &.
Cada expresso &NomeDaVariavel retorna o
endereo da respectiva varivel na memria. Isto
permite que o programa saiba onde deve ser
armazenado o valor lido do teclado.

58

Sintaxe da funo scanf


scanf( "Codigos de Formatacao" ,
Lista de endereos de variveis );

Na funo scanf:
A Lista de endereos de variveis NO
opcional.
A Lista de endereos de variveis NO aceita
valores constantes ou expresses.

59

Sintaxe da funo printf


int a,b;
float x,y;
printf("\n Digite valor inteiro: ");
scanf("%d",&a);
printf("\n Digite valor real: ");
scanf("%f",&x);
printf("\n Digite valores inteiro e real");
scanf(%d%f",&b,&y);
printf("\n a=%d x=%f b=%d y=%f,a,x,b,y);
Digite valor inteiro: 25
Digite valor real: 6.158
Digite valores inteiro e real: 3
a=25 x=6.158000 b=3 y=9.800000

9.8

60

Leitura de dados do teclado


A leitura de dados utilizando scanf uma

forma alternativa de inicializao de


variveis.
int main()
{
float raio, area;
printf("Digite o raio do circulo: ");
scanf("%f", &raio );
area = 3.14159 * raio * raio;
printf("Area do circulo: %f", area);
return 0;
}
61

Leitura de dados do teclado


#include <stdio.h>
int main()
{
int num;
printf("Digite um valor: ");
scanf("%d",&num);
printf("\nO valor digitado foi %d.",num);
return 0;
}
62

Leitura de dados do teclado


#include <stdio.h>
int main()
{
int n1,n2,soma;
printf("Digite dois valores: ");
scanf("%d",&n1);
scanf("%d",&n2);
soma = n1 + n2;
printf("\n%d + %d = %d.",n1,n2,soma);
return 0;
}
63

Leitura de dados do teclado


#include <stdio.h>
int main()
{
int idade;
float altura;
printf("Digite sua idade e sua altura: ");
scanf("%d%f", &idade, &altura);
...

64

Formatao de dados
scanf e printf tm vrias outras opes

para formatao de dados.


Estas opes sero vistas em maiores

detalhes na aula de Laboratrio de


Programao.

65

Estruturas de controle
As estruturas bsicas de controle definem a

sequncia em que os passos de um


algoritmo so realizados ao longo da
execuo do programa.
So elas:

Sequncia simples
Condicionais ou alternativas *
Repeties *
* sero vistas nas prximas aulas
66

Estruturas de controle
Sequncia simples:

Comando1;
Comando2;
...
ComandoN;

Sintaxe
Sequncia de comandos sem
limite de tamanho. Esta sequncia pode incluir
declaraes de variveis, atribuies, leitura e
impresso de dados.
Semntica
A execuo iniciada no primeiro comando da
estrutura, continua executando os comandos
na ordem em que aparecem, de cima para
baixo, e sai da estrutura.
67

At agora, foram estudados os seguintes


recursos
visando
especificamente
a
construo de algoritmos:
Conceito de Constante, Varivel e Tipos de Dados.
Tipos de Dados Bsicos.
Declarao de Variveis.
Expresses (Aritmticas e Lgicas).
Sintaxe e Semntica dos Comandos de Atribuio
e de Entrada e Sada.
Seqncia Simples (primeiro dos trs tipos de
estruturas de controle).
J possvel criar alguns algoritmos simples.
68

Exerccios
1. Faa um programa que l uma temperatura em
graus Celsius e apresenta-a convertida em graus
Fahrenheit. A frmula de converso:
F (9*C+160)/5
2. Faa um programa que l um valor de salrio
mnimo e o salrio de um funcionrio. O
programa deve calcular e imprimir quantos
salrios mnimos esse funcionrio ganha.
3. Faa um programa que leia os valores dos lados e
altura de um tringulo, calcule e imprima seu
permetro e rea.

69

Exerccios
4. Faa um programa que leia um nmero inteiro
e imprima o seu antecessor e sucessor.
5. Construa um programa que aplique um
desconto de 25% sobre o preo de um
produto recebido como entrada e imprima o
valor resultante.
6. Construa um programa para ler um intervalo de
tempo em segundos, converter para horas,
minutos e segundos e imprimir o resultado.
Desafio: Faa um programa com apenas duas
variveis que leia 5 valores e imprima a sua
soma total.

70

You might also like