O Mundo das Margaridas

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

Download "O Mundo das Margaridas"

Transcrição

1 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 fase de entrega do projecto para as cadeiras de Fundamentos da Programação e Elementos de Programação. É o segundo enunciado de entre três que definem cada uma das três fases do projecto. Eventuais correcções posteriores ao lançamento deste enunciado, bem como explicações adicionais que possam ajudar na elaboração do projecto, serão disponibilizadas na página da cadeira na secção Projecto até ao dia 23 de Dezembro. Esses anúncios terão valor oficial, pelo que a leitura deste enunciado deve obrigatoriamente ser completada com consultas regulares à referida página. O prazo de entrega desta fase do projecto é dia 03 de Janeiro de 2008 às 22h00. 1 Contexto No primeiro enunciado do projecto foi introduzido o Mundo das Margaridas, um modelo simplificado de um planeta que se encontra na proximidade de um sol, e que é habitado apenas por margaridas. Estas margaridas podem ter diferentes cores, e mais importantemente, diferentes albedos, exibindo assim diferentes capacidades de absorção da luz solar. Ao absorver ou reflectir a luz solar, as margaridas influenciam a temperatura local à sua volta, podendo torná-la mais baixa ou mais elevada do que a temperatura planetária. Assim, as populações de margaridas têm a capacidade de intervir no seu ambiente, regulando a sua temperatura local. No modelo original Daisyworld, as margaridas podem ter apenas uma de duas cores branca ou preta. No entanto, tal como foi mencionado no enunciado anterior, o nosso modelo será ligeiramente mais complexo, e permitirá o aparecimento de margaridas com várias tonalidades, através de mutações genéticas que poderão ocorrer no momento da reprodução de cada margarida. 1

2 Na primeira fase do projecto foram apresentadas e explicadas as várias fórmulas que regem o Mundo das Margaridas. O trabalho proposto consistiu na implementação de um conjunto de procedimentos que traduzissem essas fórmulas. Nesta fase de elaboração do projecto daremos mais atenção à distribuição espacial no planeta das Margaridas, e desenvolveremos ainda os aspectos da geração de aleatoriedade e da representação do planeta e das margaridas. O objectivo desta fase é a apreensão da metodologia dos Tipos Abstractos de Informação (TAIs). 2 Descrição do modelo (continuação) 2.1 Aleatoriedade Geração de números pseudo-aleatórios. As regras que regem o Mundo das Margaridas têm uma componente probabilística, e consequentemente, as simulações terão um certo grau de não-determinismo. Por outras palavras, repetidas execuções do programa não produzirão as mesmas configurações do planeta. Para obter o efeito da aleatoriedade, deverá ser utilizado o procedimento gerador, fornecido na página da cadeira. Este procedimento pode ser chamado de duas maneiras: 1. (gerador "inicializa" semente H V) Quando gerador é chamado tendo como primeiro argumento a cadeia de caracteres "inicializa", um gerador de números pseudo-aleatórios 1 é inicializado com o inteiro semente entre 0 e A partir desse momento passará a ser possível gerar números aleatórios para cada instante e posição numa grelha com H linhas e V colunas. 2. (gerador "aleatorio" t h v) Quando gerador é chamado tendo como primeiro argumento a cadeia de caracteres "aleatorio", é retornado um novo número aleatório correspondente ao instante t e posição (h, v). Esse número será um inteiro no intervalo {0, }. O número aleatório que é gerado é completamente determinado pela semente com que o gerador tenha sido inicializado, e pelo instante e posição 1 Um gerador de números pseudo-aleatórios é um algoritmo que produz uma sequência de números que aproxima as propriedades dos números aleatórios. A sequência gerada não é verdadeiramente aleatória daí a designação de pseudo por ser determinada por um estado inicial, denominado frequentemente semente. 2

3 para o qual se gera o número. Sendo assim, pode-se concluir que existirão 2 31 possíveis execuções para o mesmo programa. Na avaliação do projecto vamos tirar partido deste facto do seguinte modo: um dos parâmetros do programa será a semente do gerador de números pseudo-aleatorios; assim, todos os programas correctos que recebam o mesmo inteiro como semente originarão exactamente o mesmo comportamento, tornando possível a avaliação automática. Para este mecanismo funcionar, a inicialização do gerador deve ser feita uma única vez no início do programa. Probabilidades. Dado que os números pseudo-aleatórios gerados pelo processo acima se encontram no intervalo {0, }, decidir a ocorrência de um determinado evento com a probabilidade p é equivalente a testar se o número x que é gerado satisfaz a condição x < p (2 31 1). Propagação de margaridas. Quando, numa mudança de instante t para t + 1, se decide que uma nova margarida deve aparecer num outro ponto do planeta, é necessário decidir em que posição ela deve aparecer. Tal como foi mencionado no primeiro enunciado do projecto, essa posição será escolhida aleatoriamente. Para isso há que considerar o número aleatório x gerado para o instante anterior t e posição da margarida mãe. A partir deste x, é possível obter uma posição num planeta de H linhas e V colunas x mod (H V ) em que cada posição é designada por um número entre 0 e H V 1, preenchendo as posições a partir do canto superior esquerdo, e percorrendo todas as linhas uma a uma da esquerda para a direita e de cima para baixo. O resultado da escolha aleatória de uma posição no planeta não resulta necessariamente numa posição vazia. No caso da posição não ser vazia, deve ser procurada a próxima posição vazia, pesquisando a grelha sequencialmente linha a linha da esquerda para a direita, e de cima para baixo, a partir da posição escolhida inicialmente. Quando for atingida a última posição da grelha, a pesquisa continua na mesma direcção a partir da posição (0, 0) da grelha, até à posição inicial. No caso de não existir nenhuma posição vazia para a margarida nascer, então a margarida não nasce. Mutações Quando, numa mudança de instante t para t + 1, uma margarida se reproduz, criando uma nova margarida, poderá ocorrer um erro de cópia do seu DNA, pelo que a nova margarida não é necessariamente igual à margarida mãe. No nosso mundo, a mutação pode ocorrer apenas a nível 3

