130 likes | 286 Views
Nivelamento de C: Vetores e Strings. 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:
E N D
Nivelamento de C:Vetores e Strings 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: • 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 • 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 • 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 1 2 1 2 3 • 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 • Faça uma função que recebe uma temperatura em ºC e retorna seu equivalente em ºF Considere: TC=TF-32 100 180
(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 • Sintaxe: tipo nome_do_vetor[N]; • Ex: float notas[30]; float teste=7; notas[0] = 4.5; notas[1] = 10; notas[2] = notas[0]; // qual valor é atribuído a elemento de índice 2? notas[3] = notas[10]; // o que acontece aqui? notas[30] = 2; // essa instrução é legal em C? // qual o valor provável de teste depois dessa instrução? • Ex: O que faz o programa abaixo? • main(){ • int v[10], j; • for (j = 0; j <= 10; j++) { • v[j] = 0; • } • } igual?
(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}; // qual o valor de idades[5]? int idades2[] = {34,53,12,20,22}; // 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!
(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];
(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) • Sintaxe: char nome_da_string[tamanho]; • Ex1: char s1[]=“Fred”; // qual o tamanho dessa string? char s2[5]; char s3[]; // ilegal, pois não declarei o tamanho da string nem inicializei • Ex2: char nome[20] = {'F','r','e','d‘,’\0’}; printf(“Nome: ”); for(i=0;i<20;i++){ printf(“%c”,nome[i]); } É opcional, caso você inicialize um valor, pois o compilador consegue deduzir char nome[20] = “Fred”; printf(“Nome: ”); for(i=0;nome[i]!=‘\0’;i++){ printf(“%c”,nome[i]); } B A C printf(“Nome: %s”,nome);
(3)Strings Função gets() • Ex: o programa abaixo copia uma string em outra #include <stdio.h> main (){ int count; char s1[100],s2[100]; printf(“Digite a primeira string: ”); gets(s1); for (count=0;s1[count];count++) s2[count]=s1[count]; s2[count]='\0'; } • 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> O scanf() não! A função gets (stdio.h) é capaz de capturar uma string com espaços em branco Qual é a condição de parada do for aqui? (vimos na aula passada!)
(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); }
(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); }
(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); }
(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(); }
(3)Strings Biblioteca string.h • Outras funções:
(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”