Ambiente de Desenvolvimento Web Multiplataforma Configurável para Robótica Educacional

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

Download "Ambiente de Desenvolvimento Web Multiplataforma Configurável para Robótica Educacional"

Transcrição

1 UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE CENTRO DE TECNOLOGIA PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA E DE COMPUTAÇÃO Ambiente de Desenvolvimento Web Multiplataforma Configurável para Robótica Educacional Sarah Thomaz de Lima Sá Orientador: Prof. Dr. Luiz Marcos Garcia Gonçalves Dissertação de Mestrado apresentada ao Programa de Pós-Graduação em Engenharia Elétrica e de Computação da UFRN (Área de concentração: Engenharia de Computação) como parte dos requisitos para obtenção do título de Mestre em Ciências. Natal, 25 de julho de 2013

2 Catalogação da Publicação na Fonte. UFRN / Biblioteca Central Zila Mamede Kalline Bezerra da Silva Flor CRB15/327 Sá, Sarah Thomaz de Lima. Ambiente de desenvolvimento web multiplataforma configurável para Robótica Educacional / Sarah Thomaz de Lima Sá. Natal, RN, f. Orientador: Luiz Marcos Garcia Gonçalves. Dissertação (Mestrado) Universidade Federal do Rio Grande do Norte. Centro de Tecnologia. Programa de Pós-Graduação em Engenharia Elétrica e de Computação. 1. Robótica educacional Dissertação. 2. Software educacional Dissertação. 3. RoboEduc Dissertação. 4. Ambiente de Desenvolvimento Dissertação. I. Gonçalves, Luiz Marcos Garcia. II. Universidade Federal do Rio Grande do Norte. III. Título. RN/UF/BCZM CDU :37

3

4 À Deus, pois, sem Ele eu não chegaria até aqui.

5 Agradecimentos Ao meu orientador, professor Luiz Marcos Garcia Gonçalves, sou grata pela orientação, pela confiança depositada e por acreditar em mim. A minha mãe por toda a paciência, por suportar os momentos de stress e por sempre acreditar que eu conseguiria. Você foi meu suporte. Ao meu pai que sempre me motivou. Agradeço por você ter tanto orgulho de mim. Aos meus irmãos, Camilla e Darlan, agradeço por todo apoio. A Carlinha, por toda ajuda, dedicação, orientação e discussões sobre este trabalho. Sem você, adiantar este trabalho seria impossível. A Renata, Victor, Rafael Aroca e a toda a equipe do laboratório NatalNet pelo suporte e ajuda prestados. A Lorena, Priscilla e todos os meus irmãos em Cristo. Agredeço por terem dedicado tempo de oração pelo meu trabalho e por minha vida. A Capes, pelo apoio financeiro.

6 Do meu telescópio, eu via Deus caminhar! A maravilhosa disposição e harmonia do universo só pode ter tido origem segundo o plano de um Ser que tudo sabe e tudo pode. Isto fica sendo a minha última e mais elevada descoberta. Isaac Newton

7 Resumo Propomos um ambiente de desenvolvimento online multiplataforma configurável, desenvolvido especificamente para aplicações de robótica educacional. O ambiente, que surge como uma extensão do software RoboEduc, possibilita que a programação de diversos robôs programáveis possa ser realizada utilizando a linguagem R-Educ. Tornamos possível que o usuário programe na linguagem R-Educ e que o seu código seja traduzido para uma linguagem cadastrada anteriormente, compilado e em seguida enviado e/ou executado pelo robô. Para o desenvolvimento deste trabalho, realizamos inicialmente uma pesquisa bibliográfica acerca das principais linguagens de programação utilizadas em robótica, bem como suas definições e paradigmas, a partir da qual foi possível definir um conjunto de padrões considerados importantes para a criação deste ambiente. Em seguida, na fase de desenvolvimento de software, foi implementado o ambiente de desenvolvimento, levando em consideração os requisitos e funcionalidades definidos na fase de projeto. Por fim, para validar a plataforma, realizamos cadastros de algumas linguagens de programação e verificamos se o ciclo completo foi satisfeito - cadastro de linguagem, programação em R-Educ, compilação para a linguagem cadastrada, compilação para o código de máquina e envio do código para o robô. Palavras-chave: Ambiente de Desenvolvimento, Robótica Educacional, Online.

8 Abstract We propose an online configurable multiplatform development environment specifically developed for educational robotics applications. The environment, which appears as an extension of RoboEduc software, allows the programming of several programmable robots to be performed using the R-Educ language. We make it possible for the user to program in the language R-Educ and then translate the code to a language previously registered, compiled and then sent or executed by the robot. To develop this work, we conducted a bibliographic research about the main programming languages used in robotics, as well as their definitions and paradigms, from which it was possible to define a set of patterns considered important for the creation of this environment. Then, in the software development phase, we implemented the development environment, bearing in mind the requirements and functionality defined in the design phase. Finally, to validate the platform, we conducted some trials of programming languages and verificate if the complete cycle was satisfied - registration of language, programming in R-Educ, compilation for the registered language, compilation to the machine code and send the code for the robot. Keywords: Development Environment, Educational Robotics, Online.

9 Sumário Sumário Lista de Figuras Lista de Tabelas i iii v 1 Introdução Escopo do Trabalho Motivação Metodologia Contribuições e Aplicações Estrutura do texto Fundamentação Teórica Robótica Educacional Hardwares para Robótica Educacional Kits comerciais Kits com sucata Kits com peças e materiais eletrônicos Linguagens de Programação Desenvolvimento de Programas Estado da Arte Ambientes de Desenvolvimento para Robótica Desktop RobotC RoboEduc Software Lego Mindstorms NXT Microsoft Robotics Studio Legal Ambiente de Desenvolvimento para Robótica Web i

10 3.2.1 Mindstorms Internet Control Environment ADWN Análise Comparativa Ambiente Proposto Projeto do Ambiente Ferramentas Utilizadas Linguagem R-Educ Gramática da Linguagem Cadastro de Linguagem Análise Preliminar Formulário de Cadastro Tradução e Compilação Analisador Léxico Mapeamento entre Linguagens Analisador Sintático Geração do Programa Objeto Diagrama de Classes Comunicação e Envio Ambiente de Desenvolvimento Resultados Testes Primeira Etapa Segunda Etapa Terceira Etapa Quarta Etapa Quarta Etapa Quinta Etapa Avaliação dos Ambientes Conclusões Trabalhos Futuros Referências bibliográficas 67

11 Lista de Figuras 3.1 Software educacional RoboEduc Software Lego Mindstorms NXT Ambiente de programação Legal Mindstorms Internet Control Environment - MICE ADWN rodando em um navegador web Diagrama de casos de uso Listagem de Linguagens Cadastradas Cadastro de linguagem Formuário de cadastro - compilação Formuário de cadastro - declaração da função principal Formuário de cadastro - declaração e chamada de funções sem retorno Formuário de cadastro - declaração de variáveis do tipo texto Formuário de cadastro - operadores Formuário de cadastro - controlador de fluxo: SE Formuário de cadastro - controlador de fluxo: PARA Formuário de cadastro - controlador de fluxo: TESTE Formuário de cadastro - chamadas de função Universalização da linguagem R-Educ Diagrama de classes Diagrama de conexões Ambiente de desenvolvimento Etapas do treinamento para a OBR Sequência de geração de arquivos Conhecimento necessário para cadastro Gráfico comparativo entre dificuldade de cadastro e conhecimento necessário Complexidade atribuída às funcionalidades do ambiente de programação Avaliação dos ambientes desenvolvidos iii

12

13 Lista de Tabelas 3.1 Análise comparativa entre os ambientes de desenvolvimento desktop Análise comparativa entre os ambientes de desenvolvimento web Palavras Reservadas da Linguagem R-Educ v

14 Capítulo 1 Introdução A presença da informática na maioria das atividades cotidianas, mesmo que indiretamente, é um grande traço do tempo em que vivemos. Este traço está mais presente no universo dos jovens e crianças, que são influenciados pela televisão e alcançados pelo advento das novas tecnologias aplicadas à educação em seu dia-a-dia em sala de aula, sejam em escolas públicas, privadas, ou em cursos oferecidos pelos diferentes setores governamentais. A robótica educacional nasceu neste contexto de novas tecnologias, trazendo consigo o avanço tecnológico aliado a um ambiente de aprendizagem rico e inovador. Este ambiente de aprendizagem se destaca por mostrar, na prática, conceitos teóricos e por desenvolver aspectos cognitivos e psicomotores dos alunos [Zilli 2004], como, por exemplo, pensamento investigativo, raciocínio lógico, criatividade, desenvolvimento de método científico, aprimoramento da motricidade e outros [Miranda et al. 2010]. Segundo Schons et al. (2004), a robótica educacional pode também ser utilizada para complementar o estudo de disciplinas curriculares a partir da construção de protótipos desafiadores, levando os alunos a uma rica experiência em aprendizagem e desenvolvimento de inteligência múltipla. Uma das metodologias adequadas, segundo da Silva (2008), para o uso da robótica educacional em sala de aula é através de oficinas, onde os alunos devem seguir um conjunto de passos: análise do desafio (que pode estar relacionado a temas da grade curricular), montagem do protótipo robótico, programação e execução do programa no robô. Para a criação de protótipos robóticos, podem ser utilizados kits de robótica, que são utilizados no âmbito educacional, estes englobam um conjunto de sensores, motores, fios conectores, módulos de montagem, controlador e software para controle e programação. Segundo pesquisa que realizamos in loco durante a Olimpíada Brasileira de Robótica 2012 [OBR 2012], os kits de robótica mais utilizados são importados e apresentam um alto custo para aquisição. Por esse motivo, existem iniciativas que buscam novas alterna-

15 2 CAPÍTULO 1. INTRODUÇÃO tivas para substituir a utilização dos kits importados, permitindo que escolas com baixo poder aquisitivo façam uso desta ferramenta de aprendizagem. Estas iniciativas fazem uso de kits de robótica livre. Independente do tipo de kit de robótica utilizado, seja ele comercial ou livre, se ele possuir um controlador programável ou for capaz de receber um conjunto de comandos, é necessário, em geral, a utilização de uma linguagem de programação. Kits de robótica comerciais normalmente acompanham um software específico para programação de seus robôs, já os kits de robótica livre podem, comumente, ser programados utilizando compiladores de linguagens de programação específicas. Neste contexto, caso o professor de robótica educacional necessite ou deseje fazer uso de um novo kit de robótica, a fim de baixar os custos ou trazer uma novidade para sala de aula, seria necessário a troca do ambiente de programação e/ou da linguagem de programação utilizada. Sendo assim necessário ensinar um novo conjunto de passos e instruções aos alunos para programação, além de ter de ensinar o passo a passo para a montagem do novo hardware. Com a difusão da robótica educacional, diversas pesquisas vem sendo realizadas a fim de produzir materiais para que as oficinas de robótica educacional tragam novas possibilidades aos alunos. É nesse cenário que surge uma busca de que uma maior versatilidade de hardware seja utilizado em ambientes de aprendizagem que fazem uso da robótica educacional. Para tal, propomos uma universalização do terceiro nível da linguagem de programação em níveis R-Educ [Pitta et al. 2010] a partir da criação de um ambiente de desenvolvimento online configurável, desenvolvido especificamente para aplicações em robótica educacional. O ambiente, que surge como uma evolução do software RoboEduc [Pitta 2008], possibilita que a programação de vários robôs programáveis possa ser realizada no terceiro e quinto nível da linguagem R-Educ, uma linguagem simples e intuitiva para programação de robôs [Barros et al. 2010]. A ideia deste trabalho não é a criação de um ambiente onde se é permitido programar em várias linguagens, mas sim um ambiente onde linguagens de programação para robótica podem ser cadastradas, a partir da resposta de um formulário de cadastro, por um usuário experiente na linguagem, e o ambiente se configura para compilar o código em linguagem de máquina e enviar ao robô. A partir deste trabalho tornamos possível, de forma transparente ao usuário, que o usuário programe na linguagem R-Educ e o seu código seja traduzido para a linguagem cadastrada, compilado e em seguida enviado ou executado pelo robô. Para o desenvolvimento deste trabalho, realizamos inicialmente uma pesquisa bibliográfica acerca das principais linguagens de programação utilizadas em robótica, bem

16 1.1. ESCOPO DO TRABALHO 3 como suas definições e paradigmas, a partir da qual foi possível definir um conjunto de padrões considerados importantes para a criação deste ambiente. Em seguida, na fase de desenvolvimento, foi implementado o ambiente em si, levando em consideração os requisitos e funcionalidades definidos na fase de projeto. Por fim, para validar a plataforma, selecionamos algumas pessoas para realizar alguns cadastros de linguagens de programação e verificamos a completude do ciclo: cadastro de linguagem, programação em R-Educ, interpretação para a linguagem cadastrada, compilação para o código de máquina e envio ou execução do código ao robô. A fim de validar o ambiente de programação, fizemos testes utilizando-o em um treinamento para participação de uma olímpiada de robótica no qual participaram desde alunos do ensino fundamental a estudantes universitários. Os resultados mostram que fazendo uso da plataforma de desenvolvimento configurável apresentada neste trabalho, os professores de robótica educacional não mais terão necessidade de mudar de plataforma de desenvolvimento nem de ensinar novas linguagens de programação aos seus alunos ao trocar de hardware. 1.1 Escopo do Trabalho Buscando incluir digitalmente os alunos das escolas públicas do Rio Grande do Norte, o Laboratório Natalnet-UFRN vem desenvolvendo, desde 2003, vários projetos fazendo uso do ambiente de aprendizagem da robótica educacional. Em 2005 a equipe do laboratório deu início a execução um projeto de pesquisa com fomento do CNPq, no qual foi desenvolvida e colocada em prática a metodologia para Robótica Educacional, desenvolvida no mesmo laboratório por da Silva (2008), na Escola Municipal Prof. Ascendino de Almeida, localizada na periferia da cidade de Natal no Rio Grande do Norte. Para o bom funcionamento das oficinas foram utilizados kits de robótica Lego RCX e um software de programação, na época ainda em desenvolvimento, chamado RoboEduc. Em seu trabalho da Silva (2008) descreve os resultados dos testes realizados neste projeto, frisando que foram obtidos resultados satisfatórios com relação ao aprendizado dos alunos. O término do desenvolvimento do software RoboEduc foi realizado por Pitta (2008), que além de implementar cinco diferentes níveis de programação no RoboEduc fazendo uso da linguagem R-Educ [Pitta et al. 2010], realizou também testes de usabilidade com esta ferramenta [Pitta 2011]. Uma parte da equipe envolvida no desenvolvimento do software RoboEduc e na realização dos testes na Escola Ascendino de Almeida desenvolveu outras ferramentas para serem utilizadas em aulas de robótica educacional. Levando em consideração o custo de aquisição de kits de robótica, como, por exemplo, os kits da marca Lego, foram de-

17 4 CAPÍTULO 1. INTRODUÇÃO senvolvidas ferramentas capazes de aumentar a adesão das escolas às aulas de robótica educacional. Fernandes et al. (2012) desenvolveu um simulador robótico tridimensional que permite a criação e execução de aulas de robótica educacional sem a utilização de kits de robótica. Nesta mesma linha de trabalho (barateamento da aplicação da robótica educacional), Sá (2011) criou um kit de robótica usando materiais de sucata, composto por motores, sensores e outras peças de sucata, que possui um custo inferior aos kits comerciais (menos de R$ 100,00). De acordo com Sá et al. (2012), os testes realizados com o kit alcançaram resultados satisfatórios, mostrando que ele pode ser utilizado em aulas de robótica educacional. Aroca, Gardiman & Gonçalves (2012), desenvolveram em seguida, uma plataforma robótica de baixíssimo custo, denominada N-Bot. O N-Bot possui uma arquitetura de controle e um conjuntos de técnicas que visam diminuir a complexidade de montagem e programação. Os trabalhos da equipe do laboratório Natalnet almejam que uma maior quantidade de alunos de ensino fundamental e médio possam entrar em contato com um ambiente de aprendizagem tão rico e motivador quanto a robótica educacional fazendo uso de todos os recursos disponíveis. 1.2 Motivação Para o desenvolvimento de uma aula de robótica educacional são necessários os seguintes recursos em sala de aula [Neves-Júnior 2011]: Um kit de robótica, composto por um controlador lógico programável, sensores, motores e peças para construção de uma estrutura mecânica para o protótipo robótico; Um ambiente de desenvolvimento; Um computador capaz de utilizar o ambiente escolhido; e Um ambiente propício ao desenvolvimento de uma determinada atividade. Um dos principais tópicos associados ao ensino da robótica educacional é o ensino da programação. Sabemos que existem diversas linguagens de programação, porém os ambientes de desenvolvimento que acompanham os kits de robótica educacional, em sua maioria, possuem linguagens de programação diferentes e formas diferentes de se programar: gráfica ou textual. As interfaces de programação gráfica possuem duas vertentes: ou

18 1.3. METODOLOGIA 5 se aproximam ao máximo do controle direto das peças de hardware ou tentam abstrair a visualização do hardware a partir do encaixe de conteúdos gráficos ou textuais. Já os que podem ser programados de forma textual apresentam, em sua maioria, uma linguagem de programação baseada em uma determinada língua, geralmente na língua inglesa com palavras chaves e sequências de comandos diferenciadas. Para que um programa seja compilado e enviado a um robô, frequentemente é necessária a instalação de softwares específicos em um computador, limitando essas operações a usuários especialistas [?]. Em alguns casos é necessário que o usuário possua privilégios de administração do sistema para instalar e/ou executar softwares de desenvolvimento de robótica. Sendo também, muitas vezes, necessário que o usuário possua computador com alto poder computacional ou com especificações de hardware específicas. A partir da não uniformidade encontradas nas formas de programação dos kits de robótica, dos impasses encontrados para se instalar softwares específicos num determinado computador e pelos benefícios que a ferramenta da robótica educacional possui no processo de ensino aprendizagem, temos por motivação a universalização do terceiro nível de programação da linguagem de programaçãoem níveis R-Educ, permitindo uma maior flexibilidade do uso de hardware, através de um ambiente de desenvolvimento via web e permitindo aos usuários a edição, compilação e execução de programas utilizando apenas um navegador web. Com a solução proposta, qualquer dispositivo que possua um navegador web, pode ser usado como estação de desenvolvimento de programas para protótipos robóticos. 1.3 Metodologia Para o desenvolvimento deste trabalho, realizamos inicialmente uma pesquisa bibliográfica acerca das principais linguagens de programação utilizadas em robótica, bem como suas definições e paradigmas, a partir da qual foi possível definir um conjunto de padrões considerados importantes para a criação deste ambiente. Em seguida, na fase de desenvolvimento de software, foi realizada uma pesquisa sobre as tecnologias existentes no mercado para a implementação do ambiente. Para tal, estabelecemos que seria necessário um servidor de banco de dados, uma plataforma de desenvolvimento web e uma linguagem para implementação do compilador. O banco de dados para cadastro das linguagens foi desenvolvido em Java BD, um servidor de banco de dados escrito em Java, com total suporte a SQL, JDBC e JavaEE. A plataforma web foi desenvolvida fazendo uso da tecnologia Java EE, uma plataforma de programação para servidores na linguagem de programação Java. Já a implementação

