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

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

Download "Ambiente de Desenvolvimento Web Autoconfigurá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 Autoconfigurá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, RN, 26 de junho de 2013

2

3 Resumo Propomos um ambiente de desenvolvimento online autoconfigurável, desenvolvido especificamente para aplicações em 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 na linguagem R-Educ. Tornamos possível que o usuário programe na linguagem R-Educ e o seu código seja convertido para uma linguagem cadastrada anteriormente, 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 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, realizaremos alguns cadastros de linguagens de programação e verificaremos 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.

4

5 Abstract We propose an online self configurable development environment specifically developed for applications in educational robotics. The environment, which appears as an extension of RoboEduc software, allows that the programming of several programmable robots be performed in the R-Educ language. We make it possible for the user to program in the language R-Educ and then converted 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 development phase of software, we implemented the development environment, bearing in mind the requirements and functionality defined in the design phase. Finally, to validate the platform, we will conduct some entries 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.

6

7 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 Local RobotC RoboEduc Software Lego Mindstorms NXT Microsoft Robotics Studio Legal Ambiente de Desenvolvimento para Robótica web i

8 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 Experimentos e Resultados 51 6 Conclusões 53 Referências bibliográficas 54

9 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 caso de uso Listagem de Linguagens Cadastradas Cadastro de Linguagem Formuário de Cadastro - Compilação e Envio Declaração da Função Principal Declaração e Chamada de Funções sem Retorno Declaração e Modificação de Variáveis do Tipo nome Operadores Lógicos Operadores Relacionais Controlador de Fluxo: Se Controlador de Fluxo: Para Controlador de Fluxo: teste Chamadas de Função Universalização da Linguagem R-Educ Diagrama de Classes Ambiente de Desenvolvimento iii

10

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

12

13 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 do alunado Zilli (2004) como 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 desafiantes, 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, nestas 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 os kits importados, que apresentam um alto custo para aquisição. Por esse motivo, existem iniciativas que buscam

14 2 CAPÍTULO 1. INTRODUÇÃO novas alternativas 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 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 específicas. Neste contexto, caso o professor de robótica educacional necessitasse ou desejasse 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 ao alunado 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 ao alunado. É 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 da linguagem R-Educ [Pitta et al. 2010] a partir da criação de um ambiente de desenvolvimento online autoconfigurá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 na linguagem R-Educ. 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 auto 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 interpretado 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 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

15 1.1. ESCOPO DO TRABALHO 3 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, realizaremos alguns cadastros de linguagens de programação e verificaremos se o ciclo completo foi satisfeito - 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ô. 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. 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 termino do desenvolvimento do software RoboEduc foi continuado 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 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 desenvolvidas ferramentas capazes de aumentar a adesão das escolas às aulas de robótica educacional. Fernandes (2010) 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 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á (2011), os testes realizados com o kit tiveram resultados satisfatórios,

16 4 CAPÍTULO 1. INTRODUÇÃO mostrando que ele pode ser utilizado em aulas de robótica educacional. Aroca (2013), desenvolveu 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 [NatalNet 2013], visam 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; 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 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 textuais. Já os que podem ser programados de forma textual, apresentam, em sua maioria uma linguagem de programação baseadas 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 especificações de hardware específicas.

17 1.3. METODOLOGIA 5 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 da linguagem R-Educ, permitindo uma maior flexibilidade do uso de hardware, através de um ambiente de desenvolvimento via web, permitindo aos usuários a edição, compilação e execução de programas utilizando apenas um navegador web com assinatura digital. Com a solução proposta, qualquer dispositivo que possua um navegador web, pode ser usado como polo 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 web e uma linguagem para implementação do compilador. O banco de dados para cadastro das linguagens e usuários 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 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 autoconfigurá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, realizaremos alguns cadastros de linguagens de programação para robótica e verificaremos se o ciclo completo foi satisfeito - cadastro de linguagem, programação em R-Educ, intepretação para a linguagem cadastrada, compilação para o código de máquina e envio do código para o robô.

18 6 CAPÍTULO 1. INTRODUÇÃO 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 a perfir diferenciados de usuários, utilizando conceitos da àrea pedagógica. Este trabalho tem se propõe a atender esses requisitos e trazer ao usuário um ambiente web, não sendo necessário que o usuário possua computadores com funcionalidades especificas, sendo todo o processamento de compilação executado no servidor. Dentre as contribuições do ambiente de desenvolvimento web autoconfigurável proposto neste trabalho está o fato de podermos interpretar a linguagem R-Educ para qualquer linguagens de baixo nível que não necessita de uma forma identação específica, podendo ser linguagem interpretadas ou compiladas. Essa é a maior contribuição deste trabalho pois a linguagem R-Educ possui um alto poder de abstração, sendo passível de ser utilizadas 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. 1.5 Estrutura do texto Este trabalho introduz um ambiente de desenvolvimento web autoconfigurá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.

19 1.5. ESTRUTURA DO TEXTO 7 Sem 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, incluindo os que não via web. 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, incluímos 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. Por fim, o Capítulo 5, apresenta as considerações parciais do trabalho, além de um cronograma de execução do projeto.

20 8 CAPÍTULO 1. INTRODUÇÃO

21 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 autoconfigurável e um sistema de banco de dados para que a robótica educacional possa obter um avanço significativo de 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 estruturação de compiladores. Neste capítulo também apresentaremos as ferramentas utilizadas para a criação do projeto proposto, explicitando o porquê da escolha de cada uma delas e qual o papel de seus usos. 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 do alunado quanto para estabelecer uma melhor qualidade de ensino e promover ambientes de aprendizagem mais ricos e motivadores para os alunos [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:

22 10 CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA Termo utilizado para caracterizar ambientes de aprendizagem que reú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), em seu trabalho, 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, e a compreensão, o trabalho com pesquisa e a utilização da criatividade em diferentes situações. Uma aula 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 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 pelo professor mediador e os conhecimentos prévios sobre robótica e programação. Em uma etapa seguinte, há o desenvolvimento das soluções encontradas, neste 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 problemas. Caso a montagem ou a programação necessitem de alguns ajustes o grupo deve voltar ao passo anterior e caso a solução decidida não seja

23 2.2. HARDWARES PARA ROBÓTICA EDUCACIONAL 11 satisfatória o grupo deve voltar a segunda fase da oficina. 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 a primeira encontrada na literatura a utilizar 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 é necessária a utilização de um hardware. Este possui, comumente, 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 utilizaremos a classificação dos hardwares em três categorias: kits comerciais e kits com sucata (material alternativo) e os kits com peças e materiais eletrônicos Kits comerciais Inúmeros recursos estão disponíveis no mercado 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 para o bom proveito de uma oficina de robótica educacional. No entanto,

24 12 CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA esses benefícios vêm atrelados a um alto custo de produto. Este fator pode tornar 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 possuem 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 incluem 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. Um 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, drivers de disket, 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, 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 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 usados formados 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

