Introdução aos caracteres e processamento de cadeias.! caracteres são blocos fundamentais de programas em

Documentos relacionados
Fundamentos de Programação

Linguagem de Programação

Linguagens de Programação. Parte IV. Relembrando da Última Aula... Ponteiros. Declaração e Inicialização de Variáveis Ponteiros

Linguagens de Programação

Cadeias de Caracteres (Strings)

Caracteres. Caracteres são representados através de códigos numéricos. Tabela de códigos: Define correspondência entre caracteres e códigos numéricos

Caracteres e. cadeia de caracteres. IPC2 1999/2000 F. Nunes Ferreira

Apêndice B. Cadeias de Caracteres (Strings)

Caracteres e Cadeias de Caracteres

Vetores II. Strings Leitura e exibição Biblioteca string.h Operações com Strings. Matrizes Definição de Acesso Operações com Matrizes

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

Métodos Computacionais. Strings (Vetor de Caracteres)

Curso Básico de Programação Aula 11. Revisão Aula Anterior Laços de Repetição While; Do-While; For.

cadeia de caracteres (string) INF Programação I Prof. Roberto Azevedo

C++ - Matrizes. Observ.: C++ não avisa quando o limite de uma matriz foi excedido. Providenciar a verificação é responsabilidade do programador.

CURSO BÁSICO DE PROGRAMAÇÃO AULA 11. Revisão Aula Anterior Vetores Cadeia de Caracteres

Tratamento de Caracteres

Módulo 7 Cadeias de Caracteres

Linguagem C: Tipos básicos de dados escalares e cadeia de caracteres. Prof. Leonardo Barreto Campos 1

Vetores. Vetores. Vetores. Vetores. Vetores. Algoritmos e Lógica de Programação. Vetores

Aula 9 Oficina de Programação Strings. Profa. Elaine Faria UFU

Strings. Introdução. Definição de strings. Criação/Declaração de strings. Inicialização de strings. Manipulação de strings. Exemplos.

Introdução a Programação. Strings (Vetor de Caracteres)

INF 1005 Programação I

LINGUAGEM C: ARRAYS DE CARACTERES: STRINGS

CURSO BÁSICO DE PROGRAMAÇÃO AULA 15. Revisão Vetores e Matrizes Trabalho

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

Estrutura de Dados. Cadeia de Caracteres. Roberto Araujo Ago/2013

INF 1620 P2-14/10/05 Questão 1 Nome:

Aluno: Valor Nota Q1 3.0 Q2 2.5 Q3 2.5 Q4 2.0 Total 10.0

Programação Dicas e Outras Coisas

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

Estruturas de Dados Aula 6: Cadeias de Caracteres

Computação Eletrônica. Strings. Prof: Luciano Barbosa. CIn.ufpe.br

Char e Strings de Caracteres

Char e Strings de Caracteres

Métodos Computacionais em Física

Ponteiros. podem aumentar/diminuir de tamanho como listas encadeadas, árvores, etc. memória. sua vez armazena um valor

Computação 2. Aula 3. Diego Addan Vetores de caracteres (strings)

Ponteiros. Introdução

Vetores II Strings Leitura e exibição Biblioteca string.h Operações com Strings Matrizes Definição de Acesso Operações com Matrizes

Capítulo. Caracteres e Strings. 9.1 Introdução Armazenamento de Strings em Arrays de Caracteres9.2

INF 1007 Programação II

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

CURSO BÁSICO DE PROGRAMAÇÃO AULA 16. Ordenação Revisão para a prova

INF 1620 P4-01/07/08 Questão 1 Nome:

Vetores e Strings. 4. Funções Básicas para manipulação de Strings. A função gets() lê uma string do teclado. Sua forma geral é:

3. Linguagem de Programação C

MC-102 Aula 11 Strings

INF 1620 P4-13/12/01 Questão 1 Nome:

Introdução à Programação C

Ponteiros. Introdução e Alocação Dinâmica

P2 Programação II Departamento de Informática/PUC-Rio

CCO 016 Fundamentos de Programação

EPs 1 e 2. EP2: veja. EP1: veja

Introdução à linguagem C++

Caracteres, Vetores e Matrizes

Mestrado em Engenharia Física Tecnológica

Estruturas de Dados. Profa. Juliana Pinheiro Campos

Programação Imperativa. Lição n.º 17 Cadeias de carateres

INF 1620 P1-16/09/06 Questão 1 Nome:

INF 1620 P4 11/12/06 Questão 1 Nome:

Disciplina de Algoritmos e Programação

Linguagem de Programação I Vetores e Strings. Thiago Leite Francisco Barretto

INFORMÁTICA APLICADA AULA 05 LINGUAGEM DE PROGRAMAÇÃO C++

Leitura de Arquivos. Prof. Fabrício Olivetti de França

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P1 17/04/2010

Exercícios sobre textos; Alocação dinâmica.

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

INF 1620 P4 30/06/07 Questão 1 Nome:

SSC304 Introdução à Programação Para Engenharias. Manipulação de Strings. GE4 Bio

Aula 28: Arquivos de texto