19 6 CAPÍTULO 1. INTRODUÇÃO do compilador foi feita utilizando Java, sendo necessária uma completa reestruturação do compilador da linguagem R-Educ, visto que o mesmo havia sido desenvolvido em C++. A terceira fase foi a implementação ambiente de desenvolvimento web configurável, utilizando os dados obtidos na fase de pesquisa. Esta fase foi a mais longa de todo o projeto, nela foram realizados testes para verificação da corretude dos códigos gerados pelo compilador e para verificação do cadastro de linguagens no banco de dados. Por fim, para validar a plataforma, realizamos alguns cadastros de linguagens de programação para robótica e verificamos se o ciclo completo foi satisfeito - cadastro de linguagem, programação em R-Educ, tradução para a linguagem cadastrada, compilação para o código de máquina e envio do código para o robô. 1.4 Contribuições e Aplicações Existem várias abordagens que tratam da programação de robôs em ambientes educacionais, nestas um dos problemas encontrados é a falta de ambientes que trabalhem com a nossa língua nativa, capazes de atender o perfil de diferentes usuários, utilizando conceitos da área pedagógica. Este trabalho propõe atender esses requisitos e trazer ao usuário um ambiente web, não sendo necessário que o usuário possua computadores com funcionalidades específicas, sendo todo o processamento de compilação executado no servidor. Dentre as contribuições do ambiente de desenvolvimento web configurável proposto neste trabalho está o fato de podermos traduzir o terceiro nível da linguagem R-Educ para qualquer linguagem de baixo nível que não necessita de uma forma de identação específica, podendo ser linguagens interpretadas ou compiladas. Essa é a maior contribuição deste trabalho pois este nível da linguagem R-Educ possui um alto poder de abstração, sendo passível de ser utilizada por crianças a partir de 8 anos [Pitta et al. 2010]. Com a utilização deste ambiente é possível que diversos hardwares sejam utilizados em um ambiente de aprendizagem de robótica educacional sem a necessidade de ensinar uma nova linguagem de programação aos alunos. Por o ambiente não se tratar de um middleware, apesar de fornecer serviços, ele não necessita de modificações no hardware para que seja passível de ser utilizado em diferentes plataformas, sendo esta também uma contribuição.

20 1.5. ESTRUTURA DO TEXTO Estrutura do texto Este trabalho introduz um ambiente de desenvolvimento web configurável para aplicações em robótica educacional. No Capítulo 1 mostramos o escopo do trabalho, destacando o contexto no qual este trabalho se insere bem como os trabalhos desenvolvidos na área de robótica educacional no mesmo laboratório. Expomos, também, uma visão geral da motivação deste trabalho, que é a criação de uma solução para o problema da troca e inserção de novos kits de robótica em um ambiente de robótica educacional. Descrevemos em seguida a metodologia utilizada para o desenvolvimento do trabalho e as aplicações da tecnologia proposta. O Capítulo 2 apresenta o embasamento teórico necessário à compreensão deste trabalho, sendo discutidos aspectos e benefícios já estabelecidos da robótica educacional, os principais conceitos referentes a linguagens de programação e seus paradigmas, além de um aparato teórico sobre as tecnologias utilizadas para as implementações. Em seguida, o Capítulo 3 apresenta uma revisão do estado da arte. Neste são discutidos diversos trabalhos que propõem ambientes de desenvolvimento para robótica educacional web e desktop. No Capítulo 3 também é realizada uma análise comparativa entre os ambientes apresentados e o proposto neste trabalho. No Capítulo 4, o ambiente de desenvolvimento proposto é descrito com detalhes, incluindo nesta descrição aspectos de implementação e estruturação. Especificamos como se dá o cadastro de linguagens de programação, como é feita a interpretação e compilação das linguagens além de uma análise detalhada de cada aspecto do ambiente desenvolvido. Descrevemos ainda diagramas que descrevem o funcionamento e enquadramento do ambiente, além da forma de utilização desta ferramenta. O Capítulo 5 apresenta os testes e experimentos realizados com esta ferramenta. Neste mostramos como se deu o cadastro de três linguagens distintas, NXC - para programação de robôs Lego NXT, Lejos - outra linguagem para programação de robôs Lego NXT e CCS - para programação de robôs H-Educ. Apresentaremos ainda os resultados dos testes de cadastro realizados com grupos de pessoas e a validação do funcionamento do ambiente de programação.

21 8 CAPÍTULO 1. INTRODUÇÃO

22 Capítulo 2 Fundamentação Teórica Neste trabalho desenvolvemos um ambiente de desenvolvimento web para aplicações em robótica educacional, incluindo um compilador configurável e um sistema de banco de dados para que a robótica educacional possa obter um avanço no uso de hardware em sala de aula. Para entender melhor o contexto desta dissertação, apresentaremos neste capítulo conceitos e técnicas já consolidadas, visando uma melhor compreensão do desenvolvimento da proposta deste trabalho que será realizada nos capítulos subsequentes. Apresentaremos as definições, aspectos metodológicos e práticos da robótica educacional, bem como embasamentos dos aspectos técnicos relativos a linguagens de programação, seus tipos e como se dá a estruturação de compiladores. 2.1 Robótica Educacional As transformações dos sistemas educacionais são, em sua maioria, mais lentas do que as transformações tecnológicas. Por esse motivo, as escolas ainda estão formando alunos sem fluência digital, ou seja, alunos que, embora tenham conhecimento sobre as tecnologias emergentes, não sabem utilizá-las [Neves-Júnior 2011]. Há uma busca atual constante de se inserir novas tecnologias no âmbito acadêmico, tanto para satisfazer as necessidades e anseios dos alunos quanto para estabelecer uma melhor qualidade de ensino e promover ambientes de aprendizagem mais ricos e motivadores [Miranda 2006]. Dentre as tecnologias de ensino que estão sendo inseridas no dia a dia de sala de aula encontramos a robótica educacional. De acordo com o Dicionário Interativo da Educação Brasileira [DIEB 2012], o termo robótica educacional - ou robótica pedagógica - pode ser definido como: "Termo utilizado para caracterizar ambientes de aprendizagem que reú-

23 10 CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA nem materiais de sucata ou kits de montagem compostos por peças diversas, motores e sensores controláveis por computador e softwares que permitam programar de alguma forma o funcionamento dos modelos montados. Em ambientes de robótica educacional, os sujeitos constroem sistemas compostos por modelos e programas que os controlam para que eles funcionem de uma determinada forma." Oficinas de robótica educacional possuem vários objetivos e metodologias, porém, no geral, caracterizam-se como um ambiente no qual os alunos seguem um conjunto de instruções e manuais ou criam e experimentam a montagem e programação do seu próprio protótipo robótico [Fortes 2007, da Silva 2008, DIEB 2012]. Nestas oficinas são propostos desafios que são trabalhados de forma lúdica e atrativa aos alunos, podendo relacionar diversas temáticas, como por exemplo: artes, cibernética, física, matemática, ética e responsabilidade social. As oficinas de robótica possibilitam que os desafios propostos pelo professor mediador sejam discutidos em grupo, gerando assim uma forte contribuição ao aprendizado colaborativo e estímulo a criação de um método científico para obtenção de soluções. Através da presença palpável de recursos tecnológicos de hardware e de software os alunos são confrontados com o erro construtivo. Zilli (2004) relata algumas das competências que são desenvolvidas no aluno através de sua participação em oficinas de robótica educacional, dentre elas estão: o raciocínio lógico, pensamento investigativo, a compreensão, o trabalho com pesquisa e a utilização da criatividade em diferentes situações. Uma oficina de robótica educacional pode ser separada em quatro momentos distintos [Miranda 2006]. Em primeiro lugar há a exposição de uma situação problema instigante que deve ser resolvida pelos alunos. Esta situação pode ou não envolver temas interdisciplinares no nível cognitivo dos envolvidos. Em segundo lugar há um momento de exploração das potenciais soluções, neste, o professor mediador incentiva uma discussão entre os alunos em busca de um denominador comum para a solução do problema, utilizando explicações dadas em sala de aula e os conhecimentos prévios sobre robótica e programação. Em uma etapa seguinte, há o desenvolvimento das soluções encontradas, nesta, os alunos devem montar e programar um robô que seja apto a resolver a situação problema. Para finalizar é feita uma análise dos resultados a partir da realização de testes para verificar se o robô consegue de fato resolver o problema. Caso a montagem ou a programação necessite de alguns ajustes, o grupo deve voltar ao passo anterior e caso a solução decidida

24 2.2. HARDWARES PARA ROBÓTICA EDUCACIONAL 11 não seja satisfatória o grupo deve voltar a segunda fase da aula. O precursor no desenvolvimento de metodologias para uso da robótica com fins educacionais foi Seymour Papert, pesquisador do Instituto de Tecnologia de Massachussets (MIT) [Papert 1985]. Papert desenvolveu e validou uma linguagem de programação chamada LOGO, que inicialmente foi utilizada para programar uma tartaruga em um ambiente virtual. Em seguida, após verificar que o projeto tinha fins proveitosos e para validar o seu embasamento pedagógico que mostrava que uma vivência mais concreta apresentava melhores benefícios educacionais, Seymour Papert desenvolveu uma tartaruga real. A iniciativa relatada foi a primeira encontrada na literatura que utiliza a robótica como ferramenta e auxílio na educação e foi a responsável por inspirar os trabalhos que surgiram posteriormente [Gonçalves 2007]. 2.2 Hardwares para Robótica Educacional Como foi apresentado no Capítulo 1, em uma oficina de robótica educacional é comumente necessária a utilização de um hardware. Este pode possuir um controlador lógico programável e pode ou não estar associado a um kit de robótica. Um kit de robótica é composto por um conjunto de peças que auxiliam na construção da parte física de um robô. Os hardwares que possuem um controlador lógico programável são aqueles em que os usuários podem implementar algoritmos para modificar o comportamento do robô ao longo do tempo. Já os hardwares que não possuem este tipo de componente executam sempre o mesmo conjunto de instruções. Existem diferentes tipos de hardware, associados ou não a kits de robótica, que podem ser utilizados em uma oficina de robótica educacional. Neste trabalho classificaremos os hardwares em três categorias: kits comerciais, kits com sucata (material alternativo) e kits com peças e materiais eletrônicos Kits comerciais Vários recursos estão disponíveis comercialmente para o desenvolvimento de projetos que fazem uso da robótica educacional. Esta categoria de kits de robótica está relacionada os kits que podem ser adquiridos comercialmente, sendo trazidos prontos de fábrica. Estes apresentam, em sua maioria, uma melhor qualidade de material quando comparados aos kits das outras categorias [Miranda et al. 2010], além de muitos deles já oferecerem manuais de montagem e guias didáticos para professores mediadores e alunos a fim de que obtenham um bom proveito em uma oficina de robótica educacional. No entanto, esses

25 12 CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA benefícios vêm atrelados a um alto custo de produto. Este fator torna esses equipamentos inacessíveis a determinados públicos. O kit de robótica educacional comercial mais conhecido mundialmente é da marca Lego, modelo Mindstorms NXT [LEGO 2011]. Este kit é amplamente utilizado nas escolas brasileiras que possuem projetos com robótica, ele possui blocos de fácil montagem e manipulação, motores, sensores e um controlador lógico programável. Outro kit de robótica também bastante conhecido e utilizado é o VEX [Vex 2011] que também inclui peças de montagem, sensores, motores e um controlador lógico programável Kits com sucata Os kits de robótica com sucata, livre ou de materiais alternativos são kits onde os materiais que são utilizados para realizar a montagem da carcaça do robô são, em sua maioria, provenientes de sucata tecnológica. Uma das maiores fundamentações para utilização e criação deste tipo de kit é diminuição do lixo tecnológico e redução dos custos [da Silva & da Silva Almeida 2012]. Muitos dos materiais utilizados nestes kits provém de leitores de CD, discos rígidos danificados ou ultrapassados, drives de disquete, impressoras, mouses, aparelhos de som e outros [Sá 2011]. É interessante observar que impressoras ultrapassadas, por exemplo, possuem diversas peças fundamentais para a montagem de um robô, como motores comuns e de passo, fios, conectores, engrenagens e componentes eletrônicos que podem ser desconectados da placa e reutilizados. Os kits de sucata encontrados na literatura são, em sua maioria, provenientes de pesquisas realizadas em universidades e, em menor ocorrência, de algumas poucas iniciativas, isoladas, em escolas da rede pública de ensino. Em geral, os pesquisadores tem tentado desenvolver kits de robótica com a mesma qualidade dos adquiridos comercialmente a um custo menor. Convém ressaltar que o uso desta vertente em sala de aula oferece uma maior liberdade aos alunos para usarem sua criatividade na construção de robôs, tornando-se dispensável o uso de manuais de montagem Kits com peças e materiais eletrônicos Os kits desta categoria são constituídos por componentes eletrônicos e peças comercialmente disponíveis. Para montar um robô a partir de um kit desta categoria o aluno faz uso de adaptações das peças mecânicas e eletrônicas encontradas comercialmente. Geralmente, este tipo de abordagem não conta com manuais de montagem e requer um maior

26 2.3. LINGUAGENS DE PROGRAMAÇÃO 13 grau de maturidade do aluno, visto que é necessário projetar e integrar peças mecânicas e eletrônicas de forma adequada. Podemos citar como exemplo deste tipo de robô o kit N-Bot, desenvolvido por Aroca, Barros, Burlamaqui & Gonçalves (2012), no qual são utilizados componentes eletrônicos para fazer o controle de baixo nível do robô (ler sensores e mover atuadores) e peças (novas) que são geralmente utilizadas na fabricação de brinquedos (polias, rodas, engrenagens, eixos) e de móveis (rodas bobas, parafusos, suportes de metal), que podem ser facilmente adquiridas em lojas comerciais. A equipe do laboratório Natalnet vem trabalhando no desenvolvimento do EcoBot, uma nova versão do N-Bot que faz uso materiais eletrônicos e reciclados. 2.3 Linguagens de Programação A linguagem é o instrumento utilizado para satisfazer a necessidade do homem de se comunicar, compartilhar ideias e sentimentos, seja através da linguagem falada, escrita ou de outros métodos e signos. O dicionário Aurélio [Dicionário Aurélio 2013] define o termo linguagem como: "O uso da palavra articulada ou escrita como meio de expressão e de comunicação entre pessoas ou a forma de expressão pela linguagem própria de um indivíduo, grupo, classe, etc." Dessa forma, a linguagem designa um sistema organizado de símbolos, complexos, extensos e com propriedades particulares. Ela desempenha uma função de codificação, estruturação e consolidação dos dados sensoriais, transmitindo-lhes um determinado sentido ou significado e permitindo que as pessoa possam comunicar suas experiências e transmitir os seus saberes [Viotti 2007]. O homem, em seu cotidiano, faz uso da linguagem verbal e não-verbal para se comunicar. A linguagem verbal integra a fala e a escrita - diálogo, informações no rádio, televisão ou imprensa, etc. Todos os outros recursos de comunicação como imagens, desenhos, símbolos, músicas, gestos, e tom de voz, fazem parte da linguagem não-verbal. Com o advento das máquinas com funcionalidades autônomas e inteligentes, foi necessário criar uma nova especificação de linguagem que tornaria possível a comunicação entre os humanos e as máquinas. Este conceito recebeu o termo linguagem de programação, o qual dicionário Aurélio define como:

27 14 CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA "Conjunto de instruções e regras de composição e encadeamento, por meio do qual se expressam ações executáveis por um computador, seja diretamente, seja por meio de processos de compilação, interpretação ou montagem." Avaliamos que uma linguagem de programação permite ao programador especificar precisamente sobre quais dados um computador vai atuar, como estes dados serão armazenados ou transmitidos e quais ações devem ser tomadas ao se deparar com determinadas circunstâncias. O conjunto de palavras ou tokens, compostos de acordo com um conjunto de regras de formação constituem o código fonte de um algoritmo. Esse código fonte é, então, traduzido para um código de máquina a fim de ser executado pelo processador. Os conceitos relativos a linguagens de programação são estudados pela teoria das linguagens formais e dos autômatos (LFA). Essa teoria tem por objetivo estudar e definir os modelos matemáticos que possibilitam a especificação e o reconhecimento de linguagens, suas classificações, estruturas, propriedades, características e relacionamentos. Podemos dizer que linguagens formais são uma abstração das características gerais de uma linguagem de programação, são baseadas na "Teoria da Computação"e possuem um conjunto de símbolos, regras de formação de sentenças, etc. As representações podem ser feitas por reconhecedores e geradores [Hopcroft et al. 2002]. Os reconhecedores são dispositivos formais que servem para verificar se uma sentença pertence ou não à uma determinada linguagem. Os sistemas geradores são dispositivos formais que permitem a geração sistemática de todas as sentenças de uma linguagem. Os principais sistemas geradores disponíveis são as gramáticas, onde se destacam as gramáticas de Chomsky [Chomsky 1965]. Linguagens formais podem ser representadas de maneira finita e precisa através de sistemas com fundamentação matemática Desenvolvimento de Programas O computador deve conter mecanismos capazes de converter os comandos dados em linguagem de alto nível (linguagens de programação em geral) para a linguagem de máquina (códigos binários). Esta tarefa de conversão é feita através de um programa especial de computador, isto é, um programa que recebe as instruções em linguagem de alto nível e retorna como saída outro programa constituído de instruções binárias. Ao programa original, em linguagem de alto nível, dá-se o nome de Programa Fonte e ao resultado, em linguagem de máquina, de Programa Objeto [Gomes 2012]. Apresentaremos nesta seção as principais etapas de geração de um programa.

28 2.3. LINGUAGENS DE PROGRAMAÇÃO 15 A primeira etapa para geração de um programa é a codificação, está é dada pela escrita, utilizando uma determinada linguagem de programação, das instruções que a máquina deve realizar para alcançar o resultado almejado. Para realização desta tarefa é preciso utilizar ambientes integrados de desenvolvimento ou editores. É possível nesta etapa utilizar qualquer editor para gerar o programa fonte, porém alguns ambientes oferecem ferramentas de edição mais poderosas, com reconhecedores e realçadores das palavras chaves de uma linguagem, geração do código fonte, possibilidade de projeto de interfaces gráficas, etc. A segunda etapa é a tradução do programa fonte em programa objeto. Sabemos que independente da linguagem de programação utilizada e da arquitetura do sistema computacional em uso o programa fonte não é executável diretamente pela unidade de processamento. A linguagem é uma ferramenta que permite apenas que o programa seja legível a olhos humanos. Para que o programa fonte seja executável é necessário que ele seja traduzido para o código de máquina do processador que compõe a arquitetura do sistema. Esta tarefa é realizada de forma automática por montadores e compiladores. O programa objeto gerado por estas ferramentas é apresentado de acordo com o sistema de numeração binária. Compiladores O programa objeto é o código de máquina produzido pelo compilador. Para que seja gerado são necessários três passos: análise léxica, análise sintática e geração de código fonte. A análise léxica é a etapa do processo onde são reconhecidas quais cadeias de símbolos do programa fonte representam entidades indivisíveis. Por exemplo, palavras não são tratadas letra a letra, mas sim como uma unidade composta por várias letras. O analisador léxico também identifica os conjuntos de símbolos que representam valores numéricos, operadores aritméticos, palavras, símbolos reservados e outros, gerando assim um padrão de bits conhecidos como símbolos ou tokens. Cada símbolo ou token representará um dado de entrada do analisador sintático. Após a realização da análise léxica é realizada a análise sintática, esta etapa representa o processo de identificação da estrutura gramatical do programa e do reconhecimento da função de cada um dos seus componentes. A análise sintática é realizada baseada em um conjunto de regras sintáticas que definem a gramática da linguagem de programação. O analisador sintático é um programa que, para uma dada gramática, ele aceita como entrada uma sentença - lista de símbolos ou tokens - e constrói para a ela uma árvore gramatical,

