Buscar

Programação em C básica - 2

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 8 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 8 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

UNIVERSIDADE COMUNITÁRIA DA REGIÃO DE CHAPECÓ 
ACEA 
CURSO DE CIÊNCIA DA COMPUTAÇÃO 
 
 
 
 
 
 
 
Algoritmos e Estrutura de Dados I 
 
 
 
Apostila da Disciplina – Parte 5 
 
INTRODUÇÃO A PROGRAMAÇÃO EM C – Parte 2 
 
 
 
 
 
 
 
Prof. José Carlos Toniazzo 
 
 
 
 
 
 
 
 
 
Chapecó, 2011 
Caracteres e Strings 
 
 
Em C é possível trabalhar, além de dados numéricos, com caracteres e strings. 
É importante notar que caractere é um tipo nativo da linguagem (char), enquanto string 
não. Na verdade uma string é um vetor de char, e esses conceitos serão analisados em 
maiores detalhes a seguir. 
 
Trabalhando com Caracteres 
 
 
FUNÇÃO PUTCHAR 
 
Sintaxe: putchar(var); 
 
A função putchar() exibe um caracter no monitor. Este caracter deve ser passado 
como parâmetro dentro dos parênteses, ou de forma direta (constante literal) ou através de 
uma variável do tipo caracter. 
 
Exemplo 
 
#include <stdio.h> 
#include <conio.h> 
 
int main(){ 
char letra; 
letra= 'R'; 
putchar(letra); 
putchar('o'); 
putchar('\n'); 
getch(); 
} 
 
 
FUNÇÃO GETCHAR 
 
Sintaxe: var = getchar(); 
 
Quando a instrução de getchar() é executada pela primeira vez, a execução 
do programa será interrompida até que o usuário tecle <Enter>. Durante a digitação 
será permitido ao usuário que este altere sua entrada através do <Backspace>. Ao 
terminar a digitação (<Enter> foi pressionado), o primeiro caracter será retornado 
para o programa e todos os demais (inclusive o caracter new line '\n' representado o 
<Enter>) ficarão no buffer de teclado. 
 
Nas próximas chamadas ao getchar() será testado se existe algum caracter 
no buffer, caso afirmativo, então irá tira-lo do buffer e retorná-lo para o programa. 
Caso não haja nenhum caracter no buffer então retorna-se ao procedimento normal 
(edição até que o <Enter> seja teclado). 
 
Exemplo 
 
#include <stdio.h> 
#include <conio.h> 
 
int main(){ 
char letra; 
letra=getchar(); 
 
while (letra!='\n') 
{ 
putchar(letra); 
letra=getchar(); 
} 
 getch(); 
} 
 
 
FUNÇÃO GETCHE 
 
Na função getche()os caracteres são disponibilizados para o programa 
assim que eles forem digitados, não sendo obrigatório teclar Enter. Desta forma, não 
se pode usar a tecla de Backspace para alterar uma entrada incorreta. 
 
O "sistema" acrescenta o caracter de retorno de carro (\r) à cadeia de 
caracteres quando for detectado que um Enter foi teclado. Ela se encontra na 
biblioteca CONIO.H. 
 
Exemplo 
 
#include <stdio.h> 
#include <conio.h> 
 
int main(){ 
char letra; 
printf("Voce quer Continuar? S ou N?\n"); 
letra=getche(); 
 
while ( letra!='S' && letra!='N' ) 
letra=getche(); 
 
if (letra=='S') 
printf("\nSua resposta foi SIM\n"); 
else 
printf("\nSua resposta foi NAO\n"); 
 
getch(); 
} 
 
 
 
 
FUNÇÃO GETCH 
 
A função getch() é semelhante à função getche(), porém, os caracteres lidos 
do teclado não são exibidos automaticamente no vídeo (sem eco). Uma boa 
utilização para getch() é na digitação de senhas. 
 
Exemplo 
 
#include <stdio.h> 
#include <conio.h> 
 
int main(){ 
char letra; 
printf("Digite sua senha e tecle ENTER\n"); 
while (letra!='\r') 
{ 
letra= getch(); 
putchar('*'); 
} 
getch(); 
} 
 
É importante ressaltar que ao se trabalhar com caracteres individuais 
fazemos uso de aspas simples (‘ ‘). 
 
 
Trabalhando com Strings 
 
 
A linguagem C não possui nenhum tipo primitivo que permite a manipulação 
de cadeias de caracteres (strings). Desta forma, uma string em C é implementada 
através do uso de um vetor de caracteres terminado pelo caracter nulo. O caracter 
nulo tem configuração binária 0 (o seu código ASCII é 0), e é representado pela 
seqüência '\0'. 
Para armazenarmos uma string de até 10 caracteres escrevemos o comando 
char str[11]; 
 
 
Lendo e Escrevendo Strings 
 
A biblioteca padrão de E/S, stdio.h, fornece duas funções para E/S com 
strings. A função gets() lê uma string de caracteres do teclado e a coloca no endereço 
apontado pelo argumento passado (ponteiro para caracter). Os caracteres digitados 
são transferidos para a memória após um Enter. O Enter não se torna parte da string; 
em seu lugar é colocado o caracter nulo (‘\0’). 
 
 
 
Função gets(char *str); 
 
Neste protótipo str é um vetor de caracteres (ou um ponteiro qualquer para 
caracteres) que recebe os caracteres digitados pelo usuário. 
A função puts() escreve o seu argumento (uma string) na tela, seguida por 
um caracter de nova linha. 
 
