Fundamentos da Programação

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

Download "Fundamentos da Programação"

Transcrição

1 Fundamentos da Programação Simulação de Sociedades Projecto: entrega dia 19 de Dezembro de 2006 (versão 1.3, actualizado a 8/12/06, consultar Errata 1.3) Na era da globalização em que indivíduos de diferentes sociedades e culturas são cada vez mais expostos a outras culturas e sociedades, e onde há uma necessidade constante de adaptação a outros modos de vida, a tolerância para com os costumes de diferentes culturas passa a ser um desafio social importante, que tem motivado muitos estudos não só em áreas da sociologia e das ciências políticas mas também da informática. Por outro lado, com o surgimento de mundos virtuais populados por avatars, e de jogos role-play onde os personagens são controlados quer por jogadores quer por agentes, as interacções sociais entre as entidades virtuais passam a tomar uma importância maior nas simulações de sociedades sintéticas, de forma a tornar credíveis os personagens não controlados por jogadores (NPCs). O êxito de jogos como o The Sims TM, ou o World of Warcraft TM, mostram a importância destas relações sociais e do desenvolvimento de sociedades sintéticas credíveis. O objectivo deste projecto é criar um simulador de um mundo sintético (e limitado) em Scheme, onde os habitantes (os agentes nesse mundo) nascem, vivem, morrem, comem e se movimentam, procurando ser o mais felizes possível. Neste mundo podem existir diferentes sociedades, com características diferentes, que caracterizam a forma como os agentes dessa sociedade se comportam e toleram os agentes de outras sociedades. O simulador deverá ser iniciado através de um conjunto de parâmetros que caracterizam as sociedades e o próprio mundo sintético, e correr durante um conjunto finito de ciclos, mostrando o que acontece às sociedades durante esse período de simulação. Este simulador permitirá estudar diversos casos interessantes de aparecimento de fenómenos de segregação em sociedades heterogéneas.

2 Pág. 2/17 1. Introdução ao O Mundo a Simular O mundo que se pretende que seja simulado pelo programa não é mais que um tabuleiro onde em cada posição se pode encontrar um indivíduo de uma dada sociedade. A dimensão do tabuleiro pode ser parametrizada (número máximo de colunas e linhas), sendo que por omissão (isto é, se nada for dito), o tabuleiro terá 81 células (9 linhas por 9 colunas). O mundo é circular, ou seja, a seguir à última linha vem a primeira linha, e antes da primeira linha está a última linha. O mesmo se passa com as colunas. No mundo o tempo passa. A cada instante (ou ciclo) o mundo é caracterizado pelas sociedades que nele existem (cada sociedade terá uma designação), pela distribuição dos seus agentes no tabuleiro e pela distribuição das fontes de comida com diferentes níveis de stock. Assim, a cada instante, cada posição do mundo poderá estar vazia, ter um agente de uma dada sociedade, ou ter uma fonte de comida. Os agentes podem nascer, comer, movimentar-se e morrer. Cada um deles tem um estado associado, que indica a sua localização, o seu nível de energia e a sua idade. O mundo tem ainda recursos em forma de fontes de comida, que aparecem em determinadas posições de acordo com certas regras de geração. A cada fonte de comida está associada uma quantidade comida ainda por ser consumida. Todos as mudanças no estado do mundo ocorrem aquando das mudanças de instante. Por outras palavras, quando um instante muda, o mundo pode apresentar novas posições para os agentes (no caso de eles se movimentarem), novas fontes de comida (que entretanto apareceram), diferentes valores para os níveis de stock das fontes de comida (se elas forem consumidas por agentes) e diferentes valores para os níveis de energia dos agentes (se os agentes perderem ou ganharem energia). Figura 1 Um mundo em

3 Pág. 3/ Os Agentes Cada agente é caracterizado pela sociedade a que pertence, pela sua posição no mundo, por uma quantidade de energia que tem armazenada, e pela sua idade. Em cada ciclo do mundo, cada agente tem a oportunidade de mudar o seu estado, podendo comer, ficar quieto, mover-se, ou morrer. O seu novo estado tornar-se-á visível no instante seguinte, depois do estado do mundo ser actualizado com esta nova informação. Em cada instante a idade de um agente aumenta uma unidade, e a sua energia decrescerá um certo valor (o custo de sobrevivência dos elementos dessa sociedade, ver Secção 1.3). Figura 2. Personagens do, Kenny, Cartman, Kyle e Stan As personagens que vamos usar no nosso enunciado são as personagens da conhecida série de animação SouthPark TM e estão representadas na Figura 2. a) Nascimento Quando o mundo é criado (no instante um) ele já é habitado por agentes, cuja localização é definida pela parametrização inicial. Também podem nascer agentes em instantes futuros, quando uma casa vazia tiver um número mínimo de vizinhos da mesma sociedade (este valor corresponde ao número de progenitores e é parametrizado para cada uma das sociedades). Por exemplo, na situação da Figura 3, se o valor necessário para o nascimento de um agente na sociedade Cartman for de pelo menos 4, no instante seguinte ao do que está representado no tabuleiro da esquerda, nasce um agente na posição (2,4) (obtendo-se o tabuleiro da direita). Nesta situação, o agente nascerá com a idade 0 e com quantidade de energia igual a metade do máximo de energia possível para os membros da sua sociedade (arredondada para baixo), ver Secção 1.3. Figura 3. Nascimento de um agente b) Movimentação. Um agente move-se no máximo uma posição em cada instante, para qualquer uma das casas adjacentes (horizontal, vertical ou diagonalmente) que estiver livre (isto é, sem outro agente e sem uma fonte de comida). Os agentes

4 Pág. 4/17 movimentam-se sempre que não estão contentes, isto é, sempre que se encontram numa posição que oferece um grau de conforto (social ou físico) abaixo da sua tolerância (social ou física) - ver Secção 1.3. Se estiverem contentes, tanto física como socialmente, os agentes não se mexem. Sempre que um agente se move, ele move-se por forma a estar mais perto de outros membros da sua sociedade, ou para estar mais perto de fontes de comida. A sua movimentação é por isso para a posição adjacente com maior nível de conforto. Claro que podem existir várias posições adjacentes em que o nível de conforto é idêntico e por isso o agente tem de decidir qual delas prefere. Durante este projecto vamos sempre assumir que em caso de empate, a ordem de preferência será decidida de acordo com a Figura 3, onde 1 significa maior preferência, e 8 significa menor preferência Figura 4. Regras de desempate Pode também acontecer que dois agentes estejam a tentar movimentar-se ao mesmo tempo para uma mesma posição. Neste caso consulte as regras de resolução de conflitos indicadas no Apêndice A. c) Morte Existem duas causas de morte possíveis para um agente: ter esgotado as suas reservas de energia ou ter atingido a esperança de vida para os elementos da sua sociedade. No primeiro caso, o agente desaparece do tabuleiro no instante seguinte ao das suas reservas de energia terem valor inferior a zero (não chega a efectuar a movimentação); no segundo caso, o agente desaparece do tabuleiro no início do turno seguinte àquele em que a sua idade ultrapassou a esperança de vida para a sua sociedade. d) Comida Um agente que está ao lado de uma fonte de comida deverá comer até ao máximo que conseguir. Mais precisamente, enquanto houver comida suficiente na fonte, ele remove em cada instante uma porção, até atingir o nível máximo de energia que pode armazenar. Tanto o ritmo com que a comida é assimilada (o tamanho de cada porção) como o limite máximo de energia que pode armazenar são parâmetros da sociedade a que pertence (ver detalhes na Secção 1.3). É possível que num dado instante, haja vários agentes em posição de comer a partir de uma mesma fonte. Neste caso consulte as regras de resolução de conflitos indicadas no Apêndice A. Se um agente não conseguir comer porque entretanto outro agente esgotou a fonte de comida, então o agente não realiza nenhuma acção nesse instante ficando na mesma posição. Note que no entanto, se houver outra fonte de comida na sua vizinhança, ele deverá recorrer a essa fonte para realizar a sua acção