29 16 CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA ou, caso a sentença não pertença a linguagem descrita por essa gramática, uma indicação de erro. A ação final do processo de tradução é a geral do programa objeto, e é dado pela construção das instruções em linguagem de máquina. Esse processo envolve uma série de problemas. Muitas vezes, dependendo do compilador, as análises léxica e sintática e a geração do programa objeto não são efetuadas em ordem sequencial. O analisador léxico começa o processo identificando o primeiro token e fornecendo-o ao analisador sintático. Já com a identificação da estrutura que vem a seguir, o analisador sintático solicita ao analisador léxico o próximo token. A medida que o analisador sintático reconhece sentenças ou comandos completos, ele chama o gerador de código, para que este possa produzir as correspondentes instruções em linguagem de máquina. Intepretadores Uma outra forma de execução de um algoritmo é através da sua interpretação por um programa chamado de interpretador. Esse tipo de execução ocorre em linguagens classificadas como interpretadas. Um interpretador é um programa que será capaz de executar as instruções escritas em uma linguagem de programação de alto nível. Ao contrário do compilador que traduz as instruções em linguagem de máquina, os interpretadores, geralmente, transladam as instruções de alto nível em uma forma intermediária que é executada. O programa responsável por realizar a interpretação recebe a primeira instrução do programa fonte, confere se a escrita está correta, converte uma sentença em linguagem de máquina e então ordena ao processador que execute esta instrução. Este processo é repetido para a segunda instrução, e assim sucessivamente, até a última instrução do programa fonte. Quando a segunda instrução é trabalhada, a primeira é perdida, apenas uma instrução fica na memória a cada passo da execução. Se o programa fonte for executado uma segunda vez, haverá uma nova tradução, comando a comando, visto que os comandos em linguagem de máquina não ficam armazenados para futuras execuções. Programas interpretados em geral são mais lentos que os compilados, porém, embora obtenhamos um programa mais lento, algumas linguagens interpretadas tem outra vantagem: a portabilidade. Como não é gerado um código de máquina, e sim um código intermediário que será interpretado por uma máquina virtual, podemos obter a portabilidade do código se esta máquina virtual for desenvolvida para várias plataformas computacionais.

30 Capítulo 3 Estado da Arte Ambientes de desenvolvimento são softwares computacionais que reúnem características e ferramentas de apoio ao desenvolvimento de software com o objetivo de agilizar este processo. Muitos destes ambientes incluem editores de programa fonte, compilador, depurador - auxílio disponível para que seja possível encontrar e corrigir erros no programa fonte, modelagem, etc. Neste capítulo faremos uma revisão do estado da arte relacionado com este trabalho, apresentaremos alguns ambientes de desenvolvimento voltados para robótica educacional baseado em desktop e web. Em seguida realizaremos uma comparação entre os ambientes disponíveis e o ambiente proposto neste trabalho, enfatizando neste comparativo as linguagens de programação integradas a cada um, as possibilidades de uso de hardware sem necessidade de softwares auxiliares e as ferramentas disponíveis. 3.1 Ambientes de Desenvolvimento para Robótica Desktop Nesta seção apresentaremos alguns ambientes de desenvolvimento baseado em desktop voltados para aplicações em robótica educacional disponíveis no mercado e encontrados na literatura. Faremos uma análise de cada um descrevendo as vantagens e desvantagens, possibilidades de hardware, linguagens de programação utilizadas o público alvo que se destinam RobotC Foi desenvolvido pela Academia de Robótica da Carnegie Mellon University, em Pittsburgh nos EUA. RobotC [RobotC 2013] é um ambiente de desenvolvimento atrelado a uma linguagem de programação textual de mesmo nome que pode ser utilizado

31 18 CAPÍTULO 3. ESTADO DA ARTE para escrever e depurar programas. É uma solução para programação de diversos hardwares utilizando uma única linguagem baseada em C. Dentre os controladores programáveis que este ambiente oferece suporte estão o Lego Mindstorms NXT e RCX [LEGO 2011], controladores do kit Vex [Vex 2011] e Arduino [Arduino 2013] RoboEduc O software educacional RoboEduc [Sá et al. 2009] teve sua versão inicial desenvolvida em 2003 por pesquisadores da Universidade Federal do Rio Grande do Norte. É um software voltado para aplicações em oficinas de robótica educacional, que permite o controle e a programação de vários tipos de robôs. O RoboEduc pode ser utilizado, em versões independentes, com os kits Lego RCX, Lego NXT e H-Educ [Sá 2011]. A programação do robô pode ser realizada utilizando um dos cinco níveis de programação (abstração) existentes, podendo ser realizada via programação gráfica ou textual. A linguagem de programação utilizada, denominada R-Educ, é uma linguagem escrita em um português, simples, que pode ser adotada por alunos a partir dos 8 anos [Pitta 2011, Aglaé et al. 2009]. A linguagem R-Educ possui comandos que permitem a movimentação de motores e a aquisição de dados dos sensores do robô, possui controladores de fluxo e outros comandos, responsáveis por imprimir textos ou acender luzes no robô. Os comandos escritos em linguagem R-Educ são compilados no ambiente e enviados ao robô. (a) Tarefa (b) Níveis de programação (c) Programação textual Figura 3.1: Software educacional RoboEduc A Figura 3.1 apresenta o software educacional RoboEduc. A Figura 3.1(a) apresenta

32 3.1. AMBIENTES DE DESENVOLVIMENTO PARA ROBÓTICA DESKTOP 19 a tela de tarefa deste software, nesta são apresentados o nome do robô, a descrição dele e qual tarefa o aluno deve realizar. São apresentados ainda três opções que devem ser escolhidas pelo usuário: controlar o robô, ensinar ao robô ou programar o robô. A Figura 3.1(b) apresenta a tela de níveis, esta tela é apresentada ao usuário quando o mesmo escolhe a opção da programar o robô na tela de tarefa. Como já foi mencionado anteriormente a linguagem R-Educ possui cinco níveis de abstração que são escolhidas de acordo com o grau de maturidade do aluno. Já a Figura 3.1(c) apresenta o ambiente de programação textual correspondente ao nível três de programação. Neste ambiente, os arquivos gerados possuem a extensão ".rob" Software Lego Mindstorms NXT O software Lego Mindstorms NXT acompanha os kits da linha Lego Mindstorms NXT e foi desenvolvido especificamente para programação e controle de dispositivos desta marca e modelo. Foi desenvolvido pela National Instruments [Instruments 2013b], baseado no LabVIEW [Instruments 2013a]. Este ambiente de desenvolvimento é composto por uma interface com o usuário e um bloco de diagramas onde o fluxo de dados é estruturado através de ligaçoes entre os blocos e é possível a criação não só de estruturas, mas de comportamentos, permitindo, assim, a criação de modelos interativos, com os quais é possível aprender conceitos fundamentais de ciência e engenharia. Neste é possível utilizar todas as funcionalidades disponíveis ao controlador NXT [LEGO 2011], além de permitir o envio do programa e fornecer auxílio para montagem de alguns modelos de protótipos robóticos. A Figura 3.2 apresenta a tela principal do software Lego Mindstorms NXT, na lateral esquerda há um menu onde são selecionados os comandos e funções que o usuário deseja inserir ao seu programa, na lateral direita é apresentado um manual de montagem de robô que pode ser utilizado pelo usuário. Já o centro da imagem é o lugar onde os blocos de programação são estruturados Microsoft Robotics Studio Teve sua primeira versão lançada em 2006 pela Microsoft e foi criado a fim de ser destinado a criação de aplicações na área de robótica. Este ambiente é baseado no sistema operacional Windows e permite criar programas de robótica para uma grande variedade de plataformas de hardware. Além disso possui uma linguagem de programação gráfica que

33 20 CAPÍTULO 3. ESTADO DA ARTE Figura 3.2: Software Lego Mindstorms NXT oferece aos usuários a possibilidade de programar robôs e ter seus algoritmos executados tanto em um simulador quanto no hardware em si. O Microsoft Robotics Studio possibilita o desenvolvimento de aplicações utilizando um conjunto de linguagens de programação, dentre elas: Visual C#, Visual Basic, Microsoft IronPython e as integradas ao Microsoft Visual Studio. O ambiente é compatível com as aplicações, serviços e robôs de diversas empresas, como: Lego [LEGO 2011], Parallax [Parallax Robotics 2013], RoboDynamics [RoboDynamics 2013], irobot [IRobot 2013], etc Legal O ambiente de programação Legal [PETe 2008], acompanha o kit de robótica educacional da empresa PNCA. Este ambiente permite ao usuário projetar, construir e programar robôs e dispositivos mecatrônicos. Todas as ações que o robô deve executar deverão ser definidas no ambiente de programação Legal, utilizando a linguagem de mesmo nome. O programa, uma vez escrito e compilado, será descarregado no módulo de controle do robô via cabo de dados serial. Ao fim desta etapa, o robô estará pronto para funcionar de forma autônoma e poderá ser desconectado do computador principal. A Figura 3.3 apresenta o ambiente de programação textual Legal, onde podemos ob-

34 3.2. AMBIENTE DE DESENVOLVIMENTO PARA ROBÓTICA WEB 21 Figura 3.3: Ambiente de programação Legal servar que a linguagem de programação utilizada é baseada em um português simples. O ambiente oferece ainda suporte para abrir, salvar, e enviar o programa ao robô. 3.2 Ambiente de Desenvolvimento para Robótica Web Na seção anterior avaliamos os principais ambientes de desenvolvimento para aplicações em robótica de uso desktop encontrados na literatura. Estes ambientes necessitam da instalação de softwares de uso específico, configuração de drivers no computador, requisitos de hardware específicos do computador e, em sua maoria, não são portáveis a diversos sistemas operacionais. Uma solução encontrada para alguns dos impasses listados é a criação de ambientes de desenvolvimento para robótica via web. Nesta seção apresentaremos dois desses ambientes que possibilitam que qualquer computador ou dispositivo com acesso a web via navegador possa ser utilizado para programar robôs sem a necessidade de que a instalação

35 22 CAPÍTULO 3. ESTADO DA ARTE de softwares específicos seja realizada. O primeiro ambiente, trata-se de um ambiente de programação remota de robôs. O robô físico neste caso, não está com o usuário, mas sim localizado próximo a um servidor. Existem outros trabalhos encontrados na literatura que se assemelham a este primeiro [Belousov et al. 2001, Mootien et al. 2006, Lopez et al. 2009], porém como foge um pouco do escopo deste trabalho, visto que permitem apenas a programação remota de robôs, escolhemos introduzir apenas o que se relacionam diretamente com a robótica educacional Mindstorms Internet Control Environment Este ambiente de desenvolvimento web proposto por Garrett & Thornton (2005), visa solucionar o problema de que nem todo aluno possui a capacidade de ter adquirir um robô Lego Mindstorms NXT [LEGO 2011], com custo aproximado de U$ 200,00. Este ambiente permite que o usuário programe remotamente robôs Lego e observe os resultados através de uma webcam. A arquitetura proposta viabiliza a transmissão de um código desenvolvido em NQC [Baum & Hansen 2003] - Not Quite C - no ambiente ao robô, transmissão das imagens do robô real e chat entre usuários ativos. É necessária apenas o uso de um navegador com java instalado e ativo e acesso a porta O servidor é o responsável por intermediar a compilação do código NQC, transmitir e executar o código no robô. O ambiente apresentado na Figura 3.4 possui três telas principais, sendo a tela representada na Figura 3.4(a) para análise do problema e descrição do robô a ser programado, a Figura 3.4(b) apresenta a tela de programação e compilação e a tela apresentada na Figura 3.4(c) destinada para visualização da execução do programa desenvolvido no robô remoto ADWN Ambiente de desenvolvimento web implementado por [Aroca, Barros, Burlamaqui & Gonçalves 2012] para programação de robôs N-Bot. É uma solução em código aberto desenvolvida para dispositivos móveis e computadores tradicionais que dispensa a instalação e configuração de qualquer programa, podendo ser acessada por qualquer dispositivo que possua acesso a um navegador conectado a Internet. Surgiu com a proposta de ser uma plataforma simples e intuitiva para iniciantes e ser um ferramenta poderosa e flexível para usuários experientes.

36 3.2. AMBIENTE DE DESENVOLVIMENTO PARA ROBÓTICA WEB 23 (a) Análise (b) Programação (c) Execução Figura 3.4: Mindstorms Internet Control Environment - MICE Para realizar a programação de robôs N-Bot, o usuário precisa acessar uma página web que oferecerá opção de programação em blocos, textual ou híbrida. Um grande diferencial deste ambiente é que toda a implementação utilizou JavaScript, logo não dependerá de servidor, sendo toda a execução efetuada no navegador local. Além disso é possivel salvar a página web para programação, não sendo mais necessária que o dispositivo esteja conectado com a Internet para seu funcionamento. Após a criação do programa ele é executado pelo próprio navegador, sendo então gerados tons de audio que serão decodificados pelos circuitos do robô. O ambiente de desenvolvimento ADWN possui código aberto e pode ser encontrado on-line no endereço aroca/n-bot/html/beta/natalnet/. A Figura 3.5 apresenta o ambiente de desenvolvimento ADWN, podemos observar que na lateral direita é destinada para programação gráfica a partir do encaixe de blocos textuais, já na lateral esquerda a programação textual pode ser efetuada diretamente e também pode ser visualizado o código gerado a partir dos blocos gráficos. No mesmo ambiente é possível colocar o programa gerado em funcionamento.

37 24 CAPÍTULO 3. ESTADO DA ARTE Figura 3.5: ADWN rodando em um navegador web 3.3 Análise Comparativa Nas seções anteriores apresentamos alguns ambientes para programação utilizados em robótica, tanto livres quanto comerciais. Vimos em nossa pesquisa que existem diversos outros ambientes de uso local, porém nos atemos para os mais utilizados no Brasil, sabemos que existem diversas outras linguagens de programação e que, possuindo o compilador específico para ela, qualquer editor de texto pode ser utilizado como um ambiente de desenvolvimento. Após listar os ambientes tanto web quanto desktop com suas características e funcionalidades, constatamos que apesar de alguns possuírem boas funcionalidades não encontradas no nosso trabalho, nenhum deles se assemelha a proposta deste trabalho que é o desenvolvimento de um ambiente web que se configure para realizar a programação, compilação e envio para qualquer dispositivo robótico. Na Tabela 3.1 apresentamos uma análise comparativa entre os ambientes de desenvolvimento apresentados na Seção 3.1 e na Tabela 3.2 é realizada uma análise comparativa entre os dois ambientes de desenvolvimento web apresentados na Seção 3.2. Nas tabelas, nos referenciaremos ao software Lego Mindstorms por Lego, e ao Microsoft Robotics Studio por MRS. Cada ponto analisado na tabela foi escolhido baseando-se nos conceitos de programação, robótica e requisitos necessários. Quanto as linguagens, o ambiente desenvolvido permite que a programação seja re-

38 3.3. ANÁLISE COMPARATIVA 25 RobotC RobobEduc Lego MRS Legal Linguagens RobotC R-Educ, NXC, CSS LabView Visual C#, Basic e Studio Legal Hardwares Vex, Arduino, NXT, RCX NXT, RCX, H-Educ NXT Fabricantes parceiros PNCA Entrada de dados textual grafica e textual grafica textual textual Faixa etaria Envio integrado Sim Sim Sim Sim Sim Instalação necessária Sim Sim Sim Sim Sim Tabela 3.1: Análise comparativa entre os ambientes de desenvolvimento desktop Mice ADWN Ambiente Desenvolvido Linguagens NqC JavaScript, Blockly R-Educ e linguagens cadastradas Hardware Lego NXT N-Bot Qualquer hardware Entrada de dados textual grafica e textual textual Faixa etaria Envio Integrado Sim Sim Sim Programação remota Sim Não Não Necessária instalação do ambiente Não Não Não Compatiblidade na máquina local Não Não Sim Compatiblidade no servidor Sim Não Não Tabela 3.2: Análise comparativa entre os ambientes de desenvolvimento web alizada em R-Educ e em qualquer linguagem cadastrada que não possua identação específica. Os demais ambientes não possuem cadastro de linguagem, se limitando a um número fixo de linguagens. Além do mais, o cadastro de linguagens permite que o ambiente desenvolvido gere códigos para qualquer hardware associado a essas linguagens, funcionalidade que também não foi encontrada nos trabalhos em análise. Outro ponto a se destacar é que, como vimos no MICE, o nosso ambiente não permite, em sua versão atual, a programação remota de robôs. E, ao compararmos com o ADWN, vemos que o nosso ambiente necessita que o usuário o utilize em uma plataforma computacional que seja capaz de estabelecer comunicação com o hardware utilizado para que seu envio seja realizado, sendo muitas vezes necessários drivers para compatibilidade, o que não é necessário naquele.

39 26 CAPÍTULO 3. ESTADO DA ARTE

40 Capítulo 4 Ambiente Proposto Neste trabalho desenvolvemos um ambiente de desenvolvimento configurável para aplicações em robótica educacional. Este foi desenvolvido para possibilitar que um professor mediador de uma oficina de robótica possa fazer uso de vários tipos de hardwares abstraindo para os seus alunos o uso de linguagens de programação diferentes, em um ambiente web, que permite o envio de dados ao robô via o computador local sem necessidade de instalação de software. Este ambiente foi desenvolvido para ser integrado a uma nova versão do software educacional RoboEduc, software com uma linguagem de programação em níveis própria denominada R-Educ, testada e validada por Pitta (2011), utilizado em conjunto com a metodologia para robótica educacional desenvolvida por da Silva (2008). Neste capítulo, apresentamos o ambiente de desenvolvimento autoconfigurável para aplicações em robótica educacional desenvolvido neste trabalho. Entraremos em detalhes quanto as ferramentas utilizadas, as modificações e reestruturações necessárias ao tradutor e compilador utilizado no software RoboEduc e sua linguagem, quanto ao projeto do ambiente, as implementações necessárias, suas funções, utilidades, principais características e métodos de uso. 4.1 Projeto do Ambiente O primeiro passo para o desenvolvimento deste trabalho foi o projeto do ambiente. Para tal, realizamos uma análise das funcionalidades que o ambiente deveria ter para alcançar as metas pretendidas. Dentre as funcionalidades estabelecidas estão o cadastro de linguagens de programação, a universalização da linguagem R-Educ, programação em qualquer uma das linguagens cadastradas, compilação via servidor e o envio do programa ao robô via dispositivo local. Definimos o que deveria ser realizado para que estas funcionalidades fossem possíveis. A lista a seguir apresenta a sequência de ações a serem

