Projeto e Desenvolvimento de Algoritmos Tipos de Dados Renato Campioni.

34
Projeto Projeto e e Desenvolvimento Desenvolvimento de Algoritmos de Algoritmos Tipos de Dados Tipos de Dados Renato Campioni Renato Campioni

Transcript of Projeto e Desenvolvimento de Algoritmos Tipos de Dados Renato Campioni.

Page 1: Projeto e Desenvolvimento de Algoritmos Tipos de Dados Renato Campioni.

ProjetoProjeto e e DesenvolvimentoDesenvolvimento de de AlgoritmosAlgoritmos

Tipos de DadosTipos de Dados

Renato CampioniRenato Campioni

Page 2: Projeto e Desenvolvimento de Algoritmos Tipos de Dados Renato Campioni.

ÍndiceÍndice

ObjetivosObjetivos IntroduçãoIntrodução Dados NuméricosDados Numéricos Dados LiteraisDados Literais Dados LógicosDados Lógicos

Page 3: Projeto e Desenvolvimento de Algoritmos Tipos de Dados Renato Campioni.

ObjetivosObjetivos

Apresentar os tipos de dados Apresentar os tipos de dados manipulados pelos computadoresmanipulados pelos computadores

Mostrar as limitações do armazenamento Mostrar as limitações do armazenamento de dados nos computadoresde dados nos computadores

Page 4: Projeto e Desenvolvimento de Algoritmos Tipos de Dados Renato Campioni.

Os tipos de dadosOs tipos de dados

Algoritmos manipulam dados fornecidos Algoritmos manipulam dados fornecidos pelos usuários.pelos usuários.

Algoritmos devolvem dados aos usuários.Algoritmos devolvem dados aos usuários.

Que tipos de dados podemos manipular?Que tipos de dados podemos manipular?

Algoritmos manipularão os seguintes tipos Algoritmos manipularão os seguintes tipos de dados:de dados:

Dados numéricos;Dados numéricos;

Dados literais;Dados literais;

Dados lógicos.Dados lógicos.

Page 5: Projeto e Desenvolvimento de Algoritmos Tipos de Dados Renato Campioni.

Como representar os dados?Como representar os dados?

A maneira de representar os dados em A maneira de representar os dados em nossos algoritmos deverá seguir padrões nossos algoritmos deverá seguir padrões rígidos.rígidos.

Linguagens de programação estabelecem Linguagens de programação estabelecem regras de como os dados são escritos.regras de como os dados são escritos.

Existem regras para indicar quais os Existem regras para indicar quais os símbolos que podem ser usados.símbolos que podem ser usados.

Existem regras para indicar como estes Existem regras para indicar como estes símbolos devem ser combinados.símbolos devem ser combinados.

Page 6: Projeto e Desenvolvimento de Algoritmos Tipos de Dados Renato Campioni.

RepresentaçãoRepresentação

Para descrever a maneira como Para descrever a maneira como representar os dados iremos usar as representar os dados iremos usar as seguintes convençõesseguintes convenções

[ ][ ] o que estiver dentro dos colchetes é o que estiver dentro dos colchetes é opcional.opcional.

{ }{ } o que estiver dentro das chaves deve ser o que estiver dentro das chaves deve ser repetido zero ou mais vezes.repetido zero ou mais vezes.

|| usado para mostrar as opções de uma usado para mostrar as opções de uma definição.definição.

Page 7: Projeto e Desenvolvimento de Algoritmos Tipos de Dados Renato Campioni.

O que usar para representar?O que usar para representar?

Letra maiúsculaLetra maiúscula = = ‘A’ | ‘B’ | ‘C’ | ‘D’ | ‘E’ | ‘F’ | ‘A’ | ‘B’ | ‘C’ | ‘D’ | ‘E’ | ‘F’ | ‘G’ | ‘H’ | ‘I’ | ‘J’ | ‘K’ | ‘L’ | ‘M’ | ‘N’ | ‘O’ | ‘P’ | ‘Q’ ‘G’ | ‘H’ | ‘I’ | ‘J’ | ‘K’ | ‘L’ | ‘M’ | ‘N’ | ‘O’ | ‘P’ | ‘Q’ | ‘R’ | ‘S’ | ‘T’ | ‘U’ | ‘V’ | ‘W’ | ‘X’ | ‘Y’ | ‘Z’| ‘R’ | ‘S’ | ‘T’ | ‘U’ | ‘V’ | ‘W’ | ‘X’ | ‘Y’ | ‘Z’