5 Pág. 5/17 e) Energia Em cada instante, um agente tem um determinado nível de energia. Este valor decresce todos os instantes, de um valor definido como o custo de sobrevivência da sua sociedade). A energia de um agente aumenta de cada vez que o agente consome comida (o valor da energia que é incrementado corresponde à quantidade de comida consumida) As Sociedades No mundo podem existir várias sociedades (por exemplo, a sociedade dos Kenny, dos Cartman, dos Kyle, etc). Cada sociedade é composta por uma população de agentes que têm características e comportamentos comuns. As sociedades caracterizam-se por terem diferentes tolerâncias, esperanças de vida, número de progenitores, quantidade máxima de energia, ritmos a que a comida é ingerida, e custo de sobrevivência. a) Tolerância A tolerância é um factor que determina se o agente está ou não num estado contente e tem duas componentes, tolerância física e tolerância social. A cada instante, se o bem estar do agente (físico ou social) é menor que o seu valor de tolerância, este fica triste e tem que se movimentar, podendo em caso extremo morrer por não conseguir melhorar o seu bem estar. O estado de contentamento, ou bem estar, de um agente é medido segundo duas componentes distintas. A primeira chama-se conforto-social, e determina até que ponto um agente tolera a exclusão social, i.e., se está bem em relação à sua vizinhança. Este factor permite determinar se um individuo está contente com a sua posição actual, e obtido calculando a percentagem de vizinhos que são da sua sociedade, isto é, nº de vizinhos da mesma sociedade/8 A segunda componente é o conforto-físico, e determina se um agente está fisicamente bem. Este factor é calculado fazendo o quociente entre a energia que ele possui, e o máximo de energia que os agentes da sua sociedade podem acumular. Sempre que o conforto social é inferior à tolerância social (ou o conforto físico é inferior à tolerância física, o agente movimentar-se-á para tentar melhorar o seu bem estar. Quando isto acontece, o agente movimentar-se-á para a posição que lhe trouxer um melhor conforto, isto é, uma posição onde aumente o seu conforto social, ou onde aumente o seu conforto físico, ou seja uma posição onde existam fontes de comida adjacentes. O conforto que uma posição proporciona a um agente é dado pela fórmula (conforto-social + nº de fontes de comida adjacentes)/2

6 Pág. 6/17 Figura 5. Exemplo de situações de vizinhança de um agente No exemplo da Figura 5, considerando que o factor de tolerância social da sociedade Cartman é ¼ o agente na posição (5,2) tem conforto social ¼, por isso não se mexe, enquanto que o agente na posição (1,3) tem conforto social 1/8 e por isso movimentar-se-á. Suponhamos que o tolerância física da sociedade Kenny é ½ e a quantidade máxima de energia é 8. Se o agente na posição (1,5) tem 3 unidades de energia, o seu conforto físico é inferior à tolerância física e ele terá de se movimentar. Ele movimentar-se-á para a posição (2,5) que lhe proporciona um conforto 17/16. b) A Esperança de Vida Os agentes não vivem para sempre, existindo uma esperança de vida para cada sociedade. Assim, quando um agente passa essa idade (números de ciclos), morre. Quando um agente nasce tem idade zero, e por cada ciclo de simulação, a idade do agente é incrementada de uma unidade. c) Número de Progenitores O nascimento de agentes de uma dada sociedade depende dos costumes dessa mesma sociedade e no nosso caso assumimos que para ocorrer o nascimento de um agente, têm de se encontrar na sua vizinhança o número suficiente de progenitores. d) Quantidade Máxima de Energia, Porção Máxima de Comida e Custo de Sobrevivência Os hábitos alimentares dos agentes e a maneira como os agentes dispendem a sua energia dependem em parte da sua sociedade. Existem sociedades onde as porções por refeição são muito grandes (os agentes comem mais), e outras em que as refeições são muito rápidas e por isso a quantidade de comida ingerida é diminuta. Para modelar este fenómeno assumimos que se encontram definidos dois parâmetros que indicam a quantidade máxima de energia que cada agente pode armazenar e o número máximo de unidades de comida que pode consumir por cada acção. Os hábitos físicos de um agente também são em parte determinados pela sua sociedade. Existem sociedades mais activas e outras mais sedentárias. Para modelar este fenómeno assumimos que se encontra definido um parâmetro para cada sociedade que indica quantas unidades de energia são consumidas por turno por cada agente, o custo de sobrevivência.

7 Pág. 7/ A Comida A comida aparece no mundo de acordo com uma função de geração de comida que depende do estado do mundo e do tempo. A comida é um recurso que os agentes necessitam para se manterem vivos (mantendo o conforto físico acima do tolerância física). As fontes de comida aparecem com um valor de quantidade de comida inicial, que vai diminuindo cada vez que um agente come. As fontes de comida estão localizadas em posições no mundo e desaparecem quando os agentes consumirem toda a comida que tinha sido inicialmente gerada. Se uma fonte de comida não for suficiente para satisfazer um agente, ele apenas consome a quantidade existente não devendo procurar outras fontes para completar a acção. 2. : O simulador O simulador é activado pelo utilizador, invocando o procedimento ( mundo-inicial tempo-final funcao-geradora-de-comida) que inicia o ciclo de simulação. A cada instante o simulador avalia todas as posições no mundo, efectua as acções de cada agente e retorna o estado do mundo no instante seguinte. Por exemplo, se no instante t um determinado agente efectua a acção de se movimentar de uma posição A para uma posição B, no instante t+1 esse agente aparecerá na posição B. 2.1 Os Tipos Abstractos Para a resolução deste projecto, cada grupo deverá definir os seguintes tipos abstractos de informação: posição, comida, agente, população, sociedade e mundo. Poderá ser útil considerar ainda tipos de dados auxiliares tais como listas, listas completas e/ou tabuleiro. Para cada um destes tipos de dados deverá ser criado um módulo separado, que deverá ser gravado no ficheiro nome-do-tipo.scm O Tipo Agente Nesta secção apresentamos o tipo abstracto de informação agente. O tipo agente deverá respeitar as seguintes operações: - cria-agente : nome-sociedade x posicao x nat x nat-> agente Cria um agente de uma sociedade numa dada posição, com um valor inicial de comida e com determinada idade. - sociedade-agente : agente -> nome-sociedade Devolve a sociedade de um agente - posicao-agente : agente -> posicao Devolve a posição de um agente - comida-agente : agente -> nat Devolve a quantidade de comida que o agente ainda possui - idade-agente : agente -> nat Devolve a idade do agente - muda-sociedade-agente : nome-sociedade x agente -> agente Muda a sociedade de um agente - muda-posicao-agente : posicao x agente -> agente Muda a posição de um agente

8 Pág. 8/17 -muda-comida-agente : nat x agente -> agente Muda o valor da comida de um agente - muda-idade-agente : nat x agente -> agente Muda a idade de um agente - agente? : universal -> bool Verifica se um elemento é um agente - agentes=? : agente x agente -> bool Verifica se dois agentes são iguais O Tipo Mundo Nesta secção apresentamos o tipo abstracto de informação mundo. O tipo mundo deverá respeitar as seguintes operações: - cria-mundo: nat x nat x nat x comida* x sociedade* -> mundo Cria um mundo com o tempo e as dimensões (largura e altura) dadas, com os elementos do tipo comida espalhados nesse mundo, e habitado pelas sociedades argumento - tempo-mundo : mundo -> nat Devolve o tempo actual do mundo - dimensoes-mundo : mundo -> par Devolve um par com as dimensões largura e altura do mundo - comida-mundo : mundo -> lista Devolve a lista dos elementos do tipo comida que ocorrem no mundo - sociedades-mundo : mundo -> lista Devolve a lista de todas as sociedades presentes no mundo - sociedade-nome-mundo : nome-sociedade x mundo -> sociedade Devolve a sociedade do mundo com o nome dado - posicao-mundo ; posicao x mundo -> elem Devolve o elemento do mundo na posição argumento Deverá ainda definir as seguintes operações auxiliares sobre o tipo de dados mundo: - muda-tempo-mundo : nat x mundo -> mundo Muda o tempo do mundo para o valor dado - altera-agente-mundo ; agente x mundo -> mundo Introduz o agente dado no mundo (removendo o elemento que eventualmente exista na posição onde este é introduzido) - mata-agente-mundo ; agente x mundo -> mundo Remove o agente dado do mundo - move-agente-mundo ; agente x posicao x mundo -> mundo Move o agente para a posição dada - altera-comida-mundo ; comida x mundo -> mundo Introduz no mundo o objecto comida dado como argumento (removendo o elemento que eventualmente exista na posição onde este é introduzido) - posicao-desocupada? : posição x mundo -> bool Retorna true se e só se a posição no mundo está desocupada - posicao-ocupada? : posição x mundo -> bool Retorna true se e só se a posição no mundo está ocupada Outros TAIs Os restantes tipos dados devem ser definidos pelos grupos adequadamente e conforme sejam necessários. No entanto, para que seja possível gerir a parametrização do seu programa, e permitir que o seu programa seja testado de uma forma fácil, deverá respeitar os construtores dos tipos seguidamente apresentados:

9 Pág. 9/17 - cria-posicao: nat x nat -> posicao Devolve a posição composta pelo par dos dois argumentos - cria-comida: posicao x nat -> comida Devolve um objecto do tipo comida na posição e com o número de unidades de comida dados como argumento - cria-pop: agente* -> pop Cria a população formada pelos agentes dados como argumento - cria-sociedade: string x nat x real x real x nat x nat x nat x nat x pop -> sociedade Devolve a sociedade onde os argumentos representam (por esta ordem) o nome da sociedade, a esperança de vida dos agentes da sociedade, as tolerâncias social e física, o número de progenitores da sociedade, os parâmetros quantidade máxima de energia, porção máxima de comida e custo de sobrevivência, e a população da sociedade. 2.2 O Ciclo de Simulação Cada ciclo de simulação deve receber um mundo num instante t e retornar um mundo no instante seguinte t+1. O mundo no instante t+1 é obtido do mundo no instante t através da execução das seguintes operações: 1. retirar do mundo os agentes que atingiram a esperança de vida da sua sociedade; 2. efectuar as acções de todos os agentes de acordo com o definido na Secção 1.2; consulte o Apêndice A para regras de resolução de conflitos; 3. acrescentar ao mundo os agentes que nasceram em casas desocupadas; 4. introduzir no mundo as novas fontes de comida de acordo com a função geradora de comida; 5. Mostrar o mundo resultante usando a interface definida na Secção 2.4. Idealmente todas as acções deveriam ser efectuadas em simultâneo mas, como vimos na Secção 1.2, a movimentação dos agentes e a sua alimentação pode causar situações de conflito; podemos ter por exemplo o caso de dois agentes tentarem movimentar-se para a mesma posição, ou o caso de dois agentes tentarem alimentar-se mas não haver comida suficiente para os dois. Assim, teremos de adoptar uma ordem pela qual as acções são realizadas. Essa ordem, bem como a resolução de conflitos, encontra-se descrita em detalhe no Apêndice A. 2.3 A Interacção com o Utilizador A simulação da evolução deverá resultar da invocação ( mundo-inicial tempo-final funcao-geradora-de-comida) onde mundo-inicial representa o mundo inicial, tempo-final indica o número de instantes que devem ser simulados e funcao-geradora-de-comida é uma função que dado um mundo gera um elemento do tipo comida que deverá ser adicionado ao mundo, ou retorna o valor false. A simulação deve mostrar a representação gráfica do estado inicial e de cada um dos estados intermédios da evolução; deve ainda retornar a representação externa do estado do mundo após a simulação de todos os passos (ver Secção 2.4). Deverá ser ainda disponibilizar a função (-um-passo mundo funcao-geradora-de-comida)