41 28 CAPÍTULO 4. AMBIENTE PROPOSTO realizadas: Reestruturação didática da linguagem R-Educ; Reestruturação funcional da linguagem R-Educ; Reestruturação do tradutor da linguagem R-Educ; Criação de um banco de dados para cadastro de linguagens de programação; Criação de um ambiente web para cadastro de linguagens de programação; Criação de um ambiente web para programação; Definição de um mecanismo de comunicação computador - robô. Para descrever as funcionalidades propostas para o ambiente fizemos uma notação gráfica que auxília na descrição e no projeto de sistemas, um diagrama de casos de uso. No paradigma orientado a objetos, este diagrama é um modelo utilizado para especificação de requisitos, descrevendo um cenário que apresenta as funcionalidades do sistema proposto do ponto de vista do seu usuário. O diagrama de caso de uso apresentado na Figura 4.1 mostra a sequência de eventos de um usuário que utiliza o ambiente para completar um processo completo desde a criação de linguagens, à programação e envio ao robô. Como vemos, inicialmente, o ambiente possui apenas um autor, chamado de usuário. Pretendemos, ao realizar toda a migração do software RoboEduc para uma plataforma web integrada ao nosso ambiente, realizar uma substituição de usuários, trataremos futuramente com os usuários aluno e professor mediador. Ao ator usuário será permitido os seguintes casos de uso: Cadastrar uma nova linguagem de programação; Selecionar uma linguagem dentre uma lista de linguagens já cadastradas; Editar uma linguagem já selecionada; Programar em R-Educ; Programar em qualquer uma das linguagens cadastradas; Compilar programas; Enviar programa compilado ao robô Ferramentas Utilizadas Ainda no projeto do ambiente avaliamos quais implementações seriam necessárias. Vimos que era necessária a implementação de um tradutor da linguagem R-Educ para a linguagem cadastrada, um banco de dados para armazenamento das linguagens cadastradas, ambientes web para listar, editar e criar linguagens, além de um ambiente web de

42 4.1. PROJETO DO AMBIENTE 29 Figura 4.1: Diagrama de casos de uso programação passível de detectar e informar erros de compilação, salvar, fazer download, compilar e enviar programas. Para que as implementações fossem possíveis de serem executadas foi necessário o estudo aprofundado de algumas tecnologias existentes no mercado atualmente, a fim de que pudessemos utilizar suas melhores funcionalidades de maneira mais eficiente. Nas subseções seguintes listamos as principais tecnologias utilizadas e suas principais características. Java A linguagem Java é uma linguagem de programação orientada a objetos muito difundida. Nesta linguagem é gerado um código intermediário, chamado de bytecode, que é interpretado e executado pela máquina virtual Java instalada no computador. Toda a análise léxica e sintática da linguagem R-Educ, além das chamadas de sistema foram realizadas neste projeto fazendo uso desta linguagem.

43 30 CAPÍTULO 4. AMBIENTE PROPOSTO Java Enterprise Edition - Java EE O Java Enterprise Edition (Java EE) é um middleware baseado na linguagem de programação Java e voltado para o desenvolvimento de aplicações distribuídas. Esta ferramenta apresenta facilidades para a utilização dos recursos computacionais e distribuídos tais como acesso à banco de dados, componentes Web, utilização de mensagens assíncronas, execução de processos transacionais, etc. Neste trabalho utilizamos esta tecnologia para o desenvolvimento do ambiente web. A arquitetura do Java EE é apresentada em várias camadas, compostas por containers e componentes. Containers são elementos que englobam os componentes, e fornecem recursos e facilidades para os mesmos. Já os componentes oferecem diversos serviços ao usuário através do suporte do container. A seguir destacamos alguns dos tipos de containers e APIs existentes no Java EE e onde cada um foi utilizado no desenvolvimento do projeto. Servlets: foram utilizados em nosso projeto para abstrair os recursos do servidor web de forma simplificada; JSP (Java Server Pages): páginas web que solicitam ou disponibilizam informações para os servlets, são as páginas web em si, visíveis ao usuário e formadas com a utilização de componentes HTML; EJBs (Enterprise Java Beans): permitiu que focassemos nas necessidades dos clientes, ao invés de nos preocuparmos com as questões de infraestrutura; JDBC (Java Database Connectivity): utilizado para prover acesso ao bancos de dados; JPA (Java Persistence API): API responsável pela padronização do acesso ao banco de dados através de mapeamento Objeto/Relacionamento dos Enterprise Java Beans. JavaScript O JavaScript é uma linguagem de programação interpretada utilizada nas páginas JSP desse ambiente. Esta linguagem é implementada juntamente com os navegadores web para permitir que scripts sejam executados no navegador do cliente gerando interação com o mesmo. Torna possível controlar o navegador, realizando uma comunicação assíncrona e sendo passível de alterar o conteúdo do documento exibido fazendo uso de ferramentas auxiliares (Ajax e Jquery).

44 4.2. LINGUAGEM R-EDUC 31 Applet Java Uma applet Java é um componente de software que executa uma determinada função limitada em outro ambiente de programa, como um navegador web. Os applets Java possibilitam que recursos interativos sejam fornecidos através de um navegador por meio da máquina virtual java instalada no computador do cliente. Neste projeto as applets Java foram utilizadas para que fosse possível fazer chamadas de sistema no computador local através do navegador. 4.2 Linguagem R-Educ No Capítulo 2 apresentamos alguns conceitos preliminares acerca do que é linguagem e o que é uma linguagem de programação. Através da pesquisa realizada, analisamos que para se trabalhar com robôs, máquinas de funcionamento específico, se fez necessária a criação de mais uma especificação de linguagem de programação. Essa nova especificação tem um fim específico que é a programação e/ou controle de robôs móveis, para tal tornou-se necessário um conjunto de comandos específicos que permitam ao usuário fazer com que o robô se movimente da maneira desejada, libere a corrente para algum pino, emita algum sinal luminoso, etc. Equipamentos eletrônicos, no geral, possuem grandes diferenças entre suas configurações e podem ser aplicados a tarefas extremamente distintas, o que leva cada fabricante de dispositivos eletrônicos robóticos o desenvolvimendo de sua própria linguagem, ou uso de uma determinada linguagem comum associada a bibliotecas específicas. Motivados pela diversidade de hardwares e de linguagens de programação foi desenvolvido neste trabalho um ambiente que se configure a qualquer hardware com suas linguagens distintas. Desenvolvemos neste trabalho um ambiente que contenha uma linguagem universal para qualquer tipo de hardware destinado a robótica. A linguagem escolhida para tal é a linguagem de programação em níveis R-Educ [Pitta 2011], especifícamente seus níveis três e cinco. A linguagem R-Educ foi especificada inicialmente em C++, fazendo leitura de dados via arquivo de conteúdo XML e destinada a programação de robôs do tipo Lego RCX, Lego NXT ou plataforma H-Educ [Sá 2011] em versões distintas. É uma linguagem baseada em níveis, que na sua utilização atual, associada ao software de desenvolvimento desktop RoboEduc, possui 5 níveis de abstração diferentes para que os níveis cognitivos de cada usuário sejam respeitados. Neste software, a sintaxe é determinada tanto de forma gráfica quanto textual.

45 32 CAPÍTULO 4. AMBIENTE PROPOSTO Como as funcionalidades de criação de páginas, servidores web, comunicação com banco de dados são resolvidas com maior facilidade e portabilidade utilizando a linguagem Java e tecnologias associadas, foi necessário fazer uma re-implementação do tradutor da linguagem. Aproveitamos a necessidade da re-estruturação necessária e implementamos algumas melhorias na linguagem, dando um maior poder computacional a ela, corrigindo alguns erros encontrados e introduzindo alguns conceitos utilizados nas linguagens de programação mais utilizadas Gramática da Linguagem Segundo a teoria de linguagens formais e dos autômatos, para a concepção de uma nova linguagem, é necessário o desenvolvimento de uma gramática própria da linguagem. A gramática criada para a reestruturação da linguagem R-Educ é descrita pelas produções apresentadas a seguir. <tarefa> := tarefa <nome da tarefa> { <instrucao>* } <nome da tarefa> := <letra> ( <letra> <numero>) * <controle de fluxo> := <condicional> <repeticao> <condicional> := se ( <condicao> ) entao { <instrucao>* } [senao {<instrucao>*}] <variavel> := <letra> (<letra> <numero>)* <funcao> := <nome da funcao>(parametros)* <repeticao> := <repita> <numero> vezes vez <para> := para <variavel> de <numero> ate <numero> passo <numero> { <instrucao>* } <enquanto> :=enquanto <condicao> farei <instrucao>* <farei> := farei <instrucao>* enquanto <condicao> <operadores> := = > >= < <=!= e ou! <letra> := [A-Za-z] <instrucao> := <controle de fluxo> <acao> <condicao> := <variavel> <operador> <variavel> <nome de acao> s:= letra ( letra numero )* <numero> := * Na Tabela 4.1 são apresentadas as palavras reservadas da linguagem R-Educ. A linguagem possui poucas palavras reservadas, o que mostra seu alto nível de abstração. Apesar de ser baseada em um português simples, esta linguagem permite o ensino de estruturas algorítmicas, tais como início de programa, fim de programa, controles de fluxo, comandos condicionais, chamadas de funções específicas ou não.

46 4.3. CADASTRO DE LINGUAGEM 33 inicio tarefa senao enquanto repita teste texto fim se entao farei para numero booleano Tabela 4.1: Palavras Reservadas da Linguagem R-Educ Uma grande diferença da linguagem já estabelecida, desenvolvida anteriormente, é que foi inserido o uso de chaves para controle de um início de sequência de comandos, substituindo comandos escritos, como: fimenquanto, fimse, fimsenao, fimpara. A utilização das chaves, foi baseada no fato de que vimos em pesquisas de uso da linguagem que os alunos possuíam certo grau de dificuldade de assimilar este símbolo tão comum em linguagens de programação ao migrarem da linguagem R-Educ para uma linguagem com um nível de abstração mais baixo. 4.3 Cadastro de Linguagem Para sabermos o que seria necessário solicitar ao usuário para que fosse feito um cadastro completo da linguagem, fizemos uma análise com os principais componentes de uma linguagem de programação de robôs. Para tal, realizamos uma seleção entre as principais linguagens utilizadas e as principais linguagens utilizadas em robótica Análise Preliminar No estudo preliminar, verificamos quais os cabeçalhos e rodapés necessários para cada uma dessas linguagens, quais possuem e permitem cabeçalhos e quais não. Em seguida avaliamos quais os tipos de dados presentes em cada linguagem, quais os mais utilizados e como as variáveis são declaradas e modificadas. Avaliamos também como é realizada a escrita dos controles de fluxo e quais os presentes na maior parte das linguagens. Verificamos também como são feitas as declarações de funções sem retorno e suas chamadas. Quais os operadores lógicos dessas linguagens e em que se diferenciam. Outro ponto importante de estudo foi o de como é feita a chamada de funções e como é declarada a função principal do programa. A partir dessa análise fizemos um formulário de cadastro de linguagens que nos permitisse traduzir a linguagem R-Educ para a linguagem cadastrada. Nesta etapa do de-

47 34 CAPÍTULO 4. AMBIENTE PROPOSTO senvolvimento verificamos que o usuário responsável pelo cadastro da linguagem ou responsável pela produção de um documento de cadastro deve ser um programador com conhecimentos específicos desta linguagem ou ter conhecimentos em programação suficientes para estudar a API - Interface de Programação de Aplicativos - da linguagem e extrair informações dela Formulário de Cadastro Para realizar o cadastro das linguagens de programação nativas dos diferentes tipos de robôs, foi desenvolvido um ambiente web utilizando APIs específicas do Java EE. O ambiente desenvolvido é executado online, o que permite uma maior disseminação da ferramenta. Procuramos deixar o ambiente o mais explicativo possível para que não ocorra erros no cadastro. No início do formulário de cadastro disponibilizamos um texto explicativo fornecendo ao usuário todas as informações necessárias para que o cadastro seja realizado com sucesso. Apresentamos também exemplos do código em R-Educ e em mais duas linguagens de todas as informações solicitadas. Os dados que devem ser inseridos e algumas das partes do formulário estão listados nas subseções a seguir, ressaltamos que quanto mais experiente em programação e na linguagem a ser cadastrada o usuário for, maior será as vantagens que este poderá tirar do ambiente, criando abstrações eficazes e simplificações para os seus alunos, caso seja um professor mediador. Nome e Descrição Ao abrir o ambiente, encontramos a tela apresentada na Figura 4.2 na qual são listadas as linguagens que já se encontram cadastradas. Nesse momento é dada a possibilidade de cadastrar uma nova linguagem, para tal uma nova janela fica visível ao usuário solicitando que sejam preenchidos os dados de nome da linguagem, robô a qual esta linguagem está associada e uma breve descrição para que o usuário que for utilizar as linguagens cadastradas saiba qual a linguagem que se adequa a sua realidade de hardware e de abstração necessárias. Na Figura 4.3 podemos observar a criação da linguagem CCS, baseada em C, utilizada para programação de robôs H-Educ.

48 4.3. CADASTRO DE LINGUAGEM 35 Figura 4.2: Listagem de Linguagens Cadastradas Figura 4.3: Cadastro de linguagem Compilação e Envio Após ser realizada a criação da linguagem, apresentada no seção anterior o usuário deve completar um formulário de cadastro. Na primeira parte do formulário são solicitas as informações necessárias para a compilação e o envio/execução do programa pelo robô. O usuário, como mostrado na Figura 4.4, é solicitado a fornecer a chamada de sistema em Windows (sistema operacional do servidor) utilizada para fazer a compilação do programa gerado nesta linguagem, a extensão dos arquivos gerados na linguagem cadastrada, fazer o upload do compilador. O usuário deverá também fornecer a chamada de

49 36 CAPÍTULO 4. AMBIENTE PROPOSTO sistema a ser executada no dipositivo computacional local para o envio ou execução do programa, qual a extensão do arquivo a ser enviado, informar sobre a necessidade de enviar algum arquivo para o dipositivo computacional local para que o envio seja efetuado, fazer o upload deste arquivo, caso ele seja necessário, e qual o nome do mesmo. Figura 4.4: Formuário de cadastro - compilação Caso sejam necessários mais de um arquivo para realizar a compilação, o usuário deve fazer o upload dos arquivos em um arquivo compactado e informar que o tratamento do arquivo é necessário. Com isso, ao término do cadastro o usuário será informado que a linguagem foi cadastrada corretamente sendo possível a programação em R-Educ, porém a compilação só será executada por completo e o envio só será permitido após dois dias úteis - tempo necessário para que o administrador do sistema descompacte, aloque ou instale os arquivos, caso necessário, no servidor. Cabeçalho e Rodapé Nesta parte do formulário deverão ser incluídos os códigos a serem posicionados no cabeçalho e no rodapé do programa gerado nesta linguagem. Nesta área é feita, dependendo da linguagem, a definição de portas e pinos, definição dos motores e sensores,

50 4.3. CADASTRO DE LINGUAGEM 37 inclusão de bibliotecas e códigos que devem ser incluídos para o bom funcionamento do programa. Nestas áreas também podem ser inseridos códigos que visam aumentar ainda mais o nível de abstração de linguagens, por exemplo, funções com alto grau de dificuldade podem ser definidas pelo professor mediador nesta área e apenas definida sua chamada na área de funções, ficando transparente ao aluno a quantidade de código e a complexidade necessária para executar um determinado comando. O cabeçalho e rodapé definidos serão inseridos em todos os programas gerados por esta linguagem. Declaração de Funções Agora o usuário deverá fornecer a função principal de seu programa, função main. Observe na Figura 4.5 que o formulário fornece exemplos de escrita de funções principais nas linguagens C e R-Educ para que a escrita seja feita de forma válida. Identificamos a partir dos exemplos que o usuário deve simplesmente escrever a função principal em sua linguagem, identificando através da palavra comandos onde estes deverão ser inseridos. Figura 4.5: Formuário de cadastro - declaração da função principal Em seguida o usuário deverá apresentar como são declaradas as funções sem retorno, funções void, da linguagem e como é realizada a chamada destas funções. Destacamos aqui que a linguagem R-Educ não trabalha com declarações de funções com retorno, caso seja necessário algum tipo de retorno o usuário deverá manipular variáveis globais dentro delas. Esta etapa do cadastro é realizada preenchendo os dados solicitados na Figura 4.6

51 38 CAPÍTULO 4. AMBIENTE PROPOSTO Figura 4.6: Formuário de cadastro - declaração e chamada de funções sem retorno Tipos de Dados Nesta parte do formulário o usuário deverá apresentar como são declarados e modificados variáveis utilizando tipos de dados presentes na linguagem R-Educ. Ressaltamos que a linguagem utilizada para programação trabalha com apenas três tipos de dados: texto, numero e booleano. O tipo de dado texto manipula variáveis do tipo string, sequências de símbolos e caracteres separados ou não por espaços e delimitados por aspas, o cadastro de variáveis do tipo texto está apresentado na Figura 4.7. O tipo de dado numero manipula variáveis numéricas do tipo float, números que podem assumir valores inteiros ou em ponto flutuante. Já o tipo de dado booleano manipula variáveis lógicas do tipo verdadeiro ou falso. Caso seja necessário manipular tipos de dados diferentes o usuário poderá utilizar funções que não surtirão efeito na linguagem R-Educ mas que ao ser compilada na linguagem trabalhada não resultará em um erro de tipo. Para que o usuário não cometa erros ao escrever são fornecidos exemplos em duas linguagens, a declaração deverá ser feita utilizando o termo variavel para o nome da variável e valor para o valor atribuído para

52 4.3. CADASTRO DE LINGUAGEM 39 a variável declarada. Já para modificar o valor da variável, o usuário deverá novamente utilizar variavel como nome da variável e novo_valor para o valor atribuído. Figura 4.7: Formuário de cadastro - declaração de variáveis do tipo texto Operadores No formulário são solicitados os operadores lógicos e relacionais da linguagem que está sendo cadastrada. Apesar de os operadores possuírem um padrão para a maior parte das linguagens, fornecemos exemplos dos operadores em duas linguagens para ajudar no preenchimento. O cadastro de operadores está apresentado na Figura 4.8. Figura 4.8: Formuário de cadastro - operadores Controladores de Fluxo A linguagem R-Educ possui os seguintes controladores de fluxo: se, enquanto, repita, teste, farei, para e sair. O formulário de cadastro solicita ao usuário que seja feita a escrita de cada um destes controladores na linguagem que está sendo cadastrada seguindo um determinado padrão. Este padrão é apresentado em duas linguagens distintas no exemplos visando orientar o cadastro. Na Figura 4.9, é solicitada a escrita do controlador de fluxo se e apresentados os exemplos de escrita deste nas linguagens C e R-Educ. Observe que é solicitado que as palavras

