33
1 Linguagens de Programação I Profa. Susana M. Iglesias Tema # 3 Tipos básicos de dados Variáveis

Linguagens de Programação Ismiglesias.tripod.com/LPI/aula05.pdf · 2009-03-15 · 2 •As linguagens imperativas são baseadas em executar um conjunto de operações sob dados,

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Linguagens de Programação Ismiglesias.tripod.com/LPI/aula05.pdf · 2009-03-15 · 2 •As linguagens imperativas são baseadas em executar um conjunto de operações sob dados,

1

Linguagens de Programação I

Profa. Susana M. Iglesias

Tema # 3

Tipos básicos de dadosVariáveis

Page 2: Linguagens de Programação Ismiglesias.tripod.com/LPI/aula05.pdf · 2009-03-15 · 2 •As linguagens imperativas são baseadas em executar um conjunto de operações sob dados,

2

• As linguagens imperativas são baseadas em

executar um conjunto de operações sob dados,

• os dados podem ser representados por variáveis

ou constantes,

• na maioria das linguagens as variáveis devem ser

declaradas, especificando o tipo de dados que

elas representam,

• quase todas as linguagens fornecem um conjunto

de dados básicos a serem utilizados na declaração

das variáveis.

INTRODUÇÃO

Page 3: Linguagens de Programação Ismiglesias.tripod.com/LPI/aula05.pdf · 2009-03-15 · 2 •As linguagens imperativas são baseadas em executar um conjunto de operações sob dados,

3

• Um tipo básico de dados define:

• As características 1 e 2 dependem da arquitetura

do computador, do sistema operacional e do

compilador utilizado.

1. a quantidade de memória disponível para armazenar o dado,

2. a forma em que essa memória será utilizada na representação,

3. um conjunto de operações são definidas sobre o tipo de dados e estão disponíveis na linguagem através de operadores ou funções.

INTRODUÇÃO

Page 4: Linguagens de Programação Ismiglesias.tripod.com/LPI/aula05.pdf · 2009-03-15 · 2 •As linguagens imperativas são baseadas em executar um conjunto de operações sob dados,

4

• Um tipo de dado e o conjunto de operações

definidas sobre ele, é chamado de Tipo de Dado

Abstrato (TDA).

• Tipos de dados básicos em C:

1. Tipo caractere, char

2. Tipo inteiro, int

3. Tipo ponto flutuante de simples precisão, float

4. Tipo ponto flutuante de dupla precisão, double

5. Tipo vazio, void

INTRODUÇÃO

Page 5: Linguagens de Programação Ismiglesias.tripod.com/LPI/aula05.pdf · 2009-03-15 · 2 •As linguagens imperativas são baseadas em executar um conjunto de operações sob dados,

5

• é utilizado para representar o conjunto de

caracteres ASCII,

• ele pode conter um caractere: ‘a’, ‘A’, ‘7’, ‘\n’, ‘\0’

• pode ser utilizado para representar um

subconjunto dos números inteiros [0..255],

• existe uma correspondência entre o subconjunto

de inteiros [0..255] e a tabela ASCII, que

freqüentemente é utilizada em programação,

TIPO CARATERE

Page 6: Linguagens de Programação Ismiglesias.tripod.com/LPI/aula05.pdf · 2009-03-15 · 2 •As linguagens imperativas são baseadas em executar um conjunto de operações sob dados,

6

• a mesma correspondência é utilizada para

representar um char na memória, geralmente 8

bits são utilizados,

• Entre as operações suportadas pelo tipo caractere

temos a operação de atribuição e operações de

comparação.

bit: 1 2 3 4 5 6 7 8

TIPO CARATERE

Page 7: Linguagens de Programação Ismiglesias.tripod.com/LPI/aula05.pdf · 2009-03-15 · 2 •As linguagens imperativas são baseadas em executar um conjunto de operações sob dados,

7

• e utilizado para representar o conjunto dos

números inteiros,

• a representação de um inteiro na memória

depende da arquitetura do computador,

geralmente ela corresponde com o tamanho de

uma palavra (32 ou 64 bits).

• representação de um inteiro na memóriabit: 1 2 3 30 31 32. . .

1 bit para o sinal,

31 bits para o valor,

TIPO INTEIRO

Page 8: Linguagens de Programação Ismiglesias.tripod.com/LPI/aula05.pdf · 2009-03-15 · 2 •As linguagens imperativas são baseadas em executar um conjunto de operações sob dados,

8

• Qual é o maior inteiro que uma representação de 8 bits pode representar?

• Qual é o maior inteiro que a representação anterior pode representar?

• o tipo inteiro suporta a operação de atribuição, as operações aritméticas definidas para os números naturais (soma, resta, multiplicação, divisão e resto) e operações de atribuição.

