Introdução à Computação
|
|
- Leonardo Weber Pinhal
- 7 Há anos
- Visualizações:
Transcrição
1 Introdução à Computação Linguagem C Professor: André de Carvalho Aula de hoje Introdução Tipos compostos Tipo enumeração Conclusão Tipos compostos A Linguagem C permite criar tipos de dados definíveis pelo usuário Tipo enumeração Estrutura (ou registro): coleção de variáveis referenciadas por um nome Também chamado agregado ou registro Fornece uma forma conveniente de agrupar informações Definição de forma um modelo que pode ser usado para criar variáveis de s Tipo de dado (struct) Formado por um conjunto de componentes individuais (campo, elemento ou membro) Não precisam ser do mesmo tipo Geralmente, os elementos de uma são logicamente relacionados Ex.: Dados de cada empregado de uma empresa Nome Número Função Salário Admissão Joao 324 operario Pedro 15 engenheiro Criação de novas s Definição de um novo tipo Define campos da Nome de cada campo Tipo de dado de cada campo Define um modelo para todas as variáveis que sejam do novo tipo, mas não aloca espaço para elas Declaração de variáveis do novo tipo Permite armazenar valores do tipo definido 1
2 Definição de um novo tipo struct nome { declaração-de-campos ; A declaração de um campo é semelhante à declaração de variável struct reg_emp { char nome [30]; int numero; char funcao [20]; int salario; char admissao[20]; x, y; Definição de um novo tipo Nome do tipo é opcional se variáveis não forem declaradas posteriormente struct { char nome [30]; int numero; x, y; struct alunos { char nome [30]; int numero; x, y;... Struct alunos z; Se apenas uma variável vai ser utilizada, não é necessário dar um nome ao tipo Declaração de variáveis do tipo Ex.: reg_emp emp; struct { char nome [30]; char rua[40]; char cidade[20]; char estado[2] unsigned long int cep; endereco; É uma boa prática de programação dar um nome ao tipo emp nome funcao numero salario admissao A variável emp aparece da seguinte forma na memória Nome Número Função Salário Admissão 30 bytes 4 bytes 20 bytes 2 bytes 20 bytes Atribuição Uma vez declarada uma variável de um tipo, é possível referenciar toda a, usando apenas nome da variável Ex.: x = emp; Seleção de campo Campos específicos da, podem ser referenciados usando operador. Ex.: y = emp.nome; Operador. retorna um valor 2
3 Exemplo #include <stdio.h> void main(void){ struct { int a; char b; x, y; x.a = 10; y = x; /* atribui uma a outra */ printf("%d", y.a); Inicialização de uma variável do tipo Basta atribuir valores aos seus componentes Ex.: emp.nome = Wilson ; emp.salario = 1200; emp.funcao = porteiro ; emp.admissao = ; emp.numero = 31; Inicialização de uma variável do tipo Pode ser feita na declaração da variável Inicializadores devem ser fornecidos na ordem em que os respectivos campos aparecem na definição da Ex.: static reg_emp emp = { Asdrubal, 98, servente, 500, ; Outras formas de inicializar variáveis do tipo : struct regemp emp = {0 Inicializa todos os membros da com o valor 0 Membros que são ponteiros são inicializados com o valor NULL Membros que são arrays têm todos os elementos inicializados com o valor 0 Outras formas de inicializar variáveis do tipo Se existirem menos inicializadores que o número de membros, os demais são inicializados com o valor 0 Ponteiros com NULL Mais inicializadores que os membros leva a erros Podem também ser inicializadas atribuindo uma variável do mesmo tipo Vetores de s Uso mais comum de s Ex.: struct reg_emp registros[100]; Cria 100 conjuntos de variáveis organizadas conforme definido em reg_emp Para acessar uma específica, usar indexar o vetor Ex.: printf ( %d, registros[3].salario); 3
4 Passagem de um elemento de uma variável para uma função, passa apenas o valor desse elemento Alterações realizadas na função não afetam elemento original Para passar endereço, usar & Exceção: se o elemento for um vetor Neste caso, o endereço é que é passado Exemplo struct pessoa{ char sexo; int idade; float peso; char nome[20]; joao; func (joao.sexo); /* valor */ func (joao.idade ); /* valor */ func (joao.peso ); /* valor */ func (joao.nome ); /* endereco */ func (joao.nome[2]); /* valor */ func (&joao.peso ); /* endereco */ Estruturas inteiras podem ser passadas como argumentos para funções Tipo do argumento deve coincidir com tipo do parâmetro Mudanças feitas no conteúdo da dentro da função não mudam conteúdo da original Mudança por valor #include <stdio.h> struct struct_type { /* Define um tipo de */ int a, b; char ch; ; void f1(struct struct_type parm); void main(void){ struct struct_type arg; arg.a = 1000; f1(arg); Observação O tipo do argumento TEM que coincidir com o tipo do parâmetro Não é suficiente que os tipos sejam semelhantes (tenham os mesmos campos) Da mesma forma que permite ponteiros para outros tipos de variáveis, C permite ponteiros para s Algumas peculiaridades devem ser consideradas Exemplo: struct endereco *apont_end 4
5 Ponteiros para s Variável que armazena dados dos é geralmente declarada como ponteiro para s Menor e mais facilmente manipulada Permite passagem por referência (endereço) Declaração de uma variável do tipo ponteiro para só aloca espaço para o ponteiro Deve ser alocado espaço para os campos da Ex. emp_ptr Seja o tipo reg_emp definida anteriormente: reg_emp *emp_ptr; reg_emp emp; emp_ptr = &emp; emp nome funcao numero salario admissao Ponteiros para s Como referenciar campos de uma usando ponteiros? *emp_ptr.salario Desejado: (*emp_ptr).salario Produzido: *(emp_ptr.salario)». tem precedência maior que *» Emp_ptr.salario não é o endereço do campo salário Linguagem C define o operador especial -> para este caso emp_ptr->salario Alocação de memória Mecanismos para alocação de memória para variáveis em C Alocação estática Alocação automática Alocação de memória Alocação de memória Alocação estática Ex.: static int x; Declaração de variáveis locais com comportamento global Variáveis são associadas a posições fixas de memória Cada vez que a função onde ela é declarada é chamada, valor na última chamada é recuperado Alocação automática Ex.: int x; Declaração de variáveis locais (dentro de uma função) Espaço para a variável é alocada na pilha do sistema 5
6 Permite durante a execução de um programa: Alocação de memória adicional quando for necessário Liberação explicita de memória dinamicamente alocada quando ela não for mais necessária Quando um programa é carregado na memória, ele ocupa apenas parte da memória disponível Na maioria dos sistemas, é possível, durante a execução do programa, alocar posições de memória não utilizadas Conjunto de posições de memória não alocadas é chamada de heap Biblioteca stdlib.h de C fornece vários funções para alocar memória nova do heap Função malloc () é a mais comum Ex.: malloc (N) Retorna um endereço de um bloco de memória formada por N bytes consecutivos Resultado pode ser armazenado em uma variável do tipo ponteiro (que depois pode ser usada como um vetor) Função malloc () Em C, ponteiros têm tipos int *ip; (ponteiro para variável do tipo int) char *cp; (ponteiro para variável do tipo char) Função malloc aloca memória para ponteiro de qualquer tipo (deve retornar um ponteiro geral ) void *vp; (ponteiro para variável de qualquer tipo) Não pode ser de-referenciada Permite funções retornarem ponteiros de qualquer tipo Função malloc () Protótipo: void *malloc (int nbytes); ANSI C faz a conversão automática entre os tipos ponteiro para void e ponteiro para um tipo específico Ex.: char *cp; cp = malloc (10); cp = (char *) malloc (10); Alocam 10 bytes novos de espaço de memória e armazenam o endereço do primeiro byte em cp Limitações de memória Embora a quantidade de memória disponível seja cada vez maior, ela é finita em tamanho Heap pode ficar sem espaço disponível Quando isso ocorre, malloc () retorna o ponteiro NULL Não foi possível alocar um bloco do tamanho requerido Bom programador checa se existe espaço Ex.: cp = malloc (10); if (cp == NULL) Error ( Falta memoria ); 6
7 Limitações de memória Função free () recebe um ponteiro alocado por malloc () e libera a memória associada a ele para o heap Ex.: free (cp); Garbage collection Libera automaticamente espaços de memória não utilizados Usado pela linguagem java (Existem alguns programas para a linguagem C) Vetores dinâmicos Vetores declarados Memória é alocada automaticamente como parte do processo de declaração Tamanho deve ser constante durante a execução do programa Vetores dinâmicos Mémória só é alocada após o uso da função malloc Tamanho pode ser ajustado Vetores dinâmicos Criação de um vetor dinâmico com n elementos Ex.: double *vet; vet = malloc (n * sizeof (double)); if (vet == NULL) Error ( Falta memoria ); Função sizeof sizeof (tipo) sizeof (nome_var) ou sizeof nome_var Estruturas dinâmicas struct reg_emp{ string nome; int numero; string funcao; int salario; string admissao; ; reg_emp *emp; emp = malloc (n * sizeof(reg_emp)); Estruturas dinâmicas Uso de apenas um tipo seria mais conveniente Apenas tipo ponteiro para registro Várias aplicações usam s apenas através de ponteiros Estruturas que se auto referenciam Permitem conectar um número não especificado de s struct lista { int valor; struct lista *prox; elem; Variável elem ocupa duas posições de memória: - Valor numérico - Um endereço de memória para uma variável do tipo lista 7
8 Cada pode ser ligada a uma outra usando o campo prox Formando uma lista de s Variável ponteiro prox contém um endereço de: Posição de memória armazenando outro elemento do tipo lista ou Valor especial NULL (definido como 0) Exemplo: struct lista a, b, c a.valor = 2; b.valor = 4; c.valor = 10; a.prox = b.prox = c.prox = NULL valor prox 2 NULL 4 NULL 10 NULL Exemplo: a.prox = &b; b.prox = &c; NULL Recuperando elementos sucessivos: a.prox -> valor; /* retorna 4 */ a.prox -> prox -> valor; /* retorna 10 */ struct lista * inicial; inicial = malloc (size (lista)); inicial->valor = 3; inicial->prox = NULL; Inicial->prox = malloc (size (lista)); inicial->prox->valor = 6; inicial->prox->prox = NULL; Inicial->prox->prox = malloc (size (lista)); inicial->prox->prox->valor = 20; inicial->prox->prox->prox = NULL; Exercício Obter o mesmo efeito da inicialização anterior utilizando um comando for Lista encadeada É como uma seqüência de carros, cada um rebocando o seguinte Existe um apontador inicial, apontando para o primeiro elemento (cabeça) da lista Cada elemento aponta para o elemento seguinte O último elemento aponta para NULL 8
9 Lista de s typedef struct pessoal { string nome; int numero; string funcao; int salario; string admissao; struct pessoal *prox; pessoal *reg_emp; Tipo enumeração C permite criar novos tipos listando os elementos que constituem seu domínio Tipo enumeração Forma sintática: enum nome-tipo { lista-de-elementos nome; Nome do novo tipo Lista de identificadores (constantes de enumeração) Tipo enumeração Exemplo enum sentidos { Norte, Leste, Sul, Oeste ; enum sentidos dir; Tipo enumeração Representação interna Valores do tipo enum são armazenadas internamente como int (inteiros) Compilador atribui números inteiros consecutivos às constantes de enumeração Começa com o valor 0 Ex.: enum sentidos {Norte, Leste, Sul, Oeste a; Tipo enumeração Representação interna É possível controlar a codificação Ex.: enum data { Semana = 7, Mes = 30, Ano = 365 num_dias; Tipo enumeração Representação interna Quando o valor de qualquer constante de enumeração não é especificado, o compilador adiciona um ao valor da constante anterior Exemplo: enum nomes_meses { janeiro = 1, fevereiro, marco, abril, maio, junho, julho, agosto, setembro, outubro, novembro, dezembro mes; 9
10 Tipo enumeração Representação interna Definição de uma enumeração é semelhante à definição de várias constantes enum nomes_meses { janeiro = 1, fevereiro, marco, abril, maio, junho, julho, agosto, setembro, outubro, novembro, dezembro mes; #define janeiro 1 #define fevereiro 2 #define marco 3... #define dezembro 12 Exercício Utilizando o tipo enumeração, escreva uma função que, dado um mês, retorna o mês anterior Se o mês dado for janeiro, retornar ele mesmo Obs.: a impressão de uma variável do tipo enumeração é uma impressão de inteiro Ex.: printf ( %d\n, jan); /* imprime o valor 0 */ Permite armazenar um valor cujo tipo muda no decorrer do programa Salva memória Semelhante a um tipo Cada campo se refere a uma mesma posição de memória Uso de campos diferentes pode afetar como o conteúdo de uma posição de memória é interpretado Seja a declaração: struct { int campoint; double campodb; string campostr; s; s.campoint s.campodb s.campostr Variável s é composta por três campos: Um do tipo int 2 bytes Um do tipo double 8 bytes Um do tipo string 8 bytes Cada campo é associado a uma posição diferente de memória Memória total = 18 bytes Seja a declaração: s.campoint union { int campoint; double campodb; string campostr; u; s.campodb s.campostr Também tem 3 campos Todos os campos da variável u compartilham a mesma posição de memória Tamanho da memória utilizada é a do maior campo Área ocupada pelo maior campo = 8 bytes Memória total = 8 bytes Operações permitidas Atribuir uma união a uma outra do mesmo tipo Receber o endereço de uma união Acessar membros da união utilizando o operador de membro e o operador ponteiro Assim como s, uniões não podem ser comparadas 10
11 Alternativa para declarar tipo união: union novo { int campoint; double campodb; string campostr; union novo u; union precisao { char letra; valor valor; nota; main () int pref; float nota; scanf ( %c, ¬a.letra); scanf ( %d, &pref); if pref == 0 printf (nota eh: %c\n, nota.letra); else{ nota.valor = nota.letra a ; printf (nota eh: %d\n, nota.valor); Exercício Notação utilizada para acessar membros de uma variável união A mesma utilizada para variáveis do tipo Inicialização Apenas com um valor do primeiro dos tipos suportados Pode: union novo campoint = {8 Não pode: union novo campodn = {3.42 Escreva um programa que cria um vetor, usando vetores de, para dados de N estudantes. Os dados devem ter: No. USP Nome Ano de entrada Notas nas disciplinas: calculo I, física I, ICC I, desenho e filosofia Escrever funções para ordenar o vetor pelo nome do estudante, pelo número usp e pela média geral Conclusão Introdução Tipos compostos Tipo enumeração Conclusão 11
Alocação Dinâmica em C
Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Alocação Dinâmica em C Profa Rosana Braga Adaptado de material preparado pela profa Silvana Maria Affonso de Lara
Leia maisUniversidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica
Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: ponteiros e alocação dinâmica Prof. Renato Pimentel 1 Ponteiros 2 Prof. Renato Pimentel 1 Ponteiros: introdução Toda a informação
Leia maisEstrutura de Dados. Aula 07 Alocação Dinâmica
Estrutura de Dados Aula 07 Alocação Dinâmica 2 ALOCAÇÃO DINÂMICA Existem três modos de reservar espaço de memória para o armazenamento de informações: 1ª - através do uso de variáveis globais (e estáticas).
Leia maisEstruturas de Dados Aulas 3 e 4: Uso da. 14/03/2011 e 16/03/2011
Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores 14/03/2011 e 16/03/2011 Uso da memória Existem 3 maneiras de reservar o espaço da memória: Variáveis globais (estáticas) Espaço existe enquanto
Leia maisLinguagem C. Ponteiros. Alex Vidigal Bastos.
Linguagem C Ponteiros Alex Vidigal Bastos alexvbh@gmail.com Ponteiros Ponteiros são variáveis que contém endereços. Estas variáveis apontam para algum determinado endereço da memória. Em geral, o ponteiro
Leia mais3. Linguagem de Programação C
Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.6. Ponteiros 3.6.1. Introdução 3.6.2. Uso
Leia maisExercí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
Exercícios 1) Crie uma função que recebe os coeficientes de uma função do 2o. grau e retorna as raízes sem usar vetor. 2) Faça um programa que acha o maior e o menor inteiro dentro de um vetor de 10 inteiros,
Leia maisEstruturas de Dados Aulas 3 e 4: Uso da memória e Vetores
Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores Uso da memória Existem 3 maneiras de reservar o espaço da memória: Variáveis globais (estáticas) Espaço existe enquanto programa estiver executando
Leia maisEstruturas de Dados. Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C
Estruturas de Dados Revisão de Ponteiros Prof. Ricardo J. G. B. Campello Sumário Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C Operações Ponteiros e Arranjos
Leia maisAula 25: Alocação Dinâmica
Aula 25: Alocação Dinâmica Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2019/1 Departamento de Computação UFOP Aulas anteriores Estruturas de memórias heterogêneas
Leia maisExercí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
Exercício Crie uma função que recebe o número de dias até um determinado evento e calcula e retorna o equivalente em meses, semanas e dias, sem usar vetor ou o conceito de vetor. Considerar que todos os
Leia maisIntrodução a Programação. Ponteiros e Strings, Alocação Dinâmica
Introdução a Programação Ponteiros e Strings, Alocação Dinâmica Tópicos da Aula Hoje aprenderemos a relação entre ponteiros e strings Ponteiros para strings X Vetores de Caracteres Vetores de ponteiros
Leia mais1. Revisão de Vetores, Ponteiros, Funções e Estruturas em C
Introdução à Computação II 5952011 1. Revisão de Vetores, Ponteiros, Funções e Estruturas em C Prof. Renato Tinós Local: Depto. de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 1.1. Revisão
Leia maisReinaldo Gomes Alocação Dinâmica
Algoritmos e Lógica de Programação Linguagem C Alocação Dinâmica i de Memória Reinaldo Gomes reinaldo@cefet-al.br Alocação Dinâmica Quando declaramos uma variável ou um arranjo, o compilador automaticamente
Leia maisTipos Abstratos de Dados. Estrutura de Dados
Tipos Abstratos de Dados Tipo Abstrato de Dados ou TAD Idéia principal: desvincular o tipo de dado (valores e operações) de sua implementação: O que o tipo faz e não como ele faz! Vantagens da desvinculação:
Leia maisEstruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.
1 Estruturas da linguagem C 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões. Identificadores Os identificadores seguem a duas regras: 1. Devem ser começados por letras
Leia maisPrincípios de Desenvolvimento de Algoritmos MAC122
Princípios de Desenvolvimento de Algoritmos MAC122 Prof. Dr. Paulo Miranda IME-USP Alocação Dinâmica de Memória Motivação: Nossos programas pré-fixavam o número de variáveis a serem utilizadas. No caso
Leia maisProgramação Estruturada
Programação Estruturada Ponteiros Parte 1 Professores Emílio Francesquini e Carla Negri Lintzmayer 2018.Q3 Centro de Matemática, Computação e Cognição Universidade Federal do ABC Ponteiros Ponteiro Ponteiros
Leia maisIntrodução a Programação. Ponteiros e Vetores, Alocação Dinâmica
Introdução a Programação Ponteiros e Vetores, Alocação Dinâmica Tópicos da Aula Hoje aprenderemos que existe uma forte relação entre ponteiros e vetores Associação entre ponteiros e vetores Ponteiros constantes
Leia maisProgramação II. Vetores e Alocação Dinâmica. Bruno Feijó Dept. de Informática, PUC-Rio
Programação II Vetores e Alocação Dinâmica Bruno Feijó Dept. de Informática, PUC-Rio Vetores (arrays) Vetor: estrutura de dados definindo um conjunto enumerável Exemplo: v = vetor de inteiros com 10 elementos
Leia maisMétodos Computacionais. Tipos Estruturados
Métodos Computacionais Tipos Estruturados Tipos Estruturados C oferece tipos primitivos que servem para representar valores simples Reais (float, double), inteiros (int), caracter (char) C oferece também
Leia maisBCC202 - Estrutura de Dados I
BCC202 - Estrutura de Dados I Aula 02: Alocação Dinâmica de Memória Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Ciência da Computação, DECOM Website: www.decom.ufop.br/reifortes
Leia mais3. Linguagem de Programação C
Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.2. Estrutura de Programas e Representação
Leia maisEstruturas Dinâmicas - Ponteiros
SSC0800 - ICC1 Teórica Introdução à Ciência da Computação I Estruturas Dinâmicas - Ponteiros Prof. Claudio Fabiano Motta Toledo: claudio@icmc.usp.br Sumário Ponteiros Ponteiros e Vetores Funções para alocação
Leia maisProfessora Jeane Melo
Professora Jeane Melo Roteiro Lista Encadeada Alocação: Estática x Dinâmica O que são Ponteiros? Ponteiros Variáveis que Armazenam Endereços de Memória Mas, toda variável não é armazenada na memória? Ponteiros
Leia maisPlano de Aula Segunda-feira Tarde 13/10/2014 Objetivo: Introduzir o conceito de alocação dinâmica na memória e registros / structs.
Instituto Federal de Santa Catarina - Câmpus Chapecó Ensino Médio Integrado em Informática - Módulo IV Unidade Curricular: Programação Estruturada Professora: Lara Popov Zambiasi Bazzi Oberderfer Plano
Leia maisModulo 12: alocação dinâmica de memória
PROGRAMAÇÃO DE COMPUTADORES V - TCC- 00.323 Modulo 12: alocação dinâmica de memória Aura - Erick aconci@ic.uff.br, erickr@id.uff.br Roteiro porque e como utilizar a alocação dinâmica funções: malloc (
Leia maisPonteiros & tabelas (cont.) K&R: Capítulo 5
Ponteiros & tabelas (cont.) K&R: Capítulo 5 Sinopse da aula de hoje Pointers in a nutshell & alocação dinâmica de memória Estruturas, funções e apontadores Estruturas auto-referenciadas Exemplo de aplicação:
Leia maisPonteiros. Baseado nos slides do Prof. Mauro.
Baseado nos slides do Prof. Mauro. A memória do computador é uma sequência de bytes, na qual endereçamos cada um sequencialmente. Como vimos, uma variável é uma região da memória que reservamos para armazenar
Leia maisINF 1007 Programação II
INF 1007 Programação II Aula 04 Alocação Dinâmica Edirlei Soares de Lima Vetores - Declaração e Inicialização Declaração de um vetor: int meu_vetor[10]; Reserva um espaço de memória
Leia maisAlgoritmos e Estruturas de dados
Algoritmos e Estruturas de dados Listas Encadeadas Prof. Dr. Fábio Rodrigues de la Rocha (Listas Encadeadas) 1 / 21 Definição: Anteriormente estudamos listas encadeadas que foram implementadas como vetores
Leia maisAlgoritmos e Programação
Algoritmos e Programação Aula 7 Vetores Profa. Marina Gomes marinagomes@unipampa.edu.br 19/05/2017 Engenharia de Computação - Unipampa 1 Motivação Problema: Leia as notas de uma turma de cinco estudantes
Leia maisTipos Básicos. Operadores de Incremento e Decremento. Operador Sizeof. Estruturas de Dados Aula 2: Estruturas Estáticas
Tipos Básicos Quantos valores distintos podemos representar com o tipo char? Estruturas de Dados Aula 2: Estruturas Estáticas 03/03/2010 Operadores de Incremento e Decremento ++ e -- Incrementa ou decrementa
Leia maisLINGUAGEM C: ALOCAÇÃO DINÂMICA
LINGUAGEM C: ALOCAÇÃO DINÂMICA Prof. André Backes DEFINIÇÃO Sempre que escrevemos um programa, é preciso reservar espaço para as informações que serão processadas. Para isso utilizamos as variáveis Uma
Leia maisComputadores Digitais 2. Prof. Rodrigo de Souza Couto
Computadores Digitais 2 Linguagens de Programação DEL-Poli/UFRJ Prof. Miguel Campista Aula de Hoje Vetores e alocação dinâmica Vetores Alocação dinâmica Vetores locais e funções ATENÇÃO Esta apresentação
Leia mais13. ALOCAÇÃO DINÂMICA DE MEMÓRIA
787878787878787878787878787878787878787878787878787878 13. ALOCAÇÃO DINÂMICA DE MEMÓRIA Sempre é necessário declarar o número de elementos do array. Mas e se ele for desconhecido? E se ele variar? Pode
Leia maisMódulo 5 Vetores e Alocação Dinâmica
Estruturas de Dados Módulo 5 Vetores e Alocação Dinâmica 1/9/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora
Leia maisEstruturas de Dados Aula 2: Estruturas Estáticas. Tipos Básicos. Quantos valores distintos podemos representar com o tipo char?
Estruturas de Dados Aula 2: Estruturas Estáticas Tipos Básicos Quantos valores distintos podemos representar com o tipo char? 1 Operadores de Incremento e Decremento ++ e -- Incrementa ou decrementa o
Leia maisponteiros INF Programação I Prof. Roberto Azevedo
ponteiros INF1005 -- Programação I -- 2016.1 Prof. Roberto Azevedo razevedo@inf.puc-rio.br ponteiros tópicos o que são ponteiros operadores usados com ponteiros passagem de ponteiros para funções referência
Leia maisEstruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011
Estruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011 Tipos Básicos Quantos valores distintos podemos representar com o tipo char? Operadores de Incremento e Decremento ++ e -- Incrementa ou decrementa
Leia maisPonteiros em C. Prof. Rui Jorge Tramontin Jr. UDESC - Rui J. Tramontin Jr. 1
Ponteiros em C Prof. Rui Jorge Tramontin Jr. UDESC - Rui J. Tramontin Jr. 1 Índice Introdução Operações sobre Ponteiros Exemplos Ponteiros e Funções Alocação Dinâmica em C UDESC - Rui J. Tramontin Jr.
Leia maisDAS5102 Fundamentos da Estrutura da Informação
Ponteiros e Funções Funções ou sub-rotinas são parcelas de código que podem ser invocadas a partir do programa principal ou até mesmo por outras sub-rotinas. Elas têm como objetivo a execução de uma tarefa
Leia maisFunções em Linguagem C Parte II
Slides inicialmente preparados pelo Prof. Dr. Claudio Fabiano Motta Toledo Funções em Linguagem C Parte II Profa. Dra. Elisa Yumi Nakagawa 1. Semestre 2017 Sumário Introdução a Ponteiros Escopo de Variáveis
Leia maisPonteiros e Alocação de Memória
Algoritmos e Estrutura de Dados I Ponteiros e Alocação de Memória Prof. Paulo Henrique Pisani fevereiro/2019 Memória Podemos entender a memória como um grande vetor de bytes devidamente endereçados: 0x1051
Leia maisPONTEIROS E LISTAS. Kalinka Regina Lucas Jaquie Castelo Branco
PONTEIROS E LISTAS Kalinka Regina Lucas Jaquie Castelo Branco kalinka@icmc.usp.br ALOCAÇÃO DINÂMICA DE MEMÓRIA Pode-se assumir que as variáveis declaradas na cláusula variável do pseudo-código do algoritmo
Leia maisPonteiros. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista
Ponteiros SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências
Leia maisMétodos Computacionais. Vetores e Matrizes Dinâmicas
Métodos Computacionais Vetores e Matrizes Dinâmicas Vetores Um programa para o cálculo da média Média m n i= = 1 n x i Variância v n i= = 1 ( x i n m) 2 A forma mais simples de estruturar um conjunto de
Leia maisAula 24 Ponteiros, vetores e structs
Programação Aula 24 Ponteiros, vetores e structs Prof. Laura Silva de Assis Engenharia de Computação 2 o Período CEFET/RJ - Centro Federal de Educação Tecnológica Celso Suckow da Fonseca UnED Petrópolis
Leia mais1/34 GESTÃO DINÂMICA DE MEMÓRIA
1/34 GESTÃO DINÂMICA DE MEMÓRIA Memória Estática 2/34 Memória Estática Exemplo #include main() { int V[300], N; do{ printf ( N =? ); scanf ( %d, &N); while ((N < 0) (N > 300); for (i = 0; i
Leia maisAlgoritmos e Programação
Algoritmos e Programação Aula 3 Introdução a Linguagem C Profa. Marina Gomes marinagomes@unipampa.edu.br 1 Aula de Hoje - Criar programas simples em C utilizando a estrutura básica; - Declarar variáveis;
Leia maisPonteiros e Tabelas. K&R: Capítulo 5
Ponteiros e Tabelas K&R: Capítulo 5 Ponteiros e Tabelas Ponteiros e endereços Ponteiros e argumentos de funções Ponteiros e tabelas Alocação dinâmica de memória Aritmética de ponteiros Tabelas de ponteiros
Leia maisPonteiros em C. Adriano Joaquim de Oliveira Cruz 21 de julho de Instituto de Matemática Departamento de Ciência da Computação UFRJ
Ponteiros em C Adriano Joaquim de Oliveira Cruz 21 de julho de 2017 Instituto de Matemática Departamento de Ciência da Computação UFRJ 1 Resumo da Seção Introdução Declaração Incrementando e Decrementando
Leia maisProgramação: Vetores
Programação de Computadores I Aula 09 Programação: Vetores José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/62 Motivação Problema Faça um programa que leia
Leia maisEstruturas de Dados. Profa. Juliana Pinheiro Campos
Estruturas de Dados Profa. Juliana Pinheiro Campos Vetores Forma mais simples de estruturar um conjunto de dados. Exemplo: int p[10]; // vetor de inteiros com 10 elementos Reserva de um espaço de memória
Leia maisPonteiro. Ponteiro. Objetivo. Compreender a definição e dominar a implementação de ponteiros em C.
Ponteiro Definição de variável apontadora Aritmética de ponteiros Ponteiros e vetores Funções e passagem por referência Structs e ponteiros Alocação dinâmica de memória Objetivo Ponteiro Ponteiro Compreender
Leia maisSumário. Introdução à Ciência da Computação. Ponteiros em C. Introdução. Definição. Por quê ponteiros são importantes?
Introdução à Ciência da Computação Ponteiros em C Prof. Ricardo J. G. B. Campello Sumário Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C Operações Ponteiros
Leia maisEstruturas. Estruturas. Estruturas. Estruturas. Estruturas. Algoritmos e Lógica de Programação. Estruturas. Uniões Enumerações CANSI
Algoritmos e Lógica de Programação Linguagem C Reinaldo Gomes reinaldo@cefet-al.br Definição: Éadefiniçãodeumnomeparaumagrupamento de variáveis, podendo ser de tipos diferentes. informações de tipos diferentes
Leia mais- Mapa de memória de um processo - Ponteiros
1 MCTA028 Programação Estruturada - Mapa de memória de um processo - Ponteiros Material preparado a partir de slides dos profs. Jesús Mena-Chalco e Fabrício Olivetti Luiz Rozante 3Q-2018 2 Alocação de
Leia maisALGORITMOS E ESRUTRA DE DADOS I. Ponteiros Passagem por Valor e Referência Alocação de Memória
ALGORITMOS E ESRUTRA DE DADOS I Ponteiros Passagem por Valor e Referência Alocação de Memória 2 Agenda Ponteiros Conceitos gerais O que é Ponteiro? Declaração de Ponteiros Operadores para Ponteiros Exemplos
Leia maisAlocação de Memória. Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná (UFPR)
Alocação de Memória Linguagem de Programação Estruturada 1 Alocação dinâmica e ponteiros Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná (UFPR) Sumario Introdução Alocação Estática
Leia maisProgramação II. Vetores e Alocação Dinâmica. Bruno Feijó Dept. de Informática, PUC-Rio
Programação II Vetores e Alocação Dinâmica Bruno Feijó Dept. de Informática, PUC-Rio Vetores (arrays) Vetor: estrutura de dados definindo um conjunto enumerável Exemplo: v = vetor de inteiros com 10 elementos
Leia maisProgramação Computacional Aula 16: Alocação Dinâmica de Memória
Programação Computacional Aula 16: Alocação Dinâmica de Memória Profa. Madeleine Medrano madeleine@icte.uftm.edu.br Definição Sempre que escrevemos um programa, é preciso reservar espaço para as informações
Leia maisAlocação Dinâmica. Introdução à Computação
Alocação Dinâmica Introdução à Computação Alocação de memória Uso da memória: uso de variáveis globais (e está>cas): O espaço reservado para uma variável global existe enquanto o programa es>ver sendo
Leia maisPonteiros e Alocação Dinâmica. Prof. Péricles Miranda
Ponteiros e Alocação Dinâmica Prof. Péricles Miranda pbcm@cin.ufpe.br Memória A memória é formada por várias células. Cada célula contém um endereço e um valor. Memória Endereço Ao declararmos uma variável
Leia maisPonteiros. Introdução
Ponteiros Introdução Conceito Um PONTEIRO ou APONTADOR é uma variável usada para armazenar um endereço de memória. Normalmente, o endereço armazenado em um PONTEIRO é a posição de uma outra variável na
Leia maisCentro Universitário Franciscano Curso de Sistemas de Informação Disciplina de algoritmos e programação II. Ponteiros
Centro Universitário Franciscano Curso de Sistemas de Informação Disciplina de algoritmos e programação II Ponteiros Profa.: Simone Ceolin Slides (Prof.Tiago Rios da Rocha) Primeiro Semestre 2011 Sumário
Leia maisIntrodução à Computação
Introdução à Computação Linguagem C Aula de hoje Introdução Vetores (revisão) Relacionamento entre vetores e ponteiros Professor: André de Carvalho Definição: coleção de valores de dados individuais com
Leia maisAula 17: Ponteiros e Alocação Dinâmica em C
Aula 17: Ponteiros e Alocação Dinâmica em C Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Ponteiros e Alocação Dinâmica Programação de Computadores
Leia maisPonteiros e alocação dinâmica de memória. Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto
Ponteiros e alocação dinâmica de memória Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto Agenda Ponteiros Ponteiros e vetores Passagem por cópia e por referência Alocação
Leia maisAlgoritmos e Estruturas de Dados. Prof. Marcelo Zorzan Profa. Melissa Zanatta
Algoritmos e Estruturas de Dados Prof. Marcelo Zorzan Profa. Melissa Zanatta Assuntos da Aula Alocação de Memória Alocação estática de memória Alocação dinâmica de memória Malloc, Calloc, Free, Realloc
Leia maisPonteiros - Parte I. Ponteiros, Ponteiros e Vetores, Algoritmo Bubble Sort, Alocação Dinâmica de Memória
Ponteiros - Parte I Ponteiros, Ponteiros e Vetores, Algoritmo Bubble Sort, Alocação Dinâmica de Memória Ponteiros Um ponteiro é uma variável que contém um endereço de memória. Esse endereço é normalmente
Leia maisIntrodução a Programação. Ponteiros para Estruturas, Outros Tipos de Estruturas
Introdução a Programação Ponteiros para Estruturas, Outros Tipos de Estruturas Tópicos da Aula Hoje aprenderemos a trabalhar com ponteiros para estruturas Ponteiros para estruturas Alocação dinâmica de
Leia maisPonteiros. Introdução e Alocação Dinâmica
Ponteiros Introdução e Alocação Dinâmica Conceito Um PONTEIRO ou APONTADOR é uma variável usada para armazenar um endereço de memória. Normalmente, o endereço armazenado em um PONTEIRO é a posição de uma
Leia mais11a. Aula Ponteiros e Vetores
11a. Aula Ponteiros e Vetores 2013.2 2 É um tipo de variável com uma ressalva...... armazena apenasendereçode memória (ou null) Se eu tiver o endereço da casa de Francisca, eu poderei visitá-la e lhe fazer
Leia maisA sintaxe para se declarar uma variável do tipo ponteiro é dada por:
Pense duas vezes e faça uma vez. Provérbio Chinês. PONTEIROS Um ponteiro nada mais é que uma variável capaz de armazenar um número hexadecimal que corresponde a um endereço de memória de outra variável.
Leia maisComputação I - C Prova /10/ Profs. Adriano Cruz e Valeria Bastos
Computação I - C Prova 2 2016-2 14/10/2016 - Profs. Adriano Cruz e Valeria Bastos Nome: DRE: Observação: Justifique todas as respostas dadas. Some nte serão aceitas respostas com justificativas. Questão
Leia mais3. Linguagem de Programação C
Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.5. Vetores 3.5.1. Vetores 3.5.2. Strings 3.5.3.
Leia mais5. Vetores e alocação dinâmica
5. Vetores e alocação dinâmica W. Celes e J. L. Rangel 5.1. Vetores A forma mais simples de estruturarmos um conjunto de dados é por meio de vetores. Como a maioria das linguagens de programação, C permite
Leia maisREVISÃO DE C. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos
REVISÃO DE C Vanessa Braganholo Estruturas de Dados e Seus Algoritmos REVISÃO DE C Ponteiros Alocação dinâmica de memória Recursão INSTITUTO DE COMPUTAÇÃO - UFF 2 PONTEIROS PONTEIROS C permite o armazenamento
Leia maisProgramação 1. Atribuição, operadores aritméticos, entrada de dados. Técnico em Eletrônica Semestre 5 02
Programação 1 Atribuição, operadores aritméticos, entrada de dados Técnico em Eletrônica Semestre 5 02 Armazenando na memória tipo de variável #include #include main() { int ano; Declaração
Leia maisIntrodução à Linguagem C
Introdução à Linguagem C Eduardo Simões de Albuquerque Instituto de Informática UFG 13/03/2006 1 História Inventada e desenvolvida por Dennis Ritchie em um DEC- PDP 11 Originária de: BCPL desenvolvida
Leia maisINF 1620 P2-14/10/05 Questão 1 Nome:
INF 1620 P2-14/10/05 Questão 1 Considere um cadastro de produtos de um estoque, com as seguintes informações para cada produto: Código de identificação do produto: representado por um valor inteiro Nome
Leia maisProgramação I Ponteiros e alocação dinâmica de memória. Prof. Carlos Alberto
Programação I Ponteiros e alocação dinâmica de memória Prof. Carlos Alberto carlos.batista@facape.br carlos36_batista@yahoo.com.br Ponteiros O ponteiro é um tipo de dado como int, char ou float; Variáveis
Leia maisEstruturas Dinâmicas - Ponteiros Parte I
SSC0101 - ICC1 Teórica Introdução à Ciência da Computação I Estruturas Dinâmicas - Ponteiros Parte I Prof. Vanderlei Bonato: vbonato@icmc.usp.br Prof. Claudio Fabiano Motta Toledo: claudio@icmc.usp.br
Leia maisProgramação Estruturada Prof. Rodrigo Hausen Organização e Gerenciamento de Memória
Programação Estruturada Prof. Rodrigo Hausen http://progest.compscinet.org Organização e Gerenciamento de Memória 1 AULA PASSADA - vetores ou arrays Declaração de um vetor (array) em C: tipo nome[tamanho];
Leia maisBruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Alocação Dinâmica de Memória
Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Alocação Dinâmica de Memória Alocação Estática x Dinâmica C: dois tipos de alocação de memória: Estática e Dinâmica Na alocação estática, o espaço
Leia maisEstruturas dinâmicas Ponteiros
SSC0102 LABORATÓRIO DE INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO I Estruturas dinâmicas Ponteiros Prof. Claudio Fabiano Motta Toledo SUMÁRIO Ponteiros e Vetores Funções para alocação de memória PONTEIROS Declaração
Leia maisProgramação Estruturada
Programação Estruturada Introdução à linguagem C Professores Emílio Francesquini e Carla Negri Lintzmayer 2018.Q3 Centro de Matemática, Computação e Cognição Universidade Federal do ABC Programação estruturada
Leia maisEstrutura de dados 1. Ponteiros
Estrutura de dados 1 Ponteiros Ponteiros Um ponteiro é um endereço de memória O valor de um ponteiro indica onde uma variável está armazenada Um ponteiro proporciona um modo de acesso a uma variável sem
Leia maisProgramação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO
Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO Introdução Criada em 1972, por Dennis Ritchie; Centro de Pesquisas da Bell Laboratories; Para utilização no S.O. UNIX; C é uma linguagem
Leia maisLinguagem C Ponteiros
Linguagem C Ponteiros Instituto Federal de Educação, Ciência e Tecnologia do Triângulo Mineiro Prof. Edwar Saliba Júnior Janeiro de 2018 Unidade 14 Linguagem C - Ponteiros 1/24 Identificadores e Endereços
Leia maisMatrizes em C. Lucas Ferrari de Oliveira Professor Adjunto. Universidade Federal do Paraná
em C Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná Uma matriz é uma coleção de variáveis do mesmo tipo que é referenciada por um nome comum; Em C todas as matrizes consistem
Leia maisLinguagem C. IF61A/IF71A - Computação 1 Prof. Leonelo Almeida. Universidade Tecnológica Federal do Paraná
Linguagem C IF61A/IF71A - Computação 1 Prof. Leonelo Almeida Universidade Tecnológica Federal do Paraná Até agora... Sabemos construir algoritmos que tenham: Variáveis Comandos sequenciais Entrada e saída
Leia maisIntrodução a Programação de Jogos
Introdução a Programação de Jogos Aula 03 Introdução a Linguagem C Edirlei Soares de Lima Estrutura de um Programa C Inclusão de bibliotecas auxiliares: #include Definição
Leia maisProgramação de Computadores II. Cap. 5 Alocação Dinâmica
Programação de Computadores II Cap. 5 Alocação Dinâmica Livro: Waldemar Celes, Renato Cerqueira, José Lucas Rangel. Introdução a Estruturas de Dados, Editora Campus (2004) Slides adaptados dos originais
Leia maisIntrodução a Programação. Tipos Estruturados de Dados
Introdução a Programação Tipos Estruturados de Dados Tópicos da Aula Hoje aprenderemos a trabalhar com tipos de dados mais complexos Tipos Primitivos x Tipos Estruturados Conceito de Tipos Estruturados
Leia maisLinguagem C: Ponteiros - Alocação Dinâmica
Prof. Paulo R. S. L. Coelho paulo@facom.ufu.br Faculdade de Computação Universidade Federal de Uberlândia GEQ007 Organização 1 Ponteiros Alocação Dinâmica de Memória 2 3 4 Organização Ponteiros Alocação
Leia mais