53 40 CAPÍTULO 4. AMBIENTE PROPOSTO condicao, comandos1 e comandos2 sejam escritas onde os comandos ou condições devem ser inseridos. Figura 4.9: Formuário de cadastro - controlador de fluxo: SE Na Figura 4.10, é solicitada a escrita do controlador de fluxo para e apresentados dois exemplos de sua escrita. Observe que é solicitado que a palavra variavel, seja escrita no lugar da variável que realiza a iteração, as palavras valor1 e valor2 devem ser escritas nos lugares correspondentes aos limites superiores e inferiores deste laço de repetição, a palavra passo deverá ser escrita onde é realizada a operação artimética sobre a variável de iteração e a palavra comandos onde os comandos devem ser posicionados. Figura 4.10: Formuário de cadastro - controlador de fluxo: PARA Os demais controladores de fluxo seguem o mesmo padrão, devendo o usuário sempre ao escrever prestar atenção se está utilizando as palavras chaves no local correto e verificar se o código está de fato escrito corretamente para que não ocorra erros na tradução devido a erros de cadastro. Apenas o controlador de fluxo teste possui palavras além das citadas nos controladores de fluxo anteriores, porém, seguindo os exemplos apresentados na tela de cadastro da Figura 4.11, esta seção do formulário pode ser preenchida sem maiores problemas.

54 4.4. TRADUÇÃO E COMPILAÇÃO 41 Figura 4.11: Formuário de cadastro - controlador de fluxo: TESTE Funções Na última parte do formulário devem ser definidas as chamadas de funções que fazem parte da linguagem. Essas funções podem ser funções padrões da linguagem, para conversão entre tipos de dados por exemplo, funções herdadas de algum arquivo incluído no cabeçalho, chamada de funções definidas no corpo do arquivo através de escritas no campo destinado ao cabeçalho ou rodapé, ou ainda uma sequência de comandos. Para que a função seja definida, deverá ser estabelecido um nome que será utilizado para realizar a chamada da função em R-Educ, o número de parâmetros da função, o tipo de retorno da linguagem - podendo ser um dos três tipos pertencentes à linguagem R-Educ ou a função pode ser sem retorno - o tipo da função - se ela é de leitura, escrita, movimentação, envio, conversão de dados, etc - e o código correspondente a execução da função. Observe na Figura 4.12 que o exemplo apresentado ilustra a definição da função Frente, que foi escrita na linguagem NXC com uma única linha de comando, já na linguagem Lejos a mesma função de movimentação foi escrita com duas linhas de comandos. Podemos observar também, no exemplo apresentado, como devem ser escritos os parâmetros da linguagem. Cada parâmetro deve ser chamado de var seguido pelo número do parâmetro, acrescido do tipo do parâmetro entre parênteses. Os parâmetros recebidos podem ser do tipo: int, String, boolean, float ou double. 4.4 Tradução e Compilação Neste trabalho implementamos um ambiente que permite ao usuário programar em linguagem R-Educ e o programa fonte ser convertido a um programa objeto de um deter-

55 42 CAPÍTULO 4. AMBIENTE PROPOSTO Figura 4.12: Formuário de cadastro - chamadas de função minado robô que é programável a partir de uma determinada linguagem. Sendo, para isso, necessário ao usuário realizar o cadastro da linguagem segundo os procedimentos e normas estabelecidos na seção anterior. Ressaltamos que o ambiente não suporta linguagens que possuem uma identação específica - como contabilização de espaços ou números de tabulações dadas. Para que o que acabamos de descrever fosse possível, foi necessária a criação de um tradutor configurável para a linguagem R-Educ, gerando a universalização apresentada na Figura Observamos na Figura 4.13 que um código gerado na linguagem R-Educ, ao ser processado pelo tradutor desenvolvido com as seguintes linguagens cadastras, pode ser convertido em um código nas linguagens para robótica NXC, Lejos, CCS, NQC ou qualquer outra cadastrada que atenda aos requisitos mencionados. Nesta seção apresentaremos o tradutor desenvolvido para a linguagem R-Educ responsável por gerar o programa intermediário na linguagem cadastrada e introduziremos seus analisadores léxicos e sintáticos. Apresentaremos como é feito o mapeamento entre as linguagens e como é feita a compilação do arquivo para geração do programa objeto Analisador Léxico Como vimos no Capítulo 2, o analisador léxico é o responsável por ler os caracteres do programa a fim de formar tokens que em seguida serão processados pelo analisador sintático da linguagem R-Educ. Quando um determinado token é identificado, é formada uma estrutura para salvar o valor do token e a linha em que ele se encontra. Em seguida

56 4.4. TRADUÇÃO E COMPILAÇÃO 43 Figura 4.13: Universalização da linguagem R-Educ esse token é adicionado em uma lista que armazena os tokens na sequência de aparição. A identificação de tokens tem seu primeiro passo em uma busca por símbolos específicos para realizar separação de palavras processáveis pela linguagem através da inserção de espaços. Estes símbolos são: (, ), <, >, =,!, :, ",,. Foram utilizados nessa separação pois podem aparecer ligados juntamente com outros símbolos, letras ou números e não estar associados diretamente a eles. O analisador léxico implementado neste trabalho funciona um pouco diferente dos encontrados na literatura, visto que ele separa todas as palavras por espaços e as coloca em uma lista que faz referência a linha em que se encontram. Já os demais, varrem o arquivo completo separando em palavras aceitáveis pela linguagem. Este processamento foi implementado como uma das funcionalidades do analisador sintático Mapeamento entre Linguagens A classe de mapeamento entre linguagens é a base do funcionamento configurável do ambiente desenvolvido. Ao ser solicitada a compilação no ambiente de programação essa classe é chamada recebendo como parâmetro de entrada a identificação da linguagem em uso, com essa informação é feita uma solicitação ao banco de dados de todos os elementos que compõe a linguagem.

57 44 CAPÍTULO 4. AMBIENTE PROPOSTO A classe possui uma função que acessa a lista de funções associadas a linguagem e adiciona o seu nome único para a sua chamada em R-Educ em três listas distintas: functionsname: lista composta pelas identificações das funções associadas a linguagem que possuem retorno do tipo texto; functionsnumber: lista composta pelas identificações das funções associadas a linguagem que possuem retorno do tipo numero; functionsboolean: lista composta pelas identificações das funções associadas a linguagem que possuem retorno do tipo booleano; functionsvoid: lista composta pelas identificações das funções associadas a linguagem que não possuem retorno. O mapeamento possui duas funções responsáveis por associar o cabeçalho e rodapé cadastrados na linguagem a strings. E possui funções que retornam um arranjo de strings detalhando especificamente o que deve ser escrito em cada trecho do código na linguagem intermediária utilizada. Vimos no cadastro de linguagens que algumas palavras específicas devem ser escritas para que o mapeamento seja possível, dentre essas estão: variavel, valor1, comandos, var, condicao, etc. Sabendo destas palavras podemos selecionar partes da string do código fornecido pelo cadastrante a fim de saber onde será inserido os comandos, realizar operações de substituição, substituindo no lugar da palavra variavel, por exemplo, o nome da variável escrita em R-Educ pelo programador. Nas subseções a seguir apresentaremos algumas dessas funções que retornam um arranjo de strings, as funções que não foram apresentadas seguem o mesmo padrão de execução. Função Principal A função de mapeamento para escrita da função principal, apresentada no Algoritmo 1, acessa o banco de dados solicitando o código escrito pelo usuário e cria duas substrings, uma percorrendo o início do código até a palavra comandos, que deve ter sido escrita no cadastro, e outra percorrendo da palavra comandos até o final do código. As substrings criadas são, então, adcionadas a um arranjo de strings e fornecidas ao analisador sintático. Controlador de Fluxo: Para O controlador de fluxo para representa o laço de repetição for. A função de mapeamento para esse controlador, recebe o código digitado ao ser realizado o cadastro, o nome da variável utilizada para iterar, os limites inferiores e superiores e o passo de iteração

58 4.4. TRADUÇÃO E COMPILAÇÃO 45 Algorithm 1 Mapeamento da função principal p u b l i c S t r i n g [ ] m a i n F u n c t i o n ( ) { S t r i n g m a i n F u n c t i o n = l a n g u a g e. g e t M a i n F u n c t i o n ( ) ; S t r i n g r e t u r n S t r i n g [ ] = new S t r i n g [ 2 ] ; r e t u r n S t r i n g [ 0 ] = m a i n F u n c t i o n. s u b s t r i n g ( 0, m a i n F u n c t i o n. indexof ( " comandos " ) ) ; r e t u r n S t r i n g [ 1 ] = m a i n F u n c t i o n. s u b s t r i n g ( m a i n F u n c t i o n. indexof ( " comandos " ) + 8 ) ; r e t u r n r e t u r n S t r i n g ; } utilizado. Observe o formato que esse código deve se encontrar, tomando como exemplo um código criado para a linguagem Java apresentado no Algoritmo 2. Algorithm 2 Controlador de fluxo para escrito em Java f o r ( i n t v a r i a v e l = v a l o r 1 ; v a r i a v e l < v a l o r 2 ; v a r i a v e l += p a s s o ) { comandos } A função de mapeamento, apresentada no Algoritmo 3, realiza a substituição da variável escrita em R-Educ pelo desenvolvedor pela palavra variavel, escrita no cadastro, substitui os limites e o passo também escritos em R-Educ pelas palavras valor1, valor2 e passo. Em seguida cria duas substrings, a primeira percorrendo do início até onde a palavra comandos é encontrada e a segunda a partir da palavra comandos até o final do código e as adiciona em uma lista que é fornecida ao analisador sintático. Algorithm 3 Mapeamento do controlador de fluxo para p u b l i c S t r i n g [ ] f o r C o n d i t i o n ( S t r i n g v a r i a b l e, S t r i n g lim1, S t r i n g lim2, S t r i n g s t e p ) { S t r i n g f o r C o n d i t i o n = c o n t r o l F l o w. getforcode ( ) ; S t r i n g r e t u r n S t r i n g [ ] = new S t r i n g [ 2 ] ; f o r C o n d i t i o n = f o r C o n d i t i o n. r e p l a c e ( " v a r i a v e l ", v a r i a b l e ) ; f o r C o n d i t i o n = f o r C o n d i t i o n. r e p l a c e ( " v a l o r 1 ", lim1 ) ; f o r C o n d i t i o n = f o r C o n d i t i o n. r e p l a c e ( " v a l o r 2 ", lim2 ) ; f o r C o n d i t i o n = f o r C o n d i t i o n. r e p l a c e ( " p a s s o ", s t e p ) ; r e t u r n S t r i n g [ 0 ] = f o r C o n d i t i o n. s u b s t r i n g ( 0, f o r C o n d i t i o n. indexof ( " comandos " ) ) ; r e t u r n S t r i n g [ 1 ] = f o r C o n d i t i o n. s u b s t r i n g ( f o r C o n d i t i o n. indexof ( " comandos " ) + 8 ) ; r e t u r n r e t u r n S t r i n g ; } Operadores A função de mapeamento de operadores foi dividida em duas, uma para operadores de lógicos e outra para operadores relacionais. As funções, apresentadas no Algoritmo 4, recebem os operadores escritos em linguagem R-Educ como parâmetros, verificam

59 46 CAPÍTULO 4. AMBIENTE PROPOSTO seu valor através de estruturas condicionais e retornam o valor relativo aquele símbolo cadastrado na linguagem. Algorithm 4 Mapeamento de operadores p u b l i c S t r i n g w r i t e R e l a t i o n a l O p e r a t o r ( S t r i n g o p e r a t o r ) { i f ( " e ". e q u a l s ( o p e r a t o r ) ) { r e t u r n o p e r a t o r s. g e t L o g i c a l A n d ( ) ; } e l s e i f ( " ou ". e q u a l s ( o p e r a t o r ) ) { r e t u r n o p e r a t o r s. g e t L o g i c a l O r ( ) ; } e l s e i f ( "! ". e q u a l s ( o p e r a t o r ) ) { r e t u r n o p e r a t o r s. g e t L o g i c a l N o t ( ) ; } r e t u r n " e r r o r " ; } p u b l i c S t r i n g w r i t e O p e r a t o r ( S t r i n g o p e r a t o r 1, S t r i n g o p e r a t o r 2 ) { i f ( " = ". e q u a l s ( o p e r a t o r 1 ) ) { r e t u r n o p e r a t o r s. getequalto ( ) ; } e l s e i f ( " > ". e q u a l s ( o p e r a t o r 1 ) ) { i f ( " = ". e q u a l s ( o p e r a t o r 2 ) ) { r e t u r n o p e r a t o r s. g e t G r e a t e r T h a n O r E q u a l T o ( ) ; } e l s e { r e t u r n o p e r a t o r s. g e t G r e a t e r T h a n ( ) ; } } e l s e i f ( " < ". e q u a l s ( o p e r a t o r 1 ) ) { i f ( " = ". e q u a l s ( o p e r a t o r 2 ) ) { r e t u r n o p e r a t o r s. getlessthanorequalto ( ) ; } e l s e { r e t u r n o p e r a t o r s. getlessthan ( ) ; } } e l s e i f ( "! ". e q u a l s ( o p e r a t o r 1 ) ) { i f ( " = ". e q u a l s ( o p e r a t o r 2 ) ) { r e t u r n o p e r a t o r s. getnotequalto ( ) ; } e l s e { r e t u r n " e r r o r " ; } } r e t u r n " e r r o r " ; } Analisador Sintático A analise sintática, geralmente parte de um axioma da gramática e deve chegar a sentença completa a ser verificada somente se a sentença estiver correta do ponto de vista gramatical. O analisador sintático implementado recebe a lista de estruturas formada pelo analisador léxico. O primeiro passo de seu funcionamento é a criação de um novo arquivo com a extensão da linguagem cadastrada em uso. Para tal, é realizada uma verificação no

60 4.4. TRADUÇÃO E COMPILAÇÃO 47 banco de dados da extensão da linguagem informada no formulário de cadastro. Após a criação do arquivo dá-se início a verificação da corretude do programa fonte. Em seguida é gerado um objeto da classe de mapeamento para que todas as listas de strings com os códigos acessados do banco de dados possam ser obtidas e manipuladas. Com todos os dados prontos é, então, iniciado o processo de tradução. É realizada um acesso a string obtida no mapeamento relativa ao cabeçalho e em seguida sua escrita no arquivo criado. É dado então o início ao processo de análise sintática, seguida da escrita do rodapé, seguindo o mesmo método do cabeçalho. O processo de análise verifica cada item da lista de tokens, caso seja uma nova linha ou um espaço ele passa para o token seguinte. Caso o token seja a palavra reservada tarefa, por exemplo, é feita uma verificação de se a sequência de tokens seguintes representam dados corretos para a criação de uma tarefa, sendo a sentença válida é solicitada a escrita do código no arquivo seguindo algumas primitivas definidas nessa função e os dados obtidos no mapeamento. O mesmo princípio é seguido para a função principal, controladores de fluxo, definições de funções e declarações de variáveis. Para garantir que duas variáveis não sejam criadas com o mesmo nome, o analisador cria uma lista com os nomes das variáveis já criadas. É realizada, também, uma verificação para saber se a função principal já foi escrita para que não haja repetições. Durante toda a analise sintática é feita uma análise quanto a ocorrência de erros de sintaxe. Ao final da execução, caso seja encontrado algum erro durante o processo, este é retornado ao usuário com a sua descrição e linha de ocorrência. Ao fim da análise sintática, caso não haja erros, deve haver um código válido, escrito na linguagem cadastrada e acessada via banco de dados. É importante ressaltar que erros no cadastro da linguagem não são verificados (o sistema verifica apenas se as palavras solicitadas foram escritas em cada caso), ou seja, caso o usuário cadastre uma linguagem de maneira errônea, o código gerado nesta linguagem também apresentará erros, não sendo possível prosseguir de forma satisfatória com a compilação Geração do Programa Objeto Ainda no processo de tradução e compilação, caso a linguagem seja compilada, ou seja, caso tenha sido fornecido no formulário de cadastro de linguagens um arquivo de compilador e um código de compilação, será realizada a chamada, após a conclusão com sucesso da análise sintática a chamada de sistema no servidor com o código de compilação fornecido. Com isso o servidor executará o compilador fornecido pelo usuário cadastrante que irá gerar o arquivo em código de máquina.

61 48 CAPÍTULO 4. AMBIENTE PROPOSTO Diagrama de Classes A implementação do compilador foi realizada adotando o modelo de desenvolvimento orientado a objetos. Neste modelo, o diagrama de classes representa a estrutura do sistema, possuindo informações sobre métodos, atributos, nome das funções e como estas são integradas entre si. A Figura 4.14 representa o diagrama de classes do compilador integrado ao ambiente. Como podemos ver, o compilador é constituído por cinco classes principais. A classe analisadorsintatico é a principal do compilador, ela é a responsável por realizar a análise sintática e gerenciar a escrita do código intermediário em um arquivo, além de fazer as chamadas para compilação deste. As suas principais funções são writeonfile, responsável pela escrita no arquivo texto, analyse, responsável por análisar que regra da gramática está me uso, e wordtest, que verifica a validade completa da sentença. A classe TestCondition é a classe responsavél pela verificação da validade de uma condição inserida em um controlador de fluxo. A classe ControlFlowStatement é responsável por verificar a validade de sentenças que utilizam controles de fluxo e realizar a escrita destas no arquivo. Possui funções relativas a cada controlador de fluxo presente na linguagem R-Educ. Já a classe Mapeamento é a responsável por gerenciar o acesso ao banco de dados e fornecer os dados para escrita à classe analisadorsintatico. Figura 4.14: Diagrama de classes

62 4.5. COMUNICAÇÃO E ENVIO Comunicação e Envio A proposta do ambiente de desenvolvimento configurável implementado neste trabalho não inclui apenas fornecer ao usuário um ambiente de desenvolvimento onde é possível programar em várias linguagens e realizar a tradução entre as linguagens cadastradas e a linguagem R-Educ, mas sim um ambiente que, além disso, permite ao usuário estabelecer comunicações com diversas plataformas robóticas. Qualquer dispositivo com acesso a um navegador web - computadores, notebooks, tablets, etc - podem acessar o ambiente, que está conectado à Internet através de um servidor e implementar e compilar seu programa e, caso tenha recursos capazes de executar ou estebelecer comunicação com o hardware fazê-lo. Figura 4.15: Diagrama de conexões A Figura 4.15 apresenta o diagrama de conexões do sistema. Neste, podemos observar que existem um servidor onde o processamento do ambiente é realizado, este servidor estabelece comunicação com os dispositivos computacionais, sejam eles computadores, tablet, smartphones ou notebooks, através de um navegador web. E estes últimos se comunicam com os dispositivos robóticos que possuem compatibilidade através de cabo de dados ou através de algum mecanismo de comunicação sem fio. O envio de dados ao dispositivo robótico ou execução do código gerado é feito através de chamadas de sistemas, fornecidas pelo usuário no momento do cadastro da linguagem. Essa chamada de sistema é feita via applet Java. Para que a execução da applet possa ser realizada o usuário deve ter a máquina virtual