10 Pág. 10/17 que simula um passo da simulação tal como descrito na Secção 2.2. Deverá mostrar o estado do mundo obtido e retornar a sua representação externa. Os alunos que assim pretenderem poderão definir ainda a função (-inter mundo-inicial tempo-final funcao-geradora-de-comida) que permitirá uma interacção com o utilizador para que este possa controlar os parâmetros bem como a evolução da simulação. Poderão ainda incluir no relatório sugestões de novas abordagens e eventuais resultados da aplicação das mesmas. As actividades desenvolvidas neste sentido serão contempladas na avaliação da inovação (Ponto 4). 2.4 A Interface Por forma a visualizar a evolução do seu mundo em cada instante de tempo é disponibilizada uma interface gráfica. Para poder utilizá-la tem que: 1. Colocar na directoria que contém o seu programa o ficheiro interface.zo, e a pasta xpm disponíveis na página da cadeira; 2. No início do código deverá colocar a instrução: (require "interface.zo"). Esta interface providencia a função mostra-mundo, que recebe o mundo na sua representação externa (descrita em seguida) e apresenta de uma forma gráfica esse mundo. Invocações posteriores a esta função actualizam a imagem, permitindo-lhe ver a evolução do mundo. mostra-mundo: mundo-externo -> nada Representação Externa do Mundo Para haver uma separação clara entre a interface e o seu programa, estabeleceuse que a comunicação entre estes será feita através de uma representação externa do mundo. Logo, para utilizar a interface deverá começar por definir um método que converta a sua representação do mundo para a representação externa, passando depois como argumento para o mostra-mundo o mundo convertido. A representação externa é uma única string (cadeia de caracteres) 1. Esta string tem duas componentes separadas por um espaço (" "), a primeira é o tempo do mundo, a segunda representa o tabuleiro. O tempo do mundo é representado por uma string de caracteres numéricos, por exemplo a string "120" representa o instante de tempo 120. O tabuleiro é composto por um conjunto de pequenas strings separadas por espaços ou por mudanças de linha ("\n"), cada uma destas pequenas strings representa o conteúdo de uma posição no tabuleiro, os separadores têm o seguinte significado: " " - serve para separar as posições consecutivas do tabuleiro; "\n" - serve para separar as linhas do tabuleiro. 1 As strings são suportadas nativamente pelo Scheme. Consulte a documentação da linguagem ( onde se definem as funções de manipulação de strings. Posteriormente serão publicados na página alguns exemplos de utilização dessas funções.

11 Pág. 11/17 As pequenas strings entre os separadores permitem representar: agentes, espaços vazios, e quantidades de comida. agente - é representado por uma string que representa a população a que o agente pertence, mais nenhuma informação do agente é necessária no contexto da interface. Um exemplo de um agente será a string "Kenny". (Ver Secção sobre os possíveis nomes.) comida - é representada por uma string de caracteres numéricos, sendo esse número a quantidade de comida. Um exemplo de comida será a string "10", que significa a existência de 10 unidades de comida numa determinada posição. espaço vazio - é representado pela string "@". Para clarificar estas regras encontra-se na figura o mundo correspondente à representação externa: 3 Kyle\n@ Figura 6. Representação gráfica de uma string Velocidade da Simulação A invocação da função mostra-mundo será feita pelo procedimento a cada instante de tempo. Se não houver uma pausa entre invocações ao mostra-mundo, a simulação corre tão depressa que torna impossível a visualização dos vários instantes. Para controlar a velocidade de simulação foi disponibilizada a função velocidade: velocidade: real -> nada Esta função recebe um número real entre 0 e 10 (exclusive) e fixa a velocidade de simulação. Quanto mais próximo de zero, maior será a pausa imposta a seguir a cada invocação do mostra-mundo Gráficos, e Número Máximo de Sociedades Na pasta xpm encontra-se um conjunto de ficheiros de extensão *.xpm. Estes ficheiros são pequenas imagens que representam os agentes do nosso mundo. O aluno interessado poderá alterar essas imagens por outras de agentes mais do seu agrado, desde que não altere o tamanho das imagens. Os ficheiros espaco.xpm, comida.xpm, e desconhecido.xpm, são usados para o espaço vazio, para a comida, e para um elemento inválido (erros na representação externa), respectivamente. Os restantes ficheiros têm o nome: agente-<nome>.xpm, em que <nome> é o nome utilizado na representação externa para a sociedade na qual essa imagem é utilizada. O numero máximo de sociedades é portanto controlado pelo número de ficheiros agente-<nome>.xpm existentes na pasta xpm.

12 Pág. 12/17 3. Testes Será disponibilizado oportunamente na página da cadeira, secção do projecto, um conjunto de testes que permitirão testar certas situações de simulação controladas. É importante que o relatório inclua estes testes e mais alguns que os alunos considerarem relevantes, mostrando os resultados e discutindo os mesmos de uma forma crítica. 4. Avaliação Automática O programa será avaliado automaticamente, pelo que deve respeitar os tipos definidos anteriormente. Deverá respeitar os requisitos definidos na Secção 2.3 bem como o formato para a interface descrito na Secção 2.4. Trabalhos que não estejam em conformidade com estes requisitos serão penalizados em 3 valores. 5. Classificação A nota do projecto será baseada nos seguintes aspectos: 1) Execução correcta (35%) 2) Facilidade de leitura- abstracção procedimental, abstracção de dados, nomes escolhidos, paragrafação, qualidade dos comentários (25%) 3) Relatório (30%) 4) Estilo de programação e inovação nas perguntas. (10%) 6. Condições de realização e prazos O projecto deve ser realizado em grupos de 3 alunos. Os alunos de um grupo podem pertencer a qualquer turno das aulas práticas de qualquer das duas licenciaturas (LCEI e LERC). Os alunos devem proceder à inscrição do grupo através do sistema Fénix. O projecto deve ser entregue até às 17:00 horas do dia 19 de Dezembro de 2006, no secretariado do DEI (2º piso, Núcleo 1). Um modelo de relatório, que devem adaptar de acordo com as vossas necessidades, será disponibilizado no sistema Fénix. Os projectos em atraso serão aceites até ao dia 24 de Dezembro 2, sendo os alunos penalizados com 0,5 valores por cada dia de atraso. A partir das 16:00 do dia 24 não se aceitam mais projectos. Os grupos que entregarem os projectos até às 17:00 horas do dia 12 de Dezembro de 2006 no secretariado do DEI terão um bónus de 1 valor na nota do projecto. O projecto deve ser entregue dentro de uma capa ou encadernado, apresentando visivelmente o número do grupo e o número e nome dos seus autores. Projectos que não sejam entregues nestas condições serão penalizados com 3 valores. 2 Durante os dias 16 e 17 de Dezembro e na eventualidade de no dia 24 de Dezembro não haver ninguém no secretariado do DEI, o projecto deverá ser entregue na Portaria do Tagus ao cuidado da Professora Ana Paiva.

13 Pág. 13/17 Para além disso, a entrega do código por via electrónica é obrigatória e deverá ser feita através do Fénix; cada grupo deverá submeter um ficheiro.zip com os módulos para os diferentes TAIs bem como todos os outros ficheiros necessários para a correcta execução do programa. Um trabalho é considerado entregue no dia x se o relatório for entregue no secretariado do DEI até às 17:00 horas do dia x (16:00 no caso do dia 24 de Dezembro) e o código for entregue através do sistema Fénix até às 23:59 do dia x. Pode ou não existir uma discussão oral do projecto e/ou uma demonstração da funcionalidade do mesmo (sendo a discussão decidida caso a caso pelo corpo docente da disciplina). Projectos iguais, ou muito semelhantes, serão classificados com zero valores. O corpo docente da disciplina será o único juiz do que se considera ou não copiar num projecto.

