DEIDepartamento. Programação III Engenharia Informática e Comunicações. Engenharia



Documentos relacionados
Folha de Cálculo (Excel)

Manual de Utilização do Sítio da Disciplina

SISTEMA DE INFORMAÇÃO DAS PARTICIPAÇÕES DO ESTADO

Rock In Rio - Lisboa

Engenharia Informática

Utilização do SOLVER do EXCEL

Aplicações de Escritório Electrónico

A VISTA BACKSTAGE PRINCIPAIS OPÇÕES NO ECRÃ DE ACESSO

Que imagens têm ou não têm simetria?

Mini-Projecto de PAII Ano Lectivo 2000/01

Múltiplos Estágios processo com três estágios Inquérito de Satisfação Fase II

Internet Update de PaintManager TM. Manual de instalação e utilização do programa de actualização

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO. SISTEMAS DE GESTÃO DE BASE DE DADOS Microsoft Access TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO

Orientação a Objetos

Aplicações de Escritório Electrónico

Archive Player Divar Series. Manual de Utilização

MICROSOFT POWERPOINT

Microsoft Windows. Aspectos gerais

Programa de Formação Contínua em Matemática para Professores do 1º e 2º Ciclo do Ensino Básico

Manual de Administração Intranet BNI

Sistema de Informação de Licenciamento de Operações de Gestão de Resíduos

A SÈTIMA. O nosso principal objectivo

Guia de Estudo Folha de Cálculo Microsoft Excel

Introdução aos Sistemas Informáticos Engenharia Informática, Engenharia Mecânica, Engenharia Química, Gestão e Engenharia Industrial

Observação das aulas Algumas indicações para observar as aulas

Microsoft Access Para conhecermos o Access, vamos construir uma BD e apresentar os conceitos necessários a cada momento

GeoMafra Portal Geográfico

Programação III / Estruturas de Dados. Enunciado do Trabalho Prático

MANUAL DO FORMANDO FORMAÇÃO À DISTÂNCIA Introdução

Conceitos importantes

Squeak Componente Livro. Luís Valente, 2009

1. A corrida de vetores numa folha de papel.

GESTÃO DE INFORMAÇÃO PESSOAL OUTLOOK (1)

Trabalho Prático Sistema de Armazenagem Relatório Scada

MANUAL DE INSTRUÇÕES

Projeção ortográfica da figura plana

MICROSOFT ACCESS MICROSOFT ACCESS. Professor Rafael Vieira Professor Rafael Vieira

Oficina de Construção de Páginas Web

Disciplina: Unidade III: Prof.: Período:

Aplicações de Escritório Electrónico

EIC. Projecto I. Manual do Utilizador. Vídeo Vigilância Abordagem Open Source. Curso: Engenharia de Informática e Comunicações Ano Lectivo: 2005/2006

OFICIAL DA ORDEM MILITAR DE CRISTO MEDALHA DE EDUCAÇÃO FÍSICA E BONS SERVIÇOS. Circular n.º 029/2014 PORTAL FPT Abertura aos atletas

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

Optimização de um Mundo Virtual

Ajuda ao SciEn-Produção O Artigo Científico da Pesquisa Experimental

CADERNOS DE SOCIOMUSEOLOGIA Nº

DOCBASE. 1. Conceitos gerais. 2. Estrutura da pasta de associações. 3. A área de documentos reservados. 4. Associação de Imagens

Manual de configuração do sistema

CGA Directa. Manual do Utilizador. Acesso, Adesão e Lista de Subscritores

Tecnologias da Informação e Comunicação: Sistema Operativo em Ambiente Gráfico

O 1º Ciclo do Ensino Básico é um espaço privilegiado onde se proporcionam aos alunos aprendizagens mais ativas e significativas,

mbiente Virtua de Aprendizagem

Folha de Cálculo TECNOLOGIAS DA T IINF CO RM 1 A 0 ÇÃO E COMUNICAÇÃO TIC 10

Ministério das Finanças Instituto de Informática. Departamento de Sistemas de Informação

Ficha de Trabalho Nº 1 - À procura da minha terra no mapa

PROGRAMAÇÃO DE MICROPROCESSADORES 2011 / 2012

Divar - Archive Player. Manual de Utilização

Tutorial exe elearning XHTML editor (versão 1.0x)

