CADEIA DE CARACTERES (Strings)

Slides:



Advertisements
Apresentações semelhantes
V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos.
Advertisements

Linguagem C Marco Reis.
Programação II Estruturas de Dados Aula 01
Programação para Engenharia I
Algoritmos e Estrutura de Dados I
ICC – Matrizes Jorge Macêdo.
Introdução à Linguagem C
UDESC - Prof. Juliano Maia
Disciplina: AAM Profa. Ana Watanabe 03/13 vol.2
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Linguagem C Strings.
Vetores, Matrizes e Funções
Estruturas de Dados Homogêneas Unidimensionais – Vetores e Strings
Linguagem C Strings.
Revisão da Linguagem C.
Strings Definição: Não confundir caracteres com strings
O Portal do Estudante de Computação
APRESENTAÇÃO: GIANCARLO DE GUSMÃO GONÇALVES CURSO DE C AULA 08: Tipos Estruturados.
INTRODUÇÃ A COMPUTAÇÃO ENG. CIVIL
O Portal do Estudante de Computação
Rodrigo Cristiano Silva
Aula prática 9 Alocação Dinâmica Monitoria de Introdução à Programação
Aula prática 7 Strings Monitoria de Introdução à Programação
Aula prática 6 Vetores e Matrizes
Ameliara Freire O comando de entrada de dados é utilizado quando desejamos fornecer um valor para um nosso programa. Os dispositivos.
PROGRAMAÇÃO ESTRUTURADA II
Linguagem de Programação II Parte VII
Linguagem de Programação II Parte V
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
DAVID ANDERSON CARDOSO DANTAS
PROGRAMAÇÃO I UNIDADE 2.
Computação Eletrônica
Linguagem C : Ponteiros
Vetores e Matrizes Ameliara Freire
Algoritmo e Programação
Técnicas de Desenvolvimento de Programas
Vetor Prof. Guilherme Baião S. Silva Adaptações:
Estruturas de Dados Aula 2: Estruturas Estáticas 07/04/2014.
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
3. Introdução à Linguagem C
Algoritmos - Profa. Alciléia1 Profa. Maria Alciléia Alves Rocha Funções em C 2011.
Aula prática 7 Strings Monitoria de Introdução à Programação
Algumas notas sobre a linguagem de programação C
Algoritmos e Estrutura de Dados I Jean Carlo Mendes
Estruturas de Dados Aula 6: Cadeias de Caracteres
STRINGS Dilvan Moreira (baseado no livro Big Java e Z. Liang)
Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores
Programação de Computadores I – Arquivos
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo IX Subprogramação e Recursividade.
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: _01.
CES-10 INTRODUÇÃO À COMPUTAÇÃO
 2000 Prentice Hall, Inc. All rights reserved. 1 Capítulo 8 - Caracteres e Strings Sumário 8.1Introdução 8.2Conceitos Fundamentais de Strings e Caracteres.
Programação Computacional Aula 8: Entrada e Saída pelo Console Prof a. Madeleine Medrano
Programação Computacional Aula 9: Meu primeiro programa em C
Aula prática 7 Strings Monitoria de Introdução à Programação.
Algoritmo e Estrutura de Dados I Aulas 12 – Linguagem C Strings Márcia Marra
Estruturas Homogêneas – Vetores e Matrizes
Profa. Maria Augusta Constante Puget
11 Revisão da Linguagem C Prof. Kariston Pereira Adaptado de Material gentilmente fornecido pelo Prof. Rui Tramontin (DCC/UDESC)
Algoritmo e Estrutura de Dados I Aulas 15 – Linguagem C Alocação Dinâmica de Memória Márcia Marra
Algoritmo e Estrutura de Dados I Aulas 14 – Linguagem C Matriz Márcia Marra
Aula prática 7 Strings Monitoria de Introdução à Programação.
Linguagem de Programação
Programação em C Aula 9.
PCI- Vetores Profa. Mercedes Gonzales Márquez. Aula 5 - VetoresAlgoritmos e Estruturas de Dados I Sequência de valores todos do mesmo tipo Nome único.
Programação de Computadores I – Arquivos Profa. Mercedes Gonzales Márquez.
1 Aula 07 Strings Prof. Filipe Mutz. 2 Em nossos programas ainda não vimos como armazenar palavras e textos, e eles são muito importantes! Exemplos: Programas.
FUNÇÕES Dilvan Moreira (baseado em material de Z. Liang)
Aula Prática 7 STRINGS Monitoria  Um dos tipos de arranjos que mais ocorre em C é o arranjo de caracteres, ou string. C não suporta um tipo básico.
Transcrição da apresentação:

