A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

UNIDADE 5 ESTRUTURAS DE DADOS HOMOGÊNEAS

Apresentações semelhantes


Apresentação em tema: "UNIDADE 5 ESTRUTURAS DE DADOS HOMOGÊNEAS"— Transcrição da apresentação:

1 UNIDADE 5 ESTRUTURAS DE DADOS HOMOGÊNEAS
PROGRAMAÇÃO I UNIDADE 5 ESTRUTURAS DE DADOS HOMOGÊNEAS

2 Estruturas de Dados Homogêneas
Vetores Matrizes Strings Programação I

3 Conjuntos de uma dimensão: Vetores
Vetores são estruturas de dados que permitem armazenar um conjunto de valores na memória do computador. O vetor é uma fileira de variáveis de mesmo tipo que ocupa uma região contínua de memória. O vetor é uma estrutura de uma dimensão. Programação I

4 Declaração de vetores Sintaxe: A sintaxe para a declaração de um vetor é a seguinte: tipo nome[tam]; onde: tipo é o tipo dos elementos do vetor: int, float, double ... Nome é o nome identificador do vetor. As regras de nomenclatura dos nomes de vetores são as mesmas usadas na declaração de variáveis . tam é o tamanho do vetor, isto é, o número de elementos que o vetor pode armazenar. Atenção: o sistema de execução não verifica se um determinado acesso esta dentro dos limites de um vetor. Programação I

5 Declaração de vetores Exemplo: int notas[5];
A declaração acima reserva um espaço na memória para 5 inteiros. A quantidade de memória (em bytes) usada para armazenar um vetor pode ser calculada como: quantidade de memória = tamanho do tipo * tamanho do vetor No exemplo acima, a quantidade de memória utilizada pelo vetor é 10 bytes (2*5). Programação I

6 Acesso aos elementos do vetor
Cada elemento do vetor é referenciado pelo nome do vetor seguido de um índice escrito entre colchetes. O primeiro elemento do vetor tem índice 0 e o último tem índice tam-1. O índice de um vetor deve ser inteiro. Exemplo: int i = 7; float valor[10]; // declaração de vetor valor[1] = 6.645; // atribuindo valor a um // elemento do vetor valor[5] = 3.867; valor[i] = 7.645; Programação I

7 Inicialização de vetores
Sintaxe: A sintaxe para a inicialização dos elementos de um vetor é: tipo nome[tam] = {lista de valores}; onde: lista de valores é uma lista dos valores de cada elemento do vetor, separados por vírgulas. Exemplos: int dia[7] = {12,30,14,7,13,15,6}; float nota[5] = {8.4,6.9,4.5,4.6,7.2}; char vogal[5] = {'a’, ‘e’, ‘i’, ‘o’, ‘u'}; Programação I

8 Exemplo de uso de Vetores
Imprimindo dados de um vetor #include <stdio.h> #include <stdlib.h> int main (void) { int i; float v[6] = {2.3, 5.4, 1.0, 7.6, 8.8, 3.9}; printf("Dados do vetor: \n\n"); for (i=0; i<6; i++) printf("%f ", v[i]); } printf("\n\n"); system("pause"); return 0; Programação I

9 Exemplo de uso de Vetores
Calculando somatoria do vetor #include <stdio.h> #include <stdlib.h> int main (void) { int i; float soma = 0.0; //declara e inicializa a soma float v[6] = {2.3, 5.4, 1.0, 7.6, 8.8, 3.9}; // declara e inicializa o vetor printf("Dados do vetor: \n\n"); for (i=0; i<6; i++) { printf("%.2f ", v[i]); // imprime o valor armazenado no índice i do vetor soma = soma + v[i]; // calcula a soma } // fim do laço for printf("\n\nSoma=%.2f\n\n", soma); system("pause"); return 0; } Programação I

10 Exemplo de uso de Vetores
Pesquisa em vetores #include <stdio.h> #include <stdlib.h> int main (void) { int i; float valor; float v[6] = {2.3, 5.4, 1.0, 7.6, 8.8, 3.9}; printf("Vetor de dados: \n\n"); for (i=0; i<6; i++) { printf("%.2f ", v[i]); } printf("\n\nQual valor deseja pesquisar? "); scanf("%f",&valor); if (v[i]==valor){ printf("\n\tO valor %.2f foi encontrado no indice %d\n\n",valor, i); system("pause"); return 0; printf("\n\t%.2f nao foi encontrado no vetor\n\n", valor); Programação I

11 Conjuntos de duas dimensões: Matrizes
Uma matriz representa um conjunto bi-dimensional de valores; Similar a variáveis simples e vetores, matrizes devem ser declaradas para que o espaço de memória apropriado seja reservado. Como a matriz representa um conjunto bi-dimensional, devemos especificar as duas dimensões na declaração: o número de linhas e o número de colunas. Programação I

