PROPOSTA PARA O TRABALHO DE CONCLUSÃO DE CURSO COMPILADOR JAVA 5.0 PARA GERAR EXECUTÁVEL NATIVO PARA PLATAFORMA PALM OS

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

Download "PROPOSTA PARA O TRABALHO DE CONCLUSÃO DE CURSO COMPILADOR JAVA 5.0 PARA GERAR EXECUTÁVEL NATIVO PARA PLATAFORMA PALM OS"

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

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

Métodos de implementação de linguagens. Kellen Pinagé

Mé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 mais

CP Compiladores I Prof. Msc.. Carlos de Salles

CP 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 mais

Universidade 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. 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 mais

Programaçã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 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 mais

PROPOSTA PARA O TRABALHO DE CONCLUSÃO DE CURSO (TCC)

PROPOSTA 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 mais

Introdução à Programação Aula 03. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Introduçã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 mais

AULA 1 INTRODUÇÃO AO JAVA

AULA 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 mais

Introdução à Programação

Introduçã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 mais

PROGRAMAÇÃO I. Introdução

PROGRAMAÇÃ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 mais

Universidade 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 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 mais

Projeto de Compiladores

Projeto 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 mais

FERRAMENTA 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 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 mais

Noções de compilação

Noçõ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 mais

Compiladores. Motivação. Tradutores. Motivação. Tipos de Tradutores. Tipos de Tradutores

Compiladores. 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 mais

Programação I Apresentação

Programaçã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 mais

AULA 02. OBJETIVO: Características da Linguagem Orientada a Objetos.

AULA 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 mais

HMI: UM MIDDLEWARE PARA OBJETOS DISTRIBUÍDOS SOBRE O PROTOCOLO HTTP

HMI: 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 mais

Noções de compilação

Noçõ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 mais

Algoritmos e Programação

Algoritmos 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 mais

Programação de Sistemas (Sistemas de Programação) Semana 10, Aula 17

Programaçã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 mais

Linguagens e Compiladores

Linguagens 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 mais

Compiladores. Introdução

Compiladores. 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 mais

Desenvolvimento de Aplicações Desktop

Desenvolvimento 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 mais

Capítulo 1. Aspectos Preliminares

Capí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 mais

COMPILAÇÃO. Ricardo José Cabeça de Souza

COMPILAÇÃ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 mais

Algoritmos e Programação

Algoritmos 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 mais

PROPOSTA 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.

PROPOSTA 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 mais

PROPOSTA PARA O TRABALHO DE CONCLUSÃO DE CURSO JOGO DE XADREZ PARA CELULAR ENTRE DOIS PARTICIPANTES. alternativo:

PROPOSTA 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 mais

Autômatos e Linguagens

Autô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 mais

PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

PROGRAMAÇÃ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 mais

Paradigmas de Programação

Paradigmas 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 mais

Conceitos de Linguagens de Programação

Conceitos 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 mais

Conceitos de Linguagens de Programação - Características. Paavo Soeiro

Conceitos 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 mais

Conversõ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 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 mais

Linguagens de Programação Aula 3

Linguagens 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 mais

IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli

IFSC/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 mais

FACULDADE LEÃO SAMPAIO

FACULDADE 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 mais

A linguagem Java foi projetada tendo em vista os seguintes objetivos:

A 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 mais

Linguagens de Programação

Linguagens 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 mais

INE5421 LINGUAGENS FORMAIS E COMPILADORES

INE5421 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 mais

PROPOSTA PARA O TRABALHO DE CONCLUSÃO DE CURSO SISTEMA DE GESTÃO ESCOLAR ORIENTADO A OBJETO UTILIZANDO BANCO DE DADOS CACHÉ

PROPOSTA 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 mais

Desenvolvimento de Software I

Desenvolvimento 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 mais

Introdução à plataforma Java

Introduçã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 mais

EA876 - Introdução a Software de Sistema

EA876 - 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 mais

Classes e Objetos. Sintaxe de classe em Java

Classes 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 mais

Compiladores. Conceitos Básicos

Compiladores. 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 mais

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR

AULA 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 mais

Especificações Gerais do Compilador e Definição de FRANKIE

Especificaçõ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 mais

PROPOSTA 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

PROPOSTA 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 mais

