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

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

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

Aula 27: Estruturas heterogêneas e alocação dinâmica

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

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

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

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

Computação 2. Aula 7. Profª. Fabiany Ponteiros

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

Programação estruturada em C++: extensões ao C. João Pascoal Faria (versão original) Ana Paula Rocha (versão 2004/2005)

Puca Huachi Vaz Penna

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

Estrutura de Dados I Bacharelado em Sistemas de Informação FACOM UFU Lista de Exercícios

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

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

Fundamentos de Programação

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

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

Programação científica C++

Programação científica C++

Programação Estruturada

Estruturas de Dados Aula 6: Cadeias de 28/03/2010

Estruturas de Dados Aula 6: Cadeias de Caracteres

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

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

Por que programar? Programação de Computadores Introdução a C++ É tudo questão de automatizar coisas. Alan de Freitas

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

Seqüências de Caracteres

Componentes da linguagem C++

Aula 26: Estruturas heterogêneas

Linguagem de Programação C++

Aula 28: Arquivos de texto

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

Física Computacional 11 Classes

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

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

Programação Orientada a Objetos CLASSES E OBJETOS

Aula 17: Funções (Parte III) e Introdução a Vetores

Funções. definição, declaração e chamada

PROGRAMAS BÁSICOS EM C++ Disciplina: Introdução à Ciência da Computação Prof. Modesto Antonio Chaves Universidade estadual do Sudoeste da Bahia

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

Aula 24: Ponteiros e Alocação Dinâmica

Ponteiros. Introdução

Exame de Ingresso Física Aplicada - Física Computacional Primeiro Semestre de 2018 GABARITO

Aula 25: Alocação Dinâmica

Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação. Material preparado pela profa Silvana Maria Affonso de Lara

Aula 10 Comandos de Repetição

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

Aula 05: Condicionais (Parte 2)

Computação 2. Aula 8. Profª. Fabiany Arquivos

ITENS FUNDAMENTAIS Programando em C++

Laboratório de programação II

Física Computacional 7 Classes

Operaçõe õ s c om o Strings Intr oduç ão a o Ponte iros o e Funçõe õ s

saldo = novosaldo; } float getsaldo(void) return saldo; }

Prof. A. G. Silva. 25 de abril de Prof. A. G. Silva INE5231 Computação Científica I 25 de abril de / 68

C++ Orientado a Objetos

prim = A ; prim = &A[0];

QUEBRA DE SENHAS MD5 UTILIZANDO MDCRACK E MPI

Aula 2 Listas Lineares Sequenciais. prof Leticia Winkler

Programação de Computadores II. Cap. 7 Cadeias de Caracteres 1/2

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

Programação: Vetores

//conteúdo do arquivo ponto2dcirculo.h #ifndef PONTO2DCIRCULO_H #define PONTO2DCIRCULO_H class Ponto2D { public: Ponto2D (float, float); void setx

Algoritmos e Programação de Computadores Profs: Ronaldo Castro de Oliveira Anilton Joaquim da Silva

Aula 3/4: Vetores/Matrizes e Ponteiros

Aula 4: Introdução à Linguagem C++

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

Programação de Computadores II. Cap. 7 Cadeias de Caracteres

Aula 10 Alocação Dinâmica de Memória Listas Encadeadas. prof Leticia Winkler

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

Caracteres e Strings

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

1 Exercícios com ponteiros

Caracteres e Cadeias de Caracteres

CCO 016 Fundamentos de Programação

RESUMO DE CONCEITOS BÁSICOS DE C

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

UNIVERSIDADE LUSÓFONA DE HUMANIDADES E TECNOLOGIAS CURSO DE ENGENHARIA ELECTROTÉCNICA/INDUSTRIAL

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA

Módulo 7 Cadeias de Caracteres

INTRODUÇÃO À LINGUAGEM C. Prof. Msc. Luis Filipe Alves Pereira 2015

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

Listas Ligadas (Encadeadas) Listas Simplesmente Encadeadas

Ponteiros. um ponteiro é uma variável que contém o endereço um dado declaração: * indica que a variável é um ponteiro. Ex: tipo_dado *nome_ponteiro;