12 Declaração de matrizes
Sintaxe: A sintaxe para a declaração de uma matriz é a seguinte: tipo nome[tam1][tam2]; onde: tipo é o tipo dos elementos da matriz: int, float, ... Nome é o nome identificador da matriz. As regras de nomenclatura dos nomes são as mesmas usadas na declaração de variáveis . tam1 representa o número de linhas tam2 representa o número de colunas. Programação I

13 Declaração de matrizes
Exemplo: float mat[3][4] ; – Declara uma matriz de 3 linhas por 4 colunas (armazenamento de 12 valores do tipo float). – O nome da variável mat representa uma referência para o espaço de memória reservado. Programação I

14 Matriz multidimensional
Declarando uma matriz multidimensional <tipo> nome da matriz [<tam1>] [<tam2>] ...[<tamn>] Essa matriz possui tam1 x tam2 x ... x tamn variáveis do tipo <tipo> Cada dimensão é numerada de 0 a tami -1 Programação I

15 Acesso aos elementos da matriz
Para acessar um elemento da matriz, utilizamos indexação dupla, da seguinte forma: nome_da_matriz [<linha] [<coluna>] Exemplo: mat[i][j] – Para uma matriz com m linhas e n colunas, os índices usados no acesso aos elementos devem satisfazer: 0<=i<m e 0<=j<n – O compilador não verifica se foram utilizados valores validos para a linha e para a coluna. É responsabilidade do programador fazer essa verificação. Como é armazenada uma matriz em memória: – A memória do computador é linear. – Uma matriz declarada em C é armazenada na memória linha por linha. Programação I

16 Acesso aos elementos da matriz
2 | 3 | 1 | 9 | 4 | 7 m[i][j] = i *n + j onde n é o número de colunas. Exemplo: m[1][2] = 1*3 + 2 = 5 Programação I

17 Inserindo dados em uma Matriz
Lendo dados do teclado /*Leitura*/ for (i = 0; i < 4; i++) for (j = 0; j < 4; j++) { printf ("Matriz[%d][%d]: ", i, j); scanf ("%d", &matriz[i][j]); } Programação I

18 Exibindo dados de uma Matriz
Escrevendo uma matriz na tela /*Escrita*/ for (i = 0; i < 4; i++) { for (j = 0; j < 4; j++) printf ("%3d ", matriz[i][j]); printf ("\n"); } Programação I

19 Exemplo de uso de matrizes
printf("Digite o numero de alunos da turma: "); scanf("%d",&n); nalunos = 0; /* lê dados dos alunos*/ while (nalunos < n) { printf("\nAluno %d: \n",nalunos+1); printf("\tDigite a 1a. nota: "); scanf("%f",¬as[nalunos][0]); printf("\tDigite a 2a. nota: "); scanf("%f",¬as[nalunos][1]); printf("\tDigite a 3a. nota: "); scanf("%f",¬as[nalunos][2]); nalunos++; } /* calcula média */ for (i=0;i<n;i++) for (j=0; j<3; j++) media = media + notas[i][j]; media = media / (3*nalunos); /* exibe média calculada */ printf("\nMedia da disciplina: %.2f\n", media); system("pause"); return 0; Programação I

20 Strings (Cadeias de caracteres)
A linguagem C não possui um tipo primitivo que permita a manipulação de strings. Em C, uma string é implementada através do uso de um vetor de caracteres terminado pelo caractere nulo. O caractere nulo tem configuração binária (o seu código ASCII é 0), e é representado pela seqüência '\0' ou pela macro NULL. Programação I

21 Declarando uma cadeia de caracteres
A declaração geral para uma string é: char nome_da_string[tamanho+1]; Deve-se declarar o vetor com uma posição a mais do que o tamanho desejado para que se possa incluído o marcador ’\0’ no final da string. Exemplo: para armazenar uma cadeia de caracteres de até 10 caracteres escreve-se o comando, onde str é o nome da variável string : char str[11]; Programação I

22 Inicializando Strings
O vetor de caracteres pode ser inicializado de duas maneiras distintas: listando os caracteres um a um, e acrescentando o caractere nulo no final. Ex: char str[11]={'a','l','o',' ','m','u','n','d','o','\0'}; usando uma constante do tipo cadeia de caracteres; neste caso, o compilador acrescenta o caracter nulo automaticamente. Ex: char str[11]="alo mundo"; Programação I

23 gets (nome_da_string);
Lendo Strings A biblioteca padrão de E/S, stdio.h, fornece funções para E/S com strings. gets A função gets() lê uma string do teclado. Sua forma geral é:  gets (nome_da_string); Os caracteres digitados são transferidos para a memória após um Enter. O Enter não se torna parte do string; em seu lugar é colocado o caractere nulo (‘\0’). Programação I

