UNIDADE 5 ESTRUTURAS DE DADOS HOMOGÊNEAS

Slides:



Advertisements
Apresentações semelhantes
Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 5 Criado por Frederick H. Colclough, Colorado Technical University Vetores.
Advertisements

Programação em Java Prof. Maurício Braga
Laboratório de programação III Linguagem C
Marco Antonio Montebello Júnior
Construção de Algoritmos Professor: Aquiles Burlamaqui Construção de Algoritmos AULA 04 Aquiles Burlamaqui UERN
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ESTRUTURAS DE DADOS AVANÇADAS Aula /08/2011 Professor Leomir J. Borba-
03/08/2011 Professor Leomir J. Borba- –
Programação II Estruturas de Dados
Désiré NGuessan Programação II Estruturas de Dados
Programação II Estruturas de Dados
Introdução a Programação
1 Tipos definidos O programador pode definir seus próprios tipos de dados tipos complexos usados da mesma forma que os simples declaram-se variáveis utilizando-se.
LINGUAGEM C.
Adaptado de material da profa. Maria Aparecida Livi
Linguagem C LPG-I – Variáveis Estruturadas – Vetores
LPG - I: Alocação Dinâmica de Memória - Ponteiros
LPG - I: Ponteiros e Vetores/Matrizes UDESC - SBS
LPG-I: Tipos Complexos - Estruturas
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Universidade Federal do Espírito Santo Programação II Estruturas Professora: Norminda Luiza.
Linguagem C Strings.
Vetores, Matrizes e Funções
Estruturas de Dados Homogêneas Unidimensionais – Vetores e Strings
Ponteiros em Linguagem C
Estruturas de Dados Homogêneas Multidimensionais – Matrizes
Matrizes e Funções - Continuação
Fundamentos de Programação 1
Ponteiros.
VETORES, STRINGS E MATRIZES
1MF. Vectores Tipo de dado usado para representar um CONJUNTO de dados do um mesmo tipo Estrutura de dados homogénea unidimensional Ex: Ler a nota de 3.
Apontadores ou Ponteiros
Vamos agora aprender a utilizar estruturas.
O Portal do Estudante de Computação
O Portal do Estudante de Computação
APRESENTAÇÃO: GIANCARLO DE GUSMÃO GONÇALVES CURSO DE C AULA 08: Tipos Estruturados.
INTRODUÇÃ A COMPUTAÇÃO ENG. CIVIL
Vetores e Matrizes Laboratório de ICCN Marco Antonio Montebello Júnior
Introdução a Computação e Cálculo Numérico
Introdução a Computação e Cálculo Numérico
Aula prática 8 Ponteiros Monitoria de Introdução à Programação.
UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA CIVIL INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves.
Definição de Tipos Estruturas e Ponteiros
Construção de Algoritmos AULA 04
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
PROGRAMAÇÃO I PONTEIROS.
Estrutura de Dados Avançada
Seminário 1: Revisão de C
Computação Eletrônica
Programação em C++ Compiladores
Aula 3 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.
Vetores e Matrizes Ameliara Freire
Vetor Prof. Guilherme Baião S. Silva Adaptações:
By Ducheno Kelly Centro de Formação São Domingos.
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Joaquim José Hangalo  Podemos entender a memória do computador como um conjunto de células que armazenam informações.  Cada célula.
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: _01.
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: _01.
Usando vetor e matriz em java
Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 15 Ponteiros.
Profa. Maria Augusta Constante Puget
PROGRAMAÇÃO II – PARTE 6 Profa. Maria Augusta Constante Puget.
Ponteiros em C Prof. Kariston Pereira
 O que são arrays:  estruturas de dados homogêneas  coleção de elementos do mesmo tipo referenciada por um nome comum  um array pode ser imaginado.
Estruturas Homogêneas – Vetores e Matrizes
Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 15 Funções.
Linguagem de Programação
Aula Prática 6 Ponteiros Monitoria  Quando declaramos uma matriz:  tipo meuArray[tam];  O compilador aloca a matriz em uma região de memória.
Prof. Tertuliano Operadores Variáveis em C++.
FUNÇÕES Dilvan Moreira (baseado em material de Z. Liang)
Transcrição da apresentação:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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",&notas[nalunos][0]); printf("\tDigite a 2a. nota: "); scanf("%f",&notas[nalunos][1]); printf("\tDigite a 3a. nota: "); scanf("%f",&notas[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

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 00000000 (o seu código ASCII é 0), e é representado pela seqüência '\0' ou pela macro NULL. Programação I

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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