Literatura executável: interpretando algoritmos em notações arbitrárias

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

Download "Literatura executável: interpretando algoritmos em notações arbitrárias"

Transcrição

1 Literatura executável: interpretando algoritmos em notações arbitrárias Thiago Bezerra Lima e Silva 1, André Luís Brasil Cavalcante 1 1 UPIS União Pioneira de Integração Social CEP Brasília DF Tel.: (61) tsilva@sourcecraft.info, cavalcantealb@yahoo.com.br Abstract. Currently, there is no single, standard and wide accepted notation to write algorithms in Portuguese. Each text book available about programming logic introduces a specific notation and many programming professors adopt the notation that best fits his or her classes. Moreover, each portugol interpreter available defines its own language. Given the conflicts originated from the disagreement of notations adopted by the literature, in programming courses and by interpreters, this paper presents a tool for executing algorithms written in an arbitrary notation, allowing lexical and syntactical definitions to be easily modified as a means to wholly satisfy the class style and associated literature of programming introduction courses. Keywords: algorithm, programming language, interpreter Resumo. Atualmente, não há uma linguagem de programação em português amplamente aceita para descrever algoritmos. Em geral, cada livro disponível sobre lógica de programação utiliza uma notação específica e cada professor que leciona introdução à programação adota a notação que melhor se ajusta às suas aulas. Ainda, cada interpretador de portugol disponível define sua própria linguagem. Em meio aos conflitos oriundos da discordância entre notações utilizadas na literatura, em sala de aula e por interpretadores, este artigo apresenta uma ferramenta para a execução de algoritmos cuja linguagem pode ser modificada facilmente de forma a satisfazer o estilo de aula e a literatura utilizada em um curso de lógica de programação. Palavras-chave: algoritmo, linguagem de programação, interpretador 1. Introdução Diversos livros sobre o ensino de algoritmos encontram-se disponíveis atualmente e muitos destes livros foram escritos usando uma abordagem particular, muitas vezes, em função da experiência do autor em ministrar aulas de introdução à programação. Ao seguir uma abordagem em particular, estes livros apresentam, também, notações específicas para os algoritmos, sendo que estas diferem pouco ou muito das notações utilizadas em obras semelhantes. Há que se considerar, também, a adoção de interpretadores de algoritmos como ferramenta auxiliar de aprendizagem. E estas, por sua vez, também utilizam uma linguagem própria. Não raro, os professores que adotam

2 tais ferramentas acabam tendo que considerar se devem adotar a linguagem da ferramenta ou a linguagem de uma das obras que constam na bibliografia do curso. Por outro lado, não só com base nos interpretadores ou na literatura uma notação pode ser favorecida para uso em sala de aula. Disciplinas subseqüentes que adotam uma linguagem de programação específica podem ser beneficiadas se os alunos praticarem, anteriormente, a lógica de programação em uma linguagem algorítmica cuja sintaxe e semântica se assemelham à sintaxe e semântica da linguagem em questão. Com todos esses aspectos a considerar, este trabalho apresenta o X-Portugol, um interpretador que possibilita ao usuário definir e modificar facilmente as regras léxicas e sintáticas de sua linguagem algorítmica, permitindo adaptar a linguagem a um estilo específico, ou à notação de uma literatura em particular. O interpretador se baseia fortemente na linguagem OMeta (Warth, A. and Piumarta, I. 2007), uma linguagem orientada à objetos para casamento de padrões e, por sua vez, em Parsing Expression Grammar (Ford, 2004) ou PEG, uma fundamentação para descrição sintática baseada em reconhecimento. Neste artigo, apresenta-se na Seção 2 uma introdução às PEGs e à extensão OMeta. A Seção 3 utiliza as noções previamente discutidas para definir a linguagem base do interpretador X-Portugol. Na Seção 4, as técnicas de adaptação léxica e sintática são apresentadas. A Seção 5 apresenta futuras direções e, finalmente, a Seção 6 conclui o trabalho. 2. PEGs e orientação à objeto Ao construir uma linguagem de programação, é comum considerar a prática de definir as regras léxicas e sintáticas utilizando linguagens regulares e gramáticas livres de contexto (GLCs). É certamente razoável supor que a maior parte das implementações de linguagens de programação utiliza estes dois formalismos. Das definições regulares, em geral, são construídos os autômatos finitos correspondentes cuja tarefa é reconhecer padrões léxicos. Das regras gramaticais são construídos os parsers que devem reconhecer a sintaxe da linguagem. Muitas das técnicas empregadas para a construção de compiladores são apresentadas em obras como a de Aho et al. (1995). Uma alternativa a esta abordagem é definir as regras léxicas e sintáticas utilizando PEGs, ou Parsing Expression Grammars. Estas gramáticas, assim como as GLCs, possuem regras na forma A e, onde A é um não-terminal e e é uma expressão de parsing (PE). Tais expressões podem ser compostas por outras expressões em seqüência, similar às GLCs, e alguns operadores podem ser aplicados sobre elas, como * (zero ou mais ocorrências) e + (uma ou mais ocorrências). Nas PEGs, uma regra pode possuir múltiplas definições, por exemplo, utilizando um operador como, mas, diferente das GLCs, as escolhas são prioritárias, ou seja, as tentativas de derivação acontecem sempre na ordem em que as regras são definidas. Portanto, ambigüidades não ocorrem em gramáticas PEGs. Reconhecedores de PEGs podem ser implementados como Packrat Parsers (Ford, 2002). Sobre o conceito das PEGs, a linguagem OMeta se situa como uma extensão que permite o uso de construções encontradas em linguagens orientadas a objetos e admite a aplicação das regras gramaticais sobre dados arbitrários (não só cadeias de caracteres).