Ferramenta para Desenvolvimentode Sistemas EmbarcadosUtilizando Linguagem de Alto Nível p.1/25

Ferramenta 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 mais

GRUPO: Rafael Igor Vanderlei Vieira

GRUPO: 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 mais

Compiladores. Introdução à Compiladores

Compiladores. 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 mais

Nosso Primeiro Programa Java

Nosso 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 mais

PROPOSTA PARA O TRABALHO DE CONCLUSÃO DE CURSO IMPLEMENTAÇÃO DA TÉCNICA TEXT MINING VIA WEB APLICADO NO AMBIENTE DO EMPREENDEDOR.

PROPOSTA 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 mais

Fundamentos de Sistemas Operacionais

Fundamentos 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 mais

PLANO DE UNIDADE DIDÁTICA- PUD

PLANO 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 mais

Aula 1 Java Prof. Dr. Sylvio Barbon Junior

Aula 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 mais

1.1 Linguagens de Programação

1.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 mais

Paradigmas de Linguagem de Programação. Aspectos Básicos

Paradigmas 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 mais

FACULDADE ZACARIAS DE GÓES SISTEMAS DE INFORMAÇÃO ADRIEL ALMEIDA CAFÉ PROCESSO DE COMPILAÇÃO

FACULDADE 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 mais

Compiladores. Análise Semântica

Compiladores. 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 mais

Linguagens de Programação 10 Avaliação de Linguagens

Linguagens 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 mais

Compiladores. Eduardo Ferreira dos Santos. Fevereiro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 38

Compiladores. 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 mais

Introdução à Computação

Introduçã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 mais

Análise e projeto de sistemas

Aná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 mais

Paradigmas de Linguagens Computacionais (PLC) (Apresentação da disciplina)

Paradigmas 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 mais

Introdução à Computação

Introduçã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 mais

TURNO: Matutino VERSÃO: 1 N o

TURNO: 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 mais

Apresentaçã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. !! 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 mais

Grupo de Usuários Java do Noroeste Paulista. Introdução à tecnologia Java

Grupo 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 mais

Introdução à Computação

Introduçã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 mais

Nomes, vinculações e escopos

Nomes, 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 mais

Processos de software

Processos 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 mais

Acadêmica: Giselle Mafra Schlosser Orientador: Everaldo Artur Grahl

Acadê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 mais

Linguagens de Programação

Linguagens 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 mais

Linguagens de Programação Classificação

Linguagens 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 mais

Programação Estruturada Orientada a Objetos

Programaçã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 mais

Daniel Wildt

Daniel 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 mais

Memória. Arquitetura de Von Neumann. Universidade do Vale do Rio dos Sinos Laboratório I Prof.ª Vera Alves 1 CPU. Unidade de controle ULA

Memó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 mais

3. Linguagem de Programação C

3. 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 mais

Paradigmas de Linguagem de Programação

Paradigmas 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 mais

Java Standard Edition (JSE)

Java 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 mais

Curso online de Fundamentos em Android. Plano de Estudo

Curso 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 mais

Universidade Federal do ABC Rua Santa Adélia, Bairro Bangu - Santo André - SP - Brasil CEP Telefone/Fax:

Universidade 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 mais

Construçã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. 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 mais

Programação I A Linguagem C. Prof. Carlos Alberto

Programaçã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 mais

Pró-Reitoria Acadêmica Diretoria Acadêmica Assessoria Pedagógica da Diretoria Acadêmica

Pró-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 mais

PROPOSTA PARA O TRABALHO DE CONCLUSÃO DE CURSO TÍTULO: DISTRIBUIÇÃO OTIMIZADA DE POLÍGONOS EM UM PLANO BIDIMENSIONAL

PROPOSTA 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 mais

PROGRAMAÇÃ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. 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 mais

Introdução à Programação de Computadores Fabricação Mecânica

Introduçã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 mais

Linguagens de Programação

Linguagens 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 mais

Introdução. Parte 01. Desenvolvimento de Programação Orientada a Objetos. Prof. Pedro Neto

Introduçã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 mais

Prof. Me. Sérgio Carlos Portari Júnior

Prof. 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 mais

Nomes, vinculações e escopos

Nomes, 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 mais

Introdução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos

Introduçã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