63 50 CAPÍTULO 4. AMBIENTE PROPOSTO Java instalada e assinar o certificado digital requerido para que a applet possa ter acesso e executar operações no computador local. Ressaltamos que para a comunicação entre o dispositivo computacional local e o dispositivo robótico é necessária, dependendo da plataforma robótica utilizada e forma de envio, uma compatibilidade de hardware, podendo ser necessário ao usuário a instalação de drivers específicos. 4.6 Ambiente de Desenvolvimento Para realizar a programação em R-Educ e demais linguagens cadastradas pelo usuário foi desenvolvido um ambiente web utilizando APIs específicas do Java EE. O ambiente desenvolvido é executado online, o que permite uma maior disseminação da ferramenta, visto que a escrita e compilação do código pode ser realizada através de qualquer dispositivo com acesso a um navegador web, sendo toda a capacidade computacional requerida apenas ao servidor. Além disso, o fato da ferramenta ser web torna descenessária a instalação de programas auxíliares. Figura 4.16: Ambiente de desenvolvimento A tela principal do ambiente é apresentada na Figura A página possui recursos para salvar, compilar, enviar, fazer download e upload do código em R-Educ e na linguagem cadastrada. Possui na lateral esquerda, uma lista com os programas cadastrados para essa linguagem no servidor, os quais podem ser escolhidos para edição pelo usuário. O ambiente possui na lateral esquerda uma área destinada aos resultados, nesta o usuário é informado se seu código foi salvo ou deletado com sucesso, se o arquivo foi

64 4.6. AMBIENTE DE DESENVOLVIMENTO 51 compilado com sucesso e se não foi, o ambiente informa, para compilações em linguagem R-Educ, a descrição do erro e em que linha ele se encontra. Além disso, caso o programa seja compilado com sucesso é gerado um programa na linguagem cadastrada que pode ser visualizado pelo usuário; sendo assim, é possível fazer estudos comparativos entre os códigos escritos e gerados. Ainda na lateral esquerda é encontrada uma lista de robôs que podem ser selecionados e trocados pelo usuário durante a programação, sem a necessidade de recarregar o ambiente. Caso o usuário realize a troca de robô, a linguagem associada a este será então utilizada na tradução e compilação de código final. Outra funcionalidade deste ambiente de programação é que, caso a linguagem tenha sido cadastrada com erros, o código gerado pelo usuário vai ser compilado com sucesso em R-Educ, porém o usuário será informado que houve um erro ao cadastrar a linguagem, visto que foi encontrado um erro na compilação final.

65 52 CAPÍTULO 4. AMBIENTE PROPOSTO

66 Capítulo 5 Resultados O projeto e desenvolvimento do ambiente de desenvolvimento web configurável para aplicações em robótica educacional levou em consideração a proposta de ser utilizado como ambiente de desenvolvimento por alunos a partir de 8 anos até estudantes universitários, ou até mesmo qualquer pessoa interessada em aprender sobre robótica. Atendendo, assim, a todo o público alvo dos níveis três e cinco da linguagem de programação R-Educ. Levamos em consideração a proposta de que o projeto deveria ter um ambiente de cadastro de linguagens de programação para robótica, que pudesse ser facilmente utilizado por usuários experientes na linguagem e por usuários leigos em conhecimentos específicos dessa linguagem que ao receber informações do usuário experiente pudessem cadastrar com sucesso uma nova linguagem e fazer uso dela. Realizando uma análise a partir destas primitivas, verificamos que o ambiente de cadastro deveria possuir uma série de atributos e guias explicativos que auxiliassem no cadastro de linguagens de programação. Além disso desenvolvemos o ambiente de programação de forma que seus usuários pudessem ter um maior aproveitamento dos recursos disponíveis em uma oficina de robótica, contribuindo assim para o seu aprendizado e aumento da criatividade. Neste Capítulo apresentaremos e discorreremos sobre as seis etapas de teste que foram realizadas. Além disso apresentaremos os resultados obtidos e alguns comentários dos usuários que participaram dos testes. 5.1 Testes A realização dos testes do ambiente de cadastro, ambiente de programação e suas funcionalidades foram divididos em seis etapas que avaliaram o uso da ferramenta em todos os estágios de seu desenvolvimento e seu uso por usuários experientes e inexperientes em linguagens de programação aplicadas a robótica.

67 54 CAPÍTULO 5. RESULTADOS Primeira Etapa A primeira etapa dos testes foi realizada assim que o desenvolvimento do ambiente teve a sua primeira versão finalizada. Nesta etapa, verificamos que a linguagem de programação mais utilizada e conhecida por o grupo de pesquisa do laboratório NatalNet era a linguagem NXC para programação de robôs Lego Mindstorms NXT. Com isso julgamos ser essa a primeira linguagem que deveria ser cadastrada e testada, visto que, caso a ferramenta funcionasse apenas para essa linguagem já seria de grande contribuição. O cadastro da linguagem foi realizado por um usuário experiente, que possui conhecimentos específicos, já trabalhando e ministrando oficinas de robótica com ela desde o ano de Este usuário, avaliou o ambiente de cadastro e relatou que o formulário não estava fornecendo dados suficientes para que o cadastro fosse realizado de forma satisfatória, sugeriu que fosse realizada uma verificação ao finalizar o cadastro de que as palavras solicitadas tenham sido utilizadas corretamente. Apesar dos impasses encontrados, o cadastro da linguagem NXC para programação de robôs Lego Mindstorms NXT foi realizado com sucesso. Neste cadastro foram inclusas funções essenciais para participações em competições escolares de robótica Segunda Etapa A segunda etapa foi realizada em um treinamento para participação da Olimpíada Brasileira de Robótica 2013, o foco desta etapa do teste foi avaliar o funcionamento do ambiente de desenvolvimento. O treinamento contou com a participação de 25 pessoas as quais podem ser divididas em três grupos: Grupo 1: Estudantes do ensino fundamental com faixa etária média de 13 anos e conhecimentos de robótica; Grupo 2: Estudantes do ensino superior da área de tecnologia; Grupo 3: Estudantes do ensino superior com conhecimentos específicos de robótica. O primeiro treinamento seguiu as etapas básicas de uma oficina de robótica educacional. Primeiramente foi apresentada a situação problema que era a resolução da prova do ensino fundamental da etapa regional da Olímpiada Brasileira de Robótica - OBR2013, resgate com robôs. Uma aula expositiva foi realizada, levando os participantes a refletirem sobre como deveria ser o robô e qual seria a melhor estratégia para a sua programação. Em seguida eles foram desafiados a montar um robô que fosse apto a realizar o desafio. Ao

68 5.1. TESTES 55 término o ambiente de desenvolvimento foi apresentado e as formas de programação disponíveis até o momento (programação em linguagem NXC e programação em R-Educ), foram introduzidas aos participantes. (a) Montagem do robô utilizando o kit Lego (b) Apresentação do ambiente de programação Mindstorms NXT (c) Programação utilizando o ambiente web Figura 5.1: Etapas do treinamento para a OBR 2013 Ao término da apresentação do ambiente de programação os usuários acharam interessante o fato de que eles poderiam intercambiar entre seus programas gerados em NXC e R-Educ com apenas um clique. Além disso, um subgrupo do Grupo 1, relatou que possuía experiência em linguagem Java, e questionou se seria possível utilizar o ambiente programando em Lejos, linguagem baseada em Java utilizada para programação de robôs Lego, já que a proposta do trabalho era inclusão de qualquer linguagem de programação. Outro aluno, participante de um projeto de pesquisa, relatou que trabalhava com programação utilizando o módulo de programação do Arduino e questionou se seria possível utilizar o ambiente para realizar a programação destes. Foi então dado início a programação dos robôs, parte dos integrantes do Grupo 1 optou por utilizar a linguagem R-Educ, por ser uma linguagem em português e de fácil

69 56 CAPÍTULO 5. RESULTADOS entendimento, outra parte do Grupo 1, decidiu esperar para que a linguagem Lejos fosse cadastrada no ambiente. Já os participantes dos Grupos 2 e 3 foram incitados a programar em NXC, já que esta é uma linguagem baseada em C, semelhante a que eles fazem uso em seus trabalhos acadêmicos. Um dos usuários do Grupo 2, questionou sobre a possibilidade de realizar o envio do programa ao robô via Bluetooth. A Figura 5.1 apresenta a segunda etapa dos testes, a Figura 5.1(a) mostra usuários do Grupo 1 realizando a montagem. A Figura 5.1(b) apresenta a etapa de apresentação do ambiente e a Figura 5.1(c) um usuário do Grupo 2 realizando a programação utilizando o ambiente. Durante os testes, alguns usuários encontraram problemas com o sistema devido a instabilidade da Internet. Além disso, por o sistema ainda não possuir um módulo de cadastro de usuário, todos os que estavam programando no ambiente tinham acesso aos programas dos demais. Avaliamos a necessidade de inclusão de mais funções na linguagem NXC para que a realização do desafio pudesse ser feito de forma mais eficiente. Todos os participantes conseguiram utilizar o ambiente Terceira Etapa Após a primeira e segunda etapas de teste, realizamos uma avaliação das necessidades, críticas e requisições apresentadas pelos participantes das etapas anteriores. O ambiente de programação foi avaliado de acordo com as observações dos participantes da primeira etapa de testes. Inserimos opções para download do código gerado para o computador local. Preparamos o sistema para que as chamadas de envio que utilizassem alguma porta de comunicação do computador local fosse feita de forma satisfatória atendendo ao pedido do participante de possibilitar o envio via Bluetooth. Quanto a primeira etapa de testes, realizamos uma reformulação do ambiente de cadastro de linguagens, para tal inserimos mais textos explicativos de cada campo do cadastro e reestruturamos sua interface gráfica a fim de que este ficasse mais intuitivo. Implementamos um sistema para realizar a verificação do texto inserido em cada campo checando e informando caso alguma das palavras requisitadas não tenham sido inseridas Quarta Etapa Na quarta etapa dos testes solicitamos que um usuário experiente em programação estudasse algumas linguagens de programação para robótica e elaborasse guias com os dados necessários para cadastro.

70 5.1. TESTES 57 As linguagens escolhidas foram a linguagem NXC, cadastrada e utilizada nas etapas anteriores, a linguagem Lejos, solicitada por participantes de Grupo 1 da segunda etapa e a linguagem CCS para programação de robôs H-Educ, desenvolvido no mesmo laboratório deste trabalho. A linguagem NXC é uma linguagem baseada em C que para ser compilada utiliza um compilador executável que não precisa ser instalado no servidor. Para que os códigos compilados desta linguagem sejam enviados ao robô o sistema também deve enviar o compilador utilizado para a máquina local, além disso, o envio dos códigos pode ser feito via Bluetooth ao robô caso essa funcionalidade esteja disponível e a chamada de sistema de envio seja modificada. A linguagem Lejos é uma linguagem baseada em Java que para ser compilada utiliza um compilador que necessariamente precisa ser instalado no servidor. Além disso para que o envio do código compilado ao robô seja enviado o compilador também deve estar instalado no dispositivo computacional local. Os códigos traduzidos de R-Educ para Lejos devem formar classes com o mesmo nome do arquivo salvo, esse tratamento é fornecido por completo pelo tradutor desenvolvido, não sendo necessários campos extras a serem preenchidos no cadastro de linguagens. CCS é um compilador utilizado para programação em linguagem C de microcontroladores da marca PIC. Incluímos o seu cadastro neste trabalho visto que ela é a linguagem utilizada para programação de robôs H-Educ, desenvolvido por Sá (2011), para o funcionamento do H-Educ um código auxiliar deve ser utilizado. Sendo assim, a geração de arquivos desta linguagem deve conter um cabeçalho com todas as funções e estabelecimentos de pinos necessários. Essa linguagem nos permite visualizar o quanto é possível transparecer aos usuários a dificuldade da programação fazendo uso do ambiente desenvolvido neste trabalho. Figura 5.2: Sequência de geração de arquivos A Figura 5.2 mostra a sequência de arquivos gerados para cada uma das linguagens

71 58 CAPÍTULO 5. RESULTADOS mencionadas. A primeira linha da figura representa a sequência de arquivos gerada para a linguagem CCS, ao solicitarmos a compilação com um código escrito corretamente em R-Educ, será gerado um código.c que ao ser processado pelo compilador CCS deverá gerar um arquivo.hex. A segunda e terceira linha representam a mesma sequência de geração para as linguagens NXC e Lejos respectivamente. O usuário experiente gerou os guias de cadastro para cada uma dessas linguagens bem como selecionou os arquivos que deveriam ser enviados para o servidor para prover a compilação e envio Quarta Etapa Na quarta etapa de testes selecionamos um grupo para realizar o cadastro das linguagens NXC, CCS e Lejos no ambiente de cadastro a partir dos guias elaborados na etapa anterior. Este grupo pode ser dividido em três, sendo o primeiro, correspondente a 23%, sem conhecimento em programação, o segundo, correspondente a 64%, com conhecimentos básicos em programação e o terceiro, correspondente a 13%, com conhecimentos específicos em linguagens de programação para robótica. Foram realizados um total de 17 cadastros de linguagens, sendo o cadastro realizado com sucesso por 70% dos participantes, a maioria dos erros cometidos foi ocasionado por esquecimento de elementos chaves da sintaxe do código. Não sendo realizada a compilação completa devido a este erro. Figura 5.3: Conhecimento necessário para cadastro Na Figura 5.3 apresentamos um gráfico que mostra a avaliação dos participantes do grupo de testes quanto ao conhecimento necessário da linguagem pelo usuário para que este realize o cadastro. O nível de conhecimento está representado de 0 a 5 no eixo

72 5.1. TESTES 59 x onde 0 representa nenhum conhecimento e 5 representa muito conhecimento. Como podemos ver, foi avaliado pela maioria dos participantes que era necessário no mínimo um conhecimento intermediário da linguagem para que o cadastro pudesse ser realizado. Figura 5.4: Gráfico comparativo entre dificuldade de cadastro e conhecimento necessário O gráfico apresentado na Figura 5.4, apresenta uma avaliação comparativa entre o nível de conhecimento necessário para o cadastro de cada item solicitado e a dificuldade de cadastro de cada um. Os dados do gráfico foram obtidos a partir de uma pesquisa com os participantes que avaliaram o grau de dificuldade e o nível de conhecimento necessários para cadastro de cada item individualmente. Cada participante avaliou de 0 a 8 o nível de dificuldade, o gráfico apresenta o somatório das avaliações de cada item. Ainda nos dados da Figura 5.4 podemos observar que o item que foi julgado como o que requer um maior nível de conhecimento da linguagem foi o de compilação e envio, visto que o usuário precisa saber as chamadas de sistema para compilação e precisa referenciar corretamente o diretório a ser acessado Quinta Etapa A quinta e última etapa de testes foi realizada imediatamente após a quarta. Visto que os participantes do grupo de cadastro foram solicitados a testar o funcionamento de sua linguagem. Para que o teste do ambiente fosse realizado os participantes tiveram de entrar no mó-

73 60 CAPÍTULO 5. RESULTADOS dulo de programação após realizarem o cadastro e utilizar um programa de teste presente no guia fornecido. Após inserir o seu código, o participante teve que selecionar o seu robô dentre a lista de robôs associados a linguagens cadastradas, compilar o código em R-Educ, em seguida teve de abrir o código gerado na extensão da linguagem cadastrada e realizar novamente a compilação a fim de verificar que que o código traduzido foi gerado corretamente. Em seguida, caso o envio fosse possível, devido as limitações técnicas do participante, o envio deveria ser realizado. Nesta etapa, alguns dos participantes que cadastraram a linguagem com algum tipo de erro, se depararam com uma mensagem informativa ao solicitar a compilação em R-Educ. Visto que, com erros de cadastro, o código é traduzido com sucesso para a extensão da linguagem cadastrada porém a compilação completa não é satisfeita. O gráfico apresentado na Figura 5.5 apresenta a avaliação dos participantes do grupo de teste quanto a complexidade relacionada com algumas funcionalidades do ambiente de desenvolvimento, tais como: seleção de robôs, troca de linguagens, compilação e envio do programa. Cada um destes itens foi avaliado em uma escala de 0 a 5 onde 0 representa muito fácil e 5 representa muito difícil. Figura 5.5: Complexidade atribuída às funcionalidades do ambiente de programação Podemos observar, a partir dos dados obtidos e apresentados, que todos os participantes julgaram o ambiente de desenvolvimento como sendo de fácil utilização. Nos Algoritmos 6, 7 e 8, apresentamos o código traduzido para cada uma das linguagens cadastradas pelos participantes - NXC, Lejos e CCS respectivamente - a partir

74 5.1. TESTES 61 de um código básico, apenas com a rotina principal, escrito em R-Educ, apresentado no Algoritmo 5. Algorithm 5 Código escrito em R-Educ i n i c i o fim O código escrito em R-Educ apresenta apenas os dados básicos para que a compilação seja satisfeita. Observe que no Algoritmo 6, apenas a inicialização da função principal é realizada. Algorithm 6 Código traduzido de R-Educ para NXC t a s k main ( ) { } O código traduzido para Lejos, diferentemente do traduzido para a linguagem NXC, possui inclusões de bibliotecas, estas inclusões foram inseridas no campo do cadastro referente ao cabeçalho, e são inseridas em todos os códigos traduzidos para esta linguagem. Podemos observar também que para que os códigos escritos em Lejos funcionem eles devem possuir uma classe com o mesmo nome do arquivo salvo. Este tratamento é realizado a partir da utilização da palavra "nomedoprograma"no cabeçalho. Algorithm 7 Código traduzido de R-Educ para Lejos i m p o r t l e j o s. n x t. B u t t o n ; i m p o r t l e j o s. n x t. LCD; i m p o r t l e j o s. n x t. Motor ; i m p o r t l e j o s. u t i l. Delay ; p u b l i c c l a s s nomedoprograma { p u b l i c s t a t i c v oid main ( S t r i n g [ ] a r g s ) { } } O código traduzido para a linguagem CCS, apresentado no Algoritmo 8, teve parte de seu cabeçalho omitido. Observe que antes da função principal são realizadas definições de funções, inclusões de bibliotecas e definições de pinos a fim de diminuir a complexidade de utilização para seus usuários.