3 Cada gramática da linguagem OMeta possui um nome, define um namespace, e pode se relacionar com outra gramática por herança, o que significa que a gramática filha (subgramática) efetivamente herda as regras definidas na gramática mãe (super-gramática). No que diz respeito às regras gramaticais, cada regra pode ter um conjunto de definições e uma ação semântica associada para cada definição, ativada quando os dados de entrada são reconhecidos pela respectiva definição. Tal ação pode ser expressa em uma linguagem de programação específica e, em geral, corresponde à linguagem hospedeira na qual a OMeta foi implementada. Ainda, as regras podem retornar valores (referentes à última expressão reconhecida na definição ou ao valor de sua ação semântica) e estes valores podem ser manipulados associando uma variável à PE correspondente. Cada instância de uma gramática também possui um estado tal qual um objeto em linguagens orientadas à objetos, e as regras e ações semânticas podem consultar os dados do estado e das variáveis associadas às PEs durante o processo de reconhecimento. Para os propósitos deste artigo, uma implementação da linguagem OMeta, chamada de S-OMeta, foi desenvolvida utilizando a linguagem de programação Scheme. Esta implementação utiliza algumas convenções sintáticas, descritas na Tabela 1. Considerando a natureza dinâmica da linguagem Scheme, a facilidade de se definirem ou modificarem regras gramaticais, inclusive em tempo de execução, fica evidente. Ademais, nestes quesitos, esta facilidade dificilmente encontra correspondência quando se adotam técnicas tradicionais de análise léxica e sintática. Regra Tabela 1. Convenções sintáticas da linguagem S-OMeta Descrição da regra A ::= e 1 e2 ; Uma seqüência de PEs. A ::= e 1 e2 ; Escolha prioritária. A ::= ~ e ; Negação da expressão e. A ::= e * ; Zero ou mais ocorrências de e. A ::= e + ; Uma ou mais ocorrências de e. A ::= e? ; Zero ou uma ocorrência de e. A ::= ^; A ::= {e} ; Agrupamento. A ::= Referência à regra A da super-gramática. e : x ; Associa a variável x ao valor da expressão e. A ::= abc ; A ::= `abc`; A ::= abc ; A ::= e => s-expr; Seqüência de caracteres. Seqüência de caracteres seguida, ao final, de zero ou mais espaços em branco. Seqüência de caracteres seguida, ao final, de um ou mais espaços em branco. s-expr é uma ação semântica escrita em Scheme.

4 3. Uma linguagem de algoritmos básica Nesta Seção, é descrita uma linguagem básica para algoritmos em português. A partir desta linguagem básica, aqui chamada de P-Portugol, extensões, modificações ou mesmo novas linguagens derivadas podem ser definidas com base no material descrito na Seção anterior. O algoritmo da Figura 1 apresenta um exemplo de código escrito na linguagem P-Portugol. algoritmo maior_numero; var cont : inteiro; num : inteiro; maior : inteiro; inicio cont <- 0; maior <- 0; enquanto cont <= 10 faca escreva("digite um número"); leia(num); se num > maior entao maior <- num; fim-se cont <- cont + 1; fim-enquanto escreva("o maior número lido:", maior); fim Figura 1. Algoritmo maior_numero escrito em P-Portugol A definição da linguagem P-Portugol escrita em S-OMeta se encontra no anexo A. Regras gramaticais pré-definidas como spaces e digit são descritas na Tabela 2. Cada ação semântica das regras gramaticais é codificada em Scheme e tem como objetivo gerar uma árvore sintática abstrata (AST). Como o propósito deste trabalho é descrever os mecanismos que permitem modificar os termos léxicos e a sintaxe da linguagem, relevam-se os detalhes de análise semântica e execução de códigos que sucedem após a geração da AST e supõe-se a existência destes módulos para a execução dos algoritmos. Expressão space spaces Tabela 2. Regras pré-definidas na linguagem S-Ometa Descrição Qualquer caractere que corresponde a um espaço em branco. Zero ou mais caracteres que correspondem a um espaço em branco. digit Qualquer caractere que representa um digito (0 à 9). alpha-chars Um conjunto de caracteres que formam um identificador (equivalente à expressão regular [a-z][a-z0-9_\-]*). $ Fim da entrada de dados.

5 A linguagem P-Portugol define, então, algumas construções básicas de condição e repetição e permite declarações de variáveis de tipo inteiro, real, caractere e lógico. Os termos da linguagem não utilizam acentos e são oferecidas duas funções, leia e escreva, de entrada e saída, respectivamente. Com a descrição da linguagem P-Portugol, pode-se considerar duas formas de adaptar ou estender a linguagem: Modificando a própria gramática; Criando uma nova gramática que herda as regras de uma super gramática. Modificar a própria gramática oferece a facilidade de se trabalhar com as próprias definições diretamente, permitindo adequá-las ao intento. Por outro lado, as definições que existiam em um momento anterior às modificações são, em princípio, perdidas. Ao se criar, então, uma nova gramática que herda as regras de uma supergramática, as definições da super-gramática são preservadas, e redefinições de regras podem ser feitas na sub-gramática. Com isso, uma linguagem base pode ser útil para diversas derivações, simultaneamente. Tratando-se de algoritmos executáveis, a única restrição que se faz às adaptações nas gramáticas é que a AST gerada ao final do reconhecimento continue sendo aceita nas etapas de backend seguintes (análise semântica, e interpretação, por exemplo). Ainda, com algumas adaptações no backend é possível enriquecer o vocabulário da linguagem algorítmica oferecendo comandos de acesso a arquivos, sockets, controle de elementos de GUI. 4. Adaptando a linguagem Quando se adota um livro como Manzano (2008) para os estudos de lógica de programação e, ao mesmo tempo, se deseja utilizar um interpretador de pseudo-código, é interessante que a notação utilizada no livro seja compatível com a notação que o interpretador é capaz de executar. No entanto, comparando a linguagem P-Portugol com a notação algorítmica do livro em questão, observa-se que existem algumas diferenças léxicas e sintáticas. Para evidenciar estas diferenças, a Figura 2 apresenta uma adaptação do algoritmo da Figura 1 utilizando a notação deste livro. Observa-se, então, que este autor utiliza a palavra-chave programa ao invés de algoritmo e comentários podem ser escritos utilizando-se chaves. As palavras-chave deste livro são acentuadas de acordo com o português, onde em P-Portugol os acentos são ignorados. Algumas sentenças divergem no uso de pontuação final (como o uso do ; ) e, em especial, os comandos escreva e leia divergem na utilização de parênteses para agrupar os parâmetros. Finalmente, as palavras-chave compostas são separadas por - em P-Portugol, onde o autor utiliza _. Para que o algoritmo da Figura 2 seja executado pelo interpretador X-Portugol, é necessário fazer algumas modificações na definição da linguagem P-Portugol.

