PROGRAMAÇÃO E ALGORITMOS (LEI) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2016/2017

Documentos relacionados
ESTRUTURAS DE DADOS (LEI, LM, LEE) PROGRAMAÇÃO III (LTSI) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2017/2018

PROGRAMAÇÃO E ALGORITMOS (LEII) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2016/2017

1/34 GESTÃO DINÂMICA DE MEMÓRIA

Reinaldo Gomes Alocação Dinâmica

Linguagem C. Ponteiros. Alex Vidigal Bastos.

A linguagem C permite dois tipos de alocação de memória: Alocação estática e alocação dinâmica.

Sistemas Operacionais

Programação. Cap. 12 Gestão de Memória Dinâmica

LINGUAGEM C: ALOCAÇÃO DINÂMICA

PROGRAMAÇÃO E ALGORITMOS (LEI) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2016/2017

Programação Computacional Aula 16: Alocação Dinâmica de Memória

SSC304 Introdução à Programação Para Engenharias. Alocação Dinâmica. GE4 Bio

Algoritmos e Estruturas de Dados. Prof. Marcelo Zorzan Profa. Melissa Zanatta

Implementação de Planilha de Cálculos Simplificada

Introdução à Computação

Professor: Jó Ueyama Estagiário PAE: Heitor Freitas

Programação Mestrado Integrado em Engenharia Aeronáutica 1º ano, 1º semestre. T. 11 Gestão de Memória Dinâmica

Sistemas Operacionais. Gerência de Memória. Edeyson Andrade Gomes.

Algoritmos e Estruturas de dados

Análise de Algoritmos. Análise de Algoritmos. Análise de Algoritmos. Análise de Algoritmos. Análise de Algoritmos. Análise de Algoritmos

Exercício. Alocação Dinâmica. Alocação dinâmica de memória. Alocação de memória. Alocação da Memória Principal. Alocação da Memória Principal

Laboratório de Programação II

Ponteiros e Tabelas. K&R: Capitulo 5 IAED, 2012/2013

Ponteiros e Tabelas. K&R: Capitulo 5 IAED, 2012/2013

Modulo 12: alocação dinâmica de memória

CT-234. Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches

Introdução a Complexidade de Algoritmos

PROF. DR. JACQUES FACON

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica

Introdução à Ciência da Computação I. Alocação Dinâmica. Prof. Claudio Fabiano Motta Toledo

13. ALOCAÇÃO DINÂMICA DE MEMÓRIA

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE

Programação II. Vetores e Alocação Dinâmica. Bruno Feijó Dept. de Informática, PUC-Rio

Introdução. Objetivo da Ciência da Computação. Regra Geral. Nenhuma implementação excelente salva um Algoritmo inadequado.

Alocação Dinâmica. Introdução à Computação

Alocação de Memória. Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná (UFPR)

Programação II. Vetores e Alocação Dinâmica. Bruno Feijó Dept. de Informática, PUC-Rio

16/10/2017. Banco de Dados. Gerenciamento de Arquivos. Gerenciamento de Arquivos Sistema Gerenciador de Banco de Dados Modelos de Dados

Ponteiros & tabelas (cont.) K&R: Capítulo 5

Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos 2007.

Linguagem C Apontadores. Endereços e apontadores Passagem de parâmetros para funções Apontadores e vectores Memória dinâmica

Fontes Bibliográficas. Estruturas de Dados Aula 14: Recursão. Introdução. Introdução (cont.)

Alocação Estática e Dinâmica. Prof. M.Sc. Mariella Berger

Introdução. Objetivo da Ciência da Computação. Regra Geral. Problema Algoritmo Implementação. Projeto e Análise de. Algoritmo 3

Estudando complexidade de algoritmos

AULA 6. Conceitos. Melhores momentos. Conceitos. Conceitos. Conceitos. Conceitos

Linguagem C: Ponteiros - Alocação Dinâmica

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Aula 24 Ponteiros, vetores e structs

Aula 25: Alocação Dinâmica

A Inferência Estatística é um conjunto de técnicas que objetiva estudar a população através de evidências fornecidas por uma amostra.

Introdução a Programação. Ponteiros e Vetores, Alocação Dinâmica

Fundamentos de Programação

Cap. 4 - Estimação por Intervalo

MC-102 Aula 19 Ponteiros II

Alocação Dinâmica em C

Estrutura de Dados. Aula 07 Alocação Dinâmica

Programação de Computadores II

INF1007: Programação 2. 2 Alocação Dinâmica. 17/02/2014 (c) Dept. Informática - PUC-Rio 1

Laboratório de Introdução à Ciência da Computação I

