Cadeias de Caracteres (Strings)

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

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

Módulo 7 Cadeias de Caracteres

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 Cadeias de Caracteres

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

INF 1005 Programação I

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

Métodos Computacionais. Strings (Vetor de Caracteres)

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

Estruturas de Dados Aula 6: Cadeias de Caracteres

3 Cadeias de Caracteres

Referências. Programação de Computadores II. Cap. 7 Cadeias de Caracteres. Caracteres. Tópicos

INF 1007 Programação II

Tratamento de Caracteres

6. Cadeia de caracteres

Apêndice B. Cadeias de Caracteres (Strings)

Estruturas de Dados. Profa. Juliana Pinheiro Campos

Programação II. Strings (Cadeias de Caracteres) Bruno Feijó Dept. de Informática, PUC-Rio

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

Programação II. Strings (Cadeias de Caracteres) Bruno Feijó Dept. de Informática, PUC-Rio

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

Linguagem C Parte 4 - Extra

Char e Strings de Caracteres

Char e Strings de Caracteres

Introdução à Programação C

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

CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS DISCIPLINA : INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO ASSUNTO: C

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

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

Tabela ASCII de caracteres de controle

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

CURSO BÁSICO DE PROGRAMAÇÃO AULA 11. Revisão Aula Anterior Vetores Cadeia 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

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

Seqüências de Caracteres

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

Disciplina de Algoritmos e Programação

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

3. Linguagem de Programação C

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

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 é:

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

Linguagem de Programação

Introdução à Programação. Strings

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

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Aula 05 -Introdução àlinguagc Programação: Estr. Dados Strings

LINGUAGEM DE PROGRAMAÇÃO C AULA 2. Professor: Rodrigo Rocha

Introdução a Programação de Jogos

3.1 - Funções para manipular dados de entrada e saída padrão

O vetor é provavelmente um dos mais simples e importantes tipos agregados. Através do seu uso, podemos

#include <stdio.h> Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C

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

Métodos Computacionais em Física

MC-102 Aula 11 Strings

Introdução à Linguagem C. Strings. Laboratório de Programação Prof.Alfredo Parteli Gomes

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

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

Introdução à Programação

Introdução a Computação

INF 1007 Programação II

Vetores e Strings. printf ("\na string %s nao esta contida no vetor de %s", string, "strings.\n");

CCO 016 Fundamentos de Programação

Cap. 3 Entrada e Saída e Controle de Fluxo

Módulo 5 Vetores e Alocação Dinâmica

Estruturas de Dados. Módulo 2 Expressões. 9/8/2005 (c) Marco A. Casanova - PUC-Rio 1

Algoritmos e Programação

INF1007: Programação 2. 0 Revisão. 06/08/2015 (c) Dept. de Informática - PUC-Rio 1

Capítulo 1: Introdução à Linguagem C. Pontifícia Universidade Católica Departamento de Informática

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

Programação de Computadores I Funções Básicas da Linguagem C PROFESSORA CINTIA CAETANO

Mac em C. Resuminho e Exercícios P3

INF 1620 P1-04/10/03 Questão 1 Nome:

INF 1620 P1-17/09/05 Questão 1 Nome:

Aula 8 - Matrizes e Strings

UNIVERSIDADE FEDERAL DO PAMPA CAMPUS BAGÉ ALGORITMOS E PROGRAMAÇÃO. Manipulação de strings. Prof. Alex Camargo

Estruturas de Dados. Módulo 4 Funções. 9/8/2005 (c) Dept. Informática - PUC-Rio 1

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica

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

Strings. Adaptado de Deise Saccol

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

Comandos de entrada. e saída. Comandos de entrada. Comandos de entrada. Comandos de entrada. Comandos de entrada. Comandos de entrada.

PROGRAMAÇÃO I E N T R A DA E S A Í DA D E DA D O S

Estruturas de Dados. Módulo 15 - Arquivos. 2/6/2005 (c) Dept. Informática - PUC-Rio 1

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Programação de Computadores II

Linguagem de Programação I. Aula 11 Strings

Introdução à Programação

J. L. Rangel 1. Escreva um programa em C que lê três números inteiros do teclado, e imprime os três números em ordem crescente.

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

INF 1007 Programação II

INF 1620 P1-18/09/04 Questão 1 Nome:

INF1007: Programação 2. 4 Tipos Estruturados. 10/23/09 (c) Dept. Informática - PUC-Rio 1

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

Estruturas de Dados. Exercícios Capítulos 5 e 7. 6/4/2006 (c) Dept. Informática - PUC-Rio 1

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

Working 07 : Vetores 2

