Você está na página 1de 33

ALGORITMOS E ESTRUTURA DE DADOS

PROFESSOR

Sergio Souza Costa

LINGUAGEM C

Vetores

Strings

engenhariaeletricab2011@hotmail.com

Introdução

Tipos de dados em C

o

Primitivos: char, int, float, double

o

Compostos:

Homogêneos: vetores e matrizes

Heterogêneos: registros (struct)

LINGUAGEM C

Introdução

Vetores são variáveis homogêneas compostas unidimensionais

O início de um vetor em Linguagem C é denotado pelo valor do índice = 0

Exemplo de atribuição: a[0] = 10

Declarando vetores

o int x[5];

o float x[5];

o char x[5];

x

x[0]

x[1]

x[2]

x[3]

x[4]

de atribuição: a[0] = 10  Declarando vetores o int x[5]; o float x[5]; o char
de atribuição: a[0] = 10  Declarando vetores o int x[5]; o float x[5]; o char
de atribuição: a[0] = 10  Declarando vetores o int x[5]; o float x[5]; o char
de atribuição: a[0] = 10  Declarando vetores o int x[5]; o float x[5]; o char
de atribuição: a[0] = 10  Declarando vetores o int x[5]; o float x[5]; o char

LINGUAGEM C

Preenchendo vetores

Algoritmo

Declare y[5] Numérico

Declare i Numérico Para i1 até 5 Faça Início

Escreva “Digite o número:”, i

Leia y[i] Fim Fim

Numérico Declare i Numérico Para i  1 até 5 Faça Início Escreva “Digite o número:”,
Numérico Declare i Numérico Para i  1 até 5 Faça Início Escreva “Digite o número:”,
LINGUAGEM C • Exemplo
LINGUAGEM C
• Exemplo

LINGUAGEM C

Exercício Resolvido 1

Construa um algoritmo e um programa em Linguagem C que preencha um vetor com nove números e calcule a média entre eles

Algoritmo Declare i, x[9], total, media numérico total 0 Para i 1 Até 9 Faça Inicio Leia x[i] total total + x[i] Fim media total / 9 Escreva “Media = ”, media

Fim

LINGUAGEM C

Exercício Resolvido 1

L INGUAGEM C • Exercício Resolvido 1

TRABALHANDO COM STRINGS

LINGUAGEM C

Introdução

Em Linguagem C Strings (Literal) são declaradas como vetores de char

Como são armazenadas em um vetor, o final de uma cadeia

de caracteres é identificado com o valor nulo ou "\0"

Dessa forma, deve-se sempre declarar o vetor do tamanho necessário mais um (para o valor nulo)

Exemplo: char palavra[7]

 

[0]

[1]

[2]

[3]

[4]

[5]

[7]

valor

C

A

D

E

I

A

\0

LINGUAGEM C

Inicialização

Uma cadeia de caracteres pode ser adicionada no momento da declaração

Exemplo: char nome[]="Testando!"

 Uma cadeia de caracteres pode ser adicionada no momento da declaração  Exemplo: char nome[]="Testando!"

LINGUAGEM C

Atribuindo

A atribuição de strings à uma variável não pode ser feita de forma direta A instrução palavra = "Testando2!" é inválida A atribuição deve ser feita através da função strcpy(variável,string) A função strcpy exige a utilização da biblioteca string.h

strcpy(variável,string)  A função strcpy exige a utilização da biblioteca string.h Até 9 caracteres!!!

Até 9 caracteres!!!

strcpy(variável,string)  A função strcpy exige a utilização da biblioteca string.h Até 9 caracteres!!!

LINGUAGEM C

Atribuindo

A função strcpy também é utilizada para passar o conteúdo de texto de uma variável para outra

C • Atribuindo  A função strcpy também é utilizada para passar o conteúdo de texto

LINGUAGEM C

Entrando Dados

Utilizar a função scanf para entrar dados não é adequado quando a string possui espaços em branco, pois a função scanf descarta os espaços

para entrar dados não é adequado quando a string possui espaços em branco, pois a função

LINGUAGEM C

Entrando Dados

1ª Solução:

L INGUAGEM C • Entrando Dados 1ª Solução:

LINGUAGEM C

Entrando Dados

Uso de expressos regulares

scanf(%[^\n]s, nome);

o

%s

Leitura de string

o

^

Enquanto for diferente

o

\n

Do enter

LINGUAGEM C

Entrando Dados

2ª Solução:

Utiliza-se a função gets(variável)

L INGUAGEM C • Entrando Dados  2ª Solução:  Utiliza-se a função gets(variável)

LINGUAGEM C

Concatenando strings

Concatenar strings significa juntar o conteúdo de uma string com outra

A função strcat(str1,str2) concatena o conteúdo de str2 em srt

1

juntar o conteúdo de uma string com outra  A função strcat(str1,str2) concatena o conteúdo de

LINGUAGEM C

Comparando Strings

Para verificar se uma string é igual a outra utiliza-se a instrução var = strcmp(str1, str2) A variável var recebe um número inteiro de acordo com o resultado da comparação

o

0 (zero) se as duas cadeias forem iguais

o

<0 (menor que zero) se str1 for alfabeticamente menor que

str2

o

>0 (maior que zero) se str2 for alfabeticamente menor que

str1

LINGUAGEM C

Comparando Strings

Exemplo

L INGUAGEM C • Comparando Strings  Exemplo