4 do gene que determina o albedo da nova margarida. Isto significa que a nova margarida poderá ter um albedo diferente do da mãe. A probabilidade com que as mutações podem ocorrer será um parâmetro do modelo, designada probabilidade de mutação, e representada por M. O novo albedo (α f ) será obtido a partir do número aleatório x gerado para o instante anterior t e posição da mãe, bem como a partir do albedo α m da mãe, através da fórmula: { αm 1 3 α f =.(α m x ) se x < α m α m ( x α x m) se α m 2.2 Implementação do autómato celular O sistema de coordenadas. Tal como foi descrito no enunciado anterior, as possíveis localizações de margaridas no planeta são referenciadas usando duas coordenadas (h, v), em que h corresponde à linha em que a posição se encontra, e v corresponde à coluna em que a posição se encontra. Assim, num planeta com H linhas e V colunas, as possíveis localizações têm coordenadas 0 h < H e 0 v < V quando H e V > 0. Considera-se que um planeta com H ou V = 0 não tem posições. Convenciona-se que a posição (0, 0) representa a posição do canto superior esquerdo da grelha. Um novo instante. A cada passagem de instante, uma nova configuração C t+1 do planeta deve ser gerada a partir da configuração no instante anterior C t. A configuração C t do planeta deve ser analisada a partir do canto superior esquerdo, percorrendo, da esquerda para a direita, e de cima para baixo todas as células de cada linha. Para cada margarida encontrada, deve decidir-se qual a nova etapa da sua vida: ela poderá sobreviver ou morrer com uma certa probabilidade, e no caso de sobreviver, poderá reproduzir-se com outra probabilidade (conforme especificado no primeiro enunciado). Todas as decisões referentes à nova etapa na vida das margaridas fazemse com base na configuração C t (do instante anterior). Por exemplo, no caso de ela vir a gerar uma nova margarida numa nova localização (vazia) do planeta, a procura de uma posição vazia será feita com base em C t. Esta regra implica que poderá haver mais do que uma nova margarida a surgir na mesma posição do instante seguinte. A desambiguação deste caso será feita dando precedência à primeira margarida a ser gerada nessa posição. Por outras palavras, as margaridas seguintes destinadas a nascer em posições já ocupadas não vingam e pura e simplesmente não nascem. 4

5 Representação externa do planeta e das margaridas Enquanto que a representação interna isto é, em Scheme do planeta é deixada ao critério de cada grupo, a representação externa isto é, aquela que é utilizada para o programa ler uma configuração inicial do planeta (input), ou imprimir configurações resultantes da simulação (output) deverá respeitar regras muito precisas. Tal como já foi dito, a avaliação automática dos projectos será feita com base na comparação entre o output produzido e o output correcto, mediante o input que é dado. A representação externa de um planeta é uma única string S (cadeia de caracteres), satisfazendo o seguinte formato: A string S é composta por uma sequência de strings s, cada uma delas seguida de uma barra diagonal ( / ). Cada string s é composta por uma sequência de pequenas strings p separadas entre si por uma única barra vertical ( ). Cada string p representa o conteúdo de uma posição na grelha. Se a posição for vazia, p consiste num único caracter espaço ( ) entre os separadores mencionados acima. Se a posição for ocupada por uma margarida, então p constitui a cadeia de caracteres que consiste na representação externa das margaridas (definida a seguir). A representação externa de uma margarida é uma única string p (cadeia de caracteres) constituída por três strings a 1, a 2 e a 3 separadas pelo caracter hífen (, ), em que: a 1 representa o albedo da margarida nessa posição. a 2 representa a temperatura mínima de sobrevivência da margarida nessa posição a 3 representa a temperatura máxima de sobrevivência da margarida nessa posição A título de exemplo, a cadeia de caracteres 0.21,10,30 / ,12, ,15,45 / 0.1,15,40 / 0.21,15,45 / corresponde à representação externa de um planeta com a configuração mostrada na Figura 1. Note que não deve aparecer mais nenhum caracter para além daqueles especificados acima, incluindo espaços, tabulações e mudanças de linha. 5

6 Figura 1: Exemplo de planeta. Para efeitos de visualização e de verificação de representações externas de planetas será fornecido na página da cadeira um procedimento mostra_mundo que recebe como argumentos uma cadeia de caracteres contendo a representação externa de um planeta, e produz uma representação gráfica desse planeta. No caso da cadeia de caracteres não ter a formato especificado acima, o procedimento retorna uma mensagem de erro. Com o objectivo de simplificar a análise de cadeias de caracteres, será fornecido na página da cadeira um procedimento tokenize que recebe como argumentos uma cadeia de caracteres e um caracter separador, e retorna a lista das cadeias de caracteres que compõem a string recebida como argumento, separadas pelo caracter dado: > (tokenize "Olá, bom dia!" #\,) ("Olá" " bom dia!") 3 A entregar Nesta segunda fase do projecto deve ser submetido um ficheiro com nome proj2-fp0708-xx.zip (substituir xx pelo número do grupo, de modo a ocupar dois dígitos), que contém quatro outros ficheiros, nomeados: proj2-margarida-fp0708-xx.scm proj2-posicao-fp0708-xx.scm proj2-planeta-fp0708-xx.scm proj2-procs-fp0708-xx.scm 6

7 Para além destes quatro ficheiros obrigatórios, pode ser incluído um quinto ficheiro opcional com nome proj2-aux-fp0708-xx.scm (substituir xx pelo número do grupo, de modo a ocupar dois dígitos) no qual se guardam procedimentos auxiliares a ser usados pelos quatro ficheiros principais. Cada ficheiro deve conter um programa em Scheme, em conformidade com as instruções dadas nas quatro secções que se seguem. O código deve ser apresentado de forma mais legível possível; deve ser compatível e fazer uso, sempre que necessário, do código pedido no enunciado anterior. Todos os procedimentos devem testar se o tipo dos argumentos tem o formato esperado. Caso contrário o procedimento deve retornar, tal como na primeira parte do projecto, uma mensagem de erro sob a forma da seguinte cadeia de caracteres: Erro de input. Haverá ainda outro tipo de mensagens de erro, que especificaremos caso a caso, e que designamos erro de consistência. Estes erros ocorrem num procedimento quando, apesar de ter recebido argumentos com o tipo certo, existe algum problema de consistência que impede a realização da operação. Perante a ocorrência deste tipo de erros, os procedimentos devem retornar uma mensagem de erro sob a forma da seguinte cadeia de caracteres: Erro de consist^encia. 3.1 O tipo Margarida No ficheiro proj2-margarida-fp0708-xx.scm deve ser feita a implementação do tipo Margarida, de acordo com a assinatura: nova_margarida : [0, 1] Inteiro Inteiro Margarida String Esta operação recebe como argumentos um albedo, e duas temperaturas correspondentes à temperatura de sobrevivência mínima e máxima, e retorna a representação interna de uma margarida com esse albedo, e que tem como temperatura mínima e máxima de sobrevivência as temperaturas especificadas. Se a temperatura mínima não for inferior ou igual à segunda, o procedimento deve retornar um erro de consistência. albedo_margarida : Margarida [0, 1] String Esta operação recebe como argumento uma margarida, e retorna o seu albedo. 7

8 tempmin_margarida : Margarida Inteiro String Esta operação recebe como argumento uma margarida, e retorna a sua temperatura mínima de sobrevivência. tempmax_margarida : Margarida Inteiro String Esta operação recebe como argumento uma margarida, e retorna a sua temperatura máxima de sobrevivência. tempideal_margarida : Margarida Racional String Esta operação recebe como argumento uma margarida, e retorna a sua temperatura ideal de proliferação. margarida? : Universal Lógico Esta operação recebe como argumento um objecto qualquer, e retorna o valor lógico verdadeiro se e só se esse objecto for do tipo Margarida. imprime_margarida : Margarida String Esta operação recebe como argumento uma margarida, e retorna a representação externa de uma margarida sob a forma de uma cadeia de caracteres. Estas devem ser as únicas operações básicas do tipo Margarida. 3.2 O tipo Posição No ficheiro proj2-posicao-fp0708-xx.scm deve ser feita a implementação do tipo Posição, de acordo com a seguinte assinatura: nova_posicao : Natural Natural Posição String Esta operação recebe como argumentos uma linha e uma coluna do planeta, e retorna a representação interna da posição que se encontra nessa linha e nessa coluna. A correcção deste procedimento terá grande impacto na avaliação de todos os procedimentos que receberem como argumento a representação interna de uma posição do planeta. linha_posicao : Posição Natural String Esta operação recebe como argumento uma posição, e retorna a componente linha dessa posição. 8

9 coluna_posicao : Posição Natural String Esta operação recebe como argumento uma posição, e retorna a componente coluna dessa posição. posicao? : Universal Lógico Esta operação recebe como argumento um objecto qualquer, e retorna o valor lógico verdadeiro se e só se esse objecto for do tipo posição. posicao_valida? : Posição Natural Natural Lógico String Esta operação recebe como argumentos uma posição, o número de linhas e o número de colunas de um planeta, e retorna o valor lógico verdadeiro se e só se essa for uma posição válida do planeta, e retorna o valor lógico falso se e só se essa não for uma posição válida do planeta. Estas devem ser as únicas operações básicas do tipo Posição. 3.3 O tipo Planeta No ficheiro proj2-planeta-fp0708-xx.scm deve ser feita a implementação do tipo Planeta, que tem obrigatóriamente de ser baseada em listas, e ser compatível com a seguinte assinatura: novo_planeta : Natural Natural [0, 1] Planeta String Esta operação recebe como argumentos o número de linhas do planeta, o número de colunas do planeta, e o albedo da terra inabitada, e retorna a representação interna de um planeta sem margaridas. nasce_margarida : Planeta Posição Margarida Planeta String Esta operação recebe como argumentos a representação interna de um planeta, uma posição no planeta, e uma margarida, e retorna um planeta que resulta da inserção no planeta inicial da margarida na posição dada. Se nessa posição já se encontrar uma margarida, o procedimento deve retornar o mesmo planeta, inalterado. Se essa posição não for uma posição válida do planeta, o procedimento deve retornar um erro de consistência. morre_margarida : Planeta Posição Planeta String Esta operação recebe como argumentos a representação interna de um planeta e uma posição no planeta, e retorna um planeta que resulta de retirar do planeta inicial a margarida que se encontra na posição 9

10 dada. Se essa posição não for uma posição válida do planeta, ou se nessa posição não se encontrar nenhuma margarida, o procedimento deve retornar um erro de consistência. linhas_planeta : Planeta Natural String Esta operação recebe como argumento um planeta, e retorna o número de linhas desse planeta. colunas_planeta : Planeta Natural String Esta operação recebe como argumento um planeta, e retorna o número de colunas desse planeta. albedo_planeta : Planeta [0, 1] String Esta operação recebe como argumento um planeta, e retorna o valor do albedo da terra inabitada nesse planeta. obtem_margarida : Planeta Posição Margarida String Esta operação recebe como argumentos a representação interna de um planeta e uma posição no planeta em que se encontra uma margarida, e retorna a representação interna dessa margarida. Se essa posição não for uma posição válida do planeta, ou se nessa posição não se encontrar nenhuma margarida, o procedimento deve retornar um erro de consistência. tem_margarida? : Planeta Posição Lógico String Esta operação recebe como argumentos a representação interna de um planeta e uma posição no planeta, e retorna o valor lógico verdadeiro se e só se nesse planeta existe uma margarida na posição dada, e o valor lógico falso se e só se nessa posição não se encontrar nenhuma margarida. Se essa posição não for uma posição válida do planeta, o procedimento deve retornar um erro de consistência. planeta? : Universal Lógico Esta operação recebe como argumentos um objecto qualquer, e retorna o valor lógico verdadeiro se e só se esse objecto for do tipo Planeta. extern_to_intern : String [0, 1] Planeta String Esta operação recebe como argumento uma string que descreve uma possível configuração do planeta (no formato descrito em 2.2) e o albedo da terra inabitada, e retorna a sua representação interna. 10

11 A correcção deste procedimento terá grande impacto na avaliação de todos os procedimentos que recebem como argumento a representação interna de um planeta. intern_to_extern : Planeta String Esta operação recebe como argumento uma representação interna de uma configuração do planeta, e retorna uma string de caracteres que descreve a configuração do planeta (no formato descrito acima). Estas devem ser as únicas operações básicas do tipo Planeta. 3.4 Procedimentos No ficheiro proj2-procs-fp0708-xx.scm deve ser feita a implementação dos procedimentos definidos a seguir. Estes procedimentos devem fazer uso dos tipos abstractos de informação definidos anteriormente, e devem respeitar as barreiras da abstracção de dados. Para além do código específico desta segunda parte do projecto, o ficheiro deve conter obrigatóriamente o código correspondente à primeira fase de entrega, e deve continuar a satisfazer todas as condições do primeiro enunciado, salvo se forem explicitamente pedidas alterações. 1. Aleatoriedade (a) Um procedimento que determina se um dado evento deve ocorrer ou não, de acordo com uma probabilidade p. Este procedimento deve chamar-se joga_probabilidades e receber como argumentos (por esta ordem): a probabilidade p (um racional [0, 1]) um número pseudo-aleatório (inteiro {0, }. Este procedimento deve retornar um valor lógico, sendo a probabilidade de retornar #t igual a p. (b) Um procedimento que obtém uma posição aleatória num planeta de dimensões H V. Este procedimento deve chamar-se posicao_a_sorte e receber como argumentos (por esta ordem): o número de linhas H do planeta (inteiro 0) o número de colunas V do planeta (inteiro 0) um número pseudo-aleatório (inteiro {0, } Este procedimento deve retornar a posição gerada aleatoriamente. 11

12 (c) Um procedimento que obtém o albedo de uma nova margarida a partir de uma margarida mãe com um dado albedo, sabendo que uma mutação pode ocorrer com uma certa probabilidade M. Este procedimento deve chamar-se novo_albedo e receber como argumentos (por esta ordem): o albedo da margarida progenitora (racional [0, 1]) a probabilidade de mutação M (racional [0, 1]) um número pseudo-aleatório (inteiro {0, }) Este procedimento deve retornar o albedo da nova margarida (racional [0, 1]). 2. Vizinhanças Nos procedimentos pedidos nesta secção, sempre que houver uma referência a uma posição que não existe no planeta, deve ser retornado um erro de consistência. (a) Um procedimento que constrói uma lista de coordenadas das células que compõem a vizinhança de ordem n de uma célula numa dada posição pos da grelha (V n (pos)). Este procedimento deve chamar-se vizinhos_lista e receber como argumentos (por esta ordem): a posição pos dessa célula (Posição) o número de linhas H da grelha (inteiro 0) o número de colunas V da grelha (inteiro 0) a ordem n da vizinhança (inteiro 0) Este procedimento deve retornar uma lista de posições (na sua representação interna) contendo as coordenadas das células pertencentes à referida vizinhança, sem repetições, pela mesma ordem devolvida (e não a ordem impressa) pelo procedimento vizinhos_display (tal como especificado na pergunta 8. do primeiro enunciado), ou seja, começando da esquerda para a direita (do planeta) e de cima para baixo. Note-se que o procedimento vizinhos_lista é de facto muito semelhante ao procedimento vizinhos_display, sendo as únicas diferenças 2 o facto de receber uma posição (ao invés da linha e coluna) e devolver uma lista de posições (ao invés de uma lista de cadeias de caracteres). 2 Existe uma diferença adicional que é o facto deste procedimento não necessitar de imprimir as posições no ecrâ, no entanto não existe qualquer problema se o fizer. 12

13 (b) Um procedimento para determinar o número de margaridas que se encontram na vizinhança de uma posição do planeta. Este procedimento deve chamar-se quantas_vizinhas e receber como argumentos (por esta ordem): a representação interna da configuração de um planeta (Planeta) uma posição do planeta (Posição) a ordem n da vizinhança a considerar (inteiro 0) Este procedimento deve retornar o número de margaridas que se encontram na vizinhança (inteiro 0). (c) Um procedimento para calcular o albedo de uma região (α r ). Este procedimento deve chamar-se alb_regiao e, irá substituir o antigo procedimento com o mesmo nome que foi pedido no enunciado anterior 3. O procedimento tanto poderá ser utilizado para determinar o albedo de um planeta inteiro, como para calcular o albedo de uma pequena região do planeta em torno de uma margarida. No primeiro caso, o procedimento deve receber como argumento a representação interna da configuração do planeta (Planeta) enquanto que no segundo caso deve receber como argumentos (por esta ordem): a representação interna da configuração do planeta (Planeta) a ordem n da vizinhança que define a região (inteiro 0) a posição da margarida em questão (Posição) Este procedimento deve retornar um racional [0, 1]. (d) Um procedimento para determinar o conforto térmico de uma margarida num dado instante, tendo em conta uma ordem de vizinhança que define a temperatura local. Este procedimento deve chamar-se conforto_margarida e receber como argumentos (por esta ordem): o instante t (inteiro 0) a representação interna da configuração do planeta nesse instante (Planeta) a ordem n da vizinhança a considerar (inteiro 0) 3 Tal como foi definido no enunciado anterior, o albedo de uma região é a média ponderada dos albedos de cada posição dessa região. 13

14 a posição da margarida em questão (Posição) Este procedimento deve retornar o conforto térmico da margarida, um real [ 1, 1]. 4 Método de avaliação A nota resultante da avaliação desta fase do projecto projecto terá peso 25% na nota final do projecto, correspondendo assim a 10% da nota final à cadeira. A nota correspondente a esta fase será calculada do seguinte modo: 70% Execução correcta e robustez Para inputs no formato correcto, o output do programa deve ser igual àquele gerado por um programa correcto. No caso do input não ter o formato esperado, o programa deve retornar uma mensagem de erro (conforme especificado acima) e terminar normalmente. 20% Abstracção de dados O uso dos tipos abstractos de informação deve respeitar as barreira da abstracção de dados. Esta propriedade será testada automaticamente, verificando se os procedimentos implementados funcionam com outras implementações dos tipos pedidos. 10% Legibilidade do código A escolha de nomes, identação e introdução de comentários que apoiem a compreensão do programa. Chama-se a atenção para a importância de satisfazer todas as condições do enunciado. A execução, robustez e respeito pela abstracção de dados projectos serão avaliados automaticamente, pelo que as componentes do código que não satisfaçam literalmente os requisitos aqui definidos, mesmo que por diferenças mínimas, serão rejeitadas automaticamente. Serão aplicados métodos de detecção de cópias a todos os projectos. Projectos em que o código coincida total ou parcialmente com o de outros serão atribuídos a nota zero. 5 Planeamento da entrega do projecto O prazo de submissão da segunda fase é a 03 de Janeiro de 2007 às 22h00. O projecto deve ser feito obrigatoriamente em grupos de três alunos. São permitidas alterações à constituição dos grupos que foram formados na primeira fase do projecto, que se devem registar com antecedência no sistema Fénix (o prazo para o registo é 23 de Dezembro à meia-noite). 14

15 Qualquer tentativa de submissão de projectos por grupos de menos de três alunos não será avaliada. Qualquer pedido de alterações na constituição de um grupo, ou de formação de grupos, posterior a 23 de Dezembro não será efectuado. O projecto está a decorrer ao longo de três fases, em que as etapas ainda por realizar decorrerão pela seguinte ordem: Fase 2 Lançamento do segundo enunciado (este). Submissão da segunda parte do código, através do sistema Fénix. Lançamento dos resultados da avaliação automática. Discussão com os grupos acerca do desenvolvimento do projecto. Fase 3 Submissão da terceira parte do código, através do sistema Fénix. Entrega de relatório. Lançamento dos resultados da avaliação automática. Lançamento da nota final do projecto. A nota de cada aluno resultante das avaliações automáticas e dos relatórios do seu grupo poderá sofrer alterações de acordo com o seu nível de participação no desenvolvimento do projecto. 15

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

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

Introdução aos Algoritmos e Estruturas de Dados 2011/2012

Introdução aos Algoritmos e Estruturas de Dados 2011/2012 INSTITUTO SUPERIOR TÉCNICO Introdução aos Algoritmos e Estruturas de Dados 2011/2012 Enunciado do 3 o Projecto Data de entrega: 09 de Dezembro de 2011 às 23h59 1 Introdução Neste projecto pretende-se desenvolver

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

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

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

INF Fundamentos da Computação Gráfica Professor: Marcelo Gattass Aluno: Rogério Pinheiro de Souza

INF Fundamentos da Computação Gráfica Professor: Marcelo Gattass Aluno: Rogério Pinheiro de Souza INF2608 - Fundamentos da Computação Gráfica Professor: Marcelo Gattass Aluno: Rogério Pinheiro de Souza Trabalho 02 Visualização de Imagens Sísmicas e Detecção Automática de Horizonte Resumo Este trabalho

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação Primeiro Teste 16 de Abril de 2011 09:00 10:30 Nome: Número: Esta prova, individual e sem consulta, tem 7 páginas com 9 perguntas. A cotação de cada pergunta está assinalada

Leia mais

Introdução aos Números Pseudo-aleatórios. Profa. Dra. Soraia Raupp Musse

Introdução aos Números Pseudo-aleatórios. Profa. Dra. Soraia Raupp Musse Introdução aos Números Pseudo-aleatórios Profa. Dra. Soraia Raupp Musse Conceito: Um gerador de número pseudo-aleatório é um algoritmo que gera uma seqüência de números, os quais são aproximadamente independentes

Leia mais

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

Programação. Folha Prática 5. Lab. 5. Departamento de Informática Universidade da Beira Interior Portugal. Copyright 2010 All rights reserved.

Programação. Folha Prática 5. Lab. 5. Departamento de Informática Universidade da Beira Interior Portugal. Copyright 2010 All rights reserved. Programação Folha Prática 5 Lab. 5 Departamento de Informática Universidade da Beira Interior Portugal Copyright 2010 All rights reserved. 1. Revisão. 2. Objectivos. 3. Exercícios LAB. 5 5ª semana ESTRUTURAS

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

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

Informática para Ciências e Engenharias (C) Trabalho Prático /18

Informática para Ciências e Engenharias (C) Trabalho Prático /18 Informática para Ciências e Engenharias (C) Trabalho Prático - 2017/18 1. Contexto O módulo de Young ou módulo de elasticidade é um parâmetro mecânico que proporciona uma medida da rigidez de um material

Leia mais

Informática para Ciências e Engenharias-B 2017/18

Informática para Ciências e Engenharias-B 2017/18 Informática para Ciências e Engenharias-B 2017/18 Trabalho Prático N o 2 2017/18 1 Objectivo do Trabalho Até 1982, a insulina disponível para tratamento de diabetes era obtida por purificação de tecidos

Leia mais

Métodos de Programação I Ana Maria de Almeida

Métodos de Programação I Ana Maria de Almeida Métodos de Programação I 2. 13 type naipe = ( ouros, copas, paus, espadas ); var trunfo : naipe; Claro que são apenas identificadores e não existirá a mesma escolha de operadores e funções sobre eles que

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

Classes e Objetos. Sintaxe de classe em Java

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

Leia mais

Estatística e Modelos Probabilísticos - COE241

Estatística e Modelos Probabilísticos - COE241 Estatística e Modelos Probabilísticos - COE241 Aula passada Análise da dados através de gráficos Introdução a Simulação Aula de hoje Introdução à simulação Geração de números aleatórios Lei dos Grandes

Leia mais

Estatística e Modelos Probabilísticos - COE241

Estatística e Modelos Probabilísticos - COE241 Estatística e Modelos Probabilísticos - COE241 Aula passada Análise da dados através de gráficos Introdução a Simulação Aula de hoje Introdução à simulação Geração de números aleatórios Lei dos Grandes

Leia mais

Estatística e Modelos Probabilísticos - COE241

Estatística e Modelos Probabilísticos - COE241 Estatística e Modelos Probabilísticos - COE241 Aula passada Somas aleatórias Aula de hoje Introdução à simulação Geração de números aleatórios Lei dos Grandes Números Simulação de Sistemas Discretos É

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

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

Introdução aos Algoritmos e Estruturas de Dados 2011/2012

Introdução aos Algoritmos e Estruturas de Dados 2011/2012 INSTITUTO SUPERIOR TÉCNICO Introdução aos Algoritmos e Estruturas de Dados 2011/2012 Enunciado do 1 o Projecto Data de entrega: 21 de Outubro de 2011 às 23h59 1 Introdução A Zona Euro (ZE) é actualmente

Leia mais

Um Minotauro Perdido & Percolação

Um Minotauro Perdido & Percolação Departamento de Ciência da Computação IME-USP Segundo Semestre de 2014 MAC 115 Introdução à Computação IF Noturno (Versão quase final) Um Minotauro Perdido & Percolação Exercício-Programa 4 (EP4) Data

Leia mais

4 Uma Linguagem Baseada em Máquinas de Estado 4.1. A Linguagem

4 Uma Linguagem Baseada em Máquinas de Estado 4.1. A Linguagem 4 Uma Linguagem Baseada em Máquinas de Estado 4.1. A Linguagem Acredita-se nesse trabalho que características reativas e fortemente baseadas em modelos tornam necessária a criação de uma linguagem específica

Leia mais

Quinto Trabalho Prático. Este trabalho tem como objetivo indexar arquivos de dados usando um índice árvore-b.

Quinto Trabalho Prático. Este trabalho tem como objetivo indexar arquivos de dados usando um índice árvore-b. Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Ciências de Computação Disciplina de Algoritmos e Estruturas de Dados II docente Profa. Dra. Cristina Dutra de

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

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

Plano Director Municipal. Tecnologias de Informação Geográfica

Plano Director Municipal. Tecnologias de Informação Geográfica Plano Director Municipal Tecnologias de Informação Geográfica munwebgis Com o objectivo de difundir a utilização da informação geográfica, agilizar e simplificar os processos administrativos dentro dos

Leia mais

Trabalho Prático 2015 Simulador de Circuitos Opção 1 Versão /11/2013

Trabalho Prático 2015 Simulador de Circuitos Opção 1 Versão /11/2013 Trabalho Prático 2015 Simulador de Circuitos Opção 1 Versão 1.0 12/11/2013 SSC0300 Linguagem de Programação e Aplicações Engenharia Elétrica - Eletrônica 2º Semestre de 2015 Prof: Daniel Rodrigo Ferraz

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação Solução do Segundo Teste 23 de Janeiro de 2012 09:00 10:30 Nome: Número: 1. (1.0) Explique em que consiste a abstracção de dados, usando os termos barreiras de abstracção, encapsulação

Leia mais

1, caso haja uma mina na posição (i, j),

1, caso haja uma mina na posição (i, j), MAC 2166 Introdução à Ciência da Computação Primeiro Semestre de 2017 Terceiro Exercício-Programa: Busca minas Muitos de vocês devem conhecer o jogo do campo minado. Existem implementações para o Windows

Leia mais

Estrutura de um Algoritmo, Variáveis, Comandos de Entrada e Saída e Expressões Aritméticas

Estrutura de um Algoritmo, Variáveis, Comandos de Entrada e Saída e Expressões Aritméticas Estrutura de um Algoritmo, Variáveis, Comandos de Entrada e Saída e Expressões Aritméticas Estrutura de um Programa em Linguagem Algorítmica Nesse curso nós vamos utilizar a linguagem algorítmica para

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação Primeiro Teste 21 de Abril de 2012 11:30 13:00 Nome: Número: Esta prova, individual e sem consulta, tem 5 páginas com 10 perguntas. A cotação de cada pergunta está assinalada

Leia mais

SSC Linguagem de Programação e Aplicações

SSC Linguagem de Programação e Aplicações SSC0300 - Linguagem de Programação e Aplicações Professor responsável: Fernando Santos Osório Semestre: 2013/2 Prof. Auxiliar: Artur Lovato Cunha Estagiário PAE: Rafael L. Klaser Horário: Sexta Manhã 10h10

Leia mais

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

5ª Lista de Exercícios de Programação I 5ª Lista de Exercícios de Programação I Instrução As questões devem ser implementadas em C. Questões que envolvam leitura de matrizes, a construção dessas matrizes pode ser realizada através da geração

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

tipoveiculo = (bicicleta, motociclo, motorizada, automovel, autocomreb, camioneta, autocarro, camiao, reboque); veiculo : tipoveiculo;

tipoveiculo = (bicicleta, motociclo, motorizada, automovel, autocomreb, camioneta, autocarro, camiao, reboque); veiculo : tipoveiculo; Métodos de Programação I Departamento de Matemática, FCTUC 38 type var tipoveiculo = (bicicleta, motociclo, motorizada, automovel, autocomreb, camioneta, autocarro, camiao, reboque); veiculo : tipoveiculo;

Leia mais

Para cada programa, por mais simples que seja, comece sempre por esboçar a solução desenhando um fluxograma.

Para cada programa, por mais simples que seja, comece sempre por esboçar a solução desenhando um fluxograma. Instruções de Repetição Objetivo A realização deste trabalho deverá permitir ao aluno a familiarização com a utilização de instruções de repetição em C. Para o efeito será proposto um conjunto de exercícios

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

Trabalho de Linguagens Formais e Compilação

Trabalho de Linguagens Formais e Compilação Trabalho de Linguagens Formais e Compilação Desenho de uma linguagem simples e do seu compilador para MIPS. (cod. 5387) Departamento de Informática Universidade da Beira Interior Ano lectivo 2012/2013

Leia mais

FUNÇÃO SE. = SE ([condição]; [valor se verdadeiro]; [valor se falso]). A condição pode ser efetuada usando sinais matemáticos comparativos:

FUNÇÃO SE. = SE ([condição]; [valor se verdadeiro]; [valor se falso]). A condição pode ser efetuada usando sinais matemáticos comparativos: FUNÇÃO SE A função SE() é uma função especial que determina o valor da célula de acordo com um teste-lógico. Ela sempre contém uma condição, que definirá o valor da célula. Se a condição for verdadeira

Leia mais

PORTUGUÊS ESTRUTURADO: INTRODUÇÃO INTRODUÇÃO À PROGRAMAÇÃO PROF. ALEXANDRO DOS SANTOS SILVA

PORTUGUÊS ESTRUTURADO: INTRODUÇÃO INTRODUÇÃO À PROGRAMAÇÃO PROF. ALEXANDRO DOS SANTOS SILVA PORTUGUÊS ESTRUTURADO: INTRODUÇÃO INTRODUÇÃO À PROGRAMAÇÃO PROF. ALEXANDRO DOS SANTOS SILVA SUMÁRIO Introdução Conceitos básicos Formato básico Tipos primitivos Variáveis Constantes Operadores Operações

Leia mais

Introdução à Computação II (Noturno) BCC Unesp Rio Claro/SP 2015 em PDF via Moodle: Escolha apenas 5 exercícios para entrega Exercício 01 (Pilhas)

Introdução à Computação II (Noturno) BCC Unesp Rio Claro/SP 2015 em PDF via Moodle: Escolha apenas 5 exercícios para entrega Exercício 01 (Pilhas) Introdução à Computação II (Noturno) BCC Unesp Rio Claro/SP 2015 Lista Obrigatória 02 - Prof. Rafael Oliveira (Deve ser entregue em PDF via Moodle: Escolha apenas 5 exercícios para entrega) Exercício 01

Leia mais

RESOLUÇÃO. Computação e Programação (2009/2010-1º Semestre) 1º Teste (11/11/2009) Nome. Número. Leia com atenção os pontos que se seguem:

RESOLUÇÃO. Computação e Programação (2009/2010-1º Semestre) 1º Teste (11/11/2009) Nome. Número. Leia com atenção os pontos que se seguem: Computação e Programação (2009/2010-1º Semestre) 1º Teste MEMec - LEAN (11/11/2009) DURAÇÃO: 1h30m RESOLUÇÃO Leia com atenção os pontos que se seguem: Comece por escrever o seu nome e número nesta folha,

Leia mais

Informática para Ciências e Engenharias-B 2018/19

Informática para Ciências e Engenharias-B 2018/19 Informática para Ciências e Engenharias-B 2018/19 Trabalho Prático N o 2 2018/19 1 Objectivo do Trabalho Um grupo de historiadores está a estudar uma série de experiências antigas de química e precisa

Leia mais

Programação Procedimental

Programação Procedimental Programação Procedimental Maria Adriana Vidigal de Lima Universidade Federal de Uberlândia - 2013 1 Escrita de Algoritmos 1.1 Técnicas de Programação e Algoritmos Na elaboração de programas maiores e complexos

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação Segundo Teste 6 de Janeiro de 2010 09:00 10:30 Nome: Número: Esta prova, individual e sem consulta, tem 8 páginas com 9 perguntas. A cotação de cada pergunta está assinalada

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação Soluções do primeiro teste 13 de Novembro de 2004 9:00-10:30 Nota Número: 20 Nome: Turma: Escreva o seu número em todas as folhas do teste. O espaço das respostas deve ser limitado

Leia mais

DURAÇÃO DA PROVA: 2 horas

DURAÇÃO DA PROVA: 2 horas MAC2166 Introdução à Computação Grande áreas Civil, Mecânica, Petróleo e Química Escola Politécnica Segunda Prova 10 de maio de 2016 Nome: Assinatura: N ō USP: Turma: Professor: Instruções: 1. Não destaque

Leia mais

Professor Mauricio Lederer Algoritmos. Entrada e saída de dados

Professor Mauricio Lederer Algoritmos. Entrada e saída de dados Entrada Algoritmos Entrada e saída de dados Muitas vezes, um algoritmo, para que possa trabalhar, precisa de dados de entrada informados pelo usuário, porque nem sempre é necessário ter esse tipo de dados.

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

Trabalho Prático 2 Mundo dos Blocos Alocação Dinâmica / Listas Encadeadas

Trabalho Prático 2 Mundo dos Blocos Alocação Dinâmica / Listas Encadeadas Disciplina: Algoritmos e Estrutura de Dados I CIC / 9 Trabalho Prático Mundo dos Blocos Alocação Dinâmica / Listas Encadeadas Valor:,5 pontos (5% da nota total) Documentação não-latex: -, pontos Impressão

Leia mais

Procedimento. Função. Selecção Condicional - a instrução if-then-else. expressão if lógica then instrução else instrução

Procedimento. Função. Selecção Condicional - a instrução if-then-else. expressão if lógica then instrução else instrução Métodos de Programação I 2. 20 2.2.8 ESTRUTURAS DE CONTROLO Estruturas de controlo são instruções especiais em Pascal que permitem controlar o fluxo de sequência de instruções, alterando a ordem sequencial

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

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

Algoritmos Genéticos. Princípio de Seleção Natural. Sub-áreas da Computação Evolutiva. Idéias básicas da CE. Computação Evolutiva

Algoritmos Genéticos. Princípio de Seleção Natural. Sub-áreas da Computação Evolutiva. Idéias básicas da CE. Computação Evolutiva Computação Evolutiva Algoritmos Genéticos A computação evolutiva (CE) é uma área da ciência da computação que abrange modelos computacionais inspirados na Teoria da Evolução das Espécies, essencialmente

Leia mais

Lógica Computacional Aula 4

Lógica Computacional Aula 4 Lógica Computacional Aula 4 DCC/FCUP 2017/18 Conteúdo 1 Lógica proposicional 1 1.1 Fórmulas de Horn.......................................... 1 1.2 Satisfazibilidade............................................

Leia mais

Não utilize caracteres acentuados ou especiais para nomes de pastas e arquivos.

Não utilize caracteres acentuados ou especiais para nomes de pastas e arquivos. BCC201 Introdução à Programação (2016-01) Departamento de Computação - Universidade Federal de Ouro Preto - MG Professor: Reinaldo Fortes (www.decom.ufop.br/reinaldo) Estagiário docente: Washington Silva

Leia mais

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem Python

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem Python Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem Python Exercícios: Funções 1. Crie uma função que recebe como parâmetro um número

Leia mais

Guião de Preenchimento do Módulo Reporte de Execução Física Versão 1.0

Guião de Preenchimento do Módulo Reporte de Execução Física Versão 1.0 Guião de Preenchimento do Módulo Reporte de Execução Física Versão 1.0 Índice Guião de Preenchimento do Módulo Reporte de Execução Física... 1 Versão 1.0... 1 1 Introdução... 4 1.1 Enquadramento... 5 1.2

Leia mais

Exercícios: Vetores e Matrizes

Exercícios: Vetores e Matrizes Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C Exercícios: Vetores e Matrizes 1 Vetores 1. Faça um programa que possua um vetor

Leia mais

Victor Hugo Andrade Soares monitor João Vitor dos Santos Tristão Primeiro Trabalho Prático

Victor Hugo Andrade Soares monitor João Vitor dos Santos Tristão Primeiro Trabalho Prático Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Ciências de Computação Disciplina de Algoritmos e Estruturas de Dados II docente Profa. Dra. Cristina Dutra de

Leia mais

A resposta apresentada em aula, no quadro, (em Chapin e/ou Português Estruturado) está correta?

A resposta apresentada em aula, no quadro, (em Chapin e/ou Português Estruturado) está correta? 23 Algoritmos com Repetição Nos exemplos e exercícios vistos até agora, sempre foi possível resolver os problemas com uma sequência de instruções que eram executadas apenas uma vez. Existem três estruturas

Leia mais

Algoritmos e Programação

Algoritmos e Programação Algoritmos e Programação Aula 9 Subalgoritmos, funções e passagem de parâmetros Profa. Marina Gomes marinagomes@unipampa.edu.br 22/06/2017 Engenharia de Computação - Unipampa 1 Modularização Facilita a

Leia mais

Abaixo seguem os comandos e suas particularidades, bem como exemplos para o indicador de linha

Abaixo seguem os comandos e suas particularidades, bem como exemplos para o indicador de linha Trabalho II de CI067 - Oficina de Computação 2º Semestre - 2018 Tema: Editor compactador de arquivos Data de Entrega: 1. Introdução O editor a ser implementado edit([arquivo]) edita arquivos de texto ASCII.

Leia mais

Objectivos. Iniciar a programação de funções. Estudar a chamada de funções. Estudar a forma como são executadas as funções

Objectivos. Iniciar a programação de funções. Estudar a chamada de funções. Estudar a forma como são executadas as funções Funções Objectivos Iniciar a programação de funções Estudar a chamada de funções Estudar a forma como são executadas as funções Passagem por valor e referência Como conceber funções 2 Programação modular

Leia mais

Trabalho de LP 15/07/2013. Prof. Flávio Miguel Varejão

Trabalho de LP 15/07/2013. Prof. Flávio Miguel Varejão 15/07/2013 Trabalho de LP Prof. Flávio Miguel Varejão OBSERVAÇÃO IMPORTANTE: LEIA ATENTAMENTE TODA A ESPECIFICAÇÃO DO TRABALHO E INSTRUÇÕES DE SUBMISSÃO DE MODO A NÃO COMETER ENGANOS POR DESATENÇÃO E SER

Leia mais

Fundamentos da Programação

Fundamentos da Programação Fundamentos da Programação Segundo Teste 10 de Janeiro de 2014 09:00 10:30 Nome: Número: Esta prova, individual e sem consulta, tem 8 páginas com 12 perguntas. A cotação de cada pergunta está assinalada

Leia mais

Testes de software - Teste funcional

Testes de software - Teste funcional Testes de software - Teste funcional Vitor Alcântara de Almeida Universidade Federal do Rio Grande do Norte Natal, Brasil 30 de outubro de 2014 Alcântara (UFRN) Testes de software - Testes funcionais 30

Leia mais

Porque usar um montador? Formato de uma linha de código fonte:

Porque usar um montador? Formato de uma linha de código fonte: Instruções de uso do montador DAEDALUS (baseadas em texto extraído da monografia apresentada como trabalho de diplomação no curso de Bacharelado em Ciência da Computação por Luís Ricardo Schwengber, sob

Leia mais

Algoritmos e Estruturas de Dados 2005/2006. Algoritmo: conjunto claramente especificado de instruções a seguir para resolver um problema

Algoritmos e Estruturas de Dados 2005/2006. Algoritmo: conjunto claramente especificado de instruções a seguir para resolver um problema Vectores: Algoritmos de Pesquisa Algoritmos e Estruturas de Dados 2005/2006 Introdução Algoritmo: conjunto claramente especificado de instruções a seguir para resolver um problema noção de algoritmo muito

Leia mais

A linguagem C (visão histórica)

A linguagem C (visão histórica) A linguagem C (visão histórica) A linguagem C é uma linguagem de programação desenvolvida no ínício dos anos 70 por Dennis Ritchie, que trabalhava nos laboratórios Bell e que também inciou em paralelo,

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

UFCD 778 Folha de Cálculo Formadora: Sónia Rodrigues

UFCD 778 Folha de Cálculo Formadora: Sónia Rodrigues UFCD 778 Formadora: Sónia Rodrigues UFCD 778 - - Operação e Programação Objectivos da UFCD: Utilizar e programar aplicações informáticas de folha de cálculo. UFCD 778 - - Operação e Programação 2 1 Folha

Leia mais

SE (Função SE) Descrição. Sintaxe. Ocultar tudo

SE (Função SE) Descrição. Sintaxe. Ocultar tudo Página de 6 SE (Função SE) Ocultar tudo Este artigo descreve a sintaxe da fórmula e o uso da função SE (função: um fórmula pré-desenvolvida que assume um valor ou vários valores, executa uma operação e

Leia mais

Comandos de Repetição

Comandos de Repetição Programação de Computadores I UFOP DECOM 2013 2 Exercícios de Revisão Comandos de Repetição Sumário 1 Testes de Compreensão 1 2 Exercícios de Programação 2 1 Testes de Compreensão 1 Determine o valor de

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

Fundamentos da Programação

Fundamentos da Programação Fundamentos da Programação Solução do segundo exame 29 de Janeiro de 2016 18:30 20:30 1. Indique se cada uma das seguintes afirmações é verdadeira ou falsa. No caso de ser falsa, justifique de forma sucinta.

Leia mais

Oficina de Python Prof. Me. José Carlos Perini

Oficina de Python Prof. Me. José Carlos Perini Oficina de Python Prof. Me. José Carlos Perini Prof. José Carlos Perini Formação em Análise de Sistemas Univ. S. Francisco Pós em Administração Universidade S. Francisco Mestrado em Ciência da Computação

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

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO MARANHÃO - CAMPUS CAXIAS. Aluno (s): 01 ATIVIDADE. Revisão de Conteúdo

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO MARANHÃO - CAMPUS CAXIAS. Aluno (s): 01 ATIVIDADE. Revisão de Conteúdo INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO MARANHÃO - CAMPUS CAXIAS DISCIPLINA: Lab. de Programação PROF: MSc. Flávio Barros PERÍODO: 2 DATA: Aluno (s): 01 ATIVIDADE / / Revisão de Conteúdo

Leia mais

Programação imperativa

Programação imperativa Capítulo 8 Programação imperativa 8.1 Exercícios de revisão 1. Distinga entre programação imperativa e programação funcional. 2. Explique a necessidade da introdução do operador de atribuição. 3. Diga

Leia mais

Universidade Lusófona de Humanidades e Tecnologias Fundamentos de Programação 2014/2015 primeira época v.1.0.0

Universidade Lusófona de Humanidades e Tecnologias Fundamentos de Programação 2014/2015 primeira época v.1.0.0 Cálculo de salários Introdução e objectivos O Tio Manuel abriu um novo negócio: um restaurante dedicado exclusivamente a entregas de comida ao domicilio. Para apoiar a gestão deste seu novo negócio, contratou

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

Informática para Ciências e Engenharias 2014/15. Teórica 7

Informática para Ciências e Engenharias 2014/15. Teórica 7 Informática para Ciências e Engenharias 2014/15 Teórica 7 Na aula de hoje... Controlo de execução ciclos condicionais while end Exemplos raiz quadrada histograma fórmula química while while e matrizes

Leia mais

Nome: Número: Computação e Programação Mestrado Integrado em Engenharia Civil Licenciatura Bolonha em Engenharia Geológica e de Minas

Nome: Número: Computação e Programação Mestrado Integrado em Engenharia Civil Licenciatura Bolonha em Engenharia Geológica e de Minas Nome: Número: Computação e Programação 2017-2018 Mestrado Integrado em Engenharia Civil Licenciatura Bolonha em Engenharia Geológica e de Minas DECivil Exame Época de Recurso 31 de janeiro de 2018 Exame

Leia mais

Estruturas de Repetição WHILE e DO- WHILE

Estruturas de Repetição WHILE e DO- WHILE Universidade Federal do Pampa UNIPAMPA Campus Itaqui RS Engenharia de Agrimensura Introdução à Programação (prof. Dr. Rogério Vargas) Lista 2 (entrega: 1 de junho de 2015) Instruções: Trabalhos iguais

Leia mais

Computação e Programação Exame Resolvido 1ª Época

Computação e Programação Exame Resolvido 1ª Época Computação e Programação 2012-2013 Mestrado Integrado em Engenharia Civil Licenciatura Bolonha em Engenharia Geológica e de Minas DECivil Exame Resolvido 1ª Época 9 de janeiro de 2012 Exame sem consulta

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

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

Draft-v0.1. Máquinas de Turing Máquinas de Turing

Draft-v0.1. Máquinas de Turing Máquinas de Turing 13 Máquinas de Turing A necessidade de formalizar os processos algorítmicos levou, nas décadas 20 e 30 do século XX, a diversos estudos, entre os quais os de Post, Church e Turing, com vista a estudo formal

Leia mais

Relatório de Inteligência Artificial

Relatório de Inteligência Artificial Relatório de Inteligência Artificial Hidato Grupo 4 Diogo Simões - 63558 Inês Almeida - 63556 Miguel Diogo - 63567 Introdução O objectivo deste projecto é resolver automaticamente um tabuleiro de Hidato

Leia mais

Informática para Ciências e Engenharias 2013/14. Teórica 7

Informática para Ciências e Engenharias 2013/14. Teórica 7 Informática para Ciências e Engenharias 2013/14 Teórica 7 Na aula de hoje... Controlo de execução ciclos condicionais while end Exemplos raiz quadrada histograma fórmula química while while e matrizes

Leia mais

Detecção e correcção de erros

Detecção e correcção de erros elecomunicações II Codificação - Detecção e correcção de erros o Quando existe um canal de comunicação bidireccional, o receptor poderá requerer a retransmissão da informação que continha erros. o Esta

Leia mais

UAb E-fólio B, 1819, Alínea A

UAb E-fólio B, 1819, Alínea A UAb E-fólio B, 89, Alínea A O e-fólio B é constituído por alíneas, valendo valor cada, devendo as mesmas serem realizadas sequencialmente, e podendo ser reutilizado código entre alíneas. A cotação total

Leia mais