25 2.3. LINGUAGENS DE PROGRAMAÇÃO 13 maior grau de maturidade do alunado, visto que é necessário projetar e integrar mecânicas e eletrônicas de forma adequada. Podemos citar como exemplo deste tipo de robô o kit N-Bot, desenvolvido por Aroca et al. (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 [NatalNet 2013], 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." 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 funcionalidade autônomas e inteligentes, foi necessário criar uma nova especificação de linguagem. Aquela que tornaria possível a comunicação entre os humanos e as máquinas. Este conceito recebeu o termo linguagem de programação, que o dicionário Aurélio define como:

26 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 (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. n.d.]. Os reconhecedores são dispositivos formais que servem para verificar se uma sentença pertence ou não à 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 n.d.]. Apresentaremos nesta seção as principais etapas de geração de um programa. 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

27 2.3. LINGUAGENS DE PROGRAMAÇÃO 15 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 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, 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

28 16 CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 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 é então 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.

29 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, linkadores - que permitem que as partes do programa fonte gerados em linguagem de máquina possam ser executados pelo dispositivo computacional -, 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 deste trabalho, apresentamos alguns ambientes de desenvolvimento voltados para robótica educacional local 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 Local Nesta seção apresentaremos alguns ambientes de desenvolvimento 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 n.d.] é um ambiente de desenvolvimento atrelado a uma linguagem de programação textual de mesmo nome que pode ser utilizado para

30 18 CAPÍTULO 3. ESTADO DA ARTE escrever e depurar programas. É uma solução para programação de diversos hardwares utilizando uma única linguagem baseada em C. Dentro os hardwares que este ambiente oferece suporte estão o Lego Mindstorms NXT e RCX[LEGO 2011], controladores do kit Vex [Vex 2011] e Arduino [Arduino n.d.] RoboEduc O software educacional RoboEduc [Pitta 2008] 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 aulas de robótica educacional, que permite o controle e a programação de vários tipos diferentes de robôs. O RoboEduc pode ser utilizado com os kits Lego RCX, Lego NXT [LEGO 2011] 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 para alunos a partir dos 8 anos [Pitta 2011, Sá 2011]. 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

31 3.1. AMBIENTES DE DESENVOLVIMENTO PARA ROBÓTICA LOCAL Software Lego Mindstorms NXT O ambiente de desenvolvimento acompanha os kits da linha Lego Mindstorms NXT e foi desenvolvido especificamente para programação e controle de dispositivos desta marca. Foi desenvolvido pela National Instruments [Comportation n.d.b], baseado no LabVIEW [Comportation n.d.a]. Este ambiente é composto por uma interface e um bloco de diagramas onde fluxo de dados é possível através de ligaçoes entre os blocos, é possível a criação não só de estruturas, mas de comportamentos, permitindo, assim, a ciraçã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. Figura 3.2: Software Lego Mindstorms NXT 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

32 20 CAPÍTULO 3. ESTADO DA ARTE plataformas de hardware. Além disso possui uma linguagem de programação gráfica que 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 n.d.], RoboDynamics [RoboDynamics n.d.], irobot [IRobot n.d.], etc Legal O ambiente de programação Legal [de Educação Tecnológica PETe n.d.], 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 ambeinte 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 linguagem de programação utilizada é limitada ao número de sensores por possuir uma programação orientada a eventos. 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 local 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 en contrada 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 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 ao servidor.

33 3.2. AMBIENTE DE DESENVOLVIMENTO PARA ROBÓTICA WEB 21 Figura 3.3: Ambiente de programação Legal 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, escolhemos introduzir apenas o que se relaciona 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 - Not Quite C - no ambiente ao robô, transmissão das imagens do robô real, chat entre usuários ativos. É necessária apenas o uso de um navegador com java instalado e ativo e

34 22 CAPÍTULO 3. ESTADO DA ARTE acesso a porta O servidor é o responsável por interfacear a compilação do código NQC, transmitir e executar o código no robô. O ambiente possui três abas, sendo uma para análise do problema, programação e visualização da execução do programa desenvolvido. (a) Análise (b) Programação (c) Execução Figura 3.4: Mindstorms Internet Control Environment - MICE ADWN Ambiente de desenvolvimento web, desenvolvido por [Aroca et al. 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. 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, snedo toda a execução efetuada no navegador local. Além disso é possivel

35 3.3. ANÁLISE COMPARATIVA 23 salvar a página web para programação, não sendo necessária mais uma conexão 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 programação ADWN possui código aberto e pode ser encontrado disponível on-line no endereço 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 locais 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 autoconfigure para realizar a programação, compilação e envio para qualquer dispositivo robótico.

36 24 CAPÍTULO 3. ESTADO DA ARTE Na tabela 3.1 apresentamos uma análise comparativa entre os ambientes de desenvolvimento apresentados na seção e na tabela 3.2 é realizada uma análise comparativa entre os dois ambientes de desenvolvimento web apresentados na seção. 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. 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 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 Quanto as linguagens o ambiente desenvolvido permite que a programação seja realizada em R-Educ e em qualquer linguagem cadastradas 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 se 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 utilize nosso ambiente 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.

37 Capítulo 4 Ambiente Proposto Neste trabalho desenvolvemos um ambiente de desenvolvimento autoconfigurá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 hardware abstraindo aos 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 linguagem própria 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, apresentaremos 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 desenvolvimento do trabalho foi o projeto do ambiente. Para tal, realizamos uma análise das funcionalidades que o nosso 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, compilação via servidor e o envio do programa ao robô via computador local. Então, definimos o que deveria ser realizado para que estas funcionalidades sejam possíveis. A lista a seguir apresenta a sequência de ações a serem realizadas:

38 26 CAPÍTULO 4. AMBIENTE PROPOSTO Reestruturação didática da linguagem R-Educ; Reestruturação funcional da linguagem R-Educ; Reestruturação do compilador 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; 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 caso 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 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ô. Figura 4.1: Diagrama de caso de uso

39 4.1. PROJETO DO AMBIENTE 27 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 que implementações seriam necessárias. Vimos que seria necessária a implementação de um tradutor da linguagem R-Educ para a linguagem cadastrada, séria necessário um banco de dados para armazenamento das linguagens cadastradas, ambientes web para listar, editar e criar linguagens, além de um ambiente web de programação passível de realçar a linguagem R-Educ, salvar, 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, para 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 compilação foram feitas neste projeto utilizando esta linguagem.

40 28 CAPÍTULO 4. AMBIENTE PROPOSTO Java Enterprise Edition - Java EE O 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 trablaho 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 lado do cliente gerando interação com o mesmo sem a necessidade do script passar primeiro pelo servidor. 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 auxíliares(ajax e Jquery).

41 4.2. LINGUAGEM R-EDUC 29 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 através de recursos interativos seja fornecidos através de um navegador por meio da máquina virtual java instalada no computador. Neste projeto as applets java foram utilizadas para que se tornasse 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, analizamos 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ária 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 a cada fabricante de disitivos eletrônicos robóticos o desenvolvendo sua própria linguagem, ou uso de uma determinada linguagem comum associada a bibliotecas específicas. Este fato O que se torna algo extremamente difícil à assimilação de diversas linguagens para cada hardware especifico. Motivados pela diversidade de hardwares e linguagens é proposto um ambiente que se autoconfigure a qualquer hardware com suas linguagens distintas desenvolvemos neste trabalho um ambiente que contenha uma linguagem universal para qualquer tipo de hardware a linguagem escolhida para tal é a R-Educ [Pitta 2011]. A linguagem R-Educ foi desenvolvida 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]. É uma linguagem baseada em níveis, e na sua atual utilização, associada ao software de desenvolvimento local RoboEduc, possui 5 níveis de abstração diferentes para que o níveis cognitivo de cada usuário seja respeitado. Neste software sua sintaxe é determinada de forma gráfica e textual. Como as funcionalidades de criação de páginas, servidores web, comunicação com

