Exercícios Avaliativos Memória Compartilhada

Tamanho: px
Começar a partir da página:

Download "Exercícios Avaliativos Memória Compartilhada"

Transcrição

1 1ª Avaliação Faculdades Integradas de Caratinga Sistemas Distribuídos Jacson RC Silva Exercícios Avaliativos Memória Compartilhada Uma posição de memória compartilhada é identificada por uma chave. Essa chave pode ser IPC_PRIVATE para que somente o pai e seus filhos consigam acessar, ou pode ser um número para que vários processos diferentes consigam acessar. Encontramos um problema nessa implementação: se um outro processo souber minha chave, ou se ele coincidentemente colocar minha chave, ele conseguirá acessar minha posição de memória, o que causará muitos erros. Para isso, torna-se necessário a utilização da função ftok(). Ela cria uma chave através do nome do seu programa e de um número que você passe. 1. Execute o código abaixo e descreva o que você entendeu. // armazenamento da chave int i; // para utilizarmos todos os valores possíveis // de chaves para um pathname for ( i=0 ; i<=255 ; i++ ) // syntaxe: key_t ftok ( char *pathname, char proj ) chave = ftok ( argv[0], i ); if (chave == -1) perror("erro ao criar a chave"); else printf("valor da chave: %#x\n", chave); 2. Troque o número 255 para um número maior e indique o que aconteceu Para que a chave não fique vinculada somente ao nome do seu programa ( argv[0] ), podemos utilizar um outro nome de arquivo. 3. Modifique o valor de argv[0] para outro_nome.chave. Depois, compile e execute novamente seu programa. O que aconteceu? Qual o erro informado? (obs: o perror serve para escrever na tela o erro retornado pela função de sistema chamada, no nosso caso, o ftok() ) 4. Bom, agora simplesmente crie um arquivo com o nome outro_nome.chave na pasta do seu programa e execute-o novamente. O erro aconteceu novamente? Por que?

2 Agora que já aprendemos a criar chaves, vamos aprender a criar e utilizar memórias compartilhadas. A memória compartilhada é uma posição de memória alocada pelo sistema operacional e identificada por uma ID. A função que pede ao sistema operacional para criar a chave chama-se shmget(). Esta função que será responsável por alocar uma posição de memória e retornar seu ID. Vamos criar uma posição de memória: 1. Execute o programa abaixo e dê o comando ipcs -m. Por que sua memória não apareceu? typedef struct valores; if (chave == -1) perror("erro ao criar a chave"); exit(1); if (mem_id == -1) perror("erro ao criar memoria");exit(2); 2. Será que ela não foi criada? Bom, mudando um pouco de pau pra cavaco, para um outro programa utilizar essa memória criada, ele tem que utilizar a mesma chave e a mesma função do programa que acabamos de fazer, ou seja, seu início deve ser idêntico ao que fizemos. Para garantir que a posição de memória é do seu programa, ou seja, que já não existia na memória uma outra posição com a chave que você utilizou, temos que adicionar a diretiva IPC_EXCL. Faça isso e execute novamente seu programa, basta alterar IPC_CREAT por IPC_CREAT IPC_EXCL. Execute novamente seu programa. Qual o erro apresentado? O erro File Exists quando relacionado a memória, significa que essa posição já existe. 3. Bom, já que vimos que ela existe, vamos agora trabalhar com sua permissão. Vamos dar permissão ao dono (usuário que criou) de leitura e escrita. Faça os passos: remova a memória com o comando: ipcrm -m ID_QUE_SEU_PROGRAMA_ESCREVEU Adicione o include: #include <sys/stat.h> Modifique