6 programa maior_numero {algoritmo ilustrativo} var num : inteiro cont : inteiro maior : inteiro início cont <- 0 maior <- 0 enquanto cont <= 10 faça escreva "Digite um número:" leia num se num > maior então maior <- num fim_se cont <- cont + 1 fim_enquanto escreva "O maior número lido:", maior fim Figura 2. O algoritmo maior_numero na notação do livro (Manzano 2008) Utilizando herança, a gramática descrita na Figura 3 apresenta uma definição da linguagem Manzano-Portugol em S-OMeta. Esta gramática herda as regras da supergramática P-Portugol. Considerando apenas a herança, pode-se afirmar que ambas as gramáticas definem a mesma linguagem. Porém, as regras adicionadas em Manzano- Portugol modificam o reconhecimento da linguagem P-Portugol em pontos específicos. ometa Manzano-Portugol <: P-Portugol { space ::= '{' {~'}' _}* '}'? ^ ; fim-sentenca ::= spaces; cmd-escreva ::= escreva expressao:x {`,` expressao}*:xs fim-sentenca => `(escreva,(cons x xs)); cmd-leia ::= leia identificador:x {`,` identificador}*:xs fim-sentenca => `(leia,(cons x xs)); } algoritmo ::= "programa"; inicio ::= "início"; entao ::= "então"; senao ::= "senão"; faca ::= "faça"; fim-se ::= "fim_se"; fim-enquanto ::= "fim_enquanto"; Figura 3. Extensão da linguagem P-Portugol em S-OMeta A primeira regra da gramática, space, sobre-escreve uma regra existente adicionando informações para reconhecer comentários entre chaves. Já a segunda regra, fimsentenca, que originalmente reconhecia um caractere de ponto e vírgula ( ; ) foi sobre-

7 escrita para reconhecer apenas espaços em branco. As regras cmd-escreva e cmd-leia foram alteradas para não obrigar os parênteses em volta dos parâmetros dos respectivos comandos. As demais regras modificam a lexicografia de algumas palavras-chave da linguagem. Dessa forma, com estas extensões, é possível utilizar a gramática Manzano- Portugol para processar o algoritmo da Figura 2. Este mesmo procedimento pode ser aplicado para fazer com que o interpretador seja capaz de reconhecer a linguagem completa utilizada por Manzano (2008), assim como as linguagens utilizadas por Silva (2007) e Vilarim (2004). 5. Futuras direções Atualmente, o interpretador X-Portugol não possui mecanismos sofisticados de identificação e reportagem de erros característica bastante desejável para o público alvo da ferramenta, limitando-se apenas a informar que houve um erro, caso o reconhecimento da entrada não tenha sido bem sucedido. Acredita-se que tais mecanismos possam ser incorporados incrementando a linguagem de casamento de padrões do S-OMeta e permitindo que seja feito reconhecimento de sentenças incorretas associando à elas mensagens de erro específicas tendo, com isso, um alto grau de precisão de reportagem de erros. Um ambiente integrado também pode ser desenvolvido onde as funcionalidades de execução, depuração e checagem de erros sejam facilmente manipuladas pelos usuários. Ainda, o ambiente pode permitir ao usuário escolher qual das linguagens présuportadas, especificamente, ele gostaria de utilizar para escrever algoritmos (ou mesmo, se deseja criar ou derivar uma nova notação!). 6. Conclusões Frente aos problemas encontrados no contexto de ensino-aprendizagem de algoritmos e lógica de programação, softwares que ajudam a ensinar os conceitos relativos ao raciocínio lógico, especialmente quando interagem bem com a literatura utilizada (ou estilo de aula adotado), podem ajudar os estudantes a compreender melhor os conceitos apresentados e debatidos. É, portanto, um sentimento comum que as ferramentas de apoio ao ensinoaprendizagem devem ser desenvolvidas e exploradas no contexto de sala de aula e este artigo apresenta uma ferramenta que pode ajudar a diminuir as barreiras que existem entre as diferentes notações adotadas, dando oportunidade aos professores para definir a notação algorítmica que melhor se encaixa ao estilo de suas aulas ou a literatura em uso, ao mesmo tempo em que permite, com relativa facilidade, a incorporação de novas notações para algoritmos que antes ficavam a cargo da imaginação para serem executados.

8 Referências Aho, Alfred V. and Sethi, Ravi and Ullman, Jeffrey D. (1995), Compiladores Princípios, Técnicas e Ferramentas. Rio de Janeiro, Guanabara Koogan. Ford, B. (2002). Packrat parsing: simple, powerful, lazy, linear time, functional pearl. In Proceedings of the Seventh ACM SIGPLAN international Conference on Functional Programming (Pittsburgh, PA, USA, October 04-06, 2002). ICFP '02. ACM, New York, NY, Ford, B. (2004). Parsing expression grammars: a recognition-based syntactic foundation. In: Proceedings of the 31st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (Venice, Italy, January 14-16, 2004). POPL '04. ACM, New York, NY, Manzano, José Augusto N. G. (2008), Algoritmos: lógica para desenvolvimento de programação. São Paulo: Érica, 21. ed. Silva, Camila Ceccatto da and de Paula, Everaldo A.. (2007), Lógica de Programação: aprendendo a programar. Santa Cruz do Rio Pardo, Editora Viena. Vilarim, Gilvan de Oliveira. (2004), Algoritmos: Programação para Iniciantes. Rio de Janeiro, Editora Ciência Moderna. Warth, A. and Piumarta, I. (2007). OMeta: an object-oriented language for pattern matching. In: Proceedings of the 2007 Symposium on Dynamic Languages (Montreal, Quebec, Canada, October 22-22, 2007). DLS '07. ACM, New York, NY, Anexo A: A definição da linguagem P-Portugol em S-OMeta ometa P-Portugol { algoritmo ::= "algoritmo"; var ::= "var"; inteiro ::= "inteiro"; real ::= "real"; caractere ::= "caractere"; literal ::= "literal"; logico ::= "logico"; inicio ::= "inicio"; escreva ::= "escreva"; leia ::= "leia"; se ::= "se"; entao ::= "entao"; senao ::= "senao"; fim-se ::= "fim-se"; enquanto ::= "enquanto"; faca ::= "faca"; fim-enquanto ::= "fim-enquanto"; vetor ::= "vetor"; de ::= "de"; verdadeiro ::= "verdadeiro"; falso ::= "falso"; fim ::= "fim"; e ::= "e"; ou ::= "ou"; nao ::= "nao";

