• Nenhum resultado encontrado

TIPO DE DADOS BOOL E CLASSE STRING

N/A
N/A
Protected

Academic year: 2019

Share "TIPO DE DADOS BOOL E CLASSE STRING"

Copied!
5
0
0

Texto

(1)

TIPO DE DADOS BOOL E CLASSE STRING

Esta aula tratará sobre um tipo de dado que não está presente no C-ANSI, tendo sido adicionado no C++: O tipo bool.

Além disso, a classe string será formalmente apresentada, e algumas funções-membro da classe serão estudadas.

O

TIPO

BOOL

Durante as primeiras aulas observamos que no C-ANSI, todo valor diferente de zero era tratado como VERDADEIRO no programa, enquanto todo o valor igual a zero era tratado como FALSO. Porém, uma variável lógica não era definida.

No C++, entrementes, existe um tipo de dado especialmente definido para variáveis lógicas. Tal tipo é o tipo bool. Este tipo de dado é capaz de armazenar apenas dois valores

possíveis: VERDADEIRO ou FALSO (True ou False). Observe o Programa 1.

#include <iostream>

using namespace std;

int main(void) {

bool aux;

int a = 9, b = 7;

aux = true; //true é verdadeiro em inglês

if(aux) cout << "VERDADEIRO\n"; aux = (a < b);

if(aux) cout << "VERDADEIRO\n"; else cout << "FALSO\n";

system("PAUSE"); return 0;

}

Programa 1 O tipo bool.

As conversões de dados são aplicáveis da mesma maneira que no C-ANSI, i.e., valores diferentes de zero são convertidos para VERDADEIRO e valores iguais a zero são convertidos para FALSO.

Vale lembrar que, diferentemente de algumas linguagens, expressões booleanas ainda podem ser utilizadas em expressões não booleanas. Da mesma maneira que no C-ANSI, também, pode-se ter uma expressão que não retorna um valor bool em uma instrução de controle (como

em um if, e.g.). Estude o Programa 2.

#include <iostream>

using namespace std;

int main(void) {

int a = 9;

if(a = 8) cout << "OPA\n"; system("PAUSE");

return 0; }

(2)

A

CLASSE

STRING

Em C++, strings podem ser escritas e manipuladas da mesma maneira que em C-ANSI, i.e., através da manipulação de um vetor de caracteres. Porém, com o advento da orientação a objetos (e da utilização de classes), pode-se utilizar outro modo de manipular e operar com strings.

O C++ define uma classe string (que já utilizamos em alguns programas). Para utilizá-la basta incluir #include<string> ao programa.

Diferentemente das strings no C-ANSI, na classe string as strings não são terminadas, necessariamente, pelo caractere nulo. O modo como as funções-membro da classe são definidas depende da plataforma, complilador, IDE etc...

LENDO E IMPRIMINDO STRINGS

Observe o Programa 3 onde um objeto da classe string é instanciado e utilizado.

#include <iostream> #include <string>

using namespace std;

int main(void) {

string str1;

str1 = "Este e' um objeto string..."; cout << str1 << endl;

system("PAUSE"); return 0;

}

Programa 3 Utilizando a classe string.

No Programa 3, um objeto str1 da classe string é criado. Após, uma constante string é atribuída diretamente ao objeto str1. Lembre-se que uma atribuição direta deste tipo, utilizando uma string, não era possível em C-ANSI (uma construção semelhante empregando ponteiros poderia ser utilizada). Isto torna mais intuitiva a tarefa de se trabalhar com strings, como será visto mais adiante.

Os operadores >> e << conseguem manipular diretamente strings. Compile o Programa 4.

#include <iostream> #include <string>

using namespace std;

int main(void) {

string str1;

cout << "Digite uma string: "; cin >> str1;

cout << "A string digitada foi: " << str1 << endl; cout << "Digite uma string que contenha espacos: "; cin >> str1;

cout << "A string digitada foi: " << str1 << endl; system("PAUSE");

return 0; }

(3)

Como fora visto nas primeiras aulas sobre C++, o operador extração de fluxo >> delimita as

strings não somente no caractere ‘\n’, mas também no caractere espaço ou tabulação. Para

evitar esse “problema”, basta utilizar a função getline() como no Programa 5.

#include <iostream> #include <string> using namespace std;

int main(void) {

string str1;

cout << "Digite uma string: "; getline(cin,str1);

cout << "A string digitada foi: " << str1 << endl; cout << "Digite uma string que contenha espacos: "; getline(cin,str1);

cout << "A string digitada foi: " << str1 << endl; system("PAUSE");

return 0; }

Programa 5 Lendo um objeto string utilizando getline.

A função getline realiza a leitura do teclado (cin) de str1, porém o único caractere que

delimita a string é agora ‘\n’.

I

NICIALIZANDO

O

BJETOS STRING

Assim como na maioria das classes,um construtor é disponibilizado para inicializar os objetos. No caso de strings, pode-se não inicializar as strings (como no Programa 5). Nesse caso, o construtor padrão é chamado. O construtor padrão inicializa a string como uma string vazia.

Pode-se, entretanto, utilizar mais dois modos de inicialização, como no Programa 6.