3 de: IPC_CREAT IPC_EXCL para: IPC_CREAT IPC_EXCL S_IRUSR S_IWUSR Execute novamente o programa e verifique a memória criada com o comando ipcs 3. Agora, encontre e sua memória dentre os segmentos listados pelo ipcs e responda: qual a relação entre a sua chave e a memória criada? qual a relação entre a sua ID e a memória criada? qual a relação de permissão entre seu usuário e a memória criada? 4. Agora vamos escrever valores em nossa memória. Execute o programa abaixo e faça outro programa para ler essas informações e escrevê-las na tela: #include <string.h> typedef struct valores; // acesso a nossa memória valores *minhamemoria; if (chave == -1) perror("erro ao criar a chave"); exit(1); if (mem_id == -1) perror("erro ao criar memoria");exit(2); minhamemoria = (valores*) shmat(mem_id, NULL, NULL); if ( ((int) minhamemoria) == -1 ) perror("erro ao obter endereço da mem");exit(3); printf("colocando na memória o nome \"Jeiks\"\n"); strcpy( minhamemoria->nome, "Jeiks" ); printf("colocando na memória a idade 25\n"); minhamemoria->idade = 25; printf("desassociando da memória\n"); if ( shmdt( minhamemoria ) == -1 ) perror("erro no shmdt()");exit(3);

4 Agora temos que apagar a memória através de nosso programa, pois é feio sempre utilizar o ipcrm. [ ;) ] 5. Compile e execute o programa abaixo e descreva seu funcionamento. #include <string.h> typedef struct valores; if (chave == -1) perror("erro ao criar a chave"); exit(1); if (mem_id == -1) perror("erro ao criar memoria");exit(2); // syntaxe: // int shmctl(int shmid, int cmd, struct shmid_ds *buf); if ( shmctl( mem_id, IPC_RMID, NULL) == -1 ) perror("erro ao destruir a memória"); exit(3); printf("memória removida\n"); Como vocês puderam notar, podemos ter vários programas diferentes: um para criar a memória; outro para colocar os valores; outro para ler os valores; e outro para remover a memória. A implementação é bem livre para o usuário, para assim ele conseguir utilizar esse sistema de memórias compartilhadas à vontade. 6. Como último exercício de memória compartilhada, crie um semáforo para garantir o acesso a memória como seção crítica. Para isso, faça: crie um semáforo; antes de entrar na seção crítica, chame a função shm_wait(); após utilizar a seção crítica, chame a função shm_post().

5 As filas de mensagens seguem os mesmos conceitos da memória compartilhada. Com esses conceitos, obtenha o arquivo fila_mensagens.zip, compile e execute os arquivos que ele contém e descreva como utilizar uma fila de mensagens.

tutorial. man fork man pthread_create man pthread_join man wait man sleep

tutorial. man fork man pthread_create man pthread_join man wait man sleep Abaixo, você encontrá dicas para lhe ajudar a fazer o 1º trabalho de SOI, que está descrito na página do curso. Lembrando que essas dicas visam apenas o auxilio nas partes mais problemáticas do trabalho

Leia mais

Memória partilhada em Unix SysV

Memória partilhada em Unix SysV Memória partilhada em Unix SysV A forma mais geral de comunicação entre processos é através de memória partilhada. segmento de memoria partilhada Processo A Processo B p q Criação de um segmento de memória

Leia mais

Comunicação Inter-Processo em Unix. Pipes FIFO (Named Pipes) Pipes

Comunicação Inter-Processo em Unix. Pipes FIFO (Named Pipes) Pipes Comunicação Inter-Processo em Unix Pipes FIFO (Named Pipes) 1 Pipes 2 1! Comunicação entre pai e filho Ao chamar um fork(), processos pai e filho deixam de compartilhar memória Como fazer então para que

Leia mais

Capítulo 6: Arquivos

Capítulo 6: Arquivos Capítulo 6: Arquivos Waldemar Celes e Roberto Ierusalimschy 29 de Fevereiro de 2012 1 Funções de entrada e saída em arquivos Nos capítulos anteriores, desenvolvemos programas que capturam seus dados de

Leia mais

INF 1620 P3-29/06/04 Questão 1 Nome:

INF 1620 P3-29/06/04 Questão 1 Nome: INF 1620 P3-29/06/04 Questão 1 Considere um arquivo texto que descreve um conjunto de retângulos e círculos. Cada linha do arquivo contém a descrição de uma figura. O primeiro caractere da linha indica

Leia mais

Estruturas de Dados. Módulo 17 - Busca. 2/6/2005 (c) Dept. Informática - PUC-Rio 1

Estruturas de Dados. Módulo 17 - Busca. 2/6/2005 (c) Dept. Informática - PUC-Rio 1 Estruturas de Dados Módulo 17 - Busca 2/6/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004)

Leia mais

AULA 14 ESTRUTURA DE DADOS

