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.

A V V F F

B V F V F

AeB V F F F

A ou B V V V F

A xou B F V V F

no A F F V V
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: 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);

C1; C2; ... Cn;

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 char int float double Espao que ocupa na memria 1 byte 4 bytes 4 bytes 8 bytes Faixa -128 a 127 (incluindo letras e smbolos) -2147483648 a 2147483647 3.4E-38 a 3.4E+38 (6 casas de preciso) 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 b; float x; char c; a=25; b=50; x=3.14; c=M; int y=5, z=15; float e=2.718; char s=f; int n1,n2; n1=0; n2=0; int val; val=2.5; // armazena 2

38

Declarao de variveis - Exemplo


Erro comum: uso de variveis com valor no inicializado. Declarar varivel sem explicitamente inicializar seu valor. Valor indefinido (lixo)
39

// Erro !!! // Varivel y no foi // inicializada e // contm lixo de // memria float x, y, z; x = 1.0; z = x + y;

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 %c %d ou %i %f %lf %e %s Tipo char int float double float ou double ......... Elemento armazenado um nico caractere um inteiro um nmero em ponto flutuante ponto flutuante com dupla preciso um nmero na notao cientfica 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 \t \b \f \a \" \\ %%

leva o cursor para a prxima linha executa uma tabulao executa um retrocesso leva o cursor para a prxima pgina 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. 2. Fazer um programa que imprima o seu nome. Modificar o programa anterior para imprimir na primeira linha o seu nome, na segunda linha a sua idade e na terceira sua altura. Imprimir o valor 2.346728 com 1, 2, 3 e 5 casas decimais.

3.

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; int int int b = d = a=5; c=7; b,d; a; a + b + c;

ou

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. Calcular e apresentar o volume de uma lata de leo, utilizando a frmula: volume = 3.14159*raio*raio*altura. Elaborar um programa que calcule e apresente o volume de uma caixa retangular, por meio da frmula volume = comprimento*largura*altura.
56

2.

3.