24 Lendo Strings O programa abaixo demonstra o funcionamento da função gets(): #include <stdio.h> #include <stdlib.h> int main () { char nome[100]; printf ("Digite o seu nome: "); gets (nome); printf ("\n Ola %s\n\n",nome); system("pause"); return(0); } Programação I

25 scanf ("%s", nome_string);
Lendo Strings scanf() A função scanf() pode ser utilizada para ler uma cadeia de caracteres do teclado usando o especificador de formato %s. scanf ("%s", nome_string); Note que não se utiliza o & para strings, pois o nome de um vetor já é um endereço de memória (o endereço de memória do começo do vetor). O %s faz com que scanf() leia caracteres até que seja encontrado um caractere de espaço. Os caracteres lidos são colocados em um vetor de caracteres apontado pelo argumento correspondente, e o resultado tem terminação nula (‘\0’). Programação I

26 Lendo Strings Infelizmente, a leitura a partir do teclado utilizando o scanf lê somente até o primeiro espaço, ou seja, lê somente uma palavra, o que torna o seu uso desta forma um pouco restrito. Para contornar isso, pode-se utilizar a função gets, que faz a leitura até encontrar o caracter de fim de linha (enter ). gets(texto); Programação I

27 Lendo Strings Outra opção é explorar as outras possibilidades fornecidas pela função scanf. Por exemplo, a opção abaixo scanf("%[^\n]); lê uma cadeia de caracteres até encontrar um enter. Programação I

28 Lendo Strings Aqui, deparamos com outro problema: tanto o comando scanf quanto o gets podem ler mais caracteres que os existentes na string, provocando erros. A solução aqui, é utilizar uma função que tenha o mesmo comportamento do gets, mas que permita limitar a leitura a um tamanho máximo. As opções são: fgets (texto, 50, stdin); scanf("%50[^\n]); Programação I

29 printf ("%s", nome_string);
Escrevendo Strings printf() Pode-se escrever uma string na tela caracter a caracter, mas é mais simples escrever utilizando o comando printf, com o mesmo comando utilizado para leitura (%s) printf ("%s", nome_string); Programação I

30 Escrevendo Strings De forma análoga ao gets e fgets, temos o puts e fputs, que escrevem a string na tela. puts (texto); fputs (texto, stdout); Programação I

31 Funções básicas para Strings
A biblioteca string.h, fornece uma gama variada de funções para a manipulação de strings. As mais comuns são fornecidas pela maioria dos compiladores C. São elas: strlen(texto) : Retorna o número de caracteres da string. O caracter ‘\0’ não é contado. strcpy(destino, fonte) : Copia a string fonte para a string destino Programação I

32 Funções básicas para Strings
strcmp(str1, str2) : Compara duas cadeias e caracteres e retorna um valor = 0 - se str1 e str2 forem iguais < 0 - se str1 for menor que str2 > 0 - se str1 for maior que str2 strcat(destino, fonte) : Concatena a string fonte no fim da string destino Programação I

33 Exemplos de uso das funções básicas
strlen #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char nome[41]; printf("Informe um nome: "); gets(nome); printf("\n%s contem %d caracteres\n\n",nome,strlen(nome)); system("pause"); return 0; } Programação I

34 Exemplos de uso das funções básicas
strcpy #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char nome[41], aluno[41]; printf("Informe um Nome: "); gets(nome); strcpy(aluno,nome); printf("\nO nome do aluno e' %s\n\n",aluno); system("pause"); return 0; } Programação I

35 Exemplos de uso das funções básicas
strcmp #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char nome1[41], nome2[41]; printf("Informe um nome: "); gets(nome1); printf("\nInforme outro nome: "); gets(nome2); if(strcmp(nome1,nome2)==0) printf("\nOs nomes sao iguais"); else printf("\nOs nomes sao diferentes"); printf("\n\n"); system("pause"); return 0; } Programação I

36 Exemplos de uso das funções básicas
strcat #include <stdio.h> #include <stdlib.h> #include <string.h> int main () { char str1[100],str2[100]; printf ("Entre com uma string: "); gets (str1); strcpy (str2,"Voce digitou a string "); /* str2 armazenara' Voce digitou a string + o conteudo de str1 */ strcat (str2,str1); printf ("\n%s\n\n",str2); system("pause"); return(0); } Programação I

37 Strings (Cadeia de caracteres)
Vetor de caracteres terminado pelo caracter '\0'. Exemplo: #include <stdio.h> #include <stdlib.h> int main () { char str[30]; int i; printf("Digite uma cadeia de caracteres: "); scanf("%s", str); /* escreve um caracter em cada linha*/ for (i = 0; str[i] != '\0'; i++){ printf("%c\n", str[i]); } printf("\n"); system("pause"); return 0; Programação I


Carregar ppt "UNIDADE 5 ESTRUTURAS DE DADOS HOMOGÊNEAS"

Apresentações semelhantes


Anúncios Google