AULA 14 ESTRUTURA DE DADOS AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri Matriz Uma matriz bidimensional é um conjunto de elementos (ou tabela) composta por m linhas e n colunas. Matriz Uma

Leia mais

Capítulo 06: Arquivos

Capítulo 06: Arquivos Capítulo 06: Arquivos INF1004 e INF1005 Programação 1 Pontifícia Universidade Católica Departamento de Informática Funções de entrada e saída em arquivos Motivação: quando um programa precisa processar

Leia mais

Variável Composta Homogênea Unidimensional e Multidimensional - ARRAY

Variável Composta Homogênea Unidimensional e Multidimensional - ARRAY Variável Composta Homogênea Unidimensional e Multidimensional - ARRAY 1. Introdução Agora que já estudamos as estruturas de controle (sequencial, condicional e de repetição) estudaremos as variáveis compostas

Leia mais

Aula 9 Oficina de Programação Matrizes. Profa. Elaine Faria UFU

Aula 9 Oficina de Programação Matrizes. Profa. Elaine Faria UFU Aula 9 Oficina de Programação Matrizes Profa. Elaine Faria UFU - 26 Variáveis Compostas Homogêneas O que uma variável composta homogênea? - Conjunto de variáveis do mesmo tipo - É chamada de forma geral

Leia mais

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

Alocaçã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 mais

Trabalho Linguagem e Programação de Compiladores

Trabalho Linguagem e Programação de Compiladores Trabalho Linguagem e Programação de Compiladores Responda as questões. Os exercícios deverão ser desenvolvidos utilizando as estruturas apresentadas em aula e adequadas para cada problema. Forma de entrega:

Leia mais

Alocação Dinâmica de Memória

Alocação Dinâmica de Memória Alocação Dinâmica de Memória Luiz Chaimowicz, Raquel O. Prates, Pedro O.S. Vaz de Melo Algoritmos e Estruturas de Dados II DCC UFMG Alocação Estática x Dinâmica C: dois tipos de alocação de memória: Estática

Leia mais

Vetores e Strings. 4. Funções Básicas para manipulação de Strings. A função gets() lê uma string do teclado. Sua forma geral é:

Vetores e Strings. 4. Funções Básicas para manipulação de Strings. A função gets() lê uma string do teclado. Sua forma geral é: 4. Funções Básicas para manipulação de Strings - gets A função gets() lê uma string do teclado. Sua forma geral é: gets (nome_da_string); 187 - gets (continuação) Exemplo: Vetores e Strings 188 #include

Leia mais

BLOGS. Blogs AMBIENTE VIRTUAL DE APRENDIZAGEM TUTORIAL DO. Autor(es) Scarlat Pâmela Silva

BLOGS. Blogs AMBIENTE VIRTUAL DE APRENDIZAGEM TUTORIAL DO. Autor(es) Scarlat Pâmela Silva TUTORIAL DO BLOGS AMBIENTE VIRTUAL DE APRENDIZAGEM Blogs Autor(es) Scarlat Pâmela Silva 1 1. Blogs. 2. Tipos de Blogs 3. Como criar um Blog 4. Como editar e gerenciar um Blog 5. Como criar uma postagem

Leia mais

INF 1620 P1-04/10/03 Questão 1 Nome:

INF 1620 P1-04/10/03 Questão 1 Nome: INF 1620 P1-04/10/03 Questão 1 a) Implemente uma função para calcular as raízes de uma equação do segundo grau do tipo ax 2 +bx+c=0. O protótipo dessa função deve ser: void raizes (float a, float b, float

Leia mais

Módulo 5 Vetores e Alocação Dinâmica

Mó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 mais

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

Linguagem C: Ponteiros - Alocação Dinâmica Prof. Paulo R. S. L. Coelho [email protected] 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

Anexo 1 Processos UNIX Anexo 2 Pipes UNIX Anexo 3 IPC UNIX ANEXOS

Anexo 1 Processos UNIX Anexo 2 Pipes UNIX Anexo 3 IPC UNIX ANEXOS Anexo 1 Processos UNIX Anexo 2 Pipes UNIX Anexo 3 IPC UNIX ANEXOS ANEXO 1 PROCESSOS NO UNIX Processos são o coração do sistema UNIX. A grande maioria é gerada a partir da chamada de sistema fork. Quando

Leia mais

Trabalho 2 Matriz Esparsa

Trabalho 2 Matriz Esparsa Trabalho 2 Matriz Esparsa SCC-502 Algoritmos e Estruturas de Dados 1 M. Cristina/Jorge 1 Introdução O trabalho deverá ser feito individualmente e submetido para o sistema SSP (Sistema de Submissão de Programas),

Leia mais

Linguagem e Técnicas de Programação

Linguagem e Técnicas de Programação Linguagem C Função Prof. Edwar Saliba Júnior Fevereiro de 2011 Unidade 07 Função 1 Conceitos As técnicas de programação dizem que, sempre que possível, evite códigos extensos, separando o mesmo em funções,

Leia mais

P2 Programação II Departamento de Informática/PUC-Rio

P2 Programação II Departamento de Informática/PUC-Rio P2 Programação II 2012.2 Departamento de Informática/PUC-Rio Aluno: Matrícula: Turma: 1. A prova é sem consulta e sem perguntas. A interpretação do enunciado faz parte da prova. 2. A prova deve ser completamente

Leia mais

Lista Encadeada (Linked List)

Lista Encadeada (Linked List) Lista Encadeada (Linked List) As listas ou listas encadeadas são a estrutura de dados mais simples concebível excetuando-se naturalmente os arrays. Listas encadeadas nada mais são que uma seqüência de

Leia mais

Tipos Abstratos de Dados

Tipos Abstratos de Dados Tipos Abstratos de Dados Prof. Rui Jorge Tramontin Jr. UDESC - Rui J. Tramontin Jr. 1 Índice Introdução Definição de Tipos Abstratos de Dados Exemplos de TADs Implementação de TADs Implementação em C Exemplo

Leia mais

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

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 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 mais

BCC202 - Estrutura de Dados I

BCC202 - 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 mais

Sistemas Operacionais e Introdução à Programação. Programação com linguagem C

Sistemas Operacionais e Introdução à Programação. Programação com linguagem C Sistemas Operacionais e Introdução à Programação Programação com linguagem C 1 Variáveis na linguagem C: tipo char O tipo char representa um caractere ASCII (ocupa só 1 byte) int main(int argc, char **

Leia mais

Algoritmos e Estruturas de Dados I

Algoritmos e Estruturas de Dados I Algoritmos e Estruturas de Dados I Prof. Daniel M. Martin ([email protected]) Aula 9 (laboratório) O Labirinto Descrição do problema O problema é achar o caminho entre dois pontos de interesse

Leia mais

Estruturas de Dados. Módulo 15 - Arquivos. 2/6/2005 (c) Dept. Informática - PUC-Rio 1

Estruturas de Dados. Módulo 15 - Arquivos. 2/6/2005 (c) Dept. Informática - PUC-Rio 1 Estruturas de Dados Módulo 15 - Arquivos 2/6/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004)

Leia mais

Lista de Exercícios para P1 INF1007 (Prog2) 15/04/2013. ATENÇÃO: O material a seguir não sofreu revisão e pode conter erros.

Lista de Exercícios para P1 INF1007 (Prog2) 15/04/2013. ATENÇÃO: O material a seguir não sofreu revisão e pode conter erros. EXERCÍCIO 1: Lista de Exercícios para P1 INF1007 (Prog2) 15/04/2013 ATENÇÃO: O material a seguir não sofreu revisão e pode conter erros. Considere as informações dos candidatos inscritos em um concurso.

Leia mais

Árvores B. Prof. Márcio Bueno. / Fonte: Material da Prof a Ana Eliza Lopes Moura

Árvores B. Prof. Márcio Bueno. / Fonte: Material da Prof a Ana Eliza Lopes Moura Árvores B Prof. Márcio Bueno [email protected] / [email protected] Fonte: Material da Prof a Ana Eliza Lopes Moura Situação Problema Memória Principal Volátil e limitada Aplicações Grandes

Leia mais

1 Exercícios com ponteiros

1 Exercícios com ponteiros Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Oitava Aula Prática - 29 de outubro de 2010 O objetivo desta aula prática é exercitar ponteiros e funções. 1 Exercícios com ponteiros

Leia mais

Sistema Rodoviário Tabajara

Sistema Rodoviário Tabajara Universidade Federal do Espírito Santo Departamento de Informática Est. de Informação (INF02827) & Est. de Dados (INF01906) 2 o Trabalho Prático Período: 2008/2 Prof a Patrícia Dockhorn Costa Email: [email protected]

Leia mais

Árvores Binárias. 16/11 Representação e Implementação: Encadeada Dinâmica O TAD

Árvores Binárias. 16/11 Representação e Implementação: Encadeada Dinâmica O TAD Árvores Binárias 16/11 Representação e Implementação: Encadeada Dinâmica O TAD ED AB, encadeada dinâmica Para qualquer árvore, cada nó é do tipo info esq dir typedef int elem; typedef struct arv *Arv;

Leia mais

7. Memória partilhada e sincronização em UNIX

7. Memória partilhada e sincronização em UNIX 7. Memória partilhada e sincronização em UNIX 7.1. Memória partilhada Os sistemas Unix derivados do Unix System V, e outros compatíveis (quase todos), definem serviços que permitem partilhar entre vários

Leia mais

Tratamento de Erros. Sérgio Luiz Ruivace Cerqueira

Tratamento de Erros. Sérgio Luiz Ruivace Cerqueira Tratamento de Erros Sérgio Luiz Ruivace Cerqueira [email protected] Agenda Introdução Try, catch, finally Unchecked Exceptions Como levantar exceções Boas práticas O problema Calculadora numero1:

Leia mais

1 Exercícios com ponteiros

1 Exercícios com ponteiros Computação para Informática Funções e Ponteiros1 EXERCÍCIOS COM PONTEIROS Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Funções e ponteiros O objetivo desta aula prática

Leia mais

Manual do Professor AVA - Moodle/Unesp (versão 3.0) Grupos e agrupamentos

Manual do Professor AVA - Moodle/Unesp (versão 3.0) Grupos e agrupamentos Manual do Professor AVA - Moodle/Unesp (versão 3.0) Grupos e agrupamentos O Moodle permite trabalhar com grupos entre os alunos, não necessariamente a composição dos grupos que irão desenvolver uma atividade

Leia mais

Técnicas de Programação:

Técnicas de Programação: Técnicas de Programação: Programação Orientada a Objeto PROF. PROTÁSIO DEE-UFPB Classes e Objetos Classe É uma estrutura de dados que pode conter: Objeto Dados, e Funções. É uma instância de uma classe.

Leia mais

Instalando Servidor de Arquivos

Instalando Servidor de Arquivos Este tuto é referente a instalação e configuração do Servidor de Arquivos do Windows Server 2008 R2. ================================================== ===== Instalando Servidor de Arquivos 1. Abra o Gerenciador

Leia mais

Threads em Ambiente LINUX. Estudo e testes com a biblioteca pthreads

Threads em Ambiente LINUX. Estudo e testes com a biblioteca pthreads Universidade Federal do ABC Disciplina: BC 1518 Sistemas Operacionais (SO) Prática: Threads Atividade 3 Threads em Ambiente LINUX Objetivo Estudo e testes com a biblioteca pthreads Threads Como vimos em

Leia mais

Arquivos em C Parte 2

Arquivos em C Parte 2 Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Arquivos em C Parte 2 Profa Rosana Braga Material preparado pela profa Silvana Maria Affonso de Lara 1º semestre de

Leia mais

1. Listas sequenciais versus listas ligadas. Lista sequencial

1. Listas sequenciais versus listas ligadas. Lista sequencial Alocação Dinâmica Listas Ligadas 1. Listas sequenciais versus listas ligadas Lista sequencial Uma lista sequencial é um conjunto de elementos contíguos na memória. Um vetor é o melhor exemplo de lista

Leia mais

Fábio da Fontoura Beltrão Felipe Augusto Chies Lucas Fialho Zawacki Marcos Vinicius Cavinato Matheus de Carvalho Proença

Fábio da Fontoura Beltrão Felipe Augusto Chies Lucas Fialho Zawacki Marcos Vinicius Cavinato Matheus de Carvalho Proença C++ Fábio da Fontoura Beltrão Felipe Augusto Chies Lucas Fialho Zawacki Marcos Vinicius Cavinato Matheus de Carvalho Proença Primeiro Programa //Primeiro Programa C++ #include int main() { std::cout

Leia mais

Um processo sob UNIX ocupa uma área de memória formada basicamente por 3 partes:

Um processo sob UNIX ocupa uma área de memória formada basicamente por 3 partes: Processos O UNIX é um sistema operacional multitarefa (suporta multiprogramação). Isso significa que ele é capaz de gerenciar a execução simultânea de vários programas. O termo processo é usado para caracterizar

Leia mais

Tipos Abstratos de Dados. Estrutura de Dados

Tipos 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 mais

1ª Lista de Exercícios

1ª Lista de Exercícios Universidade Federal do Rio de Janeiro Data: 26/04/05 Disciplina: Computação I 1ª Lista de Exercícios 1) Faça um programa, em pseudo-código, que peça ao usuário que informe n números reais e então calcule