Java Mail Server. Manual do Utilizador

Desenhador de Escadas

UNIDADE 2: Sistema Operativo em Ambiente Gráfico

Gescom isales. Aplicação Mobile Profissional para Vendedores

1. Criar uma nova apresentação

ANIMAÇÕES WEB AULA 2. conhecendo a interface do Adobe Flash. professor Luciano Roberto Rocha.

Construir um modelo de dados é: - Identificar, Analisar e Registar a política da organização acerca dos dados

Guia Rápido do Contacts

Colocar em prática. Tópicos para aprender. Colocar em prática. Utilizar as aplicações da Microsoft Windows num quadro interactivo SMART Board

Onde baixar o Aplicativo Cidade de Limeira?

Introdução. Relatórios - Actividade

TECNOLOGIAS DE INFORMAÇÃO E COMUNICAÇÃO

8. Perguntas e Respostas

EXERÍCIOS DE MODELAGEM DE BANCO DE DADOS

3.1 Definições Uma classe é a descrição de um tipo de objeto.

Microsoft Windows: # 1

MANUAL DE APOIO SISTEMA INTEGRADO DE DOCUMENTOS E ATENDIMENTO MUNICIPAL

Ferramenta de Testagem IECL Orientações para o Aluno (PT)

MANUAL DE UTILIZADOR Aplicativo: Análise do Estudo da Lição da Escola Sabatina. 0. INTRODUÇÃO ARRANQUE DO APLICATIVO Início...

MANUAL DO GERENCIADOR ESCOLAR WEB

Copyright 2008 GrupoPIE Portugal, S.A.

Cookies. Krishna Tateneni Jost Schenck Tradução: José Pires

Google Drive. Passos. Configurando o Google Drive

MANUAL PARA INCLUSÃO DIGITAL- ANDRAGOGIA

TUTORIAL DO ALUNO. Olá, bem vindo à plataforma de cursos a distância da Uniapae!!!

Introdução ª Parte - Acesso à Aplicação Avaliação Online... 4 I Aceder à Aplicação Inscrição Acesso à Aplicação...

Microsoft Office FrontPage 2003

Relatório SHST

GereComSaber. Desenvolvimento de Sistemas de Software. Universidade do Minho Conselho de Cursos de Engenharia Licenciatura em Engenharia Informática

Dadas a base e a altura de um triangulo, determinar sua área.

Guia de Acesso à Formação Online Formando

Aplicações de Escritório Electrónico

gettyimages.pt Guia do site área de Film

Sistema dinâmico de impressão da tabela de detalhes das facturas

CURSO DE INFORMÁTICA BÁSICA AULA 2 O AMBIENTE WINDOWS

LeYa Educação Digital

Referencial do Módulo B

Tarefa Orientada 1 A interface do Powerpoint

Breve história do computador e iniciação ao Microsoft Word

Características das Imagens obtidas com o Microscópio Óptico Composto (M.O.C.)

FICHEIROS COM EXEMPLOS

Transcrição:

Engenharia DEIDepartamento Informática Morro do Lena, Alto Vieiro Apart. 4163 2401 951 Leiria Tel.: +351 244 820 300 Fax.: +351 244 820 310 E-mail: estg@estg.iplei.pt http://www.estg.iplei.pt Programação III Engenharia Informática e Comunicações Trabalho Prático 1ª Etapa 1. DESCRIÇÃO DO PROBLEMA Um dos tipos de jogos mais explorados no universo dos videojogos, são os jogos de plataformas. Neste tipo de jogos, existe um herói com um objectivo específico, que percorre as plataformas de um nível na recolha de artefactos, evitando colidir com os seus inimigos. Um desses jogos é o Fury of the Furries, onde o objectivo é controlar o Tiny (herói do jogo) através de vários níveis, evitando os objectos que o podem destruir e apanhando objectos que favoreçam a missão de encontrar o caminho para o fim de cada nível. O Tiny pode andar, correr e saltar, bem como, metamorfosear-se, adquirindo uma de 3 habilidades especiais. As habilidades nem sempre estão todas disponíveis em simultâneo; em certos níveis apenas se pode seleccionar uma delas, enquanto que noutro se podem possuir todas. O Tiny pode também perder ou ganhar a capacidade de utilizar uma determinada habilidade quando atravessa um campo magnético que iniba/active essa habilidade. Durante o desenrolar do jogo, o Tiny terá que evitar diversos objectos que o matam quando este lhes toca. De modo a conseguir encontrar a saída do nível, terá também que apanhar chaves para abrir fechaduras de portas, ligar interruptores, etc.. O objectivo final deste trabalho é a implementação de um editor que permita criar níveis para este jogo. Para cada nível criado, o editor deve permitir que este seja gravado num ficheiro de texto. Assim, uma aplicação que permita jogar o jogo poderá ler ficheiros gerados pelo editor permitindo assim, que os níveis nele criados possam ser jogados. Programação III 1ª Etapa do Trabalho Prático (2004/2005) 1/9

