Segundo trabalho prático de implementação Sistema de reserva de assentos
|
|
|
- Amália Pinhal Carvalhal
- 8 Há anos
- Visualizações:
Transcrição
1 Segundo trabalho prático de implementação Sistema de reserva de assentos 1. Descrição do problema Computação Concorrente (MAB-117) 2016/2 Prof. Silvana Rossetto 1 DCC/IM/UFRJ 17 de novembro de 2016 Um sistema de reserva de assentos consiste em um programa que mantém informações sobre a alocação de assentos em um espaço físico ou em um meio de transporte, permitindo que usuários remotos possam ver o estado das alocações, solicitar nova alocação ou cancelar uma alocação realizada previamente pelo próprio usuário. Normalmente esse tipo de sistema é executado em um ambiente distribuído com duas aplicações distintas: uma que executa o código que gerencia as estruturas de dados usadas para manter o estado de alocação dos assentos e outra que é executada em máquinas remotas pelos usuários. Em essência, trata-se de uma aplicação concorrente com vários fluxos de execução independentes Programa principal Neste trabalho, vamos projetar e implementar uma versão simplificada desse tipo de sistema o qual executará em uma única máquina com várias threads independentes. Os assentos deverão ser representados por estruturas de dados convencionais, como vetores unidimensionais ou bidimensionais. O número de assentos deve ser passado como parâmetro no início da execução da aplicação. Os estados possíveis de um assento são: livre ou reservado. Quando um assento é reservado, ele deve guardar um identificador único do usuário que fez a reserva no mapa de assentos. O usuário remoto poderá executar as seguintes operações: 1. Visualizar o estado corrente de alocações dos assentos; 2. Selecionar um assento livre para alocação; 3. Cancelar uma reserva feita por ele anteriormente. Dois ou mais usuários não podem alocar o mesmo assento ao mesmo tempo. Se um assento já está alocado, ele não pode ser realocado para outro usuário, apenas se esse assento for liberado posteriormente pelo usuário dono da reserva. Dois ou mais usuários podem visualizar o estado das alocações ao mesmo tempo, mas apenas um usuário de cada vez pode alterar o estado de um determinado assento. Entre o instante em que um usuário visualiza o mapa de assentos e o instante seguinte em que ele solicita a alocação de um assento, pode ocorrer de outro usuário já ter alocado o assento que previamente (na visualização anterior) estava livre Arquivo de log Uma parte importante deste trabalho será a geração de um log de saída para registrar todas as operações realizadas no sistema e a implementação de um programa auxiliar para verificar se a execução ocorreu com sucesso.
2 Para isso, as threads deverão registrar cada ação realizada, juntamente com o mapa de assentos corrente, antes que outra operação altere esse mapa. Esse registro deverá ser feito em um buffer de log da aplicação usando o padrão produtor/consumidor. As threads que representam as ações dos usuários serão produtores, registrando cada operação no buffer. Uma thread adicional, com identificador 0, será a thread consumidora cuja tarefa consiste em escrever o buffer de log em um arquivo de saída, preservando a ordem de inserção dos registros no buffer de log. Cada elemento do buffer deverá ser escrito em uma linha separada do arquivo de saida. A thread principal do programa deverá inicializar as estruturas de dados e variáveis necessárias e disparar as demais threads que representarão os usuários remotos e a thread de escrita do log. Quando todas as threads de usuários remotos terminarem suas execuções e o log for completamente escrito no arquivo de saída, o programa deverá ser encerrado. Os códigos executados pelas threads (principal, de log e usuárias) poderá ser implementado na linguagem C (usando a biblioteca Pthreads) ou Java Tipos e funções que deverão ser implementadas Os seguintes tipos de dados deverão ser definidos: t Assentos: estrutura de dados para representar todos os assentos gerenciados (pode ser um vetor unidimensional ou bidimensional); t Assento: estrutura de dados para representar unicamente um assento. As threads (usuários remotos) deverão ser identificadas unicamente usando um número inteiro a partir do valor 1. A instância da estrutura de dados que representa os assentos deverá ser compartilhada entre todas as threads usuárias. Todos os assentos devem ser inicializados com estado livre (valor 0). As seguintes funções deverão ser implementadas: 1. visualizaassentos(): exibe o mapa de assentos com seus estados. Armazena no buffer de log o código da operação (1), o identificador da thread que a realizou e o mapa de assentos com seus estados lidos. 2. int alocaassentolivre(t Assento * assento, int id): escolhe, de forma randômica, um assento livre e o aloca para o usuário com identificador id. Apenas a thread de mesmo identificador id pode realizar essa alocação. O assento alocado é retornado no primeiro parâmetro (variável assento passada por referência). A função retorna 1 se um assento foi alocado e 0 caso contrário (apenas quando todos os assentos já estavam ocupados). Armazena no buffer de log o código da operação (2), o identificador da thread que a realizou, o assento selecionado e o mapa de assentos imediatamente após a alocação. Se todos os assentos já estavam alocados, o novo mapa deverá permaner igual ao anterior. 3. int alocaassentodado(t Assento assento, int id): tenta alocar o assento dado (assento) para o usuário com identificador id. Apenas a thread de mesmo identificador id pode realizar essa alocação. A função retorna 1 se o assento foi alocado e 0 caso contrário (apenas quando o assento já estava ocupado). Armazena no buffer de log o código da operação (3), o identificador da thread que a realizou, o assento selecionado e o mapa de assentos imediatamente após a alocação. Se o assento escolhido já estava alocado, o novo mapa deverá permaner igual ao anterior.
3 4. liberaassento(t Assento assento, int id): libera/desaloca o assento (assento) dado alocado pelo usuário de identificador id. Apenas a thread com esse mesmo identificador pode liberar o assento. A função retorna 1 se o assento foi desalocado com sucesso e0 caso contrário (quando o assento estava livre ou ocupado por outro usuário). Armazena no buffer de log o código da operação (4), o identificador da thread que a realizou, o assento selecionado e o mapa de assentos imediatamente após a alocação. Se o assento escolhido não estava alocado ou já estava alocado mas por outro usuário, o novo mapa deverá permaner igual ao anterior Código das threads Diferentes versões do código das threads usuárias deverão ser implementadas alterandose a ordem e o número de operações solicitadas. Os pseudocódigos abaixo ilustram essa ideia definindo três implementações distintas para o código das threads. void * thread1 (void * arg) { //salva seu identificador unico int tid = * (int*) arg; t_assento assento; //tenta alocar um assento livre alocaassentolivre(&assento, tid); pthread_exit(null); void * thread2 (void * arg) { //salva seu identificador unico int tid = * (int*) arg; t_assento assento =...//inicializa com um assento //tenta alocar um assento especifico alocaassentodado(assento, tid); pthread_exit(null); void * thread3 (void * arg) { //salva seu identificador unico int tid = * (int*) arg; t_assento assento; //tenta alocar um assento livre
4 alocaassentolivre(&assento, tid); //libera alocacao liberaassento(assento, tid); pthread_exit(null); 2. Entrada Para a execução do programa, os seguintes dados deverão ser fornecidos como entrada, nesta ordem: <nome do arquivo de log de saída> <quantidade de assentos> 3. Exemplo de arquivo de saída Considerando uma execução do programa que dispara as três threads mostradas na seção Código das threads uma única vez, podemos ter o seguinte arquivo de saída (considerando que a thread 1 executa completamente, depois a thread 2 e finalmente a thread 3 e que o número de assentos é 5): 1,1,[0,0,0,0,0] 2,1,1,[1,0,0,0,0] 1,1,[1,0,0,0,0] 1,2,[1,0,0,0,0] 3,2,4,[1,0,0,2,0] 1,2,[1,0,0,2,0] 1,3,[1,0,0,2,0] 2,3,2,[1,3,0,2,0] 1,3,[1,3,0,2,0] 4,3,2[1,0,0,2,0] O programa auxiliar que irá avaliar o log de saída e validar a execução do programa principal deverá reproduzir, de forma sequencial, a execução de cada função registrada no log e avaliar se as operações foram executadas corretamente garantindo a correta transição de estados do mapa de assentos. No formato de saída mostrado acima, o programa auxiliar deverá ler cada linha do arquivo de saída e realizar o processamento correspondente ao conteúdo da linha. A linguagem usada para implementar o programa auxiliar é de livre escolha. (Pode ser C, Java, ou linguagens de scripting como Lua, Python, etc..) Escolhida a linguagem de implementação do programa auxiliar, uma outra alternativa para gerar o arquivo de log é escrevê-lo usando a sintaxe da própria linguagem e depois apenas executá-lo. Como exemplo, considere que escolhemos a linguagem C para implementar o programa auxiliar. Nesse caso o arquivo de log acima poderia ser reescrito dessa forma:
5 int main() { int v1[] = {0,0,0,0,0; op1(1,v1); int v2[] = {1,0,0,0,0; op2(1,1,v2); int v3[] = {1,0,0,0,0; op1(1,v3); int v4[] = {1,0,0,0,0; op1(2,v4); int v5[] = {1,0,0,2,0; op3(2,4,v5); int v6[] = {1,0,0,2,0; op1(2,v6); int v7[] = {1,0,0,2,0; op1(3,v7); int v8[] = {1,3,0,2,0; op2(3,2,v8); int v9[] = {1,3,0,2,0; op1(3,v9); int v10[] = {1,0,0,2,0; op4(3,2,v10); return 0; assumindo-se que em outro arquivo.c definimos as funções chamadas (uma para cada operação permitida): #include<stdio.h> int buffer[] = {0,0,0,0,0; void op1(int tid, int vet[]) { //operação 1 //compara se o vetor passado é igual ao buffer corrente void op2(int tid, int pos, int vet[]) { //operação 2 //verifica se a operação é válida, altera o buffer //corrente de acordo com a operação solicitada e compara //o vetor passado com o buffer corrente void op3(int tid, int pos, int vet[]) { //operação 3 //... void op4(int tid, int pos, int vet[]) { //operação 4 //... Nesse novo formato, o arquivo de log pode ser executado diretamente, dado que as funções chamadas por ele estão implementadas em outro arquivo. A escolha entre essas duas alternativas colocadas é livre. O programa auxiliar deve gerar como saída uma mensagem que valida a execução do programa principal ou uma mensagem de erro apropriada indicando em qual operação ocorreu erro de. 4. Etapas do trabalho A execução do trabalho deverá ser organizada nas seguintes etapas: 1. Compreender o problema principal, pensar e esboçar uma solução concorrente; 2. Projetar as estruturas de dados e as funçoes que deverão ser implementadas; 3. Projetar e implementar o programa auxiliar que deverá avaliar o log de execução do programa principal; 4. Construir um conjunto de casos de teste para avaliação da aplicação;
6 5. Implementar a solução projetada, avaliar a corretude dos programas, refinar a implementação e refazer os testes; 6. Redigir os relatórios e documentar os códigos. 5. Artefatos que deverão ser entregues 1. Relatório: documentação do projeto da solução (esboço das estruturas de dados e lógica principal dos algoritmos implementados), testes realizados e resultados obtidos. O relatório deverá conter informações suficientes para o professor compreender a solução proposta sem precisar recorrer ao código fonte do programa. 2. Código fonte e roteiro para compilação e execução dos programas. Enviar para o [email protected] com o assunto Trabalho /2 e dentro do corpo da mensagem os nomes completos dos autores. 6. Data de entrega e critérios de avaliação O trabalho deverá ser feito em dupla e deverá ser entregue até o dia 8 de dezembro de Os seguintes itens serão avaliados com o respectivo peso: Compilação e execução correta dos dois programas: 5 pontos Relatório (incluindo projeto da solução e testes realizados): 3 pontos Modularidade, organização e documentação do código fonte, estratégias de paralelização: 2 pontos Não é permitido copiar a solução do trabalho de outros colegas ou de terceiros. Os alunos integrantes da equipe poderão ser chamados pelo professor para apresentar/explicar o trabalho.
Estrutura 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).
Modulo 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 [email protected], [email protected] Roteiro porque e como utilizar a alocação dinâmica funções: malloc (
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
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
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,
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
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
Programação Concorrente com Thread Java. Luiz Affonso Guedes Sistemas Distribuidos
Programação Concorrente com Thread Java Luiz Affonso Guedes Sistemas Distribuidos Definições Básicas Threads são sub-procesos no sistema operacional. É menos custoso gerenciar threads do que processos.
INF 1620 Estruturas de Dados Semestre Segundo Trabalho: Jogo de Caça-Palavras
INF 1620 Estruturas de Dados Semestre 08.2 Segundo Trabalho: Jogo de Caça-Palavras O jogo de caça-palavras é um passatempo que consiste em descobrir palavras escondidas entre um conjunto de letras espalhadas
Desenvolvimento de Aplicações Desktop
Desenvolvimento de Aplicações Desktop Conceitos Básicos de Programação Professor: Charles Leite O Desenvolvimento de Programas A programação consiste em indicar como o computador (hardware) deve trabalhar
Fundamentos de Sistemas Operacionais
Fundamentos de Sistemas Operacionais Aula 7: Implementação de Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem diversos processos em memória. Cada
7 a Lista de Exercícios Assunto: Funções e passagem por referência com vetor e matriz (Tópico 7)
7 a Lista de Exercícios Assunto: Funções e passagem por referência com vetor e matriz (Tópico 7) Essa lista de exercícios tem como objetivo principal desenvolver algoritmos a partir dos conteúdos abordados
Pseudolinguagem. BC0501 Linguagens de Programação t2 Aula 11. Prof. Alysson Ferrari ufabc.edu.br
BC0501 Linguagens de Programação - 2008t2 Aula 11 Pseudolinguagem Prof. Alysson Ferrari alysson.ferrari @ ufabc.edu.br http://fma.if.usp.br/~alysson baseado em material elaborado por: Marcelo Zanchetta
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
Linguagem de Programação III
Linguagem de Programação III Aula-4 Construtores e Sobrecarga Prof. Esbel Tomás Valero Orellana Até Aqui Modelos e POO Classes e sua implementação em Java Encapsulamento Tipos de dados nativos em Java
PONTEIROS E LISTAS. Kalinka Regina Lucas Jaquie Castelo Branco
PONTEIROS E LISTAS Kalinka Regina Lucas Jaquie Castelo Branco [email protected] 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
Algoritmos e Introdução à Programação. Lógica e Linguagem de Programação
Algoritmos e Introdução à Programação Lógica e Linguagem de Programação Prof. José Honorato Ferreira Nunes [email protected] http://softwarelivre.org/zenorato/honoratonunes Linguagem C Prof.
PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95
PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95 Exercícios de revisão Lista 01: a) Monte um mapa conceitual indicando as relações entre os seguintes conceitos, no contexto do assunto visto em aula:
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
Notas da Aula 7 - Fundamentos de Sistemas Operacionais
Notas da Aula 7 - Fundamentos de Sistemas Operacionais 1. Organização de um Processo em Memória Quando um processo é criado, o SO aloca uma porção da memória física da máquina para a criação do espaço
Introdução à Programação. Introdução a Linguagem C. Prof. José Honorato F. Nunes
Introdução à Programação Introdução a Linguagem C Prof. José Honorato F. Nunes [email protected] Resumo da aula Introdução Variáveis Tipos de dados Operadores e Expressões: Operadores
Classes e Objetos. Sintaxe de classe em Java
Classes e Objetos Classes e Objetos A Programação Orientada a Objetos (POO) é uma técnica de programação que se baseia na construção de classes e utilização de objetos. Os objetos são formados por dados
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
Computação Eletrônica. Vetores e Matrizes. Prof: Luciano Barbosa. CIn.ufpe.br
Computação Eletrônica Vetores e Matrizes Prof: Luciano Barbosa Recapitulando: Funções 2 Recapitulando: Função Void 3 Recapitulando: Escopo das Variáveis Referência à variável global A variável de escopo
Prof. Silvana Rossetto 9 de julho de DCC/IM/UFRJ
Computação Concorrente (MAB117) Gabarito Segunda Prova Prof. Silvana Rossetto 9 de julho de 2015 1 DCC/IM/UFRJ Questão 1 (2,5 pts) O código Java abaixo implementa uma solução para o problema do barbeiro
Capítulo 11 Sistemas de Arquivos
Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Capítulo Sistemas de s Introdução O armazenamento e a recuperação de informações
Simulação de Caixa Automático
Programação Funcional UFOP DECOM 2014.1 Trabalho 1 Simulação de Caixa Automático Sumário Resumo Com esta atividade pretende-se explorar a construção de programas interativos usando ações de entrada e saída
Trabalho Prático. Descrição Considere os seguintes dados a respeito de uma pessoa:
Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Ciências de Computação Disciplina de Organização de Arquivos Profa. Dra. Cristina Dutra de Aguiar Ciferri Trabalho
ALOCAÇÃO DINÂMICA DE MEMORIA Lista 10. A linguagem C/C++ possui recursos para alocação dinâmica de memoria.
ALOCAÇÃO DINÂMICA DE MEMORIA Lista 10 A linguagem C/C++ possui recursos para alocação dinâmica de memoria. As funções que trabalham com alocação de memoria se encontram na biblioteca void *calloc(int
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
Aula 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
Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura
Java First-Tier: Aplicações Orientação a Objetos em Java (I) Paradigmas de Programação Programação Funcional Programação Procedural Programação Orientada por Objetos Grupo de Linguagens de Programação
Laboratório 3 Comandos de repetição while, do-while e for
Laboratório 3 Comandos de repetição while, do-while e for Computação I (MAB-120) Prof. Silvana Rossetto 1 DCC/IM/UFRJ 29 de março de 2019 O objetivo desta aula de laboratório é praticar o uso dos comandos
Instituto Federal de Educação, Ciência e Tecnologia do RN Câmpus Currais Novos. LINGUAGEM C++ VARIÁVEIS COMPOSTAS Arrays Aula I
LINGUAGEM C++ VARIÁVEIS COMPOSTAS Arrays Aula I Prof. Bruno E. G. Gomes Uma variável em um algoritmo pode ser vista como uma gaveta. A declaração de uma variável reserva uma gaveta (posição) de um certo
Mé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
5. 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
INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ACESSO, ATRIBUTOS E OPERAÇÕES COM ARQUIVOS PROFESSOR CARLOS MUNIZ
INTRODUÇÃO À TECNOLOGIA DA OPERAÇÕES COM ARQUIVOS PROFESSOR CARLOS MUNIZ INTRODUÇÃO O Sistema de Arquivos é o modo como as informações são armazenadas nos dispositivos físicos de armazenamento, exemplo
Classes e Objetos POO
Classes e Objetos POO Prof. Marcio Delamaro 1/40 POO (wikipedia) Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which are data structures that contain data,
Disciplina de Algoritmos e Programação
Disciplina de Algoritmos e Programação Aula Passada 1º Programa: olamundo.c #include // biblioteca padrão de E/S /* Programa Olá Mundo */ int main(void) { printf( Olá mundo\n ); //exibe Olá mundo
Alocação dinâmica de Memória
Alocação dinâmica de Memória Vetores e Arrays A variável vetor é uma variável que armazena outras variáveis, no caso tem que ser do mesmo tipo. Exemplo Criar um cont Declarar um vet com o tamanho Laço
Fundamentos da programação Parte - 1
Fundamentos da programação Parte - 1 1. Objetivos Nesta lição discutiremos as partes básicas de um programa em Java. Começaremos explicando as partes do programa Hello.java mostrado na última lição. Discutiremos
Algoritmos e Estrutura de Dados. Aula 05 Estrutura de Dados: Listas (Parte II) Prof. Tiago A. E. Ferreira
Algoritmos e Estrutura de Dados Aula 05 Estrutura de Dados: Listas (Parte II) Prof. Tiago A. E. Ferreira Listas Seqüenciais Estática Seqüencial É implementada usando um vetor Deve-se determinar qual a
INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 13/11/2017 ALUNO
INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 13/11/2017 ALUNO 1. Sockets - Indicar (Verdade/Falso): (2.0) (a) (Verdade/Falso) A comunicação entre processos consiste em transmitir uma mensagem entre
Sistemas Operacionais. Processos e Threads
Sistemas Operacionais Processos e Threads Sumário 1. Introdução 2. Estrutura do Processo 1. Contexto de Hardware 2. Contexto de Software 3. Espaço de Endereçamento 3. Estados 1. Mudanças de Estado 2. Criação
Construtores. Introdução
Construtores José Gustavo de Souza Paiva Introdução Até o momento, temos tratado a inicialização dos atributos das classes de duas maneiras Alteração dos valores dos atributos diretamente - atributos públicos
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
Programaçã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];
RPC e RMI. Sistemas Distribuídos. Mauro Lopes Carvalho Silva. Professor EBTT DAI Departamento de Informática Campus Monte Castelo
Sistemas Distribuídos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do Maranhão Objetivos Nesta aula
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:
Fundamentos de Sistemas Operacionais
Fundamentos de Sistemas Operacionais Aula 4: Programação Concorrente Diego Passos Últimas Aulas Processos Compostos por: Código (programa). Estado (memória, registradores). Em um sistema com multiprogramação:
Introduçã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
Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação
Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Programação em C Variáveis e Expressões DCA0800 Algoritmos e Lógica de Programação Heitor Medeiros Florencio
Aula 6 POO 1 Construtores. Profa. Elaine Faria UFU
Aula 6 POO 1 Construtores Profa. Elaine Faria UFU - 2019 Sobre o Material Agradecimentos Aos professores José Gustavo e Fabiano, por gentilmente terem cedido seus materiais. Os slides consistem de adaptações
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
Linguagem de Programação Orientada a Objeto Construtores e Sobrecarga
Linguagem de Programação Orientada a Objeto Construtores e Sobrecarga Professora Sheila Cáceres Sobrecarga (overloading) Na mesma classe podemos definir vários métodos com o mesmo nome Sobrecarga O tipo
Curso de Programação C em Ambientes Linux Aula 05
Curso de Programação C em Ambientes Linux Aula 05 Centro de Engenharias da Mobilidade - UFSC Professores Gian Berkenbrock e Giovani Gracioli http://www.lisha.ufsc.br/c+language+course+resources Conteúdo
Algoritmos e Estruturas de Dados II. Trabalho Prático 3
Algoritmos e Estruturas de Dados II Trabalho Prático 3 Entrega: 03/11/09 Devolução: 24/11/09 O trabalho pode ser feito em grupo de dois alunos. Este trabalho consiste em analisar o desempenho de diferentes
Gerência do Sistema de Arquivos. Adão de Melo Neto
Gerência do Sistema de Arquivos Adão de Melo Neto 1 Gerência do Sistema de Arquivos Organização de arquivos Operações de E/S Estrutura de diretórios Gerência de espaço livre Gerência de alocação de espaços
Redes de Computadores. INF201 - Fundamentos de Sistemas Operacionais - 2º Período
Redes de Computadores INF201 - Fundamentos de Sistemas Operacionais - 2º Período PARTE II: PROCESSOS E THREADS SUMÁRIO 5. PROCESSO: 5.1 Introdução; 5.2 Estrutura do Processo; 5.3 Estados do Processo; 5.4