LINGUAGEM C

Descobrindo a Quantidade de Caracteres

Para descobrir quantos caracteres tem uma string deve-se utilizar a função strlen(str) A fução retorna a quantidade exata de caracteres de uma cadeia

uma string deve-se utilizar a função strlen(str)  A fução retorna a quantidade exata de caracteres

LINGUAGEM C

Alterando Caracteres Dentro de uma String

A função strset(str1,ch) altera todos os caracteres da string str1 pelo caractere ch, já a função strnset(str1,ch,n) substitui os n primeiros caracteres da string str pelo caractere ch

ch, j á a função strnset(str1,ch,n) substitui os n primeiros caracteres da string str pelo caractere

Funções de Strings e de Caracteres

Biblioteca <string.h>

Função strlen(str)

Devolve o comprimento da string terminada por um nulo apontada por str . O nulo não é contado.

Exemplo

O fragmento de código a seguir escreve 3 na tela

#include <stdio.h> #include <string.h> main(){ printf(“%d”, strlen(“alo”)); }
#include <stdio.h>
#include <string.h>
main(){
printf(“%d”, strlen(“alo”));
}

Funções de Strings e de Caracteres

Biblioteca <string.h>

Função strcat(str1, str2)

Toma dois endereços de strings como argumento e copia a segunda string ao final da primeira e esta combinação gera uma nova string. A segunda string não é alterada.

Cuidado: esta função não verifica se a segunda string cabe no

espaço livre da primeira.

Exemplo

str1[25]=“Aula” str2[25]=“algoritmos” strcat(str1, str2) str1 == “Aulaalgoritmos”
str1[25]=“Aula”
str2[25]=“algoritmos”
strcat(str1, str2)
str1 == “Aulaalgoritmos”

Funções de Strings e de Caracteres

Biblioteca <string.h>

Função strcmp(str1, str2)

Compara lexicograficamente duas strings e devolve um inteiro baseado no resultado, como mostrado aqui:

Valor

Significado

Menor que zero

str1 é alfabeticamente menor que str2

Zero

str1 é igual a str2

Maior que zero

str1 é alfabeticamente maior que str2

Exemplo

É possível usar esta função para verificação de senhas. A rotina que segue devolve -1 em caso de falha e 0 em caso de sucesso.

Funções de Strings e de Caracteres

Biblioteca <string.h>

Função strcmp(str1, str2)

password(void){ char s[80]; printf(“digite a senha”); gets(s); if(strcmp(s, “pass”)==0){ printf(“Acesso
password(void){
char s[80];
printf(“digite a senha”);
gets(s);
if(strcmp(s, “pass”)==0){
printf(“Acesso Liberado”);
return 0;
}
return -1;
}

Funções de Strings e de Caracteres

Biblioteca <string.h>

Função stricmp(str1, str2)

É uma variante da função strcmp() ;

Seu funcionamento é o mesmo, diferenciando-se apenas por não fazer distinção entre letras maiúsculas e minúsculas;

Função strcpy(str1, str2)

Copia a string str1 para a string str2, sobrescrevendo o valor de

str1;

str2 não é alterada;

Exemplo:

Funções de Strings e de Caracteres Biblioteca <string.h>

Função strcpy(str1, str2)

str1[20]=“Aula”; str2[20]=“Algoritmos”; puts(str1); strcpy(str1, str2); puts(str1);
str1[20]=“Aula”;
str2[20]=“Algoritmos”;
puts(str1);
strcpy(str1, str2);
puts(str1);

Após a execução da função strcpy(), o valor de str1 passa a ser Algoritmos;

Funções de Strings e de Caracteres Biblioteca <ctype.h>

Função toupper(ch)

Devolve o equivalente maiúsculo de ch se ch é uma letra, caso contrário, ch é devolvido sem alteração.

Função tolower(ch)

Devolve o equivalente minúsculo de ch se ch é uma letra, caso contrário, ch é devolvido sem alteração.

Função isalpha(ch)

Devolve um valor diferente de zero se ch for uma letra do alfabeto; caso contrário, devolverá zero.

Funções de Strings e de Caracteres Biblioteca <ctype.h>

Função isalnum(ch)

Devolve um valor diferente de zero se ch for uma letra ou um dígito; se o caractere não for alfanumérico, devolverá zero.

Função isdigit(ch)

Devolve um valor diferente de zero se ch for um dígito (0 a 9); caso contrário, devolverá zero.

Função islower(ch)

Devolve um valor diferente de zero se ch for uma letra minúscula; caso contrário, devolverá zero.

Funções de Strings e de Caracteres Biblioteca <ctype.h>

Função isspace (ch)

Devolve um valor diferente de zero se ch for um espaço, tabulação horizontal, tabulação vertical, retorno de carro ou caractere de nova linha; caso contrário, devolverá zero.

Função isupper(ch)

Devolve um valor diferente de zero se ch for uma letra maiúscula; caso contrário, devolverá zero.

LINGUAGEM C

Referências

ASCENIO, A. F. G.; de CAMPOS, E. A. V. Fundamentos de Programação de Computadores, 2 ed. São Paulo: Prentice Hall, 2008.

SENNE, E. L., Primeiro Curso de Programação em C. 3ª Edição, Visual Books, 2009.

SCHILDT, Herbert. C Completo e Total. 3ª. Ed. São Paulo:

Makron Books, 1995.