2. DESCRIÇÃO DE UM NÍVEL Um nível é constituído por um mapa, um Tiny e outros objectos que interagem entre si e/ou com o Tiny. Destes objectos, alguns são fixos e outros deslocam-se com um movimento predefinido. Além disso, alguns objectos servem de suporte a outros objectos que deles necessitem. Existem também objectos que podem interagir com outros. Por exemplo, no jogo, uma das formas de abrir uma porta consiste em recolher uma chave e utilizá-la numa fechadura que abra essa porta. Uma vez que durante o desenrolar do jogo o Tiny pode morrer várias vezes, no editor é também necessário definir o número de vidas inicial. O mapa do nível consiste numa matriz de quadrículas cuja dimensão é configurável pelo utilizador. Cada quadrícula pode conter apenas um objecto. No entanto, cada objecto pode ocupar mais do que uma quadrícula. Isto significa que para desenhar um objecto, podem ser necessárias várias imagens (cada imagem será desenhada numa das quadrículas ocupadas por esse objecto). Por exemplo, como se pode ver na Figura 1, a aranha ocupa um espaço de 2x2 quadrículas: Célula seleccionada pelo utilizador para colocar uma aranha Figura 1 Aranha A imagem de um objecto é desenhada a partir da quadrícula seleccionada pelo utilizador (canto superior esquerdo). 3. DESCRIÇÃO DOS OBJECTOS DO JOGO Nesta secção são descritos todos os objectos que podem ser utilizados para construir um nível. É de salientar que existem objectos no jogo que não têm que ser considerados aquando da construção de um nível no editor. Por exemplo, a corda, que é um objecto que o Tiny pode utilizar em determinadas situações do jogo, não será descrita neste enunciado porque não há características deste objecto que possam ser definidas aquando da construção de um nível. Todos os objectos do jogo devem permitir que as suas características possam ser escritas no ficheiro de texto utilizado para guardar o nível. 3.1 DESCRIÇÃO DO TINY O Tiny tem informação acerca da quadrícula correspondente ao seu canto superior esquerdo, uma dimensão de 1x1, uma velocidade de salto, uma velocidade de deslocamento, uma velocidade angular e os ângulos máximo e mínimo do seu movimento quando pendurado numa corda. O Tiny pode ter as seguintes habilidades: fogo martelo corda Quando se está a construir um nível, deve definir-se quais serão as habilidades que o Tiny poderá utilizar no decorrer desse nível. O Tiny não pode servir de suporte a outros 3.2 PLATAFORMA FIXA Uma plataforma fixa tem informação acerca da quadrícula correspondente ao seu canto superior esquerdo e uma dimensão de 1x2 (Figura 2). Esta plataforma, embora possa estar suspensa (não estar apoiada noutros objectos), pode suportar outros Programação III 1ª Etapa do Trabalho Prático (2004/2005) 2/9