LINGUAGEM C: ARRAYS DE CARACTERES: STRINGS

Transcrição:

INF1005: Programação 1 Cadeias de Caracteres (Strings) 02/05/10 (c) Paula Rodrigues 1

Tópicos Caracteres Cadeias de caracteres Leitura de caracteres e cadeias de caracteres Funções que manipulam cadeias de caracteres Funções da biblioteca string.h 08/03/10 (c) Dept. Informática - PUC-Rio 2

Caracteres tipo char: tamanho de char = 1 byte = 8 bits = 256 valores distintos tabela de códigos: define correspondência entre caracteres e códigos numéricos exemplo: ASCII alguns alfabetos precisam de maior representatividade alfabeto chinês tem mais de 256 caracteres 08/03/10 (c) Dept. Informática - PUC-Rio 3

Códigos ASCII de alguns caracteres (sp representa espaço) 0 1 2 3 4 5 6 7 8 9 30 sp! " # $ % & ' 40 ( ) * +, -. / 0 1 50 2 3 4 5 6 7 8 9 : ; 60 < = >? @ A B C D E 70 F G H I J K L M N O 80 P Q R S T U V W X Y 90 Z [ \ ] ^ _ ` a b c 100 d e f g h i j k l m 110 n o p q r S t u v w Exemplo: 120 x y z { } ~ 82 105 110 32 100 101 32 74 97 110 101 105 114 111 R i o d e J a n e i r o 08/03/10 (c) Dept. Informática - PUC-Rio 4

Códigos ASCII de alguns caracteres de controle 0 7 8 9 10 13 127 nul bel bs ht nl cr del null: nulo bell: campainha backspace: volta e apaga um caractere tab: tabulação horizontal newline ou line feed: muda de linha carriage return: volta ao início da linha delete: apaga um caractere 08/03/10 (c) Dept. Informática - PUC-Rio 5

Tabela ASCII 08/03/10 (c) Dept. Informática - PUC-Rio 6

Caracteres Constante de caractere: caractere envolvido com aspas simples exemplo: 'a' representa uma constante de caractere 'a' resulta no valor numérico associado ao caractere a char c = 'a'; printf("%d %c\n", c, c); printf imprime o conteúdo da variável c usando dois formatos: com o formato para inteiro, %d, imprime 97 com o formato de caractere, %c, imprime a (código 97 em ASCII) 08/03/10 (c) Dept. Informática - PUC-Rio 7

Função para converter minúsculas em maiúsculas char maiuscula(char c) { /* Verifica de é letra minúscula */ if (c >= a && c <= z ) c = (c a ) + A ; return c; } Essa função tira proveito de forma sequencial em que os caracteres são caracteres representados na tabela ASCII 08/03/10 (c) Dept. Informática - PUC-Rio 8

Cadeias de caracteres Representação de cadeia de caracteres: vetor do tipo char, terminado pelo caractere nulo ('\0') é reservada uma posição adicional no vetor para o caractere de fim da cadeia função para manipular cadeias de caracteres: recebe como parâmetro um vetor de char processa caractere por caractere até encontrar o caractere nulo, sinalizando o final da cadeia 08/03/10 (c) Dept. Informática - PUC-Rio 9

Declaração e Inicialização de Cadeias Inicialização de cadeias de caracteres: caracteres entre aspas duplas caractere nulo é representado implicitamente Exemplo: variável cidade dimensionada e inicializada com 4 elementos int main ( void ) { char cidade[ ] = "Rio"; printf("%s \n", cidade); return 0; } int main ( void ) { char cidade[ ]={'R', 'i', 'o', '\0'}; printf("%s \n", cidade); return 0; } Rio 08/03/10 (c) Dept. Informática - PUC-Rio 10 Press any key to continue

Declaração e Inicialização de Cadeias Exemplos: char s1[] = ""; char s2[] = "Rio de Janeiro"; char s3[81]; char s4[81] = "Rio"; s1 é uma cadeia de caracteres vazia (vetor com 1 elemento que armazena apenas o caractere '\0'); s2 é uma cadeia de 14 caracteres armazenada em vetor com 15 elementos, inicializada com o conteúdo declarado e terminada com '\0'; s3 pode armazenar uma cadeia com até 80 caracteres em um vetor com 81 elementos (já que uma cadeia de caracteres sempre tem que ser terminada com o caractere \0, que ocupa uma posição a mais no vetor). s3 não foi inicializada; s4 pode armazenar uma cadeia com até 80 caracteres em um vetor com 81 elementos, mas apenas os quatro primeiros elementos são inicializados com 'R', 'i', 'o' e '\0', respectivamente. 08/03/10 (c) Dept. Informática - PUC-Rio 11

