Universidade Federal de Mato Grosso do Sul. Standard Template Library (STL)

Tamanho: px
Começar a partir da página:

Download "Universidade Federal de Mato Grosso do Sul. Standard Template Library (STL)"

Transcrição

1 Universidade Federal de Mato Grosso do Sul Facom - Faculdade de Computação Linguagem de Programação Orientada a Objetos Prof. Me. Liana Duenha Standard Template Library (STL) 1 Introdução A Standard Template Library ou STL é uma biblioteca disponibilizada pelos ambientes de desenvolvimento C++ que contém um conjunto de classes para representar diversas estruturas de dados e algoritmos baseado em templates. A STL define os poderosos componentes reutilizáveis que implementam muitas estruturas de dados comuns e os algoritmos para processar adequadamente essas estruturas. O uso de STL oferece os seguintes benefícios: Reutilização de código. Como é baseado em templates, as classes de STL podem ser adaptadas a tipos distintos sem mudança de funcionalidade (type safe collections). Portabilidade e facilidade de uso. 1.1 Categorias de classes na STL As classes implementadas pela STL podem ser categorizadas em três grandes grupos: Contêineres (containers): classes utilizadas para armazenamento de dados, implementando uma coleção. Os adaptadores de contêineres fornecem funcionalidades específicas sobre contêiners; Iteradores (iterators): classes que permitem a varredura de uma coleção seguindo uma determinada regra; Algoritmos (algorithms): classes que implementam métodos para realização de algoritmos comuns de estruturas de dados sobre as coleções. 2 Contêineres Correspondem às coleções de elementos de um determinado tipo, na forma de gabaritos de classe. Os contêineres de sequência representam estruturas de dados lineares, 1

2 como vetores e listas. Os contêineres associativos representam estruturas de dados não-lineares que, em geral, podem localizar rapidamente elementos armazenados na estrutura. Esses dois tipos de contêineres são referidos como de contêineres de primeira classe. Há também os adaptadores de contêineres que implementam versões limitadas de contêineres sequenciais, como por exemplo, filas, pilhas ou filas de prioridade. Contêineres de sequência: vector: os elementos são organizados na forma de um array que pode crescer dinamicamente; list: os elementos são organizados na forma de uma lista duplamente encadeada, sem limite máximo de elementos; deque: os elementos são organizados em sequência, permitindo inserção ou remoção no início ou no fim sem necessidade de movimentação de outros elementos. Essa estrutura tenta se aproveitar das vantagens das duas anteriores com relação à eficiência dos métodos. Deque é abreviação de double ended queue ou fila com dupla terminação. Esta classe oferece acesso indexado eficiente para ler e modificar seus elementos, de modo muito semelhante a um vector, e também ofecere métodos eficientes de inserção e remoção nas suas extremidades (front ou back) de maneira eficiente, assim como uma list. Contêineres Associativos: set: coleção ordenada na qual os próprios elementos são utilizados como chaves para ordenação do contêiner. Esse contêiner permite duplicatas; multiset: idem ao set, porém não permite duplicatas; map: mapeamento de um para um, não permite duplicatas e possui pesquisa baseada em chave; multimap: idem ao map, porém permite mapeamento de um para muitos e duplicatas. Adaptadores de Contêineres: Existem três adaptadores de containeres definidos na STL. São eles: stack: fornece funcionalidade de pilha (estrutura LIFO, last in first out). queue: fornece funcionalidade de fila FIFO (first in first out). priority queue: fornece a funcionalidade de uma fila FIFO porém com prioridades de inserção. 2

