920 likes | 1.13k Views
INSTITUTO FEDERAL AMAZONAS. Estrutura de Dados. Prof. Miguel Bonafe miguelbonafe@hotmail.com. INSTITUTO FEDERAL AMAZONAS. Apostila #1. Referencia bibliográfica : Estrutura de Dados e Algoritmos Uma Abordagem Didatica Celso Roberto Moraes Editora Futura. Instituto Federal
E N D
INSTITUTO FEDERAL AMAZONAS Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com
INSTITUTO FEDERAL AMAZONAS Apostila #1 Referenciabibliográfica: Estrutura de Dados e Algoritmos UmaAbordagemDidatica Celso Roberto Moraes EditoraFutura
Instituto Federal Amazonas Aula de hoje: Conceitosúteis E.D. TiposAbstratos de Dados (TAD) Tipos de Dados Estrutura de Dados - Prof. Miguel Bonafe
Estrutura de Dados • Conceitosúteis
Introdução | ConceitosÚteis Instituto Federal Amazonas Iniciamoscitando a celebreafirmação de NIKLAUS WIRTH de que: PROGRAMA = ED + ALGORITMOS Aquipodemosevidenciar a importancia das estruturas de dados e dos algoritmos no contexto dos computadores. ED = Estrutura de Dados Estrutura de Dados - Prof. Miguel Bonafe
Introdução | ConceitosÚteis Instituto Federal Amazonas Iniciamoscitando a celebreafirmação de NIKLAUS WIRTH de que: PROGRAMA = ED + ALGORITMOS Aquipodemosevidenciar a importancia das estruturas de dados e dos algoritmos no contexto dos computadores. ED = Estrutura de Dados Estrutura de Dados - Prof. Miguel Bonafe
Introdução | ConceitosÚteis Instituto Federal Amazonas Realizando a combinaçãoadequada das estruturas de dados com osalgoritmosqueatuamsobreessasestruturas, podemosconseguir a abstração das situações do nossodia-a-diaem um nívelsuficienteparaque um computadorpossaajudar-nosda forma maisútilpossível. ED = Estrutura de Dados Estrutura de Dados - Prof. Miguel Bonafe
Introdução | ConceitosÚteis Instituto Federal Amazonas O computador é umamáquinaqueprocessaessencialmentealgoritmosescritosemumalinguagem de programação. Para criação de programaseficientes, nãobastadominartecnicamenteoscomandos de umalinguagem de programação; é necessárioconhecer um poucomaissobreconstrução de algoritmos e as estruturas de dados. ED = Estrutura de Dados Estrutura de Dados - Prof. Miguel Bonafe
Estrutura de Dados • E.D.
Introdução | ED Instituto Federal Amazonas • Todotrabalhorealizadopor um computador é baseadonamanipulação das informaçõescontidasemsuamemória principal. • E podemosclassifica-lasem 2 tipos. • Instruções (determinam o funcionamentodamaquina) • Dados (informações a seremprocessadas) ED = Estrutura de Dados Estrutura de Dados - Prof. Miguel Bonafe
Introdução | ED Instituto Federal Amazonas Durante a execução de qualquertipo de programa, oscomputadoresestãomanipulandoinformações, paranão se “esquecer” das informações, oscomputadoresprecisamguardá-lasemsuamemória principal. Essasposições de memória, quecontemumadeterminadainformação, sãodenominadaspelosprogramascomovariáveis. ED = Estrutura de Dados Estrutura de Dados - Prof. Miguel Bonafe
Introdução | ED Instituto Federal Amazonas Toda variavelpossuitrêsatributos: nome; tipo; valor ouinformação. Os dados a seremmanipuladospor um programasãoarmazenadosemposiçõesdamemoria principal. Cadaposição de memóriasópodearmazenar um determinadotipo de dado. Entao antes de usaressasposições de memória é necessariodefinir o tipo de dado queseráarmazenado. ED = Estrutura de Dados Estrutura de Dados - Prof. Miguel Bonafe
Introdução | ED Instituto Federal Amazonas Podemosdefinir ED como a organização e a representação das informaçõesgeralmentenamemoria do computadorparaobter a devidaabstração de um problema real e a melhoreficiencianaexecução dos algoritmos, cujasoperaçõesatuamsobreessasestruturas de dados. ED = Estrutura de Dados Estrutura de Dados - Prof. Miguel Bonafe
Estrutura de Dados • TiposAbstratos de Dados (TAD)
Introdução | TAD Instituto Federal Amazonas O que é uma Estrutura de Dados (ED)? São Tipos Abstratos de Dados O que é Tipos Abstratos de Dados (TAD)? Pode ser definido como um conjunto de valores e uma coleção de operadores que atuam sobre esses valores. As operações devem ser consistentes com os tipos de valores. Estrutura de Dados - Prof. Miguel Bonafe
Introdução | TAD Instituto Federal Amazonas A idéia fundamental do tipo de dados abstratos é possibilitar ao programador a separação do que fazer e de como fazer. Considerando a necessidade do programador de gravar um registro em um arquivo. Nessa situação, o programador só precisa saber o que deve ser feito; no caso, gravar um registro. Esse procedimento “gravar” representa um TAD, pois envolve um conjunto de valores e de ações específicas sobre os mesmos. Estrutura de Dados - Prof. Miguel Bonafe
Introdução | TAD Instituto Federal Amazonas Modelo de um tipo abstrato de de Dados (TAD) Dados Dados Estrutura de dados Função A Função B Estrutura de Dados - Prof. Miguel Bonafe
Introdução | TAD Instituto Federal Amazonas Não confunda Tipos de Dados com Tipos Abstratos de Dados (TAD). Embora estes termos sejam parecidos, eles têm significados diferentes. Em linguagens de programação, o tipo de dados de uma variável define o conjunto de valores que a variável pode assumir. Por exemplo, uma variável do tipo lógico pode assumir o valor verdadeiro ou falso. Estrutura de Dados - Prof. Miguel Bonafe
Introdução | TAD Instituto Federal Amazonas Uma declaração de variável em uma linguagem como C ou Pascal especifica: O conjunto de valores que pode assumir. O conjunto de operações que podemos efetuar. A quantidade de bytes que deve ser reservada para ela. Como o dado representado por esses bytes deve ser interpretado (por exemplo, uma cadeia de bits pode ser interpretada como um inteiro ou real...). Estrutura de Dados - Prof. Miguel Bonafe
Introdução | TAD Instituto Federal Amazonas Então, tipos de dados podem ser vistos como métodos para interpretar o conteúdo da memória do computador. Mas podemos ver o conceito de Tipo de Dados de uma outra perspectiva: não em termos do que um computador pode fazer (interpretar os bits...) mas em termos do que os usuários desejam fazer (somar dois inteiros...) Estrutura de Dados - Prof. Miguel Bonafe
Introdução | TAD Instituto Federal Amazonas Este conceito de Tipo de Dado divorciado do hardware é chamado Tipo Abstrato de Dado - TAD. Estrutura de Dados é um método particular de se implementar um TAD. A implementação de um TAD escolhe uma ED para representá-lo. Cada ED é construída dos tipos primitivos (inteiro, real, char,...) ou dos tipos compostos (array, registro,...) de uma linguagem de programação. Estrutura de Dados - Prof. Miguel Bonafe
Introdução | TAD Instituto Federal Amazonas Não importa que tipo de dados estaremos trabalhando, a primeira operação a ser efetuada em um TAD é a criação. Depois, podemos realizar inclusões e remoções de dados. A operação que varre todos os dados armazenados num TAD é o percurso, podendo também ser realizada uma busca por algum valor dentro da estrutura. Estrutura de Dados - Prof. Miguel Bonafe
Estrutura de Dados • Tipos de dados
Introdução | Tipos Instituto Federal Amazonas Tipos de Dados Numérico Literal Caractere Lógico Inteiro Real Estrutura de Dados - Prof. Miguel Bonafe
INSTITUTO FEDERAL AMAZONAS Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com
Instituto Federal Amazonas Aula de hoje: Algoritmos Dificuldadesnaconstrução Complexidade Métodosparadiminuiçãodacomplexidade Referenciabibliografica: Estrutura de Dados e Algoritmos UmaAbordagemDidatica Celso Roberto Moraes Futura Estrutura de Dados - Prof. Miguel Bonafe
Estrutura de Dados • Algoritmos
Introdução | Algoritmos Instituto Federal Amazonas Pode ser definido como um conjunto de passos descritos sem ambiguidade, possuindo um início, que termine em um período de tempo finito e que apresente sempre o mesmo padrão de comportamento para conduzir-nos a uma solução adequada de um determinado problema. Estrutura de Dados - Prof. Miguel Bonafe
Introdução | Algoritmos Instituto Federal Amazonas Podemosevidenciartrescaracteristicasimportantessobreosalgoritmos: É rigorosonasuadefinação Legibilidade Portabilidade Estrutura de Dados - Prof. Miguel Bonafe
Introdução | Algoritmos Instituto Federal Amazonas A primeiracaracterísticaestáassociada à ausência de ambiguidade, ouseja, nãodevehaverduplainterpretação das suasinstruções. Esseobjetivopode ser atingido, se o algoritmousar um pequenoconjunto de significadoúnico, porém, podereso, no sentidoprinicipal de ser suficienteparaconstruirquaisqueralgoritmos. Estrutura de Dados - Prof. Miguel Bonafe
Introdução | Algoritmos Instituto Federal Amazonas Dizerque o algortimoapresenta um bomnível de legibilidadesignificadizerque a forma darepresentaçãodasoluçãopropostapode ser facilmentecomunicadaparaoutraspessoasfazerem a avaliação e o uso do algoritmosugeridocomosoluçãopara um determinadoproblema. E paraisso é muitoimportante, porquepareceque as pessoastemdem a resolver muitosproblemassemelhantes. Porque, então, nãoaproveitar a solução a soluçãojáidentificadaporoutraspessoas? Estrutura de Dados - Prof. Miguel Bonafe
Introdução | Algoritmos Instituto Federal Amazonas Finalmente, se um algoritmopossuiruma boa portabilidade, indicaqueelefoielaboradosemosmeandrosmuitasvezespresentesnaslinguagens de programação. Um algoritmoserámelhorquandopassarmos a considerarosaspectosrealmentesrelevantesdasolução, deixando de ladodetalhestécnicos de umaououtralinguagem de programação. A preocupaçãomaisdetalhada com osaspectostécnicos de umalinguagem de programaçãoteráseumomento de triunfoquando for realizada a implementação, ouseja, a codificação do algoritmo. Estrutura de Dados - Prof. Miguel Bonafe
Estrutura de Dados • Dificuldadesnaconstrução de Algoritmos
Introdução | Algoritmos Instituto Federal Amazonas Parecequeconstruiralgoritmos é umatarefa trivial. Issopode ser verdadeiro, se o problema a ser considerado for também trivial. Mas, emnossodia-a-dia, muitasvezesficamosfrente a frente com problemasnãotãotriviaisassim. Então, ondeestaria a dificuldadeemconstruiralgoritmos? Estrutura de Dados - Prof. Miguel Bonafe
Introdução | Algoritmos Instituto Federal Amazonas A respostaestanacomplexidadequevaiaparecendoeminúmerassituações, quevãodesde o entendimento do cálculodaárea de umafigurageométricaqualquer, passandopelofuncionamento de um sistema de contas a pagar, ou, aindacomo se realiza o cálculo de área de umafunçãomatemáticausando a regra do trapézio, até o funcionamento do compartilhalmento do processadoroudamemória principal de um computadorem um ambientemultiusuário e multitarefas, Estrutura de Dados - Prof. Miguel Bonafe
Introdução | Algoritmos Instituto Federal Amazonas com o objetivo de desenvolver um algoritmoqueescalone a utilizaçãodessesdoisrecursos de forma justa entre as dezenas, centenas de processosexistentes, e obtendo, aomesmo tempo, o máximo de eficiêncianessatarefa de escalonamento de uso do processador. A complexidade, paranósprogramadores, é encaradacomosinônimo de variedade, que, porsuavez, representa a quantidade de situaçõesdiferentesque um problemapodeapresentar as quaisdevem ser previstasnasuasolução. Estrutura de Dados - Prof. Miguel Bonafe
Estrutura de Dados • Complexidade
Introdução | Algoritmos Instituto Federal Amazonas Eliminarmostotalmente a complexidade, não é possível. Entretanto, podemosutilizaralgumastécnicasparaajudar-nos a dominar a complexidadepresentenosproblemas do nossomundo. Para isso, é necessárioquealgunspontosimportantessejamcompreendidos: “o quefazer?” versus “comofazer?”, além de legibilidade e portabilidade. Estrutura de Dados - Prof. Miguel Bonafe
Introdução | Algoritmos Instituto Federal Amazonas O primeiropontorefere-se à necessidade de compreendermos o quedeve ser feito antes de pensarnamaneiracomo faze-lo. Muitasvezes, tentamosesboçarumasoluçãosemaomenosrealizarumaleituramaiscuidadosa do problema. Essapressapode, muitasvezes, levar-nos a adotarumaestratégia de solução (como se faz) bastanteequivocada. Podemos, com isso, pagar um alto preçopelaineficiênciaquaseintoleráveldasoluçãoobtida. Estrutura de Dados - Prof. Miguel Bonafe
Introdução | Algoritmos Instituto Federal Amazonas Após o entendimentosobre o quedeve ser realizado, ouseja, depois de definirmosqual o produto final desejado, é o momento de pensarmoscomopoderemosdesenvolverumasoluçãoparaqueconsigamosobteresseprodutodesejado (resultado). Talvez um exemplo simples possaajudar a observar a diferença entre essesdoispontos. Estrutura de Dados - Prof. Miguel Bonafe
Introdução | Algoritmos Instituto Federal Amazonas Para tanto, podemosconsiderar o seguinteproblema: f(x) = 4x2 + 5x + 10 Se pensarmos “o que” deve ser realizado, podemos responder que o objetivo é obter as raízesdessaequação de segundograu. A questão de “comofazer” poderia ser deixadapara um segundomomento, quandodefiniriamos a necessidade de calcular o valor do Delta, verificar se o seuresultado é maiorouigual a zero e, finalmente, realizar o cálculoefetivo das raízes no conjunto dos reaisou dos imaginários. Estrutura de Dados - Prof. Miguel Bonafe
Introdução | Algoritmos Instituto Federal Amazonas A Legibilidade, comojádissemos, é a capacidade de outraspessoasentenderem com um mínimo de esforço a soluçãoindicadapara um problema. Percebemosque a questãoemdiscussãonesseponto é a comunicação. A estruturapormeiodaqual a soluçãofoidescritadevepermitirqueumapessoaentendaosprincipaispassosque, seguidos, conduzem à solução. O ultimo ponto, a portabilidade, implicadiretamente no alto grau de independenciadaestruturausadapara a construção do algoritmo das linguagens de programação. Estrutura de Dados - Prof. Miguel Bonafe
Estrutura de Dados • Métodosparadiminuiçãodacomplexidade
Introdução | Algoritmos Instituto Federal Amazonas Existemváriassugestões de métodosparaajudar-nos a diminuir e a dominar a complexidadequepodeaparecernosproblemas. Entre outros, podemoscitar: Dividirparaconquistar. Planejamentoreverso. Estrutura de Dados - Prof. Miguel Bonafe
Introdução | Algoritmos Instituto Federal Amazonas Dividirparaconquistar: A primeirasugestão é usadadesdeos tempos do Imperador Julio Cesar, o todo-poderoso, nainvasão e conquista de novosterras. Antes de invadir um novo reino, o Imperadorprocuravaintroduzirespiõesqueprovocavampequenosconflitosinternos, visandoenfraquecer o reino a ser conquistado. Estrutura de Dados - Prof. Miguel Bonafe
Introdução | Algoritmos Instituto Federal Amazonas Essespequenosconflitosprovocamnormalmente a ruptura do reino a ser invadido e conquistado, tornando, dessa forma, maisfácil a tarefaque antes pareciaimpossível. Essaidéia de invadirparaconquistar, no contextodaconstrução de algoritmos, consisteemdividir o problema original empartesmenorcomplexidade. Deve-se contudo, analizar a divisãoobtidaparagarantir a coerenciadessadivisão. Se alguma parte não for bemcompreendida, pode-se aplicar a elanovamente o método. Estrutura de Dados - Prof. Miguel Bonafe
Introdução | Algoritmos Instituto Federal Amazonas Finalmente, analisar o objetoobtidoparagarantirentendimento e coerência de todas as partes. A decomposição do problema original apresentanormalmenteumaestrutura de suaspartesemuma forma hierárquica, como é apresentadoabaixo: Estrutura de Dados - Prof. Miguel Bonafe
Introdução | Algoritmos Instituto Federal Amazonas P1 P2 P3 P4 P5 P6 P7 Estrutura de Dados - Prof. Miguel Bonafe
Introdução | Algoritmos Instituto Federal Amazonas Os passosdescritosanteriormentepodem ser resumidospeloprincípiodenominadorefinamento top-down, e esseprincípio é a verdadeirachavepara a escrita de programasgrandes e complexosquefuncionam de forma adequada. O princípioimplica no adiamento das considerações de detalhes, masjamaisnasconsideraçõessobre a precisão e sobre o rigor nesseprocesso de refinamento, embusca do domíniodacomplexidade do problema original. Estrutura de Dados - Prof. Miguel Bonafe
Introdução | Algoritmos Instituto Federal Amazonas Planejamentoreverso: elarecomenda a determinanação dos dados de saídas, ouseja, identificar o que é desejadocomoresultado. Definindoos dados de saídas, pode ser possível, de maneiraresersa, determinaroscomponentesqueformamos dados de entrada, assimcomotodas as etapas de transformaçõesdessesdadis de entrada, paraconseguirmos as saídasdesejadas. Estrutura de Dados - Prof. Miguel Bonafe