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

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

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

Apresentações semelhantes


Apresentação em tema: "UNIDADE 5 ESTRUTURAS DE DADOS HOMOGÊNEAS PROGRAMAÇÃO I."— Transcrição da apresentação:

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

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

3 Conjuntos de uma dimensão: Vetores Programação I 3 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.

4 Declaração de vetores Programação I 4 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.

5 Declaração de vetores Programação I 5 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).

6 Acesso aos elementos do vetor Programação I 6 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;

7 Inicialização de vetores Programação I 7 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'};

8 Exemplo de uso de Vetores Programação I 8 Imprimindo dados de um vetor #include 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; }

9 Exemplo de uso de Vetores Programação I 9 Calculando somatoria do vetor #include 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; }

10 Exemplo de uso de Vetores Programação I 10 Pesquisa em vetores #include 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); for (i=0; i<6; i++) { 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); system("pause"); return 0; }

11 Conjuntos de duas dimensões: Matrizes Programação I 11 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.

12 Declaração de matrizes Programação I 12 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.

13 Declaração de matrizes Programação I 13 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.

14 Matriz multidimensional Programação I 14 Declarando uma matriz multidimensional nome da matriz [ ] [ ]...[ ] Essa matriz possui tam 1 x tam 2 x... x tam n variáveis do tipo Cada dimensão é numerada de 0 a tam i -1

15 Acesso aos elementos da matriz Programação I 15 Para acessar um elemento da matriz, utilizamos indexação dupla, da seguinte forma: nome_da_matriz [ ] Exemplo: mat[i][j] – Para uma matriz com m linhas e n colunas, os índices usados no acesso aos elementos devem satisfazer: 0<=i

16 Acesso aos elementos da matriz Programação I 16 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 =

17 Inserindo dados em uma Matriz Programação I 17 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]); }

18 Exibindo dados de uma Matriz Programação I 18 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"); }

19 Exemplo de uso de matrizes Programação I 19 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

20 Strings (Cadeias de caracteres) Programação I 20 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.

21 Declarando uma cadeia de caracteres Programação I 21 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];

22 Inicializando Strings Programação I 22 O vetor de caracteres pode ser inicializado de duas maneiras distintas: 1. 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'}; 2. usando uma constante do tipo cadeia de caracteres; neste caso, o compilador acrescenta o caracter nulo automaticamente. Ex: char str[11]="alo mundo";

23 Lendo Strings Programação I 23 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’).

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

25 Lendo Strings Programação I 25 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’).

26 Lendo Strings Programação I 26 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);

27 Lendo Strings Programação I 27 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.

28 Lendo Strings Programação I 28 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]);

29 Escrevendo Strings Programação I 29 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);

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

31 Funções básicas para Strings Programação I 31 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

32 Funções básicas para Strings Programação I 32 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

33 Exemplos de uso das funções básicas Programação I 33 strlen #include 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; }

34 Exemplos de uso das funções básicas Programação I 34 strcpy #include 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; }

35 Exemplos de uso das funções básicas Programação I 35 strcmp #include 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; }

36 Exemplos de uso das funções básicas Programação I 36 strcat #include 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); }

37 Strings (Cadeia de caracteres) Programação I 37 Vetor de caracteres terminado pelo caracter '\0'. Exemplo: #include 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; }


Carregar ppt "UNIDADE 5 ESTRUTURAS DE DADOS HOMOGÊNEAS PROGRAMAÇÃO I."

Apresentações semelhantes


Anúncios Google