3.3 PLATAFORMA DESTRUTÍVEL Figura 2 Plataforma fixa Uma plataforma destrutível tem informação acerca da quadrícula correspondente ao seu canto superior esquerdo e uma dimensão de 1x2 (Figura 3). Esta plataforma pode estar suspensa e, embora possa servir de apoio vertical, não pode ser utilizada como apoio lateral. 3.4 TELEFÉRICO Figura 3 Plataforma destrutível Um teleférico tem informação acerca da quadrícula correspondente ao seu canto superior esquerdo e uma dimensão de 1x3 (Figura 4). Este objecto pode estar suspenso e, embora possa servir de apoio vertical, não pode ser utilizado como suporte lateral. No jogo, os teleféricos têm um movimento horizontal de ida e volta sobre um segmento de recta com uma determinada velocidade. Assim, tanto o comprimento do segmento de recta como a velocidade devem poder ser definidos no editor. 3.5 ELEVADOR Figura 4 Teleférico Um elevador tem informação acerca da quadrícula correspondente ao seu canto superior esquerdo e uma dimensão de 1x2 (Figura 5). Este objecto pode estar suspenso e, embora possa servir de apoio vertical, não pode ser utilizado como suporte lateral. No jogo, os elevadores têm um movimento vertical de ida e volta sobre um segmento de recta com uma determinada velocidade. Assim, tanto o comprimento do segmento de recta como a velocidade devem poder ser definidas no editor. 3.6 CACTO Figura 5 Elevador Um cacto tem informação acerca da quadrícula correspondente ao seu canto superior esquerdo e uma dimensão de 2x1 (Figura 6). Este objecto não pode estar suspenso e não serve de suporte a outros 3.7 CANA DE ESPINHOS Figura 6 Cacto Uma cana de espinhos tem informação acerca da quadrícula correspondente ao seu canto superior esquerdo e uma dimensão de 1x1 (Figura 7). Este objecto não pode estar suspenso e não serve de suporte a outros Figura 7 Cana de espinhos Programação III 1ª Etapa do Trabalho Prático (2004/2005) 3/9

3.8 COBRA Uma cobra tem informação acerca da quadrícula correspondente ao seu canto superior esquerdo e uma dimensão de 2x2 (Figura 8). Este objecto não pode estar suspenso e não serve de suporte a outros No jogo, a cobra só aparece na posição definida quando o Tiny viola a sua distância de segurança. Assim, esta distância deve poder ser definidos no editor. 3.9 GÁRGULAS Figura 8 Cobra Uma gárgula tem informação acerca da quadrícula correspondente ao seu canto superior esquerdo, uma dimensão de 2x2 (Figura 9), uma cadência de tiro e a velocidade dos tiros por ela lançada. Este objecto tem que estar encostado a outro objecto que lhe sirva de suporte lateral. Além disso, não pode servir de suporte a outros Existem dois tipos de gárgulas: as que têm que estar encostadas do lado direito - a gárgula esquerda - e as que têm que estar encostadas do lado esquerdo - a gárgula direita. 3.10 ESCORPIÃO Figura 9 Gárgulas direita e esquerda apoiadas a uma plataforma fixa Um escorpião tem informação acerca da quadrícula correspondente ao seu canto superior esquerdo e uma dimensão de 2x2 (Figura 10). Este objecto não pode estar suspenso e não pode ser utilizado como suporte a outros No jogo, os escorpiões têm um movimento horizontal de ida e volta sobre um segmento de recta com uma determinada velocidade. Assim, tanto o comprimento do segmento de recta como a velocidade devem poder ser definidos no editor. 3.11 MOCHO Figura 10 Escorpião Um mocho tem informação acerca da quadrícula correspondente ao seu canto superior esquerdo e uma dimensão de 2x2 (Figura 11). Este objecto pode estar suspenso e não pode ser utilizado como suporte a outros No jogo, os mochos têm um movimento oblíquo de ida e volta sobre um segmento de recta com uma determinada velocidade. Assim, tanto a velocidade, como o deslocamento no eixo dos XX e o deslocamento no eixo dos YY devem poder ser definidos no editor. 3.12 ARANHA Figura 11 Mocho Uma aranha tem informação acerca da quadrícula correspondente ao seu canto superior esquerdo e uma dimensão de 2x2 (Figura 12). Este objecto pode estar suspenso e não pode ser utilizado como suporte a outros Programação III 1ª Etapa do Trabalho Prático (2004/2005) 4/9

