Mudanças entre as edições de "Usuário:Ernani.rs"
Linha 426: | Linha 426: | ||
|} | |} | ||
====Lição III==== | ====Lição III==== | ||
+ | '''1- .''' | ||
+ | *1.1- | ||
===DIA 01=== | ===DIA 01=== |
Edição das 18h13min de 3 de outubro de 2012
Desenvolvendo Sistemas de Telecomunicações Básico com “ Applnventor”
- ORIENTADOR
Eraldo Silveira e Silva e Marcos Moecke
- Objetivos do Projeto
- Desenvolver tutoriais na plataforma wiki e nas próprias ferramentas App Inventor para facilitar o aprendizado de novos alunos da variação da linguagem Scratch utlizada no App Inventor de modo a elevar significativamente o número de usuários da linguagem.
- Desenvolver alguns sistemas básicos para o auxilio didático no curso Telecomunicações, usando a ferramenta App Inventor.
- BOLSISTA SELECIONADO
- Ernani Rodrigues De S. Thiago 2900111
- Local de Trabalho
- LABIC, Máquina: VENUS
- Horário de Trabalho
- Segunda 13h30 às 17h30;
- Terça 13h30 às 17h30;
- Quarta 15h30 às 20h30;
- Quinta 13h30 às 16h30;
- Sexta 13h30 às 17h30;
Atividades propostas
- Seguir os tutoriais em App Inventor Tutorials for Beginners, observando o método usado para ensino do AppInventor, anotando os pontos positivos e negativos encontrados.
- Relatar a cada dia os avanços.
- Para uso do AppInventor, rode preferencialmente na máquina VENUS.
- Seguir o tutorial.
- Quando terminar o video 4 do drum app, fazer uma análise escrita das características positivas do tutorial em vídeo e comparar com o tutorial em web/wiki.
- Elaborar o projeto "O que o aluno precisa apreender para programar AppInventor"
- O Basico da Interface (o que cada area do screen faz contem).
- Explicar os componentes do Visualizador. (os conteudos das gavetas)
- Explicar o editor de blocos (conteudo das gavetas estáticas e dinânica)
- Explicar o emulador (como funciona)
- Explicar o uso de aparelho celular (Android) -> como dispositivo USB de teste. -> como executor do app.
Atividades realizadas
Atividades |
---|
Debate com Eraldo, para definir o projeto Elaboração junto com o Ernani.
|
Documentação
Breve...
Padronização
Em Construção... |
---|
IntroduçãoMuitos alunos, ao entrarem em contato com o AppInventor, aprendem rapidamente como utilizá-lo. Este fato ocorre porque esses alunos, normalmente, já possuem alguma experiência em programação, já entraram em contato com o Scratch e/ou se entusiasmaram com a atraente interface do AppInventor. Mas para a melhor compreenção e utilização desta ferramenta, é necessário que algumas características sejam padronizadas. Quando iniciados no AppInventor é comum que a maioria não dê grande importância para a ordem de desenvolvimento do projeto e muito menos para a nomenclatura que esta sendo utilizada. O objetivo da "Padronização" é justamente evitar que os alunos se percam durante o desenvolvimento do projeto, direcionando-os para o essencial e os auxiliarem para fazê-lo organizadamente. NomenclaturaProjetoAntes de iniciar um projeto, é necessário nomeá-lo para poder classificá-lo e distinguí-lo de outros. Ao nomear um projeto procure relacionar sua função e versão a ele. Como por exemplo: CriadorDeFilmesV2b. No exemplo citado a função da aplicação é "Criar Filmes", sua versão é "2" (sempre precedido de um "V") e o "b" significa que ele possui alguma alteração relevante ao CriadorDeFilmesV2a (o anterior), mas que ainda não esta pronto (a versão ainda esta em fase de desenvolvimento). Dessa forma as aplicações criadas ficam mais organizadas e correm menor risco de se perderem num imenso banco de dados. Procure também, não se esquecer de manter as palavras no mesmo idioma e de iniciá-las com uma letra maiúscula, ajuda na visibilidade (leitura). Em Construção... |
Oficina AppInventor
Tutorial Calculadora:
Especificação
- Inicia em 0;
- Quando operação for clicada, armazena numero numa variavel, muda o display pra 0;
- Multiplas operações;
- Implementação da virgula;
- Máx. de dígitos
- "-" + "," + 7 digítos.
Planejamento das Oficinas
Análise Inicial
Este conteúdo possui como público alvo os alunos da disciplina PJI1-EngTel do curso de Engenharia de Telecomunicações do Instituto Federal de Santa Catarina - Campus São José.
Hierarquia de Objetivos das Lições
- Desenvolver programas/aplicações utilizando o AppInventor para futura implementação no PJI1-EngTel.
Lição I
1- Construir casos de usos para saber definir o que é uma aplicação e qual sua função.
- 1.1- Entender o que é uma Aplicação do ponto de vista computacional;
- 1.2- Descrever o comportamento de uma aplicação durante um caso de uso simples;
- 1.3- Relacionar conceitualmente procedimentos e eventos;
- 1.4- Utilizar diagramas de sequência para descrever os procedimentos realizados.
2- "Explorar" o AppInventor.
- 2.1- Consultar a Documentação de Referência;
- 2.2- Criar um novo projeto;
- 2.3- Entender como funciona o AppInventor: O que são Designer e Blocks?;
- 2.4- Entender a funcionalidade do Designer;
- 2.5- Entender a funcionalidade do Blocks;
- 2.6- Salvar um projeto;
- 2.7- Importar e exportar projetos;
- 2.8- Transferindo um projeto para um sistema Android.
3- Conceitos Básicos.
- 3.1- Saber diferenciar conceitos básicos: Váriável, Lista, Procedimento, Evento, Componente e Propriedade;
- 3.2- Saber como criar/alterar os itens presentes em 3.1 no AppInventor;
- 3.3- Entender a diferença entre a utilização de Sprites no Scratch e a de Componentes no AppInventor.
- 3.3.1- Entender o que é um Sprite;
- 3.3.2- Entender o que é um Script.
4- Entender como construir procedimentos baseados em eventos (Script).
- 4.1- Desenvolver o exemplo de caso: Tutorial Hello Purr;
- 4.1.1- Explorar as propriedade da Screen1;
- 4.1.2- Criar um Label e um Button;
- 4.1.3- Explorar as propriedades do Label e do Button recém-criados;
- 4.1.4- Carregar Mídias (imagem e som);
- 4.1.5- Utilizar mídias carregadas nas propriedades dos componentes;
- 4.1.6- Criar Blocos de eventos;
- 4.1.7- Desenvolver um Script que possua um evento como pré-requisito e um procedimento como consequência;
- 4.1.8- Conectar um Sistema Android/emulador ao Blocks;
- 4.1.9- Testar aplicação.
- 4.2- Aperfeiçoar HelloPurr alterando somente suas propriedades (não criando novos componentes).
ITEM | ATIVIDADE | OBJETIVO | TEMPO
|
---|---|---|---|
1 | Introduzir conceitos básicos de programação. | 1; 1.1; 1.2; 1.3; 1.4 | 10 minutos |
2 | Apresentação Light do AppInventor, a funcionalidade básica da ferramenta deve ser apresentada (Diferenças entre o Blocks e o Designer). | 2; 2.1; 2.2; 2.3; 2.4; 2.5; 2.6; 2.7; 2.8; 2.8 | 15 minutos |
3 | Traduzir conceitos básicos de programação para AppInventor, "explorando" o Designer e o Blocks. | 3; 3.1; 3.2 | 5 minutos |
4 | Diferenciar Scratch de AppInventor, a mudança de Sprites para componentes. | 3; 3.3; 3.3.1; 3.3.2 | 5 minutos |
5 | Desenvolver o Tutorial HelloPurr. | 4; 4.1; 4.1.1; 4.1.2; 4.1.3; 4.1.4; 4.1.5; 4.1.6; 4.1.7; 4.1.8; 4.1.9 | 30 minutos |
6 | Mostrar possibilidades de melhoramentos da aplicação HelloPurr, "enfeitando-o" (alterar as propriedades dos componentes já existentes. | 4; 4.2 | Tempo restante |
Lição II
1- Praticar e expandir conhecimentos já adquiridos.
- 1.1- Desenvolver o exemplo de caso: Tutorial PaintPot.
- 1.1.1- Rever conceitos dos componentes Button e Screen;
- 1.1.1.1- Editar propriedades "mais específicas" dos componentes Button e Screen (AlignHorizontal, ScreenOrientation, Scrollable, BackgroundColor, Shape...). Observação: Procurar utilizar a Documentação de Referência para as propriedades que possuem função desconhecida.
- 1.1.2- Entender a função de um ScreenArrangement e de suas variações (Horizontal, Vertical e Table);
- 1.1.3- Criar um ScreenArrangement;
- 1.1.3.1- Entender como expressar o valor das propriedades Width e Height de três maneiras possíveis e suas respectivas funções como propriedades de um componente.
- 1.1.4- Aprender a inserir componentes em ScreenArrangements;
- 1.1.5- Entender conceitualmente a função de um Canvas;
- 1.1.6- Criar um Canvas com uma área que se ajuste automaticamente ao tamanho da Screen;
- 1.1.7- Saber criar blocos de eventos relacionados a componentes Buttons e como "juntá-los" (encadeá-los) a procedimentos derivados do componente Canvas para formar um Script.
- 1.1.8- Utilizar blocos de eventos do Canvas para realizar procedimentos de desenho no próprio Canvas (desenhar retas, círculos...).
- 1.1.9- Possibilidades de melhoramentos da aplicação PaintPot (adição de novas funcionalidades).
- 1.1.1- Rever conceitos dos componentes Button e Screen;
ITEM | ATIVIDADE | OBJETIVO | TEMPO
|
---|---|---|---|
1 | Iniciar o desenvolvimento do Tutorial PaintPot no Designer para recuperar conceitos vistos anteriormente. | 1; 1.1; 1.1.1; 1.1.1.1 | 15 minutos |
2 | Entender e aplicar o conceito de ScreenArrangements e das propriedades Width e Height (no Tutorial PaintPot). | 1; 1.1; 1.1.2; 1.1.3; 1.1.3.1; 1.1.4 | 10 minutos |
3 | Utilizar o componente Canvas e definir sua área (no Tutorial PaintPot). | 1; 1.1; 1.1.5; 1.1.6 | 5 minutos |
4 | Criar um Script que "utilize" os componentes Canvas e Button. Utilize a relação Evento-Procedimento (no Tutorial PaintPot). | 1; 1.1; 1.1.7; 1.1.8 | 10 minutos |
5 | Aplicar alterações na aplicação PaintPot que objetivem expandi-la (adicionar funcionalidades). Procurar usar a criatividade (botões que limpe a tela,façam triângulos, quadrados...). | 1; 1.1; 1.1.9 | Tempo restante |
Lição III
1- .
- 1.1-
DIA 01
Apresentação
- Conceitos básicos (variável, script, sprite, eventos...).
- Apresentação da estrutura básica do AppInventor, Blocks e Components.
- Utilização de tutoriais iniciantes produzidos pelo MIT para aplicar o pouco aprendido.
Introdução ao AppInventor |
---|
Introdução ao AppInventorNesta oficina você aprenderá alguns conceitos básicos de programação e os utilizará para criar aplicativos utilizando a ferramenta AppInventor. O AppInventor é um software educacional criado pelo MIT para auxiliar seus alunos a melhor compreender a funcionalidade da lógica de programação. Trabalharemos diversos conceitos que serão importantes quando tratados em outras linguagens, como Variáveis, Listas, Procedures e etc. Nesta primeira parte da oficina, aprenderemos um pouco mais sobre o AppInventor. O AppInventor é uma ferramenta muito intuitiva, e por isso, de fácil compreensão. Ele é dividido em duas partes, o Designer e o Blocks. Na etapa Designer, trataremos Buttons, Labels, Canvas e até arquivos de mídia, como Sounds. Observe na imagem abaixo como a nomenclatura de cada seção (em inglês) indica exatamente sua função, como por exemplo, Viewer e Properties. Já no Blocks, criaremos Procedures, Listas, Variáveis e etc. Nesta parte desenvolveremos diversos blocos que detalharam o a funcionalidade do aplicativo, ou seja, o que os componentes do aplicativo devem fazer. Tanto o Designer como o Blocks possuem diversos conceitos que precisam ser abordados de uma maneira mais prática do que teórica. Para isso, enquanto introduzimos o básico de AppInventor, iremos ver alguns conceitos comuns aos presentes em Scratch. E esses conceitos, serão revistos através de tutoriais que iremos seguir ao longo desta oficina. |
Tutorial Hello Purr |
---|
Tutorial Hello PurrAntes de começarmos a desenvolver nossa aplicação, precisamos ter certeza do que exatamente queremos. Como este é o nosso primeiro tutorial iremos seguir o HelloPurr Tutorial que pode ser encontrado na sua versão original no site do AppInventor - MIT. Este aplicativo é relativamente muito simples, ele conterá uma imagem de um gato que quando clicada com o botão esquerdo do mouse, deverá tocar o som de um miado e uma instrução que dirá "Clique no Gato". Faça o download da Imagem do Gato e do Miado antes de continuar. Para começar vá ao site do AppInventor - MIT e entre com uma conta Gmail. A imagem abaixo mostra como deverá aparecer sua tela na primeira vez que você loga no site e destacado em vermelho o botão New, que você deve clicar para criar um novo projeto: Em seguida crie um novo projeto e o nomeie HelloPurr. Assim que você cria um projeto, o AppInventor, automaticamente, o redirecionará para o Designer, onde iniciaremos o desenvolvimento do projeto. Como vimos na Introdução, no Designer, "organizamos" o desenvolvimento do aplicativo, porque é nele em que são criados os Components. Component ou simplesmente Componente é um termo utilizado para representar um conjunto de funcionalidades. Uma aplicação pode ser formada apenas utilizando Components. Para o AppInventor os Componentes são objetos que podem conter métodos, eventos e/ou propriedades. A imagem abaixo mostra a tela inicial do Designer e destaca a posição de algumas de suas seções. Perceba pela imagem que o Designer já inicia com um componente: a Screen1. Todo componente existente no aplicativo é listado na seção Components, e a sua direita, na seção Properties, estão as propriedades do componente selecionado. Agora, selecione o componente Screen1 e altere sua propriedade Title (na seção Properties) para HelloPurr. A propriedade Title de uma Screen pode ser considerado como o título da mesma, neste caso, não teremos a necessidade de criar mais Screens, por isso o Title da nossa Screen1 pode ser o do próprio aplicativo (ou seja, HelloPurr). Depois de titular a Screen1, nós adicionaremos um novo componente ao nosso aplicativo. Para adicionar um novo componente, vá até a seção Basic, abra a gaveta em que o componente se encontra, e o arraste até o vizualizador. Neste caso nós queremos criar uma imagem que ao receber um clique com o botão esquerdo do mouse, toque o som de um miado. Por isso nós adicionaremos ao vizualizador um componente Button (da gaveta Basic). Assim que o componente Button é criado, a seção Properties se "enche" de novas propriedades, agora referentes ao componente Button1. Antes de modificarmos as propriedades deste novo componente, vá até a seção Components e altere seu nome para ButtonGato, para que os componentes fiquem fáceis de se identificar. Apesar de este tutorial possuir poucos componentes é importante nomeá-los adequadamente. Para entender melhor a necessidade de se organizar os nomes dos componentes, leia Padronização. Agora que já possuímos um Button criado, precisamos fazer com que ele assuma a imagem do gato (link para download esta disponível no início deste tutorial). Selecione o componente ButtonGato e (na seção Properties) procure pela propriedade Image. A propriedade Image de um Button possui uma única função: Adicionar uma imagem de fundo a um componente. Como já possuímos a imagem do gato, precisamos carregá-la no Designer. Há duas formas de carregar uma mídia no Designer:
Assim que você tiver a imagem carregada, o Designer, estará assim: Pela imagem acima podemos perceber um problema no vizualizador: Por cima da imagem do gato aparece um texto, isso acontece porque a propriedade Image de um Button adiciona apenas uma imagem de fundo e não sobrepõe outras propriedades dos Buttons , como o Text. A propriedade Text possui uma função muito simples, adicionar um texto ao componente. Portanto a solução para o nosso "problema" é: Apagar o valor da propriedade Text. Assim que você tiver resolvido o problema do texto, nós já teremos a imagem do gato no nosso aplicativo pronta, agora é necessário adicionar uma pequena instrução que diga: Clique no Gato. Portanto, trabalharemos com outro componente, chamado Label. Os Labels, diferente da maioria dos componentes, possui apenas uma função: Exibir um texto. E é exatamente isso que precisamos, portanto, vamos até a gaveta Basic e arrastamos para o nosso vizualizador o componente Label. Em seguida altere o nome do Label1 para LabelInstrucao (lembre-se que o AppInventor não aceita "ç" em nome de componentes). Agora, observe as propriedades do LabelInstrucao, como a função de um componente Label é apenas exibir um texto, é óbvio que todas as suas propriedades vão ser relativas a edição de texto. Por isso, vamos realizar uma série de alterações nas suas propriedade, para que o nosso texto ganhe maior visibilidade:
Certifique-se se o seu computador possui os requisitos necessário para abrir o Blocks no site AppInventor - MIT. O Blocks nos proporciona muitas possibilidades, podemos adicionar diversas funcionalidades ao nosso aplicativo. Entretanto como esse é o nosso primeiro tutorial, não iremos explorá-las. Na verdade, nos concentraremos na que foi descrita no início deste tutorial. O aplicativo possui a imagem do gato e uma instrução, só falta uma coisa: que quando eu clicar no gato ele toque o Miado. Mas para fazermos um arquivo de áudio ser executado no AppInventor, é necessário que outro componente seja adicionado no Designer: O Sound. Volte ao Designer, vá até a gaveta Media e arraste um Sound para o vizualizador. Observe que o Sound é um arquivo invisível no Designer e que necessita de uma mídia carregada para ser executado (sem uma mídia nenhum som será tocado). Portanto altere o nome do componente Sound1 para Miado e a propriedade Source para o arquivo de som baixado. Agora quando você instruir o aplicativo para executar o SoundMiado ele tocará o arquivo de som que foi carregado. Sempre que o componente SoundMiado for tocado, o som do miado que carregamos será tocado. Entretanto agora temos de instruir o aplicativo de executar o SoundMiado quando o ButtonGato receber um clique, e é agora que utilizaremos o Blocks. A imagem acima nos da um pequeno mapa para termos uma ideia de como criar instruções. A parte Blocks do desenvolvimento de um aplicativo, no início, nos parece mais complicada porque não possuímos um bom domínio de AppInventor e como consequência não sabemos "aonde" no Blocks buscar as instruções desejadas. Por isso durante o desenvolvimento das oficinas tentaremos abrangir um grande números de funcionalidades para que você tenha mais "ferramentas" para utilizar. Agora vamos adicionar as instruções que desejamos. Precisamos fazer com que quando o ButtonGato seja clicado ele execute o miado. Vá até o Blocks e na seção My Blocks clique na gaveta ButtonGato. Observe que assim que você abre a seção My Blocks são listadas a gaveta My Definitions e uma outra para cada componente que foi criado no Designer. Como nós queremos utilizar o ButtonGato, vamos clicar na sua gaveta e vizualizar as opções disponíveis. Dentro dessa gaveta existe a seguinte instrução: Arraste esta instrução para o centro da tela. Observe a cor deste bloco (verde escuro), somente os blocos de eventos possuem essa cor. Em AppInventor, evento é uma ação ou acontecimento que desencadeia um Procedure. Como por exemplo, o clique do mouse é uma condição para que um objeto se movimente. No caso HelloPurr o evento é o clique do mouse sobre o ButtonGato. Essa instrução sugere que quando o evento ocorrer, haverá uma consequência. A consequência deve ser adicionada a instrução evento. A consequência que esperamos é o miado, ou seja, a execução do SoundMiado. Para isso acontecer, vá até a seção My Blocks e na gaveta SoundMiado procure pela seguinte instrução: Perceba que dentro deste bloco esta escrito: "call SoundMiado.Play". Os blocos AppInventor são autoexplicativos, dentro deles PODEM existir até três informações:
Neste caso "call", traduzindo do inglês, significa "chamar", portanto o bloco esta chamando algo do componente SoundMiado, e "Play", significa "tocar" ou "executar". Como o componente em questão é um arquivo de som, se executarmos o SoundMiado teremos como resposta o miado que desejamos. Agora só o que temos de fazer é juntar o bloco de evento com o "call" arrastando o "call" para dentro do de evento. Este deverá ser o resultado: Assim que você tiver combinado as duas instruções, abra o emulador ou conecte o Blocks a um dispositivo para testar o aplicativo. Esta deverá ser a aparência do aplicativo: |
Tutorial MoleMash |
---|
Tutorial MoleMashEste tutorial possui como pré-requisito o Tutorial HelloPurr e pode ser encontrado na sua versão original no site AppInventor - MIT. Agora que você tem uma noção de AppInventor, iremos iniciar o MoleMash Tutorial. O MoleMash é um jogo muito simples, ele se resume em uma toupeira que se movimenta sobre uma área específica aleatoriamente, enquanto o jogador tenta tocá-la, e toda vez que o jogador a toca, recebe um ponto. Para começar, crie um projeto, nomeie-o MoleMash e altere o Title da Screen1 para MoleMash. A seguir a primeira coisa que faremos, será criar a "área" sobre a qual a toupeira irá se deslocar. Para isso, utilizaremos um componente chamado Canvas. O Canvas é um retângulo bidimensional com área definida, utilizado para desenhar ou para mover Sprites (objetos exibidos em duas dimensões).
Quando o valor das propriedades Width e Height de um componente são alterados, os limites horizontais e verticais, respectivamente, são redefinidos. Existem três modos de expressar o valor do Width ou Height de um componente no Designer (é possível fazer esta modificação no Blocks de outra forma):
Agora que nossa área esta definida, precisamos acrescentar a toupeira ao jogo. Vamos utilizar outro novo componente: O ImageSprite. Um ImageSprite é um objeto que pode se locomover livremente por toda a área de um Canvas. Vá até a gaveta Basic e arraste um ImageSprite para dentro do CanvasArea (nomeie-o ImageSpriteToupeira). Em seguida, faça o download da Imagem e a carregue na propriedade Picture do ImageSpriteToupeira, que possui a mesma função do Image dos Buttons. O cenário do jogo esta pronto, agora é necessário adicionarmos uma janela que indique o placar, e um botão para que possamos reiniciar o jogo. Para o placar, utilizaremos um Label, como já vimos anteriormente, o Label possui exatamente a função de exibir um texto. E como em nosso caso queremos exibir um placar, quem melhor? Já para criarmos um botão, utilizaremos novamente um Button. Portanto siga os passos abaixo para finalizarmos a parte Designer do aplicativo:
Observação: Quando o valor da propriedade Text do LabelPlacar for nulo, o Label desaparece do Designer. Justamente porque não há nenhum texto para mostrar, fato que mudará no Blocks.
Assim que você tiver completado os passos acima, terá finalizado a parte Designer. Abra o Blocks para começarmos a desenvolver as instruções. A primeira instrução que devemos criar é o movimento da Toupeira (ImageSpriteToupeira). Para tal, iremos utilizar blocos diferentes dos que já utilizamos até então: Os Procedures. Procedure ou simplesmente procedimento, significa modo de agir ou proceder durante um evento. Podemos traduzir este conceito para programação se considerarmos “agir” como uma sequência de instruções a serem seguidas pela aplicação que esta sendo desenvolvida. Portanto o conceito de Procedure para AppInventor seria: Sequência de ações ou instruções a serem seguidas. Para criar um Procedure vá até a seção Built-In, e na gaveta Definitions, procure pelo seguinte bloco: Arraste esse bloco para a Área de Trabalho do Blocks e altere o nome do procedimento para MovimentoToupeira. Agora que o bloco de procedimento foi criado, é preciso adicionar "O QUE" o procedimento deve realizar. Como queremos fazer com que a Toupeira se desloque aleatoriamente... EM CONSTRUÇÃO |
DIA 02
Especificação
- Relembrando o básico já visto.
- Introdução a funcionalidade da calculadora (especificação).
- Início do desenvolvimento na parte Components.
DIA 03
Desenvolvimento
- Término da parte Components.
- Revisão dos conceitos básicos que serão utilizados (variáveis, listas, procedures...).
- Início da parte do Block editor.
DIA 04
- Conclusão e possibilidades de melhoramentos.