9 igual ::= `=`; diferente ::= `<>`; maior ::= `>`; menor ::= `<`; maior-igual ::= `>=`; menor-igual ::= `<=`; potencia ::= `^`; simb-atrib ::= `<-`; aspas-literal-abre ::= '"'; aspas-literal-fecha ::= '"'; separador-decimal ::= '.'; fim-sentenca ::= `;`; fim-linha ::= ; portugol ::= spaces declaracao-algoritmo:nome declaracoes-e-comandos:x $ => `(algoritmo,nome,x); declaracoes-e-comandos ::= secao-declaracoes:vars bloco-principal:cmds => `(inicio,vars,cmds); declaracao-algoritmo ::= algoritmo identificador:nome fim-sentenca => nome; secao-declaracoes ::= var declaracoes-de-variaveis; declaracoes-de-variaveis ::= {declaracao-de-variavel:d fim-sentenca=> d}*:d => `(declaracoes,d); declaracao-de-variavel ::= lista-de-variaveis:v `:` tipo-de-dado:t => `(,t,v); lista-de-variaveis ::= identificador:x {`,` identificador}*:xs => (cons x xs); identificador ::= alpha-chars:i spaces => (string->symbol i); tipo-de-dado ::= {inteiro real caractere logico}:x => (string->symbol x); bloco-principal ::= inicio comandos:c fim => `(comandos,c); comandos ::= comando*; comando ::= cmd-atribuicao cmd-escreva cmd-leia cmd-se cmd-enquanto; cmd-atribuicao ::= lhs:l simb-atrib expressao:r fim-sentenca => `(<-,l,r); lhs ::= identificador; cmd-escreva ::= escreva `(` expressao:x {`,` expressao}*:xs `)` fim-sentenca => `(escreva,(cons x xs)); cmd-leia ::= leia `(` identificador:x {`,` identificador}*:xs `)` fim-sentenca => `(leia,(cons x xs)); cmd-se ::= se expressao:e entao comandos:x senao comandos:y fim-se => `(se,e,x,y) se expressao:e então comandos:x fim-se => `(se,e,x);

10 cmd-enquanto ::= enquanto expressao:e faca comandos:x fim-enquanto => `(enquanto,e,x); expressao ::= expr-ou; expr-ou ::= expr-e:x ou expr-e:xs => `(ou,x,xs) expr-e; expr-e ::= expr-rel:x e expr-rel:xs => `(e,x,xs) expr-rel; expr-rel ::= expr-soma:x { igual => '= diferente => '<> menor-igual => '<= maior-igual => '>= menor => '< maior => '> }:o expr-soma:xs => `(,o,x,xs) expr-soma; expr-soma ::= expr-mul:x {`+` => '+ `-` => '-}:o expr-mul:xs => `(,o,x,xs) expr-mul; expr-mul ::= expr-pot:x {`*` => '* `/` => '/ `%` => '%}:o expr-pot:xs => `(,o,x,xs) expr-pot; expr-pot ::= expr-unaria:x potencia expr-unaria:xs => `(^,x,xs) expr-unaria; expr-unaria ::= {`+` => '+ `-` => '- nao => 'nao}:o termo:x => `(,o,x) termo `(` expressao:e `)` => e; termo ::= carac-literal logico-literal real-literal inteiro-literal lhs; logico-literal ::= verdadeiro => #t falso => #f; carac-literal ::= aspas-literal-abre {~aspas-literal-fecha char:c => c}*:cs aspas-literal-fecha => (list->string cs); inteiro-literal ::= digit+:x spaces => (string->number (list->string x)); } real-literal ::= digit+:x separador-decimal digit+:xs spaces => (string->number (list->string (append x '(#\.) xs)));

Algoritmos com VisuAlg

Algoritmos com VisuAlg Algoritmos com VisuAlg Prof Gerson Volney Lagemann Depto Eng de Produção e Sistemas UDESC - CCT Algoritmos com VisuAlg Introdução A linguagem VisuAlg é simples, seu objetivo é disponibilizar um ambiente

Leia mais

3 Parsing Expression Grammars

3 Parsing Expression Grammars 3 Parsing Expression Grammars Parsing Expression Grammars (PEG) são um formalismo que descreve reconhecedores de linguagens (For04). PEGs são uma alternativa para gramáticas livres de contexto (CFGs) e

Leia mais

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

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

Leia mais

Algoritmo. Linguagem natural: o Ambígua o Imprecisa o Incompleta. Pseudocódigo: o Portugol (livro texto) o Visualg (linguagem) Fluxograma

Algoritmo. Linguagem natural: o Ambígua o Imprecisa o Incompleta. Pseudocódigo: o Portugol (livro texto) o Visualg (linguagem) Fluxograma Roteiro: Conceitos básicos de algoritmo, linguagem, processador de linguagem e ambiente de programação; Aspectos fundamentais da organização e do funcionamento de um computador; Construções básicas de

Leia mais

Programação de Computadores I Pseudocódigo PROFESSORA CINTIA CAETANO