Ponteiros e Tabelas. K&R: Capítulo 5

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

Prof. Rogério Albuquerque de Almeida. Programação Orientada a Objetos II Java Sexta aula

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA ESTRUTURA COM DECISÃO MÚLTIPLA. Prof. Dr. Daniel Caetano

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

Programação de Computadores II

Aula 08: Repetição (Parte 3)

Laboratório de programação II

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA

Tabela ASCII de caracteres de controle

1/50. Conceitos Básicos. Programa Básico

TAD: Tipo Abstrato de Dados (parte 2)

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE

ESTRUTURA COM DECISÃO COMPOSTA

Transcrição:

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 #include "stdafx.h" #include <iostream> using std::cout; using std::endl; #include <string> using std::string; int _tmain ( int argc, _TCHAR* argv[] ) string s1 ( "Bom dia ), s2, s3; s2 = s1; // Atribui s1 a s2 com = s3.assign( s1 ); cout << "S1: " << s1 << endl; cout << "S2: " << s2 << endl; cout << "S3: " << s3 << endl; cout << endl; // modifica S2 e S3. s2[ 0 ] = s3[ 2 ] = 'r'; cout << "S1: " << s1 << endl; cout << "S2: " << s2 << endl; cout << "S3: " << s3 << endl; cout << endl; // demonstrando o método at() int tam = s3.length(); for (int x = 0; x < tam; ++x) cout << s3.at( x ); cout << endl; // concatenação string s4 ( s1 + " gente"); // cria bor gente // += sobregarregado s3 += " cidadaos"; s1.append(" pessoal."); // cria bom pessoal cout << "S1: " << s1 << endl; cout << "S2: " << s2 << endl; cout << "S3: " << s3 << endl; cout << "S4: " << s4 << endl; cout << endl; // acrescenta! as posições até o final de S1 string s5; s5.append( s1, 4, s1.size() ); cout << "S1: " << s1 << endl; cout << "S2: " << s2 << endl; cout << "S3: " << s3 << endl; cout << "S4: " << s4 << endl; cout << "S5: " << s5 << endl; cout << endl; return 0;

#include "stdafx.h" #include <iostream> using std::cout; using std::endl; #include <string> using std::string; int _tmain(int argc, _TCHAR* argv[]) string s1 ("Testando as funçoes de comparacao"), s2 ("Bom dia"), s3 ("Ops"), z1 ( s2 ); cout << "s1: " << s1 << endl; cout << "s2: " << s2 << endl; cout << "s3: " << s3 << endl; cout << "z1: " << z1 << endl; cout << endl; // comparação de s1 e z1 if ( s1 == z1 ) cout << "s1 == z1" << endl; else if ( s1 > z1 ) cout << "s1 > z1" << endl; else cout << "s1 < z1" << endl; // comparacao de S1 com S2 int f = s1.compare( s2 ); if ( f == 0 ) cout << "s1.compare( s2 ) == 0" << endl; else if ( s1 > z1 ) cout << "s1.compare( s2 ) > 0" << endl; else cout << "s1.compare( s2 ) < 0" << endl; // comparacao de S1 (elementos 2-3) e s3 (elementos 0-5) f = s1.compare( 2, 3, s3, 0, 5 ); if ( f == 0) cout << "s1.compare( 2, 3, s3, 0, 5 ) == 0" << endl; else if ( s1 > z1 ) cout << "s1.compare( 2, 3, s3, 0, 5 ) > 0" << endl; else cout << "s1.compare( 2, 3, s3, 0, 5 ) < 0" << endl; // comparacao de s2 e z1 f = z1.compare( 0, s2.size(), s2); if ( f == 0 ) cout << "z1.compare( 0, s2.size, s2) == 0" << endl; else if ( s1 > z1 ) cout << "z1.compare( 0, s2.size, s2) > 0" << endl; else cout << "z1.compare( 0, s2.size, s2) < 0" << endl; return 0; Comparação de String