Leitura de Cadeias Leitura de caracteres e cadeias de caracteres através de scanf especificadores de formato definem o comportamento do scanf 08/03/10 (c) Dept. Informática - PUC-Rio 12

Leitura de Cadeias scanf com o especificador de formato %c lê o valor de um único caractere fornecido via teclado exemplo: char a;... scanf("%c", &a);... 08/03/10 (c) Dept. Informática - PUC-Rio 13

Leitura de Cadeias scanf com o especificador de formato %c (cont.): não pula os caracteres brancos caractere branco = espaço (' '), tabulação ('\t') ou nova linha ('\n') se o usuário teclar um espaço antes da letra: o código do espaço será capturado a letra será capturada apenas na próxima chamada de scanf para pular todos os caracteres brancos antes do caractere: basta incluir um espaço em branco no formato, antes do especificador char a;... scanf(" %c", &a); /* o branco no formato pula brancos da entrada */... 08/03/10 (c) Dept. Informática - PUC-Rio 14

Leitura de Cadeias scanf com o especificador de formato %s lê uma cadeia de caracteres não brancos pula os eventuais caracteres brancos antes da cadeia exemplo: char cidade[81];... scanf("%s", cidade);... &cidade não é usada pois a cadeia é um vetor o código acima funciona apenas para capturar nomes simples se o usuário digitar Rio de Janeiro, apenas Rio será capturada, pois %s lê somente uma seqüência de caracteres não brancos 08/03/10 (c) Dept. Informática - PUC-Rio 15

Leitura de Cadeias scanf com o especificador de formato %[...] %[...] lista entre os colchetes todos os caracteres aceitos na leitura %[^...] lista entre os colchetes todos os caracteres não aceitos na leitura exemplos: %[aeiou] lê seqüências de vogais leitura prossegue até encontrar um caractere que não seja uma vogal %[^aeiou] lê seqüências de caracteres que não são vogais leitura prossegue até encontrar um caractere que seja uma vogal 08/03/10 (c) Dept. Informática - PUC-Rio 16

