Você está na página 1de 56

Tipos de Dados, Variveis e

comandos de entrada e sada


DCC 119 Algoritmos

Pontos importantes da ltima aula




Sistemas de Numerao: base, notao


posicional e converso de base.
Sistemas Computacionais: processador,
memria, linguagens de programao e sistema
operacional.
Algoritmos: ao, estado, processo, padro de
comportamento, algoritmo, aspectos esttico e
dinmico de um algoritmo e formas de
representao de algoritmos.
2

Introduo


Para cada comando sero apresentadas a sua:




sintaxe: formato geral do comando que deve ser


aceita e respeitada como padro.
semntica: o significado da ao realizada pelo
comando, em tempo de execuo.
No texto (esttico) de um programa (ou algoritmo), um
valor pode ser representado na forma de constante
ou de varivel.
A constante representada em um programa
diretamente pelo seu valor (que no se altera
durante a execuo do programa).
3

Variveis


A varivel representada no texto de um


programa por um nome que corresponde a uma
posio da memria que contm o seu valor.

Em tempo de execuo, o nome da varivel


permanece sempre o mesmo e seu valor pode
ser modificado.

Nome de varivel: criado pelo programador e


deve ser iniciado por uma letra que pode ser
seguida por tantas letras, algarismos ou
sublinha quanto se desejar e aconselhvel que
seja significativo do valor que ela representa.
4

Variveis

Exemplos de nomes de variveis:


Certo:
nome, telefone, salario_func, x1
Errado:
1ano, sal/hora, _nome

Tipos de Dados


Todo valor (constante ou varivel) de um


programa tem um tipo de dados associado.





Um tipo de dados constitudo de dois conjuntos:


um conjunto de objetos (domnio de dados) e de
um conjunto de operaes aplicveis aos objetos
do domnio.
Toda linguagem de programao tem embutido um
conjunto de tipos de dados, tambm chamados de
implcitos, primitivos ou bsicos.
Tipos de dados bsicos: inteiro, real, caracter e
lgico.
Em C, os tipos acima so, respectivamente, int,
float/double e char. No h o tipo lgico em C.
6

Tipos de Dados Bsicos


inteiro:
Domnio: conjunto dos inteiros.
Operaes: usam dois argumentos inteiros e, de
acordo com o resultado so:
+, -, *, div, e mod: resultado inteiro
/: resultado real
<, , =, >, e : resultado lgico
real:
Domnio: conjunto dos reais.
Operaes: usam dois argumentos reais e, de
acordo com o resultado so:
+, -, * e /: resultado real
<, , =, >, e : resultado lgico
7

Tipos de Dados Bsicos


caracter:
Domnio: conjunto de caracteres alfanumricos.
Operaes: usam dois argumentos do domnio e
fornecem resultado lgico: <, , =, >, e
lgico:
Domnio: {verdadeiro, falso}.
Operaes: usam dois argumentos do domnio e
fornecem resultado lgico:
Conectivos lgicos: conjuno (e, ^), disjuno
(ou, ), disjuno exclusiva (xou, ), negao
(no, ). A negao trabalha com somente um
argumento.
Conectivos relacionais: = e .
8

Operadores
A tabela abaixo apresenta os operadores que so
diferentes em C em relao a pseudolinguagem.
Pseudolinguagem
Mod

C
%
<=

>=

==
=
!=

O smbolo = em C utilizado para atribuio,


correspondendo ao do portugus estruturado.
No h correspondente direto em C para o operador
div.

Tipos de Constantes e de Variveis


O tipo bsico associado a uma constante fica
determinado pela prpria apresentao da
constante.
Exemplos:
7 cte. inteiro
7.0 ou 7. cte. real
7 cte. caracter
falso cte. lgico
Para as variveis, devem ser feitas no incio do
programa (ou de um bloco) as declaraes (de
tipo) de variveis.
10

Declarao de Variveis


Sintaxe:

<tipo> nome (s);

Implicaes da declarao de uma varivel:




Alocao de um espao na memria que