• Os inteiros são freqüentemente utilizados em programação como auxiliares, por exemplo: subscritos de arrays, ou estruturas de repetição controladas por contador.

TIPO INTEIRO

Page 9: Linguagens de Programação Ismiglesias.tripod.com/LPI/aula05.pdf · 2009-03-15 · 2 •As linguagens imperativas são baseadas em executar um conjunto de operações sob dados,

9

• é utilizado para representar o conjunto dos

números reais,

• ao igual que o tipo inteiro a representação na

memória depende da arquitetura do computador,

geralmente uma palavra de memória é utilizada

para armazenar um dado ponto flutuante simples.

TIPO PONTO FLUTUANTE SIMPLES

Page 10: Linguagens de Programação Ismiglesias.tripod.com/LPI/aula05.pdf · 2009-03-15 · 2 •As linguagens imperativas são baseadas em executar um conjunto de operações sob dados,

10

• representação de um ponto flutuante:

• Qual é o maior número de ponto flutuante que a representação anterior consegue representar?

• Qual é a precisão (quantidade de casas decimais) da representação?

bit: 1 2 3 30 31 32. . .

1 bit para o sinal (azul)

8 bits para o expoente (amarelo)

23 bits para a mantissa (marrom)

8 9 10 11

1 bit para o sinal (claro)

7 bits para o valor (forte)

. . .

TIPO PONTO FLUTUANTE SIMPLES

Page 11: Linguagens de Programação Ismiglesias.tripod.com/LPI/aula05.pdf · 2009-03-15 · 2 •As linguagens imperativas são baseadas em executar um conjunto de operações sob dados,

11

• O tipo float é incapaz de representar todo o

conjunto dos números reais, apenas um

subconjunto consegue ser representado,

• mesmo dentro de uma determinada faixa a

precisão do número real tem que ser truncada,

pois existe um número finito de bits para

armazenar a mantissa.

• As operações definidas para os dados float, são

atribuição, operações aritméticas definidas para

os números reais e operações de comparação.

TIPO PONTO FLUTUANTE SIMPLES

Page 12: Linguagens de Programação Ismiglesias.tripod.com/LPI/aula05.pdf · 2009-03-15 · 2 •As linguagens imperativas são baseadas em executar um conjunto de operações sob dados,

12

• O tipo ponto flutuante de precisão dupla, é uma

extensão do ponto flutuante de precisão simples,

• tem o objetivo de representar uma faixa maior de

números reais e aumentar a precisão da

representação,

• o tipo double utiliza o dobro da memória que o

tipo simples, geralmente 64 bits, sendo 1 bit para

o sinal, 12 bits para o expoente e 51 bits para a

mantissa,

TIPO PONTO FLUTUANTE SIMPLES

Page 13: Linguagens de Programação Ismiglesias.tripod.com/LPI/aula05.pdf · 2009-03-15 · 2 •As linguagens imperativas são baseadas em executar um conjunto de operações sob dados,

13

• as operações suportadas pelo double são

similares as operações suportadas pelos floats,

• o uso de variáveis double só se justifica em

aplicações onde uma alta precisão de cálculos

matemáticos seja exigida.

• Qual é o maior número que a representação de

ponto flutuante duplo consegue representar?

TIPO PONTO FLUTUANTE DUPLO

Page 14: Linguagens de Programação Ismiglesias.tripod.com/LPI/aula05.pdf · 2009-03-15 · 2 •As linguagens imperativas são baseadas em executar um conjunto de operações sob dados,

14

• o tipo vazio ou void é um tipo de dados especial,

• é utilizado para declarar explicitamente funções

que não retornam nenhum valor,

• é utilizado para criar ponteiros genéricos,

• ambos usos são tópicos avançados de

programação.

TIPO VAZIO (VOID)

Page 15: Linguagens de Programação Ismiglesias.tripod.com/LPI/aula05.pdf · 2009-03-15 · 2 •As linguagens imperativas são baseadas em executar um conjunto de operações sob dados,

15

• os tipos básicos podem ter diferentes

modificadores,

• os modificadores podem ser usados para alterar o

significado de um tipo básico,

• o uso de modificadores aumenta a eficiência no

uso da memória e melhora o desempenho da

aplicação,

• os modificadores presentes em C são: unsigned, short e long,

• unsigned e short só se aplicam a inteiros.

MODIFICADORES

Page 16: Linguagens de Programação Ismiglesias.tripod.com/LPI/aula05.pdf · 2009-03-15 · 2 •As linguagens imperativas são baseadas em executar um conjunto de operações sob dados,

16

• Ao utilizar os tipos básicos de dados para

representar valores numéricos podem ocorrer

situações onde se ultrapassem os limites superior

ou inferior do conjunto de números que pode ser