Substrings #include "stdafx.h" #include <iostream> using std::cout; using std::endl; #include <string> using std::string; int _tmain(int argc, _TCHAR* argv[]) string s ( "O aeroplano desapareceu no horizonte. ); cout << s.substr( 6, 5 ) << endl << endl; return 0;

Intercambiando strings #include "stdafx.h" #include <iostream> using std::cout; using std::endl; #include <string> using std::string; int _tmain(int argc, _TCHAR* argv[]) string primeiro ("um"), segundo ("dois"); cout << "Antes do swap: " << endl; cout << primeiro << endl; cout << segundo << endl; cout << endl; primeiro.swap( segundo ); cout << "Depois do swap: " << endl; cout << primeiro << endl; cout << segundo << endl; cout << endl; return 0;

Características de strings #include "stdafx.h" #include <iostream> using std::cout; using std::cin; using std::endl; #include <string> using std::string; void imprimesituacao( const string &str ); void imprimesituacao( const string &str ) cout << " Capacidade: " << str.capacity() << endl << " Tamanho máximo: " << str.max_size() << endl << " Tamanho atual: " << str.size() << endl << " Comprimento atual:" << str.length() << endl << " Vazio: " << ( str.empty()? "verdade" : "falso" ) int _tmain(int argc, _TCHAR* argv[]) string s; cout << "Características antes de leitura." << endl; imprimesituacao( s ); cout << "Digite uma string: " << endl; cin >> s; cout << endl; cout << "A string digitada foi : " << s << endl; cout << endl; cout << "Características depois da leitura: " << endl; imprimesituacao( s ); s.resize( s.length() + 10); cout << "Características depois de redimensionar: " << endl; imprimesituacao ( s ); << endl << endl; return 0;

#include "stdafx.h" #include <iostream> using std::cout; using std::cin; using std::endl; #include <string> using std::string; Encontrar caracteres em strings. int _tmain ( int argc, _TCHAR* argv[] ) // o compilador concatena todas as partes em um só string. string s ( " Oh! Que saudades que tenho " " \n Da aurora da minha vida," " \n Da minha infância querida" " \n Que os anos não trazem mais!" " \n Que amor, que sonhos, que flores," " \n Naquelas tardes fagueiras," " \n À sombra das bananeiras, " " \n Debaixo dos laranjais! " " \n... de Casimiro de Abreu. " ); // encontra a primeira e última posições de "Que" cout << " String original: " << endl << " A substring 'Que' foi encontrada (via find) na posição: " << s.find ( "Que" ) << endl << " A substring 'Que' foi encontrada (via find) na posição: " << s.rfind ( "Que" ) << endl << " A substring 'Que' foi encontrada (via find) na posição: " << s.find ( "Que" ) << endl << endl; // encontra o primeiro e último caracter existente na string "Que" cout << " String original: " << endl << " Caracter de 'Que' encontrado por primeiro (via find_first of) na posição: " << s.find_first_of ( "Que" ) << endl << " Caracter de 'Que' encontrado por último (via find_last_of) na posição: " << s.find_last_of ( "Que" ) << endl << endl; // encontra o primeiro e último caracter NÃO existente na string "Que" cout << " String original: " << endl << " Caracter NAO em 'Que' encontrado por primeiro (via find_first of) na posição: " << s.find_first_not_of ( "Que" ) << endl << " Caracter NAO em 'Que' encontrado por último (via find_last_of) na posição: " << s.find_last_not_of ( "Que" ) << endl << endl; return 0;

#include "stdafx.h" #include <iostream> using std::cout; using std::cin; using std::endl; #include <string> using std::string; Substituir caracteres em strings. int _tmain (int argc, _TCHAR* argv[]) // o compilador concatena todas as partes em um só string. string s ( " Oh! Que saudades que tenho" " \n Da aurora da minha vida," " \n Da minha infância querida" " \n Que os anos não trazem mais!" " \n Que amor, que sonhos, que flores," " \n Naquelas tardes fagueiras," " \n À sombra das bananeiras, " " \n Debaixo dos laranjais! " " \n... de Casimiro de Abreu. " ); // Remove todos os caracteres da posição 62 até o fim de s s.erase( 62 ); // encontra a primeira e última posições de "Que" cout << "String depois do Erase: " << s << endl << endl; // substitui todos os espaços por um ponto. int x = s.find(" "); while ( x < string::npos ) s.replace( x, 1, "." ); x = s.find( " ", x + 1 ); cout << "String depois da primeira subtituição: " << s << endl << endl; x = s.find("."); while ( x < string::npos ) s.replace( x, 2, "xxxxx;;yyy", 5, 2 ); x = s.find( ".", x + 1 ); cout << "String depois da segunda subtituição: " << s << endl << endl; return 0;