3 Arquivos de cabeçalho de contêiner Standard Libraty: <vector>,<list>,<deque>, <stack>, <queue>, <map> (para map e multimap), <set> (para set e multiset). 2.1 Métodos comuns Alguns dos principais métodos comuns aos templates de contêiner são: construtor padrão: implementa a inicialização-padrão do contêiner (é comum que existam diferentes construtores para o mesmo contêiner); construtor de cópia: inicializa o contêiner como uma cópia de um contêiner existente do mesmo tipo; destrutor: função destrutora para liberação da memória utilizada pelo contêiner; empty: retorna true se não houver nenhum elemento no contêiner; caso contrário, retorna false size: retorna o número de elementos no contêiner; swap: permuta os elementos de um contêiner; operators =, <, <=, >, >=, ==,! =: para cada operador; implementa a funcionalidade esperada Funções encontradas apenas em contêineres de primeira classe (de sequência ou associativos: max size: retorna o número máximo de elemento de um contêiner; begin: retorna um iterator ou um const iterator que referencia o primeiro elemento do contêiner; end: retorna um iterador ou um const iterator que referencia a próxima posição depois do fim do contêiner; rbegin: retorna um reverse iterator ou const reverse iterator que referencia o último elemento do contêiner; rend: retorna um reverse iterator ou const reverse iterator que referencia a próxima posição depois do último elemento do contêiner invertido; clear: remove todos os elementos do contêiner; erase: remove um elemento do contêiner. Métodos de adição e remoção em deque e vector: 3

4 push back: adiciona elemento ao fim do contêiner push front: adiciona elemento ao início do contêiner back: obter uma referência para elemento no fim do contêiner front: obter uma referência para elemento no início do contêiner pop back: remove um elemento do fim do contêiner pop front: remove um elemento do início do contêiner Para operações de acesso a elementos em vector, map e deque: utiliza-se o operador [ ] como em um array comum. Após a explicação e exemplificação dos iteradores, exibiremos exemplos sobre adaptadores de contêineres. 3 Iteradores Os iteradores são utilizados para apontar para os elementos de contêineres de primeira classe. Os iteradores são implementados apropriadamente para cada tipo de contêiner. O operador de desreferenciação (*) desreferencia um iterador a fim de que o elemento para o qual ele aponta possa ser utilizado. A operação ++ em um iterador move-o para o próximo elemento do contêiner. Há suporte a diversas categorias de iteradores: iterator: é usado para percorrer os elementos do contêiner do início para o fim do contêiner e não pode ser usado para a gravação de dados no contêiner; const iterator: idem ao iterator, porém permite acesso para gravação de dados no contêiner; reverse iterator: permite percurso apenas para leitura dos elementos na ordem inversa (do fim para o início); const reverse iterator: permite percurso para leitura/gravação dos elementos do contêiner na ordem inversa (do fim para o início); random access: iterador bidimensional com capacidade de acesso direto a qualquer elemento do contêiner; 4

5 4 Algoritmos Correspondem de funções que implementam algoritmos de estruturas de dados (definidos na biblioteca algorithm). As funções são divididas em 3 categorias: sequência: implementam operações de busca e alteração da sequência de elementos do container classificação: implementam classificação dos elementos do contêiner numéricos: implementam funções numéricas comuns sobre os elementos do container. 4.1 Alguns algoritmos de sequência: copy: copia os elementos entre dois iteradores para um outro contêiner; fill: atribui um determinado valor a todos os elementos entre dois iteradores; remove: remove todos os elementos de um determinado valor entre dois iteradores; replace: recebe dois valore old value e new value, e substitui os elementos iguais a old value por new value entre dois os iteradores. reverse: inverte a ordem dos elementos entre dois iteradores; rotate: recebe como parâmetros três iteradores (start, end e middle). Rotaciona os elementos entre dois iteradores start e end de tal maneira que o iterador middle fique posicionado onde antes estava o iterador start. equal: Recebe como parâmetros três iteradores (start1, end1, start2). Retorna true se os elementos entre os iteradores start1 e end1 são iguais aos da faixa de mesmo tamanho iniciando em start2. find: Retorna um iterador para a primeira ocorrência do elemento com um determinado valor passado como parâmetro entre dois iteradores. search: Recebe como parâmetros quatro iteradores (start1, end1, start2, end2). Realiza a busca do subconjunto dos elementos entre os iteradores start2 e end2 dentro do conjunto dos elementos entre start1 e end1. Os algoritmos operam sobre os contêineres utilizando somente os iteradores dos containers. Exemplo: 5

6 using namespace std; #include <vector> #include <algorithm> #include <iostream> int main () int elements[] = 3, 8, 4, 7, 2, 1; vector<int> v; for (int i = 0; i < 6; i++) v.push_back(elements[i]); //rotaç~ao vector<int>::iterator inicio = v.begin(); vector<int>::iterator fim = v.end(); vector<int>::iterator meio = inicio + 3; rotate(inicio, meio, fim); cout << "Elementos rotacionados: " << endl; for (vector<int>::const_iterator it = v.begin(); it < v.end(); it++) cout << *it << " "; //reversing inicio = v.begin(); fim = v.end(); reverse(inicio, fim); cout << endl << "Elementos invertidos: " << endl; for (vector<int>::const_iterator it = v.begin(); it < v.end(); it++) cout << *it << " "; // replacing inicio = v.begin(); fim = v.end(); replace(inicio, fim, 4, -1); cout << endl << "Substituindo 4 por -1: " << endl; for (vector<int>::const_iterator it = v.begin(); it < v.end(); it++) 6

7 cout << *it << " "; 4.2 Alguns algoritmos de classificação: sort: Classifica em ordem crescente os elementos entre dois iteradores passados como parâmetros, sem garantia de ordem entre os elementos de mesmo valor; stable sort: semelhante a sort porém mantém a ordem original dos elementos que são iguais; Exemplo: using namespace std; #include <vector> #include <algorithm> #include <iostream> int main(int argc, char* argv[]) int elemento; vector <int> v; //mostrando o tamanho do conteiner cout << "O container tem tamanho " << v.size() << endl; //inserindo no final do conteiner for (int i = 0; i < 10; i++) cout << "Digite o próximo elemento: "; cin >> elemento; v.push_back(elemento); //percorrendo de trás para a frente cout << "Percurso do container na ordem inversa: " << endl; for (vector<int>::reverse_iterator rev = v.rbegin(); rev < v.rend(); rev++) cout << *rev << " "; 7

8 cout << endl; //mostrando a capacidade cout << "A capacidade atual do vector é " << v.capacity() << endl; //criando iteradores na direç~ao original vector<int>::iterator inicio = teste.begin(); vector<int>::iterator fim = teste.end(); //ordenando os elementos sort(inicio, fim); cout << "Elementos ordenados: " << endl; for (vector<int>::const_iterator fwd = v.begin(); fwd < v.end(); fwd++) cout << *fwd << " "; return 0; 4.3 Alguns algoritmos numéricos: accumulate: Recebe como parâmetros dois iteradores e um valor val. Acumula e retorna o valor de val com todos os valores entre os dois iteradores. count: Conta e retorna quantos valores entre os dois iteradores são iguais a determinado valor. Exemplo: using namespace std; #include <vector> #include <algorithm> #include <numeric> #include <iostream> int main () int elementos[] = 3, 8, 4, 7, 2, 1; vector<int> v; for (int i = 0; i < 6; i++) v.push_back(elementos[i]); 8

9 // acumula e retorna o valor do inicio ao fim do vetor vector<int>::iterator inicio = v.begin(); vector<int>::iterator fim = v.end(); int valor = accumulate(inicio, fim, 0); cout << "Valor acumulado dos elementos: " << endl; cout << valor; // conta a quantidade de 7s no vetor inicio = v.begin(); fim = v.end(); int contagem = count(inicio, fim, 7); cout << endl << "Contagem de 7 s: " << endl; cout << contagem; return 0; 5 Exmplos de uso de Contêineres Sequênciais e Associativos 5.1 Classe vector #include <vector> #include <algorithm> #include <iostream> #include <numeric> using namespace std; template <typename T> void printvector(vector<t> v) for (typename std::vector<t>::const_iterator it = v.begin(); it < v.end(); it++) cout << *it << " "; cout << endl; 9

10 int main () int elements[] = 3, 8, 4, 7, 2, 1; vector<int> vint; // validando a insercao no conteiner vector for (int i = 0; i < 6; i++) vint.push_back(elements[i]); // uso de iterators cout << "\nelementos do vetor: " << endl; printvector(vint); // uso de reverse_iterators cout << "\nelementos do vetor utilizando reverse_iterators: " << endl; for (vector<int>::const_reverse_iterator it = vint.rbegin(); it < vint.rend(); it++) cout << *it << " "; // useo de reverse (invers~ao dos elementos) reverse(vint.begin(),vint.end()); cout << endl << "\nelementos do vetor após invers~ao: " << endl; printvector(vint); // uso de rotate (método de rotaç~ao) rotate(vint.begin(),vint.begin()+2,vint.end()); cout << "\nelementos rotacionados usando início+2 elemento de controle da rotaç~ao: " << endl; printvector(vint); // uso de replace (método de substituiç~ao) replace(vint.begin(),vint.end(), 4, -1); cout << "\nsubstituindo 4 por -1 em todo o vetor: " << endl; printvector (vint); 10

11 // lendo 5 elementos da entrada padr~ao e armazenando no final do vetor int elemento; for (int i = 0; i < 5; i++) cout << "Digite o próximo elemento: "; cin >> elemento; vint.push_back(elemento); printvector(vint); //mostrando a capacidade cout << endl << "A capacidade atual do vector é " << vint.capacity() << endl; //ordenando os elementos do vetor sort(vint.begin(), vint.end()); cout << "Elementos ordenados: " << endl; printvector(vint); // acumulador int valorac = accumulate (vint.begin(),vint.end(),0); cout << "\nsoma de todos os elementos do vetor: " << valorac; return 0; 5.2 Classe list #include <list> #include <algorithm> #include <iostream> #include <numeric> using namespace std; template <typename T> void printlist(list<t> v) 11

12 for (typename std::list<t>::const_iterator it = v.begin(); it!= v.end(); it++) cout << *it << " "; cout << endl; // comparison, not case sensitive. bool compare_nocase (std::string first, std::string second) unsigned int i=0; while ( (i<first.length()) && (i<second.length()) ) if (tolower(first[i])<tolower(second[i])) return true; else if (tolower(first[i])>tolower(second[i])) return false; ++i; if (first.length()<second.length()) return true; else return false; return false; int main () int elements[] = 3, 8, 4, 7, 2, 1; list<int> intlist; // validando a insercao no conteiner list for (int i = 0; i < 6; i++) intlist.push_back(elements[i]); intlist.push_front(10); // uso de iterators cout << "\nelementos da lista: " << endl; printlist(intlist); 12

13 // useo de reverse (invers~ao dos elementos) reverse(intlist.begin(),intlist.end()); cout << endl << "\nelementos do vetor após invers~ao: " << endl; printlist(intlist); // uso de replace (método de substituiç~ao) replace(intlist.begin(),intlist.end(), 4, -1); cout << "\nsubstituindo 4 por -1 em todo o vetor: " << endl; printlist (intlist); //ordenando os elementos do vetor intlist.sort(); cout << "Elementos ordenados: " << endl; printlist(intlist); // acumulador int valorac = accumulate (intlist.begin(),intlist.end(),0); cout << "\nsoma de todos os elementos do vetor: " << valorac; // EXEMPLO SOBRE STRINGS list<string> strlist; list<string>::const_iterator it; strlist.push_back ("Meu"); strlist.push_back ("primeiro"); strlist.push_back ("teste"); strlist.push_back ("com"); strlist.push_back ("STD lists."); strlist.push_front ("Este é "); strlist.push_front ("Olá pessoal! "); std::cout << "\nelementos da lista:"; for (it=strlist.begin(); it!=strlist.end(); ++it) 13

14 std::cout << << *it; std::cout << \n ; return 0; 5.3 Classe deque #include <deque> #include <algorithm> #include <iostream> #include <numeric> using namespace std; template <typename T> void printdeque(deque<t> v) for (typename std::deque<t>::const_iterator it = v.begin(); it!= v.end(); it++) cout << *it << " "; cout << endl; int main () int elements[] = 3.0, 8.2, 4.0, 7.1, -0.2, -23; deque<double> doubledeque; // validando a insercao no conteiner deque for (int i = 0; i < 6; i++) doubledeque.push_front(elements[i]); 14

15 doubledeque.push_back(-0.45); // uso de iterators cout << "\nelementos do deque: " << endl; printdeque(doubledeque); // uso de reverse_iterators cout << "\nelementos do deque utilizando reverse_iterators: " << endl; for (deque<double>::const_reverse_iterator it = doubledeque.rbegin(); it < doubledeque.rend(); it++) cout << *it << " "; // useo de reverse (invers~ao dos elementos) reverse(doubledeque.begin(),doubledeque.end()); cout << endl << "\nelementos do deque após invers~ao: " << endl; printdeque(doubledeque); // uso de replace (método de substituiç~ao) replace(doubledeque.begin(),doubledeque.end(), -0.45, -0.5); cout << "\nsubstituindo por -0.5 em todo o deque: " << endl; printdeque (doubledeque); //ordenando os elementos do vetor sort(doubledeque.begin(),doubledeque.end()); cout << "\nelementos ordenados: " << endl; printdeque(doubledeque); // acumulador double valorac = accumulate (doubledeque.begin(),doubledeque.end(),0); cout << "\nsoma de todos os elementos do deque: " << valorac; 15

16 return 0; 5.4 Classe set e multiset #include <set> #include <iostream> using namespace std; using std::cout; typedef std::multiset<int> Ims; template <typename T> void printset(set<t> v) for (typename std::set<t>::const_iterator it = v.begin(); it!= v.end(); it++) cout << *it << " "; cout << endl; template <typename T> void printmultiset(multiset<t> v) for (typename std::multiset<t>::const_iterator it = v.begin(); it!= v.end(); it++) cout << *it << " "; cout << endl; int main () 16

17 const int SIZE = 10; int elements[] = 3, 8, 3, 4, 4, 7, 8, 2, 2, 1; // declaraç~ao de dois multisets de inteiros e um set de inteiros multiset<int> intmultiset1, intmultiset2; set<int> intset; // validando a insercao nos conteineres set e multiset for (int i = 0; i < SIZE; i++) intset.insert(elements[i]); intmultiset1.insert(elements[i]); // outra forma de inserç~ao intmultiset2.insert(elements,elements+size); // Impress~ao dos resultados cout << "\nelementos em intset:"; printset (intset); cout << "\nelementos em intmultiset1:"; printmultiset (intmultiset1); cout << "\nelementos em intmultiset2:"; printmultiset (intmultiset2); // ratificando a diferenca de set e multiset com // relaç~ao às chaves duplicadas cout << "\nhá " << intset.count (3) << " elementos iguais a 3 no set"; cout << "\nhá " << intmultiset1.count (3) << " elementos iguais a 3 no multiset"; // Usando iteradores para realizar busca de um elemento Ims::const_iterator result; // ou Ims::const_iterator result = intmultiset1.find(3); if (result!= intmultiset1.end() ) cout << "\nencontrou valor 3 em Multiset"; result = intmultiset1.find(20); 17

18 if (result!= intmultiset1.end() ) cout << "\nencontrou valor 20 em Multiset"; // Impress~ao cout << "\nelementos em intset:"; printset (intset); cout << "\nelementos em intmultiset1:"; printmultiset (intmultiset1); cout << "\nelementos em intmultiset2:"; printmultiset (intmultiset2); return 0; 5.5 Classe map e multimap #include <map> #include <iostream> using namespace std; using std::cout; typedef std::multimap<int,double> MMapType; typedef std::map<int,double> MapType; int main () // declaraç~ao de UM multimap de pares (int, double) MMapType pairs; pairs.insert(mmaptype::value_type(3,4.5) ); pairs.insert(mmaptype::value_type(10,4.5) ); pairs.insert(mmaptype::value_type(0,2.5) ); 18

19 pairs.insert(mmaptype::value_type(2,7.5) ); pairs.insert(mmaptype::value_type(2,7.5) ); cout << "\nmultimap:\n"; for (MMapType::const_iterator iter = pairs.begin(); iter!= pairs.end(); iter++) cout << iter->first << "\t" << iter->second << "\n"; // MAP n~ao aceita duplicatas MapType map; map.insert(mmaptype::value_type(3,4.5) ); map.insert(mmaptype::value_type(10,4.5) ); map.insert(mmaptype::value_type(0,2.5) ); map.insert(mmaptype::value_type(2,7.5) ); map.insert(mmaptype::value_type(2,7.5) ); cout << "\nmap:\n"; for (MapType::const_iterator iter = map.begin(); iter!= map.end(); iter++) cout << iter->first << "\t" << iter->second << "\n"; return 0; 6 Exemplos de uso de Adaptadores de Containeres 6.1 stack Um adaptador stack utiliza, por padrão, um container deque para sua implementação. Seus métodos são: push: empilha pop: desempilha empty: verifica se está vazia 19

20 top: obtém valor do topo da pilha Exemplo: using namespace std; #include <vector> #include <stack> #include <algorithm> #include <numeric> #include <iostream> int main(int argc, char* argv[]) int elementos[] = 3, 8, 4, 7, 2, 1; stack <int, vector<int> > pilha; //monta pilha sobre vetor cout << "Empilhando: "; for (int i = 0; i < 6; i++) cout << elementos[i] << " "; pilha.push(elementos[i]); cout << endl; //desempilhamento cout << "Desempilhando: "; while (!pilha.empty()) cout << pilha.top() << " "; pilha.pop(); return 0; 6.2 queue Um adaptador queue utiliza, por padrão, um container deque para sua implementação. Pode também ser implementado com list. Seus métodos são: push: enfileira pop: desenfileira 20

21 empty: verifica se está vazia front: obtém primeiro elemento da fila back: obtém último elemento da fila Exemplo: using namespace std; #include <vector> #include <stack> #include <queue> #include <iostream> int main(int argc, char* argv[]) int elementos[] = 3, 8, 4, 7, 2, 1; queue <int> fila; //monta pilha sobre vetor cout << "Enfileirando: "; for (int i = 0; i < 6; i++) cout << elementos[i] << " "; fila.push(elementos[i]); //desenfileiramento cout << "Desenfileirando: "; while (!fila.empty()) cout << fila.front() << " "; fila.pop(); return 0; 6.3 priority queue Um adaptador priority queue utiliza, por padrão, um container vector para sua implementação. Pode também ser implementado com deque. A inserção é feita de acordo com a prioridade dos elementos inseridos; por padrão a prioridade é definida pelo valor do elemento, porém pode-se fornecer um outro comparador que estenda o objeto de função less<t> e redefina o método operator() (x, y) que retorna true se x < y. 21

22 Os métodos de priority queue são os mesmos de deque. Exemplo: using namespace std; #include <vector> #include <stack> #include <queue> #include <iostream> #include <functional>//para permitir a extens~ao de less template <class T> class my_less: public less<t> public: bool operator()(const T& x, const T& y) ; if (strcmpi(x, y) < 0) return true; else return false; //redefiniç~ao do significado da compara int main(int argc, char* argv[]) char* elementos[] = "abacaxi", "uva", "mamao"; priority_queue<char*, vector<char*>, my_less<char*> > filap; cout << "Enfileirando: "; for (int i = 0; i < 3; i++) cout << elementos[i] << " "; filap.push(elementos[i]); //desenfileiramento cout << endl << "Desenfileirando: "; while (!filap.empty()) cout << filap.top() << " "; filap.pop(); return 0; 22

Laboratório de programação II

Laboratório de programação II Laboratório de programação II Standard Template Library (STL) Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Standard Template Library Biblioteca padronizada de funções Oferece um

Leia mais

PCC104 - Projeto e Análise de Algoritmos

PCC104 - Projeto e Análise de Algoritmos PCC104 - Projeto e Análise de Algoritmos Marco Antonio M. Carvalho Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal de Ouro Preto 27 de setembro de 2018 Marco Antonio

Leia mais

Prof. Marco Antonio M. Carvalho

Prof. Marco Antonio M. Carvalho Prof. Marco Antonio M. Carvalho Lembretes Lista de discussão Endereço: programaacao@googlegroups.com Solicitem acesso: http://groups.google.com/group/programaacao Página com material dos treinamentos http://www.decom.ufop.br/marco/extensao/obi/

Leia mais

Standard Template Library (STL)

Standard Template Library (STL) Standard Template Library (STL) BCC 221 - Programação Orientada a Objectos(POO) Guillermo Cámara-Chávez Departamento de Computação - UFOP Introdução Considerando a utilidade do reuso de software e também

Leia mais

O container vector funciona como um vetor comum, ou seja, os blocos de objetos estão contíguos, permitindo acesso aleatório.

O container vector funciona como um vetor comum, ou seja, os blocos de objetos estão contíguos, permitindo acesso aleatório. Capítulo 29 class O container vector vai ser apresentado em detalhes. Os demais containers serão apresentados de uma forma simplificada, pois as suas características são semelhantes a vector.

Leia mais

Estruturas de Informação. Biblioteca STL. Departamento de Engenharia Informática (DEI/ISEP) Fátima Rodrigues

Estruturas de Informação. Biblioteca STL. Departamento de Engenharia Informática (DEI/ISEP) Fátima Rodrigues Estruturas de Informação Biblioteca STL Departamento de Engenharia Informática (DEI/ISEP) Fátima Rodrigues mfc@isep.ipp.pt Programação Genérica Generic programming is a subdiscipline of computer science

Leia mais

INF Estruturas de dados avançadas. Standard Template Library

INF Estruturas de dados avançadas. Standard Template Library INF1010 - Estruturas de dados avançadas Introdução a C++ Standard Template Library PUC-Rio 2 de maio de 2018 Standard Template Library (STL) Biblioteca de classes e algoritmos parte da biblioteca padrão

Leia mais

Parte IV. Linguagens de Programação. Relembrando da Última Aula... Contêineres. STL (Standard Template Library) Prof. Miguel Elias Mitre Campista

Parte IV. Linguagens de Programação. Relembrando da Última Aula... Contêineres. STL (Standard Template Library) Prof. Miguel Elias Mitre Campista Linguagens de Programação Parte IV Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel Introdução à Programação em (Continuação) Relembrando da Última Aula... Tratamento de exceção Mais exemplos

Leia mais

Programação Orientada a Objetos para Redes de Computadores. STL (Standard Template Library) Library) Contêineres. Contêineres PARTE 2