representado,

• se o limite superior e ultrapassado temos um

overflow e os resultados da execução são

imprevisíveis, em alguns compiladores a execução

do programa é abortada,

OVERFLOW E UNDERFLOW

Page 17: Linguagens de Programação Ismiglesias.tripod.com/LPI/aula05.pdf · 2009-03-15 · 2 •As linguagens imperativas são baseadas em executar um conjunto de operações sob dados,

17

• se o limite inferior é ultrapassado temos um

underflow, o valor do número será substituído

com zero e a execução continua,

• ambas condições overflow e underflow devem ser

evitadas.

• Qual dois tipos de erros é mais prejudicial

Overflow ou Underflow?

OVERFLOW E UNDERFLOW

Page 18: Linguagens de Programação Ismiglesias.tripod.com/LPI/aula05.pdf · 2009-03-15 · 2 •As linguagens imperativas são baseadas em executar um conjunto de operações sob dados,

18

• Existem dois tipos básicos de dados que não são

encontrados na linguagem C, pero aparecem na

maioria das outras linguagens, o string e o

boleano.

• Tipo string, é utilizado para representar cadeias

de caracteres (palavras o frases), este recurso é

implementado em C usando arrays de caracteres

ou ponteiros a caracteres.

TIPOS DE DADOS NÃO PRESENTES EM C

Page 19: Linguagens de Programação Ismiglesias.tripod.com/LPI/aula05.pdf · 2009-03-15 · 2 •As linguagens imperativas são baseadas em executar um conjunto de operações sob dados,

19

• Tipo boleano, tem só dois valores possíveis,

verdadeiro (true) e falso (false), são utilizados

em expressões lógicas, como sentinelas ou em

estruturas de seleção. A linguagem C considera

qualquer expressão com valor igual a zero como

falso e qualquer expressão com valor diferente

de zero como verdadeiro. (Ex)

TIPOS DE DADOS NÃO PRESENTES EM C

Page 20: Linguagens de Programação Ismiglesias.tripod.com/LPI/aula05.pdf · 2009-03-15 · 2 •As linguagens imperativas são baseadas em executar um conjunto de operações sob dados,

20

• variável, é uma posição de memória , que é usada

para guardar um valor que pode ser acessado pelo

programa,

• todas as variáveis possuem um identificador, um

tipo e um valor,

• Todas as variáveis em C devem ser

declaradas antes de serem usadas,

• A forma geral de uma declaração de variáveis é:

tipo lista_de_identificadores

VARIÁVEIS

Page 21: Linguagens de Programação Ismiglesias.tripod.com/LPI/aula05.pdf · 2009-03-15 · 2 •As linguagens imperativas são baseadas em executar um conjunto de operações sob dados,

21

• O identificador de uma variável não tem nenhuma

relação com o tipo,

• Exemplos de declaração de variáveis:

int i, j, count;

long int k;

unsigned int m;

char c, d;

float x, y;

long double fx;

VARIÁVEIS

Page 22: Linguagens de Programação Ismiglesias.tripod.com/LPI/aula05.pdf · 2009-03-15 · 2 •As linguagens imperativas são baseadas em executar um conjunto de operações sob dados,

22

• Identificadores em C:

−um identificador válido e uma serie de

caracteres que consistem em letras, dígitos e

sublinhados,

−não pode começar com dígito,

−não pode ser uma palavra reservada da

linguagem,

−apenas caracteres da tabela ASCII podem ser

utilizados.

VARIÁVEIS

Page 23: Linguagens de Programação Ismiglesias.tripod.com/LPI/aula05.pdf · 2009-03-15 · 2 •As linguagens imperativas são baseadas em executar um conjunto de operações sob dados,

23

• Identificadores em C ...−um identificador pode ter qualquer

cumprimento, apenas os 31 primeiros caracteres

são reconhecidos,

−A linguagem C, é case sensitive, os caracteres

minúsculos e maiúsculos são diferentes.

−Escolha nomes significativos para suas variáveis,

tornando seu programa auto-explicativo, menos

comentários se farão necessários.

−A primeira letra do identificador de uma variável

simples deve ser minúscula.

VARIÁVEIS

Page 24: Linguagens de Programação Ismiglesias.tripod.com/LPI/aula05.pdf · 2009-03-15 · 2 •As linguagens imperativas são baseadas em executar um conjunto de operações sob dados,

24

• Onde as variáveis são declaradas?

dentro de funções ou

blocos

na definição dos

parâmetros das funções

fora de todas as

funções

variáveis locais

parâmetros formais

variáveis globais

VARIÁVEIS

Page 25: Linguagens de Programação Ismiglesias.tripod.com/LPI/aula05.pdf · 2009-03-15 · 2 •As linguagens imperativas são baseadas em executar um conjunto de operações sob dados,