No jogo, as aranhas têm um movimento vertical de ida e volta sobre um segmento de recta com uma determinada velocidade. Assim, tanto o comprimento do segmento de recta como a velocidade devem poder ser definidos no editor. 3.13 MORCEGO Figura 12 Aranha Um morcego tem informação acerca da quadrícula correspondente ao seu canto superior esquerdo e uma dimensão de 2x2 (Figura 13). Este objecto pode estar suspenso e não pode ser utilizado como suporte a outros No jogo, os morcegos têm um movimento oblíquo de ida e volta sobre um segmento de recta com uma determinada velocidade. Assim, tanto a velocidade, como o deslocamento no eixo dos XX e o deslocamento no eixo dos YY devem poder ser definidos no editor. 3.14 CAMPO MAGNÉTICO Figura 13 Morcego Um campo magnético permite activar/inibir a habilidade (bola de fogo, martelo, ou corda) correspondente à cor que apresentam. Um campo magnético tem que ser suportado por cima e por baixo. Para colocar o objecto no mapa, o utilizador, tal como acontece com todos os outros objectos do jogo, selecciona uma célula. Mas, ao contrário do que acontece com os outros objectos, a definição da quadrícula correspondente ao canto superior esquerdo do campo magnético não é realizada automaticamente. Vejamos como é que essa quadrícula é definida: 1. O utilizador selecciona uma célula (ver Figura 14). 2. Na coluna da célula seleccionada tenta encontrar-se objectos que possam suportar o campo magnético em ambos os seus extremos. 3. Definir a quadrícula correspondente ao canto superior esquerdo do campo magnético como a quadrícula imediatamente abaixo do objecto de suporte de cima. Exemplos de células seleccionadas pelo utilizador para colocar um campo magnético Figura 14 Colocação de campos magnéticos no mapa Repare que deste modo, um campo magnético tem uma dimensão de nx1 em que n é maior ou igual a 3. Repare também que apesar da sua dimensão variável, o campo magnético é desenhado à custa de apenas três imagens: uma que representa o seu topo superior (Figura 15a)), uma que representa o tipo de magnetismo (Figura 15b)) e outra que representa o seu topo inferior(figura 15c)). Programação III 1ª Etapa do Trabalho Prático (2004/2005) 5/9

(a) (b) (c) Figura 15 Imagens base utilizadas para representar um campo magnético 3.14.1 Campo Magnético Amarelo Um campo magnético amarelo inibe/activa a habilidade bola de fogo e é composto pelas seguintes imagens: 3.14.2 Campo Magnético Verde Figura 16 Imagens base utilizadas para representar um campo magnético amarelo Um campo magnético verde inibe/activa a habilidade corda e é composto pelas seguintes imagens: 3.14.3 Campo Magnético Vermelho Figura 17 Imagens base utilizadas para representar um campo magnético verde Um campo magnético vermelho inibe/activa a habilidade martelo e é composto pelas seguintes imagens: 3.15 CHAVE Figura 18 Imagens base utilizadas para representar um campo magnético vermelho Uma chave tem informação acerca da quadrícula correspondente ao seu canto superior esquerdo e uma dimensão de 1x1 (Figura 19). Este objecto pode estar suspenso e não pode ser utilizado como suporte a outros No jogo, uma chave pode abrir uma ou mais fechaduras. Assim, no editor é necessário definir quais as fechaduras existentes no nível que podem ser abertas por cada chave. 3.16 FECHADURA Figura 149 Chave Uma fechadura tem informação acerca da quadrícula correspondente ao seu canto superior esquerdo e uma dimensão de 1x1 (Figura 20). Este objecto pode estar suspenso e pode ser utilizado como suporte a outros No jogo, uma fechadura pode ser aberta por uma ou mais chaves. Quando uma fechadura é aberta por uma chave é automaticamente aberta a porta correspondente a essa fechadura. Assim, no editor é necessário definir quais as chaves que podem activar a fechadura e qual a porta que a fechadura pode abrir. 3.17 INTERRUPTOR Figura 20 Fechadura Um interruptor tem informação acerca da quadrícula correspondente ao seu canto superior esquerdo e uma dimensão de 1x1 (Figura 21). Este objecto pode estar suspenso e não pode ser utilizado como suporte a outros Programação III 1ª Etapa do Trabalho Prático (2004/2005) 6/9