Letra minúsculaLetra minúscula = = ‘a’ | ‘b’ | ‘c’ | ‘d’ | ‘e’ | ‘f’ | ‘a’ | ‘b’ | ‘c’ | ‘d’ | ‘e’ | ‘f’ | ‘g’ | ‘h’ | ‘i’ | ‘j’ | ‘k’ | ‘l’ | ‘m’ | ‘n’ | ‘o’ | ‘p’ | ‘q’ | ‘g’ | ‘h’ | ‘i’ | ‘j’ | ‘k’ | ‘l’ | ‘m’ | ‘n’ | ‘o’ | ‘p’ | ‘q’ | ‘r’ | ‘s’ | ‘t’ | ‘u’ | ‘v’ | ‘w’ | ‘x’ | ‘y’ | ‘z’‘r’ | ‘s’ | ‘t’ | ‘u’ | ‘v’ | ‘w’ | ‘x’ | ‘y’ | ‘z’

Algarismo Algarismo = = ‘0’ | ‘1’ | ‘2’ | ‘3’ | ‘4’ | ‘5’ | ‘6’ | ‘7’ | ‘0’ | ‘1’ | ‘2’ | ‘3’ | ‘4’ | ‘5’ | ‘6’ | ‘7’ | ‘8’ | ‘9’‘8’ | ‘9’

Caracter especial Caracter especial = = ‘~’ | ‘!’ | ‘@’ | ‘#’ | ‘$’ | ‘%’ ‘~’ | ‘!’ | ‘@’ | ‘#’ | ‘$’ | ‘%’ | ‘^’ | ‘&’ | ‘*’ | ‘(‘ | ‘)’ | ‘_’ | ‘-’ | ‘{’ | ‘[’ | ‘}’ | ‘]’ | ‘\’ | | ‘^’ | ‘&’ | ‘*’ | ‘(‘ | ‘)’ | ‘_’ | ‘-’ | ‘{’ | ‘[’ | ‘}’ | ‘]’ | ‘\’ |

‘:’ | ‘;’ | ‘”’ | ‘’’ | ‘<‘ | ‘,’ | ‘>’ | ‘.’ | ‘?’ | ‘/’ | ‘'’ | ‘ ’‘:’ | ‘;’ | ‘”’ | ‘’’ | ‘<‘ | ‘,’ | ‘>’ | ‘.’ | ‘?’ | ‘/’ | ‘'’ | ‘ ’

Page 8: Projeto e Desenvolvimento de Algoritmos Tipos de Dados Renato Campioni.

Dados numéricosDados numéricos

Antes de apresentar os dados numéricos Antes de apresentar os dados numéricos que os computadores podem manipular que os computadores podem manipular vamos considerar os vários tipos que são vamos considerar os vários tipos que são estudados na Matemática.estudados na Matemática.

OOs tipos de dados que os computadores s tipos de dados que os computadores manipulam são subconjuntos dos manipulam são subconjuntos dos estudados em Matemática.estudados em Matemática.

Page 9: Projeto e Desenvolvimento de Algoritmos Tipos de Dados Renato Campioni.

Dados numéricos naturaisDados numéricos naturais

Usados para representarUsados para representar número de amigosnúmero de amigos quantidade de CDsquantidade de CDs número de ovelhas no pastonúmero de ovelhas no pasto

Page 10: Projeto e Desenvolvimento de Algoritmos Tipos de Dados Renato Campioni.

Dados numéricos naturaisDados numéricos naturais

O número zero é recente e foi descoberto O número zero é recente e foi descoberto pelos hinduspelos hindus

Era fácil pastores contarem com pedras Era fácil pastores contarem com pedras (calculus) as ovelhas existentes. Mas para (calculus) as ovelhas existentes. Mas para que calcular quando não há ovelhas.que calcular quando não há ovelhas.

Em Matemática este conjunto é Em Matemática este conjunto é representado porrepresentado por

N = {0,1,2,3...}N = {0,1,2,3...}

Page 11: Projeto e Desenvolvimento de Algoritmos Tipos de Dados Renato Campioni.

Dados numéricos inteirosDados numéricos inteiros

O conjunto dos números inteiros é definido O conjunto dos números inteiros é definido comocomo

Z={...,-3,-2-1,0,+1,+2,+3,...}Z={...,-3,-2-1,0,+1,+2,+3,...}

Usado para representar quantidades que Usado para representar quantidades que podem assumir valores positivos e negativos.podem assumir valores positivos e negativos.

Se eu tenho 7 ovelhas e vendi 5, tenho 2 Se eu tenho 7 ovelhas e vendi 5, tenho 2 ovelhasovelhas