Programação Orientada a Objetos para Redes de Computadores. STL (Standard Template Library) Library) Contêineres. Contêineres PARTE 2 Programação Orientada a Objetos para Redes de Computadores Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel PARTE 2 Programação - STL STL (Standard Template Library) Componentes baseados

Leia mais

Recursividade UFOP 1/48

Recursividade UFOP 1/48 BCC 201 - Introdução à Programação I Recursividade Guillermo Cámara-Chávez UFOP 1/48 Introdução I Recursividade: é um método de programação no qual uma função pode chamar a si mesma Muitas estruturas têm

Leia mais

Algoritmos e Estruturas de Dados 2007/2008

Algoritmos e Estruturas de Dados 2007/2008 Pilhas e Filas Algoritmos e Estruturas de Dados 007/008 Pilhas Pilha estrutura de dados linear em que a inserção e a remoção de elementos de uma sequência se faz pela mesma extremidade, designada por topo

Leia mais

Linguagens de Programação

Linguagens de Programação Linguagens de Programação Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel Parte IV Introdução à Programação em C++ (Continuação) Relembrando da Última Aula... Tratamento de exceção Mais

Leia mais

Aula 07. Estruturas de dados Lista, Pilha, Fila Pair, Map, Set e Bitset

Aula 07. Estruturas de dados Lista, Pilha, Fila Pair, Map, Set e Bitset Logo Aula 07 Estruturas de dados Lista, Pilha, Fila Pair, Map, Set e Bitset 2 Estrutura de Dados Estrutura de dados já foi vista em vetores, que foi uma maneira de manipular várias informações (variáveis

Leia mais

Standard Template Library (STL) II

Standard Template Library (STL) II Standard Template Library (STL) II BCC 221 - Programação Orientada a Objectos(POO) Guillermo Cámara-Chávez Departamento de Computação - UFOP Contêineres Associativos Acesso direto para armazenar/recuperar

Leia mais

PCS3111. Laboratório de Programação Orientada a Objetos para Engenharia Elétrica. Aula 11: Exercício Integrador (parte 2)

PCS3111. Laboratório de Programação Orientada a Objetos para Engenharia Elétrica. Aula 11: Exercício Integrador (parte 2) PCS3111 Laboratório de Programação Orientada a Objetos para Engenharia Elétrica Aula 11: Exercício Integrador (parte 2) Escola Politécnica da Universidade de São Paulo Agenda 1. Container List 2. Iterators

Leia mais

Universidade Federal do Espírito Santo Centro de Ciências Agrárias CCA UFES Departamento de Computação. Estruturas de Dados

Universidade Federal do Espírito Santo Centro de Ciências Agrárias CCA UFES Departamento de Computação. Estruturas de Dados Universidade Federal do Espírito Santo Centro de Ciências Agrárias CCA UFES Departamento de Computação Estruturas de Dados Tópicos Especiais em Programação Site: http://jeiks.net E-mail: jacsonrcsilva@gmail.com

Leia mais

Tipos de Dados Abstractos Estruturas Lineares Listas

Tipos de Dados Abstractos Estruturas Lineares Listas Tipos de Dados Abstractos Estruturas Lineares Listas FEUP - MIEEC Programação 2-2008/2009 Tipo de Dados Abstractos (TDA) TDA conjunto de objectos + conjuntos de operações abstracção matemática (dados são

Leia mais

STL significa Standard Template Library. É uma biblioteca que contém algumas estruturas de dados, como árvore binária e lista encadeada.

STL significa Standard Template Library. É uma biblioteca que contém algumas estruturas de dados, como árvore binária e lista encadeada. STL significa Standard Template Library. É uma biblioteca que contém algumas estruturas de dados, como árvore binária e lista encadeada. Estas estruturas são chamadas de Containers. Elas armazenam coleções

Leia mais

Biblioteca STL aplicada à Maratona de

Biblioteca STL aplicada à Maratona de Biblioteca STL aplicada à Maratona de Programação MEDITEC 5 29 de Maio de 2014 Introdução Estruturas de Dados Pilhas Filas Pares Vectores Listas e Iterators Árvores Balanceadas Strings Mapas Algoritmos

Leia mais

Orientação a Objetos - Programação em C++

Orientação a Objetos - Programação em C++ OO Engenharia Eletrônica Orientação a Objetos - Programação em C++ Slides 14: As classes List e Vector da STL (Standard Template Library). Prof. Jean Marcelo SIMÃO Classe List Uma classe Predefinida na

Leia mais

Algoritmos e Estruturas de Dados

Algoritmos e Estruturas de Dados Pilhas e Filas Algoritmos e Estruturas de Dados 009/00 Obs: slides marcados com (*) não foram apresentados na aula teórica, mas são parte da bibliografia a estudar! Pilhas Pilha estrutura de dados linear

Leia mais

Algoritmos e Estruturas de Dados 2005/2006

Algoritmos e Estruturas de Dados 2005/2006 Pilhas e Filas Algoritmos e Estruturas de Dados 005/006 Pilhas Pilha estrutura de dados linear em que a inserção e a remoção de elementos de uma sequência se faz pela mesma extremidade, designada por topo

Leia mais

IV Escola de Inverno Maratona de Programação UNIFEI Intermediário I

IV Escola de Inverno Maratona de Programação UNIFEI Intermediário I IV Escola de Inverno Maratona de Programação UNIFEI 2016 Intermediário I C++ STL - Standard Template Library C++ STL A STL (Standard Template Library) é uma biblioteca de algoritmos e estruturas de dados

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro Java Collections Framework (JCF) Uma coleção (collection) é um objeto que agrupa vários elementos. A JCF consiste numa arquitetura para representação e manipulação de coleções. Contém: - Um conjunto de

Leia mais

Aula 8- Standard Template Library. Arthur Ribacki Gabriel Portal Leonardo Chatain Luiz Fernando Scheidegger Rosália Schneider

Aula 8- Standard Template Library. Arthur Ribacki Gabriel Portal Leonardo Chatain Luiz Fernando Scheidegger Rosália Schneider Aula 8- Standard Template Library Arthur Ribacki Gabriel Portal Leonardo Chatain Luiz Fernando Scheidegger Rosália Schneider STL Motivação... int int_array = 5; char **vetor = new char*[int_array]; for(int

Leia mais

Templates. Programação de Computadores Estruturas de Dados. Alan de Freitas. Considere o código abaixo que encontra o maior elementos entre 3 ints

Templates. Programação de Computadores Estruturas de Dados. Alan de Freitas. Considere o código abaixo que encontra o maior elementos entre 3 ints Templates Programação de Computadores Estruturas de Dados São comuns situações em que operações muito parecidas podem ser executadas em diferentes tipos de dados Isto é especialmente verdade entre os tipos

Leia mais

Algoritmos e Estruturas de Dados 2009/2010

Algoritmos e Estruturas de Dados 2009/2010 Listas Algoritmos e Estruturas de Dados 2009/2010 Tipo de Dados Abstracto TDA conjunto de objectos + conjuntos de operações constituem uma abstracção matemática em C++ são implementados por classes; as

Leia mais

Estruturas de Dados - STL

Estruturas de Dados - STL Estruturas de Dados - STL Baseada na apresentação do prof. João Bittencourt Leandro Tonietto ltonietto@unisinos.br Algoritmos e Estruturas de Dados em C++ Unisinos http://www.inf.unisinos.br/~ltonietto/jed/aed/estruturadados-stl.pdf

Leia mais

Algoritmos e Estruturas de Dados 2006/2007

Algoritmos e Estruturas de Dados 2006/2007 Listas Algoritmos e Estruturas de Dados 2006/2007 Tipo de Dados Abstracto TDA conjunto de objectos + conjuntos de operações constituem uma abstracção matemática em C++ são implementados por classes; as

Leia mais

Mar 13, 2009 Roteiro Entrada & Saída Contêineres Algoritmos Exemplos Leitura simples #include // cin, cout, endl int a; float b; cin >> a >> b; if (cin) cout

Leia mais

Prof. Marco Antonio M. Carvalho

Prof. Marco Antonio M. Carvalho Prof. Marco Antonio M. Carvalho Lembretes Lista de discussão Endereço: programaacao@googlegroups.com Solicitem acesso: http://groups.google.com/group/programaacao Página com material dos treinamentos http://www.decom.ufop.br/marco/extensao/obi/

Leia mais

Tipo de Dados Abstracto

Tipo de Dados Abstracto Listas Algoritmos e Estruturas de Dados 2005/2006 Tipo de Dados Abstracto TDA conjunto de objectos + conjuntos de operações constituem uma abstracção matemática em C++ são implementados por classes; as

Leia mais

CIV 2802 Sistemas Gráficos para Engenharia º Trabalho: Programação básica em C++: Classes

CIV 2802 Sistemas Gráficos para Engenharia º Trabalho: Programação básica em C++: Classes CIV 2802 Sistemas Gráficos para Engenharia 2011.1 4º Trabalho: Programação básica em C++: Classes Implementação de uma calculadora RPN (Reversed Polish Notation) Entrega: 05/abril/2011 Pede-se complementar

Leia mais

Ordenação. Prof. Túlio A. M. Toffolo Prof. Marco Antonio M. Carvalho BCC402 Aula 04 Algoritmos e Programação Avançada

Ordenação. Prof. Túlio A. M. Toffolo Prof. Marco Antonio M. Carvalho   BCC402 Aula 04 Algoritmos e Programação Avançada Ordenação Prof. Túlio A. M. Toffolo Prof. Marco Antonio M. Carvalho http://www.toffolo.com.br BCC402 Aula 04 Algoritmos e Programação Avançada Aplicações Como testar se todos os elementos de um conjunto

Leia mais

Filas de prioridade. Algoritmos e Estruturas de Dados AED 2005/2006 AEDA 2009/2010

Filas de prioridade. Algoritmos e Estruturas de Dados AED 2005/2006 AEDA 2009/2010 Filas de prioridade Algoritmos e Estruturas de Dados AED 2005/2006 AEDA 2009/2010 Qual a Utilidade das Filas de Prioridade? Trabalhos maiores devem ser executados no fim (mesmo que não tenha sido o último

Leia mais

Aula 2 Listas Lineares Sequenciais. prof Leticia Winkler

Aula 2 Listas Lineares Sequenciais. prof Leticia Winkler Aula 2 Listas Lineares Sequenciais prof Leticia Winkler 1 Conteúdo Revisão de Vetor Definição Declaração Acesso dos Elementos Inicialização dos Elementos Exemplo Vetor e Função Lista Linear Operações com

Leia mais

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica. Computação L2 Linguagem C++ ovsj@cin.ufpe.br Observação: Material Baseado na Disciplina Computação Eletrônica. Alfabeto São os símbolos ( caracteres ) permitidos na linguagem: Letras (maiúsculas e minúsculas);

Leia mais

Estruturas de Dados Encadeadas

Estruturas de Dados Encadeadas CURSO: Ciência da Computação DATA: / / 2016 PERÍODO: 4 o. PROFESSOR: Andrey DISCIPLINA: Técnicas Alternativas de Programação AULA: 14 APRESENTAÇÃO Na aula de hoje vamos apresentar e discutir conceitos

Leia mais

Tabelas Hash & Outras Estruturas

Tabelas Hash & Outras Estruturas Tabelas Hash & Outras Estruturas Prof. MSc. João Ricardo Bittencourt Algoritmos e Estrutura de Dados em C++ Desenvolvimento de Jogos & Entretenimento Digital UNISINOS Sumário 1. Conceito de hashing 2.

Leia mais

CIC 110 Análise e Projeto de Algoritmos I

CIC 110 Análise e Projeto de Algoritmos I CIC 110 Análise e Projeto de Algoritmos I Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá Data structures AULA 04 Estrutura de Dados Uma estrutura de dados é uma maneira de armazenar

Leia mais

Aula 7 e 8 Filas e suas Aplicações. Prof. Leticia Winkler

Aula 7 e 8 Filas e suas Aplicações. Prof. Leticia Winkler Aula 7 e 8 Filas e suas Aplicações Prof. Leticia Winkler 1 Definição de Fila (Queue) São estruturas de dados do tipo FIFO (first-in first-out) - o primeiro elemento a ser inserido, será o primeiro a ser

Leia mais

Vectores em C++ Classe vector: Introdução

Vectores em C++ Classe vector: Introdução Vectores em C++ FEUP - MIEEC Programação 2-2008/2009 Classe vector: Introdução A classe vector é uma alternativa à representação de array primitivo Template de classe necessário especificar o tipo dos

Leia mais

programas = estrutura de dados + algoritmos

programas = estrutura de dados + algoritmos Algoritmos e Estruturas de Dados I1 Prof. Eduardo 1 1. INTRODUÇÃO O mundo tem mudado rapidamente com ajuda dos computadores. Podemos citar as pesquisas espaciais, o projeto genoma, os simuladores de vôo,

Leia mais

CES-11. Pilhas Definição Operações Filas. Operações Deques. Definição. Operações

CES-11. Pilhas Definição Operações Filas. Operações Deques. Definição. Operações CES-11 Pilhas Definição Operações Filas Definição Operações Deques Definição Operações PILHAS, FILAS E DEQUES As listas lineares admitem inserção e eliminação em qualquer posição. Pilhas, filas e deques

Leia mais

Coleções. João Paulo Q. dos Santos

Coleções. João Paulo Q. dos Santos Coleções João Paulo Q. dos Santos joao.queiroz@ifrn.edu.br Roteiro Conceitos sobre coleções; Tipos de coleções; Como são classificadas; Exemplos. 04/02/14 2 Coleções Classes e interfaces do pacote java.util

Leia mais

Templates. BCC Programação Orientada a Objectos(POO) Departamento de Computação - UFOP

Templates. BCC Programação Orientada a Objectos(POO) Departamento de Computação - UFOP Templates BCC 221 - Programação Orientada a Objectos(POO) Guillermo Cámara-Chávez Departamento de Computação - UFOP Introdução Os templates ou gabaritos fornecem a base para existência da programação genérica

Leia mais

Física Computacional 17 STL

Física Computacional 17 STL Física Computacional 17 STL 1. Contentores 2. Iteradores 3. Algoritmos bicudo@tecnico.ulisboa.pt Física Computacional - MEFT 2009/10 P. Bicudo, P. Martins & M. Cardoso 1 A STL (standard template library)

Leia mais

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula Tópicos Introdução Alocação sequencial Listas lineares,

Leia mais

ESTRUTURAS DE DADOS E ALGORITMOS II ANTONIO RAMOS DE CARVALHO JÚNIOR PILHAS

ESTRUTURAS DE DADOS E ALGORITMOS II ANTONIO RAMOS DE CARVALHO JÚNIOR PILHAS ESTRUTURAS DE DADOS E ALGORITMOS II ANTONIO RAMOS DE CARVALHO JÚNIOR PILHAS TEORIA CONJUNTO ORDENADO DE ITENS NO QUAL NOVOS ITENS PODEM SER INSERIDOS E A PARTIR DO QUAL PODEM SER ELIMINADOS ITENS EM UMA

Leia mais

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Listas e Filas Estruturas de Dados 2 Estrututuras de dados lineares Pilhas (stack) Estrutura de dados onde a inserção

Leia mais

Universidade Estadual Paulista Júlio de Mesquita Filho UNESP

Universidade Estadual Paulista Júlio de Mesquita Filho UNESP Introdução à Computação II AULA 16 BCC Noturno - EMA896115B Prof. Rafael Oliveira olivrap@gmail.com Universidade Estadual Paulista Júlio de Mesquita Filho UNESP Rio Claro 2014 (Sem 2) Estruturas de Dados

Leia mais

Estruturas de Dados Filas

Estruturas de Dados Filas Estruturas de Dados Filas Roteiro Introdução Definição de Fila (Queue) Aplicações Operações sobre Fila Implementação de Fila Com vetores Com listas encadeadas Exercícios Introdução Estamos acostumados

Leia mais

Aula 5 e 6 Pilhas e suas Aplicações. prof Leticia Winkler

Aula 5 e 6 Pilhas e suas Aplicações. prof Leticia Winkler Aula 5 e 6 Pilhas e suas Aplicações prof Leticia Winkler 1 Definição de Pilha (Stack) São estruturas de dados do tipo LIFO (last-in first-out) - o último elemento a ser inserido, será o primeiro a ser

Leia mais

FICHA 8 PILHAS E FILAS

FICHA 8 PILHAS E FILAS ESTRUTURAS DE DADOS E ALGORITMOS Departamento de Engenharia Eletrotécnica e de Computadores Faculdade de Ciências e Tecnologia da Universidade de Coimbra FICHA 8 PILHAS E FILAS 8.1. Objetivos Objetivos

Leia mais

Prof. Marco Antonio M. Carvalho

Prof. Marco Antonio M. Carvalho Prof. Marco Antonio M. Carvalho Lembretes Lista de discussão Endereço: programaacao@googlegroups.com Solicitem acesso: http://groups.google.com/group/programaacao Página com material dos treinamentos http://www.decom.ufop.br/marco/extensao/obi/

Leia mais

Guia de Consulta Rápida C++ STL. Joel Saade. Novatec Editora

Guia de Consulta Rápida C++ STL. Joel Saade. Novatec Editora Guia de Consulta Rápida C++ STL Joel Saade Novatec Editora Guia de Consulta Rápida C++ STL de Joel Saade Copyright 2006 da Novatec Editora Ltda. Todos os direitos reservados. É proibida a reprodução desta

Leia mais

SCC 202 Algoritmos e Estruturas de Dados I. Pilhas (Stacks) (implementação dinâmica)

SCC 202 Algoritmos e Estruturas de Dados I. Pilhas (Stacks) (implementação dinâmica) SCC 202 Algoritmos e Estruturas de Dados I Pilhas (Stacks) (implementação dinâmica) Operações alocação encadeada dinâmica typedef struct elem{ tipo_info info; struct elem *lig; tipo_elem; typedef struct{

Leia mais

Linguagem C++ Estruturas de controle Parte II Estruturas de repetição

Linguagem C++ Estruturas de controle Parte II Estruturas de repetição Fundamentos de Programação Linguagem C++ Estruturas de controle Parte II Estruturas de repetição Prof. Bruno E. G. Gomes IFRN 1 Estruturas de Controle Permitem o controle da sequência de execução de um

Leia mais

The Cyclops Project. Introdução: C++

The Cyclops Project. Introdução: C++ The Cyclops Project Introdução: C++ Aula 1 Visão Geral Histórico da Linguagem Programa C++: header, source função main() GCC Arquivos objeto, bibliotecas dinâmicas e estáticas #include, #define, namespaces,

Leia mais

PCC104 - Projeto e Análise de Algoritmos

PCC104 - Projeto e Análise de Algoritmos PCC104 - Projeto e Análise de Algoritmos Marco Antonio M. Carvalho Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal de Ouro Preto 31 de outubro de 2017 Marco Antonio

Leia mais

Aula 28: Arquivos de texto

Aula 28: Arquivos de texto Aula 28: Arquivos de texto Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2018/2 Baseado nos slides de Guillermo Cámara-Chávez Aulas anteriores Memória Ponteiro Utilização

Leia mais

Pilhas. Profa Morganna Diniz

Pilhas. Profa Morganna Diniz Pilhas Profa Morganna Diniz Pilhas Geralmente pilhas são úteis em situações em que dados devem ser recuperados em ordem inversa a do armazenamento É uma estrutura de dados linear que permite acesso por

Leia mais

PCS Laboratório de Programação Orientada a Objetos para Engenharia Elétrica. Aula 5: Encapsulamento e Tipo Abstrato de Dados

PCS Laboratório de Programação Orientada a Objetos para Engenharia Elétrica. Aula 5: Encapsulamento e Tipo Abstrato de Dados PCS 3111 Laboratório de Programação Orientada a Objetos para Engenharia Elétrica Aula 5: Encapsulamento e Tipo Abstrato de Dados Escola Politécnica da Universidade de São Paulo Agenda Questões Típicas

Leia mais

Algoritmos e Estruturas de Dados 2006/2007

Algoritmos e Estruturas de Dados 2006/2007 Filas de prioridade Algoritmos e Estruturas de Dados 2006/2007 Filas de prioridade Uma fila de prioridade permite, pelo menos, duas operações sobre um conjunto de valores comparáveis: inserção de um elemento

Leia mais

Pilhas e Filas. Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.2 e 3.3

Pilhas e Filas. Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.2 e 3.3 Pilhas e Filas Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.2 e 3.3 http://www2.dcc.ufmg.br/livros/algoritmos/ PILHAS Pilha É uma lista linear em que todas as inserções, retiradas e, geralmente,

Leia mais

Prof. Jesus José de Oliveira Neto

Prof. Jesus José de Oliveira Neto Prof. Jesus José de Oliveira Neto É uma das estruturas de dados mais simples A idéia fundamental da pilha é que todo o acesso a seus elementos é feito através do seu topo. Assim, quando um elemento novo

Leia mais

Universidade Federal do Espírito Santo Centro de Ciências Agrárias CCA UFES Departamento de Computação. Ordenação

Universidade Federal do Espírito Santo Centro de Ciências Agrárias CCA UFES Departamento de Computação. Ordenação Universidade Federal do Espírito Santo Centro de Ciências Agrárias CCA UFES Departamento de Computação Ordenação Tópicos Especiais em Programação Site: http://jeiks.net E-mail: jacsonrcsilva@gmail.com

Leia mais

CAP-241 Computação Aplicada I Dica: Standard Template Library (STL) Parte I - Containers Dr. Gilberto Ribeiro de Queiroz

CAP-241 Computação Aplicada I Dica: Standard Template Library (STL) Parte I - Containers Dr. Gilberto Ribeiro de Queiroz CAP-241 Computação Aplicada I Dica: Standard Template Library (STL) Parte I - Containers Dr. Gilberto Ribeiro de Queiroz São José dos Campos, 28 de Abril de 2016 C++ Templates Suporte a Templates em C++

Leia mais

PCS3111. Laboratório de Programação Orientada a Objetos para Engenharia Elétrica. Aula 10: Exercício Integrador (parte 1)

PCS3111. Laboratório de Programação Orientada a Objetos para Engenharia Elétrica. Aula 10: Exercício Integrador (parte 1) PCS3111 Laboratório de Programação Orientada a Objetos para Engenharia Elétrica Aula 10: Exercício Integrador (parte 1) Escola Politécnica da Universidade de São Paulo Agenda 1. Recapitulação dos principais

Leia mais

Estruturas de Dados. Túlio Toffolo BCC402 Aula 02 Algoritmos e Programação Avançada

Estruturas de Dados. Túlio Toffolo  BCC402 Aula 02 Algoritmos e Programação Avançada Estruturas de Dados Túlio Toffolo tulio@toffolo.com.br www.toffolo.com.br BCC402 Aula 02 Algoritmos e Programação Avançada Estruturas de dados elementares Arranjos (arrays) Pilhas (stacks) Filas (queues)

Leia mais

ANHANGUERA ESTRUTURA DE DADOS AULA 06 LISTAS CIRCULARES E DUPLAMENTE ENCADEADAS. Prof. Thomás da Costa

ANHANGUERA ESTRUTURA DE DADOS AULA 06 LISTAS CIRCULARES E DUPLAMENTE ENCADEADAS. Prof. Thomás da Costa ANHANGUERA 2015.2 ESTRUTURA DE DADOS AULA 06 Prof. Thomás da Costa thomascosta@aedu.com Vamos ver o PEA : PEA Estrutura de Dados Antes de iniciar a aula, vamos mostrar o andamento do PEA. Vou mostrar as

Leia mais

Física Computacional 15 Templates

Física Computacional 15 Templates Física Computacional 15 Templates 1. Templates de classes 2. Templates de Funções 3-12-2009 Física Computacional - MEFT 2009/10 P. Bicudo, P. Martins & M. Cardoso 1 Já vimos que através da herança e de

Leia mais

Instituto Federal de Educação, Ciência e Tecnologia do RN Câmpus Currais Novos. LINGUAGEM C++ VARIÁVEIS COMPOSTAS Arrays Aula I

Instituto Federal de Educação, Ciência e Tecnologia do RN Câmpus Currais Novos. LINGUAGEM C++ VARIÁVEIS COMPOSTAS Arrays Aula I LINGUAGEM C++ VARIÁVEIS COMPOSTAS Arrays Aula I Prof. Bruno E. G. Gomes Uma variável em um algoritmo pode ser vista como uma gaveta. A declaração de uma variável reserva uma gaveta (posição) de um certo

Leia mais

REVISÃO DE PILHAS E FILAS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

REVISÃO DE PILHAS E FILAS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos REVISÃO DE PILHAS E FILAS Vanessa Braganholo Estruturas de Dados e Seus Algoritmos PILHAS E FILAS São tipos especiais de listas com disciplina restrita de acesso Acesso Consulta Inserção Remoção Disciplina

Leia mais

Filas. Prof. Rui Jorge Tramontin Jr. UDESC - Rui J. Tramontin Jr. 1

Filas. Prof. Rui Jorge Tramontin Jr. UDESC - Rui J. Tramontin Jr. 1 Filas Prof. Rui Jorge Tramontin Jr. UDESC - Rui J. Tramontin Jr. 1 Índice Introdução Aplicações Implementação / Modelagem Operações de uma fila TAD da Fila em C UDESC - Rui J. Tramontin Jr. 2 Introdução

Leia mais

PCC104 - Projeto e Análise de Algoritmos

PCC104 - Projeto e Análise de Algoritmos PCC104 - Projeto e Análise de Algoritmos Marco Antonio M. Carvalho (baseado nas notas de aula do prof. Túlio A. M. Toffolo) Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade

Leia mais

Filas. Nesta aula veremos o ADT fila Em um computador existem muitas filas esperando pela impressora, acesso ao disco ou, num sistema timesharing,

Filas. Nesta aula veremos o ADT fila Em um computador existem muitas filas esperando pela impressora, acesso ao disco ou, num sistema timesharing, Filas Nesta aula veremos o ADT fila Em um computador existem muitas filas esperando pela impressora, acesso ao disco ou, num sistema timesharing, pelo uso da CPU Algoritmos e Estruturas de Dados I José

Leia mais

Programação Orientada a Objetos II JAVA Décima Aula. Prof. Rogério Albuquerque de Almeida

Programação Orientada a Objetos II JAVA Décima Aula. Prof. Rogério Albuquerque de Almeida Programação Orientada a Objetos II JAVA Décima Aula Prof. Rogério Albuquerque de Almeida 1 Programação Orientada a Objeto II Introdução à Estruturas de Dados Alocação Dinâmica Listas, pilhas e filas Construção

Leia mais

Orientação a Objetos. Programação em C++

Orientação a Objetos. Programação em C++ OO Engenharia Eletrônica Orientação a Objetos - Programação em C++ Slides 13: A classe Predefinida String. Prof. Jean Marcelo SIMÃO Classe String Uma classe Predefinida. Atribuição e concatenação de strings

Leia mais

Aula 18: Vetores Introdução a Programação Túlio Toffolo & Puca Huachi

Aula 18: Vetores Introdução a Programação Túlio Toffolo & Puca Huachi Aula 18: Vetores Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2018/2 Departamento de Computação UFOP Aula de Hoje 1 Exercícios da aula prática 2 Vetores 3 Exemplos

Leia mais

Estruturas de Dados Aula 11: TAD Pilha

Estruturas de Dados Aula 11: TAD Pilha Estruturas de Dados Aula 11: TAD Pilha Fontes Bibliográficas Livros: Projeto de Algoritmos (Nivio Ziviani): Capítulo 3; Introdução a Estruturas de Dados (Celes, Cerqueira e Rangel): Capítulo 10; Estruturas

Leia mais

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura Java First-Tier: Aplicações Orientação a Objetos em Java (I) Paradigmas de Programação Programação Funcional Programação Procedural Programação Orientada por Objetos Grupo de Linguagens de Programação

Leia mais

Estruturas de Dados. Módulo 11 Pilhas. 9/8/2005 (c) Dept. Informática - PUC-Rio 1

Estruturas de Dados. Módulo 11 Pilhas. 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Estruturas de Dados Módulo 11 Pilhas 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004)

Leia mais

Pilhas. Algoritmos e Estruturas de Dados I. José Augusto Baranauskas Departamento de Física e Matemática FFCLRP-USP

Pilhas. Algoritmos e Estruturas de Dados I. José Augusto Baranauskas Departamento de Física e Matemática FFCLRP-USP Pilhas Algoritmos e Estruturas de Dados I Nesta aula veremos o ADT pilha Uma pilha é usada em muitas situações tais como avaliação de expressões aritméticas, chamada e retorno de procedimentos e funções

Leia mais

Heaps. Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35

Heaps. Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35 Heaps Estrutura de Dados Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35 Conteúdo Introdução Definição de Heap Heap Binária Implementação com vetor Fila de Prioridades

Leia mais

SCC-210 Algoritmos Avançados

SCC-210 Algoritmos Avançados SCC-210 Algoritmos Avançados Capítulo 2 Estruturas de Dados Lineares Parte 1 João Luís G. Rosa Standard Template Library - STL Biblioteca de classes que utiliza templates para implementar diversas estruturas

Leia mais

Listas Lineares. Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.1

Listas Lineares. Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.1 Listas Lineares Elerson R. S. Santos elerson@dcc.ufmg.br Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.1 http://www2.dcc.ufmg.br/livros/algoritmos/ Listas Lineares Uma das formas mais simples

Leia mais

UFCG - CEEI DSC Grupo PET Computação Ciclo de Seminários

UFCG - CEEI DSC Grupo PET Computação Ciclo de Seminários UFCG - CEEI DSC Grupo PET Computação Ciclo de Seminários Flávio Henrique Farias e Gleyser Guimarães flvhfarias@gmail.com gleyser.bonfim.guimaraes@ccc.ufcg.edu.br Ciclo de Seminários, outubro 2012 1 Apresentando

Leia mais

Estrutura de Dados. Diego Silveira Costa Nascimento

Estrutura de Dados. Diego Silveira Costa Nascimento Estrutura de Dados Diego Silveira Costa Nascimento Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte diego.nascimento@ifrn.edu.br 31 de agosto de 2017 Ementa do Curso 1 Introdução

Leia mais

CIC 110 Análise e Projeto de Algoritmos I

CIC 110 Análise e Projeto de Algoritmos I CIC 110 Análise e Projeto de Algoritmos I Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá sort AULA 02 Ordenação A classificação é um problema de design de algoritmo fundamental.

Leia mais

Linguagens de Programação

Linguagens de Programação Linguagens de Programação Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel Parte IV Introdução à Programação em C++ (Continuação) Relembrando da Última Aula... Polimorfismo Mais exemplos

Leia mais

Programação Orientada a Objetos para Redes de Computadores

Programação Orientada a Objetos para Redes de Computadores Programação Orientada a Objetos para Redes de Computadores Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel PARTE 2 Programação em C++ - Template Templates Funções templates Especificam

Leia mais

Estruturas de Dados - Filas

Estruturas de Dados - Filas Estruturas de Dados - Filas Leandro Tonietto ltonietto@unisinos.br Algoritmos e Estruturas de Dados em C++ Unisinos http://www.inf.unisinos.br/~ltonietto/jed/aed/filas.pdf Abr-8 Uma fila (queue) é uma

Leia mais

//conteúdo do arquivo pacote.h

//conteúdo do arquivo pacote.h //conteúdo do arquivo pacote.h #ifndef PACOTE_H #define PACOTE_H #include #include class Pacote friend istream &operator>> (istream &, Pacote &); friend ostream &operator

Leia mais

Algoritmos e Estruturas de Dados II IEC013

Algoritmos e Estruturas de Dados II IEC013 Algoritmos e Estruturas de Dados II IEC013 TAD, Pilhas e Filas Prof. César Melo Todos os créditos ao Prof. Leandro Galvão TAD: Definição SE programa = definição de um tipo de dados + operação sobre dados

Leia mais

Coleção de Dados. Coleções de Dados Classificação 4/1/2011

Coleção de Dados. Coleções de Dados Classificação 4/1/2011 Coleção de Dados Um conjunto de dados(objetos), organizados(estruturados) de alguma forma. As coleções possuem operações padrão como: adicionar; apagar; atualizar As coleções são divididas em dois grandes

Leia mais

Aula 14 Listas Duplamente Encadeadas. prof Leticia Winkler

Aula 14 Listas Duplamente Encadeadas. prof Leticia Winkler Aula 14 Listas Duplamente Encadeadas prof Leticia Winkler 1 Lista Duplamente Encadeada É um tipo de lista encadeada que pode ser vazia (NULL) ou que pode ter um ou mais nós, sendo que cada nó possui dois

Leia mais

A regra de acesso aos dados de uma fila é a seguinte: O primeiro elemento que entra (na fila) é o primeiro que sai (FIFO first in, first out).

A regra de acesso aos dados de uma fila é a seguinte: O primeiro elemento que entra (na fila) é o primeiro que sai (FIFO first in, first out). Fila Algumas aplicações impõem regras de acesso às informações armazenados em estruturas de dados, restringindo como os dados são inseridos e removidos da estrutura. A fila, também conhecida como QUEUE,

Leia mais

Pilha. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof. Gustavo Batista

Pilha. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof. Gustavo Batista Pilha SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências

Leia mais