No jogo, um interruptor abre uma porta quando tocado pelo Tiny. Assim, no editor é necessário definir qual a porta que o interruptor pode abrir. 3.18 MOEDA Figura 21 Interruptor Uma moeda tem informação acerca da quadrícula correspondente ao seu canto superior esquerdo e uma dimensão de 1x1 (Figura 22). Este objecto pode estar suspenso e não pode ser utilizado como suporte a outros No jogo, uma moeda abre uma porta quando tocada pelo Tiny. Assim, no editor é necessário definir qual a porta que a moeda pode abrir. 3.19 PORTAS Figura 22 Moeda Uma porta tem informação acerca da quadrícula correspondente ao seu canto superior esquerdo e uma dimensão de 4x1 ou 1x4, conforme seja, respectivamente, uma porta vertical ou horizontal (Figura 23). Este objecto pode estar suspenso e pode ser utilizado como suporte a outros No jogo, uma porta pode ser aberta por uma ou mais fechaduras, uma ou mais moedas e, ainda, por um ou mais interruptores. Assim, no editor é necessário definir quais as fechaduras, moedas e/ou interruptores que podem abrir a porta. Figura 23 Porta vertical e horizontal Repare que uma porta tem uma dimensão superior àquela que é visualizada. Isto deve-se ao facto de que se tem que considerar como fazendo parte da porta o espaço que é ocupado quando esta está aberta (Figura 24). 3.20 TELEPORTE Figura 24 Porta vertical aberta e fechada Um teleporte tem informação acerca da quadrícula correspondente ao seu canto superior esquerdo e uma dimensão de 1x1 (Figura 25). Este objecto pode estar suspenso e não pode ser utilizado como suporte a outros Programação III 1ª Etapa do Trabalho Prático (2004/2005) 7/9

No jogo, um teleporte, quando tocado pelo Tiny, teleporta-o para um local de destino previamente especificado. Assim, no editor é necessário definir qual o local de destino para onde o Tiny será teleportado quando tocar no teleporte. Vários teleportes podem teleportar o Tiny para o mesmo local de destino. 3.21 SAÍDA Figura 25 Teleporte Uma saída tem informação acerca da quadrícula correspondente ao seu canto superior esquerdo e uma dimensão de 1x1 (Figura 26). Este objecto pode estar suspenso e não pode ser utilizado como suporte a outros No jogo, quando o Tiny toca numa saída, o nível é concluído. Figura 26 Saída 4. OBJECTIVOS Resolva o problema utilizando a análise orientada aos objectos, identificando: As classes; Atributos e os principais serviços para cada classe. Relacionamento entre classes (relações de herança e relações de associação); A análise dos serviços de cada classe deve ser superficial e apenas deve identificar os serviços imprescindíveis (construtores, métodos de encapsulamento e os principais serviços). Para além dos elementos acima referidos, o relatório a entregar deve conter para cada classe, os seguintes elementos: A descrição da classe (entidade que representa e a sua relação com outras entidades); Atributos (a descrição, o nome e o tipo de atributo); Serviços imprescindíveis (nome, descrição, possíveis parâmetros a passar ao serviço e tipo de retorno). O trabalho pode ser elaborado em papel ou utilizando a ferramenta de modelação Together. Os alunos podem e devem contactar os docentes para esclarecimento de dúvidas e apoio na realização do trabalho prático. Ao modelar o problema deve ter em conta que a linguagem Java não suporta herança múltipla. Nota: Neste enunciado são descritas todas as entidades necessárias para construir um nível no editor do jogo Fury of the Furies. Se pretender saber com mais pormenor como funciona o jogo, recomenda-se a leitura do enunciado do trabalho prático de Programação III de Engenharia Informática. Critérios Os critérios de correcção para a primeira etapa do trabalho prático de Programação III são os seguintes: Critério Cotação Herança 20% Polimorfismo 30% Encapsulamento 15% Relatório 10% Avaliação contínua 25% Regras a respeitar 1. Data limite para a entrega do trabalho: 10 de Dezembro de 2004. 2. No relatório a entregar, deve mencionar: nome completo do(s) aluno(s), número(s) e turma(s) prática(s) a que pertence(m). Programação III 1ª Etapa do Trabalho Prático (2004/2005) 8/9

3. O trabalho deve ser entregue em CD ou DVD, em mãos, a qualquer um dos professores que leccionam a disciplina recebendo o aluno o respectivo comprovativo de entrega. Atenção que no dia 10 de Dezembro, os trabalhos devem ser entregues no pedríodo das 19:00 às 20:00 a qualquer um dos professores da disciplina. Programação III 1ª Etapa do Trabalho Prático (2004/2005) 9/9