x=0; y=x+1; x=&y+2; x 1000 y 1004

Linguagem de Programação I. Aula 11 Strings

Fundamentos de Programação

Aula 3 Constantes e funções de E/S

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

CAP. IX - MANIPULAÇÃO DE ARQUIVOS Generalidades sobre Arquivos. 9.2 Abertura e Fechamento de Arquivos. Operações com arquivos:

Índice Valor C A D E I A \0 memória

e uso de ponteiros Prof. Leandro Tonietto Estruturas de Dados em C++ - Unisinos abr-10

Tabela ASCII de caracteres de controle

Programação Aplicada à Engenharia

Modulo 12: alocação dinâmica de memória

ECT1203 Linguagem de Programação

Linguagem C: Introdução

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

Vetores e Matrizes. Conceito. Conceito. Conceito. Conceito. Conceito. Variáveis Compostas Homogêneas. Matriz

Programação e Sistemas de Informação

Programação de Computadores II

Linguagem C Princípios Básicos (parte 1)

Algoritmos e Lógica de Programação 80 horas // 4 h/semana. Para começar... Strings. Para começar... Strings. Exemplo...

TECNOLOGIA EM REDES DE COMPUTADORES. computadores. Aula 5

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

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P3 26/11/2010

Strings. Todas as funções apresentadas neste documento estão no arquivo de cabeçalho string.h.

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

Introdução à Linguagem C

CCO 016 / COM 110 Fundamentos de Programação

Introdução a Programação de Jogos

Transcrição:

Introdução aos caracteres e processamento de cadeias.! caracteres são blocos fundamentais de programas em C++.! Programa: composto de seqüência de caracteres que quando agrupadas tem um significado, ou seja, são interpretados como uma série de instruções usadas para realizar uma tarefa.! caractere constante: valor inteiro representado como um caractere entre. Por exemplo, z representa o inteiro correspondente ao z, \n representa o inteiro correspondente ao newline.! Uma string é uma série de caracteres tratados como uma única unidade. Pode conter: letras, dígitos e caracteres especiais como +,-,*,/,$ e outros.! string literal ou string constante são escritas com aspas duplas.! Programação de Computadores! Turma C, segundo semestre de 2001 Programação de Computadores 171

! Uma string em C++ é um arranjo de caracteres que termina com \0 e é acessado via ponteiro. O valor de uma string é o endereço de seu 1º caractere.! Uma string é um ponteiro ( um ponteiro para o primeiro caractere)! Strings são como arranjos, um arranjo também é um ponteiro para seu 1º elemento char cor[ ]= azul ; // cria um arranjo com 5 posições char *pontcor= azul ; // cria um ponteiro chamado de pontcor que aponta para uma posição de memória que armazena a string azul Programação de Computadores 172

Exemplos: char palavra[20]; cin>>palavra; // lê os caracteres e atribui a palavra até encontrar um espaço, um caractere de tabulação, um newline ou indicador de fim de arquivo. Note que o número de caracteres não deve ser maior que 19 para deixarmos espaço para o \0. cin>>setw(19)>>palavra ;// garante os 19 Programação de Computadores 173

! Entrada de uma linha de texto: função cin.getline que tem 3 argumentos, o arranjo de caracteres onde o texto será armazenado, o tamanho e um caractere delimitador. Exemplo: char sentenca[80]; cin.getline(sentenca, 80, \n ); // lê os caracteres entrados pelo teclado e os coloca no arranjo sentenca. A leitura termina quando encontrar um \n, um fim-de-arquivo ou atingir 79.! Terceiro argumento é padrão, portanto, podemos escrever: cin.getline(sentenca,80); Programação de Computadores 174

! Alguns compiladores(borland) tem problemas quando misturamos cin.get( ) com cin>>. Por exemplo, o código abaixo costuma dar problemas: #include <iostream.h> void main( ) { char str[80]; int idade; cout<<"entre com a idade:"; cin>>idade; cout<<"entre com o nome:"; cin.get(str,80); cout<<"empregado:"<<str<<" idade="<<idade; Entre com a idade:32 Entre com o nome:empregado: idade=32 Programação de Computadores 175

#include <iostream.h> void main( ) { char str[80]; int idade; cout<<"entre com a idade:"; cin>>idade; cin.ignore(10,'\n'); // para consertar o problema cout<<"entre com o nome:"; cin.get(str,80); cout<<"empregado:"<<str<<" idade="<<idade; Entre com a idade:32 Entre com o nome:mario Sérgio da Silva Empregado:Mario Sérgio da Silva idade=32 Programação de Computadores 176

! Biblioteca string.h contem as funções usadas para manipulação de strings. Exemplos:! char * strcpy(char *s1, char *s2) => copia s2 em s1 e retorna s1;! char* strncpy(char *s1,char *s2, size_t n) =>copia no máximo n caracteres de s2 em s1 e retorna s1. (size_t é um tipo integral sem sinal definido em stdef.h)! char* strcat(char *s1, const char *s2) => coloca s2 no final de s1 e retorna s1.! char* strncat(char *s1, char *s2, size_t n) => coloca no máximo n caracteres de s2 no final de s1 e retorna s1! int strcmp(const cahr *s1, const char *s2) => compara s1 com s2 e retorna 0 se s1=s2, <0 se s1<s2 e >0 se s1>s2! int strcmp(const cahr *s1, const char *s2, size_t n) => compara até n caracteres de s1 com s2 e retorna 0 se s1=s2, <0 se s1<s2 e >0 se s1>s2 Programação de Computadores 177