75 62 CAPÍTULO 5. RESULTADOS Algorithm 8 Código traduzido de R-Educ para CCS # i n c l u d e <SanUSB. h> # i n c l u d e < l c d. c> #FUSES NOWDT #FUSES PUT #FUSES NOPROTECT #FUSES NOBROWNOUT #FUSES NOLVP #FUSES NOCPD # use d e l a y ( c l o c k = ) # use r s ( baud = 1200, xmit = PIN_C6, r c v = PIN_C7 ) # d e f i n e motor1pina PIN_B0 # d e f i n e motor1pinb PIN_B1 # d e f i n e motor2pina PIN_B2 # d e f i n e motor2pinb PIN_B3 # d e f i n e motor3pina PIN_B5 # d e f i n e motor3pinb PIN_B6 # d e f i n e motor4pina PIN_B7 # d e f i n e motor4pinb PIN_E2 # d e f i n e pwm1 PIN_C2 # d e f i n e pwm2 PIN_B1 # d e f i n e s e n s o r 1 0 # d e f i n e s e n s o r 2 1 # d e f i n e s e n s o r 3 2 # d e f i n e s e n s o r 4 3 # d e f i n e s e n s o r 5 5 # d e f i n e s e n s o r 6 6 # d e f i n e TrigOn1 PIN_A5 # d e f i n e TrigOn2 PIN_D3 # d e f i n e echo1 PIN_E0 # d e f i n e echo2 PIN_E1 # d e f i n e CLOCKS_PER_SECOND 1000 i n t 1 6 i n f o, t ime ; void initpwm ( ) {... } void initad ( ) {... } i n t 1 6 l e i t u r a A D ( i n t s e n s o r, c h a r t i p o ) {... } void Motor ( s h o r t i n t motor, c h a r d i r e c a o, s h o r t i n t p o t e n c i a ) {... } c h a r r x U s a r t ( ) {... } void f l u s h U s a r t ( ) {... } void i n i t T i m e r ( ) {... } void i n i t U l t r a s o n i c o ( ) {... } enum b o o l e a n { t r u e = 1, f a l s e = 0 } ; t y p e d e f enum b o o l e a n b ool ; i n t main ( ) { } initpwm ( ) ; initad ( ) ; l c d _ i n i t ( ) ; i n i t U l t r a s o n i c o ( ) ; r e t u r n 0 ;

76 5.2. AVALIAÇÃO DOS AMBIENTES Avaliação dos Ambientes Ao término dos testes, realizamos uma pesquisa com os participantes solicitando que estes avaliassem em uma escala de 0 a 5, onde 5 representa muito bom e 0 representa muito ruim, os ambientes de cadastro de linguagens e de desenvolvimento. Os dados obtidos estão apresentados no gráfico da Figura 5.6. Figura 5.6: Avaliação dos ambientes desenvolvidos Como podemos observar no gráfico da Figura 5.6, em média 60% dos participantes julgaram o ambiente como sendo muito bom. Um dos participantes ressaltou que o ambiente de cadastro poderia ser utilizado por qualquer pessoa que possui conhecimentos básicos de programação: "O cadastro é feito de uma forma bastante intuitiva para quem possui apenas conhecimento básico em programação. Permite que o usuário programe na linguagem que tem afinidade, não sendo necessário o conhecimento prévio em R-Educ." Sobre o formulário de cadastro de linguagens, um dos participantes avaliou: "O ambiente de cadastro é bem explicativo, fácil de entender, contém textos curtos o suficiente para entendermos o comando." Outro participante ao ser questionado sobre o ambiente de programação mencionou:

Ambiente de Desenvolvimento Web Autoconfigurável para Robótica Educacional

Ambiente de Desenvolvimento Web Autoconfigurável para Robótica Educacional UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE CENTRO DE TECNOLOGIA PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA E DE COMPUTAÇÃO Ambiente de Desenvolvimento

Leia mais

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

Dadas a base e a altura de um triangulo, determinar sua área. Disciplina Lógica de Programação Visual Ana Rita Dutra dos Santos Especialista em Novas Tecnologias aplicadas a Educação Mestranda em Informática aplicada a Educação ana.santos@qi.edu.br Conceitos Preliminares

Leia mais

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software PROCESSO DE DESENVOLVIMENTO DE SOFTWARE Introdução Modelos de Processo de Desenvolvimento de Software Os modelos de processos de desenvolvimento de software surgiram pela necessidade de dar resposta às

Leia mais

Introdução ao Aplicativo de Programação LEGO MINDSTORMS Education EV3

Introdução ao Aplicativo de Programação LEGO MINDSTORMS Education EV3 Introdução ao Aplicativo de Programação LEGO MINDSTORMS Education EV3 A LEGO Education tem o prazer de trazer até você a edição para tablet do Software LEGO MINDSTORMS Education EV3 - um jeito divertido

Leia mais

Introdução à Computação

Introdução à Computação Aspectos Importantes - Desenvolvimento de Software Motivação A economia de todos países dependem do uso de software. Cada vez mais, o controle dos processos tem sido feito por software. Atualmente, os

Leia mais

1. NÍVEL CONVENCIONAL DE MÁQUINA

1. NÍVEL CONVENCIONAL DE MÁQUINA 1. NÍVEL CONVENCIONAL DE MÁQUINA Relembrando a nossa matéria de Arquitetura de Computadores, a arquitetura de Computadores se divide em vários níveis como já estudamos anteriormente. Ou seja: o Nível 0

Leia mais

Utilizando a ferramenta de criação de aulas

Utilizando a ferramenta de criação de aulas http://portaldoprofessor.mec.gov.br/ 04 Roteiro Utilizando a ferramenta de criação de aulas Ministério da Educação Utilizando a ferramenta de criação de aulas Para criar uma sugestão de aula é necessário

Leia mais

ALP Algoritmos e Programação. . Linguagens para Computadores

ALP Algoritmos e Programação. . Linguagens para Computadores ALP Algoritmos e Programação Iniciação aos computadores. Linguagens para Computadores. Compiladores, Interpretadores. Ambientes de Programação 1 Linguagens para Computadores. Linguagem binária: Dispositivos

Leia mais

LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO. Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto

LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO. Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto Conceitos de Linguagens de Roteiro: Apresentação do plano de ensino; Apresentação do plano de

Leia mais

Algoritmos: Lógica para desenvolvimento de programação de computadores. Autor: José Augusto Manzano. Capítulo 1 Abordagem Contextual

Algoritmos: Lógica para desenvolvimento de programação de computadores. Autor: José Augusto Manzano. Capítulo 1 Abordagem Contextual Algoritmos: Lógica para desenvolvimento de programação de computadores Autor: José Augusto Manzano Capítulo 1 Abordagem Contextual 1.1. Definições Básicas Raciocínio lógico depende de vários fatores para

Leia mais

1.1. Organização de um Sistema Computacional

1.1. Organização de um Sistema Computacional 1. INTRODUÇÃO 1.1. Organização de um Sistema Computacional Desde a antiguidade, o homem vem desenvolvendo dispositivos elétricoeletrônicos (hardware) que funciona com base em instruções e que são capazes

Leia mais

Interface Homem-Computador

Interface Homem-Computador Faculdade de Ciências e Tecnologia do Maranhão Interface Homem-Computador Aula: Engenharia Cognitiva e Semiótica Professor: M.Sc. Flávio Barros flathbarros@gmail.com Conteúdo Engenharia Cognitiva Fundamentos

Leia mais

CLUBE DE PROGRAMAÇÃO NAS ESCOLAS: NOVAS ERSPECTIVAS PARA O ENSINO DA COMPUTAÇÃO. IF Farroupilha Campus Santo Augusto; e-mail: joaowinck@hotmail.

CLUBE DE PROGRAMAÇÃO NAS ESCOLAS: NOVAS ERSPECTIVAS PARA O ENSINO DA COMPUTAÇÃO. IF Farroupilha Campus Santo Augusto; e-mail: joaowinck@hotmail. CLUBE DE PROGRAMAÇÃO NAS ESCOLAS: NOVAS ERSPECTIVAS PARA O ENSINO DA COMPUTAÇÃO WINCK, João Aloísio 1 RISKE, Marcelo Augusto 2 AVOZANI, Mariel 3 CAMBRAIA, Adão Caron 4 FINK, Marcia 5 1 IF Farroupilha Campus

Leia mais

O uso de Objetos de Aprendizagem como recurso de apoio às dificuldades na alfabetização

O uso de Objetos de Aprendizagem como recurso de apoio às dificuldades na alfabetização O uso de Objetos de Aprendizagem como recurso de apoio às dificuldades na alfabetização Juliana Ferreira Universidade Estadual Paulista UNESP- Araraquara E-mail: juliana.ferreiraae@gmail.com Silvio Henrique

Leia mais

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB Calculando a capacidade de disco: Capacidade = (# bytes/setor) x (méd. # setores/trilha) x (# trilhas/superfície) x (# superfícies/prato) x (# pratos/disco) Exemplo 01: 512 bytes/setor 300 setores/trilha

Leia mais

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO Capítulo 1 INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO 1.1 Histórico de Linguagens de Programação Para um computador executar uma dada tarefa é necessário que se informe a ele, de uma maneira clara, como ele

Leia mais

PROJETO INFORMÁTICA NA ESCOLA

PROJETO INFORMÁTICA NA ESCOLA EE Odilon Leite Ferraz PROJETO INFORMÁTICA NA ESCOLA AULA 1 APRESENTAÇÃO E INICIAÇÃO COM WINDOWS VISTA APRESENTAÇÃO E INICIAÇÃO COM WINDOWS VISTA Apresentação dos Estagiários Apresentação do Programa Acessa

Leia mais

Engenharia de Software III

Engenharia de Software III Engenharia de Software III Casos de uso http://dl.dropbox.com/u/3025380/es3/aula6.pdf (flavio.ceci@unisul.br) 09/09/2010 O que são casos de uso? Um caso de uso procura documentar as ações necessárias,

Leia mais

Conteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Conteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo Universidade Federal do Espírito Santo Centro Tecnológico Departamento de Informática Disciplina: INF 02810 Prof.: (monalessa@inf.ufes.br) Conteúdo 1. Introdução 2. Processo de Software 3. Gerência de

Leia mais

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia. 1 Introdução aos Sistemas de Informação 2002 Aula 4 - Desenvolvimento de software e seus paradigmas Paradigmas de Desenvolvimento de Software Pode-se considerar 3 tipos de paradigmas que norteiam a atividade

Leia mais

Planejando o aplicativo

Planejando o aplicativo Um aplicativo do Visual FoxPro geralmente inclui um ou mais bancos de dados, um programa principal que configura o ambiente de sistema do aplicativo, além de uma interface com os usuários composta por

Leia mais

Pesquisa com Professores de Escolas e com Alunos da Graduação em Matemática

Pesquisa com Professores de Escolas e com Alunos da Graduação em Matemática Pesquisa com Professores de Escolas e com Alunos da Graduação em Matemática Rene Baltazar Introdução Serão abordados, neste trabalho, significados e características de Professor Pesquisador e as conseqüências,

Leia mais

O que é um programa? Programa é uma lista de instruções que descrevem uma tarefa a ser realizada pelo computador.

O que é um programa? Programa é uma lista de instruções que descrevem uma tarefa a ser realizada pelo computador. O que é um programa? Programa é uma lista de instruções que descrevem uma tarefa a ser realizada pelo computador. Linguagem de Programação Uma linguagem de programação é um método padronizado para expressar

Leia mais

Um Driver NDIS Para Interceptação de Datagramas IP

Um Driver NDIS Para Interceptação de Datagramas IP Um Driver NDIS Para Interceptação de Datagramas IP Paulo Fernando da Silva psilva@senior.com.br Sérgio Stringari stringari@furb.br Resumo. Este artigo apresenta o desenvolvimento de um driver NDIS 1 para

Leia mais

Introdução. Hardware X Software. Corpo Humano Parte Física. Capacidade de utilizar o corpo em atividades especificas explorando seus componentes

Introdução. Hardware X Software. Corpo Humano Parte Física. Capacidade de utilizar o corpo em atividades especificas explorando seus componentes Introdução Hardware X Software Corpo Humano Parte Física Componentes 18 Capacidade de utilizar o corpo em atividades especificas explorando seus componentes Hardware Introdução Parte física: placas, periféricos,

Leia mais

Implementação de um módulo simulador de robôs baseado em Unity3D para o SimBot - Simulador de Robôs para Lego NXT.

Implementação de um módulo simulador de robôs baseado em Unity3D para o SimBot - Simulador de Robôs para Lego NXT. UNIVERSIDADE ESTADUAL DO OESTE DO PARANÁ Curso de Bacharelado em Ciência da Computação UNIOESTE - Campus de Cascavel MODELO PARA ELABORAÇÃO DE PROJETOS DE TRABALHO DE CONCLUSÃO DE CURSO 1. IDENTIFICAÇÃO

Leia mais

Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS)

Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS) Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS) Definição Geral: Disciplina de Compiladores Prof. Jorge Bidarra (UNIOESTE) A especificação de requisitos tem como objetivo

Leia mais

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 1 Prof. Cristóvão Cunha Objetivos de aprendizagem

Leia mais

PROPOSTA DE UM MODELO DE SISTEMA HIPERMÍDIA PARA APRESENTAÇÃO DO CURSO DE CIÊNCIA DA COMPUTAÇÃO

PROPOSTA DE UM MODELO DE SISTEMA HIPERMÍDIA PARA APRESENTAÇÃO DO CURSO DE CIÊNCIA DA COMPUTAÇÃO PROPOSTA DE UM MODELO DE SISTEMA HIPERMÍDIA PARA APRESENTAÇÃO DO CURSO DE CIÊNCIA DA COMPUTAÇÃO Fabiana Pacheco Lopes 1 1 Universidade Presidente Antônio Carlos (UNIPAC) fabipl_21@yahoo.com.br Resumo.Este

Leia mais

ESTUDO DE CASO WINDOWS VISTA

ESTUDO DE CASO WINDOWS VISTA ESTUDO DE CASO WINDOWS VISTA História Os sistemas operacionais da Microsoft para PCs desktop e portáteis e para servidores podem ser divididos em 3 famílias: MS-DOS Windows baseado em MS-DOS Windows baseado

Leia mais

Curso Técnico em Redes

Curso Técnico em Redes Curso Técnico em Redes Prof. Airton Ribeiro - 2012 Histórico das Linguagens de Programação O que é? É um método padronizado para expressar instruções para um computador. É um conjunto de regras sintáticas

Leia mais

MC-102 Aula 01. Instituto de Computação Unicamp

MC-102 Aula 01. Instituto de Computação Unicamp MC-102 Aula 01 Introdução à Programação de Computadores Instituto de Computação Unicamp 2015 Roteiro 1 Por que aprender a programar? 2 Hardware e Software 3 Organização de um ambiente computacional 4 Algoritmos

Leia mais

CENTRO UNIVERSITÁRIO ESTÁCIO RADIAL DE SÃO PAULO SÍNTESE DO PROJETO PEDAGÓGICO DE CURSO 1

CENTRO UNIVERSITÁRIO ESTÁCIO RADIAL DE SÃO PAULO SÍNTESE DO PROJETO PEDAGÓGICO DE CURSO 1 SÍNTESE DO PROJETO PEDAGÓGICO DE CURSO 1 CURSO: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS MISSÃO DO CURSO A concepção do curso de Análise e Desenvolvimento de Sistemas está alinhada a essas novas demandas

Leia mais

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02 ArpPrintServer Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02 1 Sumário INTRODUÇÃO... 3 CARACTERÍSTICAS PRINCIPAIS DO SISTEMA... 3 REQUISITOS DE SISTEMA... 4 INSTALAÇÃO

Leia mais

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação SOFT DISCIPLINA: Engenharia de Software AULA NÚMERO: 10 DATA: / / PROFESSOR: Andrey APRESENTAÇÃO O objetivo desta aula é apresentar e discutir os conceitos de coesão e acoplamento. DESENVOLVIMENTO Projetar

Leia mais

Organização e Arquitetura de Computadores I. de Computadores

Organização e Arquitetura de Computadores I. de Computadores Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de Computadores I Organização Básica B de Computadores

Leia mais

Índice. Introdução... 3 Conhecendo Ambiente de estudo... 4

Índice. Introdução... 3 Conhecendo Ambiente de estudo... 4 Página 1 Índice Introdução... 3 Conhecendo Ambiente de estudo... 4 O QUE É EDUCAÇÃO A DISTANCIA (EAD)?... 4 O que é necessário para estudar em ead?... 4 Quais são as vantagens de estudar a distância?...

Leia mais

3. O NIVEL DA LINGUAGEM DE MONTAGEM

3. O NIVEL DA LINGUAGEM DE MONTAGEM 3. O NIVEL DA LINGUAGEM DE MONTAGEM Nas aulas anteriores tivemos a oportunidade de discutir dois diferentes níveis presentes na maioria dos computadores atuais. Nesta aula dedica-se a outro nível que também

Leia mais

PROTÓTIPOS DA LINHA LEGO MINDSTORMS PARA AUXÍLIO NO ENSINO/APRENDIZAGEM PROGRAMAÇÃO

PROTÓTIPOS DA LINHA LEGO MINDSTORMS PARA AUXÍLIO NO ENSINO/APRENDIZAGEM PROGRAMAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS CURRAIS NOVOS UTILIZAÇÃO DE PROTÓTIPOS DA LINHA LEGO MINDSTORMS PARA AUXÍLIO NO ENSINO/APRENDIZAGEM DA DISCIPLINA DE PROGRAMAÇÃO

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Sistemas Operacionais Prof. Marcelo Sabaris Carballo Pinto Gerenciamento de Dispositivos Gerenciamento de Dispositivos de E/S Introdução Gerenciador de Dispositivos Todos os dispositivos

Leia mais

EMENTAS DAS DISCIPLINAS

EMENTAS DAS DISCIPLINAS EMENTAS DAS DISCIPLINAS CURSO CST ANÁLISE E DESENVOLVIMENTO DE SISTEMAS INTRODUÇÃO À COMPUTAÇÃO 68 A disciplina estuda a área da informática como um todo e os conceitos fundamentais, abrangendo desde a

Leia mais

ORGANIZAÇÃO CURRICULAR

ORGANIZAÇÃO CURRICULAR ORGANIZAÇÃO CURRICULAR O curso Técnico em Informática, em Nível Médio Subseqüente, será organizado de forma semestral, com aulas presenciais, compostos por disciplinas, com conteúdos estabelecidos, tendo

Leia mais

Lógica de Programação

Lógica de Programação Lógica de Programação Softblue Logic IDE Guia de Instalação www.softblue.com.br Sumário 1 O Ensino da Lógica de Programação... 1 2 A Ferramenta... 1 3 Funcionalidades... 2 4 Instalação... 3 4.1 Windows...

Leia mais

COMPILADORES E INTERPRETADORES

COMPILADORES E INTERPRETADORES Aula 16 Arquitetura de Computadores 12/11/2007 Universidade do Contestado UnC/Mafra Curso Sistemas de Informação Prof. Carlos Guerber COMPILADORES E INTERPRETADORES Um compilador transforma o código fonte

Leia mais

SISTEMAS OPERACIONAIS