CADEIA DE CARACTERES (Strings) CURSO DE C - 2010 AULA : CADEIA DE CARACTERES (Strings) APRESENTAÇÃO: ANDERSON CALDAS

CARACTERES A LINGUAGEM C NÃO OFERECE UM TIPO CARACTERE. OS CARACTERES SÃO REPRESENTADOS POR CÓDIGOS NUMÉRICOS. A LINGUAGEM OFERECE O TIPO char, QUE PODE ARMAZENAR VALORES INTEIROS “PEQUENOS”. UM char TEM TAMANHO DE 1 BYTE (8 BITS) E SUA VERSÃO COM SINAL PODE REPRESENTAR VALORES QUE VARIAM DE –128 A 127. A CORRESPONDÊNCIA ENTRE OS CARACTERES E SEUS CÓDIGOS NUMÉRICOS É FEITA POR UMA TABELA DE CÓDIGOS. EM GERAL, USA-SE A TABELA ASCII, MAS DIFERENTES MÁQUINAS PODEM USAR DIFERENTES CÓDIGOS. TABELA ASCII

O QUE SERÁ IMPRESSO NA TELA ? CARACTERES NA LINGUAGEM C, A DIFERENÇA ENTRE CARACTERES E INTEIROS É FEITA APENAS ATRAVÉS DA MANEIRA PELA QUAL SÃO TRATADOS, POR EXEMPLO: O QUE SERÁ IMPRESSO NA TELA ? DEVEMOS EVITAR O USO EXPLÍCITO DE CÓDIGOS DE CARACTERES. PARA TANTO, A LINGUAGEM C PERMITE A ESCRITA DE CONSTANTES CARACTERES. UMA CONSTANTE CARACTERE É ESCRITA ENVOLVENDO O CARACTERE COM ASPAS SIMPLES. “ALÉM DE AGREGAR PORTABILIDADE E CLAREZA AO CÓDIGO, O USO DE CONSTANTES CARACTERES NOS LIVRA DE CONHECERMOS OS CÓDIGOS ASSOCIADOS A CADA CARACTERE” IMPORTANTE! Independente da tabela de códigos numéricos utilizada, garante-se que os dígitos são codificados em sequência.

CARACTERES, Exemplo 1 Supondo que queremos escrever uma função para verificar se um caractere fornecido pelo usuário é um dígito (um dos caracteres entre ‘0’ e ‘9’). Considere que a função possui o seguinte protótipo: int digito(char c) TABELA ASCII UM EXERCÍCIO EXTRA ! Construir um algoritmo que receba a senha de um usuário e verifique se a senha é válida. Para isso, a senha deve: Conter apenas 6 dígitos Conter caracteres numéricos Conter vogais Conter letras maiúsculas e minúsculas ALGORITMO PROPOSTO

