domingo, 23 de outubro de 2016

Curso de Programação - Programação Sequencial

Este é o primeiro programa do curso de programação de computadores usando o Scratch. Entenda-se que este não é um curso de Scratch e sim um curso de programação que usa o Scratch como ferramenta de programação.

O conceito aqui exemplificado é o da Programação Sequencial (veja a figuras a seguir). Nesta modalidade de programação a principal característica é a execução das instruções em sequência, sem repetições ou seleção de linha a serem, ou não, executadas.

 Curso de Programação - Exemplo 1

Ressalta-se que por mais difícil que se possa imaginar, esta modalidade de programação é comumente encontrada em programas profissionais. A janela a seguir permite que seja executado o programa da figura anterior - é só clicar na bandeira verde.


Obviamente os programas completos não usam esta modalidade de programação. Entretanto, é muito usada nos atuais módulos da Programação Orientada a Objetos, como classes e métodos. 

Para Saber Mais

quinta-feira, 14 de abril de 2016

Jogo da Programação

Visão Geral e Objetivo

O ambiente simula, através de um jogo de tabuleiro, o processo de programação de um robô, sendo indicado como elemento lúdico tangível em aulas e/ou atividade de introdução à programação de computadores. O jogo tem como objetivo conduzir um robô pela trilha, do quadro inicial até o quadro final, executando um dos objetivos pré-determinado ou até mesmo criando novos objetivos.

Elementos do Jogo
  • Tabuleiro - contém a trilha composta por quinze casas, observando-se que o caminho a ser percorrida dependerá do objetivo selecionado;
  • Jogadores - três a cinco aprendizes, que serão divididos em programadores e controlador programável;
  • Peças - robô e marcadores amarelos e verdes (cinco de cada cor e podem ser substituídas por grãos ou moedas);
  • Cartões de Objetivo - descrevem qual objetivo deve ser alcançado em cada uma das rodadas do jogo;
  • Cartões de Programação - individualmente descrevem uma ação específica e logicamente agrupados descrevem como alcançar o objetivo.

O Jogo
  1. Inicialmente o instrutor (professor ou organizador da atividade) distribui aleatoriamente os marcadores pelo tabuleiro e organiza os jogadores em dois grupos, os programadores e o controlador programável, doravante chamado apenas de controlador;
  2. Sendo o controlador isolado do grupo de programadores, estes últimos devem receber um cartão de objetivo (selecionado ou sorteado pelo instrutor);
  3. Com base no cartão recebido, os programadores deverão traçar a melhor estratégia (caminho a ser percorrido) para alcançar o objetivo;
  4. Definido o caminho a ser percorrido, os programadores deverão selecionar ordenadamente os cartões de programação que orientarão o controlador quanto ao caminho a ser percorrido e como selecionar ou descartar os marcadores;
  5. O controlador deve ser trazido ao tabuleiro e a ele também devem ser passados os cartões de programação ordenados e empilhados, onde apenas a primeira instrução deve estar visível ao controlador;
  6. O robô deve ser posicionado pelo controlador na primeira casa do tabuleiro, com sua frete posicionada na mesma direção da seta ali encontrada;
  7. O controlador deve observar a carta visível da pilha, interpretar o seu conteúdo, executar a ação descrita e descartar a carta de programação, de maneira a poder visualizar a próxima instrução, podendo assim continuar a execução do programa.
O jogo será encerrado quando o robô alcançar a casa final, cumprindo com as determinação da carta de objetivo. Destaca-se que erros no programa, ou na execução das instruções, poderão fazer com que o controlador erre a trajetória e nunca chegue a casa final, sendo assim necessário definir um tempo máximo para execução da partida.

Observações
  • Este jogo exige dois tipos de habilidades para alcançar o objetivo: i) a lógica dos programadores para selecionar o caminho e para ordenar os cartões de programação e, ii) a destreza e precisão do controlador para executar as instruções;
  • Em ambientes com muitos aprendizes, estes devem ser divididos em grupos menores, de no máximo três aprendizes por grupo. Podendo haver uma competição, contabilizando o tempo de programação e o tempo de execução.
Possíveis Variações no Jogo
  • Mais de um controlador pode ser usado, onde as tarefas podem ser divididas;
  • Assim como podem ser personalizados os objetivos, os instrutores e aprendizes podem criar novas opções de tabuleiros;
  • Em ambientes amplos, o tabuleiro pode ser desenhado no chão, em tamanho suficiente para que o controlador programável personifique o robô.
