TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 5 1 02/08/2011 Professor Leomir J. Borba-

Slides:



Advertisements
Apresentações semelhantes
Marco Antonio Montebello Júnior
Advertisements

TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ESTRUTURAS DE DADOS AVANÇADAS Aula /08/2011 Professor Leomir J. Borba-
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ESTRUTURAS DE DADOS AVANÇADAS Aula /08/2011 Professor Leomir J. Borba-
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ESTRUTURAS DE DADOS AVANÇADAS Aula /08/2011 Professor Leomir J. Borba-
TECNOLOGIA EM REDES DE COMPUTADORES Algoritmos e programação de computadores Aula /08/2011 Professor Leomir J. Borba-
03/08/2011 Professor Leomir J. Borba- –
Alocação Dinâmida de Memória
Algoritmos e Estrutura de Dados I
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 LPG-I – Variáveis Estruturadas – Vetores
LPG - I: Alocação Dinâmica de Memória - Ponteiros
AULA – Linguagem C – Vetores, Ponteiros Estruturas
UDESC - Prof. Juliano Maia
Ponteiros em Linguagem C
Ling. e Técnicas de Programação I 3º semestre Plano de Ensino 2011
Ponteiros.
Escola Secundária c/ 3º CEB da Batalha
Listas Encadeadas.
Revisão da Linguagem C.
Alocação Dinâmica de Memória Professor Mário Dantas
Aula prática 9 Alocação Dinâmica Monitoria de Introdução à Programação
Aula prática 8 Ponteiros Monitoria de Introdução à Programação
Aula prática 6 Vetores e Matrizes
Aula prática 9 Alocação Dinâmica Monitoria de Introdução à Programação
Linguagem de Programação II Parte VII
Linguagem de Programação II Parte V
Linguagem de Programação II Parte IX
Definição de Tipos Estruturas e Ponteiros
CADEIA DE CARACTERES (Strings)
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Alocação Dinâmica de Memória
Aula prática 6 Vetores e Matrizes
UNIDADE 5 ESTRUTURAS DE DADOS HOMOGÊNEAS
Professor Mário Dantas
Estruturas de Dados Aula 5: Matrizes
Estruturas de Dados Aula 9: Listas (parte 1)
Vetores e Matrizes Ameliara Freire
Estruturas de Dados Aula 2: Estruturas Estáticas 07/04/2014.
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Aula P.02 – BCC202 Revisão sobre Ponteiros Túlio Toffolo
Algoritmos e Estruturas de Dados
1 Alocação Dinâmica Quando se declara arrays o tamanho deve ser fixo e definido primeiramente –Alocação estática Pode-se alocar dinamicamente o espaço.
VARIÁVEIS COMPOSTAS HOMOGÊNEAS UNIDIMENSIONAIS (VETORES)
Algoritmos e Estruturas de Dados
Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: _01.
CES-10 INTRODUÇÃO À COMPUTAÇÃO
Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 15 Ponteiros.
Engenharia de Controle e Automação Computação Para Engenharia Semana /02/2013 Professor Leomir J. Borba- –
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula /08/2011 Professor Leomir J. Borba-
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula /08/2011 Professor Leomir J. Borba-
TECNOLOGIA EM REDES DE COMPUTADORES Algoritmos e programação de computadores Aula /08/2011 Professor Leomir J. Borba-
PROGRAMAÇÃO II – PARTE 6 Profa. Maria Augusta Constante Puget.
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula /08/2011 Professor Leomir J. Borba-
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
Ponteiros. Programação II Professora: Mai-Ly vanessa horário: ter 9h-11h; sex 11h-13h Aula 1.
Algoritmo e Estrutura de Dados I Aulas 15 – Linguagem C Alocação Dinâmica de Memória Márcia Marra
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula /08/2011 Professor Leomir J. Borba-
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula /08/2011 Professor Leomir J. Borba-
Linguagem de Programação
Programação em C Aula 9.
Arrays Outline 7.1 Introdução 7.2 Arrays 7.3 Declarando e Criando Arrays 7.4 Exemplos usando arrays 7.5 Ordenando arrays 7.6 Procurando em.
Engenharia de Controle e Automação Computação Para Engenharia Semana /08/2011 Professor Leomir J. Borba- –
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ESTRUTURAS DE DADOS AVANÇADAS Aula /08/2011 Professor Leomir J. Borba-
Funções Passagem por valor e por referência passo a passo.
Alocação Dinâmica Dilvan Moreira. Objetivos  Entender o que são e como usar:  Gerenciamento de Memória  Alocação Dinâmica em C.
Estruturas Homogêneas - Vetores
02/08/2011 Professor Leomir J. Borba- –
Transcrição da apresentação:

TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula /08/2011 Professor Leomir J. Borba- –

Agenda  Matrizes  Unidimensionais  Multidimensionais  Declaração de Vetores 2 02/08/2011 Professor Leomir J. Borba- –

Vetores  Dados Homogêneos Uma 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 3 05/08/2011 Professor Leomir J. Borba- –

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 4 05/08/2011 Professor Leomir J. Borba- –

Vetores  Inserção/Exclusão Realocação dos elementos Posição de memória não liberada Ex : int nota [ 5 ] nota [1]=9.5; nota[2]= /08/2011 Professor Leomir J. Borba- –

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] 6 05/08/2011 Professor Leomir J. Borba- –

Matriz  Funções para alocação de memória Na 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); 7 05/08/2011 Professor Leomir J. Borba- –

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. 8 05/08/2011 Professor Leomir J. Borba- –

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. 9 05/08/2011 Professor Leomir J. Borba- –

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 a indicação do novo tamanho. A realocação de memória pode resultar na troca de blocos na memória /08/2011 Professor Leomir J. Borba- –

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 /08/2011 Professor Leomir J. Borba- –

Declaração de Vetores  Ocorre da mesma forma que a declaração de uma variavel simples  Tipo 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 /08/2011 Professor Leomir J. Borba- –

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: 13 05/08/2011 Professor Leomir J. Borba- –

Matrizes e vetores Multidimensionais  A declaração de um vetor com n dimensões é realizada da seguinte maneira:  Tipo vetor[dim1] [dim2] [...] [dim n ]  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 14 05/08/2011 Professor Leomir J. Borba- –

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ções Main() { int v[10]; inic1(v) } void inic1(int s[10]) {... } 15 05/08/2011 Professor Leomir J. Borba- –

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 /08/2011 Professor Leomir J. Borba- –

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); } 17 05/08/2011 Professor Leomir J. Borba- –

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 /08/2011 Professor Leomir J. Borba- –

Passagem de Vetores para Funções 19 05/08/2011 Professor Leomir J. Borba- –

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 : 20 05/08/2011 Professor Leomir J. Borba- –

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 /08/2011 Professor Leomir J. Borba- –

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 22 05/08/2011 Professor Leomir J. Borba- –

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 23 05/08/2011 Professor Leomir J. Borba- –

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 [ ] /08/2011 Professor Leomir J. Borba- –

Bibliografia 02/08/2011 Professor Leomir J. Borba- – 25 BIBLIOGRAFIA BÁSICA 1 DAMAS, Luís. Linguagem C. 10ª Edição. São Paulo: LTC, FEOFILOFF, P. Algoritmos de Janeiro: Elsevier, MIZRAHI, Victorine Viviane. Treinamento 2ª Edição. São Paulo: Pearson Education, ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene Aparecida Veneruchi. Fundamentos da Programação de Computadores. 2ª Edição. São Paulo: Pearson Education, BIBLIOGRAFIA COMPLEMENTAR 1 DASGUPTA, Sanjoy; UMESH, Vazirani, PAPADIMITRIOU Christos, Algoritmos. 1ª Edição. São Paulo: McGraw-Hill, LAUREANO, M. Estrutura de Dados com Algoritmos e C. 1ª Edição. São Paulo: Brasport, PEREIRA, Silvio do Lago. Estruturas de Dados Fundamentais – Conceitos e Aplicações. 7ª Edição. São Paulo: Érica, SOUZA, Marco Antonio Furlan et al. Algoritmos e Lógica de Programação. São Paulo: Cengage Learning, ZIVIANI, Nívio. Projeto de Algoritmos com Implementações em Pascal e C. 3ª Edição. São Paulo: Cengage Learning, RECURSOS DIDÁTICOS 1TV/VÍDEO/DVD4 LABORATÓRIO – Software “Turbo C” ou “Dev C++” 2DATASHOW5Aula expositiva em laboratório 3RETRO-PROJETOR6Exercícios em laboratório