TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 6

25
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 6 1 02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

description

TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 6. Agenda. Matrizes Unidimensionais Multidimensionais Declaração de Vetores. Vetores. Dados Homogêneos Uma estrutura de dados, que utiliza somente um tipo de dado, em sua - PowerPoint PPT Presentation

Transcript of TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 6

Page 1: TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 6

1

TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

LINGUAGEM DE PROGRAMAÇÃO I

Aula 6

02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 2: TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 6

2

AgendaMatrizes

UnidimensionaisMultidimensionaisDeclaração de Vetores

02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 3: TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 6

Vetores

Dados HomogêneosUma estrutura de dados, que utiliza somente um tipo de dado, em sua Definição é conhecida como dados homogêneos. Variáveis compostas homogêneas correspondem a posições de memória, identificadas por um mesmo nome, individualizado por índices e cujo conteúdo é composto do mesmo tipo. Sendo os vetores (também conhecidos como estruturas de dados unidimensionais) e as matrizes (estruturas de dados bidimensionais) os representantes dos dados homogêneos

305/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 4: TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 6

Vetores

Vetor - O vetor é uma estrutura de dados linear que necessita de somente um índice para que seus elementos sejam endereçados.

Usado para armazenar lista de valores do mesmo tipo. Cada célula armazena somente um valor de dados do vetor

tipo. Cada célula tem seu próprio endereço ou indice. Características principais

Alocação estática, Estrutura homogênea, alocação seqüencial

405/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 5: TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 6

Vetores Inserção/Exclusão

Realocação dos elementosPosição de memória não liberadaEx : int nota [ 5 ]nota [1]=9.5; nota[2]=7.4 .........

505/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 6: TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 6

Matriz Uma matriz é um arranjo bidimensional ou multidimensional de alocação

estática e seqüencial. A matriz é uma estrutura de dados que necessita de um índice para referenciar a linha e outro para referenciar a coluna para que seus elementos sejam endereçados.

Ex. Char letras[3][6]

605/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 7: TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 6

Matriz

Funções para alocação de memóriaNa linguagem C, a alocação dinâmica de memória pode ser realizada com apenas quatro chamadas a funções:

void * malloc(int qty_bytes_alloc);void * calloc(int qty, int size);void * realloc(void * pointer, int new_size);free( void * pointer);

705/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 8: TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 6

Uso de Memória em C Funções para alocação de memória

É a função malloc que realiza a alocação de memória. Deve-se informar para a função a quantidade de bytes para alocação. A função irá retornar, se existir memória suifciente, um endereço que deve ser colocado em uma variável do tipo ponteiro.Como a função retorna um ponteiro para o tipo void, deve-se utilizar o typecast, transformando este endereço para o tipo de ponteiro desejado.

805/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 9: TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 6

Uso de Memória em C Funções para alocação de memória

calloc - Em vez de se alocar uma quantidade de bytes através da função malloc, pode-se usar a função calloc e especificar a quantidade de bloco de um determinado tamanho. Funcionalmente a alocação irá ocorrer de maneira idêntica. A única diferença entre o malloc e o calloc é que a última função, além de alocar o espaço, também inicializa o mesmo com zeros.

905/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 10: TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 6

Uso de Memória em C Funções para alocação de memória Função realloc

Às vezes é necessário expandir uma área alocada. Para isto deve-se usar a função realloc. Deve-se passar para ela o ponteiro retornado pelo malloc e aindicação do novo tamanho. A realocação de memória pode resultar na troca de blocos na memória.

1005/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 11: TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 6

Uso de Memória em C Funções para alocação de memória Função free - Quando não se deseja mais uma área

alocada, deve-se liberá-la através da função free. Deve ser passado para a função o endereço, que se deseja liberar, que foi devolvido quando a alocação da memória ocorreu.

1105/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 12: TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 6

Declaração de Vetores Ocorre da mesma forma que a declaração de uma variavel

simplesTipo nome_variavel[no. De elementos] OU Int notas[4];

Tipo – Tipo de dados de cada um dos elementos do vetor Nome_variavel – Indica o Nome pelo qual o vetor sera

chamado. No. De elementos – Valor constante que indica quantos

elementos tem o vetor. Um vetor pode conter elementos de qualquer tipo de dadaos,

mas os elementos são todos do mesmo tipo definido na declaração do vetor.

1205/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 13: TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 6

Declaração de Vetores Carga inicial – como as variaveis contem valores aleatorios. É possivel iniciar automaticamente todos os elementos de um

vetor : Tipo var[n] = {valor1,valor2,valor3,...valorn}; Ex. de prog. Para leitura de salarios:

1305/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 14: TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 6

Matrizes e vetores Multidimensionais A declaração de um vetor com n dimensões é realizada da

seguinte maneira: Tipo vetor[dim1] [dim2] [...] [dimn] Ex. de vetor para implementar o jogo da velha usando um

vetor de duas dimensões:

Constantes – Nome correspondente a um valor fixo (não se pode alterar ao longo da execução do programa.Const tipo simbolo = valor ou#define simbolo valor

1405/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 15: TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 6

Passagem de Vetores para Funções Usado para passagem de vários parâmetros/dados para

função – ex. função de inicialização de vetor com 10 posiçõesMain(){ int v[10]; inic1(v)}

void inic1(int s[10]){...}

1505/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 16: TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 6

Passagem de Vetores para Funções Dentro de uma função não é possível saber o tamanho do

vetor passado pelo programa, por isso a necessidade de especificar o tamanho.

Suponhamos ter a intenção de iniciar os vetores V com 10 posições e X com 20 posições com o valor zero em todas as posições, por terem dimensões diferentes seria necessário funções distintas para inicializar, uma com 10 e outra com 20

1605/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 17: TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 6

Passagem de Vetores para Funções A invocação dessas funções ficaria assim:Main(){ int v[10]; int x[20]; inic1(v); inic2(x);}

1705/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 18: TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 6

Passagem de Vetores para Funções A invocação dessas funções ficaria assim:Main(){ int v[10]; int x[20]; inic1(v); inic2(x);} As duas funções podem ser mudadas por uma única que inicie

qualquer vetor de inteiros com o valor 0 independente das dimensões, para C não interessa qual dimensão do vetor que é passado a uma função, apenas o tipo do elemento interessa.

1805/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 19: TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 6

Passagem de Vetores para Funções

1905/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 20: TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 6

Matrizes e vetores Multidimensionais A escrita de programas deve ser realizada de forma que uma

pequena alteração não provoque grandes transformações no código dos mesmos, vejamos o seguinte programa :

2005/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 21: TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 6

Matrizes e vetores Multidimensionais O programa funcionaria para um vetor de 10 elementos, se

fosse urgente usa-lo com 25 posições, seria necessario alterar todas as ocorrências do numero 10 para 25

2105/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 22: TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 6

Matrizes e vetores Multidimensionais A solução esta no uso de constantes que uma vez alteradas

propagam o novo valor para todas as ocorrências. Devem ser declaradas fora da função para serem visíveis ao

longo de todo o programa. Pode ser declarada de duas maneiras distintas:

Const tipo simbolo = valor #define simbolo valor

2205/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 23: TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 6

Matrizes e vetores Multidimensionais Constantes Diferenças entre const e #define. Uma constante definida com const existe fisicamente em uma

determinada posição de memória. Uma constante definida com #define não existe fisicamente na

memória, sendo seu valor substituido ao longo do programa na fase de pré processamento (antes da compilação)

Const faz parte das palavras reservadas da linguagem C #define é uma diretiva que indica ao pré-processador que o simbolo

que a segue vai ficar com o valor que aparece depois do simbolo, antes de compilar o pré-processdor subtitui o simbolo pelo valor definido.

Constante definida com const fica com o tipo de dado indicado na definição enquanto que se usar #define o tipo resulta da expressão que aparece no componente valor.

Como #define não faz parte da ling. C não precisa de ; no final

2305/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 24: TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 6

Matrizes e vetores Multidimensionais A Passagen de Vetores com mais de uma dimensão é realizada indicando

no cabeçalho da função obrigatoriamente o numero de elementos de cada uma das dimensões n-1 a direita, apenas a dimensão mais a esquerda pode ser omitida colocando-se um asterisco * ou apenas [ ].

2405/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 25: TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 6

25

Bibliografia

02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

BIBLIOGRAFIA BÁSICA1 DAMAS, Luís. Linguagem C. 10ª Edição. São Paulo: LTC, 2007.2 FEOFILOFF, P. Algoritmos de Janeiro: Elsevier, 2009.

3MIZRAHI, Victorine Viviane. Treinamento 2ª Edição. São Paulo: Pearson Education, 2008.

4ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene Aparecida Veneruchi. Fundamentos da Programação de Computadores. 2ª Edição. São Paulo: Pearson Education, 2007.

BIBLIOGRAFIA COMPLEMENTAR

1DASGUPTA, Sanjoy; UMESH, Vazirani, PAPADIMITRIOU Christos, Algoritmos. 1ª Edição. São Paulo: McGraw-Hill, 2009.

2LAUREANO, M. Estrutura de Dados com Algoritmos e C. 1ª Edição. São Paulo: Brasport, 2008.

3PEREIRA, Silvio do Lago. Estruturas de Dados Fundamentais – Conceitos e Aplicações. 7ª Edição. São Paulo: Érica, 2008.

4SOUZA, Marco Antonio Furlan et al. Algoritmos e Lógica de Programação. São Paulo: Cengage Learning, 2008.

5ZIVIANI, Nívio. Projeto de Algoritmos com Implementações em Pascal e C. 3ª Edição. São Paulo: Cengage Learning, 2010.

RECURSOS DIDÁTICOS

1 TV/VÍDEO/DVD 4 LABORATÓRIO – Software “Turbo C” ou “Dev C++”

2 DATASHOW 5 Aula expositiva em laboratório3 RETRO-PROJETOR 6 Exercícios em laboratório