Leia mais

CURSO BÁSICO DE PROGRAMAÇÃO AULA 15. Revisão Vetores e Matrizes Trabalho

CURSO BÁSICO DE PROGRAMAÇÃO AULA 15. Revisão Vetores e Matrizes Trabalho CURSO BÁSICO DE PROGRAMAÇÃO AULA 15 Revisão Vetores e Matrizes Trabalho Definição: Introdução a Linguagem C Vetores Estrutura que permite armazenar um conjunto de dados do mesmo tipo na mesma variável;

Leia mais

Sumário. Introdução à Ciência da Computação. Ponteiros em C. Introdução. Definição. Por quê ponteiros são importantes?

Sumá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 mais

INF1007: Programação 2 8 Listas Encadeadas. (c) Dept. Informática - PUC-Rio 1

INF1007: Programação 2 8 Listas Encadeadas. (c) Dept. Informática - PUC-Rio 1 INF1007: Programação 2 8 Listas Encadeadas (c) Dept. Informática - PUC-Rio 1 Tópicos Principais Motivação Listas encadeadas Implementações recursivas Listas de tipos estruturados (c) Dept. Informática

Leia mais

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P1 17/04/2010

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P1 17/04/2010 Departamento de Informática - PUC-Rio INF 1007 Programação 2 P1 17/04/2010 Aluno: Instruções: 1) Escreva seu nome completo, matrícula e turma em todas as folhas desta prova; 2) A prova deve ser completamente

