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

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

Laboratório de programação II

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

Exercícios... Capítulo 15. if62c. prof. Robinson Vida Noronha. Monday, March 23, 15

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

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

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

Tipos de Dados Abstractos Estruturas Lineares Listas

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

//conteúdo do arquivo Matriz.h class Matriz { private: int *elementos; int numerodelinhas; int numerodecolunas; void setnumerodelinhas(int); void

Fábio da Fontoura Beltrão Felipe Augusto Chies Lucas Fialho Zawacki Marcos Vinicius Cavinato Matheus de Carvalho Proença

PCS Laboratório de Programação Orientada a Objetos 1a. Prova. 02 de Setembro de 2015

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

Fundamentos de Programação

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

ITENS FUNDAMENTAIS Programando em C++

Física Computacional 3 mem. estática e dinâmica

Recursividade UFOP 1/48

U.C. (21093) Programação por Objetos. XX de Julho de INSTRUÇÕES --

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

Aula 14: Funções Passagem de Parâmetros por Referência

Linguagem de Programação III

Programação Orientada a Objetos para Redes de Computadores. Arrays. Arrays

OO Engenharia Eletrônica

Programação Orientada a Objetos para Redes de Computadores

Carlos Eduardo Batista. Centro de Informática - UFPB

Linguagem de Programação I

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

Linguagem de Programação C++

Princípios de programação em Linguagem C++

Configure TeraLib 3.3 no Visual Studio João Tácio Corrêa da Silva

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

Utilizando cin: primeiros passos

PCS3111. Laboratório de Programação Orientada a Objetos para Engenharia Elétrica. Aula 6: Polimorfismo

Programação Orientada a Objetos CLASSES E OBJETOS

Aplicação dos conceitos de programação orientada a objeto em linguagens de alto nível


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

Estruturas de Dados - STL

Curso de Programação C em Ambientes Linux Aula 05

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

INTRODUÇÃO AO C++ SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO

Esta apresentação ensinará os conceitos de Orientação a Objetos com C++, do mais básico para o mais avançado. É suposto que o aluno já tenha

Sobrecarga de Operadores

Programação Orientada a Objetos para Redes de Computadores

1. Programação estruturada em C++: extensões ao C

Revisão de Programação em C++ Leandro Tonietto Estruturas de Dados em C++ Segurança da Informação

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

Fundamentos de Programação. Linguagem C++ Introdução, identificadores, tipos de dados. Prof. Bruno E. G. Gomes IFRN

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

Construtores. Introdução

Prof. Marco Antonio M. Carvalho

Fundamentos de Programação

Programação Aplicada à Engenharia

OO Engenharia Eletrônica

Técnicas de Programação:

C++ - Ponteiros (continuação) cout << \nquantas notas? ; cin >> tamanho; notas = new int[tamanho]; //aloca memória

Técnicas de Programação:

DE JAVA AO C++ Prof. Cesar Augusto Tacla

Tipos Abstratos de Dados

Linguagens de Programação

Algoritmos de Pesquisa e Ordenação em Vectores

Recuperação P1 de Estrutura de Dados

Programação Estruturada em C++: Extensões ao C. Breve Historial

INTRODUÇÃO AO USO DO DEV C++ Disciplina: Introdução à Ciência da Computação Prof. Modesto Antonio Chaves Universidade estadual do Sudoeste da Bahia

Lista de Linguagens de Programação 14

Funções em C. Lucas Ferrari de Oliveira Professor Adjunto. Linguagem de Programação Estruturada I. Universidade Federal do Paraná

5COP088. Aula 2 Linguagem Estruturada Prof. Dr. Sylvio Barbon Junior. Laboratório de Programação. Aula 2 Linguagem Estruturada

1 Exercícios com ponteiros

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

