Nivelamento de C:
Vetores e Strings
Prof. Frederico Brito Fernandes
[email protected]
CONTEÚDO
(1) Exercícios de Revisão
(2) Vetores
(3) Strings
(1) Exercícios de Revisão
Antes de prosseguir para vetores e strings...
•
Implemente o que se pede:
a)
Faça um programa que leia a altura de uma pessoa (em metros) e retorne
esse valor convertido para pés e polegadas
Considere: 1 pé = 30.48cm e 1 polegada = 2.54cm
Saída: 1.68m corresponde a 5.5 pes e 66.1 polegadas
b) Faça um programa que leia um número em segundos, e retorna o mesmo em
horas, minutos e segundos
Saída: 7322 segundos equivalem a 2 horas, 2 minutos e 2 segundos
c)
Faça um programa que leia um número e imprima uma sequência numérica.
Ex: se o número digitado foi 3:
Saída:
1
12
123
d) Faça uma função que recebe um inteiro e retorna seu fatorial
Fat(n)=n*n-1*n-2*..*1 Ex: Fat(5)=5*4*3*2*1
e)
Faça uma função que recebe uma temperatura em ºC e retorna seu
equivalente em ºF
Considere: TC = TF-32
100 180
Estrutura, Pesquisa e Ordenação de Dados
Frederico Brito Fernandes
2
(2) Vetores
Definição e declaração de vetores
• Objetivo:
– Declarar N variáveis de um mesmo tipo
– Primeiro índice: zero
– Também conhecido como arranjo
Ex: O que faz o programa abaixo?
• Sintaxe:
main(){
tipo nome_do_vetor[N];
int v[10], j;
for (j = 0; j <= 10; j++) {
v[j] = 0;
}
• Ex:
float notas[30];
float teste=7;
notas[0] = 4.5;
notas[1] = 10;
notas[2] = notas[0];
notas[3] = notas[10];
notas[30] = 2;
Estrutura, Pesquisa e Ordenação de Dados
igual?
}
// qual valor é atribuído a elemento de índice 2?
// o que acontece aqui?
// essa instrução é legal em C?
// qual o valor provável de teste depois dessa instrução?
Frederico Brito Fernandes
3
(2) Vetores
Inicializando valores
• Inicialização:
tipo nome_do_vetor[N] = {valor1,valor2,...,valorN};
– Caso o vetor tenha sido inicializado, seu tamanho (N) pode ser omitido
• Ex1:
int idades[10] = {34,53,12,20,22};
int idades2[] = {34,53,12,20,22};
// qual o valor de idades[5]?
// qual o tamanho de idades2?
for(i=0;i<10;i++){
printf(“Idade do usuario %d eh %d”,i+1,idade[i]); // cuidado com o lixo!!!
}
Solução?
Você deveria ter inicializado todos os valores!
Estrutura, Pesquisa e Ordenação de Dados
Frederico Brito Fernandes
4
(2) Vetores
Auto-avaliação
• Faça um programa que defina um vetor de 10 inteiros, com
valores já inicializados e calcule a soma dos elementos
Ex:
int vetor[10] = {1,2,3,4,5,6,7,8,9,10};
• Faça um programa que copie o vetor1 no vetor2 de forma
invertida. Depois, imprima os vetores. Defina uma constante
para o tamanho do vetor.
Ex:
#define N 10
int vetor1[N] = {1,2,3,4,5,6,7,8,9,10};
int vetor2[N];
Estrutura, Pesquisa e Ordenação de Dados
Frederico Brito Fernandes
5
(3) Strings
Definição e inicialização de strings
• Vetor de char
– Não existe o tipo pré-definido string em C
– Termina com o caractere ‘\0’
• Portanto, se você precisa de uma string com 10 caracteres, declare um vetor com 11 posições
(char)
É opcional, caso você inicialize um valor,
pois o compilador consegue deduzir
• Sintaxe:
char nome_da_string[tamanho];
• Ex1:
char s1[]=“Fred”;
char s2[5];
char s3[];
// qual o tamanho dessa string?
// ilegal, pois não declarei o tamanho da string nem inicializei
• Ex2:
char nome[20] = {'F','r','e','d‘,’\0’};
A
printf(“Nome: ”);
for(i=0;i<20;i++){
printf(“%c”,nome[i]);
}
Estrutura, Pesquisa e Ordenação de Dados
char nome[20] = “Fred”;
B
printf(“Nome: ”);
for(i=0;nome[i]!=‘\0’;i++){
printf(“%c”,nome[i]);
}
Frederico Brito Fernandes
C
printf(“Nome: %s”,nome);
6
(3) Strings
Função gets()
• Ex: o programa abaixo copia uma string em outra
#include <stdio.h>
main (){
int count;
O scanf() não!
char s1[100],s2[100];
printf(“Digite a primeira string: ”);
gets(s1);
A função gets (stdio.h) é capaz de capturar uma string com espaços em branco
for (count=0;s1[count];count++)
s2[count]=s1[count];
s2[count]='\0';
Qual é a condição de parada do for aqui?
(vimos na aula passada!)
}
• Não é permitido diretamente: (lembre-se: string não é um tipo pré-definido em C)
– Comparar duas strings
• Ex: if (s1==s2) {...}
– Atribuir uma string a outra
• Ex: s1 = s2;
• Para realizar tal tarefa, use a biblioteca <string.h>
Estrutura, Pesquisa e Ordenação de Dados
Frederico Brito Fernandes
7
(3) Strings
Biblioteca string.h
• strcpy (string_destino,string_origem)
– Objetivo: copia a string_origem para a string_destino
– Ex:
#include <stdio.h>
#include <string.h>
main ()
{
char str1[100],str2[100],str3[100];
printf ("Entre com uma string: ");
gets (str1);
strcpy (str2,str1); /* Copia str1 em str2 */
strcpy (str3,"Voce digitou a string "); /* Copia "Voce digitou a string"
em str3 */
printf ("\n\n%s%s",str3,str2);
}
Estrutura, Pesquisa e Ordenação de Dados
Frederico Brito Fernandes
8
(3) Strings
(2) Strings: biblioteca string.h
• strcat (string_destino,string_origem)
– Objetivo: A string_origem permanecerá inalterada e será anexada ao
fim da string_destino
– Ex:
#include <stdio.h>
#include <string.h>
main ()
{
char str1[100],str2[100];
printf ("Entre com uma string: ");
gets (str1);
strcpy (str2,"Voce digitou a string ");
strcat (str2,str1); /* str2 armazenara' Voce digitou astring + o conteudo
de str1 */
printf ("\n\n%s",str2);
}
Estrutura, Pesquisa e Ordenação de Dados
Frederico Brito Fernandes
9
(3) Strings
Biblioteca string.h
• strlen (string)
– Objetivo: A função strlen() retorna o comprimento da string fornecida
– Retorno: tamanho de string
• Atenção: O terminador nulo não é contado
– Ex:
#include <stdio.h>
#include <string.h>
main ()
{
int size;
char str[100];
printf ("Entre com uma string: ");
gets (str);
size=strlen (str);
printf ("\n\nA string que voce digitou tem tamanho %d",size);
}
Estrutura, Pesquisa e Ordenação de Dados
Frederico Brito Fernandes
10
(3) Strings
Biblioteca string.h
• strcmp (string1,string2)
– Objetivo: compara a string1 com a string2.
– Retorno: 0
se elas forem idênticas
valor<0
se string1 for menor que string2. Ex: “Fred” < “Ze”
valor>0
se string1 for maior que string2. Ex: “Fred” > “Bala”
– Ex:
#include <stdio.h>
#include <string.h>
main (){
int iguais;
char str[100], str2[]=“Fred”;
printf (“Digite seu nome: ");
gets (str);
iguais=strcmp (str, str2);
if (iguais==0) printf ("\n\nSeu nome é Fred");
getchar();
}
Estrutura, Pesquisa e Ordenação de Dados
Frederico Brito Fernandes
11
(3) Strings
Biblioteca string.h
• Outras funções:
Estrutura, Pesquisa e Ordenação de Dados
Frederico Brito Fernandes
12
(3) Strings
Auto-avaliação
• Faça um programa que leia do usuário duas strings: nome e
ultimoNome. Seu programa deve criar uma terceira string vazia
(nomeCompleto), que deve concatenar as duas outras strings,
lembrando de colocar um espaço em branco entre elas.
Finalmente imprima nomeCompleto na tela.
• Ex:
nome = “Frederico”
ultimoNome = “Fernandes”
Então: nomeCompleto = “Frederico Fernandes”
Estrutura, Pesquisa e Ordenação de Dados
Frederico Brito Fernandes
13
Download

Aula 2