possa conter um valor do seu tipo.
Associao do endereo dessa posio da
memria ao nome da varivel.

Exemplos:
caracter f, n;
inteiro idade;
real a, b, X1;
lgico vendido;

Declarada uma varivel, toda vez


que ela for referenciada em qualquer
comando
do
programa,
o
computador vai trabalhar com o
contedo de seu endereo, que o
valor da varivel.
11

Exerccios
1) Indique quais das constantes abaixo so do tipo inteiro:
( )1000 ( ) 0 ( )-900 ( )verdadeiro ( )-456 ( )34

( )-1.56

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


( ) -678.0 ( ) 0.87 ( ) -9.12 ( ) falso ( ) -456.0 ( ) Cinco ( ) -1.56

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


( ) -678.0 ( ) 0.87 ( ) -9.12 ( )falso ( )-456 ( )Verdadeiro ( )-1.56

12

Exerccios
Indique com um X os nomes vlidos para uma varivel:

(
(
(
(
(
(

) endereco
) 21brasil
) nome_usuario
) nome*usuario
) cidade3
) #cabec

13

Comandos Bsicos


Comando de atribuio



Sintaxe:
varivel  expresso;
Semntica: atribuir varivel o resultado da
expresso.
Expresses aritmticas: fornecem resultado
numrico (inteiro ou real).


Operaes bsicas: +, -, *, /




Exponenciao: potencia( A + B , N)
Funes matemticas comuns: sen (X), cos (X), abs (X),
raiz (X), arctan (X), exp (X), log (X), ln (X) etc.
Operadores para inteiros:
 M mod I: resto da diviso inteira de M por I
 M div I: quociente da diviso inteira de M por I
14

Comandos Bsicos
Comando de atribuio
Expresses lgicas: fornecem resultado lgico.

Conectivos relacionais: (<, , =, >, e )


Conectivos lgicos:
Conjuno: e,
Disjuno: ou,
Disjuno Exclusiva: xou,
Negao: no,
Tabela Verdade: Sejam A e B duas expresses lgicas.

AeB

A ou B

A xou B

no A

15

Comandos Bsicos


Comando de atribuio
Prioridade de execuo das operaes em uma
expresso:
1. Parnteses (dos mais internos para os mais externos)
2. Expresses aritmticas, seguindo a ordem: funes, * e /, + e
3. Comparaes: <, , =, >, e
4. no
5. e
6. ou e xou
7. Da esquerda para a direita quando houver indeterminaes.

16

Comandos Bsicos


Comentrios
inteiro maior; //maior valor lido
//ler os valores das variveis A, B, C

Pseudocomando
leia os valores das variveis A, B, C;
Classifique os valores lidos em ordem crescente;

Comandos de entrada e sada


leia (a, x); //sero lidos os valores das variveis a, x nesta ordem
imprima (Valor de N =, n, Fatorial de N =, fat);

17

Comandos Bsicos


Bloco
(1) Conjunto de comandos entre { }
(2) Pode-se declarar variveis em seu interior.
(3) Delimitar o escopo das variveis.
{
<declarao de variveis>;
<comandos>;
}
18

Estruturas de Controle
1. Seqncia Simples
Sintaxe:

C1;
C2;
...
Cn;

Exemplo:
leia (X, Y);
A  X + Y;
B  X Y;
imprima (A, B);

Exemplo em C:
scanf(%d %d, &X, &Y);
a = x + y;
b = x - y;
printf (%d %d, a, b);

Semntica: o controle de fluxo de execuo


entra na estrutura, executa comando por
comando, de cima para baixo e sai da estrutura.
19

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.
Construo de Expresses (Aritmtica e Lgica).
Sintxe 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,
bastando adotar um mtodo de desenvolvimento.
20

Mtodos de Criao de Programas