Listas (cont.) K&R: Capitulo 6. Lista Simplesmente Ligada IAED, 2012/2013. Conjunto de nós. Cada nó contém. head NULL. typedef struct node {

Linguagem C (continuação)

Guia e Utilização do Visual Studio 6.0

Aula 1. // exemplo1.cpp /* Incluímos a biblioteca C++ padrão de entrada e saída */ #include <iostream>

Templates. Introdução. Motivação. Thiago Rosso Adams

Componentes da linguagem C++

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

Parte da Tarefa. Parte da Tarefa. Parte da Tarefa SEND RECEIVE SEND RECEIVE

Exemplo de Cliente e de Servidor CORBA Escritos em C++ Voltando ao Nosso Exemplo

Tipos de Dados, Tipos Abstratos de Dados Estruturas de Dados

#include <stdio.h> void Swap (int *a,int *b) { int temp; temp=*a; *a=*b; *b=temp; } main () {

Outline. 33. Manipulação de arquivos DIM

Programação Aplicada à Engenharia

Ana Paula Tomás. Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto 2010/2011

Centro Universitário Franciscano Curso de Sistemas de Informação Disciplina de algoritmos e programação II. Ponteiros

Introdução à Computação II AULA 08 BCC Noturno - EMA896115B

Prof. Marco Antonio M. Carvalho

Fundamentos de Programação

Introdução à linguagem C++

Linguagens de Programação

Fundamentos de Programação Linguagem C++ Entrada e saída com arquivos

QUEBRA DE SENHAS MD5 UTILIZANDO MDCRACK E MPI

Tipos Abstratos de Dados. Estrutura de Dados

JAVA COLLECTIONS API: LISTAS

Guia e Utilização do Visual Studio.NET 2003

Módulo 4. Listas Encadeadas. Algoritmos e Estruturas de Dados II C++ (Rone Ilídio)

Programação de Computadores II. Cap. 5 Vetores

Manipulação de Arquivos Binários

LISTA DE EXERCÍCIOS 2

Transcrição:

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 STL.

// stdafx.h : include file for standard system include files, // or project specific include files that are used frequently, but // are changed infrequently // #pragma once #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers #include <stdio.h> #include <tchar.h> // TODO: reference additional headers your program requires here // Aqui adicionamos os includes necessários ao projeto // Atualmente várias 'implementações'de C++ usam o formato // de include sem o uso do.h no final. #include <iostream> // Quando se usa include sem.h, algumas vezes se faz necessário // explicitar que parte da biblioteca utilizaremos por meio // de 'usings' using std::cout; using std::endl; #include <list> #include <algorithm>

#include "stdafx.h" using namespace std; // Cabeçalho para a função 'genérica' capaz de imprimir uma lista. template <class T> void imprimelista ( const list<t> &listaref ); // Função main pré-criada na criação de // projeto Win32 console no Express Edition. int _tmain (int argc, _TCHAR* argv[]) // Define duas lista a partir da classe 'list' do STL // A 'list' do STL é um template e aqui este template é // parametrizado com a classe 'int' list < int > valores; // Adiciona elementos a lista a partir de seu começo. valores.push_front ( 1 ); valores.push_front ( 2 ); // Adiciona elementos a lista a partir de seu fim. valores.push_back ( 4 ); valores.push_back ( 3 ); // Imprime os elementos da lista via a função printlist(). cout << "Values contém: "; imprimelista ( valores ); // Implementação da função genérica capaz de imprimir uma lista template <class T> void imprimelista( const list<t> &listaref ) // Testa se a lista está vazia. if ( listaref.empty() ) else cout << Lista está vazia. " << endl; // Cria um iterador, isto é, um objeto que é capaz de receber // um 'ponteiro inicial' e um 'ponteiro final' de uma lista e, // a partir daí, imprimir todos os elementos da lista. // O interador exige um objeto de saída... Neste caso // usamos o cout que, na verdade, é um objeto // denido em <iostream> // Ainda, pode-se adicionar um texto entre // cada elemento impresso. ostream_iterator< T > Saida ( cout, " " ); // Ordena os elementos da lista. valores.sort(); // Imprime os elementos da lista via a função printlist(). cout << "Values após o 'sort' contém: "; imprimelista ( valores ); return 0; // Neste comando, o interador Saida receber o 'ponteiro inicial' // bem como o 'ponteiro final'. copy ( listaref.begin(), listaref.end(), Saida );

// stdafx.h : include file for standard system include files, // or project specific include files that are used frequently, but // are changed infrequently #pragma once #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers #include <stdio.h> #include <tchar.h> // TODO: reference additional headers your program requires here // Aqui adicionamos os includes necessários ao projeto // Atualmente várias 'implementações'de C++ usam o formato // de include sem o uso do.h no final. #include <iostream> // Quando se usa include sem.h, algumas vezes se faz necessário // explicitar que parte da biblioteca utilizaremos por meio // de 'usings' using std::cout; using std::endl; #include <list> #include <algorithm> // stdafx.cpp : source file that includes just the standard includes // Lista2.pch will be the pre-compiled header // stdafx.obj will contain the pre-compiled type information #include "stdafx.h" // TODO: reference any additional headers you need in STDAFX.H // and not in this file

// OBSERVAÇÃO, não deixe de olhar o stdafx.h #include "stdafx.h" // Cabeçalho para a função 'genérica' capaz de imprimir uma lista. template <class T> void imprimelista( const std::list<t> &listref ); // Função main pré-criada na criação de projeto Win32 // console no Express Edition. int _tmain ( int argc, _TCHAR* argv[] ) // Define uma constante; const int SIZE = 4; // Define um vetor, inicializando-o; int a [ SIZE ] = 2, 6, 4, 8 ; // Define duas lista a partir da classe 'list' do STL // A 'list' do STL é um template e aqui este template é // parametrizado com a classe 'int'. std::list<int> valores, outrosvalores; // Adiciona elementos a lista a partir de seu começo. valores.push_front( 1 ); valores.push_front( 2 ); // Adiciona elementos a lista a partir de seu fim. valores.push_back ( 4 ); valores.push_back ( 3 ); // Imprime os elementos da lista via a função printlist(). cout << Valores contém: "; imprimelista ( valores ); cout << endl; // Ordena os elementos da lista. valores.sort(); // Imprime os elementos da lista via a função printlist(). cout << "Values após o 'sort' contém: "; imprimelista ( valores ); cout << endl; // SEGUNDA VERSÃO A PARTIR DAQUI // Insere valores em outrosvalores... outrosvalores.insert ( outrosvalores.begin(), a, a + SIZE); cout << OutrosValores contém: "; imprimelista ( outrosvalores ); cout << endl; valores.splice( valores.end(), outrosvalores); cout << "Após splice valores contém: "; imprimelista ( valores ); cout << endl; cout << "Após splice outrosvalroes contém: "; imprimelista ( outrosvalores ); cout << endl; valores.sort(); cout << Valores após o 'sort' contém: "; imprimelista ( valores ); outrosvalores.insert( outrosvalores.begin(), a, a + SIZE ); outrosvalores.sort(); cout << OutrosValores contém: "; imprimelista ( outrosvalores ); cout << endl; valores.merge( outrosvalores ); cout << "Após merge valores contém: "; imprimelista ( valores ); cout << endl; cout << "Após merge outrosvalores contém: "; imprimelista( outrosvalores ); cout << endl; valores.pop_front(); valores.pop_back(); // todos os conteineres sequenciais. cout << "Após pop_front e pop_baclk valores contém: "; imprimelista( valores ); cout << endl; valores.unique(); cout << "Após unique valores contém: "; imprimelista( valores ); valores.swap( outrosvalores ); cout << "Após swap valores contém: "; imprimelista ( valores ); cout << "Após swap valores contém: "; imprimelista( outrosvalores ); valores.assign( outrosvalores.begin(), outrosvalores.end() ); cout << "Após assign valores contém: "; imprimelista ( valores ); cout << endl; cout << "Após assign outrosvalores contém: "; imprimelista( outrosvalores ); cout << endl; valores.merge( outrosvalores ); cout << "Após merge valores contém: "; imprimelista ( valores ); cout << endl; cout << "Após merge outrosvalores contém: "; imprimelista( outrosvalores ); cout << endl; valores.remove( 4 ); cout << "Após merge valores contém: "; printlist( valores ); cout << endl; return 0;

// Implementação da função genérica capaz de imprimir uma lista template <class T> void imprimelista ( const std::list<t> &listref ) // Testa se a lista está vazia. if ( listref.empty() ) cout << "Lista está vazia." << endl; else // Cria um iterado, isto é, um objeto que é capaz de receber // um 'ponteiro inicial' e um 'ponteiro final' de uma lista e, // a partir daí, imprimir todos os elementos da lista. // O interador exige um objeto de saída... Neste caso // usamos o cout que, na verdade, é um objeto denido em <stream> // Ainda, pode-se adicionar um texto entre cada elemento impresso. std::ostream_iterator< T > Saida ( cout, " " ); // Este comando o interador Saida receber o 'ponteiro inicial' // bem como o 'ponteiro final'. std::copy( listref.begin(), listref.end(), Saida );

Classe Vector Uma classe Predefinida na STL.

// stdafx.h : include file for standard system include files, // or project specific include files that are used frequently, but // are changed infrequently // #pragma once #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers #include <stdio.h> #include <tchar.h> // TODO: reference additional headers your program requires here #include <iostream> using std::cout; using std::cin; using std::endl; #include <vector>

#include "stdafx.h using namespace std; // Detalhes na pág. 930 do Livro dos Deitels template < class T > void imprimevetor ( vector< T > &Vetor); int _tmain(int argc, _TCHAR* argv[]) const int TAMANHO = 6; int a [ TAMANHO ] = 1, 2, 3, 4, 5, 6; cout << "Conteúdo do array a usando notação de ponteiro: << endl; for ( int *ptr = a; ptr!= a + TAMANHO; ++ptr ) cout << *ptr << ' '; // ------------------------------------------------ vector<int> Vetor; cout << "O tamanho inicial de Vetor é: " << Vetor.size() << endl << "A capacidade inicial de Vetor é: " << Vetor.capacity() << endl; Vetor.push_back ( 2 ); Vetor.push_back ( 3 ); Vetor.push_back ( 4 ); cout << "Conteúdo do Vetor usando a notação de iterador: "; imprimevetor ( Vetor ); cout << "Conteúdo do Vetor invertido: "; vector<int>::reverse_iterator Iterador; for ( Iterador = Vetor.rbegin(); Iterador!= Vetor.rend(); ++Iterador ) cout << *Iterador << ' '; return 0; template < class T > void imprimevetor ( vector< T > &Vetor ) vector< T >::const_iterator Iterador2; for ( Iterador2 = Vetor.begin(); Iterador2!= Vetor.end(); Iterador2++ ) cout << *Iterador2 << ' '; cout << "O tamanho de Vetor é: " << Vetor.size() << endl << "A capacidade de Vetor é: " << Vetor.capacity() << endl << endl;

// stdafx.h : include file for standard system include files, // or project specific include files that are used frequently, but // are changed infrequently // #pragma once #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers #include <stdio.h> #include <tchar.h> // TODO: reference additional headers your program requires here #include <iostream> using std::cout; using std::endl; #include <vector> #include <algorithm>

#include "stdafx.h using namespace std; int _tmain ( int argc, _TCHAR* argv[] ) const int TAMANHO = 6; int a [TAMANHO]= 1, 2, 3, 4, 5, 6 ; vector<int> Vetor ( a, a + TAMANHO ); ostream_iterator<int> Saida( cout, " " ); cout << "O Vetor contém : "; copy ( Vetor.begin(), Vetor.end(), Saida); cout << "Primeiro elemento de Vetor: " << Vetor.front() << endl << "Ultimo elemento de Vetor: " << Vetor.back() << endl << endl; // Atribui 7 ao primeiro elemento Vetor [ 0 ] = 7; cout << "Conteúdo do Vetor após primeira mudança: << endl; copy ( Vetor.begin(), Vetor.end(), Saida); cout << "A capacidade do Vetor neste momento eh: " << Vetor.capacity() << endl; cout << "O tamanho do Vetor neste momento eh: " << Vetor.size() << endl << endl << endl; // Atribui 10 ao elemento na posição 2 Vetor.at (2) = 10; cout << "Conteúdo do Vetor após segunda mudança: "; copy ( Vetor.begin(), Vetor.end(), Saida); cout << "A capacidade do Vetor neste momento eh: " << Vetor.capacity() << endl; cout << "O tamanho do Vetor neste momento eh: " << Vetor.size() << endl << endl << endl; // insere 22 como segundo elemento. Vetor.insert( Vetor.begin() + 1, 22); cout << "Conteúdo do Vetor após terceira mudança: << endl; copy( Vetor.begin(), Vetor.end(), Saida); cout << "A capacidade do Vetor neste momento eh: " << Vetor.capacity() << endl; cout << "O tamanho do Vetor neste momento eh: " << Vetor.size() << endl << endl << endl; try // acessa elemento fora do intervalo válido Vetor.at(100) = 777; catch ( std::out_of_range e ) cout << "Exceção: " << e.what() << endl << endl; Vetor.erase ( Vetor.begin() ); cout << "Conteúdo do Vetor após erase: << endl << endl; std::copy( Vetor.begin(), Vetor.end(), Saida); // cout << "Conteúdo do Vetor após Segundo erase: "; // Vetor.erase( Vetor.begin()+2, Vetor.end() ); // std::copy( Vetor.begin(), Vetor.end(), Saida); // cout << endl << endl ; Vetor.erase( Vetor.begin(), Vetor.end() ); cout << "Após erase, o Vetor: " << (Vetor.empty()? " está " : " não está ") << "vazio." << endl << endl; Vetor.insert( Vetor.begin(), a, a + TAMANHO ); cout << "Conteúdo do Vetor após isert (antes de clear):"; std::copy( Vetor.begin(), Vetor.end(), Saida); // clear chama erase para esvaziar uma coleção Vetor.clear(); cout << "Após o 'clear', o Vetor" << ( Vetor.empty()? "está" : "não está ) << "vazio" << endl << endl; return 0;