Gestão e Programação de Sistemas Informáticos Programação e Sistemas de Informação Programação e Sistemas de Informação REVISÕES 1
Conteúdos Introdução Declaração de strings Atribuição de valores a strings Strings como arrays de caracteres Funções para manipulação de strings Strings Estruturas de dados Estruturas de Dados Primitivas porque o conjunto de instruções do computador são de baixo nível, ou seja, permitem manipular directamente essas estruturas. Exemplo: as operações aritméticas. 2
Strings Uma string é uma cadeia de caracteres Este caracteres organizam-se por meio da posição que ocupam na string Strings Uma string é uma sequência de caracteres Tratamento Alfanumérico A A \0 NULL \0 indica fim de string A representa um carácter! (ocupa 1 Byte) enquanto que A é uma string de comprimento 1 (ocupa 2 Byte). Formato de leitura e escrita de strings %s 3
Declaração de strings char nome_da_variavel [n_elementos + 1]; Exemplo: char nome[15]; char palavra[10]; NOTA: deve utilizar parênteses rectos Atribuição de valores a strings Pode ser feita carácter a carácter ou pela palavra inteira Exemplos: char palavra[5] = { a, b, c, d, \0 }; char palavra[5] = abcd ; NOTA: este tipo de atribuição só é possível no momento da declaração da variável 4
Strings como arrays de caracteres Uma string é uma cadeia de caracteres Este caracteres organizam-se por meio da posição que ocupam na string Cada carácter é identificado pelo índice (indicador de posição no array) M a r i a \0 Índice 0 1 2 3 4 5 Strings como arrays de caracteres Exemplo Índice M a r i a \0 0 1 2 3 4 5 Output char nome[6]= Maria ; cout<<nome; cout<<nome[0]; cout<<nome[2]; Maria M r cout<<nome[5]; <nulo> Escola Secundária Daniel Faria Baltar 5
Leitura de strings Função cin e Função scanf() Permitem a leitura de apenas uma palavra Se a string incluir espaços só é considerada a 1ª palavra. Exemplo: scanf( %s, palavra); cin<<palavra; Função gets() Permitem a leitura de várias palavras numa string Consegue ler espaços Exemplo: gets(palavra); Escola Secundária Daniel Faria Baltar Escrita de strings Função cout Função printf() Exemplo: printf( %s, palavra); cout<<palavra; 6
Actividade Escreva um programa que leia um nome e imprima cada letra numa linha Resolução Escreva um programa que leia um nome completo (com espaços) e imprima cada nome numa linha Resolução Escreva um programa que determine o tamanho de uma string (sem usar funções de string.h) Resolução Outras operações com strings Copia (atribuição) Concatenação Comprimento Comparação Pesquisa 7
Actividade Pesquisa na NET Instruções de manipulação de strings em C Cópia (Atribuição) 8
strcpy - Exemplo #include <stdio.h> #include <string.h> #include <iostream> using namespace std; main() { char str1[10], str2[10]; printf("digite a string1 :"); gets(str1); printf("str1 = %s\n",str1); cout<< str2 = <<strcpy(str2,str1)<< \n ; } Concatenação (união de strings) 9
strcat - Exemplo #include <stdio.h> #include <string.h> #include <iostream> using namespace std; main() { char string1[100], string2[10]; printf("digite a string1 :"); scanf("%s",str1); printf("digite a string2 :"); scanf("%s",str2); printf( Juntar a string2 à string1: %s.\n",strcat(str1,str2)); } Concatenação parcial 10
Comprimento strlen - Exemplo #include <stdio.h> #include <string.h> #include <iostream> using namespace std; main() { char str[20]; printf( Introduza a string: "); cin >> str; printf("a string tem %d caracteres.\n",strlen(str)); } 11
Actividade Implemente um programa em C que leia uma string e a imprima invertida Exemplo: Lê Tiago Escreve ogait Resolução Comparação 12
strcmp - Exemplo #include <stdio.h> #include <string.h> #include <iostream> using namespace std; main() { char str1[20],str2[20]; int retorno; printf( Digite a primeira string :"); } scanf("%s",str1); printf("digite a segunda string :"); scanf("%s",str2); retorno = strcmp(str1,str2); if(retorno == 0) printf("as strings são iguais.\n"); else printf("as strings são diferentesr.\n"); Comparação parcial 13
strncmp - Exemplo #include <stdio.h> #include <string.h> #include <iostream> using namespace std; main() { char str1[20],str2[20]; int retorno; printf( Digite a primeira string :"); } scanf("%s",str1); printf("digite a segunda string :"); scanf("%s",str2); retorno = strncmp(str1,str2,4); if(retorno == 0) printf( Os quatro primeiros caracteres são iguais.\n"); else printf( Os quatro primeiros caracteres são diferentesr.\n"); Comparação outras variantes 14
Converter para minúsculas ou maiúsculas Inverter uma string 15
strrev - Exemplo #include <stdio.h> #include <string.h> int main() { char string[20]; printf( Digite a string :"); scanf("%s",string); printf("inverter ==> %s",strrev(string)); } Pesquisa 16
strstr - Exemplo #include <stdio.h> #include <string.h> main() { char str[20], substr[20]; char *extrai; printf("digite a string :"); scanf("%s",str); printf("digite a substring :"); scanf("%s",substr); extrai = strstr(str,substr); if(extrai) { printf("a string contém a substring.\n"); printf("a substring começa na posição %d.\n",extrai-str+1);} else printf("a string não contém a substring.\n"); } *extrai declara um apontador para guardar um endereço de memória onde está armazenado um dado do tipo char Converter strings em números Funções que permitem a conversão de strings em números A FUNÇÃO CONVERTE PARA atof(str) float atoi(str) int atol(str) long int strtod(str) double strtol(str) long Obrigatória a inclusão da header file stdlib.h 17
Converter strings em números - Exemplo #include <stdio.h> #include <stdlib.h> main() { char str1[20],str2[20]; printf( Digite a primeira string :"); scanf("%s",str1); printf( Digite a segunda string :"); scanf("%s",str2); printf("string1 + string2 = %f",atof(str1) + atof(str2)); } Referências TREMBLAY, Jean-Paul & BUNT, Richard B., Introduction to Computer Science: An Algorithmic Approach, 2.ª Ed. Lisboa: McGraw-Hill, 1989. LIMA, Jorge R., Linguagem Algorítmica, Porto: Universidade Portucalense Departamento de Informática, 1987. AZUL, Artur A., Bases de Programação Curso Tecnológico de Informática 10.º ano, Porto: Porto Editora, 2004. MARQUES DE SÁ, Joaquim P., Fundamentos de Programação Usando C, Lisboa: FCA, 2004. KERNIGHAN, Brian & RITCHIE, Dennis, The C Programming Language, 2nd Ed. New Jersey: Prentice Hall, 1988. 18