42 30 CAPÍTULO 4. AMBIENTE PROPOSTO banco de dados são resolvidas com maior facilidade e portabilidade utilizando a linguagem Java e tecnologias associadas, foi necessário fazer uma re-implentação do compilador 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 linguagem R-Educ re-estrutrada é 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> ) então { <instrucao>* } [senão {<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> := * As palavras reservadas usadas pela linguagem utilizadas são apresentadas na tabela 4.1. 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.

43 4.3. CADASTRO DE LINGUAGEM 31 inicio tarefa senão enquanto repita teste nome fim se então 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 possuiam 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 de um nível 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 Fizemos então um estudo preliminar, verificando 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 e quais os mais comumente utilizados, como são declaradas e modificadas variáveis. Avaliamos também como se dá 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 se é feita a chamada de funções e como se é 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 desen-

44 32 CAPÍTULO 4. AMBIENTE PROPOSTO volvimento verificamos que o usuário responsável pelo cadastro da linguagem deve ser programador desta linguagem ou ser capaz de estudar a API para responder o formulário 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 são os listados 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, são listadas as linguagens já cadastradas (figura 4.4). 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 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. Na figura?? podemos observar a criação da linguagem CCS utilizada para programação de robôs H-Educ. Compilação e Envio Após ser realizada a criação da linguagem, apresentada no tópico anterior o usuário deve completar um formulário de cadastro. Na primeira parte do formulário são solicitas informações necessárias para a compilação e o envio/execução do programa pelo robô. O usuário é 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

45 4.3. CADASTRO DE LINGUAGEM 33 Figura 4.2: Listagem de Linguagens Cadastradas Figura 4.3: Cadastro de Linguagem extensão da linguagem cadastrada, fazer o upload do compilador e fornecer a chamada de sistema a ser executada no seu computador local para o envio ou execução do programa. Caso sejam necessários mais de um arquivo para realizar a compilação o usuário deverá inserir um por vez, deixando por último o arquivo executável do compilador. 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, depen-

46 34 CAPÍTULO 4. AMBIENTE PROPOSTO Figura 4.4: Formuário de Cadastro - Compilação e Envio dendo da linguagem a definição de portas e pinos, definição dos motores e sensores, inclusão de bibliotecas, códigos que devem ser incluídos para o bom funcionamento. 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 de 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.6 que o formulário fornece exemplos de escrita de funções principais nas linguagens C, Java 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. Em seguida o usuário deverá apresentar como são declaradas as funções sem retorno (void) da linguagem e como é realizada a chamada destas funções. Destacamos aqui que a

47 4.3. CADASTRO DE LINGUAGEM 35 Figura 4.5: Declaração da Função Principal linguagem R-Educ não trabalha com declarações com retorno, caso seja necessário algum tipo de retorno o usuário deverá manipular variáveis globais dentro delas. Figura 4.6: Declaração e Chamada de Funções sem Retorno

48 36 CAPÍTULO 4. AMBIENTE PROPOSTO 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: nome, número e booleano. O tipo de dado nome 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 tipo de dado numero manipula variáveis numéricas do tipo float, números que podem ser 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 três 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 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: Declaração e Modificação de Variáveis do Tipo nome Operadores São solicitados no formulário 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

49 4.3. CADASTRO DE LINGUAGEM 37 das linguagens, fornecemos exemplos dos operadores em três linguagens para ajudar no preenchimento. Figura 4.8: Operadores Lógicos Figura 4.9: Operadores Relacionais 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

50 38 CAPÍTULO 4. AMBIENTE PROPOSTO de cada um destes controladores na linguagem que está sendo cadastrada seguindo um determinado padrão que é apresentado nos exemplos. Na figura 4.10, é solicitada a escrita do controlador de fluxo se e apresentados os exemplos de escrita. Observe que é solicitado que as palavras condicao, comandos1 e comandos2 sejam escritas onde os comandos ou condições devem ser escritos. Figura 4.10: Controlador de Fluxo: Se Na figura 4.11, é solicitada a escrita do controlador de fluxo para e apresentados os exemplos de 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 dos limites superiores e inferiores deste laço de repetição, a palavra passo deverá ser escrita onde seja realizado a operação artimética sobre a variável de iteração e a palavra comandos onde os comandos devem ser posicionados. Figura 4.11: Controlador de Fluxo: Para Os demais controladores de fluxo seguem o mesmo padrão, devendo o usuário sempre

51 4.3. CADASTRO DE LINGUAGEM 39 ao escrever prestar atenção se estar 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 controlados de fluxo teste, possui palavras além das citadas nos controles de fluxo anteriores, porém seguindos os exemplos apresentados na tela de cadastro da figura 4.12, o formulário pode ser escrito sem maiores problemas. Figura 4.12: 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 sequência de comandos. Para que a função seja definida, deverá ser estabelecido um nome, este 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 a 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 da função. Observe na figura 4.13 que o exemplo 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. Deverá ser escrito var, seguido do número do parâmetro, e entre

52 40 CAPÍTULO 4. AMBIENTE PROPOSTO Figura 4.13: Chamadas de Função parênteses o tipo de dados que este parâmetro deve pertencer, devendo ser referenciado por int, string ou booleano. 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 determinado 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 Bem como chamadas a compiladores dessas linguagens para que eles nos forneça o código de máquina desejado. Nesta seção apresentaremos o tradutor desenvolvido para a linguagem R-Educ res-

53 4.4. TRADUÇÃO E COMPILAÇÃO 41 Figura 4.14: Universalização da Linguagem R-Educ ponsável por gerar o programa intermediário na linguagem cadastrada, 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(ou palavras) 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 encontro. Em seguida esse token é adcionado 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

54 42 CAPÍTULO 4. AMBIENTE PROPOSTO em uma lista, fazendo 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 auto 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. A classe possui uma função que realiza um acesso a lista de funções associadas a linguagem e adciona o seu nome único para chamada 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 nome; 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é associados a linguagem a strings. E possui funções que retornam um array 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 variáveis estão: "variavel", "valor1", "comandos", "var", "condicao", etc. Sabendo destas palavras podemos selecionar substrings no 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 desenvolvedor. Nas subseções a seguir apresentaremos algumas dessas funções que retornam um array de strings, as demais funções que não foram apresentadas seguem o mesmo padrão de execução.

55 4.4. TRADUÇÃO E COMPILAÇÃO 43 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 indo do início do código até a palavra comandos, que deve ter sido escrita no cadastro, e outra substring indo da paalvra comandos até o final do código. As substrings criadas são, então, adcionadas a um array de strings e fornecidas ao analisador sintático. 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 ; } Contralador 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 dígitado ao ser realizado o cadastro, o nome da variável utilizada para iterar, os limites inferiores e superiores e o passo de iteração 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 indo do início até onde a palavra comandos é encontrada e a segunda a partir da palavra comandos até o final do código, as adciona em uma lista e fornece-a ao analisador sintático.

56 44 CAPÍTULO 4. AMBIENTE PROPOSTO 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 comparação e uma para operadores relacionais. As funções, apresentadas no algoritmo 4, recebem os operadores escritos em linguagem R-Educ como parâmetros, verificam seu valor através de estruturas condicionais e retornam o valor relativo àquele símbolo cadastrado na linguagem 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, deve receber a lista de estruturas formada pelo analisador léxico. O primeiro passo de seu funcionamento será a criação de um novo arquivo com a extensão da linguagem cadastrada em uso. Para tal, é realizada uma verificação no banco de dados da extensão da linguagem informada no formulário. 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 todos as listas de strings com os códigos acessados do banco de dados possam ser obtidas e manipuladas. Com todos os dados é iniciada 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 analise sintática, seguida da escrita do rodapé, seguindo o mesmo método do cabeçalho. O processo de analise verifica cada item da lista de tokens, caso seja um enter 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

57 4.4. TRADUÇÃO E COMPILAÇÃO 45 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 " ; } 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 analise quanto a ocorrência de erros de sintaxe. Ao final da execução, caso seja encontrado algum erro, este é retornado ao usuário com a sua descrição e linha de ocorrência.

58 46 CAPÍTULO 4. AMBIENTE PROPOSTO Ao fim da análise sintática, caso não hajam 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 checados, 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 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 com o código de compilação no servidor. Com isso o servidor executará o compilador fornecido pelo usuário cadastrante que gerará o arquivo em código de máquina 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.15 representa o diagrama de classes do compilador integrado ao ambiente. Como podemos ver, o compilador é constituído por seis classes principais. A classe analisadorlexico é responsável por realizar a análise léxica do programa escrito em R-Educ. 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 arquvio, 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 fazer 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

59 4.5. COMUNICAÇÃO E ENVIO Comunicação e Envio Figura 4.15: Diagrama de Classes A proposta do ambiente de desenvolvimento auto 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, 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 - pode acessar o ambiente, que está conectado a internet via utilização de um servidor Glass- Fish, implementar e compilar seu programa e, caso tenha recursos capazes de executar ou estebelecer comunicação com o hardware fazê-lo. O envio de dados ao dispositivo robótico ou execução do código gerado é feito através

60 48 CAPÍTULO 4. AMBIENTE PROPOSTO 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 Java instalada assinar o certificado digital requerido. Ressaltamos que para comunicação entre o dispositivo 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 internet, sendo toda a capacidade computacional requerida apenas ao servidor. 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. Foi utilizado também, a fins de suprir facilidades didáticas um realçador de sintaxe da linguagem R-Educ, além de identificadores de chaves e parenteses e minimização de funções.

61 4.6. AMBIENTE DE DESENVOLVIMENTO 49 Figura 4.16: Ambiente de Desenvolvimento

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

Ambiente de Desenvolvimento Web Multiplataforma Configurá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

S-Educ: Um Simulador de Ambiente de Robótica Educacional em Plataforma Virtual

S-Educ: Um Simulador de Ambiente de Robótica Educacional em Plataforma Virtual 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 S-Educ: Um Simulador de Ambiente

Leia mais

ROBÓTICA. Projeto de Extensão Proext 2010. Aquiles Burlamaqui (ECT - UFRN) Carla Fernandes (DCA UFRN) Gabriel Garcia (ECT UFRN)

ROBÓTICA. Projeto de Extensão Proext 2010. Aquiles Burlamaqui (ECT - UFRN) Carla Fernandes (DCA UFRN) Gabriel Garcia (ECT UFRN) Projeto de Extensão Proext 2010 ROBÓTICA Aquiles Burlamaqui (ECT - UFRN) Carla Fernandes (DCA UFRN) Gabriel Garcia (ECT UFRN) Marié Beltrão (ECT UFRN) Robótica Pedagógica Primeiro Dia, 24/09: Introdução

Leia mais

1 - Processamento de dados

1 - Processamento de dados Conceitos básicos sobre organização de computadores 2 1 - Processamento de dados O que é processamento? O que é dado? Dado é informação? Processamento é a manipulação das informações coletadas (dados).

Leia mais

Programação I. Departamento de Engenharia Rural Centro de Ciências Agrárias

Programação I. Departamento de Engenharia Rural Centro de Ciências Agrárias Departamento de Engenharia Rural Centro de Ciências Agrárias Programação I Prof. Bruno Vilela Oliveira bruno@cca.ufes.br http://www.brunovilela.webnode.com.br Programas e Linguagens Para executar uma tarefa

Leia mais

Softwares de Sistemas e de Aplicação

Softwares de Sistemas e de Aplicação Fundamentos dos Sistemas de Informação Softwares de Sistemas e de Aplicação Profª. Esp. Milena Resende - milenaresende@fimes.edu.br Visão Geral de Software O que é um software? Qual a função do software?

Leia mais

Programação de Computadores

Programação de Computadores Programação de Computadores INTRODUÇÃO AOS ALGORITMOS E À PROGRAMAÇÃO DE COMPUTADORES PARTE 1 Renato Dourado Maia Instituto de Ciências Agrárias Universidade Federal de Minas Gerais Programas e Programação

Leia mais

Capítulo 1. Introdução. 1.1 Linguagens. OBJETIVOS DO CAPÍTULO Ao final deste capítulo você deverá ser capaz de:

Capítulo 1. Introdução. 1.1 Linguagens. OBJETIVOS DO CAPÍTULO Ao final deste capítulo você deverá ser capaz de: i Sumário 1 Introdução 1 1.1 Linguagens....................................... 1 1.2 O que é um Compilador?................................ 2 1.3 Processadores de Programas: Compiladores, Interpretadores

Leia mais

Evolução, Avaliação e Validação do Software RoboEduc

Evolução, Avaliação e Validação do Software RoboEduc 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 Evolução, Avaliação e Validação

Leia mais

Plano de Trabalho Docente 2014. Ensino Técnico

Plano de Trabalho Docente 2014. Ensino Técnico Plano de Trabalho Docente 2014 Ensino Técnico Etec Paulino Botelho Código: 091 Município: São Carlos Eixo Tecnológico: Informação e Comunicação Habilitação Profissional: TÉCNICO EM INFORMÁTICA Qualificação:

Leia mais

Programação Gráfica de Robôs na TV e no PC

Programação Gráfica de Robôs na TV e no PC Programação Gráfica de Robôs na TV e no PC Anelisa Diógenes Freitas², Carla da Costa Fernandes¹, Samuel Oliveira de Azevedo¹, Aquiles Medeiros Filgueira Burlamaqui², Renata Pitta Barros¹, Luiz Eduardo

Leia mais

Composição do MDK-Prog e MDK-Prog Plus

Composição do MDK-Prog e MDK-Prog Plus A Modelix Robotics está lançando no mercado brasileiro dois kits de Robótica aplicada, ideal para quem deseja iniciar o aprendizado de programação de robôs e eletrônica, usando o Software Modelix System

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

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

linguagem técnica de informática; Perceber os sinais de pontuação e identificar sua função no texto; Ler siglas e identificar seus significados;

linguagem técnica de informática; Perceber os sinais de pontuação e identificar sua função no texto; Ler siglas e identificar seus significados; PLANO DE CURSO Disciplina Competências Habilidades Bases Tecnológicas INGLÊS TÉCNICO Aumentar e consolidar o seu vocabulário ativo e passivo, através da fixação de novas palavras e expressões contidas

Leia mais

CURSO TECNOLÓGICO 2008/01 1º SEMESTRE. Programação e Estruturas de Dados Fundamentais

CURSO TECNOLÓGICO 2008/01 1º SEMESTRE. Programação e Estruturas de Dados Fundamentais 1º SEMESTRE Programação e Estruturas de Dados Fundamentais 8 Créditos Desenvolver a lógica de programação através da construção de algoritmos utilizando português estruturado Representar a solução de problemas

Leia mais

Introdução à Programação de Computadores

Introdução à Programação de Computadores 1. Objetivos Introdução à Programação de Computadores Nesta seção, vamos discutir os componentes básicos de um computador, tanto em relação a hardware como a software. Também veremos uma pequena introdução

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

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

Serviço de Controle e Programação para Dispositivos Remotos para Aplicações Interativas e Imersivas na TV Digital

Serviço de Controle e Programação para Dispositivos Remotos para Aplicações Interativas e Imersivas na TV Digital Serviço de Controle e Programação para Dispositivos Remotos para Aplicações Interativas e Imersivas na TV Digital Eduardo Agostinho¹, Victor Nogueira³, Samuel Azevedo³, Luiz Marcos Gonçalves³, Anelisa

Leia mais

EMENTAS DAS DISCIPLINAS

EMENTAS DAS DISCIPLINAS EMENTAS DAS DISCIPLINAS CURSO EDUCAÇÃO A DISTÂNCIA (EAD) SISTEMAS PARA INTERNET INTRODUÇÃO À COMPUTAÇÃO 68 A disciplina estuda a área da informática como um todo e os conceitos fundamentais, abrangendo

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

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

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

- Aula 1 - ARQUITETURA DE COMPUTADORES

- Aula 1 - ARQUITETURA DE COMPUTADORES - Aula 1 - ARQUITETURA DE COMPUTADORES Em arquitetura de computadores serão estudados aspectos da estrutura e do funcionamento dos computadores. O objetivo é apresentar de forma clara e abrangente a natureza

Leia mais

CURSO SUPERIOR DE TECNOLOGIA EM SISTEMAS PARA INTERNET MATRIZ CURRICULAR

CURSO SUPERIOR DE TECNOLOGIA EM SISTEMAS PARA INTERNET MATRIZ CURRICULAR CURSO SUPERIOR DE TECNOLOGIA EM SISTEMAS PARA INTERNET MATRIZ CURRICULAR 1º SEMESTRE P101 Desenvolvimento Web 80 CE05 CE06 P102 Língua Portuguesa 40 CG08 CG13 P103 Algoritmos e Lógica de Programação 80

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 3 1. ARQUITETURA DO COMPUTAÇÃO- SOFTWARE Vimos nos capítulos anteriores que durante muitas décadas vários projetos foram realizados para

Leia mais

TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROGRAMAÇÃO DE COMPUTADORES I Aula 01: Conceitos Iniciais / Sistema Operacional

TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROGRAMAÇÃO DE COMPUTADORES I Aula 01: Conceitos Iniciais / Sistema Operacional TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROGRAMAÇÃO DE COMPUTADORES I Aula 01: Conceitos Iniciais / Sistema Operacional O conteúdo deste documento tem por objetivo apresentar uma visão geral

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

LICENCIATURA EM COMPUTAÇÃO

LICENCIATURA EM COMPUTAÇÃO Coordenador: Duração: Carga Horária: LICENCIATURA EM COMPUTAÇÃO Victor Emanuel Corrêa Lima 6 semestres 2800 horas Situação Legal: Reconhecido pela Portaria MEC nº 503 de 15/02/2006 MATRIZ CURRICULAR Primeiro

Leia mais

Desenvolvendo e Integrando Serviços Multiplataforma de TV Digital Interativa

Desenvolvendo e Integrando Serviços Multiplataforma de TV Digital Interativa Desenvolvendo e Integrando Serviços Multiplataforma de TV Digital Interativa Agenda Introdução Aplicações interativas de TV Digital Desafios de layout e usabilidade Laboratório de usabilidade Desafios

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

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

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

A Mecatrônica com Arduino como ferramenta para a melhoria do processo de ensino e aprendizagem

A Mecatrônica com Arduino como ferramenta para a melhoria do processo de ensino e aprendizagem A Mecatrônica com Arduino como ferramenta para a melhoria do processo de ensino e aprendizagem Anderson Rodrigo Cassiano dos Santos, Antonio Carlos Falcão Petri, Domingos de Carvalho Villela Júnior, Leonardo

Leia mais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais Notas da Aula 15 - Fundamentos de Sistemas Operacionais 1. Software de Entrada e Saída: Visão Geral Uma das tarefas do Sistema Operacional é simplificar o acesso aos dispositivos de hardware pelos processos

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

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

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

Visão computacional no reconhecimento de formas e objetos

Visão computacional no reconhecimento de formas e objetos Visão computacional no reconhecimento de formas e objetos Paula Rayane Mota Costa Pereira*, Josemar Rodrigues de Souza**, Resumo * Bolsista de Iniciação Científica da Faculdade de Tecnologia SENAI CIMATEC,

Leia mais

CURSO DE SISTEMAS DE INFORMAÇÃO

CURSO DE SISTEMAS DE INFORMAÇÃO 1 CURSO DE SISTEMAS DE INFORMAÇÃO EMENTÁRIO DAS DISCIPLINAS 2011.1 BRUSQUE (SC) 2015 2 SUMÁRIO 1ª FASE... 4 01 ARQUITETURA DE COMPUTADORES... 4 02 FILOSOFIA... 4 03 FUNDAMENTOS MATEMÁTICOS PARA COMPUTAÇÃO...

Leia mais

Robótica educacional como instrumento de apoio a aprendizagem da Lógica Matemática

Robótica educacional como instrumento de apoio a aprendizagem da Lógica Matemática Robótica educacional como instrumento de apoio a aprendizagem da Lógica Matemática Rafael Eduardo Costa (UNICEP) Antonio Valerio Netto (UNICEP) Resumo O objetivo desta pesquisa é auxiliar o aprendizado

Leia mais

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 6 - ALGORÍTIMOS PARALELOS MPI - Parallel Virtual Machine e PVM - Parallel Virtual Machine 1. INTRODUÇÃO Inicialmente é necessário conceber alguns conceitos para entendimento dos algoritmos paralelos:

Leia mais

Como encontrar maneiras de associar um importante conteúdo didático a um software que ensine e divirta ao mesmo tempo? Estão os professores

Como encontrar maneiras de associar um importante conteúdo didático a um software que ensine e divirta ao mesmo tempo? Estão os professores Profª Levany Rogge Os softwares são considerados programas educacionais a partir do momento em que são projetados através de uma metodologia que os contextualizem no processo ensino-aprendizagem; Tajra

Leia mais

Unidade 4: Contextualização de Objetos de Aprendizagem

Unidade 4: Contextualização de Objetos de Aprendizagem Coordenação: Juliana Cristina Braga Autoria: Rita Ponchio Você aprendeu na unidade anterior a importância da adoção de uma metodologia para a construção de OA., e também uma descrição geral da metodologia

Leia mais

Suporte à Engenharia Reversa para o ambiente SEA

Suporte à Engenharia Reversa para o ambiente SEA Otavio Pereira Suporte à Engenharia Reversa para o ambiente SEA Orientador: Ricardo Pereira e Silva Universidade Federal de Santa Catarina - UFSC Departamento de Informática e Estatística - INE Florianópolis

Leia mais

UMA BREVE INTRODUÇÃO AO ESTUDO E IMPLEMENTAÇÃO DE COMPILADORES

UMA BREVE INTRODUÇÃO AO ESTUDO E IMPLEMENTAÇÃO DE COMPILADORES UMA BREVE INTRODUÇÃO AO ESTUDO E IMPLEMENTAÇÃO DE COMPILADORES 1 BRANCO; Guido Aparecido Junior, 2 TAMAE, Rodrigo Yoshio 1-Discente do Curso Sistemas de Informação FAEG/Garça 2-Docente do Curso Sistemas

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

Realidade Virtual Aplicada à Educação

Realidade Virtual Aplicada à Educação Realidade Virtual Aplicada à Educação Sandra Dutra Piovesan 1, Camila Balestrin 2, Adriana Soares Pereira 2, Antonio Rodrigo Delepiane de Vit 2, Joel da Silva 2, Roberto Franciscatto 2 1 Mestrado em Informática

Leia mais

Introdução APRESENTAÇÃO DA DISCIPLINA. joseana@computacao.ufcg.edu.br

Introdução APRESENTAÇÃO DA DISCIPLINA. joseana@computacao.ufcg.edu.br Universidade Federal de Campina Grande Centro de Engenharia Elétrica e Informática Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Introdução APRESENTAÇÃO DA DISCIPLINA

Leia mais

ADMINISTRAÇÃO DOS RECURSOS DE HARDWARE E SOFTWARE

ADMINISTRAÇÃO DOS RECURSOS DE HARDWARE E SOFTWARE ADMINISTRAÇÃO DOS RECURSOS DE HARDWARE E SOFTWARE 1 OBJETIVOS 1. Qual é a capacidade de processamento e armazenagem que sua organização precisa para administrar suas informações e transações empresariais?

Leia mais

Arquitetura de Computadores. Introdução aos Sistemas Operacionais

Arquitetura de Computadores. Introdução aos Sistemas Operacionais Arquitetura de Computadores Introdução aos Sistemas Operacionais O que é um Sistema Operacional? Programa que atua como um intermediário entre um usuário do computador ou um programa e o hardware. Os 4

Leia mais

Rodrigues, Laís ; Pinto, Simone;Coutinho, Liliana;Dahmouche,Mônica;Brito,Nathaly.

Rodrigues, Laís ; Pinto, Simone;Coutinho, Liliana;Dahmouche,Mônica;Brito,Nathaly. ROBÓTICA EDUCACIONAL: OFICINA DE ROBÓTICA PARA O PÚBICO INFANTIL NO MUSEU CIÊNCIA E VIDA Rodrigues, Laís ; Pinto, Simone;Coutinho, Liliana;Dahmouche,Mônica;Brito,Nathaly. 1 ROBÓTICA EDUCACIONAL: OFICINA

Leia mais

UNIVERSIDADE FEDERAL DE SANTA CATARINA CURSO DE GRADUAÇÃO EM SISTEMAS DE INFORMAÇÃO. Contribuições do MDA para o desenvolvimento de software

UNIVERSIDADE FEDERAL DE SANTA CATARINA CURSO DE GRADUAÇÃO EM SISTEMAS DE INFORMAÇÃO. Contribuições do MDA para o desenvolvimento de software UNIVERSIDADE FEDERAL DE SANTA CATARINA CURSO DE GRADUAÇÃO EM SISTEMAS DE INFORMAÇÃO Contribuições do MDA para o desenvolvimento de software Anna Carla Mohr Verner Helder Eugenio dos Santos Puia Florianópolis,

Leia mais

PLANIFICAÇÃO DA DISCIPLINA DE APLICAÇÕES INFORMÁTICAS B

PLANIFICAÇÃO DA DISCIPLINA DE APLICAÇÕES INFORMÁTICAS B PLANIFICAÇÕES SECUNDÁRIO PLANIFICAÇÃO DA DISCIPLINA DE APLICAÇÕES INFORMÁTICAS B 12º ANO DE ESCOLARIDADE CONTEÚDOS PROGRAMÁTICOS Introdução à Programação Introdução Linguagens naturais e formais Algoritmos

Leia mais

Programação de Computadores

Programação de Computadores Aula 01 Introdução Departamento de Computação Universidade Federal de Ouro Preto 2011.1 1 Processamento de dados 2 Organização de Computadores 3 Sistemas de Numeração Processamento de dados Processamento

Leia mais

EMENTAS DO CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

EMENTAS DO CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS EMENTAS DO CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS INTRODUÇÃO À COMPUTAÇÃO 60 h 1º Evolução histórica dos computadores. Aspectos de hardware: conceitos básicos de CPU, memórias,

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 À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

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

UFRPE Prof. Gustavo Callou gcallou@gmail.com

UFRPE Prof. Gustavo Callou gcallou@gmail.com UFRPE Prof. Gustavo Callou gcallou@gmail.com 1 Algoritmos Representação Exercícios Linguagens de Programação Compilador Interpretador Ambiente de Desenvolvimento Python Característica Para que serve Onde

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

Fundamentos de Arquitetura de Computadores. Prof. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras - PURO

Fundamentos de Arquitetura de Computadores. Prof. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras - PURO Fundamentos de Arquitetura de Computadores Prof. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras - PURO Hardware de um Sistema Computacional Hardware: são os componentes

Leia mais

ADMINISTRAÇÃO DOS RECURSOS DE HARDWARE E SOFTWARE

ADMINISTRAÇÃO DOS RECURSOS DE HARDWARE E SOFTWARE Capítulo 6 ADMINISTRAÇÃO DOS RECURSOS DE HARDWARE E SOFTWARE 6.1 2003 by Prentice Hall OBJETIVOS Qual é a capacidade de processamento e armazenagem que sua organização precisa para administrar suas informações

Leia mais

Plano de Trabalho Docente 2015. Ensino Técnico

Plano de Trabalho Docente 2015. Ensino Técnico Plano de Trabalho Docente 2015 Ensino Técnico ETEC MONSENHOR ANTONIO MAGLIANO Código: 088 Município: Garça Eixo Tecnológico: Informação e Comunicação Habilitação Profissional: Técnica de Nível Médio de

Leia mais

EMENTAS DAS DISCIPLINAS

EMENTAS DAS DISCIPLINAS EMENTAS DAS DISCIPLINAS CURSO SUPERIOR DE TECNOLOGIA EM SISTEMAS PARA INTERNET Introdução à Computação A disciplina apresenta a área da Computação como um todo, desde a história e a evolução dos computadores

Leia mais

FORMULÁRIO DE IDENTIFICAÇÃO 1. IDENTIFICAÇÃO 1.1 Título do Projeto: Uso do Arduíno como ferramenta de apoio ao processo de ensinoaprendizagem

FORMULÁRIO DE IDENTIFICAÇÃO 1. IDENTIFICAÇÃO 1.1 Título do Projeto: Uso do Arduíno como ferramenta de apoio ao processo de ensinoaprendizagem FORMULÁRIO DE IDENTIFICAÇÃO 1. IDENTIFICAÇÃO 1.1 Título do Projeto: Uso do Arduíno como ferramenta de apoio ao processo de ensinoaprendizagem 1.2 Coordenador: Renira Carla Soares 1.3 Câmpus envolvido(s):

Leia mais

SOFTWARE EDUCATIVO DE MATEMÁTICA: SHOW MATH

SOFTWARE EDUCATIVO DE MATEMÁTICA: SHOW MATH SOFTWARE EDUCATIVO DE MATEMÁTICA: SHOW MATH Anderson Clavico Moreira Profª. Ms. Deise Deolindo Silva short_acm@hotmail.com deisedeolindo@hotmail.com Curso de Tecnologia em Análise e Desenvolvimento de

Leia mais

UNIVERSIDADE FEDERAL DE PERNAMBUCO - PRÓ-REITORIA PARA ASSUNTOS ACADÊMICOS CURRÍCULO DO CURSO DE GRADUAÇÃO EM ENGENHARIA DA COMPUTAÇÃO PERFIL

UNIVERSIDADE FEDERAL DE PERNAMBUCO - PRÓ-REITORIA PARA ASSUNTOS ACADÊMICOS CURRÍCULO DO CURSO DE GRADUAÇÃO EM ENGENHARIA DA COMPUTAÇÃO PERFIL PERFIL 3001 - Válido para os alunos ingressos a partir de 2002.1 Disciplinas Obrigatórias Ciclo Geral Prát IF668 Introdução à Computação 1 2 2 45 MA530 Cálculo para Computação 5 0 5 75 MA531 Álgebra Vetorial

Leia mais

Programação de Computadores III

Programação de Computadores III Programação de Computadores III Introdução a Linguagens de Programação Professor Leandro Augusto Frata Fernandes laffernandes@ic.uff.br Material disponível em http://www.ic.uff.br/~laffernandes/teaching/2013.1/tcc-00.157

Leia mais

CoNaIISI 2014 2º Congresso Nacional de Engenharia Informática / Sistemas de Informação

CoNaIISI 2014 2º Congresso Nacional de Engenharia Informática / Sistemas de Informação CoNaIISI 2014 2º Congresso Nacional de Engenharia Informática / Sistemas de Informação San Luis, 13 y 14 de Novembro de 2014 CHAMADA PARA APRESENTAÇÃO DE TRABALHOS O CoNaIISI é organizado pela rede de

Leia mais

Módulo Lógica Programação com aplicações em Java. Projeto khouse Profissionalizante Profª Larissa Brandão

Módulo Lógica Programação com aplicações em Java. Projeto khouse Profissionalizante Profª Larissa Brandão Educação Módulo Lógica e Ética de Programação com aplicações em Java Projeto khouse Profissionalizante Profª Larissa Brandão n

Leia mais

EMENTAS DAS DISCIPLINAS

EMENTAS DAS DISCIPLINAS EMENTAS DAS DISCIPLINAS CTS DE REDES DE COMPUTADORES INTRODUÇÃO À COMPUTAÇÃO 68 A disciplina estuda a área da informática como um todo e os conceitos fundamentais, abrangendo desde a história e a evolução

Leia mais

PLANO DA SITUAÇÃO DE APRENDIZAGEM CURSOS TÉCNICOS. Walter André de Almeida Pires. Silveira

PLANO DA SITUAÇÃO DE APRENDIZAGEM CURSOS TÉCNICOS. Walter André de Almeida Pires. Silveira PLANO DA SITUAÇÃO DE APRENDIZAGEM CURSOS TÉCNICOS 1. Identificação Curso Técnico em Informática Unidade São José Coordenador da S.A Walter André de Almeida Pires Unidade(s) Curricular(es) Envolvida(s)

Leia mais

Novas Tecnologias Aplicadas à Educação História da Informática na Educação e na Sociedade. Prof. Hugo Souza

Novas Tecnologias Aplicadas à Educação História da Informática na Educação e na Sociedade. Prof. Hugo Souza Novas Tecnologias Aplicadas à Educação História da Informática na Educação e na Sociedade Prof. Hugo Souza Continuando nossas aulas, após vermos um breve conceito de T.I. e T.I.Cs abordarmos a partir de

Leia mais

5 Sistema Experimental

5 Sistema Experimental 5 Sistema Experimental Este capitulo apresenta o sistema experimental utilizado e é composto das seguintes seções: - 5.1 Robô ER1: Descreve o robô utilizado. É dividida nas seguintes subseções: - 5.1.1

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

Algoritmos e Programação I

Algoritmos e Programação I Algoritmos e Programação I Introdução a Computação Prof. Fernando Maia da Mota mota.fernandomaia@gmail.com CPCX/UFMS Fernando Maia da Mota 1 Computadores são dispositivos que só sabem fazer um tipo de

Leia mais

TABELA DE EQUIVALÊNCIA FECOMP Curso de Engenharia de Computação

TABELA DE EQUIVALÊNCIA FECOMP Curso de Engenharia de Computação TABELA DE EQUIVALÊNCIA FECOMP Curso de Engenharia de Computação Disciplina A Disciplina B Código Disciplina C/H Curso Disciplina C/H Código Curso Ano do Currículo 66303 ESTRUTURA DE DADOS I 68/0 ENG. DE

Leia mais

INTRODUÇÃO À PROGRAMAÇÃO COM ROBÔS LEGO

INTRODUÇÃO À PROGRAMAÇÃO COM ROBÔS LEGO RAYNER DE MELO PIRES ANA PAULA SUZUKI ANDRÉ REIS DE GEUS GABRIELA QUIRINO PEREIRA SALVIANO LUDGÉRIO FELIPE GOMES INTRODUÇÃO À PROGRAMAÇÃO COM ROBÔS LEGO JULHO DE 2010 SUMÁRIO 1 O que é o NXT?...4 2 Explicando

Leia mais

Curso de C. Introdução. Copyright @ 2005 by Arnaldo V. Moura e Daniel F. Ferber

Curso de C. Introdução. Copyright @ 2005 by Arnaldo V. Moura e Daniel F. Ferber Curso de C Introdução Introdução Roteiro: Recordando Algoritmos Linguagem de Programação O computador Instruções de Máquina Níveis de Abstração Compilação Algoritmos Recordando: Algoritmo: conjunto finito

Leia mais

CAPTURA SINCRONIZADA DE VÍDEO NO ENSINO DE CIÊNCIAS

CAPTURA SINCRONIZADA DE VÍDEO NO ENSINO DE CIÊNCIAS CAPTURA SINCRONIZADA DE VÍDEO NO ENSINO DE CIÊNCIAS INTRODUÇÃO A imagem e o áudio têm ocupado cada vez mais espaço na constituição e expressão do conhecimento humano, seja no âmbito da informação, do entretenimento

Leia mais

TECNICO EM INFORMATICA PLANO DE ESTAGIO INTEGRADO A PROPOSTA PEDAGOGICA DO CURSO

TECNICO EM INFORMATICA PLANO DE ESTAGIO INTEGRADO A PROPOSTA PEDAGOGICA DO CURSO (s15h PLANO DE ESTAGIO INTEGRADO A PROPOSTA PEDAGOGICA DO CURSO Curso: 500446 - TECNICO EM INFORMATICA Nivel: Tecnico Area Profissional: 0042 - COMERCIO-TEC Area de Atuacao: 0440 - BANCO DADOS/COMERCIO-TEC

Leia mais

ENIAC. Introdução aos Computadores e à Programação (Noções Básicas)

ENIAC. Introdução aos Computadores e à Programação (Noções Básicas) ENIAC Introdução aos Computadores e à ção (Noções Básicas) Introdução aos Computadores e à ção (Noções Básicas) 1 Introdução aos Computadores e à ção (Noções Básicas) 2 O transistor foi inventado em 1947

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

FAT32 ou NTFS, qual o melhor?

FAT32 ou NTFS, qual o melhor? FAT32 ou NTFS, qual o melhor? Entenda quais as principais diferenças entre eles e qual a melhor escolha O que é um sistema de arquivos? O conceito mais importante sobre este assunto, sem sombra de dúvidas,

Leia mais

EVOLUÇÃO DOS COMPUTADORES

EVOLUÇÃO DOS COMPUTADORES EVOLUÇÃO DOS COMPUTADORES 1951/1959 - Computadores de primeira geração Circuitos eletrônicos e válvulas Uso restrito Precisava ser reprogramado a cada tarefa Grande consumo de energia Problemas devido

Leia mais

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas Linguagem de Programação JAVA Professora Michelle Nery Nomeclaturas Conteúdo Programático Nomeclaturas JDK JRE JEE JSE JME JVM Toolkits Swing AWT/SWT JDBC EJB JNI JSP Conteúdo Programático Nomenclatures

Leia mais

Controladores Lógicos Programáveis (CLPs)

Controladores Lógicos Programáveis (CLPs) Controladores Lógicos Programáveis (CLPs) A UU L AL A Uma empresa fabrica clipes em três tamanhos: grande, médio e pequeno. Seus clientes consomem os produtos dos três tamanhos, mas a empresa nunca conseguiu

Leia mais

Table 1. Dados do trabalho

Table 1. Dados do trabalho Título: Desenvolvimento de geradores de aplicação configuráveis por linguagens de padrões Aluno: Edison Kicho Shimabukuro Junior Orientador: Prof. Dr. Paulo Cesar Masiero Co-Orientadora: Prof a. Dr. Rosana

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

Palavras-Chaves: Arquitetura, Modelagem Orientada a Objetos, UML.

Palavras-Chaves: Arquitetura, Modelagem Orientada a Objetos, UML. MODELAGEM ORIENTADA A OBJETOS APLICADA À ANÁLISE E AO PROJETO DE SISTEMA DE VENDAS ALTEMIR FERNANDES DE ARAÚJO Discente da AEMS Faculdades Integradas de Três Lagoas ANDRE LUIZ DA CUNHA DIAS Discente da

Leia mais

Módulo 6: Inteligência Artificial

Módulo 6: Inteligência Artificial Módulo 6: Inteligência Artificial Assuntos: 6.1. Aplicações da IA 6.2. Sistemas Especialistas 6.1. Aplicações da Inteligência Artificial As organizações estão ampliando significativamente suas tentativas

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

Lição 1 Introdução à programação de computadores

Lição 1 Introdução à programação de computadores Lição Introdução à programação de computadores Introdução à Programação I Objetivos Ao final desta lição, o estudante será capaz de: Identificar os diferentes componentes de um computador Conhecer linguagens

Leia mais

FERRAMENTAS PARA DESENVOLVIMENTO EM C#

FERRAMENTAS PARA DESENVOLVIMENTO EM C# FERRAMENTAS PARA DESENVOLVIMENTO EM C# Camila Sanches Navarro 1,2, Wyllian Fressatti 2 ¹Universidade paranaense (Unipar) Paranavaí PR Brasil sanchesnavarro@gmail.com wyllian@unipar.br Resumo. Este artigo

Leia mais

Sistemas de controle para processos de bateladas

Sistemas de controle para processos de bateladas Sistemas de controle para processos de bateladas Por Alan Liberalesso* Há algum tempo os processos de batelada deixaram de ser um mistério nas indústrias e no ambiente de automação. O cenário atual nos

Leia mais

Sistema de Automação Comercial de Pedidos

Sistema de Automação Comercial de Pedidos Termo de Abertura Sistema de Automação Comercial de Pedidos Cabana - Versão 1.0 Iteração 1.0- Release 1.0 Versão do Documento: 1.5 Histórico de Revisão Data Versão do Documento Descrição Autor 18/03/2011

Leia mais

TECNOLOGIA CONTRIBUINDO PARA INCLUSÃO? ESCOLA DE HACKERS

TECNOLOGIA CONTRIBUINDO PARA INCLUSÃO? ESCOLA DE HACKERS TECNOLOGIA CONTRIBUINDO PARA INCLUSÃO? ESCOLA DE HACKERS Ariane Mileidi Pazinato; Neuza Terezinha Oro; Eliamar Ceresoli Rizzon; Maria Elene Mallmann; Josiane Muller; Adriano Canabarro Teixeira; Jaqueline

Leia mais