Baixe o app para aproveitar ainda mais
Prévia do material em texto
Introdução à Linguagem de Programação Prof. George Candeia Ciência da Computação Vetores Valores 4 5 7 6 8 2 1 9 8 3 5 6 4 7 2 4 Índices 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Um vetor, em C, é uma variável que é dividida em várias partes. Cada parte possui um valor e um índice associado. O índice funciona como o endereço ou a identificação de cada parte dessa variável. Podemos imaginar um vetor como um conjunto de valores de um mesmo tipo. Esse conjunto possui um nome que é compartilhado por todas as partes do conjunto. O que diferencia cada parte do conjunto é o seu índice! 3 Vetores Introdução Um vetor, é uma estrutura de dados composta e homogênea, pois armazena mais de um valor e todos são do mesmo tipo. O acesso a cada parte do vetor é feito de forma independente, pelo índice correspondente à posição que se deseja acessar. 4 Vetores Introdução Valores 4 5 7 6 8 2 1 9 8 3 5 6 4 7 2 4 Índices 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Cada parte do vetor ocupa uma posição consecutiva da memória do computador. 5 Vetores Introdução Valores 4 5 7 6 8 2 1 9 8 3 5 6 4 7 2 4 Índices 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Imaginemos que em um programa, precisamos armazenar as idades de 10 pessoas. Poderíamos criar 10 variáveis do tipo int ou criar um vetor de tipos inteiros. O uso do vetor deixa o código mais organizado, além de diminuir o número de declarações de variáveis. Com o vetor, apenas uma variável é declarada. Nome da variável: idades; Tipo da variável: Inteiro; 6 Vetores Exemplo Valores 18 17 25 32 28 22 19 23 27 42 Índices 0 1 2 3 4 5 6 7 8 9 A sintaxe para a declaração de um vetor em C é: tipo nome_da_variável[tamanho]; Onde, tipo: tipo dos dados que serão armazenados nas posições do vetor; nome_da_variavel: nome do vetor que será compartilhado por cada parte; tamanho: quantidade de partes (posições) do vetor. 7 Vetores Sintaxe Mas qual o tamanho máximo de posições que um vetor pode possuir? Vai depender da arquitetura da máquina e da quantidade de memória disponível. Exemplo: Um computador de 32 bits, consegue endereçar dados de até 232 bytes, ou seja, 4GBytes, mas devemos ter cuidado! Para endereçar uma quantidade tão grande de informação, precisamos ter memória RAM e/ou área de Swap para isso! Muito dificilmente, iremos precisar armazenar tanta informação em um único vetor!!! 8 Vetores Sintaxe E qual o tamanho mínimo de posições que um vetor pode possuir? Devemos sempre observar que um vetor de apenas uma posição é igual a uma variável comum, ou seja, não faz sentido declarar um vetor com menos de 2 posições! Na declaração de um vetor podemos não preencher o tamanho! Com isso forçaremos o compilador a utilizar alocação dinâmica de memória! 9 Vetores Sintaxe Voltando ao primeiro exemplo onde desejávamos declarar um vetor do tipo inteiro para armazenar as idades de 10 pessoas. Como ficaria essa declaração em C? Dessa forma, teremos um vetor com 10 posições armazenando valores do tipo int. 10 Vetores Exemplo A inicialização de vetores possui algumas particularidades. Para inicializar um vetor estático, ou seja, com uma quantidade de posições definidas em sua declaração, é necessário preencher o valor das posições desejadas obedecendo à seguinte sintaxe: Após a declaração e inicialização do vetor, sua estrutura de dados ficaria da seguinte forma: 11 Vetores Inicialização Valores 18 17 25 32 28 22 19 23 27 42 Índices 0 1 2 3 4 5 6 7 8 9 O que aconteceria se a inicialização fosse feita da seguinte forma? Como ficaria sua estrutura de dados? 12 Vetores Inicialização Valores 18 17 25 32 28 22 19 ? ? ? Índices 0 1 2 3 4 5 6 7 8 9 Um vetor pode ainda ser declarado sem nenhum tamanho, porém, se for inicializado, o compilador irá reservar a quantidade de posições utilizadas durante a inicialização. Exemplo: Após a declaração e inicialização do vetor, quantas posições ele teria? Como ficaria sua estrutura de dados? 13 Vetores Inicialização Valores 18 17 25 32 Índices 0 1 2 3 Após um vetor ter sido declarado e devidamente inicializado, como fazemos para acessar cada elemento do vetor? Os elementos do vetor podem ser acessados por seu índice! Exemplo: Como fazer para imprimir as posições 2, 3 e 6? Quais valores seriam impressos? 14 Vetores Acesso Valores 18 17 25 32 28 22 19 23 27 42 Índices 0 1 2 3 4 5 6 7 8 9 Lembrando que independente do tamanho de um vetor, ele sempre começa pela posição zero! Como ficaria um código para exibir todos os elementos do vetor? Poderíamos utilizar um laço varrendo cada elemento do vetor: 15 Vetores Acesso Observem a sua estrutura de dados e vejam como ficaria a saída: 16 Vetores Acesso Valores 18 17 25 32 28 22 19 23 27 42 Índices 0 1 2 3 4 5 6 7 8 9 Um vetor não precisa, obrigatoriamente, ser inicializado. Ele pode ser preenchido à medida que o programador julgar necessário. Para atribuir um valor a uma determinada posição do vetor, utilizamos o índice da posição desejada. Exemplo: Para atribuir o valor 50 à posição 5, o valor 30 à posição 0 e o valor 25 à posição 7 de um vetor de 8 posições: 17 Vetores Atribuição ou preenchimento Após a atribuição, como ficaria a estrutura de dados do vetor? 18 Vetores Atribuição ou preenchimento Valores 30 ? ? ? ? 50 ? 25 Índices 0 1 2 3 4 5 6 7 Outra forma de atribuição seria utilizando a função scanf(): A diferença para a forma mostrada anteriormente é que com a função scanf(), as posições 5, 0 e 7 são preenchidas com o que for digitado pelo usuário! 19 Vetores Atribuição ou preenchimento Como ficaria o código para armazenar a idade de 5 pessoas sem utilizar vetores? Seria simples aumentar o número de pessoas para 200? 20 Vetores Exemplo Como ficaria o código para armazenar a idade de 5 pessoas utilizando vetores? Seria simples aumentar o número de pessoas para 200? 21 Vetores Exemplo Uma string, em C, é um vetor de caracteres com o último caractere contendo o terminador nulo ‘\0’. Exemplo: As estruturas de dados das strings “Cantor” e “Comediante” são: “Cantor” “Comediante” 22 Strings Introdução Valores ‘C’ ‘a’ ‘n’ ‘t’ ‘o’ ‘r’ ‘\0’ Índices 0 1 2 3 4 5 6 Valores ‘C’ ‘o’ ‘m’ ‘e’ ‘d’ ‘i’ ‘a’ ‘n’ ‘t’ ‘e’ ‘\0’ Índices 0 1 2 3 4 5 6 7 8 9 10 A declaração de uma string é feita do mesmo modo que se declara um vetor, porém, o tipo de dados deverá ser char, pois se trata de um vetor de caracteres. A inicialização de uma string pode ser feita passando cada elemento do vetor ou diretamente uma string. Exemplos: 23 Strings Declaração e Inicialização Para capturar e/ou exibir uma string, podemos utilizar as funções básicas de entrada e saída de dados. Vejamos como elas se comportam com as strings: Funções de entrada: 24 Strings Captura e Exibição Para capturar e/ou exibir uma string, podemos utilizar as funções básicas de entrada e saída de dados. Vejamos como elas se comportam com as strings: Funções de saída: 25 Strings Captura e Exibição A biblioteca padrão C oferece várias funções para a manipulação de strings que permitem ao usuário: • Ler o tamanho; • Comparar; • Concatenar; • Copiar; • Converter para maiúscula e minúscula; • Entre outras... 26 Strings Funções de Manipulação int strlen(char *str) A função strlen() retorna a quantidade de caracteres encontrados antes do terminador nulo ‘\0’. Ela não considera o ‘\0’. Exemplo: 27 Strings Funções de Manipulação int strcmp(char *str1, char *str2) A função strcmp() retorna 0 se as strings forem iguais, -1 se str1for menor que str2 e 1 se str1 for maior que str2. Obs.: A função strcmp() considera a ordem alfabética de cada caractere da string para comparar o tamanho! Exemplo: Resultado: 1 28 Strings Funções de Manipulação int strcmp(char *str1, char *str2) Resultado: 0 Resultado: -1 29 Strings Funções de Manipulação char *strcpy(char *dest, char *orig) A função strcpy() copia o conteúdo da string de origem para a origem de destino. Obs.: A string que irá receber o conteúdo deverá ser grande o suficiente para armazenar o conteúdo que irá receber!!! Exemplo: str1: otorrinolaringologista str2: otorrinolaringologista 30 Strings Funções de Manipulação char *strcat(char *str1, const char *str2) A função strcat() concatena uma cópia do conteúdo de str2. Obs.: O terminador nulo ‘\0’ de str1 é substituído pelo primeiro caractere de str2 e um novo ‘\0’ é adicionado a str1! Exemplo: str1: Fulano é um comediante 31 Strings Funções de Manipulação Faça um programa em C que leia duas strings e: 1 – Exiba o tamanho das strings lidas; 2 – Compare as duas strings, informando qual é a maior; 3 – Exiba somente as vogais de cada string; 4 – Mostre o resultado da concatenação entre as strings; 5 – O programa só deverá ser encerrado se uma das strings for “sair”. 32 Strings Exercício Faça um programa em C que execute o teste de palíndromo. O programa deverá ler um texto e informar se é ou não um palíndromo. Exemplo de palíndromos: “Assam a massa” “Lá tem metal” “socorram-me, subi no onibus em marrocos” “Maria, Selena e Anele saíram” “Morram após a sopa marrom” 33 Strings Exercício
Compartilhar