·

Engenharia de Produção ·

Linguagens de Programação

Envie sua pergunta para a IA e receba a resposta na hora

Fazer Pergunta

Texto de pré-visualização

18042022 1153 T005 httpssitesgooglecomulbrabrg000005gs001t005 18 ESTRUTURAS DE SELEÇÃO Prof Eduardo Isaia Filho NESTE CAPÍTULO VOCÊ VAI APRENDER A utilizar as cadeias de caracteres strings Serão abordados os seguintes conceitos Declaração e inicialização de strings Principais funções usadas para manipular as strings 18042022 1153 T005 httpssitesgooglecomulbrabrg000005gs001t005 28 INTRODUÇÃO As strings são cadeias de caracteres usadas para armazenar e manipular dados textuais como por exemplo nomes endereços e senhas com caracteres alfanuméricos Em linguagem C diferentemente de outras linguagens de programação string não é um tipo de dado primitivo mas sim um vetor de caracteres Nesta seção serão abordados os fundamentos necessários para manipular strings É importante lembrar que programar envolve dedicação e tempo Reserve tempo na sua semana para praticar os conceitos apresentados neste capítulo apenas a leitura do mesmo não irá ajudálo a entender como desenvolver programas Este capítulo é fundamental para sua disciplina e Algoritmos e Programação é a base para seu curso sendo essa de fundamental importância para sua carreira acadêmica e profissional Vamos nessa então Um excelente semestre a todos CADEIA DE CARACTERES STRING As cadeias de caracteres strings são usadas para armazenar e manipular dados textuais como por exemplo o nome de uma pessoa Em linguagem C diferente de outras linguagens de programação a string não é um tipo de dado primitivo da linguagem mas sim um vetor de caracteres Considere a string nome que permite armazenar 15 caracteres nome Observe que a string possui um índice número que começa em 0 zero e cada alfanumérico armazenado ocupa uma posição da string A forma de marcar onde o conteúdo armazenado na string termina na linguagem C é utilizado o caractere 0 caractere nulo cujo código ASCII decimal é zero Essa terminação é importante pois é a única forma das outras funções da linguagem reconhecerem o final de uma string 18042022 1153 T005 httpssitesgooglecomulbrabrg000005gs001t005 38 DECLARAÇÃO E INICIALIZAÇÃO DE STRING Uma string deve ser declarada como um vetor de caracteres definindo um identificador e o seu tamanho por exemplo char nome16 Nesse caso é declarada uma string que poderá armazenar no máximo 15 caracteres mais o caractere 0 Uma string pode ser inicializada na sua declaração conforme os exemplos a seguir char nome16 P E D R O S I L V A 0 char nome16 PEDRO SILVA No primeiro exemplo os caracteres são inicializados um a um entre apóstrofes e o conjunto de caracteres é envolto por chaves O segundo exemplo apresenta uma forma de inicialização equivalente e consideravelmente mais simples onde a string aparece entre aspas e o caractere especial 0 é incluído automaticamente Como uma string é um vetor de caracteres essa pode ser manipulada como tal Para acessar um determinado caractere de uma string por exemplo basta utilizar o seu índice conforme os exemplos a seguir nome0 P nome4 O printf c nome6 FUNÇÕES PARA MANIPULAÇÃO DE STRING As funções para manipular strings pertencem à biblioteca stringh por isso a biblioteca deverá ser incluída no programa a partir da diretiva include para que as funções possam ser utilizadas A seguir serão apresentadas as principais funções de manipulação de string Entrada de dados Uma das funções de entrada utilizadas com string é a função gets A sintaxe da função é apresentada a seguir getsvariável A função gets é usada para ler uma cadeia de caracteres ou seja uma string Normalmente a função gets é antecedida pela função fflush com o objetivo de liberar o buffer do teclado O exemplo a seguir ilustra o uso da função char nome60 fflushstdin getsnome Como pode ser observado no exemplo é lida a variável nome que terá no máximo 59 caracteres Ao definir o tamanho máximo de uma string é preciso considerar que o espaço de um dos seus caracteres será reservado para o 0 caractere nulo necessário para indicar seu final Observe que gets nome é diferente de scanf s nome pois no segundo caso a leitura do valor digitado irá encerrar no espaço em branco Considere que o usuário digite PEDRO SILVA gets nome irá armazenar PEDRO SILVA na variável nome scanfs nome irá armazenar somente PEDRO na variável nome desconsiderando o que virá após o espaço em branco 18042022 1153 T005 httpssitesgooglecomulbrabrg000005gs001t005 48 Saída de dados As strings podem ser exibidas na tela conforme os exemplos a seguir printfstring de controlelista de argumentos putsargumento Como pode ser observado a diferença entre essas funções é que utilizando printf é possível imprimir um literal com o conteúdo de uma ou mais variáveis de qualquer tipo enquanto a função puts permite exibir apenas um literal ou o conteúdo de uma string por vez seguido de nova linha Observe a diferença das funções nos exemplos a seguir Tabela 1 Tabela 1 Atribuição entre strings A função de atribuição em linguagem C é a igualdade por exemplo x 5 Esse tipo de atribuição não pode ser feita com strings Para isso existe a função strcpy essa função pode copiar para uma variável string um valor constante string ou o conteúdo de outra variável string A sintaxe da função é strcpy str1 str2 Onde str1 é a variável string que receberá o valor e str2 é a string ou variável string que será copiada Observe o exemplo a seguir char nome30 strcpy nome Maria Julia Nesse caso a string Maria Julia será atribuída para a variável nome Já no exemplo seguinte o valor da variável str2 será copiado para variável str1 char str120 str220 teste strcpy str1 str2 18042022 1153 T005 httpssitesgooglecomulbrabrg000005gs001t005 58 Concatenação entre strings A função de concatenação de strings é a função strcat ela junta uma string ao final de outra A sintaxe da função é strcat str1 str2 Onde str1 é a variável string que receberá o valor e str2 é a string ou variável string que será concatenada Observe o exemplo a seguir char nome61 Pedro sobrenome30 Silva strcat nome sobrenome No exemplo o conteúdo da variável sobrenome é agrupado com a variável nome ou seja a variável nome passa a valer PedroSilva Observe que não existe espaço pois isso não foi incluso no valor das variáveis nome e sobrenome para incluir o espaço o correto seria char nome61 Pedro sobrenome30 Silva strcat nome strcat nome sobrenome O programador deve observar se a variável destino tem espaço suficiente para receber o conteúdo concatenado já que o compilador não faz essa verificação Comparação entre strings A função que compara o conteúdo de duas strings é a função strcmp A sintaxe da função é strcmp str1 str2 Onde str1 e str2 são duas strings Na função strcmp as variáveis str1 e str2 são comparadas e a função retorna um valor conforme condições a seguir valor retornado 0 se str1 str2 valor retornado 0 se str1 str2 valor retornado 0 se str1 str2 Nesses casos str1 ser menor que str2 e str1 ser maior que str2 significa que as duas strings foram colocadas em ordem alfabética comparadas e a primeira é menor que a segunda Não tendo relação com o tamanho número de caracteres da string e sim com sua ordem alfabética Observe o exemplo a seguir if strcmpstr1 str2 0 printfStrings iguais else if strcmp str1 str2 0 printfAs strings ordenadas são s s str1 str2 else printfAs strings ordenadas são s s str2 str1 Se o retorno da função for zero o programa exibe a mensagem Strings iguais Caso contrário exibe as strings em ordem alfabética Importante lembrar que a função strcmp diferencia letras minúsculas de letras maiúsculas Para comparar duas strings sem considerar se os caracteres estão em caixabaixa ou caixaalta devese utilizar a função strcmpi cuja sintaxe é a mesma da strcmp 18042022 1153 T005 httpssitesgooglecomulbrabrg000005gs001t005 68 Tamanho de uma string A função que retorna a quantidade de caracteres armazenados em uma string sem considerar o 0 é a função strlen A sintaxe da função é strlen str1 A função strlen é usada para determinar o tamanho de uma string normalmente utilizada para limitar o número de iterações da estrutura for por exemplo Observe o exemplo a seguir char frase50algoritmos e programacao fori0 i strlenfrase i if frasei a cont No exemplo é contada quantas vezes o caractere a aparece na string frase Convertendo uma string para maiúscula ou minúscula As funções strupr abreviação de string uppercase e strlwr abreviação de string lowercase são utilizadas para converter os caracteres de uma string para maiúscula ou minúscula respectivamente As sintaxes das funções são strupr str strlwr str Observações importantes Não se pode esquecer que na linguagem C existem diferenças entre variáveis string e char Apesar de a variável string ser um vetor de char as funções descritas nesta seção só funcionam com variáveis do tipo strings não sendo possível utilizá las com variáveis do tipo char Por exemplo considere as variáveis char sx e char nome30 Observe que sx é um char e nome é uma string então strcpy sx teste isso não é possível gets sx isso não é possível Lembrese de que para variável char utilizase aspas simples e para variável string utilizase aspas duplas char sx M char nome30 Pedro Após a leitura de uma variável string é necessário limpar o buffer de teclado através da função fflushstdin INFOGRÁFICO 18042022 1153 T005 httpssitesgooglecomulbrabrg000005gs001t005 78 18042022 1153 T005 httpssitesgooglecomulbrabrg000005gs001t005 88 REFERÊNCIAS ASCENCIO Ana F G CAMPOS Edilene A V Fundamentos da Programação de Computadores 2 ed São Paulo Prentice Hall 2007 DEITEL Paul DEITEL Harvey C como programar 6 ed São Paulo Pearson Prentice Hall 2011 FORBELLONE André Luís EBERSPACHER Henri Lógica de Programação a construção de algoritmos e estruturas de dados 3 ed São Paulo Prentice Hall 2005 GOODRICH Michael T TAMASSIA Roberto Projeto de Algoritmos Porto Alegre Bookman 2004 CRÉDITOS Coordenação e Revisão Pedagógica Claudiane Ramos Furtado Design Luiz Specht Diagramação Marcelo Ferreira Ilustrações Rogério Lopes Revisão ortográfica Igor Campos Produzido por Núcleo de Audiovisual e Tecnologias Educacionais NATE ULBRA EAD Universidade Luterana do Brasil Todos os direitos reservados