a) Mtodo Direto
Entender o problema (anlise do enunciado).
2. Descrio de variveis: lista contendo para
cada varivel, o seu nome, uma descrio de
seu objetivo e o seu tipo. Iniciar a lista pelos
dados de entrada e pelos resultados a
produzir.
3. Estudo de mtodos: estabelecer (pelo
menos) um mtodo para obteno de cada
resultado pedido e para cada controle de
processamento. Caso o mtodo escolhido
necessite utilizar novas variveis, inclu-las na
lista de descrio de variveis.
1.

21

Mtodos de Criao de Programas


a) Mtodo Direto
1.

Elaborar um algoritmo baseado no estudo de


mtodos, observando a seguinte seqncia:
principal
{
definio de novos tipos;
declarao de variveis;
inicializao de variveis;
corpo do algoritmo controlando:
leitura;
processamento;
sada;
}
22

Mtodos de Criao de Programas


a) Mtodo Direto
Testar o algoritmo, considerando, se possvel,
todas as alternativas de entrada.
2. Programa: traduzir o algoritmo para uma
linguagem de programao e test-lo
exaustivamente no computador.
3. Documentao: o conjunto de documentos
produzidos ao longo do mtodo direto constitui
a primeira documentao tcnica do programa.
1.

23

Mtodos de Criao de Programas


b) Mtodo dos Refinamentos Sucessivos
Inicialmente, manter um nvel mais alto de
abstrao (ateno em o que fazer e no em
como fazer).
Dispensa-se o estudo de mtodos e parte-se
logo para a elaborao do algoritmo sendo que
cada tarefa lgica distinta ser representada por
um pseudocomando.

24

Mtodos de Criao de Programas


b) Mtodo dos Refinamentos Sucessivos
A primeira verso do algoritmo rapidamente
obtida pela listagem de alguns poucos
pseudocomandos que devero ser detalhados em
refinamentos posteriores (em funo de outros
pseudocomandos ou em funo da prpria
pseudolinguagem).
Depois que todos os pseudocomandos j
estiverem
detalhados
em
termos
da
pseudolinguagem, pode-se juntar as partes
montando a verso final e completa do algoritmo.
25

Mtodos de Criao de Programas


c) Mtodo Misto
Controles de carter geral e as aes mais
simples so desenvolvidas diretamente e a
tcnica de refinamentos sucessivos fica somente
para as aes lgicas consideradas mais
complexas.
Observao: Em qualquer dos mtodos, pode-se
desenvolver as aes lgicas bem definidas na
forma de procedimentos (ou funes). A
utilizao destes mdulos funcionais constitui
uma tcnica (programao modular) que
geralmente diminui o esforo do programador e
aumenta a qualidade de seus programas.

26

Exerccios
1. Desenvolver os algoritmos a seguir, utilizando o
mtodo direto.
a) Ler uma temperatura em graus Celsius e
apresent-la convertida em graus Fahrenheit. A
frmula de converso: F (9*C+160)/5
b) Calcular e apresentar o volume de uma lata de
leo cilindrica, a partir da leitura do raio da base
e da altura.
c) Ler os valores do comprimento, da largura e da
altura de uma caixa, calcular e imprimir o seu
volume.
27

Exerccios
2. Construir um algoritmo para ler 5 valores
inteiros, calcular e imprimir a soma desses
valores.
3. Construir um algoritmo para ler 6 valores
reais, calcular e imprimir a mdia aritmtica
desses valores.
4. Fazer um algoritmo para gerar e imprimir o
resultado do nmero H, sendo H = 1 + 1/2 +
1/3 + 1/4 + 1/5.
5. Construa em C os algoritmos acima.

28

Tipos de Dados, Variveis


e Entrada e Sada em C
DCC 120 Laboratrio de Programao

Nesta Aula







Variveis, Tipos de dados


Declarao de variveis
Impresso
Formatao da impresso
Operadores
Entrada de dados

30

Variveis


Uma varivel representa um espao na


memria do computador para armazenar um
determinado tipo de dado.
Em C, todas variveis devem ser
explicitamente declaradas, isto , devemos
especificar:



Tipo de dado
Nome (ou identificador)

31

Identificadores


So nomes usados para se fazer referncia a