14 Pág. 14/17 Apêndice A. Resolução de Conflitos em Para resolver as situações de conflito adoptamos uma ordem pela qual os agentes efectuam as suas acções. Assim, o primeiro agente a efectuar uma acção é o agente na posição (1,1) do mundo, seguido do agente na posição (1,2), e assim sucessivamente. No exemplo da Figura 7, o primeiro a efectuar a acção seria o Kenny-1-2, 3 depois seria o Cartman1-3, seguir-se-ia o Kenny-1-5, depois o Kyle-2-2, e assim sucessivamente até chegarmos à última posição do mundo. Figura 7. Prioridades nas acções dos agentes A primeira acção que é simulada no mundo é a acção global de remoção de todos os elementos que ultrapassaram a esperança de vida da sua sociedade. Assim, supondo que o agente Kenny-2-4 tem 6 anos de idade e a esperança de vida da sociedade Kenny é 5, devemos começar por retirar o agente Kenny-2-4 do mundo no instante t e obtemos o mundo representado na Figura 8. Figura 8. Mundo antes da fase de acções individuais 3 Neste texto usaremos a notação soc-x-y para denotar o agente da sociedade soc que se encontra na posição (x,y) do mundo.

15 Pág. 15/17 Seguidamente, temos de simular as acções de cada um dos agentes. Como referido acima, as acções individuais dos agentes são efectuadas por ordem de modo a evitarmos conflitos. Vamos ilustrar de seguida situações de conflito e as respectivas soluções. Todas as acções efectuadas têm por base o estado do mundo na Figura 8. Comecemos pelo agente Kenny-1-2. Como não existe comida na vizinhança do agente Kenny-1-2, teremos de avaliar qual o seu conforto físico e social na posição (1,2). Se os valores de conforto físico e social forem superiores às respectivas tolerâncias da sociedade Kenny, ele ficará na mesma posição, caso contrário, ele mover-se-á para a posição de maior conforto na sua vizinhança que esteja livre. Supondo que o agente não está contente na posição (1,2) ele escolherá a posição de maior conforto de entre as seguintes: (5,3), (1,1), (2,1) e (2,3) desempatando pela ordem indicada na Figura 4. O conforto da posição (5,3) é 1/16, o da posição (1,1) é 1/16, o da posição (2,1) é 10/16, e o da posição (2,3) é ½, sendo, por isso a posição (2,1) a de maior conforto para Kenny-1-2, Figura 9 (esquerda); seguidamente efectuamos a acção do agente Cartman-1-3. Suponhamos que Cartman-1-3 não está confortável socialmente na posição (1,3) ele terá de se mover para uma das posições adjacentes que esteja livre. As posições adjacentes a (1,3) são (5,2), (5,3), (5,4), (1,2), (1,4), (2,2), (2,3) e (2,4). Vemos imediatamente que as posições (5,2) e (2,2) estão ocupadas, restando por isso apenas as posições (5,3), (5,4), (1,2), (1,4), (2,3) e (2,4). Como pretendemos que as acções individuais representem um movimento colectivo, devemos notar que Cartman-1-3 não se pode mover para a posição (1,2) pois essa era a posição que era ocupada por Kenny-2-1 no início da fase de acções individuais, Figura 8. Temos por isso que as únicas posições disponíveis para Cartman-1-3 se movimentar são (5,3), (5,4), (1,4), (2,3) e (2,4). À excepção da posição (5,3) que tem um vizinho da sociedade Cartman e proporciona um conforto 1/16, qualquer das outras posições dará o mesmo conforto social a Cartman-1-3 (conforto 0), pois não têm vizinhos da sociedade Cartman. No entanto, duas delas, (2,3) e (2,4), contêm fontes de comida em posições adjacentes, dando assim um conforto (1/2). Para desempatar entre estas duas posições será usada a regra da Figura 4 e o agente mover-se-á para a posição (2,3), Figura 9 (direita).

16 Pág. 16/17 Figura 9. Mundo após movimentação de Kenny-1-2, Cartman-1-3, e Kenny-1-5 Efectuemos agora a movimentação de Kenny-1-5 e suponhamos que também ele não está confortável fisicamente na posição (1,5). Novamente, as posições adjacentes a (1,5) são (5,4), (5,5), (5,1), (1,4), (1,1), (2,4), (2,5) e (2,1). Destas, a posição (5,1) está ocupada e a posição (2,1) já foi ocupada pelo agente que estava na posição (1,2). Restam por isso as posições (5,4), (5,5), (1,4), (1,1), (2,4) e (2,5) livres. Notem que (2,4) era inicialmente ocupada por Kenny-2-4, que morreu logo no primeiro passo da simulação por ter ultrapassado o limite de idade. Esta posição continua no entanto a ser uma posição elegível para a movimentação de Kenny-1-5 pois estava livre no início da fase de acções individuais, Figura 8. A movimentação de Kenny-1-5 será para a posição (2,5) pois é a que lhe dá maior conforto, com 2 vizinhos da sociedade Kenny e 2 fontes de comida (18/16). Outro tipo de conflitos deriva do facto de mais de um agente estar a alimentar-se de uma mesma fonte de comida. Continuando com a nossa simulação, o próximo agente a efectuar uma acção é o Kyle-2-2. Suponhamos que o Kyle-2-2 pretende consumir as duas porções de comida existentes. Caso isso aconteça, a sua reserva de energia aumenta de 2 unidades e a comida presente na posição (3,1) desaparece, o que impossibilita que o agente Kyle-3-2 também se alimente. Note que de acordo com o estado do mundo antes das acções individuais, Figura 8, o agente Kyle-3-2 também teria direito a alimentar-se. Como esta acção foi impossibilitada por acção de um outro agente, o agente Kyle-3-2 ficará parado quando for a sua vez de realizar uma acção. Note que no caso de existir uma outra fonte de comida ao lado de Kyle- 3-2, ele tentará alimentar-se dessa fonte quando chegar a sua vez de agir. A simulação continuaria a ser feita para os restantes agentes e após a realização das acções individuais de cada agente, todos envelhecem um ano. Figura 10. Mundo após a fase de acções individuais

17 Pág. 17/17 Após a fase de acções individuais existe a fase de nascimento de novos agentes. Nesta fase devem ser percorridas todas as posições vazias do tabuleiro (já actualizado com as movimentações de todos os agentes, Figura 10) e, para cada uma delas, verificar se vai ocorrer algum nascimento. Os nascimentos de agentes de uma sociedade, tal como referido na Secção 1.2, ocorrem sempre que há uma concentração de agentes (não contabilizamos os agentes nascidos neste turno de simulação) dessa mesma sociedade em redor dessa posição. No caso de existirem duas ou mais sociedade nessas condições, não ocorre nascimento. Suponhamos que o número de progenitores necessários é 2 nas sociedades Cartman e Kyle, e 3 no caso da sociedade Kenny. Neste caso na fase de nascimentos nasceriam os agentes Cartman-1-1, Cartman-1-2, Cartman-1-3, Kyle-3-3, Cartman-4-1 e Cartman-4-2. Na posição (1,4) não ocorre nenhum nascimento pois Cartman-1-3 nasceu neste turno. Por razão semelhante não há nenhum conflito no nascimento de Cartman-4-2. Na posição (3,1) não ocorre nenhum nascimento porque existe um conflito entre Kenny e Kyle. Figura 11. Mundo após a fase de nascimentos Finalmente, a última fase de cada passo de simulação é a introdução de novas fontes de comida. Estas fontes de comida são geradas de acordo com uma função que é dada como argumento do problema.

Fundamentos de Programação. operações sobre grafos dirigidos.

Fundamentos de Programação. operações sobre grafos dirigidos. Licenciatura em Engenharia Informática e de omputadores Fundamentos de Programação Projecto - Terceira Parte 27 de bril de 2012 Operações sobre grafos dirigidos O objectivo deste projecto é o desenvolvimento

Leia mais

Encriptação de Mensagens

Encriptação de Mensagens Instituto Superior Técnico Fundamentos da Programação 2016/2017 Enunciado do 1 o Projecto Data de entrega: 4 de Novembro de 2016 às 23h59 Encriptação de Mensagens Pretende-se com este trabalho a implementação

Leia mais

Fundamentos da Programação. Ano lectivo , 2 o Semestre Projecto Segunda Parte 1. Liberta o quadrado

Fundamentos da Programação. Ano lectivo , 2 o Semestre Projecto Segunda Parte 1. Liberta o quadrado Fundamentos da Programação Ano lectivo 2013-14, 2 o Semestre Projecto Segunda Parte 1 Liberta o quadrado O jogo Liberta o quadrado é um quebra-cabeças em que o jogador é confrontado com um tabuleiro de

Leia mais

Fundamentos da Programação. Ano lectivo , 2 o Semestre Projecto Primeira Parte 1. Nim

Fundamentos da Programação. Ano lectivo , 2 o Semestre Projecto Primeira Parte 1. Nim Fundamentos da Programação Ano lectivo 2013-14, 2 o Semestre Projecto Primeira Parte 1 Nim Nim é um jogo de estratégia matemática, que pode ser jogado casualmente usando um conjunto de objectos dispostos

Leia mais

21090 Programação e-fólio Recurso 2013/2014. e-fólio Recurso