Leia mais

ponteiros INF Programação I Prof. Roberto Azevedo

ponteiros INF Programação I Prof. Roberto Azevedo ponteiros INF1005 -- Programação I -- 2016.1 Prof. Roberto Azevedo [email protected] ponteiros tópicos o que são ponteiros operadores usados com ponteiros passagem de ponteiros para funções referência

Leia mais

Universidade Estadual de Mato Grosso do Sul Ciência da Computação Algoritmos e Estruturas de Dados I (AED-I) Prof. Nilton

Universidade Estadual de Mato Grosso do Sul Ciência da Computação Algoritmos e Estruturas de Dados I (AED-I) Prof. Nilton Universidade Estadual de Mato Grosso do Sul Ciência da Computação Algoritmos e Estruturas de Dados I (AED-I) Prof. Nilton [email protected] Introdução A linguagem C foi inventada por Dennis Ritchie e

Leia mais

CAP. IX - MANIPULAÇÃO DE ARQUIVOS Generalidades sobre Arquivos. 9.2 Abertura e Fechamento de Arquivos. Operações com arquivos:

CAP. IX - MANIPULAÇÃO DE ARQUIVOS Generalidades sobre Arquivos. 9.2 Abertura e Fechamento de Arquivos. Operações com arquivos: CAP. IX - MANIPULAÇÃO DE ARQUIVOS 9.1 Generalidades sobre arquivos 9.2 Abertura e fechamento de arquivos 9.3 Arquivos textos e arquivos binários 9.4 Leitura e escrita em arquivos binários 9.5 Procura direta

Leia mais

Comunicação entre pai e filho

Comunicação entre pai e filho Comunicação entre pai e filho Ao chamar um fork(), processos pai e filho deixam de compartilhar memória Como fazer então para que o resultado de um processo possa ser recebido pelo outro? Exemplos: Processo

Leia mais

Introdução à Engenharia ENG1000