#include <iostream> #include <string> using namespace std;

int main(void) {

string str1; //cria uma string vazia

string str2("OLA..."); //cria uma string OLA...

string str3( 10 , 'R' ); //cria uma string com 10 letras R cout << "str1: " << str1 << endl;

cout << "str2: " << str2 << endl; cout << "str3: " << str3 << endl; system("PAUSE");

return 0; }

Programa 6 Inicialização de strings.

O comando string str2("OLA...") cria uma string e inicializa a mesma com a string

"OLA...". O comando string str3( 10 , 'R' ) cria uma string com dez caracteres, sendo

(4)

ATRIBUIÇÃO E CONCATENAÇÃO DE STRINGS

Objetos strings podem ser manipulados intuitivamente, além de possuírem uma infinidade de métodos. A atribuição em strings pode ser realizada como em qualquer variável, ou ainda utilizando métodos dedicados para o fim. Estude o Programa 7.

#include <iostream> #include <string> using namespace std;

int main(void) {

string str1;

string str2("OLA..."); string str3("MUNDO");

str1 = str3; //atribuição direta....

cout << "str1: " << str1 << endl;

str1.assign(str2); //atribuição utilizando método...

cout << "str1: " << str1 << endl; str2.assign("Modificando o conteudo"); cout << "str2: " << str2 << endl; system("PAUSE");

return 0; }

Programa 7 Atribuições em strings.

Observe que foi utilizado um método assign() da classe string para realizar a atribuição.

A concatenação de strings também pode ser realizada de vários modos. Observe atentamente o Programa 8:

#include <iostream> #include <string> using namespace std;

int main(void) {

string str1;

string str2("OLA..."); string str3("MUNDO");

str1 = str2 + str3; //concatenação direta.... cout << "str1: " << str1 << endl;

str1 += " Mais igual a isso"; //concatenação direta 2... cout << "str1: " << str1 << endl;

str1.append(str2); //concatenação utilizando método... cout << "str1: " << str1 << endl;

str3.append(" Adicionando texto..." + str2); cout << "str3: " << str3 << endl;

system("PAUSE"); return 0;

}

Programa 8 Concatenando strings.

No caso, a função append() concatena a string passada como parâmetro na string da qual

(5)

S

UBSTRINGS

É possível obter apenas um pedaço de uma string utilizando a função membro substr().

Estude o Programa 9.

#include <iostream> #include <string> using namespace std;

int main(void) {

string str1("OLA, ESTAMOS AQUI"); string str2;

str2 = str1.substr(5); //obtém a substring do índice 5 até o final.

cout << str2 << endl;

str2 = str1.substr(5, 4); //obtém uma substring com 4 caracteres partindo do índice 5

cout << str2 << endl; system("PAUSE"); return 0;

}

Programa 9 substr().

COMPARANDO STRINGS

É possível verificar se uma string é igual a outra utilizando comparação direta, ou através

do uso da função-membro compare(). Analise e modifique o Programa 10 de modo a entender

como funcionam as relações lógicas

#include <iostream> #include <string> using namespace std;

int main(void) {

string str1("TESTE"); string str2("TESTE");

if(str1 == str2) cout << "IGUAL"; if(str1 > str2) cout << "MAIOR"; if(str1 < str2) cout << "MENOR"; cout << endl;

str1 = "OPA"; str2 = "OPB";

if(str1.compare(str2) < 0) cout << "String1 menor que string2" << endl; if(str1.compare(str2) == 0) cout << "String1 igual a string2" << endl; if(str1.compare(str2) > 0) cout << "String1 maior a string2" << endl; system("PAUSE");

return 0; }

Programa 10 Comparação de strings.

Perceba que a comparação > ou < (bem como >= e <=) avaliam não o tamanho (numero de caracteres) da string. Estas relações atuam de modo semelhante ao se ordenar em ordem alfabética as strings (seguindo a tabela ASCII), i.e., atuam lexicograficamente.

Referências

Documentos relacionados

Table 3 Components of the TβD (Jaccard index) observed and comparison between the mean samples and standard deviation for primary ray-finned fishes in Brazil. JAC:

Uma vez formado o quadro, utilizá-lo ao seu potencial máximo significa atribuir tarefas de acordo com habilidades e competências de cada diretor, investir na

Os instrumentos de pesquisa utilizados serão: Ficha de Rastreamento das Participantes do Estudo, International Consultation on Incontinence Questionnaire – Short Form

Membro_Faculdade (Matrícula: Inteiro, Nome: string[50], Carga: Inteiro, IniContrato: data, Curso: string[30], professor: booleano, aluno: booleano). Membro

[r]

No sentido de reverter tal situação, a realização deste trabalho elaborado na disciplina de Prática enquanto Componente Curricular V (PeCC V), buscou proporcionar as

Os casos não previstos neste regulamento serão resolvidos em primeira instância pela coorde- nação do Prêmio Morena de Criação Publicitária e, em segunda instância, pelo

O objetivo deste estudo foi avaliar o comporta- mento clínico de lesões de dermatite digital bovina após tratamento cirúrgico, uso local e parenteral de oxitetraci- clina e passagem