Prévia do material em texto
Estruturas de Dados Introdução Antonio Cesar de Barros Munari 2 Tipos de dados • Um tipo de dados é um conjunto de valores e uma coleção de operações sobre esses valores • Os tipos de dados de uma linguagem podem ser classificados em dois grupos principais – Tipos de dados primitivos – Tipos de dados construídos Tipos de dados primitivos • São os tipos pré-definidos na linguagem e que, por esse motivo, são reconhecidos diretamente pelo compilador • Exemplos – Linguagem C: char, float, double, unsigned long int, etc – Pascal: Byte, Word, Longint, Single, etc – .NET: Int16, Int64, UInt32, Double, etc Antonio Cesar de Barros Munari 3 Tipos de dados construídos • São tipos especificados pelo programador, combinando, por meio de mecanismos especiais, tanto os tipos de dados primitivos da linguagem como também outros tipos já construídos anteriormente Antonio Cesar de Barros Munari 4 Mecanismos de construção de tipos • Permitem especificar e implementar tipos de dados complexos • Vários mecanismos são possíveis – Arrays – Registros – Uniões – Enumerações – Ponteiros Antonio Cesar de Barros Munari 5 Arrays • São estruturas de dados homogêneas – Permitem vários itens de dados, chamados elementos – Todos os elementos são de mesmo tipo – São alocados na memória por contiguidade – Cada elemento é identificado por um índice Antonio Cesar de Barros Munari 6 Arrays: exemplos em C • Declaração float valores[25]; char palavra[16]; int medidas[10][5]; • Manipulação valores[0] = 4.235; if( strcmp( palavra, “FIM” ) == 0 ) (...) scanf( “%d”, &medidas[4][2] ); Antonio Cesar de Barros Munari 7 Registros • São estruturas de dados heterogêneas – Registros são chamados de structs em C/C++ – Permitem vários itens de dados, que em C/C++ são chamados de membros – Os membros de uma struct não precisam ser todos do mesmo tipo – Os membros de uma struct são alocados na memória por contiguidade – Cada membro de uma struct é identificado por um nome Antonio Cesar de Barros Munari 8 Registros: exemplos em C • Definição struct data { int dia, mes, ano; }; struct regAluno { int RA; char nome[41]; char sexo; struct data dataNasc; }; • Declaração e manipulação de variável struct regAluno vAluno; vAluno.sexo = ‘M’; Antonio Cesar de Barros Munari 9 Uniões • São estruturas de dados que permitem que uma mesma região de memória possa ser utilizada com tipos de dados distintos Antonio Cesar de Barros Munari 10 Uniões: exemplos em C • Definição union UNum { int inum; float fnum; char snum[4]; }; • Declaração e manipulação de variável union UNum valor; valor.inum = 3; (...) valor.fnum = 8.32; Antonio Cesar de Barros Munari 11 Enumerações • São listas de valores permitidos para um item de dado Antonio Cesar de Barros Munari 12 Enumerações: exemplos em C • Definição enum bool { false, true }; enum dias { dom=1, seg, ter, qua, qui, sex, sab }; • Declaração e manipulação de variável enum bool resposta; enum dias vDia; vDia = seg; if( resposta == false ) (...) Antonio Cesar de Barros Munari 13 Enumerações Antonio Cesar de Barros Munari 14 textBox1.BorderStyle = Fixed3D Tipo Abstrato de Dados • Um Tipo Abstrato de Dados (TDA) é um tipo de dados que é acessado somente através de uma interface. Chamamos o programa que usa um TDA de “cliente” e ao programa que especifica o tipo de dados damos o nome de “implementação” Antonio Cesar de Barros Munari 15