Programação de Computadores I Pseudocódigo PROFESSORA CINTIA CAETANO Programação de Computadores I Pseudocódigo PROFESSORA CINTIA CAETANO Pseudocódigo Pseudocódigo é uma forma genérica de escrever um algoritmo, utilizando uma linguagem simples (nativa a quem o escreve,

Leia mais

Resolução de problemas e desenvolvimento de algoritmos

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

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS

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

Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura

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

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

Linguagem algorítmica: Portugol

Linguagem algorítmica: Portugol Programação de Computadores I Aula 03 Linguagem algorítmica: Portugol José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/34 Introdução I Lógica A lógica é usada

Leia mais

Algoritmo e Programação

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

ALGORITMOS PARTE 01. Fabricio de Sousa Pinto

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

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia de Computação CECOMP

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia de Computação CECOMP Algoritmos e Programação Ricardo Argenton Ramos Baseado nos slides do professor Jadsonlee da Silva Sá Ementa Conceito de algoritmo. Lógica de programação e programação estruturada. Linguagem de definição

Leia mais

Apostila de Fundamentos de Programação I. Prof.: André Luiz Montevecchi

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

Modelagem de Processos. Prof.: Fernando Ascani

Modelagem de Processos. Prof.: Fernando Ascani Modelagem de Processos Prof.: Fernando Ascani Modelagem da arquitetura de negócios Arquitetura Definições Aurélio: Informática: Estrutura e organização lógica de funcionamento de um sistema computacional.

Leia mais

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES 3.1 - IDENTIFICADORES Os objetos que usamos no nosso algoritmo são uma representação simbólica de um valor de dado. Assim, quando executamos a seguinte instrução:

Leia mais

Implementação de um analisador léxico: a primeira etapa na construção do compilador Marvel

Implementação de um analisador léxico: a primeira etapa na construção do compilador Marvel Implementação de um analisador léxico: a primeira etapa na construção do compilador Marvel Cláudio Lopes (peso 0.3), Gildo Leonel (peso 0.3), Sérgio Rossini (peso 0.3) 1. Visão Geral Departamento de Ciência

Leia mais

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

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

Leia mais

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

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

Leia mais

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

Aula 4 Pseudocódigo Tipos de Dados, Expressões e Variáveis

Aula 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

Algoritmos Computacionais ( Programas )

Algoritmos Computacionais ( Programas ) Algoritmos Computacionais ( Programas ) A partir deste tópico, consideramos a utilização do universo Computacional na solução de problemas. Para tanto devemos lembrar que a transposição de problemas do

Leia mais

Lógica. Everson Santos Araujo everson@por.com.br

Lógica. Everson Santos Araujo everson@por.com.br Lógica Everson Santos Araujo everson@por.com.br Conceitos Coerência de raciocínio, de idéias, ou ainda a sequência coerente, regular e necessária de acontecimentos, de coisas Dicionário Aurélio 2 Conceitos

Leia mais

Análise semântica. Análise Semântica. Estrutura de um compilador. Anotação da árvore sintática. Tipos de comunicação de atributos?

Análise semântica. Análise Semântica. Estrutura de um compilador. Anotação da árvore sintática. Tipos de comunicação de atributos? Estrutura de um compilador Análise semântica Tradução orientada pela sintaxe 1 2 Análise Semântica Anotação da árvore sintática Análise semântica: Tipos (& Declarações) Escopo Checagens estáticas: Idéia:

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Programação Introdução a Linguagem C Construções Básicas Programa em C #include int main ( ) { Palavras Reservadas } float celsius ; float farenheit ; celsius = 30; farenheit = 9.0/5

Leia mais

Compiladores. Análise léxica. Plano da aula. Vocabulário básico. Motivação para análise léxica. Estrutura de um compilador

Compiladores. Análise léxica. Plano da aula. Vocabulário básico. Motivação para análise léxica. Estrutura de um compilador Estrutura de um compilador Compiladores Análise lexical (1) Expressões Regulares 1 2 Plano da aula 1. Motivação do uso de E.R. e definições Linguagens, tokens, lexemas... 2. Regras de formação e exemplos

Leia mais

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

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

Sintaxe e Semântica. Fases da Compilação. programa fonte

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

O Processo de Programação

O Processo de Programação Programação de Computadores I Aula 04 O Processo de Programação José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/23 Algoritmo Um algoritmo é uma seqüência de

Leia mais

Aula 01. - Bibliografia - Definições - Operadores - Criação de um algoritmo - Exercícios. Algoritmo e Programação. Prof. Fábio Nelson.

Aula 01. - Bibliografia - Definições - Operadores - Criação de um algoritmo - Exercícios. Algoritmo e Programação. Prof. Fábio Nelson. - Bibliografia - Definições - Operadores - Criação de um algoritmo - Exercícios Aula 01 Slide 1 BIBLIOGRAFIA SCHILDT H. C Completo e Total, Makron Books. SP, 1997. Curso de linguagem C da UFMG. ZIVIANI,

Leia mais

Introdução à Lógica de Programação

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

Especificação do 3º Trabalho

Especificação do 3º Trabalho Especificação do 3º Trabalho I. Introdução O objetivo deste trabalho é abordar a prática da programação orientada a objetos usando a linguagem Java envolvendo os conceitos de classe, objeto, associação,

Leia mais

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

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

Leia mais

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

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação SOFT DISCIPLINA: Engenharia de software AULA NÚMERO: 08 DATA: / / PROFESSOR: Andrey APRESENTAÇÃO O objetivo desta aula é apresentar e discutir conceitos relacionados a modelos e especificações. Nesta aula

Leia mais

Processamento da Informação Teoria. Algoritmos e Tipos de dados

Processamento da Informação Teoria. Algoritmos e Tipos de dados Processamento da Informação Teoria Algoritmos e Tipos de dados Semana 01 Prof. Jesús P. Mena-Chalco 24/04/2013 (*) Slides adaptados das aulas do Prof. Harlen Costa Batagelo Algumas definições de algoritmo

Leia mais

A Linguagem Pascal e o Ambiente de Programação Dev-Pascal. Introdução à Ciência da Computação I

A Linguagem Pascal e o Ambiente de Programação Dev-Pascal. Introdução à Ciência da Computação I A Linguagem Pascal e o Ambiente de Programação Dev-Pascal Introdução à Ciência da Computação I Março/2004 Introdução (1 de 3) Homenagem a Blaise Pascal, filósofo e matemático do século XVII. Desenvolvida

Leia mais

VisuALG Estruturas de Repetição. Professores: Vilson Heck Junior vilson.junior@ifsc.edu.br Felipe Schneider Costa felipe.costa@ifsc.edu.

VisuALG Estruturas de Repetição. Professores: Vilson Heck Junior vilson.junior@ifsc.edu.br Felipe Schneider Costa felipe.costa@ifsc.edu. VisuALG Estruturas de Repetição Professores: Vilson Heck Junior vilson.junior@ifsc.edu.br Felipe Schneider Costa felipe.costa@ifsc.edu.br O Problema. Estruturas de Repetição: Introdução; Repita ate; Exemplo;

Leia mais

Programação para Computação

Programação para Computação Universidade Federal do Vale do São Francisco Programação para Computação Professor: Marcelo Santos Linder E-mail: marcelo.linder@univasf.edu.br Ementa Conceito de algoritmo. Lógica de programação e programação

Leia mais

Algoritmos e Programação Conceitos e Estruturas básicas (Variáveis, constantes, tipos de dados)

Algoritmos e Programação Conceitos e Estruturas básicas (Variáveis, constantes, tipos de dados) Algoritmos e Programação Conceitos e Estruturas básicas (Variáveis, constantes, tipos de dados) Os algoritmos são descritos em uma linguagem chamada pseudocódigo. Este nome é uma alusão à posterior implementação

Leia mais

ALGORITMOS. Supervisão: Prof. Dr.º Denivaldo Lopes

ALGORITMOS. Supervisão: Prof. Dr.º Denivaldo Lopes Laboratory of Software Engineering and Computer Network Engineering for a better life Universidade Federal do Maranhão Curso de Engenharia Elétrica ALGORITMOS Supervisão: Prof. Dr.º Denivaldo Lopes Adelman

Leia mais

Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Sistema Gerenciador de Banco de Dados

Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Sistema Gerenciador de Banco de Dados Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Um Sistema Gerenciador de Banco de Dados (SGBD) é constituído por um conjunto de dados associados a um conjunto de programas para acesso a esses

Leia mais

Algoritmos não se aprendem: Copiando algoritmos Estudando algoritmos Algoritmos só se aprendem: Construindo algoritmos Testando algoritmos

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

Organização de programas em Python. Vanessa Braganholo vanessa@ic.uff.br

Organização de programas em Python. Vanessa Braganholo vanessa@ic.uff.br Organização de programas em Python Vanessa Braganholo vanessa@ic.uff.br Vamos programar em Python! Mas... } Como um programa é organizado? } Quais são os tipos de dados disponíveis? } Como variáveis podem