21090 Programação e-fólio Recurso 2013/2014. e-fólio Recurso e-fólio Recurso O e-fólio de Recurso consiste na simulação do Jogo da Vida (http://pt.wikipedia.org/wiki/jogo_da_vida). Existe 4 alíneas, que devem ser realizadas sequencialmente, valendo cada alínea 1

Leia mais

Estruturas de Dados I Enunciado do Trabalho Prático

Estruturas de Dados I Enunciado do Trabalho Prático Estruturas de Dados I Enunciado do Trabalho Prático Licenciatura em Engenharia Informática Universidade de Évora 2001/2002 1 Objectivo Pretende-se implementar uma base de dados sobre as viagens efectuadas

Leia mais

Inteligência Artificial

Inteligência Artificial Inteligência Artificial Campus Alameda IST @ 007/008 5 de Maio de 008. Introdução O objectivo deste trabalho é desenvolver um solucionador automático em ANSI Common Lisp para o quebra-cabeças Picross.

Leia mais

O Mundo das Margaridas

O Mundo das Margaridas O Mundo das Margaridas Enunciado da 2 a fase de entrega do projecto Fundamentos da Programação e Elementos de Programação 12 de Dezembro de 2007 Aviso: Este enunciado descreve o que é pretendido na segunda

Leia mais

Manual do Gestor da Turma

Manual do Gestor da Turma Faculdade de Engenharia da Universidade do Porto Licenciatura Informática e Computação Laboratório de Informática Avançada Automatização de Horários Manual do Gestor da Turma João Braga http://www.fe.up.pt/~ei97027/lia.html

Leia mais

Fundamentos da Programação. Ano lectivo Segundo Projeto. Picross

Fundamentos da Programação. Ano lectivo Segundo Projeto. Picross Fundamentos da Programação Ano lectivo 205-6 Segundo Projeto Picross O jogo Picross é um quebra-cabeças sobre uma imagem binária, em que as células de uma grelha devem ser coloridas ou deixadas em branco

Leia mais

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO SISTEMAS DE GESTÃO DE BASE DE DADOS FORMULÁRIOS

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO SISTEMAS DE GESTÃO DE BASE DE DADOS FORMULÁRIOS TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO SISTEMAS DE GESTÃO DE BASE DE DADOS FORMULÁRIOS Os constituem uma outra forma de visualizar os dados armazenados nas tabela ou disponibilizados numa consulta. Também

Leia mais

ZS Rest. Manual Profissional. BackOffice Mapa de Mesas. v2011

ZS Rest. Manual Profissional. BackOffice Mapa de Mesas. v2011 Manual Profissional BackOffice Mapa de Mesas v2011 1. Índice 2. INTRODUÇÃO... 2 3. INICIAR O ZSRest Backoffice... 3 1 4. Confirmar desenho de mesas...... 4 b) Activar mapa de mesas... 4 c) Zonas... 4 5.

Leia mais

Manual de Utilizador

Manual de Utilizador Manual de Utilizador Introdução Este manual de utilizador tem por objectivo a introdução ao programa de gestão de um campeonato de voleibol aos seus utilizadores. Para isso, a informação será organizada

Leia mais

Projecto de Lógica para Programação Os suspeitos do costume

Projecto de Lógica para Programação Os suspeitos do costume Projecto de Lógica para Programação Os suspeitos do costume Licenciatura em Engenharia Informática e de Computadores Instituto Superior Técnico 2012-2013 1 Introdução A Avó Einstein vive num bairro problemático,

Leia mais

PROGRAMAÇÃO DE MICROPROCESSADORES 2007 / 2008

PROGRAMAÇÃO DE MICROPROCESSADORES 2007 / 2008 Departamento de Engenharia Electrotécnica PROGRAMAÇÃO DE MICROPROCESSADORES 2007 / 2008 Mestrado Integrado em Engenharia Electrotécnica e Computadores 1º ano 1º semestre Funções e Vectores http://tele1.dee.fct.unl.pt

Leia mais

Elementos de Programação Projecto de Biocomputação

Elementos de Programação Projecto de Biocomputação Elementos de Programação Projecto de Biocomputação Departamento de Matemática, IST Novembro de 2016 Amoebots A simulação de cenários de vida artificial desempenha um papel importante no estudo de sistemas

Leia mais

Inteligência Artificial Projecto 1

Inteligência Artificial Projecto 1 Bantumi ESPECIFICAÇÕES O projecto destina-se a resolver um conjunto de problemas do jogo Bantumi utilizando métodos de procura em espaço de estados. Bantumi é um jogo derivado do jogo Mancala de origem

Leia mais

Primeiro Trabalho: Desempenho de protocolos de encaminhamento em redes ad hoc móveis

Primeiro Trabalho: Desempenho de protocolos de encaminhamento em redes ad hoc móveis Primeiro Trabalho: Desempenho de protocolos de encaminhamento em redes ad hoc móveis Rodolfo Oliveira rado@fct.unl.pt 1. Objectivos Neste trabalho pretende se realizar uma análise comparativa do desempenho

Leia mais

Exame de 1ª Época Introdução à Programação IGE e ETI 2003/02/25-1º semestre de 2002/2003 ISCTE

Exame de 1ª Época Introdução à Programação IGE e ETI 2003/02/25-1º semestre de 2002/2003 ISCTE Recibo do Exame de 1ª Época de Introdução à Programação (IGE e ETI), 2003/02/25 1º semestre de 2002/2003, ISCTE Nome do aluno:... Número do aluno:... Assinatura do docente:... Notas: Exame de 1ª Época

Leia mais

Manual do Cibernauta

Manual do Cibernauta Faculdade de Engenharia da Universidade do Porto Licenciatura Informática e Computação Laboratório de Informática Avançada Manual do Cibernauta Versão 1.1 João Braga http://www.fe.up.pt/~ei97027/lia.html

Leia mais

Bots em Counter Strike

Bots em Counter Strike Agentes Autónomos e Sistemas Multiagente 2º Semestre, 2005-2006 Departamento de Engenharia Informática Enunciado do projecto Bots em Counter Strike Personagens sintéticas inteligentes em ambiente competitivo

Leia mais

Engenharia de Software 2º Semestre de 2006/2007

Engenharia de Software 2º Semestre de 2006/2007 Engenharia de Software 2º Semestre de 2006/2007 Segundo enunciado detalhado do projecto: Portal OurDocs ic-es+alameda@mega.ist.utl.pt ic-es+tagus@mega.ist.utl.pt 1. Introdução Neste segundo enunciado do

Leia mais

Instituto Superior de Engenharia de Lisboa

Instituto Superior de Engenharia de Lisboa Instituto Superior de Engenharia de Lisboa Departamento de Engenharia de Electrónica de Telecomunicações de Computadores Guia de utilização do Moodle (Versão 1.6.2) Vista do Professor Versão 2.0 Outubro

Leia mais

Inteligência Artificial Projecto 2

Inteligência Artificial Projecto 2 Bantumi ESPECIFICAÇÕES O projecto destina-se a resolver um conjunto de problemas do jogo Bantumi utilizando métodos de procura em espaço de estados. Bantumi é um jogo derivado do jogo Mancala de origem

Leia mais

JURINFOR JURIGEST 4.4 Módulo de Contencioso e Pré-Contencioso Refª Documento: V

JURINFOR JURIGEST 4.4 Módulo de Contencioso e Pré-Contencioso Refª Documento: V JURINFOR JURIGEST 4.4 Módulo de Contencioso e Pré-Contencioso Refª Documento: V1.1-2007.09.05 Índice 1. Activação do Módulo de Contencioso e Pré-Contencioso... 5 2. Gestão de informação relativa a "partes

Leia mais

Projeto de Programação Entrega Intermédia

Projeto de Programação Entrega Intermédia Programação 2014/2015 Mestrado em Engenharia Electrotécnica e de Computadores (MEEC) Robot de Limpeza - iclean Projeto de Programação Entrega Intermédia 1 Introdução O objetivo deste projeto é desenvolver

Leia mais

2. Diga qual é a diferença entre tipos de informação elementares e tipos de informação estruturados.

2. Diga qual é a diferença entre tipos de informação elementares e tipos de informação estruturados. Capítulo 5 Abstracção de dados 5. Exercícios de revisão. Diga o que é um tipo abstracto de informação.. Diga qual é a diferença entre tipos de informação elementares e tipos de informação estruturados.

Leia mais

As opções de menu Análise ABC e Plano Trabalhos saíram do menu Objectos e passaram para o menu Ferramentas.

As opções de menu Análise ABC e Plano Trabalhos saíram do menu Objectos e passaram para o menu Ferramentas. Documento da versão PRODUTO ManWinWin DATA INÍCIO 18-10-2016 VERSÃO 5.4.2.0 DATA FECHO 10-01-2017 Novas Funcionalidades Preferências No separador Parque, as opções referentes ao registo Histórico Utilização

Leia mais

CRIAÇÃO E PERSONALIZAÇÃO DE PÁGINAS PESSOAIS NO SISTEMA FENIX

CRIAÇÃO E PERSONALIZAÇÃO DE PÁGINAS PESSOAIS NO SISTEMA FENIX CRIAÇÃO E PERSONALIZAÇÃO DE PÁGINAS PESSOAIS NO SISTEMA FENIX Para activar a página pessoal que o Fénix define de forma automática para cada utilizador, é necessário aceder ao sistema utilizando os códigos

Leia mais

ESCOLA SUPERIOR DE TECNOLOGIA DE TOMAR DEPARTAMENTO DE ENGENHARIA INFORMÁTICA 2006/2007

ESCOLA SUPERIOR DE TECNOLOGIA DE TOMAR DEPARTAMENTO DE ENGENHARIA INFORMÁTICA 2006/2007 ESCOLA SUPERIOR DE TECNOLOGIA DE TOMAR DEPARTAMENTO DE ENGENHARIA INFORMÁTICA INTRODUÇÃO À PROGRAMAÇÃO (ENG. INFORMÁTICA) COMPUTADORES E PROGRAMAÇÃO I (ENG. ELECTROTÉCNICA) 2006/2007 TRABALHO PRÁTICO Nº

