RAFF Um Compilador para Facilitar o Aprendizado de Algoritmos
|
|
- Dina de Miranda Camelo
- 8 Há anos
- Visualizações:
Transcrição
1 RAFF Um Compilador para Facilitar o Aprendizado de Algoritmos Almir Joaquim de Sousa 1, Fábio Silveira Vidal 1, Fredson Vieira Costa 1, Ranildo Costa Santana 1 Curso de Bacharelado em Ciência da Computação Universidade do Tocantins(UNITINS), Palmas, TO, Brasil almir@unitins.br, fvidal@unitins.br, frdson@unitins.br, ranildocosta@hotmail.com Resumo. Este artigo tem como objetivo descrever a implementação de um compilador cuja linguagem de programação que possua uma gramática parecida com a linguagem de programação C e que utilize termos da Língua Portuguesa em seu vocabulário para que a mesma torne-se simples e de boa compreensão, principalmente para os iniciantes em programação, trazendo assim, um melhor aproveitamento da disciplina de Introdução à Programação, nos cursos de nível superior nas áreas de informática e engenharia.
2 1 Introdução Ao iniciar um curso de nível superior na área de informática ou de engenharia, muitos acadêmicos encontram dificuldades na primeira disciplina referente a algoritmos ou programação de computadores, muitas vezes porque as linguagens utilizam termos em inglês ou por possuírem uma sintaxe complicada. Com o objetivo de amenizar essas dificuldades, este projeto propõe a construção de um compilador que possua uma sintaxe simples e que utilize termos da língua portuguesa. Os princípios e técnicas de construção de compiladores são tão penetrantes, que as idéias encontradas serão usadas muitas vezes na carreira de um cientista da computação. A construção de compiladores se estende através dos temas de linguagens de programação, arquitetura de máquina, teoria das linguagens, algoritmos e engenharia de software. Afortunadamente, poucas técnicas básicas para construção de compiladores podem ser usadas para desenvolver tradutores pra uma ampla variedade de linguagens e máquinas [Aho, Sethi & Ullman 1986]. Posto de forma simples, o compilador RAFF lê um programa escrito numa linguagem a linguagem fonte e o traduz num programa equivalente numa outra linguagem a linguagem alvo (no nosso caso, linguagem de máquina). Como importante parte desse processo de tradução, o compilador relata a seu usuário a presença de erros no programa fonte. A partir do código fonte traduzido para linguagem de máquina o RAFF gera um arquivo executável com o auxílio do compilador Tasm. Com isso o programa pode ser executado e interagir com o usuário através de comandos de entrada e saída. 2 Metodologia 2.1 Análise A metodologia utilizada na análise deste projeto é a UML (Unified Modeling Language), pois é a linguagem-padrão para elaboração da estrutura de projetos de software usando o paradigma orientado a objetos. A UML pode ser empregada para a visualização, a especificação, a construção e a documentação de artefatos que façam uso de sistemas complexos de software. A UML é adequada para a modelagem de sistemas, cuja abrangência poderá incluir sistemas de informação corporativos a serem distribuídos a aplicações baseadas em Web e até sistemas complexos embutidos de tempo real. É uma linguagem muito expressiva, abrangendo todas as visões necessárias ao desenvolvimento e implantação desses sistemas. Apesar de sua expressividade, não é difícil compreender a UML. Aprender a aplicar a UML de maneira efetiva tem início com a formação de um modelo conceitual da linguagem, o que pressupõe o entendimento de três principais elementos: os blocos básicos de construção UML, as regras que determinam como esses blocos de construção deverão ser combinados e alguns mecanismos básicos que se aplicam a toda a linguagem [Booch, Rumbaugh & Jacobson 2000]. A UML é apenas uma linguagem de representação e, portanto, é somente uma parte de método para desenvolvimento de software. A UML é independente de processo, apesar
3 de ser perfeitamente utilizada orientada a casos de usos, centrada na arquitetura, iterativa e incremental [Booch, Rumbaugh & Jacobson 2000]. 2.2 Implementação A principal ferramenta utilizada na implementação deste compilador foi o Borland C++ Builder. E como ferramentas auxiliares foram utilizadas o ParGen e o Tasm Borland C++ Builder O Borland C++ Builder é um ambiente de desenvolvimento de aplicações orientado a objeto que permite desenvolver software para o sistema operacional Windows utilizando a linguagem de programação C++ [Dias 2000]. A razão da criação da linguagem C foi a necessidade de uma ferramenta poderosa para escrever programas, que utilizasse os recursos de máquina de uma forma mais fácil que a linguagem assembly. A linguagem C é derivada da linguagem ALGOL 68 e foi baseada na linguagem B de Ken Thompson. A grande aceitação dessa linguagem decorre da facilidade de conciliar o poder de programação de baixo nível com o seu alto grau de portabilidade [Mateus 2000]. O C++ Builder é uma linguagem de Nível Médio, exatamente pelo fato de usar o C++, apesar de viabilizar facilmente o desenvolvimento de aplicações de diversos tipos, tais como banco de dados, Internet entre outros [Dias 2000]. Quando falamos em C++, às vezes lembramos dos velhos compiladores para DOS da Borland ou da Microsoft, como o Borland C++ e o Microsoft Visual C++, entre outros, mas este é poderoso em relação aos demais e pode ajudar na construção de uma aplicação rápida e sem muito esforço [Dias 2000] Tasm (Assembly) Assembly é uma linguagem de programação de baixo nível, que é usada para acelerar algumas tarefas ou para ter um maior controle sobre o hardware. Basicamente ela consiste de sentenças que representam instruções em linguagem de máquina. Tanto que, quando o 8086 surgiu, a programação tinha que ser feita em código de máquina, que não era uma tarefa fácil, deste modo foi desenvolvida uma linguagem onde aquelas instruções binárias forma distribuídas por instruções simbólicas, pois é mais fácil lembrar algo como SUB do que é o código em linguagem de máquina que instrui o processador a realizar uma subtração. Quando o compilador C/C++ e Pascal transformam o código fonte em um programa executável, eles simplesmente o transformam em códigos binários que o processador entende. E uando o Debug, pode ser tranqüilamente visto o programa em Assembly. Existem basicamente três formas de usar o Assembly, uma é ele puro, o qual aceita somente a instrução seca e é possível usar o Debug e salvar na forma de arquivos.com. A segunda é usar o Macro Assembly, o qual é usado pelo TASM, e permite usar constantes,
4 bibliotecas e outros artifícios. A última é usar ele junto ao seu programa, o chamado Embedded Assembly ParGen O Pargen é uma ferramenta de programação YACC e Léxico. O software possui duas versões de YACC e Léxico, chamadas AYACC e Alex, além disso esta ferramenta possui uma interface gráfica com o usuário. O ParGen pode gerar analisadores léxicos para C, C++ e Java e inclui as duas variações de caracteres Unicode e Multibyte Character Set (MBCS). No seu aplicativo você pode criar várias instâncias deste Parser e Analisador Léxico. 3 RAFF O Compilador desenvolvido possui quatro módulos principais:?? Analisador Léxico;?? Analisador Sintático;?? Analisador Semântico; e,?? Gerador de Código. O Analisador Léxico é a primeira fase de um compilador. Sua tarefa principal é a de ler os caracteres de entrada e produzir uma seqüência de tokens (identificadores) que serão utilizados na análise sintática. Além disso, o Analisador Léxico também elimina os comentários e os caracteres neutros como espaços em branco, tabulações ou avanço de linha, facilitando assim, a análise sintática [Aho, Sethi & Ullman 1986]. O Analisador Sintático obtém uma cadeia de tokens provenientes do Analisador Léxico e verifica se a mesma pode ser gerada pela linguagem-fonte, relatando quaisquer erros de sintaxe de forma inteligível para o usuário [Aho, Sethi & Ullman 1986]. O Parser contém a gramática da linguagem usada no compilador, sendo consultado pelo Analisador Sintático para que o mesmo possa detectar os erros sintáticos que possam estar contidos no código fonte [Aho, Sethi & Ullman 1986]. A gramática é utilizada para descrever a maioria das sintaxes da linguagem de programação RAFF. A maioria porque o analisador léxico produz uma seqüência de tokens a partir dos caracteres de entrada. O Analisador Semântico verifica os erros semânticos no programa fonte e captura as informações de tipo para a fase subseqüente de geração de código. Utiliza a estrutura hierárquica determinada pela fase de análise sintática, a fim de identificar os operadores e operandos das expressões e enunciados [Aho, Sethi & Ullman 1986]. A verificação de tipos é um componente muito importante da análise sintática. Nela o compilador checa se cada operador recebe os operandos que são permitidos pela especificação da linguagem fonte. O Gerador de Código pode ser dividido em duas partes, para uma melhor implementação, são elas: Gerador de Código Intermediário e o Gerador de Código de Máquina propriamente dito.
5 Após as análises léxica, e sintática, o Compilador RAFF gera uma representação intermediária explícita do programa fonte. Essa representação intermediária possui duas propriedades importantes: é fácil de produzir e fácil de traduzir no programa alvo. A fase final do compilador é a geração de código alvo, consistindo em código de máquina relocável. As localizações de memória são selecionadas para cada uma das variáveis usadas pelo programa. Então, as instruções intermediárias são cada uma, traduzidas numa seqüência de instruções de máquina que realizam a mesma tarefa. Um aspecto crucial é a atribuição das variáveis aos registradores [Aho, Sethi & Ullman 1986]. 3.1 Descrição da Linguagem A linguagem do compilador RAFF utiliza termos da Lingua Portuguesa no seu vocabulário e possui uma sintaxe semelhante à linguagem de programação C, para que a migração para o C seja mais confortável. Porém a linguagem RAFF terá uma gramática reduzida possuindo a seguinte sintaxe: numero? 0..9 letra? a..z A..Z espaco? caracter? Qualquer símbolo da Tabela ASCII string? {caracter} inteiro? numero {numero} sep_decimal?. sep_exp?, sep_comando? ; real? inteiro inteiro sep_decimal inteiro valor? inteiro real string abre_bloco? { fecha_bloco? } abre_par? ( fecha_par? ) op? + - / * = = = > < >= <=!!= op_atrib? = constante? constante estrutura? estrutura exp? exp op exp abre_par exp fecha_par - exp valor id seq_esq? exp {sep_exp exp}
6 seq_parametros? ((valor id exp) {sep_exp (valor id exp) }) e id? letra {letra numero} dec_variavel? id espaco (id id op_atrib valor){sep_exp (id id op_atrib valor)} sep_comando dec_parametro? (id espaco id {sep_exp id espaco id }) e dec_const? constante dec_variavel dec_funcao? id espaco id abre_par dec_paramentros fecha_par sep_comando dec_estrutura? estrutura id abre_bloco dec_variavel {dec_variavel }fecha_bloco sep_comando imp_funcao? id espaco id abre_par dec_paramentros fecha_par abre_bloco comando {comando} fecha bloco comando? se se_senao enquanto faca_enquanto para chama_func dec_variavel dec_const comandos? comando (abre_bloco comando {comando} fecha_bloco) se? se abre_par exp fecha_par comandos se_senao? se abre_par exp fecha_par comandos senao comandos enquanto? enquanto abre_par exp fecha_par comandos faca_enquanto? faca comandos enquanto abre_par exp fecha_par para? para abre_par seq_exp sep_comando exp sep_comando seq_exp fecha_par chama_func? id abre_par seq_paramentros fecha_par sep_comando programa? {dec_const dec_variavel imp_func dec_func dec_estrutura} A linguagem RAFF terá os seguintes tipos: inteiro, real e caracter, possibilitando ao programador trabalhar com vetores destes tipos e também declarar novos tipos. 4 Relatórios Os relatórios a serem emitidos apresentam os erros ocorridos em alguma das fases da compilação, referente à análise. Em um outro relatório o sistema emite o sucesso na compilação de um programa, podendo conter: número de linhas compiladas, tamanho do arquivo executável e tempo de compilação. Um relatório que também será emitido é o próprio código fonte do programa. 5 Conclusão Um projeto de compilador pode estar destinado a processar uma nova linguagem-fonte ou a produzir um novo código-alvo. Usando a estrutura adotada neste projeto, obtemos em última análise, um projeto para um compilador que consiste em um conjunto de módulos. Três fatores distintos impactam o projeto e a implementação desses módulos:?? Temas das Linguagens-Fontes;
7 ?? Os Temas das Linguagens-Alvo; e,?? Critérios de Desempenho. Seguindo esses fatores, o Compilador RAFF desempenhará o papel de gerar um código executável, a partir de uma linguagem mais amigável, minimizando as dificuldades de aprendizagem dos alunos que ingressam nos cursos de informática e engenharia. 6 Referências [Aho, Sethi & Ullman 1986] Aho, A. V.; Sethi, R.; Ullman, J. D. Compiladores Princípios, Técnicas e Ferramentas. Rio de Janeiro, Editora Guanabara Koogan SA. [Booch, Rumbaugh & Jacobson 2000] Booch, G.; Rumbaugh, J.; Jacobson, I. UML Guia do Usuário. Rio de Janeiro, Editora Campus Ltda. [Lee & Tepfenhart 2001] Lee, R. C.; Tepfenhart, W. M. UML E C++ - Guia Prático de Desenvolvimento Orientado a Objeto. São Paulo, Makron Books Ltda. [Shildt & Guntle 2001] Shildt, H.; Guntle, G. Borland C++ Builder Referência Completa. Rio de Janeiro, Editora Campus Ltda. [Pereira 2000] Pereira, S. do L. Estrutura de Dados Fundamentais. São Paulo, ª Edição. Editora Érica. [Dias 2000] Dias, A. de S. Desenvolvendo em C++ Builder 5.0. Rio de Janeiro, Editora Ciência Moderna Ltda. [Mateus 2000] Mateus, C. A. C++ Builder 5 Guia Prático. São Paulo, Editora Érica. [Tenenbaum, Langsam & Augenstein 1995] Tenenbaum, A. M.; Langsam, Y.; Augenstein, M. J. Estrutura de Dados Usando C. São Paulo, Editora Makron Books. [Deitel & Deitel 2001] Deitel, H. M., Deitel, P. J. C++ Como Programar. Porto Alegre, ª Edição. Editora Bookman.
Introdução a UML. Hélder Antero Amaral Nunes haanunes@gmail.com
Introdução a UML Hélder Antero Amaral Nunes haanunes@gmail.com Introdução a UML UML (Unified Modeling Language Linguagem de Modelagem Unificada) é uma linguagem-padrão para a elaboração da estrutura de
Leia maisAMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS
UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CIÊNCIAS EXATAS E NATURAIS CURSO DE CIÊNCIAS DA COMPUTAÇÃO BACHARELADO AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS Orientando: Oliver Mário
Leia maisUNIVERSIDADE DO ESTADO DE SANTA CATARINA - UDESC DCC Departamento de Ciência da Computação Joinville-SC
CURSO: Bacharelado em Ciência da Computação DISCIPLINA: ANPS Análise e Projeto de Sistemas AULA NÚMERO: 3 DATA: PROFESSOR: Murakami Sumário 1 APRESENTAÇÃO...1 2 DESENVOLVIMENTO...1 2.1 Revisão...1 2.1.1
Leia maisCOMPILADORES E INTERPRETADORES
Aula 16 Arquitetura de Computadores 12/11/2007 Universidade do Contestado UnC/Mafra Curso Sistemas de Informação Prof. Carlos Guerber COMPILADORES E INTERPRETADORES Um compilador transforma o código fonte
Leia maisUNIVERSIDADE DO OESTE DE SANTA CATARINA CAMPUS DE SÃO MIGUEL DO OESTE
UNIVERSIDADE DO OESTE DE SANTA CATARINA CAMPUS DE SÃO MIGUEL DO OESTE CURSO: CIÊNCIAS DA COMPUTAÇÃO DISCIPLINA: COMPILADORES PROFESSOR: JOHNI DOUGLAS MARANGON Back-End Compilação 1. Compilação etapa Back-end
Leia maisConstrução de Compiladores. Construção de Compiladores. Motivação. Motivação. Contexto Histórico. Classificações: Gerações 09/03/2010
Construção de Compiladores Prof. Raimundo Santos Moura (http://www.ufpi.br/rsm) Construção de Compiladores Livro-Texto: AHO, Alfred V.; ULLMAN, Jeffrey D.; SETHI, R. Compiladores: princípios, técnicas
Leia mais1.1. Organização de um Sistema Computacional
1. INTRODUÇÃO 1.1. Organização de um Sistema Computacional Desde a antiguidade, o homem vem desenvolvendo dispositivos elétricoeletrônicos (hardware) que funciona com base em instruções e que são capazes
Leia maisDadas a base e a altura de um triangulo, determinar sua área.
Disciplina Lógica de Programação Visual Ana Rita Dutra dos Santos Especialista em Novas Tecnologias aplicadas a Educação Mestranda em Informática aplicada a Educação ana.santos@qi.edu.br Conceitos Preliminares
Leia maisO que é um programa? Programa é uma lista de instruções que descrevem uma tarefa a ser realizada pelo computador.
O que é um programa? Programa é uma lista de instruções que descrevem uma tarefa a ser realizada pelo computador. Linguagem de Programação Uma linguagem de programação é um método padronizado para expressar
Leia maisWilson Moraes Góes. Novatec
Wilson Moraes Góes Novatec Copyright 2014 Novatec Editora Ltda. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer processo,
Leia maisINTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO
Capítulo 1 INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO 1.1 Histórico de Linguagens de Programação Para um computador executar uma dada tarefa é necessário que se informe a ele, de uma maneira clara, como ele
Leia maisGeração de código intermediário. Novembro 2006
Geração de código intermediário Novembro 2006 Introdução Vamos agora explorar as questões envolvidas na transformação do código fonte em uma possível representação intermediária Como vimos, nas ações semânticas
Leia maisCurso Técnico em Redes
Curso Técnico em Redes Prof. Airton Ribeiro - 2012 Histórico das Linguagens de Programação O que é? É um método padronizado para expressar instruções para um computador. É um conjunto de regras sintáticas
Leia maisTabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008
Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,
Leia maisAlgoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br
(Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br Introdução O computador como ferramenta indispensável: Faz parte das nossas vidas; Por si só não faz nada de útil; Grande capacidade de resolução
Leia maisCurso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura
UFPI CCN DIE Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura O projeto Desenvolver um compilador de um subconjunto básico da linguagem PORTUGOL.
Leia maisUm modelo é uma simplificação da realidade. Construímos modelos para compreender melhor o sistema que estamos desenvolvendo.
UML - Motivação - O que é um modelo? Um modelo é uma simplificação da realidade. Construímos modelos para compreender melhor o sistema que estamos desenvolvendo. O que é um modelo? O que é um modelo? O
Leia maisALP Algoritmos e Programação. . Linguagens para Computadores
ALP Algoritmos e Programação Iniciação aos computadores. Linguagens para Computadores. Compiladores, Interpretadores. Ambientes de Programação 1 Linguagens para Computadores. Linguagem binária: Dispositivos
Leia maisGeração de código. Ivan Ricarte INTRODUÇÃO À COMPILAÇÃO
Geração de código Ivan Ricarte 2008 Sumário Geração de código intermediário Código de três endereços Notação pós-fixa Otimização de código Heurísticas de otimização Geração de código em linguagem simbólica
Leia maisINTRODUÇÃO À LINGUAGEM C/C++
INTRODUÇÃO À LINGUAGEM C/C++ História da Linguagem C/C++ Dennis Ritchie, funcionário do Bell Telephone Laboratories, iniciou em 1972 o desenvolvimento da linguagem C. Ele elaborou grande parte de seu trabalho
Leia maisOrganização e Arquitetura de Computadores I. de Computadores
Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de Computadores I Organização Básica B de Computadores
Leia maisProgramação I. Departamento de Engenharia Rural Centro de Ciências Agrárias
Departamento de Engenharia Rural Centro de Ciências Agrárias Programação I Prof. Bruno Vilela Oliveira bruno@cca.ufes.br http://www.brunovilela.webnode.com.br Programas e Linguagens Para executar uma tarefa
Leia maisIntrodução à Lógica de Programação
Introdução à Lógica de Programação Sistemas Numéricos As informações inseridas em um computador são traduzidos em dados, ou seja, em sinais que podem ser manipulados pelo computador. O computador trabalha
Leia maisMC102 Algoritmos e Programação de Computadores 2ª Aula Programa, entrada e saída de dados
MC102 Algoritmos e Programação de Computadores 2ª Aula Programa, entrada e saída de dados 1. Objetivos Falar sobre programa de computador, diferenciando programa em linguagem de máquina, de programa em
Leia maisA Linguagem Algorítmica Estrutura de Repetição. Ex. 2
Estrutura de Repetição. Ex. 2 A ESTRUTURA Enquanto faça{} É MELHOR UTILIZADA PARA SITUAÇÕES ONDE O TESTE DE CONDIÇÃO (V OU F) PRECISA SER VERIFICADO NO INÍCIO DA ESTRUTURA DE REPETIÇÃO.
Leia mais3. O NIVEL DA LINGUAGEM DE MONTAGEM
3. O NIVEL DA LINGUAGEM DE MONTAGEM Nas aulas anteriores tivemos a oportunidade de discutir dois diferentes níveis presentes na maioria dos computadores atuais. Nesta aula dedica-se a outro nível que também
Leia maisIntrodução a Informática. Prof.: Roberto Franciscatto
Introdução a Informática Prof.: Roberto Franciscatto APRESENTAÇÃO Os computadores chegaram aos diversos níveis das organizações Nestes contexto: Que linguagem entendem? Que produtos podem usar? Dúvidas
Leia maisLP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br
LP II Estrutura de Dados Introdução e Linguagem C Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br Resumo da aula Considerações Gerais Introdução a Linguagem C Variáveis e C Tipos de
Leia maisA lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.
INTRODUÇÃO A lógica de programação é extremamente necessária para as pessoas que queiram trabalhar na área de programação, seja em qualquer linguagem de programação, como por exemplo: Pascal, Visual Basic,
Leia maisUML 2. Guia Prático. Gilleanes T.A. Guedes. Novatec. Obra revisada e ampliada a partir do título Guia de Consulta Rápida UML 2
UML 2 Guia Prático Gilleanes T.A. Guedes Obra revisada e ampliada a partir do título Guia de Consulta Rápida UML 2 Novatec capítulo 1 Introdução à UML A UML (Unified Modeling Language ou Linguagem de Modelagem
Leia maisUniversidade de São Paulo São Carlos, SP Instituto de Ciências Matemáticas e de Computação. SSC0206 1/2010 Introdução à Compilação
Universidade de São Paulo São Carlos, SP Instituto de Ciências Matemáticas e de Computação SSC0206 1/2010 Introdução à Compilação Trabalho 3: Analisador Semântico e Gerador de Código Prof. Dr. Thiago A.
Leia maisIntrodução. Introdução. Introdução. Organização Estruturada de Computadores. Introdução. Máquinas Multiníveis
Ciência da Computação Arq. e Org. de Computadores Máquinas Multiníveis Prof. Sergio Ribeiro Computador digital máquina que resolve problemas executando uma série de instruções. Programa conjunto de instruções
Leia maisUNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação
SOFT DISCIPLINA: Engenharia de software AULA NÚMERO: 08 DATA: / / PROFESSOR: Andrey APRESENTAÇÃO O objetivo desta aula é apresentar e discutir conceitos relacionados a modelos e especificações. Nesta aula
Leia maisConceitos básicos de programação
O QUE É UM PROGRAMA? Para executar uma dada tarefa é geralmente necessário entender o sistema onde ela é realizada. Por exemplo, para fazer um bolo temos um sistema composto por: Ingredientes Cozinheiro
Leia maisFeature-Driven Development
FDD Feature-Driven Development Descrição dos Processos Requisitos Concepção e Planejamento Mais forma que conteúdo Desenvolver um Modelo Abrangente Construir a Lista de Features Planejar por
Leia mais3 Revisão de Software
1 3 Revisão de Software O software é indispensável para a utilização do hardware. Sem o software para utilizar o computador precisaríamos ter um profundo conhecimento do hardware. Alguns softwares são
Leia maisUMA BREVE INTRODUÇÃO AO ESTUDO E IMPLEMENTAÇÃO DE COMPILADORES
UMA BREVE INTRODUÇÃO AO ESTUDO E IMPLEMENTAÇÃO DE COMPILADORES 1 BRANCO; Guido Aparecido Junior, 2 TAMAE, Rodrigo Yoshio 1-Discente do Curso Sistemas de Informação FAEG/Garça 2-Docente do Curso Sistemas
Leia maisFundamentosemInformática
FundamentosemInformática 04 Software Conteúdo Conceito de Software Classificação de Softwares Conceito de Sistema Operacional(S.O.) FunçõesBásicasdeumS.O. um Arquivos Atributos Diretórios 1 -Conceitos
Leia maisLINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO. Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto
LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto Conceitos de Linguagens de Roteiro: Apresentação do plano de ensino; Apresentação do plano de
Leia maisLÓGICA DE PROGRAMAÇÃO
Todos direitos reservados. Proibida a reprodução, mesmo parcial, por qualquer processo mecânico, eletrônico, reprográfico, etc., sem a autorização, por escrito, do(s) autor(es) e da editora. LÓGICA DE
Leia maisFramework.NET, Microsoft Visual C# 2010 Express e Elementos da Linguagem C#
Linguagem de Programação 3 Framework.NET, Microsoft Visual C# 2010 Express e Elementos da Linguagem C# Prof. Mauro Lopes 1-31 35 Objetivos Nesta aula iremos apresentar a tecnologia.net, o ambiente de desenvolvimento
Leia maisPROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br
- Aula 5 - O NÍVEL DA LINGUAGEM DE MONTAGEM 1. INTRODUÇÃO É relativamente fácil compreender os fundamentos da programação de computadores, sob o ponto de vista da inteligibilidade dos comandos de alto
Leia maisCurso de Programação Computadores
3 O Primeiro Programa em C Unesp Campus de Guaratinguetá Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro 3 O Primeiro Programa em C 3.1 - Introdução Depois dos conceitos
Leia maisFigura 1 - O computador
Organização e arquitectura dum computador Índice Índice... 2 1. Introdução... 3 2. Representação da informação no computador... 4 3. Funcionamento básico dum computador... 5 4. Estrutura do processador...
Leia maisO Primeiro Programa em Visual Studio.net
O Primeiro Programa em Visual Studio.net Já examinamos o primeiro programa escrito em C que servirá de ponto de partida para todos os demais exemplos e exercícios do curso. Agora, aprenderemos como utilizar
Leia maisLinguagens de. Aula 01. Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br
Linguagens de III Aula 01 Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br Linguagens de III Horário das Aulas: 6as feiras das 7h40 às 10h55 Objetivo principal desta disciplina é: utilizar
Leia maisLinguagem de Programação Introdução a Linguagem Java
Linguagem de Programação Introdução a Linguagem Java Rafael Silva Guimarães Instituto Federal do Espírito Santo Campus Cachoeiro de Itapemirim Definição A linguagem Java foi desenvolvida pela Sun Microsystems,
Leia maisInformática I. Aula 5. http://www.ic.uff.br/~bianca/informatica1/ Aula 5-13/05/2006 1
Informática I Aula 5 http://www.ic.uff.br/~bianca/informatica1/ Aula 5-13/05/2006 1 Ementa Histórico dos Computadores Noções de Hardware e Software Microprocessadores Sistemas Numéricos e Representação
Leia maisResolução de problemas e desenvolvimento de algoritmos
SSC0101 - ICC1 Teórica Introdução à Ciência da Computação I Resolução de problemas e desenvolvimento de algoritmos Prof. Vanderlei Bonato Prof. Cláudio Fabiano Motta Toledo Sumário Análise e solução de
Leia mais[RÓTULO:] MNEMÔNICO [OPERANDOS] [;COMENTÁRIO]
Instruções de uso do montador DAEDALUS (baseadas em texto extraído da monografia apresentada como trabalho de diplomação no curso de Bacharelado em Ciência da Computação por Luís Ricardo Schwengber, sob
Leia maisJava. Marcio de Carvalho Victorino www.dominandoti.eng.br
Java Marcio de Carvalho Victorino www.dominandoti.eng.br 3. Considere as instruções Java abaixo: int cont1 = 3; int cont2 = 2; int cont3 = 1; cont1 += cont3++; cont1 -= --cont2; cont3 = cont2++; Após a
Leia maisAutoria:Aristófanes Corrêa Silva Adaptação: Alexandre César M de Oliveira
Unified Modeling Language (UML) Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Introdução Autoria:Aristófanes Corrêa Silva Adaptação: Alexandre
Leia maisProgramação de Computadores III
Programação de Computadores III Introdução a Linguagens de Programação Professor Leandro Augusto Frata Fernandes laffernandes@ic.uff.br Material disponível em http://www.ic.uff.br/~laffernandes/teaching/2013.1/tcc-00.157
Leia maisUNIVERSIDADE FEDERAL DE SANTA CATARINA MODELAGEM DE UMA PLATAFORMA VIRTUAL PARA SISTEMAS EMBUTIDOS BASEADA EM POWERPC
UNIVERSIDADE FEDERAL DE SANTA CATARINA DANIEL CARLOS CASAROTTO JOSE OTÁVIO CARLOMAGNO FILHO MODELAGEM DE UMA PLATAFORMA VIRTUAL PARA SISTEMAS EMBUTIDOS BASEADA EM POWERPC Florianópolis, 2004 DANIEL CARLOS
Leia maisIntrodução às Linguagens de Programação
Introdução às Linguagens de Programação Histórico de Linguagens de Programação O computador não faz nada sozinho Precisamos informar, de forma clara, como ele deve executar as tarefas Ou seja, o computador
Leia maisAula teórica 3. Tema 3.Computadores e linguagens Linguagens de Programação Compilação e linkagem LP Java. Preparado por eng.
Aula teórica 3 Tema 3.Computadores e linguagens Linguagens de Programação Compilação e linkagem LP Java Preparado por eng.tatiana Kovalenko Linguagens de Programação Para escrever programas é necessário
Leia maisAula 2. Objetivos Conceitos; Instalação do Text Pad; Entendendo o código java do AloMundo1 Codificação do AloMundo2,AloMundo3 e AloMundo4.
Aula 2 Objetivos Conceitos; Instalação do Text Pad; Entendendo o código java do AloMundo1 Codificação do AloMundo2,AloMundo3 e AloMundo4. Conceitos O software controla os computadores(freqüentemente conhecido
Leia maisUniversidade do Estado da Bahia UNEB Departamento de Ciências Exatas e da Terra - Campus I
Metodologia de Desenvolvimento de Sistemas II/CPD025 Conceitos orientação a objetos. Evolução das técnicas de modelagem orientadas a objetos. Estrutura da linguagem UML. Conceito de processo interativo
Leia maisDisciplina: Introdução à informática Profª Érica Barcelos
Disciplina: Introdução à informática Profª Érica Barcelos CAPÍTULO 3 1. ARQUITETURA DO COMPUTAÇÃO- SOFTWARE Vimos nos capítulos anteriores que durante muitas décadas vários projetos foram realizados para
Leia maisLINGUAGEM C UMA INTRODUÇÃO
LINGUAGEM C UMA INTRODUÇÃO AULA 1 Conceitos muito básicos 1 Introdução O C nasceu na década de 70. Seu inventor, Dennis Ritchie, implementou-o pela primeira vez usando um DEC PDP-11 rodando o sistema operacional
Leia maisCurso de Eng. Informática Linguagens de Programação. C Sharp University Data Processing. (C Sharp Universidade de Processamento de Dados) Docente:
Trabalho elaborado por: Carlos Palma nº5608 Curso de Eng. Informática Linguagens de Programação C Sharp University Data Processing (C Sharp Universidade de Processamento de Dados) Docente: José Jasnau
Leia maisMC-102 Aula 01. Instituto de Computação Unicamp
MC-102 Aula 01 Introdução à Programação de Computadores Instituto de Computação Unicamp 2015 Roteiro 1 Por que aprender a programar? 2 Hardware e Software 3 Organização de um ambiente computacional 4 Algoritmos
Leia maisLógica de Programação
Lógica de Programação Softblue Logic IDE Guia de Instalação www.softblue.com.br Sumário 1 O Ensino da Lógica de Programação... 1 2 A Ferramenta... 1 3 Funcionalidades... 2 4 Instalação... 3 4.1 Windows...
Leia maisAlgoritmo e Programação
Algoritmo e Programação Professor: José Valentim dos Santos Filho Colegiado: Engenharia da Computação Prof.: José Valentim dos Santos Filho 1 Ementa Noções básicas de algoritmo; Construções básicas: operadores,
Leia maisCURSO DE PROGRAMAÇÃO EM JAVA
CURSO DE PROGRAMAÇÃO EM JAVA Introdução para Iniciantes Prof. M.Sc. Daniel Calife Índice 1 - A programação e a Linguagem Java. 1.1 1.2 1.3 1.4 Linguagens de Programação Java JDK IDE 2 - Criando o primeiro
Leia maisINTRODUÇÃO À PROGRAMAÇÃO BCC 201 TURMAS 31, 32 E 33 2015-2 AULA TEÓRICA 2 PROF. MARCELO LUIZ SILVA (R E D)
Universidade Federal de Ouro Preto - UFOP Instituto de Ciências Exatas e Biológicas - ICEB Departamento de Computação - DECOM INTRODUÇÃO À PROGRAMAÇÃO BCC 201 TURMAS 31, 32 E 33 2015-2 1 AULA TEÓRICA 2
Leia maisHardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)
Hardware (Nível 0) Organização O AS/400 isola os usuários das características do hardware através de uma arquitetura de camadas. Vários modelos da família AS/400 de computadores de médio porte estão disponíveis,
Leia maisAnálise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)
Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 1 Prof. Cristóvão Cunha Objetivos de aprendizagem
Leia maisSistemas Operacionais
Sistemas Operacionais Aula 6 Estrutura de Sistemas Operacionais Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso
Leia maisALGORITMOS PARTE 01. Fabricio de Sousa Pinto
ALGORITMOS PARTE 01 Fabricio de Sousa Pinto Algoritmos: Definição 2 É uma sequência de instruções finita e ordenada de forma lógica para a resolução de uma determinada tarefa ou problema. Algoritmos 3
Leia maisNotas de Aula 04: Casos de uso de um sistema
Notas de Aula 04: Casos de uso de um sistema Objetivos da aula: Aprender os elementos básicos da modelagem por casos de uso Utilizar as associações entre casos de uso, atores e demais artefatos Compreender
Leia maisSISTEMAS OPERACIONAIS
SISTEMAS OPERACIONAIS Tópico 4 Estrutura do Sistema Operacional Prof. Rafael Gross prof.rafaelgross@fatec.sp.gov.br FUNÇÕES DO NUCLEO As principais funções do núcleo encontradas na maioria dos sistemas
Leia maisARQUITETURA DE COMPUTADORES - 1866
7 Unidade Central de Processamento (UCP): O processador é o componente vital do sistema de computação, responsável pela realização das operações de processamento e de controle, durante a execução de um
Leia maisAULA 2: INTRODUÇÃO A LINGUAGEM DE C. Curso: Ciência da Computação Profª.: Luciana Balieiro Cosme
AULA 2: INTRODUÇÃO A LINGUAGEM DE C Curso: Ciência da Computação Profª.: Luciana Balieiro Cosme Agenda Introdução a linguagem C Compiladores Variáveis IDEs Exemplos Exercícios Introdução A Linguagem C
Leia maisREVISÃO ENGENHARIA DO SOFTWARE. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com
REVISÃO ENGENHARIA DO SOFTWARE Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com Software Sequencia de Instruções a serem seguidas ou executadas Dados e rotinas desenvolvidos por computadores Programas
Leia maisProcesso de Desenvolvimento Unificado
Processo de Desenvolvimento Unificado Processo de Desenvolvimento de Software? Conjunto de atividades bem definidas; com responsáveis; com artefatos de entrada e saída; com dependências entre as mesmas
Leia maisApostila de Fundamentos de Programação I. Prof.: André Luiz Montevecchi
Apostila de Fundamentos de Programação I Prof: André Luiz Montevecchi Introdução O mundo atual é dependente da tecnologia O uso intenso de diversos aparatos tecnológicos é parte integrante do nosso dia-a-dia
Leia maisSintaxe e Semântica. Fases da Compilação. programa fonte
Sintaxe e Semântica mleal@inf.puc-rio.br Fases da Compilação programa fonte tokens parse tree árvore anotada ou outra forma intermediária código intermediário código objeto código objeto otimizado scanner
Leia mais11/3/2009. Software. Sistemas de Informação. Software. Software. A Construção de um programa de computador. A Construção de um programa de computador
Sistemas de Informação Prof. Anderson D. Moura Um programa de computador é composto por uma seqüência de instruções, que é interpretada e executada por um processador ou por uma máquina virtual. Em um
Leia maisBanco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas
Processamento e Otimização de Consultas Banco de Dados Motivação Consulta pode ter sua resposta computada por uma variedade de métodos (geralmente) Usuário (programador) sugere uma estratégia para achar
Leia maisCapítulo 1. Introdução. 1.1 Linguagens. OBJETIVOS DO CAPÍTULO Ao final deste capítulo você deverá ser capaz de:
i Sumário 1 Introdução 1 1.1 Linguagens....................................... 1 1.2 O que é um Compilador?................................ 2 1.3 Processadores de Programas: Compiladores, Interpretadores
Leia maisPROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE Introdução Modelos de Processo de Desenvolvimento de Software Os modelos de processos de desenvolvimento de software surgiram pela necessidade de dar resposta às
Leia mais1. NÍVEL CONVENCIONAL DE MÁQUINA
1. NÍVEL CONVENCIONAL DE MÁQUINA Relembrando a nossa matéria de Arquitetura de Computadores, a arquitetura de Computadores se divide em vários níveis como já estudamos anteriormente. Ou seja: o Nível 0
Leia maisUniversidade Católica de Petrópolis Análise Orientada a Objetos. Introdução
Universidade Católica de Petrópolis Análise Orientada a Objetos Introdução 1 O que é um software? Modelagem Um conjunto de instruções (programa de computador) que quando executados fornecem funções e desempenho
Leia maisInterface gráfica para compiladores gratuitos baseados em linha de comando disponíveis na internet
1. Autores Interface gráfica para compiladores gratuitos baseados em linha de comando disponíveis na internet Luciano Eugênio de Castro Barbosa Flavio Barbieri Gonzaga 2. Resumo O custo de licenciamento
Leia maisAlgoritmos não se aprendem: Copiando algoritmos Estudando algoritmos Algoritmos só se aprendem: Construindo algoritmos Testando algoritmos
1. INTRODUÇÃO A ALGORITMOS O uso de algoritmos é quase tão antigo quanto a matemática. Com o passar do tempo, entretanto, ele foi bastante esquecido pela matemática. Com o advento das máquinas de calcular
Leia maisGEADA. Gerador de Expressões Algébricas em Digrafos Acíclicos. para versão 1.0, de agosto/2008. Autor: Márcio Katsumi Oikawa
GEADA Gerador de Expressões Algébricas em Digrafos Acíclicos para versão 1.0, de agosto/2008. Autor: Márcio Katsumi Oikawa 1 1 Introdução O GEADA (Gerador de Expressões Algébricas em Digrafos Acíclicos)
Leia maisESTENDENDO A UML PARA REPRESENTAR RESTRIÇÕES DE INTEGRIDADE
ESTENDENDO A UML PARA REPRESENTAR RESTRIÇÕES DE INTEGRIDADE Fabiana Gomes Marinho Faculdade Lourenço Filho Resumo: Na UML, a modelagem conceitual dos dados é descrita pelo diagrama de classes, que através
Leia maisMetodologias de Desenvolvimento de Sistemas. Analise de Sistemas I UNIPAC Rodrigo Videschi
Metodologias de Desenvolvimento de Sistemas Analise de Sistemas I UNIPAC Rodrigo Videschi Histórico Uso de Metodologias Histórico Uso de Metodologias Era da Pré-Metodologia 1960-1970 Era da Metodologia
Leia maisGeração e Otimização de Código
Geração e Otimização de Código Representação de código intermediária Código de três endereços, P-código Técnicas para geração de código Otimização de código Prof. Thiago A. S. Pardo 1 Estrutura geral de
Leia maisEstrutura de Dados. Ricardo José Cabeça de Souza www.ricardojcsouza.com.br ricardo.souza@ifpa.edu.br. Parte 1
Estrutura de Dados Ricardo José Cabeça de Souza www.ricardojcsouza.com.br Parte 1 MODELO DE UM COMPUTADOR CPU Central Processing Unit MODELO DE UM COMPUTADOR O canal de comunicação (conhecido como BUS)
Leia maisUML e a Ferramenta Astah. Profa. Reane Franco Goulart
UML e a Ferramenta Astah Profa. Reane Franco Goulart História da UML o Percebeu-se a necessidade de um padrão para a modelagem de sistemas, que fosse aceito e utilizado amplamente. o Alguns esforços nesse
Leia maisSistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 2. Cursos de Computação
Cursos de Computação Sistemas Operacionais Prof. M.Sc. Sérgio Teixeira Aula 05 Estrutura e arquitetura do SO Parte 2 Referência: MACHADO, F.B. ; MAIA, L.P. Arquitetura de Sistemas Operacionais. 4.ed. LTC,
Leia mais3.1 Definições Uma classe é a descrição de um tipo de objeto.
Unified Modeling Language (UML) Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Diagrama de Classes Autoria:Aristófanes Corrêa Silva Adaptação:
Leia maisPalavras-Chaves: Arquitetura, Modelagem Orientada a Objetos, UML.
MODELAGEM ORIENTADA A OBJETOS APLICADA À ANÁLISE E AO PROJETO DE SISTEMA DE VENDAS ALTEMIR FERNANDES DE ARAÚJO Discente da AEMS Faculdades Integradas de Três Lagoas ANDRE LUIZ DA CUNHA DIAS Discente da
Leia maisNoções de. Microsoft SQL Server. Microsoft SQL Server
Noções de 1 Considerações Iniciais Basicamente existem dois tipos de usuários do SQL Server: Implementadores Administradores 2 1 Implementadores Utilizam o SQL Server para criar e alterar base de dados
Leia maisAula 4 Pseudocódigo Tipos de Dados, Expressões e Variáveis
1. TIPOS DE DADOS Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. Estas informações podem ser classificadas em dois tipos: As instruções, que
Leia mais