Leia mais

COMPILADORES E INTERPRETADORES

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

Leia mais

Introdução à Linguagem

Introdução à Linguagem Introdução à Linguagem Curso de Nivelamento do PPGMNE Janeiro / 2011 Juliano J. Scremin jjscremin@jjscremin.t5.com.br Um pouco de história Um pouco de história: Nascimento do Python Um pouco de história:

Leia mais

1. Apresentação. 1.1. Objetivos

1. Apresentação. 1.1. Objetivos 1.1. Objetivos 1. Apresentação Neste capítulo estão descritos os objetivos gerais do livro, os requisitos desejáveis do estudante para que possa utilizá-lo eficientemente, e os recursos necessários em

Leia mais

Programação de Computadores

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

Leia mais

Diagrama de Classes. Um diagrama de classes descreve a visão estática do sistema em termos de classes e relacionamentos entre as classes.

Diagrama de Classes. Um diagrama de classes descreve a visão estática do sistema em termos de classes e relacionamentos entre as classes. 1 Diagrama de Classes Um diagrama de classes descreve a visão estática do sistema em termos de classes e relacionamentos entre as classes. Um dos objetivos do diagrama de classes é definir a base para

Leia mais

Algoritmos e Estrutura de Dados III. Árvores

Algoritmos e Estrutura de Dados III. Árvores Algoritmos e Estrutura de Dados III Árvores Uma das mais importantes classes de estruturas de dados em computação são as árvores. Aproveitando-se de sua organização hierárquica, muitas aplicações são realizadas

Leia mais

FAP - Faculdade de Apucarana Curso de Sistemas de Informação RESUMO EXPANDIDO DE TRABALHO DE CONCLUSÃO DE CURSO -

FAP - Faculdade de Apucarana Curso de Sistemas de Informação RESUMO EXPANDIDO DE TRABALHO DE CONCLUSÃO DE CURSO - FAP - Faculdade de Apucarana Curso de Sistemas de Informação RESUMO EXPANDIDO DE TRABALHO DE CONCLUSÃO DE CURSO RESUMO EXPANDIDO DE TRABALHO DE CONCLUSÃO DE CURSO - PLATAFORMA ARES: UMA PLATAFORMA VIRTUAL

Leia mais

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

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

Leia mais

Profº. Enrique Pimentel Leite de Oliveira

Profº. Enrique Pimentel Leite de Oliveira Profº. Enrique Pimentel Leite de Oliveira O termo orientação a objetos significa organizar o mundo real como uma coleção de objetos que incorporam estrutura de dados e um conjunto de operações que manipulam

Leia mais

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

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

Leia mais

PROGRAMAÇÃO DE COMPUTADORES (Teoria)

PROGRAMAÇÃO DE COMPUTADORES (Teoria) PC PROGRAMAÇÃO DE COMPUTADORES (Teoria) Aula 01 Prof. Ricardo Veras (prof.rveras@gmail.com) ALGORITMOS "Seqüência ordenada de passos, que deve ser seguida para a realização de um tarefa" "Algoritmo é um

Leia mais

Linguagem e Técnicas de Programação I Programação estruturada e fundamentos da linguagem C