// exemplo de uso de strcpy e strncpy #include <iostream.h> #include <string.h> void main( ) { char X[ ]= Happy birthday to you ; char Y[25],Z[15]; cout<< A cadeia no arranjo X é: <<X<<endl<< A cadeia no arranjo Y é; <<strcpy(y,x)<<endl; strncpy(z,x,14); z[14]= \0 ; cout<< A cadeia no arranjo z é: <<Z<<endl; A cadeia no arranjo X é: Happy birthday to you A cadeia no arranjo Y é: Happy birthday to you A cadeia no arranjo Z é: Happy birthday Programação de Computadores 178

// uso de strcat e strncat #include <iostream.h> #include <string.h> void main( ) { char s1[20]= happy ; char s2[ ]= new year ; char s3[ ]= ; cout<< s1= <<s1<<endl<< s2= <<s2<<endl; cout<< strcat(s1,s2)= <<strcat(s1,s2)<<endl << strncat(s3,s1,6)= <<strncat(s3,s1,6)<<endl; cout<< strcat(s3,s1)= <<strcat(s3,s1)<<endl; s1= happy s2= new year strcat(s1,s2)= happy new year strncat(s3,s1,6)= happy strcat(s3,s1)= happy happy new year Programação de Computadores 179

//usando strcmp e strncmp s1= happy new year #include <iostream.h> s2= happy new year #include <iomanip.h> s3= happy holidays #include <string.h> strcmp(s1,s2)= 0 strcmp(s1,s3)= 6 void main( ) strcmp(s3,s1)= -6 { char *s1= happy new year ; strncmp(s1,s3,6)= 0 char *s2= happy new year ; strncmp(s1,s3,7)= 6 char *s3= happy holidays ; strncmp(s3,s1,7)= -6 cout<< s1= <<s1<<endl<< s2= <<s2<<endl<< s3= <s3<<endl<<endl; cout<< strcmp(s1,s2)= <<setw(2)<<strcmp(s1,s2)<<endl<< strcmp(s1,s3)= << setw(2)<<strcmp(s1,s3)<<endl<< strcmp(s3,s1)= << setw(2) << strcmp(s3,s1)<<endl; cout<< strncmp(s1,s3,6)= <<setw(2)<<strncmp(s1,s3,6)<<endl<< strncmp(s1,s3,7)= <<setw(2)<<strncmp(s1,s3,7)<<endl<< strncmp(s3,s1,7)= <<setw(2) <<strncmp(s3,s1,7)<<endl; Programação de Computadores 180

! char * strtok(char *s1, const char *s2) => uma sequência de chamadas de strtok quebra a string s1 em tokens (sequência de caracteres separados por um delimitador de caracteres, que normalmente é um espaço ou caracteres de pontuação)- partes lógicas como palavras em texto separadas pelo caracteres contidos em s2.! 1ª chamada contem 2 argumentos: a string a ser tokenizada e a string que contem os caracteres que separam os tokens (delimitadores) Programação de Computadores 181

// usando strtoken #include <iostream.h> #include <string.h> void main( ) { char cadeia[ ]="Essa é uma cadeia com sete tokens"; char *pontoken; cout<<"a cadeia original é: "<<cadeia<<endl; cout<<"os tokens da cadeia original são:"<<endl; pontoken=strtok(cadeia," "); while (pontoken!= NULL) { cout<<pontoken<<endl; pontoken=strtok(null," "); Programação de Computadores 182

! pontoken= strtok(cadeia, );! 1ª chamada, primeiro argumento é a cadeia a ser quebrada! segundo argumento (" ") indica que os tokens são separados por espaço! atribui ao ponteiro o endereço do primeiro token da cadeia! percorre a cadeia até achar o separador e troca por '\0' terminado o 1º token! a função strtok salva o ponteiro para o próximo caractere da cadeia e retorna o ponteiro para o próximo token! pontoken = strtok(null, );! as chamadas agora tem NULL como primeiro argumento indicando que strtok deve continuar a partir da posição que foi salva na chamada anterior de strtok! Se não tiver havido nenhuma chamada de strtok, a função retorna NULL Programação de Computadores 183

Programação de Computadores 184! size_t strlen(const char *s) => determina o tamanho da string s,ou seja, o número de caracteres que precede o \0. //usando strlen #include <iostream.h> #include <string.h> void main( ) { char *cadeia1= Campinas ; char *cadeia2= Ana ; cout<< cadeia1= <<cadeia1<<, tamanho= << strlen(cadeia1)<<endl<< cadeia2= << cadeia2<<,tamanho= <<strlen(cadeia2)<< endl; cadeia1=campinas,tamanho=8 cadeia2=ana,tamanho=3