variveis, funes, rtulos e vrios outros
objetos definidos pelo usurio.
Exemplos:


a, b, peso, i, contaCorrente, saldo, x1, x2......

Obs: A linguagem C case sensitive, ou


seja, as letras maisculas diferem das
minsculas.
32

Nomes de Variveis
O nome de uma varivel (identificador) formado por um ou mais
caracteres, sendo que:



o primeiro caractere uma letra ou sublinha ( _ );


os outros caracteres podem ser letras, algarismos ou sublinha ( _ ).

Exemplos:



a) Nomes vlidos: L a de op1 V9a


b) Nomes Invlidos: x+ t.6 43x &ah

Lista_Notas a_2 p56 A1 _2A


$dolar Lista-Notas n! %p

Em C, letras maisculas e minsculas so diferentes. Os seguintes


nomes so distintos:





PESO
Peso
peso
peSo

Uma varivel no pode ter o mesmo nome de uma palavra-chave de C,


como por exemplo:


main, cout, int, float, char, short, return, case, void


33

Tipos de Dados
Quando voc declara um identificador d a ele um tipo.
Um tipo de objeto de dados determina como valores de
dados so representados, que valores pode expressar,
e que tipo de operaes voc pode executar com estes
valores.
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)

double

8 bytes

1.7E-308 a 1.7E+308
(15 casas de preciso)

Obs.: Alguns sistemas trabalham com valores inteiros de 2 bytes,


com faixa de -32768 a 32 767.

34

Declarao de variveis


Para armazenar valores na memria preciso


reservar o espao correspondente ao tipo de
dado.

A declarao de uma varivel reserva espao


para armazenar um dado do tipo da varivel e
associa o nome da varivel a este espao.

Na linguagem C podemos inicializar as


variveis com valores na declarao.
35

Declarao de Variveis


As variveis s podem armazenar informaes ou


dados sempre de um mesmo tipo (inteiro, real,
caractere ou char).

Na linguagem C, a declarao de variveis obedece a


seguinte sintaxe:
<tipo> <nome_var>;
ou
<tipo> <nome_var1>, <nome_var2>, ..... ,<nome_varn>;

Toda e qualquer varivel deve ser declarada e sua


declarao deve ser feita antes de sua utilizao no
programa.
36

Declarao de variveis - Exemplo


Exemplos:
int a, b, c;
char letra, d, e;
float f1;
float f2,f3;

Marque as declaraes vlidas:


(
(
(
(
(
(

)
)
)
)
)
)

int a,
char c;
int a,b,a;
float f1,f2,f3,4f;
int meu_nro;
float leitura_sensor;
37

Declarao de variveis - Exemplo


int a;

int n1,n2;

int b;

n1=0;

float x;

n2=0;

char c;

int val;
val=2.5;

// armazena 2

a=25;
b=50;

int y=5, z=15;

x=3.14;

float e=2.718;

c=M;

char s=f;

38

Declarao de variveis - Exemplo




Erro comum: uso de


variveis com valor no
inicializado.

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

Declarar varivel sem


explicitamente inicializar
seu valor.

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

Valor indefinido (lixo)


39

Impresso
A exibio dos resultados do processamento e de
mensagens feita atravs da funo pr-definida printf(),
cujo prottipo est contido tambm no arquivo stdio.h. Sua
sintaxe a seguinte:
printf("Expresso" , Lista de argumentos );


Onde:


Expresso: contm 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.
Lista de argumentos: pode conter identificadores de
variveis, expresses aritmticas ou lgicas e valores
constantes.

40

Estrutura de um Programa que


utiliza a funo printf()
#include <stdio.h>
int main( )
{
printf("Estou aprendendo a programar em C");
return 0;
}

41

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

.........

uma cadeia de caracteres

#include <stdio.h>
int main( )
{
printf("Valor recebido foi %d" ,10);
return 0;
}

42

Impresso de Tipos de Dados


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

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;
}
44

Impresso de Cdigos Especiais


Cdigo

Ao

\n

leva o cursor para a prxima linha