SISTEMAS OPERACIONAIS SISTEMAS OPERACIONAIS Conceitos Básicos Sistema Operacional: Um Sistema Operacional é um programa que atua como intermediário entre o usuário e o hardware de um computador. O Propósito do SO é fornecer

Leia mais

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br Introdução O computador como ferramenta indispensável: Faz parte das nossas vidas; Por si só não faz nada de útil; Grande capacidade de resolução

Leia mais

Como usar a robótica pedagógica aplicada ao currículo

Como usar a robótica pedagógica aplicada ao currículo 1 Congresso sobre práticas inovadoras na educação em um mundo impulsionado pela tecnologia Workshop: Como usar a robótica pedagógica aplicada ao currículo Palestrante: João Vilhete Viegas d'abreu Núcleo

Leia mais

Introdução. Introdução. Introdução. Organização Estruturada de Computadores. Introdução. Máquinas Multiníveis

Introdução. Introdução. Introdução. Organização Estruturada de Computadores. Introdução. Máquinas Multiníveis Ciência da Computação Arq. e Org. de Computadores Máquinas Multiníveis Prof. Sergio Ribeiro Computador digital máquina que resolve problemas executando uma série de instruções. Programa conjunto de instruções

Leia mais

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio 32 3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio Este capítulo apresenta o framework orientado a aspectos para monitoramento e análise de processos de negócio

Leia mais

Informática. Prof. Macêdo Firmino. Macêdo Firmino (IFRN) Informática Setembro de 2011 1 / 25

Informática. Prof. Macêdo Firmino. Macêdo Firmino (IFRN) Informática Setembro de 2011 1 / 25 Informática Prof. Macêdo Firmino Introdução a Informática Macêdo Firmino (IFRN) Informática Setembro de 2011 1 / 25 O Que é um Computador? É uma máquina composta de um conjunto de partes eletrônicas e

Leia mais

15 Computador, projeto e manufatura

15 Computador, projeto e manufatura A U A UL LA Computador, projeto e manufatura Um problema Depois de pronto o desenho de uma peça ou objeto, de que maneira ele é utilizado na fabricação? Parte da resposta está na Aula 2, que aborda as

Leia mais

UniRitter tecnológica: integrando Engenharias para desenvolvimento de um robô humanoide

UniRitter tecnológica: integrando Engenharias para desenvolvimento de um robô humanoide - SEPesq UniRitter tecnológica: integrando Engenharias para desenvolvimento de um robô humanoide 1. Introdução Diego Augusto de Jesus Pacheco Giovani Geremia Segundo Vargas (2012) é perceptível que uma

Leia mais

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0 AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0 SUMÁRIO 1 Conceitos Básicos... 3 1.1 O que é Software?... 3 1.2 Situações Críticas no desenvolvimento

Leia mais

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES Prof. Ms. Carlos José Giudice dos Santos cpgcarlos@yahoo.com.br www.oficinadapesquisa.com.br Conceito de Computador Um computador digital é

Leia mais

Microsoft Access XP Módulo Um

Microsoft Access XP Módulo Um Microsoft Access XP Módulo Um Neste primeiro módulo de aula do curso completo de Access XP vamos nos dedicar ao estudo de alguns termos relacionados com banco de dados e as principais novidades do novo

Leia mais

Universidade Federal de Santa Maria UFSM Centro de Tecnologia CT. Power Point. Básico

Universidade Federal de Santa Maria UFSM Centro de Tecnologia CT. Power Point. Básico Universidade Federal de Santa Maria UFSM Centro de Tecnologia CT Power Point Básico Santa Maria, julho de 2006 O Power Point é um aplicativo do Microsoft Office direcionado à criação de apresentações.

Leia mais

Introdução A Engenharia Da Computação

Introdução A Engenharia Da Computação Introdução A Engenharia Da Computação AULA I Slide 1 O Que é Engenharia? [De engenho + -aria.] Substantivo feminino 1.Arte de aplicar conhecimentos científicos e empíricos e certas habilitações específicas

Leia mais

Objetivos. Processos de Software. Tópicos abordados. O processo de software. Modelos genéricos de modelos de processo de software.

Objetivos. Processos de Software. Tópicos abordados. O processo de software. Modelos genéricos de modelos de processo de software. Processos de Software Objetivos Apresentar os modelos de processo de software Conjunto coerente de atividades para especificar, projetar, implementar e testar s de software Descrever os diferentes modelos

Leia mais

ESTUDO COMPARATIVO ENTRE AS PLATAFORMAS ARDUINO E PIC

ESTUDO COMPARATIVO ENTRE AS PLATAFORMAS ARDUINO E PIC ESTUDO COMPARATIVO ENTRE AS PLATAFORMAS ARDUINO E PIC Tiago Menezes Xavier de Souza¹, Igor dos Passos Granado¹, Wyllian Fressatti¹ ¹Universidade Paranaense (UNIPAR) Paranavaí- PR- Brasil tiago_x666@hotmail.com,

Leia mais

Aplicação Prática de Lua para Web

Aplicação Prática de Lua para Web Aplicação Prática de Lua para Web Aluno: Diego Malone Orientador: Sérgio Lifschitz Introdução A linguagem Lua vem sendo desenvolvida desde 1993 por pesquisadores do Departamento de Informática da PUC-Rio

Leia mais

1. CAPÍTULO COMPUTADORES

1. CAPÍTULO COMPUTADORES 1. CAPÍTULO COMPUTADORES 1.1. Computadores Denomina-se computador uma máquina capaz de executar variados tipos de tratamento automático de informações ou processamento de dados. Os primeiros eram capazes

Leia mais

Disciplina: Introdução à Informática Profª Érica Barcelos

Disciplina: Introdução à Informática Profª Érica Barcelos Disciplina: Introdução à Informática Profª Érica Barcelos CAPÍTULO 4 1. ARQUITETURA DO COMPUTADOR- HARDWARE Todos os componentes físicos constituídos de circuitos eletrônicos interligados são chamados

Leia mais

Algoritmos. Cláudio Barbosa contato@claudiobarbosa.pro.br

Algoritmos. Cláudio Barbosa contato@claudiobarbosa.pro.br Algoritmos Partes básicas de um sistema computacional: Hardware, Software e Peopleware Hardware - Componentes físicos de um sistema de computação, incluindo o processador, memória, dispositivos de entrada,

Leia mais

Desenvolvimento de um software de gerenciamento de projetos para utilização na Web

Desenvolvimento de um software de gerenciamento de projetos para utilização na Web Resumo. Desenvolvimento de um software de gerenciamento de projetos para utilização na Web Autor: Danilo Humberto Dias Santos Orientador: Walteno Martins Parreira Júnior Bacharelado em Engenharia da Computação

Leia mais

Fábrica de Software 29/04/2015

Fábrica de Software 29/04/2015 Fábrica de Software 29/04/2015 Crise do Software Fábrica de Software Analogias costumam ser usadas para tentar entender melhor algo ou alguma coisa. A idéia é simples: compara-se o conceito que não se

Leia mais

DEPARTAMENTO DE MATEMÁTICA E CIÊNCIAS EXPERIMENTAIS

DEPARTAMENTO DE MATEMÁTICA E CIÊNCIAS EXPERIMENTAIS DEPARTAMENTO DE MATEMÁTICA E CIÊNCIAS EXPERIMENTAIS Planificação Anual da Disciplina de TIC Módulos 1,2,3-10.ºD CURSO PROFISSIONAL DE TÉCNICO DE APOIO À GESTÃO DESPORTIVA Ano Letivo 2015-2016 Manual adotado:

Leia mais

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP) Hardware (Nível 0) Organização O AS/400 isola os usuários das características do hardware através de uma arquitetura de camadas. Vários modelos da família AS/400 de computadores de médio porte estão disponíveis,

Leia mais

4 Estrutura do Sistema Operacional. 4.1 - Kernel

4 Estrutura do Sistema Operacional. 4.1 - Kernel 1 4 Estrutura do Sistema Operacional 4.1 - Kernel O kernel é o núcleo do sistema operacional, sendo responsável direto por controlar tudo ao seu redor. Desde os dispositivos usuais, como unidades de disco,

Leia mais

Operador de Computador. Informática Básica

Operador de Computador. Informática Básica Operador de Computador Informática Básica Instalação de Software e Periféricos Podemos ter diversos tipos de software que nos auxiliam no desenvolvimento das nossas tarefas diárias, seja ela em casa, no

Leia mais

UTILIZANDO PROGRAMAS EDUCACIONAIS

UTILIZANDO PROGRAMAS EDUCACIONAIS LINUX EDUCACIONAL UTILIZANDO PROGRAMAS EDUCACIONAIS PROFESSOR GERSON VALENCIO Caro professor: As novas Tecnologias de Informação e Comunicação(TICs) estão mudando nossa forma de pensar, agir, relacionar-se,

Leia mais

PLANO DE ESTAGIO INTEGRADO A PROPOSTA PEDAGOGICA DO CURSO

PLANO DE ESTAGIO INTEGRADO A PROPOSTA PEDAGOGICA DO CURSO PLANO DE ESTAGIO INTEGRADO A PROPOSTA PEDAGOGICA DO CURSO Curso: 500090 - TECNICO EM INFORMATICA INTEGRADO AO E.M. Nivel: Tecnico Area Profissional: COMERCIO-TEC Area de Atuacao: BANCO DADOS/COMERCIO-TEC

Leia mais

Lógica de Programação

Lógica de Programação Lógica de Programação Unidade 4 Ambiente de desenvolvimento Java QI ESCOLAS E FACULDADES Curso Técnico em Informática SUMÁRIO A LINGUAGEM JAVA... 3 JVM, JRE, JDK... 3 BYTECODE... 3 PREPARANDO O AMBIENTE

Leia mais

12 EXCEL MACROS E APLICAÇÕES

12 EXCEL MACROS E APLICAÇÕES INTRODUÇÃO O principal objetivo deste livro é auxiliar o leitor na sua aprendizagem sobre os recursos avançados do Excel em especial na interligação com o Visual Basic for Applications (VBA). Pretende-se

Leia mais

FUNDAMENTOS DE HARDWARE COMO FUNCIONA UM PC? Professor Carlos Muniz

FUNDAMENTOS DE HARDWARE COMO FUNCIONA UM PC? Professor Carlos Muniz FUNDAMENTOS DE HARDWARE COMO FUNCIONA UM PC? A arquitetura básica de qualquer computador completo, seja um PC, um Machintosh ou um computador de grande porte, é formada por apenas 5 componentes básicos:

Leia mais

1 http://www.google.com

1 http://www.google.com 1 Introdução A computação em grade se caracteriza pelo uso de recursos computacionais distribuídos em várias redes. Os diversos nós contribuem com capacidade de processamento, armazenamento de dados ou

Leia mais

ÍNDICE O QUE É... 2 COMO FUNCIONA... 3. Acervo... 3. Meus Livros... 4. Livros em destaque... 7. Fórum... 7. Notícias... 8. Ajuda... 9. Suporte...

ÍNDICE O QUE É... 2 COMO FUNCIONA... 3. Acervo... 3. Meus Livros... 4. Livros em destaque... 7. Fórum... 7. Notícias... 8. Ajuda... 9. Suporte... ÍNDICE O QUE É... 2 COMO FUNCIONA... 3 Acervo... 3 Meus Livros... 4 Livros em destaque... 7 Fórum... 7 Notícias... 8 Ajuda... 9 Suporte... 9 POR QUE USAR... 10 EQUIPE RESPONSÁVEL... 12 CONTATO... 13 O

Leia mais

Figura 1 - O computador

Figura 1 - O computador Organização e arquitectura dum computador Índice Índice... 2 1. Introdução... 3 2. Representação da informação no computador... 4 3. Funcionamento básico dum computador... 5 4. Estrutura do processador...

Leia mais

Santa Cruz do Sul, outubro de 2015.

Santa Cruz do Sul, outubro de 2015. MANUAL DO USUÁRIO Santa Cruz do Sul, outubro de 2015. Adilson Ben da Costa & Ederson Luis Posselt Programa de Pós-graduação em Sistemas e Processos Industriais, Universidade de Santa Cruz do Sul (UNISC),

Leia mais

Governança de TI. ITIL v.2&3. parte 1

Governança de TI. ITIL v.2&3. parte 1 Governança de TI ITIL v.2&3 parte 1 Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR ITIL 1 1 ITIL Gerenciamento de Serviços 2 2 Gerenciamento de Serviços Gerenciamento de Serviços 3 3 Gerenciamento de Serviços

Leia mais

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES Alexandre Egleilton Araújo, Jaime Willian Dias Universidade Paranaense (Unipar) Paranavaí PR Brasil araujo.ale01@gmail.com, jaime@unipar.br Resumo.

Leia mais

APOSTILA DE EXEMPLO. (Esta é só uma reprodução parcial do conteúdo)

APOSTILA DE EXEMPLO. (Esta é só uma reprodução parcial do conteúdo) APOSTILA DE EXEMPLO (Esta é só uma reprodução parcial do conteúdo) 1 Índice Aula 1 - Área de trabalho e personalizando o sistema... 3 A área de trabalho... 3 Partes da área de trabalho.... 4 O Menu Iniciar:...

Leia mais

ESCOLA, LEITURA E A INTERPRETAÇÃO TEXTUAL- PIBID: LETRAS - PORTUGUÊS

ESCOLA, LEITURA E A INTERPRETAÇÃO TEXTUAL- PIBID: LETRAS - PORTUGUÊS ESCOLA, LEITURA E A INTERPRETAÇÃO TEXTUAL- PIBID: LETRAS - PORTUGUÊS RESUMO Juliana Candido QUEROZ (Bolsista) 1 ; Natália SILVA (Bolsista) 2, Leila BRUNO (Supervisora) 3 ; Sinval Martins S. FILHO (Coordenador)

Leia mais

UNIVERSIDADE FEDERAL DE UBERLÂNDIA Faculdade de Computação Curso de Introdução à Informática Prof: Anilton Joaquim da Silva / Ezequiel Roberto Zorzal

UNIVERSIDADE FEDERAL DE UBERLÂNDIA Faculdade de Computação Curso de Introdução à Informática Prof: Anilton Joaquim da Silva / Ezequiel Roberto Zorzal UNIVERSIDADE FEDERAL DE UBERLÂNDIA Faculdade de Computação Curso de Introdução à Informática Prof: Anilton Joaquim da Silva / Ezequiel Roberto Zorzal AULA Informática: Aplicações e Benefícios Advocacia

Leia mais

Processos de Desenvolvimento de Software

Processos de Desenvolvimento de Software Processos de Desenvolvimento de Software Gerenciamento de Projetos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e

Leia mais

ATIVIDADES PRÁTICAS SUPERVISIONADAS

ATIVIDADES PRÁTICAS SUPERVISIONADAS ATIVIDADES PRÁTICAS SUPERVISIONADAS 6ª Série Teoria da Computação Ciência da Computação A atividade prática supervisionada (ATPS) é um método de ensinoaprendizagem desenvolvido por meio de um conjunto

Leia mais

Documento de Análise e Projeto VideoSystem

Documento de Análise e Projeto VideoSystem Documento de Análise e Projeto VideoSystem Versão Data Versão Descrição Autor 20/10/2009 1.0 21/10/2009 1.0 05/11/2009 1.1 Definição inicial do documento de análise e projeto Revisão do documento

Leia mais

PERSPECTIVAS DO PROJETO DE ENSINO FÁBRICA DE SOFTWARE *

PERSPECTIVAS DO PROJETO DE ENSINO FÁBRICA DE SOFTWARE * PERSPECTIVAS DO PROJETO DE ENSINO FÁBRICA DE SOFTWARE * Hudson Henrique de Souza LOPES 1 ; Wellington Garcia PEREIRA 2 ; Getúlio Antero de DEUS JÚNIOR 3. 1 Bolsista do PET EEEC/UFG hudsonhsl@hotmail.com.

Leia mais

Entendendo como funciona o NAT

Entendendo como funciona o NAT Entendendo como funciona o NAT Vamos inicialmente entender exatamente qual a função do NAT e em que situações ele é indicado. O NAT surgiu como uma alternativa real para o problema de falta de endereços

Leia mais

O Laboratório de Garagem

O Laboratório de Garagem Oficina de Robótica O Laboratório de Garagem O Laboratório de Garagem foi fundado em 2010 e tem como proposta ser uma iniciativa voltada para a integração, colaboração e apoio aos desenvolvedores independentes

Leia mais

ENGENHARIA DE SOFTWARE I

ENGENHARIA DE SOFTWARE I ENGENHARIA DE SOFTWARE I Prof. Cássio Huggentobler de Costa [cassio.costa@ulbra.br] Twitter: www.twitter.com/cassiocosta_ Agenda da Aula (002) Metodologias de Desenvolvimento de Softwares Métodos Ágeis

Leia mais

Microsoft Office PowerPoint 2007

Microsoft Office PowerPoint 2007 INTRODUÇÃO AO MICROSOFT POWERPOINT 2007 O Microsoft Office PowerPoint 2007 é um programa destinado à criação de apresentação através de Slides. A apresentação é um conjunto de Sides que são exibidos em

Leia mais

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br LP II Estrutura de Dados Introdução e Linguagem C Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br Resumo da aula Considerações Gerais Introdução a Linguagem C Variáveis e C Tipos de

Leia mais

Manual UNICURITIBA VIRTUAL para Professores

Manual UNICURITIBA VIRTUAL para Professores Manual UNICURITIBA VIRTUAL para Professores 1 2 2015 Sumário 1 Texto introdutório... 3 2 Como Acessar o UNICURITIBA VIRTUAL... 3 3 Tela inicial após login... 3 3.1) Foto do perfil... 4 3.2) Campo de busca...

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 6 Estrutura de Sistemas Operacionais Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso

Leia mais

11/3/2009. Software. Sistemas de Informação. Software. Software. A Construção de um programa de computador. A Construção de um programa de computador

11/3/2009. Software. Sistemas de Informação. Software. Software. A Construção de um programa de computador. A Construção de um programa de computador Sistemas de Informação Prof. Anderson D. Moura Um programa de computador é composto por uma seqüência de instruções, que é interpretada e executada por um processador ou por uma máquina virtual. Em um

Leia mais

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas CMP1132 Processo e qualidade de software II Prof. Me. Elias Ferreira Sala: 402 E Quarta-Feira:

Leia mais

Introdução a Informática - 1º semestre AULA 02 Prof. André Moraes

Introdução a Informática - 1º semestre AULA 02 Prof. André Moraes Introdução a Informática - 1º semestre AULA 02 Prof. André Moraes 3 MÁQUINAS VIRTUAIS Em nossa aula anterior, fizemos uma breve introdução com uso de máquinas virtuais para emularmos um computador novo

Leia mais

Administração de Sistemas de Informação Gerenciais

Administração de Sistemas de Informação Gerenciais Administração de Sistemas de Informação Gerenciais UNIDADE III: Infraestrutura de Tecnologia da Informação Atualmente, a infraestrutura de TI é composta por cinco elementos principais: hardware, software,

Leia mais