Linguagem e Técnicas de Programação I Programação estruturada e fundamentos da linguagem C Linguagem e Técnicas de Programação I Programação estruturada e fundamentos da linguagem C Prof. MSc. Hugo Souza Material desenvolvido por: Profa. Ameliara Freire Continuando as aulas sobre os fundamentos

Leia mais

CONVENÇÃO DE CÓDIGO JAVA

CONVENÇÃO DE CÓDIGO JAVA CONVENÇÃO DE CÓDIGO JAVA Eligiane Ceron - Abril de 2012 Versão 1.0 Conteúdo Considerações iniciais... 2 Introdução... 2 Extensão de arquivos... 2 Arquivos de código Java... 2 Comentários iniciais... 2

Leia mais

Programação Orientada a Objetos Classes Abstratas Técnico em Informática. Prof. Marcos André Pisching, M.Sc.

Programação Orientada a Objetos Classes Abstratas Técnico em Informática. Prof. Marcos André Pisching, M.Sc. Classes Abstratas Técnico em Informática, M.Sc. Classes Abstratas 2 Classes Abstratas Abstração Devemos considerar as qualidades e comportamentos independentes dos objetos a que pertencem, isolamos seus

Leia mais

ICC Introdução para JavaScript

ICC Introdução para JavaScript ICC Introdução para JavaScript Arquitetura Genérica de um Computador Máquina de Von Neumann Diagrama conhecido como Máquina de Von Neumann (grande nome da informática) A finalidade de um computador é receber,

Leia mais

Informática I. Aula 6. http://www.ic.uff.br/~bianca/informatica1/ Aula 6-12/09/2007 1

Informática I. Aula 6. http://www.ic.uff.br/~bianca/informatica1/ Aula 6-12/09/2007 1 Informática I Aula 6 http://www.ic.uff.br/~bianca/informatica1/ Aula 6-12/09/2007 1 Ementa Noções Básicas de Computação (Hardware, Software e Internet) HTML e Páginas Web Internet e a Web Javascript e

Leia mais

OPERADORES E ESTRUTURAS DE CONTROLE

OPERADORES E ESTRUTURAS DE CONTROLE OPERADORES E ESTRUTURAS DE CONTROLE 3.1 Operadores Os operadores indicam o tipo de operação matemática que será executada gerando novos valores a partir de um ou mais operadores. São muito utilizados em

Leia mais

FAÇA FÁCIL: DRIVER IGS PARA COMUNICAÇÃO DE PROTOCOLOS PROPRIETÁRIOS INTRODUÇÃO

FAÇA FÁCIL: DRIVER IGS PARA COMUNICAÇÃO DE PROTOCOLOS PROPRIETÁRIOS INTRODUÇÃO FAÇA FÁCIL: DRIVER IGS PARA COMUNICAÇÃO DE PROTOCOLOS PROPRIETÁRIOS INTRODUÇÃO O Driver IGS possui um módulo de configuração que possibilita a comunicação com protocolos proprietários. Trata-se do Driver

Leia mais

Estruturas de entrada e saída

Estruturas de entrada e saída capa Estruturas de entrada e saída - A linguagem C utiliza de algumas funções para tratamento de entrada e saída de dados. - A maioria dessas funções estão presentes na biblioteca . - As funções

Leia mais

e à Linguagem de Programação Python

e à Linguagem de Programação Python Introdução a Algoritmos, Computação Algébrica e à Linguagem de Programação Python Curso de Números Inteiros e Criptografia Prof. Luis Menasché Schechter Departamento de Ciência da Computação UFRJ Agosto

Leia mais

CURSO B SICO DE PERL

CURSO B SICO DE PERL CURSO BÁSICO DE PERL CURSO BÁSICO DE PERL ESTRUTURA: 12 aulas de 2 horas e meia totalizando 30 horas. 2 créditos. É necessário 75% de presença (com exceções). Precisamos pensar em um método de avaliação.

Leia mais

Algoritmos Estruturas Seqüenciais. José Gustavo de Souza Paiva

Algoritmos Estruturas Seqüenciais. José Gustavo de Souza Paiva Algoritmos Estruturas Seqüenciais José Gustavo de Souza Paiva 1 Introdução Objetivo básico da computação auxiliar os seres humanos em trabalhos repetitivos e braçais, diminuindo i i d esforços e economizando

Leia mais

NOVIDADES DO JAVA PARA PROGRAMADORES C

NOVIDADES DO JAVA PARA PROGRAMADORES C PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB NOVIDADES DO JAVA PARA PROGRAMADORES C Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar o Conceito de Classes e Objetos Capacitar para a criação de objetos simples

Leia mais

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM 71 Introdução Difere dos níveis inferiores por ser implementado por tradução A tradução é usada quando um processador está disponível para uma mensagem fonte mas

Leia mais

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

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

Leia mais

Algoritmos e Programação Parte Teórica

Algoritmos e Programação Parte Teórica Universidade Federal do Vale do São Francisco Curso de Engenharia da Produção / Elétrica Algoritmos e Programação Parte Teórica Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br www.univasf.edu.br/~jorge.cavalcanti

Leia mais

1.1. Aplicações de TVD dinâmicas

1.1. Aplicações de TVD dinâmicas 1 Introdução Uma aplicação de TV Digital (TVD) comumente é composta por um vídeo principal associado a outros objetos (aplicações, imagens, vídeos, textos etc.), que são transmitidos em conjunto possibilitando

Leia mais

1.1. Organização de um Sistema Computacional

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

Leia mais

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi 5 Conclusão Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi permitir que scripts Lua instanciem e usem

Leia mais

Algoritmos e Estrutura de Dados. Introdução a Linguagem Python (Parte I) Prof. Tiago A. E. Ferreira

Algoritmos e Estrutura de Dados. Introdução a Linguagem Python (Parte I) Prof. Tiago A. E. Ferreira Algoritmos e Estrutura de Dados Aula 1 Introdução a Linguagem Python (Parte I) Prof. Tiago A. E. Ferreira Linguagem a ser Utilizada? Nossa disciplina é de Algoritmos e Estrutura de Dados, e não de linguagem