Whats: PROGRESSÃO GEOMÉTRICA

Análise e Síntese de Algoritmos. Revisão CLRS, Cap. 1-3

Gerência de Redes Turma : V

Programação de Computadores II. Cap. 5 Alocação Dinâmica

Ponteiros - Parte I. Ponteiros, Ponteiros e Vetores, Algoritmo Bubble Sort, Alocação Dinâmica de Memória

Alocação Dinâmica de Memória. Programação II

Alocação Dinâmica em C

Alocação dinâmica de Memória

Programação de Computadores II

Introdução à Computação

Programação I Ponteiros e alocação dinâmica de memória. Prof. Carlos Alberto

Teste de Software. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1º semestre de 2016

Estruturas de Dados. Profa. Juliana Pinheiro Campos

Organização de Arquivos

PONTEIROS E LISTAS. Kalinka Regina Lucas Jaquie Castelo Branco

Busca binária. Busca em arquivos. Busca binária. Busca binária. Ordenação e busca em arquivos

Princípios de Desenvolvimento de Algoritmos MAC122

Tabelas de Dispersão (hash tabels)

Ponteiros e Alocação de Memória

O termo "linear" significa que todas as funções definidas no modelo matemático que descreve o problema devem ser lineares, isto é, se f( x1,x2

5. ANÁLISE DE SISTEMAS DA CONFIABILIADE DE SISTEMAS SÉRIE-PARALELO

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P4 07/12/2010

Gerenciamento de Arquivos Sistema Gerenciador de Banco de Dados Modelos de Dados. Banco de Dados

Sumário. 2 Índice Remissivo 19

Aula 17: Ponteiros e Alocação Dinâmica em C

O que é um apontador em C (type pointer in C)?

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica

08/10/2018. Banco de Dados. Gerenciamento de Arquivos. Gerenciamento de Arquivos Sistema Gerenciador de Banco de Dados Modelos de Dados

Faculdade Campo Limpo Paulista Mestrado em Ciência da Computação Complexidade de Algoritmos Avaliação 2

CARACTERIZAÇÃO DO CONJUNTO EQUILIBRADOR PARA GRAFOS COM GAP NULO

RADIOATIVIDADE- TEORIA PARTE I

CAPÍTULO 6 - ESTIMAÇÃO E TESTES DE HIPÓTESES

Linguagem Computacional. Estruturas de Controle: Estruturas de Decisão ou de Seleção. Prof. Dr. Adriano Cansian Prof. Dr. Leandro Alves Neves

Estruturas de Dados Aulas 3 e 4: Uso da. 14/03/2011 e 16/03/2011

Exercícios. Alocação Dinâmica. Alocação dinâmica de memória. Alocação de memória. Alocação da Memória Principal. Alocação da Memória Principal

ALOCAÇÃO DINÂMICA DE MEMORIA Lista 10. A linguagem C/C++ possui recursos para alocação dinâmica de memoria.

Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Alocação Dinâmica de Memória

Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores

Transcrição:

PROGRAMAÇÃO E ALGORITMOS (LEI) Uiversidade da Beira Iterior, Departameto de Iformática Hugo Pedro Proeça, 2016/2017

Resumo Alocação de Memória Estática Diãmica malloc calloc realloc free Exercícios

Gestão de Memória Ao cotrário de outras liguages de programação, o C dispoibiliza um cojuto de fuções de baixo ível para a gestão de recursos (memória). Ausêcia de GarbageCollector (Java) Processo que admiistra os recursos utilizados por um programa. Caso eles ão estejam a ser utilizados liberta-os automáticamete. Esta característica aumeta a resposabilidade do programador. Resposável pela eficiete gestão de recursos Optimização de recursos, evitado-se a ecessidade de um processo (exigete em termos computacioais) em permaete execução.

Gestão de Memória Regra pricipal Todos os recursos explícitamete alocados durate a execução de um programa devem ser explicitamete libertados.

Alocação de Recursos Cosidere o seguite exercício: Implemete um programa em liguagem C que receba úmeros iterior e mostre o écra a maior sequêcia de valores positivos recebidos. O programa deverá termiar ao ser itroduzido o valor 0. Problemas: Quatos úmeros vai ser ecessário receber? Qual a quatidade de memória ecessária para os receber?

Alocação de Recursos Uma primeira abordagem será a alocação estática de recursos, por vezes referida como em tempo de compilação : O programador (o código-fote) estima um valor que julga suficiete e pede a respectiva alocação. A alocação acotece o mometo em que o programa começa a execução (o caso da fução mai), ou o iício do processo de execução da fução. #iclude <stdio.h> it mai(){ it v[10000]; (...)

Alocação de Recursos Exemplo: #iclude <stdio.h> void fuc(){ it v[10000]; (...) it mai(){ it v[10000]; (...) Alcace Local (detro da fução em que estão defiidas)

Recursos Diâmicos No caso da alocação diãmica, os recursos são pedidos e libertados durate a execução do programa, o mometo da execução de uma dada liha. Compete ao programador defiir o mecaismo de alocação / libertação, por forma a que a admiistração dos recursos seja correcta. Alocação: malloc() calloc() realloc() Libertação free()

Apotadores O que é um apotador? Variável que cotém um edereço de memória. Exemplos: it x=5; float z=3.1415; char c; 5 3.1415 x, 4 bytes z, 8 bytes Apotador: Espaço ocupado depede do limite de edereçameto da máquia, mas tipicamete tem o mesmo tamaho de um iteiro. Exlº: it *p; A00BF:FA00C p, 4 bytes a c, 1 byte

Apotadores Um apotador cotém iformação sobre uma determiada localização e quatidade de memória: Exlos: it *a; double *b; a4:b9:f:c:6 a4:b9:f:c:6 Igual tamaho! b5:a9:4:8 b5:a9:4:8

Alocação Diâmica Fução malloc() Está defiida a biblioteca stdlib.h Iclusão de ova biblioteca #iclude <stdlib.h> Protótipo: void *malloc ( usiged it size ) Exemplos: Recebe como parãmetro de etrada o total de bytes a alocar. Retora um apotador geérico para o bloco de memóriaalocado. it *v=(it*)malloc(10 * sizeof(it)); cast Total de elemetos Espaço de 1 elemeto

Alocação Diâmica Após a alocação diâmica, os recursos são utilizados exectamete da mesma forma como os recursos estáticos. Suporta tipos compostos: typedef struct{ it bi; char ome[80]; Pessoa; Alocação de um cojuto de 100 pessoas: Pessoa *v=(pessoa *) malloc(100*sizeof(pessoa)) Acesso aos recursos v[0].ome //Nome da pessoa da primeira posição

Alocação Diâmica Fução calloc() Está defiida a biblioteca stdlib.h Semelhate à fução-base (malloc) Aloca x elemetos de um determiado tipo Iicializa os recursos alocados, com o valor 0. Protótipo: void *calloc ( usiged it umber, usiged it size ) Exemplos: Recebe como parãmetros de etrada o úmero de elemetose o espaço ocupado por 1 uidade. Retora um apotador geérico para o bloco de memóriaalocado. it *v=(it*)calloc(10,sizeof(it));

Alocação Diâmica Fução realloc() Está defiida a biblioteca stdlib.h Serve para realocar (aumetar ou dimiuir de tamaho), um bloco préviamete alocado. Protótipo: void *realloc ( void *old_pt, usiged it ew_size ) Recebe como parãmetros de etrada o apotador para o bloco préviamete alocado e o ovo tamaho do bloco. Retora um apotador geérico para o bloco de memóriaalocado. Teha-se em ateção que o bloco (1º parãmetro) teve que ser préviamete alocado de forma diãmica.

Alocação Diâmica Exemplos: it *v=(it*)malloc(10*sizeof(it)),i; //Aloca 10 iteiros; for (i=1;i<10;i++) v=(it*)realloc(v,(10+i)*sizeof(it)); Caso o bloco préviamete alocado ão teha elemetos, terá que estar a apotar para NULL. it *v=null, i=0; v=(it*)realloc(v,(i+1)*sizeof(it));

Alocação Diâmica Fução free() Sefve para libertar todos os recursos diãmicamete alocados, qulquer que teha sido a fução utilizada o alocameto. Protótipo: malloc(), calloc(), realloc() void free ( void *pt ) Recebe um apotador para o bloco de memória. Teha-se em ateção que o valor da variável ão é alterado, apeas os recursos para ode apota são libertados. Exemplo: free(v); v=null;

Exercício #iclude <stdio.h> it mai(){ it *v=null, tot=0, x; do{ pritf( valor?\ ); scaf( %d,&x); if (x!=0){ tot++; v=(it*)realloc(v,tot*sizeof(it)); v[tot-1]=x; while(x!=0); mostramaiorsequeciapositivos(v,tot);

Exercício void mostramaiorsequeciapositivos(it *v, it tot){ it pos=0,i, M=0,c=0; for (i=0;i<tot;i++){ if (v[i]>0){ c++; if (c>m){ pos=i-m; M=c; else{ c=0; for (i=pos;i<pos+m;i++) pritf( %d,v[i]);