Inserir caracteres em strings. #include "stdafx.h" #include <iostream> using std::cout; using std::cin; using std::endl; #include <string> using std::string; int _tmain (int argc, _TCHAR* argv[]) string s1 ( "início fim" ), s2 ( "meio" ), s3 ( "12345678" ), s4 ( "xx" ); cout << "Strings iniciais: " << endl << "s1: " << s1 << endl << "s2: " << s2 << endl << "s3: " << s3 << endl << "s4: " << s4 << endl << endl; // Insere "meio" na posiçao 7 de s1 s1.insert( 7, s2 ); // Inser "xx"na posição 3 de s3 s3.insert( 3, s4, 0, string::npos); cout << "Strings depois das inserções: " << endl << "s1: " << s1 << endl << "s2: " << s2 << endl << "s3: " << s3 << endl << "s4: " << s4 << endl << endl; return 0;

#include "stdafx.h" #include <iostream> using std::cout; using std::endl; #include <string> using std::string; int _tmain ( int argc, _TCHAR* argv[] ) string s ( "STRINGS" ); const char *ptr1 = 0; int tam = s.length(); char *ptr2 = new char[ tam + 1 ]; // incluindo o nulo Conversão de objetos string para variáveis char*. // Copia caracteres do string para a memória alocada. s.copy( ptr2, tam, 0); ptr2[ tam ] = 0; // acrescenta terminador nulo // Saída cout << "O string s é: " << s << endl; cout << "O string s convertido para um ponteiro é: " << s.c_str() << endl << endl; cout << "O ptr2 'tem' o valor : " << ptr2 << endl << endl; // Atribui o const char* retornado pela funçã data() ao ponterio ptr1 // Nota: esta é uma atribuição perigosa, uma vez que se a string s for // modificada, o ponteiro ptr1 pode se tornar inválido. ptr1 = s.data(); cout << "O ptr1 'tem' o valor : "; for ( int k = 0; k < tam; ++k ) cout << *( ptr1 + k ); cout << endl << endl; delete [] ptr2; return 0;

#include <iostream> using std::cout; using std::endl; Iterador #include <string> using std::string; int _tmain (int argc, _TCHAR* argv[]) string s ( "Apresentando iteradores." ); string::const_iterator iterador1; iterador1 = s.begin(); cout << "O conteúdo de s usando o iterador1: " << endl << endl; while ( iterador1!= s.end() ) cout << *iterador1; ++iterador1; cout << endl; return 0;

#include "stdafx.h" #include <iostream> using std::cout; using std::endl; #include <string> using std::string; #include <sstream> using std::ostringstream; Processamento de strings em streams int _tmain ( int argc, _TCHAR* argv[] ) ostringstream StringSaida; string s1 ( "Saída de diversos tipos de dados " ), s2 ( "usando um objeto ostringstream: " ), s3 ( "\n double: "), s4 ( "\n int: "), s5 ( "\n endereço de int: "); double d = 123.4567; int i = 22; StringSaida << s1 << s2 << s3 << d << s4 << i << s5 << &i; cout << "StringSaida contém: " << endl << StringSaida.str() << endl; cout << endl << endl; StringSaida << " Mais caracteres adicionados no stream."; cout << " Após as inserções adicionais no stream, " << endl << StringSaida contém: " << endl << StringSaida.str() << endl; cout << endl << endl; return 0;

Exercícios No projeto que desenvolvemos antes em sala (o das universidades), utilize a classe predefinida string em vez de vetores de chars (caracteres).