25

• Variáveis locais:−são declaradas dentro de uma função ou bloco

de código,

−são “criadas” quando começa o bloco (caractere

{ ),

−são “destruídas” quando finaliza o bloco

(caractere } ),

−elas existem enquanto o bloco no qual foram

declaradas esta sendo executado,

−o conteúdo da variável é perdido quando o bloco

deixa de ser executado,

VARIÁVEIS

Page 26: Linguagens de Programação Ismiglesias.tripod.com/LPI/aula05.pdf · 2009-03-15 · 2 •As linguagens imperativas são baseadas em executar um conjunto de operações sob dados,

26

• Variáveis locais ...− só podem ser referenciadas por comandos que

estão dentro do bloco no qual foram declaradas,

− exemplos,

− vantagens de utilizar variáveis locais:

1. as variáveis só serão alocadas se for necessário,

não existiram até que o bloco associadas a elas

seja executado,

2. evita efeitos colaterais indesejados, ela não

poderá ser acidentalmente modificada fora do

bloco.

VARIÁVEIS

Page 27: Linguagens de Programação Ismiglesias.tripod.com/LPI/aula05.pdf · 2009-03-15 · 2 •As linguagens imperativas são baseadas em executar um conjunto de operações sob dados,

27

• Parâmetros Formais:

− se uma função usa argumentos, ela deve

declarar variáveis que receberão os valores

dos argumentos, essas variáveis são os

parâmetros da função.

− os parâmetros, assim como as variáveis locais

tem escopo de função, elas são criadas e

destruídas ao executar a função.

− Exemplos.

VARIÁVEIS

Page 28: Linguagens de Programação Ismiglesias.tripod.com/LPI/aula05.pdf · 2009-03-15 · 2 •As linguagens imperativas são baseadas em executar um conjunto de operações sob dados,

28

• Variáveis Globais:

− são criadas declarando-as fora de qualquer

função,

− são reconhecidas pelo programa inteiro e

podem ser utilizadas em qualquer segmento

de código,

− guardam seus valores dentro de toda a

execução do programa,

− exemplos,

VARIÁVEIS

Page 29: Linguagens de Programação Ismiglesias.tripod.com/LPI/aula05.pdf · 2009-03-15 · 2 •As linguagens imperativas são baseadas em executar um conjunto de operações sob dados,

29

• Variáveis Globais ...

− se uma variável local tem o mesmo nome que

uma variável global, todas as referências ao

nome da variável no bloco local dizem respeito

a variável local e não tem efeito algum sobre a

variável global.

− variáveis globais podem parecer atraentes,

− elas ocupam espaço durante toda a execução

de seu programa e não apenas quando as

variáveis são necessárias,

VARIÁVEIS

Page 30: Linguagens de Programação Ismiglesias.tripod.com/LPI/aula05.pdf · 2009-03-15 · 2 •As linguagens imperativas são baseadas em executar um conjunto de operações sob dados,

30

• Variáveis Globais ...

− elas limitam a reutilização do código,

− elas podem causar erros e efeitos colaterais

indesejáveis se forem mal utilizadas,

− evite o uso de variáveis globais tanto como for

possível.

VARIÁVEIS

Page 31: Linguagens de Programação Ismiglesias.tripod.com/LPI/aula05.pdf · 2009-03-15 · 2 •As linguagens imperativas são baseadas em executar um conjunto de operações sob dados,

31

• Modificador de acesso: const

− variáveis do tipo const não podem ser

modificadas por seu programa,

− elas podem receber apenas um valor inicial,

− utilize variáveis de tipo const para representar

constantes,

− existem algumas constantes que foram

incluídas na linguagem C

− exemplos.

CONSTANTES

Page 32: Linguagens de Programação Ismiglesias.tripod.com/LPI/aula05.pdf · 2009-03-15 · 2 •As linguagens imperativas são baseadas em executar um conjunto de operações sob dados,

32

• Inicialização de variáveis:

− sintaxe: tipo nome_da_variável = constante;

− exemplos.

VARIÁVEIS

Page 33: Linguagens de Programação Ismiglesias.tripod.com/LPI/aula05.pdf · 2009-03-15 · 2 •As linguagens imperativas são baseadas em executar um conjunto de operações sob dados,

33

O SEGUNDO PROGRAMA EM C/* Programa para somar dois numeros */

#include <stdio.h>

#include <stdlib.h>

int main(){

int num1, num2, soma;

printf("Entre com o primeiro numero: ");

scanf("%d", &num1);

printf("Entre com o segundo numero: ");

scanf("%d", &num2);

soma = num1 + num2;

printf("A soma e %d\n", soma);

system("PAUSE");

return 0;

}