Introdução à Engenharia ENG1000 Introdução à Engenharia ENG1000 Aula 04 Introdução ao Visual Studio 2010 Prof. Augusto Baffa 1. Execute o MS-Visual Studio 2010. Experimente o caminho: Start All Programs Microsoft

Leia mais

Programação: Vetores

Programaçã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 mais

Módulo 10 Listas Encadeadas

Módulo 10 Listas Encadeadas Estruturas de Dados Módulo 10 Listas Encadeadas 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus

Leia mais

4ª Lista de Exercícios de Programação I

4ª Lista de Exercícios de Programação I 4ª Lista de Exercícios de Programação I Instrução As questões devem ser implementadas em C. 1. Faça um algoritmo que leia 10 valores inteiros armazenando-os em um vetor e depois calcule a soma dos valores

Leia mais

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

O que é um apontador em C (type pointer in C)? O que é um apontador em C (type pointer in C)? Um apontador é uma variável que contém um endereço de outra variável. int x = 10;//variável inteira iniciada com o valor 10 int *px = &x;//variável apontadora

Leia mais

Sobre o Visual C++ 2010

Sobre o Visual C++ 2010 O Visual Studio é um pacote de programas da Microsoft para desenvolvimento de software, suportando diversas linguagens como C#, C++, C, Java, Visual Basic, etc. Nesta série de tutoriais vou focar apenas

Leia mais

INF 1620 P1-14/04/07 Questão 1 Nome:

INF 1620 P1-14/04/07 Questão 1 Nome: INF 1620 P1-14/04/07 Questão 1 Considerando o critério de aprovação de uma disciplina que determina que um aluno está aprovado se a média ponderada de suas três provas for maior ou igual a 5.0, onde a

Leia mais

Universidade 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 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 mais

INF P3-23/06/07 Questão 1 Nome:

INF P3-23/06/07 Questão 1 Nome: INF 1620 - P3-23/06/07 Questão 1 Considere a implementação de listas encadeadas para armazenar inteiros dada pelo tipo abaixo: struct lista { int info; struct lista* prox; typedef struct lista Lista; Escreva

Leia mais

LP II Estrutura de Dados Estruturas Heterogêneas e Listas Lineares Estáticas. Prof. José Honorato Ferreira Nunes

LP II Estrutura de Dados Estruturas Heterogêneas e Listas Lineares Estáticas. Prof. José Honorato Ferreira Nunes LP II Estrutura de Dados Estruturas Heterogêneas e Listas Lineares Estáticas Prof. José Honorato Ferreira Nunes [email protected] Estruturas (struct) Ao manusearmos dados muitas vezes deparamos com informações

Leia mais

Lista com descritor (continuação)

Lista com descritor (continuação) Lista com descritor (continuação) Rotina para remover o eiro elemento de uma LLSECD: char removeiniciollsecd(tdescritor *l, TInfo val) { p = l->; l->=p->prox; if (l->==1) Rotina para remover o último nó

Leia mais

Volnys Bernal 1. Trabalho Chat UDP. PSI 2653 Meios Eletrônicos Interativos I

Volnys Bernal 1. Trabalho Chat UDP. PSI 2653 Meios Eletrônicos Interativos I 2007-2017 Volnys Bernal 1 Trabalho PSI 2653 Meios Eletrônicos Interativos I 2007-2017 Volnys Bernal 2 Objetivo: Desenvolvimento de um programa chat UDP (cliente e servidor) Grupo Cada grupo deve escolher

Leia mais

SCC122 - Estruturas de Dados. Lista Estática Seqüencial

SCC122 - Estruturas de Dados. Lista Estática Seqüencial SCC122 - Estruturas de Dados Lista Estática Seqüencial Lista Uma lista é uma estrutura que armazena elementos de forma alinhada, ou seja, com elementos dispostos um após o outro. Ex.: Listas de nomes,

Leia mais

Aula : Permissões de acesso a arquivos e diretórios. 2 Conceito de permissões de acesso a arquivos e diretórios

Aula : Permissões de acesso a arquivos e diretórios. 2 Conceito de permissões de acesso a arquivos e diretórios Oficina Linux / / Aula : Permissões de acesso a arquivos e diretórios Professor: Eraldo e Evandro Cantú [email protected] 1 Objetivos Expor os conceitos associados as permissões de acesso a arquivos e

Leia mais