Um Exemplo de Programa

Usando a distribuição mostrada à esquerda da figura a seguir, com o objetivo de "Coletar todos os marcadores amarelos e depositá-los na última casa do tabuleiro", uma das opções para programação é mostrada à direita da figura.


O vídeo a seguir apresenta uma demonstração das características e do uso da nova versão do Jogo. No vídeo são destacadas as principais funcionalidades do Jogo, assim como seus elementos e fases.


Download do Jogo

domingo, 24 de janeiro de 2016

Blockly-Games

O Blockly-Games é uma séria de jogos educacionais voltados ao ensino da programação. Desenvolvido pela Google for Education implementa tutoriais de programação visual por blocos lógicos, de maneira semelhante a aplicações profissionais como o AppInventor, ou educacionais como o Scratch.



Ao todo são sete tutoriais (jogos) que ao serem usados, progressivamente vão apresentando os fundamentos da programação e da ciência dos computadores. O Blockly-Games pode ser acessado via internet em https://blockly-games.appspot.com/, ou baixado de https://github.com/google/blockly-games/wiki/Offline.

domingo, 29 de novembro de 2015

Oficinas

Este termo tem definição semelhante ao de uma palestra, por ser caracterizado por uma apresentação de curta duração. No entanto, na palestra a plateia é mera espectadora, enquanto que no contexto educacional da oficina o público-alvo é convidado a participar ativamente, desenvolvendo algum tipo de atividade.

Seguindo o conceito apresentado, este projeto tem previsão (para cada grupo de alunos selecionado) de execução de três oficinas. Cada oficina deverá ser conduzida por um professor da escola contemplada, o qual terá apoio de um ou dois alunos da UFOPA. Um intervalo de pelo menos três semanas deve ser inserido entre cada uma das oficinas. Este tempo deve ser o suficiente para que os alunos de cada grupo possam por em prática as atividades extras especificadas ao final de cada oficina. Durante este tempo a interação entre os alunos e o grupo de apoio deverá ocorrer, preferencialmente, via fórum.

Sempre que possível, as primeira oficinas deverão coincidir com o período determinado para os tutoriais do projeto internacional Hour of Code, de maneira que todos os atores (alunos, professores e voluntários) sintam-se inseridos em um projeto de maior importância, o que deve ser mais um elemento motivador da execução das atividades.

Tutoriais

Um Tutorial pode ser definido como uma ferramenta de ensino/aprendizagem que auxilia este processo através da apresentação passo a passo do funcionamento de algo, orientando o aprendiz na compreensão deste algo ou na execução de uma tarefa. Pode ser tanto um programa de computador quanto um texto, contendo ou não imagens. Observa-se ainda que não é necessariamente obrigatória a presença ou a moderação de um especialista (professor ou tutor), de maneira que o próprio aprendiz, auxiliado pelas instruções, participa ativamente no processo de aprendizado.

Os tutoriais usados neste projeto, em sua grande parte, foram obtidos dos websites da iniciativa Hour of Code, que disponibiliza uma grande variedade de aplicações computacionais voltadas ao aprendizado da programação de computadores. A lista completa pode ser acessada clicando na imagem com o ícone da Code Org. Alguns tutoriais também estão diretamente disponíveis clicando em suas imagens.


Cássio D. B. Pinheiro

Prof. Cássio D. B. Pinheiro: Idealizador do Webite e responsável pelo projeto "Tutoriais e Oficinas Computacionais Interativas para Cursos de Computação"; é Tecnólogo em Processamento de Dados pela UNESPA/1991, com especialização em Engenharia de Software pela UFPA, concluída em 1995, mestrado em Engenharia Elétrica com ênfase em Computação Aplicada pela UFPA/2006 e doutorado em Ciências com ênfase em Gestão do Conhecimento e Inovação para o Desenvolvimento Sustentável pela UFOPA/2017..




Web Site: Cássio Website
Blog: Blog Acadêmico
e-mail: cassio.pinheiro@ufopa.edu.br

Alguma Pergunta?

Caso tenha alguma pergunta ou sugestão a fazer, vá até o final desta página e clique na área de texto denominada "Digite seu comentário..." e assim o faça. Para as perguntas, você pode observar na lista a seguir, se ela já não foi feita por outro usuário.