ALGUÉM TEM ALGUMA IDÉIA SIMPLES PARA CRIPTOGRAFAR UMA INFORMAÇÃO? CRIPTOGRAFIA CRIPTOGRAFIA é o estudo dos princípios e técnicas pelas quais a informação pode ser transformada da sua forma original para outra ilegível, de forma que possa ser conhecida apenas por seu destinatário (detentor da "chave secreta"), o que a torna difícil de ser lida por alguém não autorizado. Assim sendo, só o receptor da mensagem pode ler a informação com facilidade. (http://pt.wikipedia.org/wiki/Criptografia) TABELA ASCII ALGUÉM TEM ALGUMA IDÉIA SIMPLES PARA CRIPTOGRAFAR UMA INFORMAÇÃO?

CADEIA DE CARACTERES CADEIAS DE CARACTERES (STRINGS), EM C, SÃO REPRESENTADAS POR VETORES DO TIPO char TERMINADAS, OBRIGATORIAMENTE, PELO CARACTERE NULO ('\0'). Todas as funções que manipulam cadeias de caracteres recebem como parâmetro um vetor de char , isto é, um ponteiro para o primeiro elemento do vetor que representa a cadeia, e processam caractere por caractere, até encontrarem o caractere nulo, que sinaliza o final da cadeia. EXEMPLO: ATENÇÃO: Se o caractere '\0' não fosse colocado, a função printf executaria de forma errada, pois não conseguiria identificar o final da cadeia. OUTRAS MANEIRAS DE INICIALIZAR A STRING:

CADEIA DE CARACTERES OUTRO EXEMPLOS DE DECLARAÇÃO: Nessa declaração s4 possui 81 posições mas apenas 4 delas foram inicializadas.

LEITURA DE CARACTERES E CADEIA DE CARACTERES PARA CAPTURARMOS O VALOR DE UM CARACTERE SIMPLES FORNECIDO PELO USUÁRIO VIA TECLADO, USAMOS A FUNÇÃO scanf, COM O ESPECIFICADOR DE FORMATO %C. O especificador %c não pula os caracteres brancos. Se desejarmos pular todas as ocorrências de caracteres brancos que porventura antecedam o caractere que queremos capturar, basta incluir um espaço em branco no formato, antes do especificador. O ESPECIFICADOR %s PODE SER USADO NA FUNÇÃO printf PARA IMPRIMIR UMA CADEIA DE CARACTERES. O MESMO ESPECIFICADOR PODE SER UTILIZADO PARA CAPTURAR CADEIAS DE CARACTERES NA FUNÇÃO scanf. NO ENTANTO, SEU USO É MUITO LIMITADO. * Devemos notar que não usamos o caractere & na passagem da cadeia para a função, pois a cadeia é um vetor.

LEITURA DE CARACTERES E CADEIA DE CARACTERES PARA CAPTURARMOS NOMES COMPOSTOS, PODEMOS USAR O ESPECIFICADOR DE FORMATO %[...], NO QUAL LISTAMOS ENTRE OS COLCHETES TODOS OS CARACTERES QUE ACEITAREMOS NA LEITURA. SE O PRIMEIRO CARACTERE ENTRE COLCHETES FOR O ACENTO CIRCUNFLEXO (^), TEREMOS O EFEITO INVERSO (NEGAÇÃO). EXEMPLOS:

EXEMPLOS DE FUNÇÕS QUE MANIPULAM CADEIAS DE CARACTERES EXEMPLOS DE FUNÇÃO PARA IMPRESSÃO DE CARACTERES EXEMPLO + SIMPLES EXEMPLO DE FUNÇÃO PARA CONTABILIZAR O NÚMERO DE CARACTERES

EXEMPLOS DE FUNÇÕS QUE MANIPULAM CADEIAS DE CARACTERES EXEMPLO CÓPIA DE CADEIA DE CARACTERES > Salientamos a necessidade de “fechar” a cadeia copiada após a cópia dos caracteres não nulos. Quando o laço do for terminar, a variável i terá o índice de onde está armazenado o caractere nulo na cadeia original. A cópia também deve conter o '\0' nesta posição. EXEMPLO PARA CONCATENAR DUAS CADEIAS DE CARACTERES > Supondo que existe espaços suficientes para a string que ficará com todos os caracteres.

EXEMPLOS DE FUNÇÕS QUE MANIPULAM CADEIAS DE CARACTERES FUNÇÕES ANÁLOGAS ÀS FUNÇÕES COMPRIMENTO, COPIA E CONCATENA SÃO DISPONIBILIZADAS PELA BIBLIOTECA PADRÃO DE C. AS FUNÇÕES DA BIBLIOTECA PADRÃO SÃO, strlen, strcpy E strcat, EXEMPLO COM DUPLICAÇÃO DE CADEIAS COM ALOCAÇÃO DINÂMICA

FUNÇÕES RECURSIVAS Na linguagem C, assim como em muitas outras linguagens de programação, uma função pode chamar a si própria. Uma função assim é chamada função recursiva. Todo cuidado é pouco ao se fazer funções recursivas. A primeira coisa a se providenciar é um critério de parada. Este vai determinar quando a função deverá parar de chamar a si mesma. Isto impede que a função se chame infinitas vezes. #include <stdio.h> int fat(int n) { if (n)     return n*fat(n-1) else return 1; } int main() { int n; printf("\n\nDigite um valor para n: "); scanf("%d", &n); printf("\nO fatorial de %d e' %d", n, fat(n)); return 0;

CONSTANTE CADEIA DE CARACTERES EM CÓDIGOS C, UMA SEQÜÊNCIA DE CARACTERES DELIMITADA POR ASPAS REPRESENTA UMA CONSTANTE CADEIA DE CARACTERES, OU SEJA, UMA EXPRESSÃO CONSTANTE, CUJA AVALIAÇÃO RESULTA NO PONTEIRO ONDE A CADEIA DE CARACTERES ESTÁ ARMAZENADA. OUTRA IMPLEMENTAÇÃO: DE FORMA ILUSTRATIVA, O QUE ACONTECE É QUE, QUANDO O COMPILADOR ENCONTRA A CADEIA "Rio", AUTOMATICAMENTE É ALOCADA NA ÁREA DE CONSTANTES A SEGUINTE SEQÜÊNCIA DE CARACTERES: ASSIM, A FUNÇÃO strcpy RECEBE DOIS PONTEIROS DE CADEIAS: O PRIMEIRO APONTA PARA O ESPAÇO ASSOCIADO À VARIÁVEL CIDADE E O SEGUNDO APONTA PARA A ÁREA DE CONSTANTES ONDE ESTÁ ARMAZENADA A CADEIA “Rio”.

QUAL A DIFERENÇA ENTRE AS DECLARAÇÕES ABAIXO? NA PRIMEIRA, DECLARAMOS UM VETOR DE char LOCAL QUE É INICIALIZADO COM A CADEIA DE CARACTERES Rio de Janeiro, SEGUIDO DO CARACTERE NULO. NA SEGUNDA, DECLARAMOS UM PONTEIRO PARA char QUE É INICIALIZADO COM O ENDEREÇO DE UMA ÁREA DE MEMÓRIA ONDE A CONSTANTE CADEIA DE CARACTERES RIO DE JANEIRO ESTÁ ARMAZENADA.

VETOR DE CADEIA DE CARACTERES Com esta variável declarada, alunos[i] acessa a cadeia de caracteres com o nome do (i+1)-ésimo aluno da turma e, conseqüentemente, alunos[i][j] acessa a (j+1)-ésima letra do nome do (i+1)-ésimo aluno

VETOR DE CADEIA DE CARACTERES LER VÁRIOS NOMES E IMPRIME NA TELA COM ALOCAÇÃO ESTÁTICA USANDO #define É desnecessário especificar o endereço porque a primeira posição do vetor naturalmente já é o endereço.

PARÂMETROS DA FUNÇÃO **main A função main pode ser definida para receber zero ou dois parâmetros, geralmente chamados argc e argv. O parâmetro argc recebe o número de argumentos passados para o programa quando este é executado. O parâmetro argv é um vetor de cadeias de caracteres, que armazena os nomes passados como argumentos. Por exemplo, se temos um programa executável com o nome mensagem e se ele for invocado através da linha de comando: A variável argc receberá o valor 4 e o vetor argv será inicializado com os seguintes elementos: argv[0]="mensagem", argv[1]="estruturas", argv[2]="de", e argv[3]="dados". Isto é, o primeiro elemento armazena o próprio nome do executável e os demais são preenchidos com os nomes passados na linha de comando.