Leia mais

Departamento de Matemática da Universidade de Coimbra 2011/2012 Programação Orientada para os Objectos Projecto 2

Departamento de Matemática da Universidade de Coimbra 2011/2012 Programação Orientada para os Objectos Projecto 2 Departamento de Matemática da Universidade de Coimbra 2011/2012 Programação Orientada para os Objectos Projecto 2 Simulador de um Sistema de Filas de Espera Descrição Sumária: Uma empresa proprietária

Leia mais

Projeto de Introdução à Arquitetura de Computadores. Corridas de Bicicleta 2013 / 2014 LICENCIATURA EM ENGENHARIA INFORMÁTICA E DE COMPUTADORES

Projeto de Introdução à Arquitetura de Computadores. Corridas de Bicicleta 2013 / 2014 LICENCIATURA EM ENGENHARIA INFORMÁTICA E DE COMPUTADORES LICENCIATURA EM ENGENHARIA INFORMÁTICA E DE COMPUTADORES Projeto de Introdução à Arquitetura de Computadores Corridas de Bicicleta 2013 / 2014 INSTITUTO SUPERIOR TÉCNICO Índice 1. Objetivo... 3 2. Descrição

Leia mais

Projecto de Algoritmos e Estruturas de Dados

Projecto de Algoritmos e Estruturas de Dados Projecto de Algoritmos e Estruturas de Dados Licenciatura em Engenharia Electrotécnica e de Computadores Licenciatura em Engenharia Electrónica 1 o ano, 2 o Semestre, 2005/2006 Instituto Superior Técnico

Leia mais

Aplicações de Escritório Electrónico

Aplicações de Escritório Electrónico Universidade de Aveiro Escola Superior de Tecnologia e Gestão de Águeda Curso de Especialização Tecnológica em Práticas Administrativas e Tradução Microsoft Word Folha de trabalho 6 Formatação de estilos

Leia mais

O Mundo das Margaridas

O Mundo das Margaridas O Mundo das Margaridas Enunciado da 1ª parte do projecto 2ªfase de Fundamentos da Programação e 2ªfase de Elementos de Programação 19 de Novembro de 2007 Aviso: Este enunciado descreve o que é pretendido

Leia mais

Corrigir um valor de erro

Corrigir um valor de erro Corrigir um valor de erro Se uma fórmula não conseguir avaliar adequadamente um resultado, o Microsoft Office Excel mostrará um valor de erro. Cada tipo de erro tem causas e soluções diferentes. Corrigir

Leia mais

Disciplina de Base de Dados Enunciado do Projeto Parte 1

Disciplina de Base de Dados Enunciado do Projeto Parte 1 Disciplina de Base de Dados Enunciado do Projeto Parte 1 O projeto da disciplina de Bases de Dados consiste na conceção de uma base de dados para suporte a uma aplicação descrita na Secção 2, sendo esta

Leia mais

O Manual do Kiriki. Albert Astals Cid Eugene Trounev Tradução: José Pires

O Manual do Kiriki. Albert Astals Cid Eugene Trounev Tradução: José Pires Albert Astals Cid Eugene Trounev Tradução: José Pires 2 Conteúdo 1 Introdução 5 2 Como Jogar 6 3 Regras do Jogo, Estratégias e Sugestões 8 3.1 Regras do Jogo........................................ 8 4

Leia mais

Trabalho Prático Data de Entrega : 30 de Maio

Trabalho Prático Data de Entrega : 30 de Maio Escola Superior de Tecnologia / Instituto Politécnico de Setúbal Algoritmos e Tipos Abstractos de Informação 2005/2006 Trabalho Prático Data de Entrega : 30 de Maio O problema Pretende-se realizar um jogo

Leia mais

Capítulo 9: Linguagens sensíveis ao contexto e autômatos linearmente limitados.

Capítulo 9: Linguagens sensíveis ao contexto e autômatos linearmente limitados. Capítulo 9: Linguagens sensíveis ao contexto e autômatos linearmente limitados. José Lucas Rangel 9.1 - Introdução. Como já vimos anteriormente, a classe das linguagens sensíveis ao contexto (lsc) é uma

Leia mais

Teoria da Computação. 2006/2007 Trabalho prático nº 1. Trabalho realizado por: Pedro Oliveira ( ) Rui Costa ( ) Turma: TP1

Teoria da Computação. 2006/2007 Trabalho prático nº 1. Trabalho realizado por: Pedro Oliveira ( ) Rui Costa ( ) Turma: TP1 2006/2007 Trabalho prático nº 1 Trabalho realizado por: Pedro Oliveira (501062444) Rui Costa (501062452) Turma: TP1 1 - Introdução O objectivo deste trabalho era implementar um simulador de Autómatos Finitos

Leia mais

Melhor caminho entre duas estações de metro

Melhor caminho entre duas estações de metro Melhor caminho entre duas estações de metro Concepção e Análise de Algoritmos Turma Nuno Machado Matos Tiago Daniel Sá Cunha Data: 11 de Junho de 2010 Introdução No âmbito da realização do projecto da

Leia mais

SISTEMAS DIGITAIS LETI, LEE Ano lectivo de 2015/2016 Trabalho 3 Circuitos Combinatórios Típicos

SISTEMAS DIGITAIS LETI, LEE Ano lectivo de 2015/2016 Trabalho 3 Circuitos Combinatórios Típicos SISTEMAS DIGITAIS LETI, LEE Ano lectivo de 2015/2016 Trabalho 3 Circuitos Combinatórios Típicos 1. Introdução Este trabalho foi concebido para que os alunos façam a concepção de um circuito lógico usando

Leia mais

NORMAS GERAIS DE AVALIAÇÃO

NORMAS GERAIS DE AVALIAÇÃO NORMAS GERAIS DE AVALIAÇÃO Preâmbulo Estas Normas Gerais de Avaliação têm como objectivo enquadrar o funcionamento das diferentes Unidades Curriculares 1 dos cursos de Licenciatura, Mestrado 2 e Mestrado

Leia mais

Computação e Programação Exame Época de recurso

Computação e Programação Exame Época de recurso Nome : Número : Computação e Programação 2013-2014 Mestrado Integrado em Engenharia Civil Licenciatura Bolonha em Engenharia Geológica e de Minas DECivil Exame Época de recurso 29 de Janeiro de 2014 v

Leia mais

Objectivos. Programação I (2010/2011) 2 o Trabalho de Programação

Objectivos. Programação I (2010/2011) 2 o Trabalho de Programação Programação I (2010/2011) 2 o Trabalho de Programação Introdução As progressões aritméticas e geométricas são exemplos de sucessões numéricas onde o elemento n + 1 depende do elemento n e de uma constante.

Leia mais

Universidade Federal de Alfenas

Universidade Federal de Alfenas Universidade Federal de Alfenas Linguagens Formais e Autômatos Aula 15 Máquinas de Turing (parte 2) humberto@bcc.unifal-mg.edu.br Última Aula Uma Máquina de Turing (MT) possui: uma fita infinita para representar

Leia mais

Computação e Programação

Computação e Programação Computação e Programação MEMec, LEAN - 1º Semestre 2015-2016 Aula Teórica 10 Exemplo de desenvolvimento de Programa Modular: Máquina de venda de bilhetes D.E.M. Área Científica de Controlo Automação e

Leia mais

Curso Ano Semestre Docente. 1º 2º Bruno Silva

Curso Ano Semestre Docente. 1º 2º Bruno Silva Curso Ano Semestre Docente CCO: Licenciatura em Comunicação, Cultura e Organizações 1º 2º Bruno Silva Objectivos: Dotar os alunos de competência na Área das Tecnologias de Informação, com particular ênfase

Leia mais

O Manual do Picmi. Jakob Gruber Tradução: José Pires

O Manual do Picmi. Jakob Gruber Tradução: José Pires Jakob Gruber Tradução: José Pires 2 Conteúdo 1 Introdução 6 2 Como Jogar 7 3 Regras do Jogo, Estratégias e Sugestões 8 3.1 Regras............................................ 8 4 Apresentação à Interface

Leia mais

Modelação Engenharia de Software

Modelação Engenharia de Software Modelação Engenharia de Software 2 o Semestre de 2008/2009 3 a entrega: Requisitos do sistema Test O Matic Sistema Nacional para as Competências Profissionais de Utopia 11 de Maio de 2009 1 Introdução

Leia mais

X-IntegConfig. Configuração da integração do X-Mobile. Versão 1.0.7

X-IntegConfig. Configuração da integração do X-Mobile. Versão 1.0.7 X-IntegConfig Configuração da integração do X-Mobile Versão 1.0.7 Índice - Introdução...2 - Como usar o X-IntegConfig...3 - Detalhes do ficheiro de importação...5 (a) Edição de Instrução SQL...8 (b) Configuração

Leia mais

Laboratório de Informática Avançada Automatização de Horários Manual do Professor

Laboratório de Informática Avançada Automatização de Horários Manual do Professor Faculdade de Engenharia da Universidade do Porto Licenciatura Informática e Computação Laboratório de Informática Avançada Automatização de Horários Manual do Professor João Braga http://www.fe.up.pt/~ei97027/lia.html

Leia mais

Documento da versão. Novas Funcionalidades. Ecrã Principal. Ecrã Principal Preferências. Parametrização Trabalhos Séries OT