Se eu tenho 5 ovelhas e vendi 7, tenho –2 Se eu tenho 5 ovelhas e vendi 7, tenho –2 ovelhas. ovelhas.

Page 12: Projeto e Desenvolvimento de Algoritmos Tipos de Dados Renato Campioni.

Dados numéricos RacionaisDados numéricos Racionais

Composto por todos os números que podem Composto por todos os números que podem ser representados como uma fração da forma ser representados como uma fração da forma pp//qq, onde , onde pp e e qq pertencem ao conjunto dos pertencem ao conjunto dos números inteiros.números inteiros.

Conjunto usado para representar temperaturas Conjunto usado para representar temperaturas (-10,0(-10,0ooC), preços (R$ 312,50), alturas (1,75 m), C), preços (R$ 312,50), alturas (1,75 m), etc.etc.

Pode ser representado como Pode ser representado como

},|{ ZqpqpQ

Page 13: Projeto e Desenvolvimento de Algoritmos Tipos de Dados Renato Campioni.

Dados numéricos IrracionaisDados numéricos Irracionais

Composto por todos os números que não Composto por todos os números que não podem ser representados como uma fração podem ser representados como uma fração da forma da forma pp//qq, onde , onde pp e e qq pertencem ao pertencem ao conjunto dos números inteiros.conjunto dos números inteiros.

Exemplos são os números Exemplos são os números = 3.1415..., e = = 3.1415..., e = 2.71828...2.71828...

Podemos representar este conjunto por Podemos representar este conjunto por Q’Q’

Page 14: Projeto e Desenvolvimento de Algoritmos Tipos de Dados Renato Campioni.

Dados numéricos ReaisDados numéricos Reais

É a união dos conjuntos dos números É a união dos conjuntos dos números racionais e irracionais.racionais e irracionais.

Este conjunto é normalmente Este conjunto é normalmente representado pela letra representado pela letra

Page 15: Projeto e Desenvolvimento de Algoritmos Tipos de Dados Renato Campioni.

Dados numéricos Dados numéricos ccomplexosomplexos

Números que são representados pela Números que são representados pela forma forma aa+i+ib, b,

ii é a raiz quadrada deé a raiz quadrada de –1. –1.

A raiz quadrada de –1 é o número A raiz quadrada de –1 é o número imaginárioimaginário i i..

aa ee bb são números pertencentes ao são números pertencentes ao conjunto dos números reais.conjunto dos números reais.

Quando b=0 o número complexo se torna Quando b=0 o número complexo se torna um número real. um número real.

Page 16: Projeto e Desenvolvimento de Algoritmos Tipos de Dados Renato Campioni.

Relações de PertinênciaRelações de Pertinência

CC

QQZZ

NN

Q’Q’

2+i42+i4

2.52.5

-2-2

55

Page 17: Projeto e Desenvolvimento de Algoritmos Tipos de Dados Renato Campioni.

Os números e os computadoresOs números e os computadores

Computadores típicos manipulam números Computadores típicos manipulam números inteiros e reaisinteiros e reais

Computadores trabalham internamente com Computadores trabalham internamente com números na base 2 e não na base 10 que números na base 2 e não na base 10 que costumamos usar.costumamos usar.

O número de dígitos na base 2 que um O número de dígitos na base 2 que um computador pode armazenar é limitado e é computador pode armazenar é limitado e é função da largura da palavra de memória do função da largura da palavra de memória do computador.computador.

Page 18: Projeto e Desenvolvimento de Algoritmos Tipos de Dados Renato Campioni.

Números inteiros e bitsNúmeros inteiros e bits

Um bit pode representar dois números inteiros Um bit pode representar dois números inteiros 00 e e 11..

Dois bits podem representar quatro números Dois bits podem representar quatro números inteiros diferentes: inteiros diferentes: 0000, , 0101, , 1010 e e 1111..

Em geral com Em geral com nn bits podemos representar bits podemos representar 22nn números inteiros.números inteiros.

Normalmente 1 bit é reservado para guardar o Normalmente 1 bit é reservado para guardar o sinal. sinal.

Page 19: Projeto e Desenvolvimento de Algoritmos Tipos de Dados Renato Campioni.

Números inteiros e bits cont.Números inteiros e bits cont.

Considere um computador típico Considere um computador típico que use que use 32 32 bitsbits para armazenar números inteiros para armazenar números inteiros..

Reservar um bit para guardar o sinal.Reservar um bit para guardar o sinal.

Portanto os números Portanto os números inteiros inteiros podem variar podem variar entreentre

-2-23131 <= N <= 2 <= N <= 23131-1-1

Observar que há um número negativo a mais Observar que há um número negativo a mais porque não é necessário representar o número porque não é necessário representar o número -0. -0.

Page 20: Projeto e Desenvolvimento de Algoritmos Tipos de Dados Renato Campioni.

Números InteirosNúmeros Inteiros

Inteiro = [‘+’ | ‘-’]algarismo{algarismo}Inteiro = [‘+’ | ‘-’]algarismo{algarismo}

A definição diz que um número inteiro pode ou A definição diz que um número inteiro pode ou não ter um sinal (+ ou -).não ter um sinal (+ ou -).

Em seguida deve vir obrigatoriamente um Em seguida deve vir obrigatoriamente um algarismo, que pode ser ou não seguido de algarismo, que pode ser ou não seguido de outros algarismos.outros algarismos.

Observe que não há espaços em branco entre Observe que não há espaços em branco entre o sinal e os algarismos.o sinal e os algarismos.

Page 21: Projeto e Desenvolvimento de Algoritmos Tipos de Dados Renato Campioni.

Exemplos de inteirosExemplos de inteiros

+3+3

33

-3-3

-121-121

+12345+12345

Page 22: Projeto e Desenvolvimento de Algoritmos Tipos de Dados Renato Campioni.

Exemplos de errosExemplos de erros

A definição deve ser seguida ao pé da A definição deve ser seguida ao pé da letra.letra.

+ 3+ 3 Não é permitido espaço em branco Não é permitido espaço em branco entre o sinal e o algarismo.entre o sinal e o algarismo.

-1.0-1.0 Não é possível usar ponto.Não é possível usar ponto.

-2,0-2,0 Não é possível usar vírgula.Não é possível usar vírgula.

3322 Expoentes não são permitidos.Expoentes não são permitidos.

Page 23: Projeto e Desenvolvimento de Algoritmos Tipos de Dados Renato Campioni.

Números reaisNúmeros reais

Real = Real =

[‘+’ | ‘-’]algarismo{algarismo}.algarismo{algarismo}[‘+’ | ‘-’]algarismo{algarismo}.algarismo{algarismo}

Um número real pode ou não ter um sinal.Um número real pode ou não ter um sinal.

Em seguida deve vir um algarismo seguido Em seguida deve vir um algarismo seguido de zero ou mais algarismos.de zero ou mais algarismos.

O próximo item é o ponto decimal, que é O próximo item é o ponto decimal, que é obrigatório.obrigatório.

Finalmente um algarismo seguido de zero Finalmente um algarismo seguido de zero ou mais algarismos.ou mais algarismos.

Page 24: Projeto e Desenvolvimento de Algoritmos Tipos de Dados Renato Campioni.

Exemplos de reaisExemplos de reais

+3.0+3.0

3.03.0

-3.0-3.0

-121.15-121.15

3.14153.1415

Page 25: Projeto e Desenvolvimento de Algoritmos Tipos de Dados Renato Campioni.

Exemplos de errosExemplos de erros

+ 3.0+ 3.0 Não é permitido espaço em branco Não é permitido espaço em branco entre o sinal e o algarismo.entre o sinal e o algarismo.

-1.-1. É necessário um algarismo após o É necessário um algarismo após o ponto.ponto.

-2,0-2,0 Não é possível usar vírgula.Não é possível usar vírgula.

.325.325 É necessário um algarismo antes do É necessário um algarismo antes do ponto.ponto.

0.7...0.7... Dízimas periódicas não podem ser Dízimas periódicas não podem ser representadas desta maneira.representadas desta maneira.

Page 26: Projeto e Desenvolvimento de Algoritmos Tipos de Dados Renato Campioni.

Dados literaisDados literais

São usados por exemplo em:São usados por exemplo em:

Tratamento de textos;Tratamento de textos;

Impressão de avisos aos usuários;Impressão de avisos aos usuários;

Tratamento de dados do tipo nome, Tratamento de dados do tipo nome, endereços, etc.endereços, etc.

Page 27: Projeto e Desenvolvimento de Algoritmos Tipos de Dados Renato Campioni.

CaracteresCaracteres

Dados literais são compostos por Dados literais são compostos por caracteres.caracteres.

Caracteres são basicamente as letras Caracteres são basicamente as letras minúsculas e maiúsculas, algarismos, minúsculas e maiúsculas, algarismos, sinais de pontuação, etc. sinais de pontuação, etc.

Caracteres são representados por códigos Caracteres são representados por códigos binários.binários.

Page 28: Projeto e Desenvolvimento de Algoritmos Tipos de Dados Renato Campioni.

Caracteres cont.Caracteres cont.

O código mais disseminado de todos é o ASCII O código mais disseminado de todos é o ASCII (American Standard Code for Information (American Standard Code for Information Interchange).Interchange).

ASCII usa 8 bits para representar os caracteresASCII usa 8 bits para representar os caracteres

ASCII pode representar portanto até 2ASCII pode representar portanto até 288=256 =256 caracteres.caracteres.

Entre os códigos há vários que são usados Entre os códigos há vários que são usados somente para comunicação entre computadores somente para comunicação entre computadores (ACK, NACK, EOF, EOL, etc)(ACK, NACK, EOF, EOL, etc)

Page 29: Projeto e Desenvolvimento de Algoritmos Tipos de Dados Renato Campioni.

Exemplos de caracteres ASCIIExemplos de caracteres ASCII

‘‘a’ = 97a’ = 97 ‘‘z’ = 122z’ = 122 ‘‘A’ = 65A’ = 65 ‘‘Z’ = 90Z’ = 90 ‘‘0’ = 480’ = 48 ‘‘9’ = 579’ = 57 ‘‘$’ = 36$’ = 36 ‘‘+’ = 43+’ = 43

Page 30: Projeto e Desenvolvimento de Algoritmos Tipos de Dados Renato Campioni.

Dados caracteresDados caracteres

Um caracter isolado em nossos algoritmos será Um caracter isolado em nossos algoritmos será representado pelo caracter entre ‘s.representado pelo caracter entre ‘s.

Por exemplo:Por exemplo: ‘‘a’a’ caracter a minúsculo caracter a minúsculo ‘‘1’1’ caracter 1caracter 1 ‘‘A’A’ caracter A maiúsculocaracter A maiúsculo ‘‘:’:’ caracter dois pontoscaracter dois pontos ‘’’’‘’’’ caracter ‘, representado por dois ‘, para ser caracter ‘, representado por dois ‘, para ser

reconhecido pelo computadorreconhecido pelo computador

Page 31: Projeto e Desenvolvimento de Algoritmos Tipos de Dados Renato Campioni.

Cadeias de caracteresCadeias de caracteres

Conjuntos de caracteresConjuntos de caracteres,, como por como por exemplo um nomeexemplo um nome,, devem ser devem ser representados entre ‘srepresentados entre ‘s

Por exemplo:Por exemplo: ‘‘12345’12345’ Conjunto de algarismosConjunto de algarismos ‘‘Jorge da Silva’Jorge da Silva’ NomeNome ‘‘!@#$%&*’!@#$%&*’ Conjunto de caracteres Conjunto de caracteres

variadosvariados

!@#$%^&*!@#$%^&*

Page 32: Projeto e Desenvolvimento de Algoritmos Tipos de Dados Renato Campioni.

Dados LógicosDados Lógicos

Aplicados no processo de tomada de Aplicados no processo de tomada de decisões que o computador faz. decisões que o computador faz.

Este tipo de dados também é chamado de Este tipo de dados também é chamado de dado booleano, devido a George Boole, dado booleano, devido a George Boole, matemático inglês, que deu ao nome à matemático inglês, que deu ao nome à álgebra (álgebra booleana) que manipula álgebra (álgebra booleana) que manipula este tipo de dados.este tipo de dados.

A álgebra booleana é aplicada no projeto A álgebra booleana é aplicada no projeto de computadores digitais.de computadores digitais.

Page 33: Projeto e Desenvolvimento de Algoritmos Tipos de Dados Renato Campioni.

Dados LógicosDados Lógicos

Os dados deste tipo somente podem assumir dois Os dados deste tipo somente podem assumir dois valores: valores: verdadeiroverdadeiro e e falsofalso..

Computadores tomam decisões, durante o Computadores tomam decisões, durante o

processamento de um algoritmo, baseados nestes processamento de um algoritmo, baseados nestes dois valores.dois valores.

Considere a questão:Considere a questão: Se saldo maior que valor do cheque então aceitar Se saldo maior que valor do cheque então aceitar

cheque senão devolver cheque.cheque senão devolver cheque.

Page 34: Projeto e Desenvolvimento de Algoritmos Tipos de Dados Renato Campioni.

Dados lógicos - representaçãoDados lógicos - representação

No nosso pseudo-código, os dados lógicos serão No nosso pseudo-código, os dados lógicos serão representados como:representados como:

Verdadeiro = Verdadeiro = verdadeiroverdadeiro

Falso = Falso = falsofalso