Cadeias de caracteres Exemplo: lê uma seqüência de caracteres até que seja encontrado o caractere de mudança de linha ('\n') captura linha fornecida pelo usuário até que ele tecle Enter inclusão do espaço no formato garante que eventuais caracteres brancos que precedam a cadeia de caracteres sejam descartados char cidade[81];... scanf(" %80[^\n]", %[^\n]", cidade);... 08/03/10 (c) Dept. Informática - PUC-Rio 17

Funções para Manipular Cadeias Exemplos de funções para manipular cadeias de caracteres: imprime comprimento copia concatena 08/03/10 (c) Dept. Informática - PUC-Rio 18

Funções para Manipular Cadeias Função imprime : Imprime uma cadeia de caracteres, caractere por caractere, com uma quebra de linha ao final. void imprime (char s[]) { int i; for (i=0; s[i]!= '\0'; i++) printf( %c, s[i]; printf( \n ); } É equivalente a: void imprime (char s[]) { printf( %s\n, s); } 08/03/10 (c) Dept. Informática - PUC-Rio 19

Funções para Manipular Cadeias Função comprimento : retorna o comprimento de uma cadeia de entrada s conta o número de caracteres até encontrar o caractere nulo o caractere nulo em si não é contado int comprimento (char s[]) { int i; int n = 0; /* contador */ for (i=0; s[i]!= '\0'; i++) n++; return n; } 08/03/10 (c) Dept. Informática - PUC-Rio 20

Funções para Manipular Cadeias #include <stdio.h> int comprimento (char s[]) { int i; int n = 0; /* contador */ for (i=0; s[i]!= '\0'; i++) n++; return n; } int main (void) { int tam; char cidade[] = "Rio de Janeiro"; tam = comprimento(cidade); printf("a string \"%s\" tem %d caracteres\n", cidade, tam); return 0; } 08/03/10 (c) Dept. Informática - PUC-Rio 21

Funções para Manipular Cadeias Função copia : copia os elementos de uma cadeia de origem (orig) para uma cadeia de destino (dest) cadeia de destino deverá ter espaço suficiente void copia (char dest[], char orig[]) { int i; for (i=0; orig[i]!= '\0'; i++) dest[i] = orig[i]; /* fecha a cadeia copiada */ dest[i] = '\0'; } 08/03/10 (c) Dept. Informática - PUC-Rio 22

Funções para Manipular Cadeias Função concatena : copia os elementos de uma cadeia de origem (orig) para o final da cadeia de destino (dest) void concatena (char dest[], char orig[]) { int i = 0; /* índice usado na cadeia destino, inicializado com zero */ int j; /* índice usado na cadeia origem */ /* acha o final da cadeia destino */ while (dest[i]!= '\0') i++; /* copia elementos da origem para o final do destino */ for (j=0; orig[j]!= '\0'; j++) { dest[i] = orig[j]; i++; } /* fecha cadeia destino */ dest[i] = '\0'; } 08/03/10 (c) Dept. Informática - PUC-Rio 23

Funções da biblioteca string.h strlen determina o comprimento de uma cadeia strcpy copia uma cadeia origem para outra destino strcmp compara duas cadeias strcat concatena duas cadeias 08/03/10 (c) Dept. Informática - PUC-Rio 24

Funções da biblioteca string.h A função strlen retorna o número de caracteres em uma cadeia de caracteres. O caractere '\0' não é contado. O cabeçalho da função é: int strlen(char str[ ]); 08/03/10 (c) Dept. Informática - PUC-Rio 25

Funções da biblioteca string.h #include<stdio.h> #include<string.h> void main(void) { char nome[]="joao da Silva"; printf("%s contem %d caracteres",nome,strlen(nome)); } Ao ser executado, este programa exibirá o texto: Joao da Silva contem 13 caracteres 08/03/10 (c) Dept. Informática - PUC-Rio 26

Funções da biblioteca string.h A função strcpy é usada para copiar o conteúdo de uma cadeia de caracteres (fonte) para outra cadeia (destino). O cabeçalho da função é: int strcpy(char destino[ ], fonte[ ]); 08/03/10 (c) Dept. Informática - PUC-Rio 27

Funções da biblioteca string.h #include<stdio.h> #include<string.h> void main(void) { char nome[]="joao da Silva",aluno[50]; strcpy(aluno,nome); printf("o nome do aluno e %s",aluno); } Ao ser executado, este programa exibirá o texto: O nome do aluno e Joao da Silva 08/03/10 (c) Dept. Informática - PUC-Rio 28

Funções da biblioteca string.h A função strcmp é usada para fazer a comparação lexicográfica de duas cadeias. Se as cadeias são iguais, isto é, se str1 e str2 têm mesmo comprimento e caracteres iguais nos elementos de mesmo índice, a função retorna 0 Se str1 for lexicograficamente maior do que str2, a função retorna 1 Se str2 for lexicograficamente maior do que str1, a função retorna -1 O cabeçalho da função é: int strcmp(char str1[ ], char str2[ ]); 08/03/10 (c) Dept. Informática - PUC-Rio 29

Funções da biblioteca string.h #include<stdio.h> #include<string.h> void main(void) { char nome1[]="joao da Silva", nome2[]="maria Fernanda"; if(!strcmp(nome1, nome2)) printf("%s e igual a %s", nome1, nome2); else if(strcmp(nome1, nome2)>0) printf("%s vem depois de %s",nome1,nome2); else printf("%s vem depois de %s",nome2,nome1); } Ao ser executado, este programa exibirá o texto: Maria Fernanda vem depois de Joao da Silva 08/03/10 (c) Dept. Informática - PUC-Rio 30

Funções da biblioteca string.h A função strcat anexa o conteúdo de uma cadeia de caracteres (fonte) ao final de outra cadeia (destino). O tamanho da cadeia de destino deve ser suficiente para armazenar o total de caracteres das duas cadeias. O cabeçalho da função é: int strcat(char destino[ ], char origem[ ]); 08/03/10 (c) Dept. Informática - PUC-Rio 31

Funções da biblioteca string.h #include<stdio.h> #include<string.h> void main(void) { char nome[30]="joao", sobrenome[]=" da Silva"; strcat(nome, sobrenome); } printf("o nome do aluno e %s", nome); Ao ser executado, este programa exibirá o texto: O nome do aluno e Joao da Silva 08/03/10 (c) Dept. Informática - PUC-Rio 32

Vetor de cadeia de caracteres Exemplo: função para imprimir os nomes dos alunos de turmas com 50 alunos, onde o nome dos alunos possui no máximo 80 caracteres char alunos[50][81];... void imprime (int n, char alunos[][81]) { int i; for (i=0; i<n; i++) printf("%s\n", alunos[i]); } (alunos[ i ][ j ] acessa a (j+1)-ésima letra do nome do (i+1)-ésimo aluno) 3/18/11 (c) Dept. Informática - PUC-Rio 33

Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004) Anexo B Cadeias de caracteres 08/03/10 (c) Dept. Informática - PUC-Rio 34