Documento da versão. Novas Funcionalidades. Ecrã Principal. Ecrã Principal Preferências. Parametrização Trabalhos Séries OT Documento da versão PRODUTO ManWinWin DATA INÍCIO 13-04-2015 VERSÃO 5.3.1.0 DATA FECHO 24-07-2015 Novas Funcionalidades Ecrã Principal No módulo Parque passou a ser possível escolher a árvore que se pretende

Leia mais

1 - Ambiente de desenvolvimento

1 - Ambiente de desenvolvimento Neste documento começa-se por apresentar o ambiente de desenvolvimento integrado do Visual Basic (menu bar, toolbars, toolbox, project explorer window, properties window, form designer e code editor window).

Leia mais

Engenharia de Software

Engenharia de Software Engenharia de Software 2 o Semestre de 2006/2007 Primeiro enunciado detalhado do projecto: Portal OurDocs ic-es+alameda@mega.ist.utl.pt ic-es+tagus@mega.ist.utl.pt 1 Introdução O enunciado base do projecto

Leia mais

Como construir uma animação em Excel Proporcionalidade Directa. Gráfico da função y = k.x

Como construir uma animação em Excel Proporcionalidade Directa. Gráfico da função y = k.x Como construir uma animação em Excel Proporcionalidade Directa. Gráfico da função y = k.x Supõe que um carro viaja de Lisboa ao Porto (~300 km) a uma velocidade constante de 90 km/h. Neste caso a distância

Leia mais

Material Teórico - Módulo Matrizes e Sistemas Lineares. Sistemas Lineares - Parte 2. Terceiro Ano do Ensino Médio

Material Teórico - Módulo Matrizes e Sistemas Lineares. Sistemas Lineares - Parte 2. Terceiro Ano do Ensino Médio Material Teórico - Módulo Matrizes e Sistemas Lineares Sistemas Lineares - Parte 2 Terceiro Ano do Ensino Médio Autor: Prof Fabrício Siqueira Benevides Revisor: Prof Antonio Caminha M Neto 1 A representação

Leia mais

Agentes em Counter Strike

Agentes em Counter Strike Agentes Autónomos e Sistemas Multiagente 2º Semestre, 2007-2008 Departamento de Engenharia Informática Enunciado do projecto Agentes em Counter Strike 1 de Maio de 2008 1 Introdução O objectivo do projecto

Leia mais

OBMEP 2010 Soluções da prova da 2ª Fase Nível 2. Questão 1

OBMEP 2010 Soluções da prova da 2ª Fase Nível 2. Questão 1 Questão a) Para saber o número que deve dizer ao matemágico, Joãozinho deve fazer quatro contas: ª conta: multiplicar o número no cartão escolhido por 2; 2ª conta: somar 3 ao resultado da primeira conta;

Leia mais

UFCD 786 Instalação e configuração de sistemas de bases de dados

UFCD 786 Instalação e configuração de sistemas de bases de dados Pág 2 UFCD 786 Instalação e configuração de sistemas de bases de dados Formadora Elsa Almeida Índice 1 Introdução... 3 2 Formulários... 4 2.1 Criar Formulários... 4 2.2 Inserção de Novos Registos e Manipulação

Leia mais

O Manual do Kapman. Thomas Gallinari Tradução: José Pires

O Manual do Kapman. Thomas Gallinari Tradução: José Pires Thomas Gallinari Tradução: José Pires 2 Conteúdo 1 Introdução 6 2 Como Jogar 7 3 Regras do Jogo, Estratégias e Sugestões 8 3.1 Regras............................................ 8 3.2 Estratégias e Dicas.....................................

Leia mais

Ficha 1 Noções de sequência e decisão em algoritmia

Ficha 1 Noções de sequência e decisão em algoritmia Ficha 1 Noções de sequência e decisão em algoritmia 1. Ler uma temperatura em Celsius e converter para Fahrenheit. Elabore o algoritmo e especifique as estruturas de dados necessárias para a resolução

Leia mais

Manual Técnico. Sudoku. Disciplina de. Programação Lógica e Funcional. Rui Madeira. Gustavo Graça Patrício Nº Turma A - Diurno

Manual Técnico. Sudoku. Disciplina de. Programação Lógica e Funcional. Rui Madeira. Gustavo Graça Patrício Nº Turma A - Diurno Disciplina de Programação Lógica e Funcional Curso de Engenharia Informática Industrial Ano Lectivo de 2005/2006 Manual Técnico Sudoku Trabalho Executado por: Gustavo Graça Patrício Nº 4757 - Turma A -

Leia mais

Teoria da Computação. Unidade 3 Máquinas Universais. Referência Teoria da Computação (Divério, 2000)

