장음표시 사용
161쪽
Apronoa Computacao com Python Documentatiori, Versao q.
20.3 48.3 implementanoo pithas com listas os Python
Este codigo e chamado uina implementaquο do I AD Pilha. Geralmente, uina implementaςoa e um conjunto demetoclos que satisfaZem os requisitos siniaticos e semanticos de uma interface. Aqui esta urna implementaςao do I AD Pillia que usa uina lista do Python
454 Capitulo 20. Capitulo 48: Pil nas
162쪽
Aprono a Computa octo com Python Documentatiori, Versao q.
Uma pillia e urna estrutura cle claclos generica. o que significa que poclemos adicionar quatquer tipo de item a ela. Ο exemplo a seguir en illia clois inteiros e uina XXXstring na pillia
A saida e - 45 54. Em outras palavras . usamos a pillia para imprimi r os stens no contrariol Sabidamente. este nao e o formato padrao de imprimi r urna lista. mas. usando unia pillia, mi notavel mente facit de fage Voce deve comparar este trecho de codigo com a implementaςao de serint chwarci na sequo lJ.4. Existe una paralelo natura entre a Versao recursi Va de Print re circi e o algoriimo de pillia aqui . A diserena e que printBac ard usa apillia de execuςao para XXXmanter a trilhas ep track) dos nos enquanto percone a lista. e enlao imprime-a no retornoda recursao. o algoriimo de pillia faZ a mesma coisa; exceto que usa o objeto Stack ao inves da pillia de execuςao.
Para implementar O algoriimo anterior. necessitamos estar pronios para perconer unia string e quebra-la em operandose Operadores. Este processo e uni exemplo de XX parsing e o resultado - os pedaςos da string - suo chamados XXXtokens. Voce deve lembrar estas palavras do capitulo l. Python fornece iam melodo split nos modulos String e re sexpressoes regulare S). A funςao Ad Tin s. SP it separauma string numa lista usando uni unico caracter como cle imitaclor. Por exemplo
163쪽
Apronoa Computacao com Python Documentatiori, Versao q.
Note que a ordem dos argumentos e dilarente de string. split, o delimitador Vem antes da string. A lista resultante inclut os operandos 123e 4b 6. eos operadores ρ e f. Umbem inclut duas strings VaZias que Sao inseridas depois dos operadores.
56 Capitulo 20. Capitulo 48: Pil nas
164쪽
Aprono a Computa octo com Python Documentatiori, Versao q.
Imersamente. o cliente assume que a implementaςao do 'D esta correta e nao se preOcupa com os detallies. Quando voce esta usando uni tipo nati Vo do Python. tem o luxo de pensar exclusi Vamente como uni cliente. E claro. quanto Voce implementa um TAD. Voce tambem tem que escreVer codigo cliente para testa-lo. Nesae caso, Voce faZ os clois p eis. O que pode ser confuso. Voce deve faZer algum efforςd para manter a trilha do papel que es talagendo a cada momento.
tipo abstrato cle claclos ΤΛD) abstraci data trae AD ID): Um tipo de clado gerat mente urna coleςao de objetos) quee delini clopor una conjunto de operaςoes, que poclem ser implementadas de Varias manetras. interface sinterface): E o conjunto de operaς oes que definem Um TDA. implementacuo simplementationi: Codigo que satisfar preenche ) os requisitos siniaticos e semanticos de unia in
cliente client): Uni programa sola o programador que o escrevela) que faZ utili Zaςao de um TDA.sOrnecessor sprovider): Codigo sola o programador que o escreVeu) que implementa uni TDA. revestimento veneer): Definicao de classe que implementa uni TDA com de micdes de melodos que suo chamadasa outros melodos. as VeZes com pequenas modificaςGes. A lamina far una traballio insignificante; mas melliora ou padroni Za a interface clada ao cliente. estriatura cle claclos generica generis data xjucture): Tipo de es trutura de clados que contem data de uni tipo qual-quer tipo generi co)
infixa in ): Notaςao maternatica em que os Operadores se si tuam entre PS Pperundo S. Ροs-fixa spostm): Notaςao matematica em que Os Operadores se Si tuam apo S OS Operundos. XXX parse sparse): Ler uni conjunto de caracteres string de caracteres) ou tokens sinibolos atomicos) e anali sar suae strutura gramatical. XXX token stoken): Conjunto de caracteres que sao tralados como uina uni clade atomica para lins de anali se gramatical, como as palaVras na lingvagem naturai. cle imitaclor limiter): Um caracter que e utili ado para separar os stabolos atomicos tokens) como a pontunquona lingvagem nuturni.
165쪽
Aprono a Computaςao com Python Documentation, is rSBO q. 458 Capitulo 20. Capitulo 48: Pil nas
166쪽
Este capitulo apresenta clois TDAs: Fila e Fila por Priori clade. Na nossa vida diaria, fila e uni at inhamento de consumidores agitardando algum tipo de serv o. Na maioria dos casos, o primetro da fila e o primetro a ser alendido. Mas lia exceς Oes NO aeroporto, passagetros crio Voo Vai decolar logo. as VeZes Sao chamados primetro no balcao docheck-in. mesmo que estriam no meio da lila. No supermercado. e comum na fila do calxa alguem deixar passar nafrente unia pes Soa que chega a fila So com um ou clois proclutos na mao A regra que determina quem e o proximo da fila chama-se politica de ensilet ramento. A politica de ensilet ramento mais Simples chama-se FIFΟ. sigia de frat- in rat-sui: primetro a entran primetro a sat L A politica de ensilet ramento mai S gerat e o enitiei ramento por priori clade em que se atribui uina priori clade a cada pessoa da fila e a que liver maior priori clade vat primetro; independente da sua ordem de chegada. Di Zemos que essa e a politica mai S gerat de lodas. porque a priori clade pode ser baseada em quatquer coisa: hora de parti da do Voo: quantos proclutos a pessoa Vai passarpeio calxa: o grata de prestigio da pes Soa. E claro que nem todas as politicas de ensilet ramento suo ' ustas '. mas o quee justo depende do ponto de Vista O TDA Fila e o TDA Fila por Priori clade tem o mesmo conjunto de operaςoes. A di feren ca esta na semantica das oper-aςoes: a fila usa a politica FIFo: e a fila por priori clade como o proprio nome sugere) usa a politica de enlileiramentopor priori clade.
A primetra implementaςao que vanios ver de una TDA Fila chama-se fila encacleacla porque e laita de objetos Nos encadendos. A deliniquo da classe e a seguinte
167쪽
Apronoa Computacao com Python Documentatiori, Versao q.
Capitulo 24. Capitulo 49: Filas
168쪽
Apronoa Computacao com Python Documentatiori, Versao q.
Queremos urna implementaςao do TDA Fila que possa realiZar todas as operaςoes em tempo constante. Uma manetrade fager isso e modificar a classe Fila, de modo que ela mantentia a referencia tanto no primetro quanto no ultimo no como mostra a figura A implementaςao de ImpTOVO IOUSUS tem esSR Curn
169쪽
Aprono a Computa octo com Python Documentatiori, Versao q.
Essa implementaςao e mais complicada que a primetra e mais disicit de se demonstrar que esta correla. A Vantageme que o objetivo mi atingi do - tanto in Apri quanto TQmOVΘ suo Operaςoes de tempo constante. Como exercscio. escreVa uma implementaςao do TDA Fila usando uina lista nativa do Python. Comparea performance des Sa implementaqao com a de ImpT OV QIQUOUΘ para filas de di Versos comprimentos
24. 5 49. 5 Fila por priorio ace
o TDA Fila por Priori clade tem a me sma interface que o TDA Fila, mas semantica dilarente. Mais unia VeZ, a interfacee a seguinte init Iniciali Zar uma noVa fila VaZia inseri Adicionar una novo item a fila remove Remo ver e retornar iam item da fila. O item retornaclo e aquele que ii Ver maior priori clade. isEmpty Checar se a fila esta VaZin A di ferenς a semantica e que o item removido da fila nao e necessariamente O que mi incluido primetro e. sim. o quetem maior priori clade. Que priori clades suo essas e como elas se comparam unias com as Outras nao e especificado pelaimplementaςao Fila por Priori clade. Isso depende de quais itens estuo na fila. Por exemplo, se os itens da fila liverem nome. podemos escolhe-los por Ordem alfabetica. Se for a pontuaquo deum jogo de boliche, podemos ir da maior para a menor mas se for pontuaςao de golla, tersamos que ir da menor para a maior. Se e possiVel comparar Os itens da fila e possiset achar e remover o que tem maior priori clade. Essa implementaςao da Fila por Priori clade tem como atributo urna lista Python chamada it Oms, que contem os itens da hin.
No inscio de cada iteraςao, maκi armagena o indice do maior item sa priori clade mais alta de lodas) que vi mos ate oria. A cada Volta do laςo, o programa compara o i-esimo item no campeao. Se o novo item for maior ma Mi recebeo valor de i.
Capitulo 24. Capitulo 49: Filas
170쪽
Apronoa Computacao com Python Documentatiori, Versao q.
Como exemplo de uni o elo com uina deliniquo nao-usual de priori clade, Vamos implementar uina classe chamada GOlf QT gollista). que mantem registro dos nomes e da pontuaςao de gollistas. Como sen re, comeςamos definindo