diff --git a/notebooks/pt/c02oo-java/s02lab/s01lombriga/lab-lombriga.ipynb b/notebooks/pt/c02oo-java/s02lab/s01lombriga/lab-lombriga.ipynb new file mode 100644 index 0000000..a8bff14 --- /dev/null +++ b/notebooks/pt/c02oo-java/s02lab/s01lombriga/lab-lombriga.ipynb @@ -0,0 +1,227 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "cardiovascular-narrative", + "metadata": {}, + "source": [ + "# Lombriga no Aquário\n", + "\n", + "Escreva uma classe em Java em que cada objeto representa uma lombriga em um aquário.\n", + "\n", + "## Lombriga\n", + "\n", + "A lombriga é representada por um caractere da cabeça `O` seguido por uma sequência de caracteres `@`, cujo número de total caracteres (incluindo a cabeça) é equivalente ao tamanho. Por exemplo, uma lombriga de tamanho 4 seria representada assim:\n", + "\n", + "~~~\n", + "@@@O\n", + "~~~\n", + "\n", + "A cabeça indica o lado para o qual a lombriga está virada. No exemplo anterior, a lombriga está virada para a direita.\n", + "\n", + "## Aquário\n", + "\n", + "O espaço do aquário também é representado por uma sequência de caracteres `#`. Por exemplo, um aquário de tamanho 8 é representado assim:\n", + "\n", + "~~~\n", + "########\n", + "~~~\n", + "\n", + "## Lombriga no Aquário\n", + "\n", + "Sempre o aquário e a lombriga são representados em uma única linha. A lombriga ocupa espaços vazios do aquário. Por exemplo, uma lombriga de tamanho 4 em um aquário de tamanho 8, pode ser representado assim:\n", + "\n", + "~~~\n", + "#@@@O###\n", + "~~~\n", + "\n", + "## Se Movendo pelo Aquário\n", + "\n", + "Note que a lombriga pode estar em qualquer posição do aquário, desde que ela caiba no espaço disponível.\n", + "\n", + "A lombriga pode se mover pelo aquário sempre para a direção para a qual ela está virada. No exemplo anterior, a lombriga daria um passo assim:\n", + "\n", + "~~~\n", + "##@@@O##\n", + "~~~\n", + "\n", + "## Tamanho da Lombriga\n", + "\n", + "A lombriga pode crescer de tamanho, sempre uma unidade de cada vez na direção oposta à cabeça. No exemplo anterior, se a lombriga crescer ela fica assim:\n", + "\n", + "~~~\n", + "#@@@@O##\n", + "~~~\n", + "\n", + "## Virar de Lado\n", + "\n", + "Uma lombriga pode virar de lado. No exemplo anterior, se a lombriga virar de lado ela fica assim:\n", + "\n", + "~~~\n", + "#O@@@@##\n", + "~~~" + ] + }, + { + "cell_type": "markdown", + "id": "facial-cylinder", + "metadata": {}, + "source": [ + "# Tarefa\n", + "\n", + "Escreva uma classe denominada `AquarioLombriga` em que cada objeto representa uma lombriga dentro de um aquário (ambos estarão juntos em um único objeto).\n", + "\n", + "## Atributos\n", + "\n", + "Você deve decidir quais os atributos definirá.\n", + "\n", + "## Métodos\n", + "\n", + "* `construtor` - no construtor é informado como parâmetro: o tamanho do aquário, o tamanho da lombriga e a posição da lombriga no aquário (a primeira posição é um);\n", + "* `crescer` - a lombriga cresce uma unidade dentro do aquário somente se houver espaço para ela crescer na direção oposta à cabeça -- a lombriga só cresce se houver espaço no aquário na direção do crescimento, caso contrário, ela não crescerá, mesmo que o método seja chamado;\n", + "* `mover` - a lombriga se move uma unidade na direção para a qual está virada à cabeça; se ela estiver no limite do aquário (para o lado que ela está virada a cabeça) e for chamado este método ela vira de lado em vez de andar;\n", + "* `virar` - a lombriga vira de lado;\n", + "* `apresenta` - retorna uma String contendo a apresentação da lombriga no aquário no estado atual, conforme foi descrito anteriormente." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "willing-india", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "conventional-contribution", + "metadata": {}, + "source": [ + "# Animando a Lombriga no Aquário\n", + "\n", + "Escreva uma classe em Java que representa uma sequência de ações para animar uma lombriga em um aquário. A sequência de ações é representada pela string:\n", + "\n", + "~~~\n", + "AALLPP$$$$$$$$$$\n", + "~~~\n", + "\n", + "* `AA` - é um número (sempre ocupando dois caracteres) representando o tamanho do aquário; por exemplo, `08` representa um aquário de tamanho 8;\n", + "* `LL` - é um número (sempre ocupando dois caracteres) representando o tamanho da lombriga; por exemplo, `04` representa uma lombriga de tamanho 4;\n", + "* `PP` - é um número (sempre ocupando dois caracteres) representando a posição inicial da lombriga no aquário -- a lombriga começa sempre virada para a direita, portanto trata-se da posição da ponta da cauda; por exemplo, `02` representa uma lombriga na posição 2.\n", + "\n", + "A sequência:\n", + "\n", + "~~~\n", + "080402\n", + "~~~\n", + "\n", + "Representa um aquário de tamanho 8, com uma lombriga de tamanho 4, na posição 3:\n", + "\n", + "~~~\n", + "##@@@O##\n", + "~~~\n", + "\n", + "* `$` - cada caractere subsequente (que aparece como `$`) representa um dos possíveis comandos de animação, equivalentes aos métodos da lombriga:\n", + " * `C` - a lombriga cresce;\n", + " * `M` - a lombriga se move;\n", + " * `V` - a lombriga se vira.\n", + "\n", + "~~~\n", + "080402MCMVM\n", + "~~~\n", + "\n", + "A lombriga do exemplo anterior os passos de animação são: se move, cresce, se move, vira e se move." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "public-affairs", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "foreign-vietnamese", + "metadata": {}, + "source": [ + "# Tarefa\n", + "\n", + "Escreva uma classe denominada `Animacao` em que cada objeto representa uma animação de uma lombriga em um aquário.\n", + "\n", + "## Atributos\n", + "\n", + "Você deve decidir quais os atributos definirá.\n", + "\n", + "## Métodos\n", + "\n", + "* `construtor` - no construtor é informado como parâmetro: a string de animação, conforme a descrição anterior;\n", + "* `apresenta` - retorna uma String com a lombriga no aquário no estado atual (a primeira vez que o método é chamado, apresenta o estado inicial da lombriga - sem animação);\n", + "* `passo` - executa um único passo da animação.\n", + "\n", + "Por exemplo, considere a animação do exemplo anterior:\n", + "~~~\n", + "080402MCMVM\n", + "~~~\n", + "\n", + "Considere que foi chamada a seguinte sequência de métodos:\n", + "* `construtor` - passa como parâmetro `080402MCMVM`;\n", + "* `apresenta` - retorna `##@@@O##`\n", + "* `passo` - executa primeira ação `M`\n", + "* `apresenta` - retorna `###@@@O#`\n", + "* `passo` - executa próxima ação `C`\n", + "* `apresenta`- retorna `##@@@@O#`\n", + "* `passo` - executa próxima ação `M`\n", + "* `apresenta` - retorna `###@@@@O`\n", + "* `passo` - executa próxima ação `V`\n", + "* `apresenta`- retorna `###O@@@@`\n", + "* `passo` - executa próxima ação `M`\n", + "* `apresenta` - retorna `##O@@@@#`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "visible-anatomy", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "plastic-monthly", + "metadata": {}, + "source": [ + "# Programa\n", + "\n", + "Escreva um programa que use as suas classes para mostrar todos os paços da animação: `080402MCMVM`, conforme foi ilustrado anteriormente." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "first-poverty", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Java", + "language": "java", + "name": "java" + }, + "language_info": { + "codemirror_mode": "text/x-java", + "file_extension": ".java", + "mimetype": "", + "name": "Java", + "nbconverter_exporter": "", + "version": "1.8.0_121" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}