\t

executa uma tabulao

\b

executa um retrocesso

\f

leva o cursor para a prxima pgina

\a

emite um sinal sonoro (beep)

\"

exibe o caractere "

\\

exibe o caractere \

%%

exibe o caractere %

#include <stdio.h>
int main()
{
printf("\t\tx\n");
printf("\tx\t\tx\n");
printf("\t\tx\n");
return 0;
}

45

Fixando as Casas Decimais




Por default, a maioria dos compiladores C exibem


os nmeros de ponto flutuante com seis casas
decimais.
Para alterar este nmero podemos acrescentar .n
ao cdigo de formatao da sada, sendo n o
nmero de casas decimais pretendido.
#include <stdio.h>
int main()
{
printf("Default: %f \n",3.1415169265);
printf("Uma casa: %.1f \n",3.1415169265);
printf("Duas casas: %.2f \n",3.1415169265);
printf("Tres casas: %.3f \n",3.1415169265);
printf("Notacao Cientifica: %e \n",3.1415169265);
return 0;
}

46

Alinhamento de Sada


O programa pode fixar a coluna da tela a partir da qual o


contedo de uma varivel, ou o valor de uma constante
ser exibido. Isto obtido acrescentado-se um inteiro m ao
cdigo de formatao. Neste caso, m indicar o nmero de
colunas que sero utilizadas para exibio do contedo.
#include <stdio.h>
int main()
{
printf("Valor: %d \n",25);
printf("Valor: %10d \n",25);
return 0;
}
47

Exerccios
1.

Fazer um programa que imprima o seu nome.

2.

Modificar o programa anterior para imprimir na


primeira linha o seu nome, na segunda linha a sua
idade e na terceira sua altura.

3.

Imprimir o valor 2.346728 com 1, 2, 3 e 5 casas


decimais.

48

Operador de Atribuio
O operador de atribuio em C o sinal de igual =
Sintaxe:
<variavel> = <expresso>;
Exemplos:
int
a =
c =
b =
d =

a,b,c,d;
5;
7;
a;
a + b + c;

ou

int
int
int
b =
d =

a=5;
c=7;
b,d;
a;
a + b + c;

49

Operadores Aritmticos
Exemplos:
a = a +
a += 4;
a = b /
a = 4 *
b = 2 *
a++;
b--;

b;
// similar a

a = a + 4;

2;
2 + 3;
// qual o valor final de a?
3 2 * 2; // qual o valor final de b?
// similar a
a = a + 1;
// similar a
b = b 1;

50
50

Converso de tipo


Converses automticas de valores na avaliao


de uma expresso.
int
a;
float b, c, d;
a
b
c
d

=
=
=
=

4.5;
a / 2.0;
1/2 + b;
1.0/2.0 + b;

// converso implcita
// converso implcita
// converso implcita

// Sada: a=4, b=2.0, c=2.0, d=2.5

51

Converso de tipo - Cast




possvel explicitamente fazer a converso de


tipos usando o operador cast.
Sintaxe:
(tipo) varivel
int num1, num2, a;
float resdiv;
a = (int) 2.5;
resdiv = (float) num1 / num2;

52

Leitura de dados - scanf()


Ela o complemento de printf() e nos permite ler dados formatados da
entrada padro (teclado). Sua sintaxe:

scanf("expresso de controle", argumentos);


Entendendo o scanf:

......
int a;
.......
scanf (%d, &a);
Operador utilizado para
obter o endereo de
memria da varivel.
53

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

54

scanf() Exemplo 2
#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;
}

55

Exerccios
1.

Ler uma temperatura em graus Celsius (C) e apresentla convertida em graus Fahrenheit. A frmula de
converso F = (9*C+160)/5.

2.

Calcular e apresentar o volume de uma lata de leo,


utilizando a frmula: volume = 3.14159*raio*raio*altura.

3.

Elaborar um programa que calcule e apresente o volume


de uma caixa retangular, por meio da frmula volume =
comprimento*largura*altura.
56

Você também pode gostar