PROPOSTA PARA O TRABALHO DE CONCLUSÃO DE CURSO COMPILADOR JAVA 5.0 PARA GERAR EXECUTÁVEL NATIVO PARA PLATAFORMA PALM OS
|
|
- Maria das Neves Bergler
- 5 Há anos
- Visualizações:
Transcrição
1 TURNO: NOTURNO VERSÃO: 1 N o UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CIÊNCIAS EXATAS E NATURAIS DEPARTAMENTO DE SISTEMAS E COMPUTAÇÃO CURSO DE CIÊNCIAS DA COMPUTAÇÃO BACHARELADO COORDENAÇÃO DE TRABALHO DE CONCLUSÃO DE CURSO PROPOSTA PARA O TRABALHO DE CONCLUSÃO DE CURSO TÍTULO: COMPILADOR JAVA 5.0 PARA GERAR EXECUTÁVEL NATIVO PARA PLATAFORMA PALM OS ÁREA: Compiladores Palavras-chave: Palm OS. Java. 1 IDENTIFICAÇÃO 1.1 ALUNO Nome: Júlio Vilmar Gesser Código/matrícula: Endereço residencial: Rua: Silvano Cândido da Silva Sênior n : 1993 Complemento: Bairro: Ponta Aguda CEP: Cidade: Blumenau UF: SC Telefone fixo: (47) Celular: (47) Endereço comercial: Empresa: Senior Sistemas Rua: Luiz Sachtieben n : 115 Bairro: Victor Konder CEP: Cidade: Blumenau UF: SC Telefone: (47) FURB: jgesser@inf.furb.br alternativo: jgesser@gmail.com 1.2 ORIENTADOR Nome: Joyce Martins FURB: joyce@furb.br alternativo:
2 2 DECLARAÇÕES 2.1 DECLARAÇÃO DO ALUNO Declaro que estou ciente do Regulamento do Trabalho de Conclusão de Curso de Ciências da Computação e que a proposta em anexo, a qual concordo, foi por mim rubricada em todas as páginas. Ainda me comprometo pela obtenção de quaisquer recursos necessários para o desenvolvimento do trabalho, caso esses recursos não sejam disponibilizados pela Universidade Regional de Blumenau (FURB). Assinatura: Local/data: 2.2 DECLARAÇÃO DO ORIENTADOR Declaro que estou ciente do Regulamento do Trabalho de Conclusão do Curso de Ciências da Computação e que a proposta em anexo, a qual concordo, foi por mim rubricada em todas as páginas. Ainda me comprometo a orientar o aluno da melhor forma possível de acordo com o plano de trabalho explícito nessa proposta. Assinatura: Local/data:
3 3 AVALIAÇÃO DA PROPOSTA 3.1 AVALIAÇÃO DO(A) ORIENTADOR(A) Acadêmico(a): Orientador(a): Júlio Vilmar Gesser Joyce Martins ASPECTOS TÉCNICOS ASPECTOS METODOLÓGICOS ASPECTOS AVALIADOS 1. INTRODUÇÃO 1.1. O tema de pesquisa está devidamente contextualizado/delimitado? 1.2. O problema está claramente formulado? 2. OBJETIVOS 2.1. O objetivo geral está claramente definido e é passível de ser alcançado? 2.2. São apresentados objetivos específicos (opcionais) coerentes com o objetivo geral? Caso não sejam apresentados objetivos específicos, deixe esse item em branco. 3. RELEVÂNCIA 3.1. A proposta apresenta um grau de relevância em computação que justifique o desenvolvimento do TCC? 4. METODOLOGIA 4.1. Foram relacionadas todas as etapas necessárias para o desenvolvimento do TCC? 4.2. Os métodos e recursos estão devidamente descritos e são compatíveis com a metodologia proposta? 4.3. A proposta apresenta um cronograma físico (período de realização das etapas) de maneira a permitir a execução do TCC no prazo disponível? 5. REVISÃO BIBLIOGRÁFICA 5.1. As informações apresentadas são suficientes e têm relação com o tema do TCC? 5.2. São apresentados trabalhos correlatos, bem como comentadas as principais características dos mesmos? 6. REQUISITOS DO SISTEMA A SER DESENVOLVIDO 6.1. Os requisitos funcionais e não funcionais do sistema a ser desenvolvido foram claramente descritos? 7. CONSIDERAÇÕES FINAIS 7.1. As considerações finais relacionam os assuntos apresentados na revisão bibliográfica com a realização do TCC? 8. REFERÊNCIAS BIBLIOGRÁFICAS 8.1. As referências bibliográficas obedecem às normas da ABNT? 8.2. As referências bibliográficas contemplam adequadamente os assuntos abordados na proposta (são usadas obras atualizadas e/ou as mais importantes da área)? 9. CITAÇÕES 9.1. As citações obedecem às normas da ABNT? 9.2. As informações retiradas de outros autores estão devidamente citadas? 10. AVALIAÇÃO GERAL (organização e apresentação gráfica, linguagem usada) O texto obedece ao formato estabelecido? A exposição do assunto é ordenada (as idéias estão bem encadeadas e a linguagem utilizada é clara)? atende atende parcialmente A proposta de TCC deverá ser revisada, isto é, necessita de complementação, se: qualquer um dos itens tiver resposta NÃO ATENDE; pelo menos 4 (quatro) itens dos ASPECTOS TÉCNICOS tiverem resposta ATENDE PARCIALMENTE; ou pelo menos 4 (quatro) itens dos ASPECTOS METODOLÓGICOS tiverem resposta ATENDE PARCIALMENTE. PARECER: ( ) APROVADA ( ) NECESSITA DE COMPLEMENTAÇÃO não atende Assinatura do(a) avaliador(a): Local/data:
4 CONSIDERAÇÕES DO(A) ORIENTADOR(A): Caso o(a) orientador(a) tenha assinalado em sua avaliação algum item como atende parcialmente, devem ser relatos os problemas/melhorias a serem efetuadas. Na segunda versão, caso as alterações sugeridas pelos avaliadores não sejam efetuadas, deve-se incluir uma justificativa. Assinatura do(a) avaliador(a): Local/data:
5 3.2 AVALIAÇÃO DO(A) COORDENADOR DE TCC Acadêmico(a): Avaliador(a): Júlio Vilmar Gesser José Roque Voltolini da Silva ASPECTOS TÉCNICOS ASPECTOS METODOLÓGICOS ASPECTOS AVALIADOS 1. INTRODUÇÃO 1.1. O tema de pesquisa está devidamente contextualizado/delimitado? 1.2. O problema está claramente formulado? 2. OBJETIVOS 2.1. O objetivo geral está claramente definido e é passível de ser alcançado? 2.2. São apresentados objetivos específicos (opcionais) coerentes com o objetivo geral? Caso não sejam apresentados objetivos específicos, deixe esse item em branco. 3. RELEVÂNCIA 3.1. A proposta apresenta um grau de relevância em computação que justifique o desenvolvimento do TCC? 4. METODOLOGIA 4.1. Foram relacionadas todas as etapas necessárias para o desenvolvimento do TCC? 4.2. Os métodos e recursos estão devidamente descritos e são compatíveis com a metodologia proposta? 4.3. A proposta apresenta um cronograma físico (período de realização das etapas) de maneira a permitir a execução do TCC no prazo disponível? 5. REVISÃO BIBLIOGRÁFICA 5.1. As informações apresentadas são suficientes e têm relação com o tema do TCC? 5.2. São apresentados trabalhos correlatos, bem como comentadas as principais características dos mesmos? 6. REQUISITOS DO SISTEMA A SER DESENVOLVIDO 6.1. Os requisitos funcionais e não funcionais do sistema a ser desenvolvido foram claramente descritos? 7. CONSIDERAÇÕES FINAIS 7.1. As considerações finais relacionam os assuntos apresentados na revisão bibliográfica com a realização do TCC? 8. REFERÊNCIAS BIBLIOGRÁFICAS 8.1. As referências bibliográficas obedecem às normas da ABNT? 8.2. As referências bibliográficas contemplam adequadamente os assuntos abordados na proposta (são usadas obras atualizadas e/ou as mais importantes da área)? 9. CITAÇÕES 9.1. As citações obedecem às normas da ABNT? 9.2. As informações retiradas de outros autores estão devidamente citadas? 10. AVALIAÇÃO GERAL (organização e apresentação gráfica, linguagem usada) O texto obedece ao formato estabelecido? A exposição do assunto é ordenada (as idéias estão bem encadeadas e a linguagem utilizada é clara)? atende atende parcialmente A proposta de TCC deverá ser revisada, isto é, necessita de complementação, se: qualquer um dos itens tiver resposta NÃO ATENDE; pelo menos 4 (quatro) itens dos ASPECTOS TÉCNICOS tiverem resposta ATENDE PARCIALMENTE; ou pelo menos 4 (quatro) itens dos ASPECTOS METODOLÓGICOS tiverem resposta ATENDE PARCIALMENTE. PARECER: ( ) APROVADA ( ) NECESSITA DE COMPLEMENTAÇÃO OBSERVAÇÕES: não atende Assinatura do(a) avaliador(a): Local/data:
6 3.3 AVALIAÇÃO DO(A) PROFESSOR(A) DA DISCIPLINA DE TCCI Acadêmico(a): Avaliador(a): Júlio Vilmar Gesser ASPECTOS TÉCNICOS ASPECTOS METODOLÓGICOS ASPECTOS AVALIADOS 1. INTRODUÇÃO 1.1. O tema de pesquisa está devidamente contextualizado/delimitado? 1.2. O problema está claramente formulado? 2. OBJETIVOS 2.1. O objetivo geral está claramente definido e é passível de ser alcançado? 2.2. São apresentados objetivos específicos (opcionais) coerentes com o objetivo geral? Caso não sejam apresentados objetivos específicos, deixe esse item em branco. 3. RELEVÂNCIA 3.1. A proposta apresenta um grau de relevância em computação que justifique o desenvolvimento do TCC? 4. METODOLOGIA 4.1. Foram relacionadas todas as etapas necessárias para o desenvolvimento do TCC? 4.2. Os métodos e recursos estão devidamente descritos e são compatíveis com a metodologia proposta? 4.3. A proposta apresenta um cronograma físico (período de realização das etapas) de maneira a permitir a execução do TCC no prazo disponível? 5. REVISÃO BIBLIOGRÁFICA 5.1. As informações apresentadas são suficientes e têm relação com o tema do TCC? 5.2. São apresentados trabalhos correlatos, bem como comentadas as principais características dos mesmos? 6. REQUISITOS DO SISTEMA A SER DESENVOLVIDO 6.1. Os requisitos funcionais e não funcionais do sistema a ser desenvolvido foram claramente descritos? 7. CONSIDERAÇÕES FINAIS 7.1. As considerações finais relacionam os assuntos apresentados na revisão bibliográfica com a realização do TCC? 8. REFERÊNCIAS BIBLIOGRÁFICAS 8.1. As referências bibliográficas obedecem às normas da ABNT? 8.2. As referências bibliográficas contemplam adequadamente os assuntos abordados na proposta (são usadas obras atualizadas e/ou as mais importantes da área)? 9. CITAÇÕES 9.1. As citações obedecem às normas da ABNT? 9.2. As informações retiradas de outros autores estão devidamente citadas? 10. AVALIAÇÃO GERAL (organização e apresentação gráfica, linguagem usada) O texto obedece ao formato estabelecido? A exposição do assunto é ordenada (as idéias estão bem encadeadas e a linguagem utilizada é clara)? PONTUALIDADE NA ENTREGA atende atende parcialmente não atende atraso de dias A proposta de TCC deverá ser revisada, isto é, necessita de complementação, se: qualquer um dos itens tiver resposta NÃO ATENDE; pelo menos 4 (quatro) itens dos ASPECTOS TÉCNICOS tiverem resposta ATENDE PARCIALMENTE; ou pelo menos 4 (quatro) itens dos ASPECTOS METODOLÓGICOS tiverem resposta ATENDE PARCIALMENTE. PARECER: ( ) APROVADA ( ) NECESSITA DE COMPLEMENTAÇÃO OBSERVAÇÕES: Assinatura do(a) avaliador(a): Local/data:
7 3.4 AVALIAÇÃO DO(A) PROFESSOR(A) ESPECIALISTA NA ÁREA Acadêmico(a): Avaliador(a): Júlio Vilmar Gesser ASPECTOS TÉCNICOS ASPECTOS METODOLÓGICOS ASPECTOS AVALIADOS 1. INTRODUÇÃO 1.1. O tema de pesquisa está devidamente contextualizado/delimitado? 1.2. O problema está claramente formulado? 2. OBJETIVOS 2.1. O objetivo geral está claramente definido e é passível de ser alcançado? 2.2. São apresentados objetivos específicos (opcionais) coerentes com o objetivo geral? Caso não sejam apresentados objetivos específicos, deixe esse item em branco. 3. RELEVÂNCIA 3.1. A proposta apresenta um grau de relevância em computação que justifique o desenvolvimento do TCC? 4. METODOLOGIA 4.1. Foram relacionadas todas as etapas necessárias para o desenvolvimento do TCC? 4.2. Os métodos e recursos estão devidamente descritos e são compatíveis com a metodologia proposta? 4.3. A proposta apresenta um cronograma físico (período de realização das etapas) de maneira a permitir a execução do TCC no prazo disponível? 5. REVISÃO BIBLIOGRÁFICA 5.1. As informações apresentadas são suficientes e têm relação com o tema do TCC? 5.2. São apresentados trabalhos correlatos, bem como comentadas as principais características dos mesmos? 6. REQUISITOS DO SISTEMA A SER DESENVOLVIDO 6.1. Os requisitos funcionais e não funcionais do sistema a ser desenvolvido foram claramente descritos? 7. CONSIDERAÇÕES FINAIS 7.1. As considerações finais relacionam os assuntos apresentados na revisão bibliográfica com a realização do TCC? 8. REFERÊNCIAS BIBLIOGRÁFICAS 8.1. As referências bibliográficas obedecem às normas da ABNT? 8.2. As referências bibliográficas contemplam adequadamente os assuntos abordados na proposta (são usadas obras atualizadas e/ou as mais importantes da área)? 9. CITAÇÕES 9.1. As citações obedecem às normas da ABNT? 9.2. As informações retiradas de outros autores estão devidamente citadas? 10. AVALIAÇÃO GERAL (organização e apresentação gráfica, linguagem usada) O texto obedece ao formato estabelecido? A exposição do assunto é ordenada (as idéias estão bem encadeadas e a linguagem utilizada é clara)? atende atende parcialmente A proposta de TCC deverá ser revisada, isto é, necessita de complementação, se: qualquer um dos itens tiver resposta NÃO ATENDE; pelo menos 4 (quatro) itens dos ASPECTOS TÉCNICOS tiverem resposta ATENDE PARCIALMENTE; ou pelo menos 4 (quatro) itens dos ASPECTOS METODOLÓGICOS tiverem resposta ATENDE PARCIALMENTE. PARECER: ( ) APROVADA ( ) NECESSITA DE COMPLEMENTAÇÃO OBSERVAÇÕES: não atende Assinatura do(a) avaliador(a): Local/data:
8 UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CIÊNCIAS EXATAS E NATURAIS CURSO DE CIÊNCIAS DA COMPUTAÇÃO BACHARELADO COMPILADOR JAVA 5.0 PARA GERAR EXECUTÁVEL NATIVO PARA PLATAFORMA PALM OS JÚLIO VILMAR GESSER BLUMENAU 2006
9 JÚLIO VILMAR GESSER COMPILADOR JAVA 5.0 PARA GERAR EXECUTÁVEL NATIVO PARA PLATAFORMA PALM OS Proposta de Trabalho de Conclusão de Curso submetida à Universidade Regional de Blumenau para a obtenção dos créditos na disciplina Trabalho de Conclusão de Curso I do curso de Ciências da Computação Bacharelado. Profa. Joyce Martins - Orientadora BLUMENAU 2006
10 2 1 INTRODUÇÃO Bachmann e Foster (2005, p. XXIII) afirmam que a conveniência, o poder e a facilidade de utilização de handhelds com Palm OS tornam os mesmos atrativos para uma grande variedade de usuários. Mais de 35 milhões de handhelds com Palm OS encontraram seu lugar nos bolsos da camisa dos doutores, dos advogados, do pessoal de vendas, dos profissionais de negócio e dos outros segmentos da sociedade não acostumados a utilizar este tipo de equipamento eletrônico. Com mais de desenvolvedores registrados e aplicativos de terceiros, o Palm OS também provou ser popular entre os desenvolvedores de software. As linguagens de programação (LPs) nativas do Palm OS são o C e C++. A PalmSource, empresa que mantém o Palm OS, disponibiliza um ambiente de programação compatível com estas linguagens. No entanto, apesar de C e C++ serem LPs de alto nível e C++ trabalhar com o paradigma de orientação a objetos, desenvolver aplicativos para Palm OS utilizando estas linguagens pode ser uma tarefa complicada. Segundo Sebesta (2000, p. 89), a linguagem C não possui verificação de tipos, tornando-a flexível e ao mesmo tempo insegura. Além disso, não possui o conceito de orientação a objetos, que, segundo Varejão (2004, p. 18), torna a linguagem mais rápida e confiável para o desenvolvimento de sistemas. Varejão (2004, p. 22) afirma ainda que C++ foi projetada para ser uma extensão de C com orientação a objetos, mas tornou-se uma LP muito complexa. Como alternativa, pode-se desenvolver aplicativos para Palm OS utilizando o Java 2 Micro Edition (J2ME) que é uma versão reduzida do Java 2 Standard Edition (J2SE), voltada para dispositivos móveis. Conforme Wilding-McBride (2003, p. 1), o J2ME é dividido em configurações, perfis e pacotes opcionais. Esta divisão permite que o J2ME possa ser suportado por diferentes tipos de dispositivos móveis, com diferentes características e limitações. Desta forma, a máquina virtual de cada aparelho pode implementar o que for possível para sua capacidade. Porém, a máquina virtual disponível para o Palm OS não implementa todas as configurações possíveis do J2ME, apesar de existirem poderosos palmtops com o sistema operacional (SO), alguns possuindo inclusive capacidade de processamento superior aos primeiros computadores que executaram J2SE. Neste sentido, é proposto o desenvolvimento de um compilador para Palm OS para uma linguagem robusta e ao mesmo tempo simples, com orientação a objetos, que aproveite os recursos nativos do SO, tenha boa performance e seja produtiva. Varejão (2004, p. 22)
11 3 afirma que Java é uma LP fortemente baseada em C++, mas é bem mais simples. É orientada a objetos, não utiliza explicitamente o conceito de ponteiros e tem se tornado amplamente utilizada por causa da sua confiabilidade e portabilidade. Desta maneira, utilizar a LP Java 5.0 para desenvolver programas nativos para Palm OS parece ser uma solução viável e adequada. 1.1 OBJETIVOS DO TRABALHO O objetivo deste trabalho é desenvolver um compilador para linguagem Java 5.0 que gere executável nativo para Palm OS. Os objetivos específicos são: a) fazer as análises léxica, sintática e semântica dos programas Java, mostrando erros de compilação, inclusive referentes à utilização de recursos e bibliotecas não suportadas; b) traduzir os programas Java para código intermediário em C++ e, a partir dele, gerar código executável; c) implementar em C++ algumas bibliotecas que fazem parte da Application Programming Interface (API) do Java, incluindo bibliotecas de componentes visuais (java.util, java.awt) para serem utilizadas nos programas Java. 1.2 RELEVÂNCIA DO TRABALHO Como foi dito anteriormente, o J2ME não é totalmente adequado para o desenvolvimento de aplicativos para o Palm OS, uma vez que possui muitos recursos não explorados pela máquina virtual disponível. Além disso, com C++ é possível tirar proveito dos recursos da plataforma, porém é uma linguagem complexa (VAREJÃO, 2004, p. 22). Para escrever um simples aplicativo, o desenvolvedor precisa se preocupar com vários controles, como loops para tratamento de eventos e mensagens e inicialização de formulários. Estes fatos justificam o desenvolvimento de um compilador Java para Palm OS, que possa extrair tanto os benefícios da linguagem quanto os da plataforma. Ainda, desenvolver um compilador para linguagem Java 5.0 pode ser considerada uma tarefa complexa, mesmo
12 4 admitindo a existência da especificação da linguagem e de bons geradores de analisadores léxicos e sintáticos. Observa-se também que apesar do Java ser uma linguagem mais simples que C++, trabalha fortemente com o conceito orientação a objetos e interfaces, além de possuir inúmeros outros recursos como coletor de lixo, tratamento de exceções e uma grande quantidade de bibliotecas. Outro ponto forte deste trabalho será a geração de código intermediário C++, que poderá ser facilmente portado para outra arquitetura. Considerando que a maioria dos computadores possui compilador C++ para sua arquitetura, será possível com pequenas implementações, a compilação de programas Java para execução nativa em outros computadores. Por fim, espera-se que a utilização do Java torne prático e produtivo o desenvolvimento de aplicativos para Palm OS, tirando do desenvolvedor uma série de formalismos necessários para desenvolver um programa nativo em C ou C++ e oferecendo a segurança e a confiabilidade do Java. 1.3 METODOLOGIA O trabalho será desenvolvido observando as seguintes etapas: a) levantamento bibliográfico: realizar levantamento de bibliografia sobre compiladores para linguagens orientadas a objetos, tradução e geração de código, programação para Palm OS; b) análise da linguagem Java: analisar a especificação da linguagem Java 5.0 e definir o que deve ser suportado pelo compilador, delimitando o escopo da implementação; c) levantamento dos requisitos: detalhar e reavaliar os requisitos que o compilador deve atender, observando as necessidades levantadas durante a revisão bibliográfica e análise da linguagem; d) especificação do compilador: especificar o compilador com análise orientada a objetos, utilizando a Unified Modeling Language (UML). Será utilizada a ferramenta Enterprise Architect para o desenvolvimento dos diagramas de caso de uso, de classes e de seqüência; e) análise das linguagens Java e C++: identificar semelhanças nas construções destas duas linguagens e criar o mapeamento para conversão de construções de uma
13 5 linguagem para outra; f) implementação do compilador: desenvolver o compilador em Java, utilizando o ambiente de desenvolvimento Eclipse e a ferramenta Java Compiler Compiler (JavaCC) para gerar os analisadores léxico e sintático. Implementar a análise semântica e as estruturas necessárias para geração de código. Os analisadores serão implementados a partir da especificação da linguagem Java 5.0 analisada na etapa (b); g) implementação do coletor de lixo: implementar um coletor de lixo em C++, utilizando o ambiente de desenvolvimento Palm OS Developer Suite, para simular o coletor de lixo da máquina virtual Java; h) implementação do gerador de código: desenvolver o gerador de código em Java, utilizando o ambiente de desenvolvimento Eclipse, para gerar código intermediário C++ a partir do mapeamento Java C++ elaborado na etapa (e). Os fontes C++ gerados deverão ser compilados para gerar um executável compatível com o Palm OS (arquivo com extensão.prc); i) implementação de bibliotecas Java em C++: implementar em C++, utilizando o ambiente de programação Palm OS Developer Suite, algumas bibliotecas da API do Java. Estas bibliotecas poderão ser utilizadas nos programas e serão chamadas no código gerado pelo compilador; j) testes: implementar testes automatizados utilizando a ferramenta JUnit para garantir a qualidade do compilador. Criar programas de teste utilizando todas as funcionalidades implementadas e executá-los no simulador Palm OS Simulator e em um palmtop, verificando se o resultado esperado foi alcançado. As etapas serão realizadas nos períodos relacionados no Quadro fev. mar. abr. maio jun. etapas / quinzenas levantamento bibliográfico análise da linguagem Java levantamento dos requisitos especificação do compilador análise das linguagens Java e C++ implementação do compilador implementação do coletor de lixo implementação do gerador de código implementação de bibliotecas Java em C++ testes Quadro 1 - Cronograma
14 6 2 REVISÃO BIBLIOGRÁFICA Neste capítulo são apresentados alguns aspectos teóricos relacionados ao trabalho, dentre eles: modelos das linguagens de programação, módulos de um compilador, compiladores para linguagens orientadas a objetos, a linguagem de programação Java e a plataforma Palm OS. Na última seção são descritos alguns trabalhos correlatos. 2.1 LINGUAGENS DE PROGRAMAÇÃO Varejão (2004, p ) explica que as linguagens podem ser classificadas em diferentes grupos de características, denominados paradigmas. Os paradigmas dividem-se em duas categorias principais: a) imperativo: engloba as linguagens fundamentadas na idéia de computação como um processo que realiza mudanças de estados. Nesse sentido, um estado representa uma configuração qualquer da memória do computador. Assim, os programas especificam como o processamento deve ser feito no computador. Os conceitos fundamentais são de variável, valor e atribuição. É subdividido em três outros paradigmas: - estruturado: baseia-se na idéia de desenvolvimento de programas por refinamentos sucessivos. Organiza o fluxo de controle de execução dos programas desestimulando o uso de comandos de desvio incondicional e incentivando a divisão dos programas em subprogramas e em blocos aninhados de comandos. Pascal e C são exemplos de linguagens que adotam esse paradigma, - orientado a objetos: oferece conceitos com o objetivo de tornar mais rápido e confiável o desenvolvimento de aplicações. Baseia-se em classes, que são abstrações que definem uma estrutura de dados e um conjunto de operações que podem ser realizadas sobre elas, permitindo a implementação natural de modularização em unidades que são fáceis de integrar e estender. Outros conceitos importantes são herança e polimorfismo. Smalltalk, C++ e Java são linguagens que suportam esse paradigma,
15 7 - concorrente: fundamenta-se na execução de vários processos simultaneamente que concorrem por recursos. Os processos podem estar em um único computador ou distribuídos em vários, compartilhando dados ou dispositivos. Ada e Java são as linguagens mais conhecidas que suportam esse paradigma; b) declarativo: engloba as linguagens que descrevem de forma abstrata a tarefa a ser resolvida, sem a existência de atribuições de valores a variáveis, uma vez que as variáveis são incógnitas e não unidades de memória. É dividido em dois outros paradigmas: - funcional: tem o objetivo de definir uma função que retorne um valor como resposta do problema. Um programa funcional é uma função que chama outras funções, podendo fazer chamadas recursivas e passar funções como parâmetro. Lisp e Haskell são exemplos de linguagens funcionais, - lógico: baseia-se em cálculo de predicados, definido por uma relação entre constantes ou variáveis. Um programa lógico é composto por cláusulas que definem predicados e relações factuais. Utiliza um mecanismo de inferência para deduzir novos fatos para verificar a veracidade das questões. Prolog é o exemplo mais conhecido de linguagem lógica. 2.2 COMPILADORES Um compilador é um programa que lê um programa escrito numa linguagem a linguagem fonte e o traduz num programa equivalente numa outra linguagem a linguagem alvo. Como importante parte desse processo de tradução, o compilador relata a seu usuário a presença de erros no programa fonte. (AHO; SETHI; ULMAN, 1995, p. 1, grifos dos autores). Louden (2004, p. 6-13) diz que o processo de compilação pode ser dividido nas seguintes fases: a) sistema de varredura: nesta fase o programa fonte é lido e ocorre a análise léxica, onde seqüências de caracteres são organizadas como unidades significativas denominadas tokens, que são como palavras em uma linguagem natural; b) analisador sintático: recebe do sistema de varredura o código fonte em forma de tokens e efetua a análise sintática, que determina a estrutura do programa. O resultado desta fase é uma estrutura denominada árvore sintática;
16 8 c) analisador semântico: verifica o significado das construções do programa que determinam o seu comportamento durante sua execução. O analisador semântico trata da semântica estática, considerando os atributos que podem ser determinados em tempo de compilação. A semântica dinâmica é resolvida em tempo de execução e não pode ser identificada pelo compilador já que este não executa o programa. O resultado desta fase é uma árvore sintática anotada com informações adicionais, tais como tipos retornados pelas expressões; d) otimizador de código-fonte: aplica algumas melhorias e otimizações na árvore anotada e no código intermediário gerado a partir dela; e) gerador de código: gera, a partir do código intermediário, o código para a máquina-alvo; f) otimizador de código-alvo: nessa fase, o compilador faz algumas otimizações no código-alvo, visando melhorar o desempenho. Otimizações possíveis incluem remoção de instruções redundantes e alteração do modo de endereçamento. 2.3 COMPILADORES DE LINGUAGENS ORIENTADAS A OBJETOS O processo de compilação de linguagens orientadas a objetos começa a se diferenciar da compilação de linguagens estruturadas na análise semântica, onde o significado das estruturas é analisado. As estruturas empregadas nesse tipo de linguagem são as classes. As demais fases do processo de compilação são influenciadas pela definição da classe. A herança, por exemplo, possui, dependendo do tipo (simples ou múltipla), diferentes técnicas para verificação de semântica, geração de código e otimização de código. Outra característica observada nas linguagens orientadas a objeto é o polimorfismo, onde um objeto pode assumir várias formas, ou seja, uma variável de uma classe em um programa pode referenciar um objeto de qualquer classe do tipo declarado ou de uma classe derivada. Isso implica que as chamadas de métodos a partir desta variável devem ser resolvidas em tempo de execução, porque durante a compilação, não há como conhecer o tipo do objeto que a variável está referenciando.
17 9 2.4 LINGUAGEM DE PROGRAMAÇÃO JAVA Java teve seu início em 1991, num projeto interno financiado pela Sun Mycrosystems, que apostava no futuro do mercado de dispositivos eletrônicos inteligentes. O projeto resultou no desenvolvimento de uma linguagem baseada em C e C++. Mas o mercado desses dispositivos inteligentes não se desenvolveu como esperado e a linguagem Java acabou sendo anunciada oficialmente pela Sun apenas em 1995, em uma importante conferência (DEITEL; DEITEL, 2003, p. 59). Segundo Sebesta (2000, p. 105), Java foi baseada no C++, mas foi projetada para ser menor, mais simples e mais confiável. Possui tipos primitivos e classes. Não possui ponteiros. Desta forma, as instâncias de objetos são alcançadas através de referências, que não indicam localizações de memória, mas apontam diretamente para os objetos, eliminando a prática de fazer operações aritméticas sobre referências, que está propensa a erros. Java implementa fortemente o conceito de orientação a objetos, impedindo a criação de subprogramas independentes. Todos os subprogramas Java são métodos definidos em classes. Diferente do C++, que permite herança múltipla de classes, Java permite apenas herança simples. Alguns acham que herança múltipla acarreta mais complexidade e confusão do que benefícios. Mas alguns desses benefícios podem ser conseguidos em Java através da utilização de interfaces. A plataforma possui suporte nativo a multi-threading, onde o controle de concorrência foi facilitado com o modificador syncronize, que pode ser utilizado em métodos ou blocos. A presença deste modificador garante o acesso único na execução de blocos mutuamente exclusivos. Java possui ainda uma forma implícita para desalocação de objetos. Chamado de coletor de lixo, ele fica monitorando os objetos que não são mais utilizados e libera a memória para eles alocada. Isto libera o programador de destruir os objetos criados. A versão 5.0 do Java, que possui este nome em homenagem aos cinco anos da segunda geração da plataforma, trouxe alguns recursos interessantes à plataforma e à linguagem. As mudanças da última versão incluem: tipos genéricos, metadados, autoboxing, melhorias no loop for, tipos enumerados, import estático, entrada e saída formatada no estilo C, utilitários para concorrência e simplificação na geração de interfaces para invocação de métodos remotos (AUSTIN, 2004).
18 PLATAFORMA PALM OS Foster (2002, p. 3-4) descreve que mesmo com as características atualmente disponíveis nos dispositivos Palm OS, tais dispositivos não foram planejados para serem versões portáteis de computadores desktop. Foram projetados para serem uma extensão a um sistema desktop, fornecendo uma janela para os dados do computador e permitindo que os dados sejam vistos em qualquer lugar. Embora seja certamente possível executar muitas tarefas complexas com os handhelds Palm OS, seu formato e funções são otimizados para visualizar dados existentes e adicionar apenas pequenas quantidades de novos dados. Para apresentar os dados de um usuário quando este está longe do computador, o dispositivo handheld deve atender a determinados critérios, como: a) tamanho reduzido: ser pequeno o suficiente para ser carregado para qualquer lugar. A maioria dos dispositivos atualmente disponíveis para plataforma Palm OS cabe perfeitamente em um bolso de camisa; b) interface ergonômica: usar o dispositivo deve ser fácil e rápido o suficiente para não interromper o que o usuário esteja fazendo. Informações importantes devem estar disponíveis instantaneamente e com o mínimo de interação do usuário; c) integração com computador: sincronizar seus dados fácil e confiavelmente com o computador desktop. Durante o processo de sincronização, os dados do computador devem ser copiados para o handheld, e os dados do handheld devem ser copiados para um backup no computador. Além do dispositivo, os aplicativos também devem ser desenvolvidos seguindo alguns critérios. O principal deles é ergonomia, pois como a tela do dispositivo possui tamanho reduzido, os programas devem ser escritos de modo a otimizar os dados apresentados. Para desenvolver aplicativos, o Palm OS possui uma API com recursos para: criar interfaces gráficas, tratar eventos de interação com o usuário, manipular arquivos e acessar recursos do dispositivo como infravermelho e bluetooth. Ainda, a PalmSource disponibiliza juntamente com o ambiente de programação Palm OS Developer Suite um simulador do SO, o Palm OS Simulator, que auxilia os desenvolvedores permitindo a depuração dos aplicativos em um ambiente igual ao de um handheld (PALMSOURCE, 2006).
19 TRABALHOS CORRELATOS Hildebrandt (2003) apresenta um estudo sobre o processo de desenvolvimento de aplicações para a plataforma Palm OS, utilizando a linguagem C++. Para validar seu estudo é implementado um editor gráfico 2D para desenhar e apagar polígonos não-convexos, utilizando a tela do Palm como principal elemento de interface gráfica interativa com o usuário. O estudo também apresenta as principais características da plataforma e as ferramentas de desenvolvimento disponíveis para Linux. Leyendecker (2005) especificou uma linguagem de programação orientada a objetos para a plataforma Microsoft.NET e desenvolveu em C# um compilador para esta linguagem. O compilador gera código Microsoft Intermediate Language (MSIL) que é executado a partir da Common Language Runtime (CLR). A linguagem desenvolvida possui sintaxe muito semelhante à linguagem C#, mas com alguns facilitadores para trabalhar com regras de negócio. Hewgill (1997) desenvolveu o Jump, um programa que permite que desenvolvedores escrevam código Java para o PalmPilot. Compatível com a especificação 1.1 do Java, ele lê o bytecode de um aplicativo, gera e compila Assembly para o processador do palmtop, tendo como saída um executável nativo. Java2cpp (PROGRAMICS.COM, 2003) é um utilitário gratuito que traduz programas Java para C++. Tem como entrada arquivos.java e como saída arquivos.h e.cpp que podem ser compilados para Windows ou para Linux. Compatível com a especificação 1.4 do Java, possui uma biblioteca implementada em C++, chamada DObject Library (DOL), que transcreve algumas funcionalidades do Java, como multi-threads, sockets e suporte a banco de dados.
20 12 3 REQUISITOS DO SISTEMA A SER DESENVOLVIDO O compilador deverá: a) receber como entrada arquivos fonte Java e reportar erros léxicos, sintáticos e semânticos (requisito funcional - RF); b) gerar código C++ como código intermediário do processo de compilação (RF); c) gerar programa executável para Palm OS (RF); d) suportar bibliotecas básicas do Java, incluindo bibliotecas para criação de interfaces gráficas (java.util, java.awt) (requisito não funcional - RNF); e) gerar código para simular o mecanismo de coleta de lixo do Java para liberar memória não utilizada pelo programa (RF); f) possuir biblioteca Java para utilização de recursos específicos do Palm OS (RNF); g) ser implementado em Java utilizando o ambiente de programação Eclipse (RNF).
21 13 4 CONSIDERAÇÕES FINAIS Verificou-se que o desenvolvimento de aplicativos para plataforma Palm OS está avançando junto com o número de dispositivos, usuários e, conseqüentemente, desenvolvedores. Isto demanda ferramentas que tornem o desenvolvimento mais prático e produtivo. Por este motivo, está sendo proposta a implementação de um compilador Java, objetivando facilitar o desenvolvimento de tais aplicativos. Para o desenvolvimento do compilador será necessário um estudo sobre compiladores, mais especificamente sobre compiladores para linguagens orientadas a objeto. Também será estudado o desenvolvimento de aplicativos para Palm OS, bem como a API do SO e a linguagem C++, que será a linguagem alvo do compilador. A especificação da linguagem Java 5.0 deve ser amplamente utilizada no processo de especificação do compilador. Quanto aos trabalhos correlatos, tem-se que o trabalho descrito em Leyendecker (2005) é muito semelhante a este no que se refere à especificação e à implementação do compilador. Como este trabalho, aquele é um compilador para uma linguagem orientada a objeto, que tem como saída código intermediário ao invés de código em linguagem de máquina. A principal diferença é que neste trabalho não será especificada uma linguagem, mas sim utilizada a especificação da linguagem Java, que é uma LP amplamente utilizada e de conhecimento de muitos desenvolvedores. Estudando o trabalho de Hildebrandt (2003) é possível verificar os passos necessários para construir um aplicativo para plataforma Palm OS. A implementação do trabalho aqui proposto buscará minimizar estes passos e tornar a implementação mais simples. Pretende-se implementar o mesmo aplicativo descrito naquele trabalho utilizando o compilador proposto. Espera-se que o código resultante contenha menos linhas de código, porém funcionalidade equivalente. Hewgill (1997) desenvolveu um trabalho semelhante ao proposto, o Jump. Apesar do propósito dos trabalhos serem o mesmo, o Jump diferencia-se deste no que se refere aos arquivos de entrada e saída. Como entrada recebe arquivos Java compilados (arquivos.class) e como saída tem arquivos Assembly, que são montados e geram executáveis. Jump não tem sido atualizado desde 1997 e é compatível apenas com a especificação 1.1 do Java, tornandoo pouco útil e pouco compatível com a atual versão do Palm OS. Por fim, o java2cpp é uma ferramenta que possui várias características presentes no trabalho proposto. Porém diferencia-se por não ser um compilador, mas sim um conversor.
22 14 Ele não trata erros semânticos nos arquivos de entrada e os converte em arquivos fonte C++ compatíveis com Windows ou Linux. Já o compilador proposto deve apresentar tanto os erros semânticos quanto os erros léxicos e sintáticos nos fontes Java.
23 15 REFERÊNCIAS BIBLIOGRÁFICAS AHO, A. V.; SETHI, R.; ULLMAN, J. D. Compiladores: princípios, técnicas e ferramentas. Tradução Daniel de Ariosto Pinto. Rio de Janeiro: LTC, AUSTIN, C. J2SE 5.0 in a Nutshell. [S.l.], Disponível em: < Acesso em: 10 set BACHMANN, G.; FOSTER, L. R. Professional Palm OS programming. Indianapolis: Wiley Publishing, DEITEL, H. M.; DEITEL, P. J. Java: como programar. 4. ed. Tradução Carlos Arthur Lang Lisbôa. Porto Alegre: Bookman, FOSTER, L. R. Palm OS programming bible. 2nd. ed. Indianapolis: Wiley Publishing, HEWGILL, G. Jump. [S.l.], Disponível em: < Acesso em: 28 ago HILDEBRANDT, E. Estudo do processo de desenvolvimento em palm usando C++ na plataforma Linux f. Trabalho de Conclusão de Curso (Bacharelado em Ciências da Computação) - Centro de Ciências Exatas e Naturais, Universidade Regional de Blumenau, Blumenau. LEYENDECKER, G. Z. Especificação e compilação de uma linguagem de programação orientada a objetos para a plataforma Microsoft.NET f. Trabalho de Conclusão de Curso (Bacharelado em Ciências da Computação) - Centro de Ciências Exatas e Naturais, Universidade Regional de Blumenau, Blumenau. LOUDEN, K. Compiladores: princípios e práticas. Tradução Flávio Soares Corrêa da Silva. São Paulo: Pioneira Thomson Learning, PALMSOURCE. Core tools. [S.l.], Disponível em: < Acesso em: 19 set PROGRAMICS.COM. Java to C++ source translator. [S.l.], Disponível em: < Acesso em: 28 ago SEBESTA, R. W. Conceitos de linguagens de programação. 4. ed. Tradução José Carlos Barbosa dos Santos. Porto Alegre: Bookman, VAREJÃO, F. M. Linguagens de programação: conceitos e técnicas. Rio de Janeiro: Elsevier, 2004.
24 WILDING-MCBRIDE, D. Java development on PDAs: Building applications for PocketPC and Palm devices. Boston: Addison-Wesley,
Introdução aos computadores, à Internet e à World Wide Web. Prof. Marcelo Roberto Zorzan
Introdução aos computadores, à Internet e à World Wide Web Prof. Marcelo Roberto Zorzan História do Java Origem Linguagem desenvolvida pela Sun Microsystems Sintaxe similar ao C++ Inicialmente chamada
Leia maisIntrodução aos computadores, à Internet e à World Wide Web. Prof. Marcelo Roberto Zorzan
Introdução aos computadores, à Internet e à World Wide Web Prof. Marcelo Roberto Zorzan História do Java Origem Linguagem desenvolvida pela Sun Microsystems Sintaxe similar ao C++ Inicialmente chamada
Leia maisMétodos de implementação de linguagens. Kellen Pinagé
Métodos de implementação de linguagens Kellen Pinagé Sumário Métodos de implementação de linguagens Compilação Interpretação pura Híbrido Métodos de implementação de linguagens Principais componentes de
Leia maisCP Compiladores I Prof. Msc.. Carlos de Salles
CP 5017.9 Prof. Msc.. Carlos de Salles 1 - EMENTA O Processo de Compilação. Deteção e Recuperação de Erros. Introdução à geração de Código Intermediário. Geração de Código de Máquina. Otimização. Uma visão
Leia maisUniversidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang
Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES Introdução geovanegriesang@unisc.br Processadores de linguagem Linguagens de programação são notações para se descrever
Leia maisProgramação Estruturada e OO Aula 1.2 Introdução a Paradigmas de Programação. Prof. Bruno Moreno
Programação Estruturada e OO Aula 1.2 Introdução a Paradigmas de Programação Prof. Bruno Moreno bruno.moreno@ifrn.edu.br Motivação Por que existe mais de uma LP? Propósitos diferentes; Avanços tecnológicos;
Leia maisPROPOSTA PARA O TRABALHO DE CONCLUSÃO DE CURSO (TCC)
CURSO: SIS VERSÃO: 03 N o 15 UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CIÊNCIAS EXATAS E NATURAIS DEPARTAMENTO DE SISTEMAS E COMPUTAÇÃO CURSO DE SISTEMAS DE INFORMAÇÃO BACHARELADO COORDENAÇÃO DE TRABALHO
Leia maisIntrodução à Programação Aula 03. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação
Aula 03 Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação Linguagens de Programação A primeira linguagem de programação foi criada por Ada Lovelace. Amiga
Leia maisAULA 1 INTRODUÇÃO AO JAVA
AULA 1 INTRODUÇÃO AO JAVA Ao término dessa aula você terá aprendido: História e características do Java Ambientes e plataformas Java O Java é a base para praticamente todos os tipos de aplicações em rede
Leia maisIntrodução à Programação
Introdução à Programação Linguagens de Programação: sintaxe e semântica de linguagens de programação e conceitos de linguagens interpretadas e compiladas Engenharia da Computação Professor: Críston Pereira
Leia maisPROGRAMAÇÃO I. Introdução
PROGRAMAÇÃO I Introdução Introdução 2 Princípios da Solução de Problemas Problema 1 Fase de Resolução do Problema Solução na forma de Algoritmo Solução como um programa de computador 2 Fase de Implementação
Leia maisUniversidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores
Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores 2013-2 Compilador para a Linguagem Cafezinho Especificação dos trabalhos: T2 (Geração da Representação Intermediária e Análise
Leia maisProjeto de Compiladores
Projeto de Compiladores FIR Faculdade Integrada do Recife João Ferreira 12 e 13 de fevereiro de 2007 Questionário 1. Em quais linguagens de programação você já programou? 2. O que você sabe sobre compiladores?
Leia maisFERRAMENTA DE AUXÍLIO AO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE INTEGRANDO TECNOLOGIAS OTIMIZADORAS
FERRAMENTA DE AUXÍLIO AO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE INTEGRANDO TECNOLOGIAS OTIMIZADORAS Acadêmico: Roger Anderson Schmidt Orientador : Marcel Hugo Supervisor : Ricardo de Freitas Becker Empresa
Leia maisNoções de compilação
Noções de compilação Compilador: o que é, para que serve e estrutura geral Parentes do compilador e programas correlatos Prof. Thiago A. S. Pardo 1 Exercício em duplas Para esquentar... 2 1 Compilação:
Leia maisCompiladores. Motivação. Tradutores. Motivação. Tipos de Tradutores. Tipos de Tradutores
Motivação Prof. Sérgio Faustino Compiladores Conhecimento das estruturas e algoritmos usados na implementação de linguagens: noções importantes sobre uso de memória, eficiência, etc. Aplicabilidade freqüente
Leia maisProgramação I Apresentação
Programação I Apresentação Prof. Carlos Alberto carlos.batista@facape.br carlos36_batista@yahoo.com.br Referências JUNIOR, D. P.; NAKAMITI, G. S.; ENGELBRECHT, A. de M. E.; BIANCHI, F. Algoritmos e Programação
Leia maisAULA 02. OBJETIVO: Características da Linguagem Orientada a Objetos.
AULA 02 OBJETIVO: Características da Linguagem Orientada a Objetos. HABILIDADES TRABALHADAS: Comparação das características das linguagens orientadas a objetos frente às linguagens estruturadas. Conhecimentos
Leia maisHMI: UM MIDDLEWARE PARA OBJETOS DISTRIBUÍDOS SOBRE O PROTOCOLO HTTP
HMI: UM MIDDLEWARE PARA OBJETOS DISTRIBUÍDOS SOBRE O PROTOCOLO HTTP Aluno: Abel Luiz Cechinel Orientador: Paulo Fernando da Silva Sumário Introdução; Fundamentação Teórica; Desenvolvimento; Conclusão;
Leia maisNoções de compilação
Noções de compilação Compilador: o que é, para que serve e estrutura geral Parentes do compilador e programas correlatos Prof. Thiago A. S. Pardo 1 Compilação: por que estudar? (parte 1) Compiladores:
Leia maisAlgoritmos e Programação
ESTADO DE MATO GROSSO SECRETARIA DE ESTADO DE CIÊNCIA E TECNOLOGIA UNIVERSIDADE DO ESTADO DE MATO GROSSO CAMPUS UNIVERSITÁRIO DE SINOP FACULDADE DE CIÊNCIAS EXATAS E TECNOLÓGICAS Algoritmos e Programação
Leia maisProgramação de Sistemas (Sistemas de Programação) Semana 10, Aula 17
PCS3616 Programação de Sistemas (Sistemas de Programação) Semana 10, Aula 17 Linguagens e Compiladores Programação em linguagem de alto nível Escola Politécnica da Universidade de São Paulo Roteiro 1.
Leia maisLinguagens e Compiladores
Linguagens e Compiladores Aula 1: a) Critérios b) Noções de Compiladores e Interpretadores c) Usos da tecnologia de compilação d) Compiladores, filtros e pré-processadores e) Estruturação lógica de compiladores
Leia maisCompiladores. Introdução
Compiladores Introdução Apresentação Turma Noite Continuada I 20/03 Continuada II 22/05 Atividades Regimental 05/06 Total 1 Ponto 1 Ponto 1 Ponto 7 Pontos 10 Pontos Aulas expositivas teórico-práticas Exercícios
Leia maisDesenvolvimento de Aplicações Desktop
Desenvolvimento de Aplicações Desktop Conceitos Básicos de Programação Professor: Charles Leite O Desenvolvimento de Programas A programação consiste em indicar como o computador (hardware) deve trabalhar
Leia maisCapítulo 1. Aspectos Preliminares
Capítulo 1 Aspectos Preliminares Tópicos do Capítulo 1 Razões para estudar conceitos de linguagens de programação Domínios de programação Critérios de avaliação de linguagens Influências no projeto de
Leia maisCOMPILAÇÃO. Ricardo José Cabeça de Souza
COMPILAÇÃO Ricardo José Cabeça de Souza www.ricardojcsouza.com.br Programas Código-fonte escrito em linguagem de programação de alto nível, ou seja, com um nível de abstração muito grande, mais próximo
Leia maisAlgoritmos e Programação
ESTADO DE MATO GROSSO SECRETARIA DE ESTADO DE CIÊNCIA E TECNOLOGIA UNIVERSIDADE DO ESTADO DE MATO GROSSO CAMPUS UNIVERSITÁRIO DE SINOP FACULDADE DE CIÊNCIAS EXATAS E TECNOLÓGICAS CURSO DE ENGENHARIA ELÉTRICA
Leia maisPROPOSTA PARA O TRABALHO DE CONCLUSÃO DE CURSO PROTÓTIPO DE UM VISUALIZADOR DE MODELOS 3D PARA DISPOSITIVOS MÓVEIS UTILIZANDO A PLATAFORMA.NET CF 2.
TURNO: noturno VERSÃO: 01 N o UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CIÊNCIAS EXATAS E NATURAIS DEPARTAMENTO DE SISTEMAS E COMPUTAÇÃO CURSO DE CIÊNCIAS DA COMPUTAÇÃO BACHARELADO COORDENAÇÃO DE TRABALHO
Leia maisPROPOSTA PARA O TRABALHO DE CONCLUSÃO DE CURSO JOGO DE XADREZ PARA CELULAR ENTRE DOIS PARTICIPANTES. alternativo:
TURNO: Noturno VERSÃO: 2 N o UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CIÊNCIAS EXATAS E NATURAIS DEPARTAMENTO DE SISTEMAS E COMPUTAÇÃO CURSO DE CIÊNCIAS DA COMPUTAÇÃO BACHARELADO COORDENAÇÃO DE TRABALHO
Leia maisAutômatos e Linguagens
Autômatos e Linguagens Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Agosto, 2016 1 / 41 Sumário 1 Compiladores 2 Linguagens de programação 3 Ciência dos compiladores
Leia maisPROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@ifrn.edu.br
Leia maisParadigmas de Programação
Paradigmas de Programação Prof.: Edilberto M. Silva http://www.edilms.eti.br Aula 2 Linguagens de Programação Desenvolvimento e execução de programas Características de linguagens Execução de programas
Leia maisConceitos de Linguagens de Programação
Conceitos de Linguagens de Programação Aula 03 Processo de Compilação Edirlei Soares de Lima Métodos de Implementação Arquitetura de Von Neumann: A linguagem de máquina de um computador
Leia maisConceitos de Linguagens de Programação - Características. Paavo Soeiro
Conceitos de Linguagens de Programação - Características Paavo Soeiro Motivação Para que possa escolher uma linguagem apropriada ao problema. Melhorar o entendimento da linguagem utilizada. Facilitar o
Leia maisConversões de Linguagens: Tradução, Montagem, Compilação, Ligação e Interpretação
Conversões de Linguagens: Tradução, Montagem, Compilação, Ligação e Interpretação Para executar uma tarefa qualquer, um computador precisa receber instruções precisas sobre o que fazer. Uma seqüência adequada
Leia maisLinguagens de Programação Aula 3
Aula 3 Celso Olivete Júnior olivete@fct.unesp.br Na aula passada... Classificação das LPs (nível, geração e paradigma) Paradigmas Imperativo, OO, funcional, lógico e concorrente 2/33 Na aula de hoje...
Leia maisIFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli
Programa de computador sequência de comandos ou instruções executados por um computador com a finalidade de produzir um resultado e resolver um problema; Linguagem de programação método para a criação
Leia maisFACULDADE LEÃO SAMPAIO
FACULDADE LEÃO SAMPAIO Paradigmas de Programação Curso de Análise e Desenvolvimento de Sistemas Turma: 309-5 Semestre - 2014.2 Paradigmas de Programação Prof. MSc. Isaac Bezerra de Oliveira. 1 PARADIGMAS
Leia maisA linguagem Java foi projetada tendo em vista os seguintes objetivos:
Java Disciplina: Programação II Professora: Mai-Ly Vanessa Histórico do Java Em 1991 a Sun Microsystems financiou uma pesquisa sobre o que seria a nova onda digital. Desta pesquisa resultou a criação da
Leia maisLinguagens de Programação
O estudante estuda muito. Regras: 7 9 12 14. . Regras: 2 4 . Regras: 1 Representar através de uma árvore de derivação. 77 O estudante estuda muito.
Leia maisINE5421 LINGUAGENS FORMAIS E COMPILADORES
INE5421 LINGUAGENS FORMAIS E COMPILADORES PLANO DE ENSINO Objetivo geral Conhecer a teoria das linguagens formais visando sua aplicação na especificação de linguagens de programação e na construção de
Leia maisPROPOSTA PARA O TRABALHO DE CONCLUSÃO DE CURSO SISTEMA DE GESTÃO ESCOLAR ORIENTADO A OBJETO UTILIZANDO BANCO DE DADOS CACHÉ
TURNO: Noturno VERSÃO: 01 N o UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CIÊNCIAS EXATAS E NATURAIS DEPARTAMENTO DE SISTEMAS E COMPUTAÇÃO CURSO DE CIÊNCIAS DA COMPUTAÇÃO BACHARELADO COORDENAÇÃO DE TRABALHO
Leia maisDesenvolvimento de Software I
Desenvolvimento de Software I Prof. Arnaldo Martins Hidalgo Junior arnaldo@flash.tv.br http://aulashidalgo.wordpress.com 5 h/a (2 aulas semanais) http://aulashidalgo.wordpress.com 1 Competências Avaliar
Leia maisIntrodução à plataforma Java
Introdução à plataforma Java Apresentação: Professor: Galvez Gonçalves prof.gago@gmail.com O que estudaremos 1. Os conceitos de programação orientada a objetos através de uma linguagem de programação que
Leia maisEA876 - Introdução a Software de Sistema
A876 - Introdução a Software de Sistema Software de Sistema: conjunto de programas utilizados para tornar o hardware transparente para o desenvolvedor ou usuário. Preenche um gap de abstração. algoritmos
Leia maisClasses e Objetos. Sintaxe de classe em Java
Classes e Objetos Classes e Objetos A Programação Orientada a Objetos (POO) é uma técnica de programação que se baseia na construção de classes e utilização de objetos. Os objetos são formados por dados
Leia maisCompiladores. Conceitos Básicos
Compiladores Conceitos Básicos Processadores de Linguagem De forma simples, um compilador é um programa que recebe como entrada um programa em uma linguagem de programação a linguagem fonte e o traduz
Leia maisAULA 03: FUNCIONAMENTO DE UM COMPUTADOR
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 03: FUNCIONAMENTO DE UM COMPUTADOR Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação O QUE É UM COMPUTADOR?
Leia maisEspecificações Gerais do Compilador e Definição de FRANKIE
Especificações Gerais do Compilador e Definição de FRANKIE 1. Especificações Gerais do Compilador (Decisões de projeto) 2. Especificações da Linguagem Fonte Definição Informal Considerações Léxicas Considerações
Leia maisPROPOSTA PARA O TRABALHO DE CONCLUSÃO DE CURSO SISTEMA GERENCIAL PARA AUTOMAÇÃO DE FORÇA DE VENDAS USANDO DISPOSITIVOS MÓVEIS BASEADOS EM PALM OS
TURNO: NOTURNO VERSÃO: 02 N o UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CIÊNCIAS EXATAS E NATURAIS DEPARTAMENTO DE SISTEMAS E COMPUTAÇÃO CURSO DE CIÊNCIAS DA COMPUTAÇÃO BACHARELADO COORDENAÇÃO DE TRABALHO
Leia maisFerramenta para Desenvolvimentode Sistemas EmbarcadosUtilizando Linguagem de Alto Nível p.1/25
Universidade Federal do Rio Grande do Sul Escola de Engenharia - Instituto de Informática Graduação em Engenharia de Computação Ferramenta para Desenvolvimento de Sistemas Embarcados Utilizando Linguagem
Leia maisGRUPO: Rafael Igor Vanderlei Vieira
GRUPO: Rafael Igor Vanderlei Vieira C# INTRODUÇÃO Paradigmas: Orientado a objeto; Estruturado; Imperativo; Surgimento: 2002. Criador: Anders Hejlsberg. Principais Compiladores:.NET Framework (Windows),
Leia maisCompiladores. Introdução à Compiladores
Compiladores Introdução à Compiladores Cristiano Lehrer, M.Sc. Introdução (1/2) O meio mais eficaz de comunicação entre pessoas é a linguagem (língua ou idioma). Na programação de computadores, uma linguagem
Leia maisNosso Primeiro Programa Java
Java linguagem, jvm, jdk, jre, ide Nosso Primeiro Programa Java Professoras: Ariane Machado Lima Fátima L. S. Nunes 1 Lembrando os objetivos desta disciplina Aprender a programar. Para isso precisamos
Leia maisPROPOSTA PARA O TRABALHO DE CONCLUSÃO DE CURSO IMPLEMENTAÇÃO DA TÉCNICA TEXT MINING VIA WEB APLICADO NO AMBIENTE DO EMPREENDEDOR.
TURNO: VERSÃO: N o UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CIÊNCIAS EXATAS E NATURAIS DEPARTAMENTO DE SISTEMAS E COMPUTAÇÃO CURSO DE CIÊNCIAS DA COMPUTAÇÃO BACHARELADO COORDENAÇÃO DE TRABALHO DE CONCLUSÃO
Leia maisFundamentos de Sistemas Operacionais
Fundamentos de Sistemas Operacionais Aula 2 Princípios de Programação Prof. Belarmino Linguagem de Computadores Internamente os computadores usam instruções e armazenam os dados no formato numérico binário
Leia maisPLANO DE UNIDADE DIDÁTICA- PUD
Professor: Marcus Vinícius Midena Ramos Coordenação: Ricardo Argenton Ramos Data: 03/08/2010 Página: 1 de 5 EMENTA: Conceitos básicos de linguagens. Histórico, classificação e principais aplicações de
Leia maisAula 1 Java Prof. Dr. Sylvio Barbon Junior
5COP101 Linguagens de Programação Aula 1 Java Prof. Dr. Sylvio Barbon Junior Sylvio Barbon Jr barbon@uel.br 1 Sumário 1) Razões para Estudar Conceitos de LP; 2) Domínios das Linguagens de Programação 3)
Leia mais1.1 Linguagens de Programação
Fundamentos Procurando fazer com que haja uma melhor compreensão para o estudo e desenvolvimento utilizando linguagens de programação, este capítulo apresenta conceitos básicos sobre como um programa pode
Leia maisParadigmas de Linguagem de Programação. Aspectos Básicos
Paradigmas de Linguagem de Programação Aspectos Básicos Introdução Nesta segunda etapa de nossos estudos, veremos: aspectos básicos de programa e linguagem de programação; revisão de conceitos de compilador
Leia maisFACULDADE ZACARIAS DE GÓES SISTEMAS DE INFORMAÇÃO ADRIEL ALMEIDA CAFÉ PROCESSO DE COMPILAÇÃO
0 FACULDADE ZACARIAS DE GÓES SISTEMAS DE INFORMAÇÃO ADRIEL ALMEIDA CAFÉ PROCESSO DE COMPILAÇÃO Valença Bahia Novembro 2010 1 ADRIEL ALMEIDA CAFÉ PROCESSO DE COMPILAÇÃO Trabalho apresentado como requisito
Leia maisCompiladores. Análise Semântica
Compiladores Análise Semântica Análise semântica A semântica define o significado dos programas sintaticamente corretos; Por exemplo, em C, a instrução if(a>b) max = a; else max = b; Diz que a expressão
Leia maisLinguagens de Programação 10 Avaliação de Linguagens
Linguagens de Programação 10 Avaliação de Linguagens Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes.br/ ~ vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal
Leia maisCompiladores. Eduardo Ferreira dos Santos. Fevereiro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 38
Compiladores Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Fevereiro, 2017 1 / 38 Sumário 1 Compiladores 2 Linguagens de programação 3 Ciência dos compiladores
Leia maisIntrodução à Computação
UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA Introdução à Computação Prof. Yandre Maldonado - 1 Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Histórico da Computação Prof. Yandre
Leia maisAnálise e projeto de sistemas
Análise e projeto de sistemas Conteúdo: UML O processo de desenvolvimento de software Prof. Patrícia Lucas A linguagem de modelagem unificada (UML) A UML teve origem em uma tentativa de se unificar os
Leia maisParadigmas de Linguagens Computacionais (PLC) (Apresentação da disciplina)
Paradigmas de Linguagens Computacionais (PLC) (Apresentação da disciplina) George Darmiton da Cunha Cavalcanti (gdcc@cin.ufpe.br) Informações Básicas Professor George Darmiton da Cunha Cavalcanti Monitores
Leia maisIntrodução à Computação
UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA Introdução à Computação Prof. Yandre Maldonado - 1 Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Histórico da Computação Prof. Yandre
Leia maisTURNO: Matutino VERSÃO: 1 N o
TURNO: Matutino VERSÃO: 1 N o UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CIÊNCIAS EXATAS E NATURAIS DEPARTAMENTO DE SISTEMAS E COMPUTAÇÃO CURSO DE CIÊNCIAS DA COMPUTAÇÃO BACHARELADO COORDENAÇÃO DE TRABALHO
Leia maisApresentação. !! Familiarização com os métodos de construção de compiladores de linguagens e com as técnicas de compilação mais habituais.
Apresentação Universidade dos Açores Departamento de Matemática www.uac.pt/~hguerra/!! Aquisição de conceitos sobre a definição de linguagens de programação.!! Familiarização com os métodos de construção
Leia maisGrupo de Usuários Java do Noroeste Paulista. Introdução à tecnologia Java
Grupo de Usuários Java do Noroeste Paulista Introdução à tecnologia Java Referências http://www.java.sun.com; Ivan Luiz Marques Ricarte, Faculdade de Engenharia Elétrica e de Computação-UNICAMP (http://www.dca.fee.unicamp.br/~ricarte/welcome.html);
Leia maisIntrodução à Computação
Introdução à Computação Jordana Sarmenghi Salamon jssalamon@inf.ufes.br jordanasalamon@gmail.com http://inf.ufes.br/~jssalamon Departamento de Informática Universidade Federal do Espírito Santo Agenda
Leia maisNomes, vinculações e escopos
Nomes, vinculações e escopos Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual
Leia maisProcessos de software
Processos de software 1 Processos de software Conjunto coerente de atividades para especificação, projeto, implementação e teste de sistemas de software. 2 Objetivos Introduzir modelos de processos de
Leia maisAcadêmica: Giselle Mafra Schlosser Orientador: Everaldo Artur Grahl
AVALIAÇÃO DA QUALIDADE DO CÓDIGO FONTE ESCRITO EM PL/SQL Acadêmica: Giselle Mafra Schlosser Orientador: Everaldo Artur Grahl Roteiro Introdução Objetivos do trabalho Fundamentação teórica Desenvolvimento
Leia maisLinguagens de Programação
Linguagens de Programação Prof a Jerusa Marchi Departamento de Informática e Estatística Universidade Federal de Santa Catarina e-mail: jerusa@inf.ufsc.br Linguagens de Programação p. 1/5 Linguagens de
Leia maisLinguagens de Programação Classificação
Classificação Classificação A proximidade que a linguagem de programação tem com a humana determina sua classe (o nível): Linguagem de máquina (primeira geração) Linguagem assembly - de montagem (segunda
Leia maisProgramação Estruturada Orientada a Objetos
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE Programação Estruturada Orientada a Objetos Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@gmail.com
Leia maisDaniel Wildt
Orientação a Objetos 1 Daniel Wildt http://danielwildt.blogspot.com Agenda 2 Orientação a Objetos Classe x Objeto Representação classe Atributos / operações Construtores e Destrutores Liberando memória
Leia maisMemória. Arquitetura de Von Neumann. Universidade do Vale do Rio dos Sinos Laboratório I Prof.ª Vera Alves 1 CPU. Unidade de controle ULA
Universidade do Vale do Rio dos Sinos Laboratório I Prof.ª Vera Alves 1 Arquitetura de Von Neumann CPU Unidade de controle Unidade de entrada Unidade de saída ULA Von Neumann era um gênio. Falava muitos
Leia mais3. Linguagem de Programação C
Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3. Linguagem de programação C 3.1. Conceitos
Leia maisParadigmas de Linguagem de Programação
Paradigmas de Linguagem de Programação Aula 1 - Introdução Prof. Filipo Mór 2016/II - www.filipomor.com Apresentação do Professor B.Sc. SI FDBPOA 2012 M.Sc. em CC PUCRS/DALHOUSIE 2015 Atuação na área de
Leia maisJava Standard Edition (JSE)
Java Standard Edition (JSE) Capítulo 01. Introdução à tecnologia JAVA Esp. Márcio Palheta MSN: marcio.palheta@hotmail.com 1 Agenda Apresentação: Formação, graduação, certificação, área de atuação; Apresentação
Leia maisCurso online de Fundamentos em Android. Plano de Estudo
Curso online de Fundamentos em Android Plano de Estudo Descrição do programa A Certificação Android ensina como usar as ferramentas necessárias para projetar e implantar aplicativos Android para dispositivos
Leia maisUniversidade Federal do ABC Rua Santa Adélia, Bairro Bangu - Santo André - SP - Brasil CEP Telefone/Fax:
Universidade Federal do ABC Rua Santa Adélia, 166 - Bairro Bangu - Santo André - SP - Brasil CEP 09.210-170 - Telefone/Fax: +55 11 4996-3166 1. CÓDIGO E NOME DA DISCIPLINA MC3201 - COMPILADORES 2. DISCIPLINA
Leia maisConstrução de Compiladores. Capítulo 1. Introdução. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2014.
Construção de Compiladores Capítulo 1 Introdução José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2014.2 1/22 1 Linguagens de programação 2 Compilação 2/22 Tópicos 1
Leia maisProgramação I A Linguagem C. Prof. Carlos Alberto
Programação I A Linguagem C Prof. Carlos Alberto carlos.batista@facape.br carlos36_batista@yahoo.com.br 2 Origem A linguagem C foi desenvolvida em 1972, nos Laboratórios Bell, por Dennis Ritchie. Implementada
Leia maisPró-Reitoria Acadêmica Diretoria Acadêmica Assessoria Pedagógica da Diretoria Acadêmica
FACULDADE: CENTRO UNIVERSITÁRIO DE BRASÍLIA UniCEUB CURSO: CIÊNCIA DA COMPUTAÇÃO DISCIPLINA: CONSTRUÇÃO DE COMPILADORES CARGA HORÁRIA: 75 H. A. ANO/SEMESTRE: 2017/02 PROFESSOR: EDUARDO FERREIRA DOS SANTOS
Leia maisPROPOSTA PARA O TRABALHO DE CONCLUSÃO DE CURSO TÍTULO: DISTRIBUIÇÃO OTIMIZADA DE POLÍGONOS EM UM PLANO BIDIMENSIONAL
TURNO: NOTURNO VERSÃO: 1 ANO / SEMESTRE: 2010.2 N o UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CIÊNCIAS EXATAS E NATURAIS DEPARTAMENTO DE SISTEMAS E COMPUTAÇÃO CURSO DE CIÊNCIA DA COMPUTAÇÃO BACHARELADO
Leia maisPROGRAMAÇÃO ORIENTADA A OBJETOS I -CONCEITOS PRELIMINARES. Prof. Angelo Augusto Frozza, M.Sc.
PROGRAMAÇÃO ORIENTADA A OBJETOS I -CONCEITOS PRELIMINARES Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza ROTEIRO O que é programação Linguagens de Programação Paradigmas de Programação História
Leia maisIntrodução à Programação de Computadores Fabricação Mecânica
Introdução à Programação de Computadores Fabricação Mecânica Edilson Hipolito da Silva edilson.hipolito@ifsc.edu.br - http://www.hipolito.info Aula 04 - Linguagens de Programação, Interpretador, compilador
Leia maisLinguagens de Programação
Visão Geral Faculdade de Computação - UFU Agosto - 2009 1 Princípios 2 O que é uma linguagem de programação? Linguagens naturais facilitam a expressão e o intercâmbio de idéias entre as pessoas. Assim
Leia maisIntrodução. Parte 01. Desenvolvimento de Programação Orientada a Objetos. Prof. Pedro Neto
Introdução Parte 01 Prof. Pedro Neto Aracaju Sergipe - 2011 Conteúdo 1. Introdução i. Paradigmas de ii. Motivação da OO iii. Desafio das novas tecnologias iv. Ambientes de Desenvolvimento Modernos v. OO
Leia maisProf. Me. Sérgio Carlos Portari Júnior
Prof. Me. Sérgio Carlos Portari Júnior Ambientes que visam desenvolver aplicações que precisam de um processamento paralelo e distribuído deverão saber lidar com algumas dificuldades. Isto decorre da heterogeneidade
Leia maisNomes, vinculações e escopos
Nomes, vinculações e escopos Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual
Leia maisIntrodução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos
Introdução Laboratório de Computação para Ciências Módulo II Prof. Guilherme Tavares de Assis Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Mestrado Profissional
Leia mais