Leia mais

Introdução à Programação de Computadores

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

Leia mais

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

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

Leia mais

IFTO LÓGICA DE PROGRAMAÇÃO AULA 01

IFTO LÓGICA DE PROGRAMAÇÃO AULA 01 IFTO LÓGICA DE PROGRAMAÇÃO AULA 01 Prof. Manoel Campos da Silva Filho Tecnólogo em Processamento de Dados / Unitins Mestre em Engenharia Elétrica / UnB http://manoelcampos.com mcampos at ifto.edu.br Versão

Leia mais

Fluxo de trabalho do Capture Pro Software: Indexação de OCR e separação de documentos de código de correção

Fluxo de trabalho do Capture Pro Software: Indexação de OCR e separação de documentos de código de correção Este procedimento corresponde ao fluxo de trabalho de Indexação de OCR com separação de código de correção no programa de treinamento do Capture Pro Software. As etapas do procedimento encontram-se na

Leia mais

Algoritmos e Linguagem de Programação I

Algoritmos e Linguagem de Programação I Algoritmos e Linguagem de Programação I Roberto Ferreira roberto.ferreira@lapa.ifbaiano.edu.br 2014.1 Módulo I Aula 4 Introdução ao C Linguagem de Programação É um conjunto de regras sintáticas e semânticas

Leia mais

Modelagem de Casos de Uso (Parte 1)

Modelagem de Casos de Uso (Parte 1) Modelagem de Casos de Uso (Parte 1) Roteiro Introdução Descrição: Sistema de Ponto de Vendas Casos de Usos Atores Fluxo de Eventos Cenários Formato de Documentação de Casos de Uso Diagramas de Casos de

Leia mais

Engenharia de Software III

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

Leia mais

Introdução à Lógica de Programação (cont.)

Introdução à Lógica de Programação (cont.) Operadores Introdução à Programação (cont.) Luis Otavio Alvares Adaptado de slides das profas. Vania Bogorny, Patrícia Jaques e Mônica Py Usados para incrementar, decrementar, comparar e avaliar dados,

Leia mais

1.6. Tratamento de Exceções

1.6. Tratamento de Exceções Paradigmas de Linguagens I 1 1.6. Tratamento de Exceções Uma exceção denota um comportamento anormal, indesejado, que ocorre raramente e requer alguma ação imediata em uma parte do programa [GHE 97, DER

Leia mais

as citações devem ser apresentadas conforme a norma NBR 10520/2002; citação: é a menção de uma informação extraída de alguma fonte.

as citações devem ser apresentadas conforme a norma NBR 10520/2002; citação: é a menção de uma informação extraída de alguma fonte. COMO FAZER CITAÇÕES? as citações devem ser apresentadas conforme a norma NBR 10520/2002; citação: é a menção de uma informação extraída de alguma fonte. REGRAS GERAIS DE APRESENTAÇÃO citação pelo sobrenome

Leia mais

UNIDADE 6 - PROGRAMAÇÃO MODULAR

UNIDADE 6 - PROGRAMAÇÃO MODULAR UNIDADE 6 - PROGRAMAÇÃO MODULAR Até o momento as estruturas de controle (seqüência, seleção e repetição) de um algoritmo definia-o como um bloco lógico (início e fim). À medida que os problemas a serem

Leia mais

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo. Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 8 ARRAYS Introdução Até agora, utilizamos variáveis individuais. Significa que uma variável objeto

Leia mais

Introdução a Informática. Prof.: Roberto Franciscatto

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

CURSO BÁSICO DE PROGRAMAÇÃO AULA 7

CURSO BÁSICO DE PROGRAMAÇÃO AULA 7 CURSO BÁSICO DE PROGRAMAÇÃO AULA 7 Revisão para prova: Comandos de Entrada e Saída Estruturas de Decisão (Se, caso (escolha)) Laços de Repetição (Enquanto, Repita, Para) Relembrando Trabalho 1 Prazo de

Leia mais

NOME SEXO CPF NASCIMENTO SALARIO

NOME SEXO CPF NASCIMENTO SALARIO Tutorial SQL Fonte: http://www.devmedia.com.br/articles/viewcomp.asp?comp=2973 Para começar Os Sistemas Gerenciadores de Bancos de Dados Relacionais (SGBDr) são o principal mecanismo de suporte ao armazenamento

Leia mais

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

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

TÉCNICAS DE PROGRAMAÇÃO

TÉCNICAS DE PROGRAMAÇÃO TÉCNICAS DE PROGRAMAÇÃO (Adaptado do texto do prof. Adair Santa Catarina) ALGORITMOS COM QUALIDADE MÁXIMAS DE PROGRAMAÇÃO 1) Algoritmos devem ser feitos para serem lidos por seres humanos: Tenha em mente

Leia mais

Everson Scherrer Borges João Paulo de Brito Gonçalves

Everson Scherrer Borges João Paulo de Brito Gonçalves Everson Scherrer Borges João Paulo de Brito Gonçalves 1 Tipos de Sistemas Operacionais Os tipos de sistemas operacionais e sua evolução estão relacionados diretamente com a evolução do hardware e das

Leia mais

Feature-Driven Development

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

Introdução a Algoritmos Parte 04

Introdução a Algoritmos Parte 04 Universidade Federal do Vale do São Francisco Curso de Engenharia de Computação Introdução a Algoritmos Parte 04 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br www.univasf.edu.br/~jorge.cavalcanti

Leia mais

Algoritmos em Javascript

Algoritmos em Javascript Algoritmos em Javascript Sumário Algoritmos 1 O que é um programa? 1 Entrada e Saída de Dados 3 Programando 4 O que é necessário para programar 4 em JavaScript? Variáveis 5 Tipos de Variáveis 6 Arrays

Leia mais

15 Computador, projeto e manufatura

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

Leia mais

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos Programação Estruturada e Orientada a Objetos Fundamentos Orientação a Objetos 2013 O que veremos hoje? Introdução aos fundamentos de Orientação a Objetos Transparências baseadas no material do Prof. Jailton

Leia mais