Função void puts(char *str); 
 
A função puts() reconhece os mesmos caracteres de controle que a função 
printf() (por exemplo, ‘\n’). puts() pode escrever apenas strings de caracteres, não 
podendo escrever números ou fazer conversões de formato. 
 
Os comandos a seguir reexibem uma frase lida no monitor. 
 
char str[81]; 
gets(str); 
puts(str); 
 
A função scanf() pode ser utilizada para ler uma string usando o 
especificador de formato %s. O %s faz com que scanf() leia caracteres até que seja 
encontrado um caracter de espaço em branco. Os caracteres lidos são colocados 
em um vetor de caracteres apontado pelo argumento correspondente, e o resultado 
tem terminação nula (‘\0’). Para scanf(), um caracter de espaço em branco é: um 
espaço, ou um retorno de carro (Enter), ou uma tabulação. Logo, uma string como 
Alo Mundo! não pode ser lido com scanf() (apenas a substring Alo será carregado 
no vetor). 
 
A função printf() escreve uma string através do %s. Ao contrário da função 
puts(), não existe mudança automática de linha na exibição de uma string no vídeo. 
 
Podemos também ler uma string, caracter a caracter, através das funções 
getchar(), getch() ou getche(). Neste caso, é função do programador acrescentar um 
caracter ‘\0’ após a string. 
 
O código a seguir exemplifica o que foi dito acima. 
 
Exemplo 
 
#include <stdio.h> 
#include <conio.h> 
 
int main(){ 
 
char nome[81]; 
int i=0; 
printf("Informe um Nome\n"); 
nome[i]=getchar(); 
 
while(i<80 && nome[i]!='\n') { 
i++; 
nome[i]=getchar(); 
} 
 
nome[i]=NULL; 
puts(nome); 
getch(); 
} 
 
É importante lembrar que as funções gets() e scanf() recebem como 
parâmetro um ponteiro para uma área de memória. Logo, não temos controle sobre a 
quantidade de caracteres que será digitada pelos usuários, e sobre a área de 
memória que será utilizada para armazenar os caracteres lidos; já que o tamanho do 
vetor é estabelecido estaticamente. 
 
ALGUMAS OPERAÇÕES COM STRING: 
 
Uma string não é considerado um tipo básico em C (como int, char ou float), 
por isso operações como cópia (atribuição) ou comparação não são elementares. 
 
Sendo assim, em C existe a biblioteca string.h, que foi feita justamente para 
fazer algumas operações com strings. Essa biblioteca permite, por exemplo, utilizar as 
funções strcpy(destino,origem) que copia uma string da origem para o destino, e a 
função strcmp(string1,string2), que permite verificar se a string1 é igua a string2. 
Essas operações não podem ser feitas nativamente em C. Assim: 
 
nome = ”José” //isso não funciona, pois em C não existe variável do tipo string 
 
strcpy(nome, ”José”) //assim funciona, utilizando strcpy() da biblioteca string.h 
 
 
Operação Tipo Básico String 
 
Declaração int x, y; char str[81], aux[81]; 
 
Atribuição x = y; strcpy(aux, str); 
 
Comparação if (x == y) if (!strcmp(aux,str)) 
 
Função strcpy() 
 
A função strcpy() é usada para copiar o conteúdo de uma string (origem) 
para outra string (destino). 
 
Exemplo 
 
#include<stdio.h> 
#include<conio.h> 
#include<string.h> //biblioteca para trabalharcom strings em C 
 
int main() 
{ 
char nome[50]="Joao da Silva",aluno[50]; 
strcpy(aluno,nome); 
printf("O nome do aluno e %s",aluno); 
getch(); 
} 
 
Ao ser executado, este programa exibirá no monitor o texto: 
O nome do aluno e Joao da Silva 
 
Função strcmp() 
 
A função strcmp() é usada para comparar lexicograficamente dois strings. Se 
as strings forem iguais, isto é, se str1 e str2 forem do mesmo comprimento e 
possuírem caracteres iguais nos elementos de mesmo índice, strcmp() retornará 
zero. 
Se str1 for lexicograficamente maior do que str2, a função strcmp() retornará 
um valor maior do que zero. Se str2 for lexicograficamente maior do que str1, a 
função strcmp() retornará um valor menor do que zero. 
 
 
Exemplo 
 
#include<stdio.h> 
#include<conio.h> 
#include<string.h> //biblioteca para trabalhar com strings em C 
 
int main() { 
 
char nome1[30],nome2[30]; 
printf("Digite o primeiro nome: "); 
gets(nome1); 
printf("Digite o segundo nome: "); 
gets(nome2); 
printf ("\nO numero de caracteres de %s eh %d", nome1, strlen(nome1)); 
printf ("\nO numero de caracteres de %s eh %d", nome2, strlen(nome2)); 
 
if(strcmp(nome1,nome2)== 0) 
printf("\n%s e igual a %s",nome1,nome2); 
else 
if(strcmp(nome1,nome2)>0) 
printf("\n%s vem depois de %s",nome1,nome2); 
else 
printf("\n%s vem depois de %s",nome2,nome1); 
getch(); 
} 
 
 
 
Após estes exemplos básicos de manipulação de caracteres e matrizes espera-se que o 
aluno seja capaz de conseguir fazer programas básicos utilizando estes recursos.

Outros materiais