Teoria da Computação. Unidade 3 Máquinas Universais. Referência Teoria da Computação (Divério, 2000) Teoria da Computação Referência Teoria da Computação (Divério, 2000) 1 L={(0,1)*00} de forma que você pode usar uma Máquina de Turing que não altera os símbolos da fita e sempre move a direita. MT_(0,1)*00=({0,1},{q

Leia mais

Um SGBD permite que cada utilizador tenha uma vista diferente (abstrata) do conteúdo da base de dados;

Um SGBD permite que cada utilizador tenha uma vista diferente (abstrata) do conteúdo da base de dados; 1 Bioinformatica Conceitos Básicos Camadas de abstração Um SGBD permite que cada utilizador tenha uma vista diferente (abstrata) do conteúdo da base de dados; Cada utilizador necessita de ter acesso a

Leia mais

FORMAÇÃO DE MICROSOFT EXCEL 2010

FORMAÇÃO DE MICROSOFT EXCEL 2010 FORMAÇÃO DE MICROSOFT EXCEL 2010 Mário de Almeida Pedro, M. Sc. Novembro 2013 Bemvindo Identificação da UFCD UFCD nº 0756 Folha de Cálculo, com a duração de 50 horas Microsoft Excel 2010 Objectivos: No

Leia mais

Teste do Programa Writer do OpenOffice

Teste do Programa Writer do OpenOffice Teste do Programa Writer do OpenOffice Patrícia Barrosa Filipe mei04013 Disciplina: Teste e Qualidade de Software Mestrado em Engenharia Informática - FEUP 1 Índice Introdução... 3 Oppenoffice Writer...

Leia mais

Gatos & Cães Simon Norton, 1970s

Gatos & Cães Simon Norton, 1970s Gatos & Cães Simon Norton, 1970s Um tabuleiro quadrado 8 por 8. 28 peças gato e 28 peças cão (representadas respectivamente por peças negras e brancas). Ganha o jogador que realizar a última jogada. zona

Leia mais

Manual do KReversi. Clay Pradarits Desenvolvimento: Mario Weilguni Revisão: Lauri Watts Tradução: José Pires

Manual do KReversi. Clay Pradarits Desenvolvimento: Mario Weilguni Revisão: Lauri Watts Tradução: José Pires Clay Pradarits Desenvolvimento: Mario Weilguni Revisão: Lauri Watts Tradução: José Pires 2 Conteúdo 1 Introdução 5 2 Como Jogar 6 3 Regras do Jogo, Estratégias e Sugestões 7 3.1 Básicos............................................

Leia mais

Manual de Utilização ZSPDA

Manual de Utilização ZSPDA Manual de Utilização ZSPDA Ao entrar no software de PDA, é mostrado o seguinte menu. (Fig. 1) 1 (Fig. 1) A data mostrada no menu, indica a data de facturação. Para alterar essa data, o utilizador deverá

Leia mais

SISTEMAS DIGITAIS LETI, LEE Ano lectivo de 2013/2014 Trabalho 2 Circuitos Combinatórios Típicos

SISTEMAS DIGITAIS LETI, LEE Ano lectivo de 2013/2014 Trabalho 2 Circuitos Combinatórios Típicos SISTEMAS DIGITAIS LETI, LEE Ano lectivo de 2013/2014 Trabalho 2 Circuitos Combinatórios Típicos 1. Introdução Este trabalho foi concebido para que os alunos façam a concepção de um circuito lógico usando

Leia mais

Tecnologias da Informação e Comunicação

Tecnologias da Informação e Comunicação Através da pesquisa rápida do Windows digita Excel e abre o programa. Cria uma pasta na tua pen de nome Excel. Guarda o teu trabalho com o nome finanças. Atenção: Em qualquer altura podes consultar os

Leia mais

O Manual do Bovo. Aron Bostrom Eugene Trounev Tradução: José Pires BOVO N 5

O Manual do Bovo. Aron Bostrom Eugene Trounev Tradução: José Pires BOVO N 5 Aron Bostrom Eugene Trounev Tradução: José Pires BOVO N 5 2 Conteúdo 1 Introdução 5 2 Como jogar 6 3 Regras do Jogo, Estratégias e Sugestões 8 3.1 Regras do Jogo........................................

Leia mais

Engenharia de Software

Engenharia de Software Sumário Engenharia de Software Modelos de desenvolvimento de software Fases de desenvolvimento Programação modular Abordagem top-down e bottom-up Linguagens de programação: Compilação / Interpretação Aplicação

Leia mais

Semáforo Autor: Alan Parr. Avanço Autor: Dan Troyka, Material Um tabuleiro quadrado 7 por peças brancas e 14 peças negras.

Semáforo Autor: Alan Parr. Avanço Autor: Dan Troyka, Material Um tabuleiro quadrado 7 por peças brancas e 14 peças negras. Avanço Autor: Dan Troyka, 2000 Material Um tabuleiro quadrado 7 por 7. 14 peças brancas e 14 peças negras. Objectivo posição inicial Um jogador ganha se chegar com uma das suas peças à primeira linha do

Leia mais

Trabalho Prático de Técnicas de Programação (2003/2004)

Trabalho Prático de Técnicas de Programação (2003/2004) Trabalho Prático de Técnicas de Programação (2003/2004) Regras para a implementação do trabalho prático: 1. O trabalho é realizado individualmente ou em grupos de dois alunos. 2. O trabalho é atribuído

Leia mais

Gestão de Base de dados Formulários

Gestão de Base de dados Formulários Gestão de Base de dados Formulários Ano Letivo 2014/2015 Professora: Vanda Pereira Formulários Os Formulários constituem uma outra forma de visualizar os dados armazenados nas tabela ou disponibilizados

Leia mais

Dispor e organizar folhas de cálculo

Dispor e organizar folhas de cálculo Dispor e organizar folhas de cálculo O Excel fornece várias funcionalidades para o ajudar a trabalhar e visualizar com as folhas de cálculo. Fixar linhas e colunas Pode fixar (ou bloquear) linhas e colunas

Leia mais

Ministério das Finanças Instituto de Informática. Departamento de Sistemas de Informação. Descontos para a A.D.S.E.

Ministério das Finanças Instituto de Informática. Departamento de Sistemas de Informação. Descontos para a A.D.S.E. Ministério das Finanças Instituto de Informática Departamento de Sistemas de Informação Descontos para a A.D.S.E. Versão 6.0-2009 ÍNDICE 1 OBJECTIVO 3 2 TRATAMENTOS PRÉVIOS 3 2.1 Situação Remuneratória

Leia mais

Trabalhos Práticos. Programação II Curso: Engª Electrotécnica - Electrónica e Computadores

Trabalhos Práticos. Programação II Curso: Engª Electrotécnica - Electrónica e Computadores s Práticos Programação II Curso: Engª Electrotécnica - Electrónica e Computadores 1. Objectivos 2. Calendarização 3. Normas 3.1 Relatório de Progresso 3.2 Relatório Final 3.3 Avaliação 4. Propostas 1.

Leia mais

Introdução à Computação. Programas Básicos. ISEP DEI, Angelo Martins 2006 Programas Básicos - 1

Introdução à Computação. Programas Básicos. ISEP DEI, Angelo Martins 2006 Programas Básicos - 1 Introdução à Computação Programas Básicos ISEP DEI, Angelo Martins 2006 Programas Básicos - 1 Conteúdo Exemplo de um programa Apresentação sumária da construção de um programa em VB. Objectos e o mecanismo

Leia mais

ConvertConta Versão 1.1

ConvertConta Versão 1.1 ConvertConta 2012 Versão 1.1 Dezembro 2011 Índice Índice... 2 Introdução... 3 Conversão do Plano de Contas... 4 Criação do documento de abertura... 12 Empresas com movimentos no exercício 2012... 12 Pg

Leia mais

earte Portal de Arte e Cultura

earte Portal de Arte e Cultura v 2.0 Tutorial Guia Rápido de Utilização 2008-2011 SIQuant Engenharia do Território e Sistemas de Informação, Lda. Web: www.siquant.pt E-mail: mail@siquant.pt Copyright SIQuant 2008-2011. Todos os direitos

Leia mais

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO SISTEMAS DE GESTÃO DE BASE DE DADOS CONCEITOS BÁSICOS

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO SISTEMAS DE GESTÃO DE BASE DE DADOS CONCEITOS BÁSICOS TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO CONCEITOS BÁSICOS Necessidade das base de dados Permite guardar dados dos mais variados tipos; Permite um rápido e fácil acesso aos dados; Acelera os processos de

Leia mais

Um sistema de difusão de informação a nível da aplicação

Um sistema de difusão de informação a nível da aplicação Um sistema de difusão de informação a nível da aplicação Projecto de Redes de Computadores I - 2008/2009 LEIC IST, Tagus Park 21 de Setembro de 2008 1. Sumário O projecto pretende desenvolver um sistema

Leia mais

CAMPUS VIRTUAL. Manual de utilização. Docentes

CAMPUS VIRTUAL. Manual de utilização. Docentes CAMPUS VIRTUAL Manual de utilização Docentes CTM JANEIRO 2015 1. Objetivo do Documento 02 2. Acesso ao Campus Virtual 02 Acesso através do site ISCIA - iscia.edu.pt Acesso direto campus.iscia.edu.pt 3.

Leia mais

5. Gestão das classificações resultantes dos processos de avaliação da plataforma

5. Gestão das classificações resultantes dos processos de avaliação da plataforma MOODLE - NÍVEL II ACTIVIDADES 5. Gestão das classificações resultantes dos processos de avaliação da plataforma As Classificações, que se encontra no bloco Administração, permitem ao professor para executar

Leia mais

APROG. Civil. Programas Básicos. ISEP DEI, Angelo Martins 2006 ISEP DEI, António Silva Programas Básicos

APROG. Civil. Programas Básicos. ISEP DEI, Angelo Martins 2006 ISEP DEI, António Silva Programas Básicos Conteúdo Exemplo de um programa Apresentação sumária da construção de um programa em VB. Objectos e o mecanismo de eventos Apresentação dos conceitos básicos de programação em ambiente MS Windows. Tipos

Leia mais

Manual do Gestor das Salas

Manual do Gestor das Salas Faculdade de Engenharia da Universidade do Porto Licenciatura Informática e Computação Laboratório de Informática Avançada Automatização de Horários Manual do Gestor das Salas João Braga http://www.fe.up.pt/~ei97027/lia.html

Leia mais

GUIA PARA O PREENCHIMENTO DOS FORMULÁRIOS SISTEMA DE GESTÃO PARA EMBALAGENS NÃO REUTILIZÁVEIS

GUIA PARA O PREENCHIMENTO DOS FORMULÁRIOS SISTEMA DE GESTÃO PARA EMBALAGENS NÃO REUTILIZÁVEIS GUIA PARA O PREENCHIMENTO DOS FORMULÁRIOS SISTEMA DE GESTÃO PARA EMBALAGENS NÃO REUTILIZÁVEIS Versão: 1.0 Data: 05-06-2009 Índice Acesso e estados dos Formulários... 3 Escolha do Formulário e submissão...

Leia mais

Para visualizar corretamente configurar a tela para 1024 x 768 pixels. Tabelas

Para visualizar corretamente configurar a tela para 1024 x 768 pixels. Tabelas Para visualizar corretamente configurar a tela para 1024 x 768 pixels Tabelas Sumário Alinhamento de conteúdo Autoformatação Barra suspensa Como criar uma tabela Como excluir elementos Como inserir elementos

Leia mais

Ficha prática nº 3. SGBD Microsoft Access. Objectivo: Criação de queries e definição de controlo calculado

Ficha prática nº 3. SGBD Microsoft Access. Objectivo: Criação de queries e definição de controlo calculado Instituto Superior Politécnico de Viseu Escola Superior de Tecnologia Departamento de Informática Ficha prática nº 3 SGBD Microsoft Access Objectivo: Criação de queries e definição de controlo calculado

Leia mais

Concepção e Fabrico Assistido por Computador

Concepção e Fabrico Assistido por Computador Concepção e Fabrico Assistido por Computador João Pedro Amorim Lobato: gei00017@fe.up.pt Turma: LGEI Trabalho sobre Regressões em Visual Basic Licenciatura em Gestão e Engenharia Industrial

Leia mais

Fundamentos de Programação

Fundamentos de Programação Licenciatura em Engenharia Informática e de Computadores Fundamentos de Programação Trabalho para casa 22 de Setembro de 2008 Este trabalho corresponde à instalação, no seu computador, do interpretador

Leia mais

COMPUTAÇÃO E PROGRAMAÇÃO 1º Semestre 2010/2011 MEMec, LEAN

COMPUTAÇÃO E PROGRAMAÇÃO 1º Semestre 2010/2011 MEMec, LEAN COMPUTAÇÃO E PROGRAMAÇÃO 1º Semestre 2010/2011 MEMec, LEAN Enunciado do Projecto Data limite para entrega da Parte 1: 12 de Novembro de 2010. Data limite para entrega da Parte 2: 17 de Dezembro de 2010.

Leia mais

Exercícios de Excel com Programação em VBA. Luís Vieira Lobo

Exercícios de Excel com Programação em VBA. Luís Vieira Lobo Exercícios de Excel com Programação em VBA Luís Vieira Lobo Enunciados 1) Considere o seguinte livro Excel constituído pelas folhas de cálculo Pauta e Exame (ver Fig. 1 e Fig. 2). Fig. 1 Folha de cálculo

Leia mais

Importação de frações

Importação de frações 1. Finalidade Permitir a introdução dos dados gerais das frações a partir de um ficheiro excel. 2. Descrição Quando se está a introduzir um novo condomínio na plataforma, usando o assistente de criação,

Leia mais

Produção de tutoriais. Suellem Oliveira

Produção de tutoriais. Suellem Oliveira Prefeitura de Volta Redonda Secretaria Municipal de Educação Implementação de Informática Aplicada à Educação Produção de tutoriais Suellem Oliveira Jclic Completar Textos Para a produção deste Tutorial

Leia mais