UNIVERSIDADE DO VALE DO ITAJAÍ. Juliano de Souza Gaspar PROTÓTIPO DE UMA FERRAMENTA DE APOIO AO ENSINO DE LINGUAGENS LIVRE DE CONTEXTO

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

Download "UNIVERSIDADE DO VALE DO ITAJAÍ. Juliano de Souza Gaspar PROTÓTIPO DE UMA FERRAMENTA DE APOIO AO ENSINO DE LINGUAGENS LIVRE DE CONTEXTO"

Transcrição

1 UNIVERSIDADE DO VALE DO ITAJAÍ Juliano de Souza Gaspar PROTÓTIPO DE UMA FERRAMENTA DE APOIO AO ENSINO DE LINGUAGENS LIVRE DE CONTEXTO São José 2006

2 JULIANO DE SOUZA GASPAR PROTÓTIPO DE UMA FERRAMENTA DE APOIO AO ENSINO DE LINGUAGENS LIVRE DE CONTEXTO Trabalho de Conclusão de Curso apresentado à banca examinadora do Curso de Ciência da Computação na Universidade do Vale do Itajaí - UNIVALI, Centro de Educação São José, como requisito parcial para obtenção do título de Bacharel em Ciência da Computação. Prof. M. Eng. Alessandro Mueller. São José 2006

3 JULIANO DE SOUZA GASPAR PROTÓTIPO DE UMA FERRAMENTA DE APOIO AO ENSINO DE LINGUAGENS LIVRE DE CONTEXTO Este Trabalho de Conclusão de Curso foi julgado adequado para obtenção do título de Bacharel em Ciência da Computação e aprovado pelo Curso de Ciência da Computação, da Universidade do Vale do Itajaí (SC), Centro de Educação São José. São José, 14 de Dezembro de Apresentada à Banca Examinadora formada pelos professores: Prof. M.Eng. Alessandro Mueller. UNIVALI Campus São José Orientador Prof. Esp. Alecir Pedro da Cunha, membro da banca examinadora Prof. Dr. Márcio Matias, membro da banca examinadora ii

4 AGRADECIMENTOS A DEUS por tudo que me foi proporcionado todos os dias que me levou à conclusão desta etapa em minha vida; Ao professor Alessandro Mueller pela amizade, pelo apoio e orientação me auxiliando na elaboração deste trabalho; A professora Fernanda Cunha pelo voto de confiança; Aos professores Alecir Pedro da Cunha e Márcio Matias, membros da banca, pelas sugestões e reconhecimento; Ao Celio Melim Júnior, pela compreensão, pelo apoio e pelo voto de confiança durante toda a minha trajetória universitária. Aos amigos e colegas pelo apoio e compreensão durante este ano; A minha família pela força, compreensão e apoio nesta jornada. iii

5 RESUMO A Teoria de Linguagens Formais estabelece a base para a definição de linguagens de programação e para a construção de compiladores. As Linguagens Formais possuem um conjunto de formalismos que podem ser utilizados na especificação e no reconhecimento da estrutura sintática de uma linguagem descrita por uma Gramática Livre de Contexto. As Gramáticas Livre de Contexto constituem um dispositivo formal gerador de sentenças de uma Linguagem Livre de Contexto e formam a base para realizar a análise sintática das linguagens de programação. Tendo em vista os diversos métodos de análise sintática e a exigência de que as gramáticas satisfaçam determinadas condições para que os algoritmos reconhecedores de linguagens possam ser aplicados, as Gramáticas Livre de Contexto podem ser transformadas em gramáticas equivalentes, sem reduzir o seu poder de geração. Este trabalho procura contribuir para o estudo da Teoria de Linguagens Formais com a construção de um protótipo de uma ferramenta de apoio ao ensino dos formalismos de Linguagens Livre de Contexto, permitindo a construção de algoritmos de simplificação e de transformação de Gramáticas Livre de Contexto e a análise sintática de sentenças a partir da aplicação de reconhecedores sintáticos. A ferramenta será utilizada na disciplina de Linguagens Formais e Compiladores dos cursos de Ciência da Computação e Engenharia de Computação da Universidade do Vale do Itajaí UNIVALI, campus São José, complementando as discussões promovidas sem sala de aula e auxiliando na aprendizagem dos formalismos de Linguagens Livre de Contexto. Palavras Chaves: Linguagem Livre de Contexto, Gramática Livre de Contexto, análise sintática iv

6 ABSTRACT The Theory of Formal Languages establishes the basis for the definition of programming languages and for the construction of compilers. The Formal Languages possess a set of formalism that can be used in the specification and recognition of syntactic structure of a described language for a Context Free Grammar. The Context Free Grammars constitute a formal sentence generator device of Context Free Language and form the basis to carry out the programming languages syntactic analysis. Considering the various methods of syntactic analysis and the requirement that the grammars satisfy definitive conditions so that the algorithms recognizers of languages can be applied, the Context Free Grammars can be transformed into equivalents grammatics, without reducing its power of generation. This work aims to contribute for the study of Formal Languages Theory with the construction of a support tool prototype to the education of Context Free Languages formalisms, allowing the construction of algorithms simplification and the transformation of Context Free Grammars and syntactic analysis of sentences from the application of syntactic recognizers. The tool will be used in disciplines such as Formal Languages and Compilers of the courses of Computer Science and Computer Engineering in Universidade do Vale do Itajaí - UNIVALI, campus São José, complementing the quarrels promoted without classroom and assisting in the learning of Context Free Languages formalisms. v

7 SUMÁRIO 1 INTRODUÇÃO CONTEXTUALIZAÇÃO PROBLEMA OBJETIVOS Objetivo geral Objetivos específicos Escopo e delimitação do trabalho RESULTADOS ESPERADOS JUSTIFICATIVA ASPECTOS METODOLÓGICOS Metodologia ESTRUTURA DO TRABALHO O COMPUTADOR NO PROCESSO ENSINO-APRENDIZAGEM APRENDIZAGEM EM AMBIENTES VIRTUALIZADOS IHC INTERAÇÃO HUMANO COMPUTADOR ERGONOMIA Usabilidade Guias e Critérios Ergonômicos para o Desenvolvimento de Interfaces GRAMÁTICA DEFINIÇÃO DE UMA GRAMÁTICA NOTAÇÃO DE UMA GRAMÁTICA Representação Formal de Gramática Representação Backus-Naur Form (BNF) Diagrama de Sintaxe HIERARQUIA DAS GRAMÁTICAS Gramáticas Livre de Contexto ou Tipo Gramáticas Regulares ou Tipo EQUIVALÊNCIA ENTRE GRAMÁTICAS DERIVAÇÃO E REDUÇÃO DE GRAMÁTICAS...19 vi

8 4 GRAMÁTICA LIVRE DE CONTEXTO ÁRVORE DE DERIVAÇÃO DERIVAÇÃO MAIS À ESQUERDA E MAIS À DIREITA AMBIGÜIDADE SIMPLIFICAÇÃO Símbolos Inúteis Produções Vazias Produções Simples Recursão à Esquerda Não Determinismo à Esquerda FORMAS NORMAIS Forma Normal de Chomsky Forma Normal de Greibach AUTÔMATO COM PILHA Definição Formal de um Autômato com Pilha Notação gráfica para Autômatos com Pilha ANÁLISE SINTÁTICA PARSE ASCENDENTE E DESCENDENTE CONJUNTOS FIRST E FOLLOW First Follow CLASSES DE ANALISADORES Analisadores Ascendentes Algoritmo Shift-Reduce Analisadores LR Analisador SLR(1) Analisador LR(1) Analisador LALR(1) Algoritmo Coke-Younger-Kasami Analisadores Descendentes Analisador Recursivo Analisador Preditivo LL(1) DEFINIÇÕES DO PROJETO ANÁLISE DE REQUISITOS PRELIMINARES...62 vii

9 6.2 DEFINIÇÕES DE PROJETO CASOS DE USO PRINCIPAIS Caso de Uso 01 Visualizar Teoria Caso de Uso 02 Abrir Gramática Caso de Uso 03 Realizar Derivações Caso de Uso 04 Realizar Simplificações Caso de Uso 05 Converter GLC para FNC Caso de Uso 06 Criar Autômato com Pilha Caso de Uso 07 Reconhecer Sentença pelo PDA Caso de Uso 08 Criar Analisador Preditivo LL(1) Caso de Uso 09 Reconhecer Sentença pelo LL(1) REGRAS DE NEGÓCIO DIAGRAMAS DE CLASSES PRINCIPAIS INTERFACES DO PROTÓTIPO CONCLUSÃO RECOMENDAÇÕES FUTURAS...78 REFERÊNCIAS BIBLIOGRÁFICAS viii

10 1 INTRODUÇÃO 1.1 CONTEXTUALIZAÇÃO As tecnologias da informação e comunicação vem sendo crescentemente aplicadas à educação presencial e à distância. Segundo Silva (1998), software aplicativos e educacionais, multimídias, hipermídias, Internet, videoconferência, teleconferência, Realidade Virtual, são alguns dos produtos tecnológicos de rápida evolução e complexidade colocados em destaque na utilização pedagógica. Neste sentido, segundo Netto (2004, p. 23) os objetivos de ergonomistas e educadores se assemelham, visto que os primeiros buscam adaptar o trabalho, no caso informatizado, ao ser humano e os últimos buscam adaptar os meios didáticos para obter satisfação e produtividade dos alunos na aprendizagem de um conteúdo ou habilidade. O objeto de estudo deste trabalho, além dos aspectos ergonômicos, são as Linguagens Livre de Contexto, as quais serão as bases para o desenvolvimento de um protótipo de uma ferramenta de apoio ao ensino. A Teoria de Linguagens Formais 1 é a base para a definição das linguagens de programação e para projetos de compiladores. As Linguagens Formais 2 possuem um conjunto de formalismos que podem ser utilizados na especificação e reconhecimento de sentenças de uma linguagem. 1 É o estudo de modelos matemáticos que possibilitam a especificação e o reconhecimento de linguagens, suas classificações, estruturas, propriedades, características e inter-relacionamentos (FURTADO, 2006, p. 6). 2 São linguagens que podem ser representadas de maneira finita e precisa através de dispositivos formais ou modelos matemáticos (FURTADO 2006, p. 5).

11 2 De acordo com o lingüista Noam Chomsky (1956) apud Menezes(2000, p.153), as linguagens podem ser classificadas de acordo com seu formalismo, assim, hierarquizadas (Figura 1) em Linguagens Regulares, Linguagens Livre de Contexto, Linguagens Sensíveis ao Contexto e Linguagens Enumeráveis Recursivamente ou Irrestritas, em ordem crescente de abrangência e complexidade. Figura 1 Hierarquia Gramatical de Chomsky. Fonte: Menezes 2000, p. 17 A sintaxe de uma linguagem de programação é normalmente dada pelas regras gramaticais que a descrevem, de maneira similar à forma como as estruturas léxicas são reconhecidas pelo analisador léxico com o uso de expressões regulares e autômatos finitos. Cada linguagem de programação possui regras próprias que descrevem a estrutura sintática de seus respectivos programas. A sintaxe das construções de uma linguagem de programação pode ser descrita pelas Gramáticas Livre de Contexto 3, formalismo gerador de sentenças de uma Linguagem Livre de Contexto. Segundo Price (2001, p.30), as Gramáticas Livre de Contexto, popularizadas pela notação BNF (Backus Naur Form), formam a base para a análise sintática das linguagens de programação, pois permitem descrever a maioria das linguagens de programação usadas atualmente. A análise sintática determina a sintaxe ou estrutura de um programa. Segundo Louden (2004, p.95), uma Gramática Livre de Contexto utiliza convenções para nomes e operações similares às usadas por expressões ou definições regulares. A maior diferença é que as regras de uma Gramática Livre de Contexto são recursivas. Desta forma, as estruturas de dados utilizadas para representação da sintaxe de uma linguagem, utilizando uma Gramática Livre de Contexto, precisam ser recursivas. Assim, os algoritmos utilizados para o reconhecimento da classe de estruturas reconhecíveis por Gramáticas Livre de Contexto utilizam ativações recursivas ou uma pilha de análise sintática para gerenciar explicitamente a recursividade.

12 3 1.2 PROBLEMA Como há diversos métodos de análise sintática 4 e cada um deles exige que as gramáticas atendam características específicas para serem aplicadas no desenvolvimento de algoritmos para reconhecedores de linguagens e na prova de teoremas, as Gramáticas Livre de Contexto podem ser transformadas, por meio de algoritmos, para gramáticas equivalentes, geradoras de sentenças da mesma linguagem. Assim, é possível simplificar certas gramáticas sem reduzir o poder de geração das Gramáticas Livre de Contexto. Uma Gramática Livre de Contexto não simplificada pode apresentar símbolos a partir dos quais nenhuma sentença será reconhecida ou produções que simplesmente substituem um símbolo por outro e, conseqüentemente, não adicionam qualquer informação de geração de sentenças e na sua aceitação como uma sentença válida de uma Linguagem Livre de Contexto. No entanto, segundo Menezes (2000, p.97), não é qualquer seqüência de simplificações de uma gramática que permite atingir os resultados desejados. Por exemplo, em uma gramática sem símbolos inúteis, mas com produções simples, o algoritmo para excluir este tipo de produção pode gerar símbolos inúteis. Para evitar este problema, caso os algoritmos sejam combinados, existe uma seqüência de simplificações a ser seguida. No desenvolvimento de algoritmos como os reconhecedores de linguagens e na prova de teoremas, as Gramáticas Livre de Contexto usualmente devem estar dispostas nas formas normais 5. Alguns analisadores sintáticos exigem que a gramática seja determinística 6 e que não possua recursão à esquerda. A recursão à esquerda em uma produção ocorre quando um símbolo produz ele mesmo, de forma direta ou indireta, como o símbolo mais à esquerda de uma sub-sentença. 3 Gramáticas onde as regras de produções são da forma A produz α, onde A é uma variável não-terminal e α é sentença formada por terminais e/ou não-terminais, ou ainda pela sentença vazia (RANGEL 2000, p. 2). 4 Destacam-se os algoritmos de Cocke-Younger-Kasami, LL(1), LALR(1) e SLR(1) (Louden 2004, p.95). 5 São formas que estabelecem restrições rígidas na definição das produções sem reduzir o poder de geração da gramática (Menezes 2000, p.97). 6 Gramáticas sem produções cujo lado direito inicie com o mesmo conjunto de símbolos ou com símbolos que derivam seqüências que iniciem com o mesmo conjunto de símbolos (Furtado 2006, p.30).

13 4 O reconhecimento de sentenças de uma Linguagem Livre de Contexto pode ser feito por meio de Autômatos de Pilha. Um Autômato de Pilha é uma máquina abstrata não-determinística 7 semelhante ao Autômato Finito, munido de uma pilha como memória auxiliar para armazenar símbolos reconhecedores. A facilidade de não-determinismo é importante e necessária porque aumenta o poder computacional dos Autômatos de Pilha, permitindo reconhecer a classe das Linguagens Livre de Contexto. Além dos Autômatos de Pilha, a análise sintática pode envolver a escolha entre diversos métodos distintos de verificação de sintaxe de uma sentença, cada um apresentando características e requisitos particulares para a aplicação. Segundo Louden (2004, p.95), existem duas categorias fundamentais de analisadores sintáticos, os ascendentes e os descendentes, os quais diferem no modo de realizar o reconhecimento de sentenças de uma Linguagem Livre de Contexto. 1.3 OBJETIVOS Objetivo geral Desenvolver um protótipo de uma ferramenta de apoio ao ensino de Linguagens Livre de Contexto Objetivos específicos Pesquisar os formalismos geradores e reconhecedores de sentenças de uma Linguagem Livre de Contexto; Realizar o levantamento dos algoritmos de simplificações e transformações de uma Gramática Livre de Contexto; Pesquisar os algoritmos de análise sintática de sentenças de uma Linguagem Livre de Contexto; Definir os critérios ergonômicos para a construção da interface; 7 Algoritmo reconhecedor de sentenças, incluindo sentenças que possuem mais de uma transição para uma entrada (Menezes 2000, p.10).

14 5 Realizar o design e a implementação do protótipo da ferramenta Escopo e delimitação do trabalho Este trabalho procura contribuir com a elaboração de uma ferramenta que permita a construção de algoritmos de simplificação e transformação de uma Gramática Livre de Contexto e realizar a análise sintática de uma determinada sentença a partir de uma gramática proposta. O reconhecimento de sentenças de uma Linguagem Livre de Contexto será realizado a partir de Autômatos de Pilha e algoritmos de análise sintática ascendente e descendente. Não pertence ao escopo deste trabalho verificar se a gramática a ser simplificada, transformada ou utilizada na análise sintática é ou não uma Gramática Livre de Contexto. 1.4 RESULTADOS ESPERADOS Assistir aos alunos da disciplina de Linguagens Formais e Compiladores no estudo de formalismos de Linguagens Livre de Contexto; Servir de apoio nas disciplinas de Linguagens Formais e Compiladores dos cursos de Ciência da Computação e Engenharia de Computação da Universidade do Vale do Itajaí UNIVALI, campus São José, complementando discussões e exercícios resolvidos em sala de aula. 1.5 JUSTIFICATIVA Para certas classes de gramáticas é possível construir automaticamente um analisador sintático que verifique se determinado programa está sintaticamente correto. Segundo Aho et al (1995, p.72), o processo de construção do analisador pode revelar ambigüidades sintáticas bem como outras construções difíceis de se analisar gramaticalmente, as quais poderiam, de outra forma, seguir indetectadas na fase de projeto inicial de uma linguagem e de seu compilador. A aplicação de certos algoritmos de análise sintática estabelecem relações sobre a gramática que descreve a Linguagem Livre de Contexto de um programa. Assim, para que um método

15 6 em particular possa ser usado na construção de um analisador sintático, a Gramática Livre de Contexto deve satisfazer determinadas condições. Como exemplos de simplificações que devem ser feitas nas gramáticas utilizadas por um analisador sintático tem-se: exclusão de produções vazias, eliminação de símbolos inúteis, eliminar não-determinísmo e eliminar recursão à esquerda. Outras categorias de algoritmos de análise sintática podem exigir que suas Gramáticas Livre de Contexto se apresentem em uma forma específica, conhecida como forma normal. Este trabalho procura contribuir para o estudo da Teoria de Linguagens Formais, pela elaboração de uma ferramenta que permita a construção de algoritmos de simplificação e transformação de uma Gramática Livre de Contexto e a análise sintática de uma determinada sentença a partir da aplicação de um conjunto de métodos de análise sintática. A ferramenta será utilizada na disciplina de Linguagens Formais e Compiladores dos cursos de Ciência da Computação e Engenharia de Computação da Universidade do Vale do Itajaí UNIVALI, campus São José, auxiliando a aprendizagem de Linguagens Livre de Contexto. 1.6 ASPECTOS METODOLÓGICOS Metodologia Nas áreas tecnológicas a existência de um método aplicável às necessidades de pesquisa e desenvolvimento é fundamental para a obtenção de novos produtos e processos. Segundo Jung (2006), Uma pesquisa que utiliza conhecimentos básicos, tecnologias existentes, conhecimentos tecnológicos e que tenha como objeto um novo produto ou processo é caracterizado como tecnológica. Assim, o trabalho proposto pode ser classificado como uma pesquisa aplicada e tecnológica, visto que o mesmo propõe o desenvolvimento de uma ferramenta educacional, que possa auxiliar o processo de ensino aprendizagem da disciplina de Linguagens Formais e Compiladores. Tendo em vista que o desenvolvimento deste trabalho não requer o uso de métodos e técnicas estatísticas como amostragem probabilística, amostragem não-probabilística entre outras, o mesmo pode ser classificado como uma pesquisa qualitativa. A análise de seus dados será feita de forma indutiva, fazendo com que o processo e seu significado sejam os focos principais de abordagem.

16 7 Considerando os objetivos definidos no trabalho, a pesquisa exploratória foi a que se mostrou mais adequada para o seu desenvolvimento. Segundo Gil (2002, p.144), a pesquisa exploratória visa proporcionar maior familiaridade com o problema, visando torná-lo explícito, ela envolve o levantamento bibliográfico e a análise de exemplos que estimulem a compreensão. Assume, em geral, as formas de pesquisas bibliográficas e de estudos de caso. 1.7 ESTRUTURA DO TRABALHO No capítulo 1 é apresentada uma introdução deste Trabalho de Conclusão de Curso, detalhando o problema proposto, os objetivos gerais e específicos, bem como a metodologia e plano de trabalho para o desenvolvimento do mesmo. O capítulo 2 aborda o aprendizado auxiliado por computador, as interações homemcomputador e técnicas e recomendações ergonômicas para otimizar a usabilidade de softwares. No capítulo 3 é apresenta a definição de uma gramática, suas formas de representação, hierarquias, equivalência e as operações de substituição em gramáticas. O capítulo 4 aborda de forma mais detalhada as Gramáticas Livre de Contexto, apresentando os conceitos de árvore de derivação e formas de derivação, ambigüidade, simplificações, Formas Normais e o Autômato de Pilha. No capítulo 5 é apresentando a definição de parse, conjuntos first e follow, tabelas de análise sintáticas e as classes de analisadores ascendentes e descendentes. O capítulo 6 apresenta os critérios ergonômicos, a guia de estilos, os requisitos preliminares, os casos de usos e as telas da ferramenta proposta. No capítulo 7 apresenta a conclusão deste trabalho bem como recomendações para trabalhos futuros.

17 2 O COMPUTADOR NO PROCESSO ENSINO- APRENDIZAGEM A informática está propiciando grandes mudanças e flexibilidades no processo de ensino e aprendizagem. Atualmente, segundo Valente (1993), diversos tipos de abordagens de ensino podem ser realizadas pelo emprego sistemático da informática, devido aos inúmeros programas desenvolvidos para auxiliar no processo de aprendizagem. A idéia do ensino pelo computador permitiu a elaboração de outras abordagens, onde o computador é usado como ferramenta no auxílio de resolução de problemas, na produção de textos, na manipulação de dados e no controle de processos em tempo real. A disseminação de programas educacionais nas escolas, segundo Valente (1993), permitiu grande produção e uma diversificação dos programas educacionais tais como tutoriais, programas de demonstração, exercício e prática, avaliação do aprendizado, jogos educacionais e simulação. A função educacional é de criar condições de aprendizagem e o computador pode ser considerado o facilitador do processo de desenvolvimento intelectual do aluno. Com a grande quantidade de informações que o mundo contemporâneo disponibiliza a todo momento, os alunos passam a substituir a memorização da informação pela busca e uso da informação. Essas mudanças podem ser introduzidas através do computador. 2.1 APRENDIZAGEM EM AMBIENTES VIRTUALIZADOS Com o desenvolvimento dos recursos computacionais é possível integrar textos, imagens de vídeo, som, animação, assim como a interligação da informação de forma não linear, implementando o conceito de multimídia e hipermídia. Segundo Silva (1998), com todos os recursos apresentados, o computador pode ser considerado um dos recursos educacionais mais efetivos da atualidade.

18 9 Segundo Lollini (1991), o uso do computador no processo de ensino-aprendizagem apresenta características psicopedagógicas e técnicas que favorecem o aprendizado. Visto que o computador é considerado uma máquina que inicia uma situação de aprendizagem sem oferecer determinados bloqueios característicos dos seres humanos. É uma máquina capaz de repetir infinitas vezes, e ao mesmo tempo, aceitar perguntas como também atividades na hora em que o aluno necessitar. Esta máquina não possui respostas emotivas a problemas de caráter cognitivo 8, caracterizando-se como atraente para o aluno. Segundo Netto (2004, p.22), a otimização dos fatores de aprendizagem nos programas de ensino com base tecnológicas tende a permitir um melhor aproveitamento das capacidades de aprendizagem dos estudantes. 2.2 IHC INTERAÇÃO HUMANO COMPUTADOR Visando tornar a interação com o usuário mais natural e menos hostil, as interfaces atuais são constituídas, entre outros itens, por elementos gráficos, onde imagens representam dados e tarefas disponíveis são manipuladas diretamente pelo usuário. A Interação Humano Computador, IHC, é uma área que visa essencialmente facilitar a interação do homem com o computador, com o objetivo de melhorar o seu uso, deixando os softwares mais amigáveis e mais atrativos. Segundo Preece (2005, p.29) a interdisciplinaridade mais conhecida é o IHC, que se preocupa com o design, a avaliação e a implementação de sistemas computacionais interativos para o uso humano. Assim, muitos projetistas têm buscado utilizar instrumentos da ergonomia para a tarefa de desenvolver soluções mais adequadas às necessidades dos usuários. O conteúdo do IHC inclui o produto, a interface, o processo, a metodologia e as técnicas usadas dentro de um ciclo de desenvolvimento de software, segundo Netto (2004, p.71). O IHC envolve a integração de conhecimentos de diferentes áreas sociais, humanas e tecnológicas, tais como, psicologia cognitiva, filosofia, sociologia, design, ergonomia, 8 O termo cognitivo refere-se ao conhecimento, sendo que a psicologia cognitiva envolve o estudo das bases do conhecimento humano. Muitos deles de fundamental importância para a educação como: aprendizagem, memória, linguagem, percepção, sensação, raciocínio, pensamento e interação.

19 10 engenharia, inteligência artificial, ciências da computação, entre outras, afirma Preece (2005, p. 29). A qualidade da interação usuário-computador pode ser referida por usabilidade proporcionada pela interface de um sistema de computação. O desenvolvimento de métodos e práticas de engenharia que garantem um eficiente IHC tem por objetivo apresentar técnicas e métodos que podem se utilizados sistematicamente para assegurar um alto grau de usabilidade na interface final de programas de computador. 2.3 ERGONOMIA Os esforços do homem em adaptar ferramentas, armas e utensílios às suas necessidades e características marcam o advento da ergonomia. Segundo a Associação Brasileira de Ergonomia, Abergo, a ergonomia é uma disciplina científica relacionada ao entendimento das interações entre os seres humanos e outros elementos ou sistemas, e à aplicação de teorias, princípios, dados e métodos a projetos a fim de otimizar o bem estar humano e o desempenho global do sistema. O atendimento aos requisitos ergonômicos possibilita maximizar o conforto, a satisfação e o bem-estar, bem como garantir a segurança, otimizando o desempenho das tarefas e o rendimento do trabalho e a produtividade do sistema homem-máquina. A área de estudos da ergonomia de software interessa ao mesmo tempo à utilidade e à usabilidade, ou seja, adequação à tarefa desejada e a facilidade de uso, dos softwares, de modo a favorecer a adequação dos mesmos, às tarefas e objetivos de interação do usuário. Determinar a qualidade ergonômica de uma interface não é tarefa fácil, visto que, esta tarefa envolve diversos domínios do comportamento humano, correspondentes aos diversos processos mentais de tratamento da informação. Visando reduzir a complexidade das definições de conceitos para a especificação e avaliação de interfaces, Scapin (1993) apud Silva (1998), sugere alguns princípios a serem observados no processo de concepção de interfaces, destacando os que são primordiais observar: as características dos usuários e a tarefa de interação.

20 Usabilidade Ao fazer referência à questão da qualidade da relação entre sistemas computacionais e usuários, faz-se associação automaticamente à questão da usabilidade. A usabilidade trata do relacionamento do usuário com o sistema e a interface é um dos fatores essenciais para a qualidade de softwares, pois é por meio dela que os usuários podem interagir com o computador, permitindo que sejam realizadas as tarefas da melhor maneira possível. Segundo Preece (2005, p.34) a usabilidade é geralmente considerada como o fator que assegura que os produtos são fáceis de usar, eficientes e agradáveis, do ponto de vista do usuário. Essas características implicam em otimizar as interações estabelecidas pelas pessoas com produtos interativos, permitindo que realizem suas atividades. Segundo Souza et al (1999) apud Netto (2004, p.77), a usabilidade depende dos seguintes aspectos: facilidade de aprendizado do sistema, facilidade de uso, satisfação do usuário, flexibilidade do sistema e produtividade. Ainda segundo Souza et al (1999) apud Netto (2004, p.77), é necessário que o projetista de sistemas determine quais dos aspectos acima têm prioridade para o sistema e o usuário, tendo em vista o alto custo para cuidar de todos os aspectos de modo satisfatório Guias e Critérios Ergonômicos para o Desenvolvimento de Interfaces O interesse na utilização de regras de ergonomia em todas as fases de um projeto de software, originou-se da necessidade de se evitar erros grosseiros de concepção e facilitar as tomadas de decisões dos projetistas e avaliadores, de forma a ganhar tempo e assegurar uma maior coerência e homogeneidade possível. Estas regras, segundo Silva (1998), em geral propostos por pesquisadores da área de ergonomia, servem como suporte para desenvolver sistemas de computadores mais ergonômicos tais como: guia de recomendações, guias de estilos, critérios ergonômicos, entre outros. Segundo Preece (2005, p.286) as guias de recomendações e de estilos, os padrões de design e os critérios ergonômicos existem para ajudar os projetistas de softwares a criar interfaces melhores a partir da experiências de outros especialistas.

21 12 Algumas recomendações estão em um nível bastante detalhado e são denominadas regras de design, ao passo que outras são bastante abstratas, exigindo uma interpretação antes de ser aplicadas, sendo denominadas princípios de design. As Guias de Estilos consistem em coleções de regras de design específicas. São utilizadas para assegurar uma experiência visual consistente em um conjunto de aplicações. Comumente, as guias de estilos são personalizadas por empresas, visando proporcionar uma imagem particular a corporação. Os critérios ergonômicos são uma ferramenta desenvolvida por D. Scapin e Bastien (1993), do Institut National de Recherche en Informatique et en Automatique (INRIA), da França, constituindo-se em um conjunto de princípios ergonômicos a serem respeitados. São eles: a compatibilidade, a homogeneidade, a concisão, a flexibilidade, o feedback, a carga informacional, o controle explícito e a gestão de erros. Segundo Silva (1998), esses critérios são subdivididos em 18 sub-critérios de modo a minimizar a ambigüidade na identificação e classificação das qualidades e problemas ergonômicos do software interativo.

22 13 3 GRAMÁTICA Seria muito cômodo para os programadores se a comunicação entre homem e máquina pudesse ser feita diretamente em linguagem natural. No entanto, apesar dos avanços tecnológicos na área, esta meta ainda não pode ser considerada economicamente viável. Os programas seriam de custo proibitivo se toda a generalidade das linguagens naturais se mantivesse nas linguagens de programação. Desta forma, para uma correta compreensão e interpretação das linguagens de programação é importante que estas sejam descritas de forma completa e sem ambigüidades, utilizando notações matemáticas formais e de menor complexidade do que os modelos gerais elaborados por estudiosos de linguagens naturais. Uma das maneiras utilizadas para formalizar linguagens de programação é especificar regras para as construções que compõem a linguagem. Ao conjunto de regras de formação utilizadas para definir de maneira rigorosa uma linguagem específica dá-se o nome de gramática. Uma gramática serve para definir qual o subconjunto de sentenças que faz parte de uma determinada linguagem. É um dispositivo formal para especificar uma linguagem potencialmente infinita de uma forma finita, definindo uma estrutura sobre um alfabeto 9 de forma a permitir que apenas determinadas combinações de símbolos sejam consideradas sentenças 10. Assim, pode-se considerar uma gramática como sendo um sistema gerador de linguagens. Segundo Almeida (2006, p.18), a idéia original de gramática vem do estudo das linguagens naturais e suas definições são essencialmente devidas ao lingüista Noam Chomsky. Fundamentalmente, uma gramática é composta por regras de produção por meio 9 Conjunto finito, não vazio, de símbolos, definidos para uma linguagem (MENEZES 2000, p.62). 10 Seqüências finitas de símbolos do alfabeto. Uma sentença é dita vazia, representada por ε, quando não é constituída por nenhum símbolo (MENEZES 2000, p.63).

23 14 das quais é possível obter todos os elementos da linguagem a partir de um símbolo inicial, usando as regras para produzir os elementos. 3.1 DEFINIÇÃO DE UMA GRAMÁTICA A notação formal de uma gramática G é definida por uma quádrupla G = (N, T, P, S). Onde Furtado (2006, p.8) define: N Símbolos Não-Terminais: conjunto finito de símbolos denominados não-terminais, ou seja, são os símbolos utilizados na descrição da linguagem. T Símbolos Terminais: conjunto finito de símbolos denominados terminais. São os símbolos da linguagem propriamente ditos, ou seja, os símbolos que podem ser usados na formação das sentenças da linguagem. P Regras de Produção: conjunto finito de pares (α, β) denominados regras de produção ou regras gramaticais. Relacionam os símbolos terminais e não-terminais, e significa que α é definido por β, ou ainda que α produz β. S Símbolo Inicial: símbolo inicial de uma gramática é o não-terminal a partir do qual as sentenças de uma linguagem serão geradas. As regras de produção de uma gramática são representadas por α β ou α ::= β, onde α e β são sentenças sobre um alfabeto, sendo que α envolve pelo menos um símbolo pertencente a N. O significado de uma regra de produção α β é α pode ser substituído por β. Uma seqüência de regras de produção com o mesmo componente do lado esquerdo, pode ser abreviada como uma única regra de produção, utilizando o símbolo para separar cada elemento do lado direito da regra. Seja uma gramática G = ({S, D}, {0, 1, 2, 3}, P, S), onde, P = {S D, D 0, D 1, D 2, D 3}, as regras de produções P podem ser representadas da forma P = {S D, D }. Para facilitar a compreensão das expressões, Menezes (2000, p68) adota as seguintes convenções: N = {A, B, C,... T} T = {a, b, c,... t} Letras maiúsculas do início do alfabeto para símbolos nãoterminais Letras minúsculas do início do alfabeto para símbolos terminais

24 15 T* 11 = {u, v,... z} Letras minúsculas do fim do alfabeto para seqüências de terminais ( N T )* = {α, β, γ,...} Letras gregas para seqüências de símbolos não-terminais e terminais N T = {U, V,... Z} Letras maiúsculas do fim do alfabeto para um símbolo terminal ou não-terminal 3.2 NOTAÇÃO DE UMA GRAMÁTICA Existem diversas formas de representar uma gramática, dentre as quais destacam-se a notação formal de gramática, Backus-Naur Form (BNF) e diagramas de sintaxe Representação Formal de Gramática A definição formal de uma linguagem consiste de um conjunto de definições que especificam as seqüências de símbolos que formam sentenças válidas na linguagem. A gramática subseqüente exemplifica a notação formal de gramáticas. S A B C D begin A end B B ; A identificador := C D + D D D D identificador constante_inteira constante_real Representação Backus-Naur Form (BNF) A Forma de Backus-Naur foi desenvolvida em esforços de pesquisa paralelos por dois pesquisadores: John Backus e Noam Chomsky. A nova notação foi ligeiramente alterada um pouco mais tarde para se descrever a linguagem ALGOL-60 por Peter Naur. O método revisado passou a ser conhecido como Forma Backus-Naur ou, simplesmente, BNF. Uma gramática BNF é composta por um conjunto finito de regras que definem a estrutura válida da seqüência dos símbolos que constituem as sentenças de uma linguagem. Símbolos não-terminais são delimitados por colchetes angulares, < e >, e o símbolo ::= é usado com o sentido de "é definido por", unindo o lado esquerdo ao direito da regra. Segundo Menezes (2000, p. 70) 11 significa que pode ocorrer zero ou mais ocorrências do símbolo.

25 16 A notação BNF também introduz um conjunto de operadores destinados a simplificar a representação das regras da gramática que envolvam alternativas, repetições e combinações: ou Expressa em uma mesma regra, produções alternativas? opcional Expressa zero ou uma ocorrência do símbolo especificado ( ) fatoração Expressa a combinação de símbolos alternativos * repetição Expressa 0 ou mais ocorrências do símbolo { }* concatenação Expressa a repetição múltipla de símbolos concatenados. A gramática BNF para o exemplo anterior corresponde a: <programa> ::= begin <lista de comandos> end <lista de comandos> ::= <comando> <comando> ; <lista de comandos> <comando> ::= identificador := <expressão> <expressão> ::= <ident_const> + <ident_const> <ident_const> - <ident_const> <ident_const> <ident_const> ::= identificador constante_inteira constante_real Diagrama de Sintaxe Um diagrama de sintaxe ou grafo de sintaxe é um grafo direcionado contendo dois tipos de vértices. Vértices retangulares representam não-terminais e vértices em elipses são usados para representar os terminais. Setas indicam a seqüência de expansão de um símbolo nãoterminal. Esta notação tem o mesmo poder de expressão de BNF, porém define uma representação visual para as regras de uma gramática. A Figura 2 apresenta alguns exemplos de regras descritas para a BNF expressa pelos de diagramas de sintaxe. Figura 2 - Exemplos de Regras para BNF expressas por diagrama de sintaxe.

26 17 O diagrama de sintaxe apresentado na Figura 3 corresponde ao exemplo usado na descrição da gramática BNF. Figura 3 Diagrama de Sintaxe. Além destas três notações apresentadas, pode-se citar a notação de Wirth, as expressões regulares estendidas, as gramáticas de dois níveis, entre outras, como alternativas a serem usadas na especificação de linguagens de programação. 3.3 HIERARQUIA DAS GRAMÁTICAS Segundo Almeida (2005, p.17), toda gramática gera uma linguagem única, mas a mesma linguagem pode ser gerada por muitas gramáticas diferentes. Assim, pode-se classificar as gramáticas de acordo com o tipo de linguagens que são geradas por elas, ou seja, conforme as restrições impostas às regras de derivação.

27 18 De acordo com a hierarquia gramatical de Chomsky, existem quatro tipos de gramáticas, identificadas pelos tipos de 0 a 3. Nesta hierarquia, as gramáticas classificam-se em: Gramáticas sem Restrição ou Irrestrita ou Tipo 0 As regras de uma gramática de tipo 0 são regras da forma α β, com α e β quaisquer Gramáticas Sensíveis ao Contexto ou Tipo 1 As gramáticas de tipo 1 são as gramáticas com regras da forma α β, onde α e β são sentenças formadas por símbolos terminais e não-terminais, com α envolvendo pelo menos um símbolo não-terminal, em que se exige α β. A exceção fica por conta da regra S ε, se S não aparecer do lado direito de nenhuma regra. São chamadas de sensíveis ao contexto por permitirem regras da forma α A γ α β γ, por meio das quais A pode ser reescrito como β, dependendo do contexto em que A aparecer (α à esquerda, γ à direita) Gramáticas Livre de Contexto ou Tipo 2 As gramáticas de tipo 2 são as gramáticas com regras da forma A β, onde A é um símbolo não-terminal e β é uma seqüência qualquer de (N T)*, possivelmente vazia. São chamadas de livre de contexto porque uma regra A β indica que o não-terminal A independentemente do contexto em que estiver inserido pode ser substituído por β Gramáticas Regulares ou Tipo 3 As gramáticas de tipo 3 são chamadas regulares pela simplicidade da estrutura de suas linguagens, garantida pelos rígidos formatos de suas regras. Admitem regras nos formatos: A a B, onde A e B são não-terminais e a é um terminal ou A B a, onde A e B são não-terminais e a é um terminal; A a, onde A é um não-terminal e a é um terminal; A ε, onde A é um não-terminal. As linguagens geradas por gramáticas dos tipos 0 e 1 são reconhecidas por máquinas de Turing, as linguagens geradas por gramáticas do tipo 2 por autômatos de pilha e as linguagens geradas por gramáticas do tipo 3 por autômatos finitos. As linguagens do tipo 3 são também de tipos 2, 1 ou 0 (Figura 4). As linguagens do tipo 2 são também dos tipos 1 e 0. As linguagens do tipo 1 são também do tipo 0.

28 19 Figura 4 Hierarquia Gramatical de Chomsky. Fonte: Menezes 2000, p. 17 Se uma linguagem tem uma gramática de tipo 0, ela é uma linguagem de tipo 0 ou Irrestrita (LI); se tiver uma gramática tipo 1, ela é uma linguagem tipo 1 ou Sensível ao Contexto (LSC); Caso tenha uma gramática de tipo 2, ela é uma linguagem tipo 2 ou Livre de Contexto (LLC); Se tiver uma gramática tipo 3, ela é uma linguagem tipo 3 ou Regular (LR). Segundo Menezes (2005, p.196), as linguagens geradas por gramáticas do tipo 2 ou Linguagens Livre de Contexto são as mais adequadas para representar linguagens de programação por facilitarem o reconhecimento de elementos da linguagem sem ter que pesquisar o contexto em que estes elementos estão inseridos. 3.4 EQUIVALÊNCIA ENTRE GRAMÁTICAS Duas gramáticas G 1 e G 2 são chamadas de equivalentes (G 1 G 2 ), se ambas definem a mesma linguagem L(G 1 ) = L(G 2 ). Ou seja, as duas gramáticas, de uma forma diferente, geram exatamente as mesmas sentenças. A equivalência entre duas gramáticas G 1 e G 2 pode ser observada no exemplo a seguir: G 1 = ({S, T}, {a, b}, P, S) G 2 = ({S, A, B}, {a, b}, P, S) P = S ata btb P = S aa bb T at bt ε A aa ba a B ab bb b 3.5 DERIVAÇÃO E REDUÇÃO DE GRAMÁTICAS Derivação e Redução são operações de substituição efetuadas de acordo com as regras de produção de uma gramática, sendo representadas pelos símbolos e, respectivamente.

29 20 Uma derivação em uma sentença é a substituição de uma parte desta por um outro conjunto de símbolos, de acordo com suas produções. A forma como as derivações podem ocorrer em uma gramática é definida por suas produções, no sentido símbolo inicial sentença. A redução é a operação que consiste na substituição de uma sentença ou parte dela, por outra, de acordo com as produções da gramática, no sentido sentença símbolo inicial. Segundo Menezes (2000, p.24), sucessivos passos de derivação são definidos da seguinte forma: * zero ou mais passos de derivações sucessivos; + um ou mais passos de derivações sucessivos; i exatos i passos de derivações sucessivos, onde i é um número natural. Considerando a gramática 1 <exp> ::= <exp> <op> <exp> 2 <exp> ::= ( <exp> ) 3 <exp> ::= n 4 <op> ::= + 5 <op> ::= - 6 <op> ::= * e realizando derivações a partir do símbolo inicial desta gramática, pode-se obter, por exemplo, a expressão aritmética (12 5) * 6, que corresponde a sentença correta (n - n) * n. A seqüência das regras, indicadas pelo índice sobrescrito após a seta, usadas em cada passo da derivação pode ser demostrada em <exp> 1 <exp> <op> <exp> 3 <exp> <op> n 6 <exp> * n 2 ( <exp> ) * n 1 (<exp> <op> <exp>) * n 3 (<exp> <op> n) * n 5 (<exp> - n) * n 3 (n - n) * n Segundo Aho et al (1995, p.75), a derivação é a operação adequada para a geração de sentenças, enquanto que a redução é a operação adequada ao reconhecimento de sentenças.

30 4 GRAMÁTICA LIVRE DE CONTEXTO A classe das Linguagens Livre de Contexto, geradas pelas gramáticas livre de contexto e reconhecidas por autômatos de pilha, contém propriamente a classe das Linguagens Regulares. Segundo Menezes (2000, p.85) seu estudo é de fundamental importância na informática; pois especificam adequadamente as estruturas sintáticas das linguagens de programação, tais como parênteses balanceados, construções aninhadas, entre outras, típicas das linguagens de programação. Assim, dentre os quatro tipos de gramáticas apresentadas na Hierarquia de Chomsky, as gramáticas livre de contexto são as mais importantes na área de compiladores e linguagens de programação, pelo fato de especificarem eficientemente as construções sintáticas usuais. Segundo Aho et al, (1995, p.74), a Gramática Livre de Contexto (GLC) é uma especificação para a estrutura sintática de uma linguagem de programação. Essa especificação é similar à especificação da estrutura léxica de uma linguagem por expressões regulares, exceto por utilizar regras recursivas. Uma Gramática Livre de Contexto é uma gramática definida por uma quádrupla G = (N, T, P, S), com a restrição de que qualquer regra de produção de P é da forma A α, onde A é um símbolo não-terminal de N e α é uma sentença de (N T)*. Portanto, uma GLC é uma gramática onde o lado esquerdo das produções contém exatamente um não-terminal. 4.1 ÁRVORE DE DERIVAÇÃO A árvore de derivação ou árvore sintática é uma representação gráfica para as derivações nas Gramáticas Livre de Contexto. Por meio da árvore de derivação tem-se representada explicitamente a estrutura hierárquica que está implícita na linguagem. Cada nó interior da árvore é rotulado por algum não-terminal da gramática ao passo que os nós-folhas são

31 22 rotulados por terminais, ou não-terminais, caso se trate de uma árvore parcial. A Figura 5 apresenta a árvore de derivação da expressão (n n) * n. Figura 5 Árvore de Derivação. A profundidade da árvore de derivação é o comprimento do maior caminho entre a raiz e um nó terminal. O limite de uma árvore de derivação é a seqüência formada pela concatenação, da esquerda para a direita, das folhas da árvore de derivação. 4.2 DERIVAÇÃO MAIS À ESQUERDA E MAIS À DIREITA Uma derivação é chamada de mais à esquerda quando o símbolo substituído for o nãoterminal mais à esquerda da forma sentencial. Na derivação mais à direita, o símbolo substituído é o não-terminal mais à direita. As derivações mais à esquerda e mais à direita para a sentença (n n) * n, usando a gramática definida em 2.5 seria: Derivação mais à esquerda <exp> <exp> <op> <exp> (<exp>) <op> <exp> (<exp> <op> <exp>) <op> <exp> (n <op> <exp>) <op> <exp> (n - <exp>) <op> <exp> (n - n) <op> <exp> (n - n) * <exp> (n - n) * n Derivação mais à direita <exp> <exp> <op> <exp> <exp> <op> n <exp> * n (<exp>) * n (<exp> <op> <exp>) * n (<exp> <op> n) * n (<exp> - n) * n (n - n) * n

32 AMBIGÜIDADE Visto que os compiladores decidem qual código gerar para uma instrução analisando sua árvore sintática, se uma estrutura de linguagem tiver mais de uma árvore sintática, a estrutura da mesma não poderá ser determinado de maneira única. Uma Gramática Livre de Contexto G = (N, T, P, S) é ambígua se existir uma sentença que possua duas ou mais árvores de derivação. A gramática da expressão aritmética (n - n) * n anterior é ambígua, pois possui árvores sintáticas diferentes. Em alguns casos é possível transformar uma gramática ambígua em uma gramática sem ambigüidades. Entretanto, dada uma gramática qualquer não existe um algoritmo que indique se a gramática é ambígua ou não. 4.4 SIMPLIFICAÇÃO A simplificação de uma GLC tem por objetivo tornar a gramática mais simples ou de preparála para posteriores aplicações, como a construção e otimização de algoritmos, na demonstração de teoremas e na implementação de determinados métodos de análise sintática. Qualquer que seja a transformação efetuada, a linguagem gerada deverá ser sempre a mesma, não reduzindo assim o poder de expressão das Gramáticas Livre de Contexto. A simplificação de uma GLC consiste em eliminar símbolos inúteis, produções vazias, produções simples, recursão à esquerda, não determinismo à esquerda, entre outras Símbolos Inúteis Um símbolo terminal ou não-terminal é inútil se ele não aparece na derivação de nenhuma sentença em uma Gramática Livre de Contexto. Considera-se uma regra inútil as que contêm símbolos inúteis. Se o símbolo inicial for um símbolo inútil, a linguagem gerada pela gramática é vazia. Um símbolo inútil pode ser: infértil: aquele que não gera nenhuma sentença de símbolos terminais; inalcançável: aquele que não aparece em nenhuma forma sentencial da gramática.

33 24 O processo para eliminar símbolos inúteis de uma gramática pode ser divido em dois passos distintos: primeiro determinar os símbolos férteis e assim poder eliminar os inférteis e, segundo determinar os símbolos alcançáveis para poder eliminar os inalcançáveis. Algoritmo para eliminação de símbolos inúteis, proposto por Furtado (2006, p.27): Entrada: uma GLC G = (N, T, P, S) Saída: uma GLC G = (N', T', P', S') sem símbolos inúteis 1º Passo: eliminar os símbolos inférteis: i 0 N [i] { } REPITA i i + 1 N [i] N [i - 1] {A A α P, α (N [i - 1] T)*} ATÉ N [i] = N [i - 1] N1 N [i] Após executar este passo, têm-se os seguintes conjuntos: N1 que possui apenas os símbolos não-terminais férteis; P1 que possui as mesmas regras de produção de P, exceto aquelas cujos símbolos não-terminais não pertencem a N1. 2º Passo: eliminar os símbolos inalcançáveis: i 0 T [i] { } N [i] {S} REPITA i i + 1 N [i] N [i - 1] {X A α X β P1, α e β (N 1 T)*, A N [i - 1]} T [i] T [i - 1] {x A α x β P1, α e β (N 1 T)*, A N [i - 1]} ATÉ (N [i] = N [i - 1]) E (T [i] = T [i - 1]) N' N 1 N [i] T' T T [i] S' S Após executar o segundo passo temos: N é o conjunto de símbolos não-terminais férteis e alcançáveis; T é o conjunto de símbolos terminais alcançáveis; P possui as mesmas regras de produção de P1, exceto aquelas cujos símbolos não pertencem a N' T'.

34 25 Exemplificando a aplicação do algoritmo para a gramática G = ({S, A, B, C, D}, {a, b, c, d}, P, S), tem-se: P: S a A A a b B B b d D C c C c D d D 1º Passo: N0 = N1 = {A, B, C} N2 = {S, A, B, C} N3 = {S, A, B, C} = N2 (conjunto de símbolos férteis) Nesse ponto tem-se uma gramática sem símbolo infértil: G = ({S, A, B, C}, {a, b, c}, P, S), onde: P : S a A A a b B B b C c C c 2º Passo: V0 = {S} V1 = {S, a, A} V2 = {S, a, A, b, B} V3 = {S, a, A, b, B} = V2 (conjunto de símbolos alcançáveis) Nesse ponto tem-se uma gramática sem símbolos inúteis: G = ( {S, A, B}, {a, b}, P, S ), onde: P : S a A A a b B B b Produções Vazias As produções vazias, também chamadas de ε produções, são produções que derivam diretamente ou indiretamente ε. Uma GLC é dita ε-livre quando não possui ε-produções ou quando possui uma única ε-produção, S ε, onde S é o símbolo inicial da gramática e S não aparece do lado direito de nenhuma regra de produção. Este tipo de produção é aceita em gramáticas livre de contexto exatamente pelo fato de existir um algoritmo que transforma a gramática, tornando-a livre do ε.

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

6.3 Equivalência entre Autômatos com Pilha Não-Determinísticos e Gramáticas Livre do Contexto

6.3 Equivalência entre Autômatos com Pilha Não-Determinísticos e Gramáticas Livre do Contexto Capítulo 6. Autômatos com Pilha 6.3 Equivalência entre Autômatos com Pilha Não-Determinísticos e Gramáticas Livre do Contexto Nos exemplos da seção anterior, vimos que os autômatos com pilha existem para

Leia mais

Processos de Desenvolvimento de Software

Processos de Desenvolvimento de Software Processos de Desenvolvimento de Software Gerenciamento de Projetos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e

Leia mais

EMENTAS DAS DISCIPLINAS

EMENTAS DAS DISCIPLINAS EMENTAS DAS DISCIPLINAS CURSO CST ANÁLISE E DESENVOLVIMENTO DE SISTEMAS INTRODUÇÃO À COMPUTAÇÃO 68 A disciplina estuda a área da informática como um todo e os conceitos fundamentais, abrangendo desde a

Leia mais

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

UTILIZAÇÃO E DESENVOLVIMENTO DE SOFTWARES EDUCACIONAIS PARA PESSOAS COM NECESSIDADES ESPECIAIS.

UTILIZAÇÃO E DESENVOLVIMENTO DE SOFTWARES EDUCACIONAIS PARA PESSOAS COM NECESSIDADES ESPECIAIS. MINISTERIO DA EDUCAÇÃO E DO DESPORTO UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO UTILIZAÇÃO E DESENVOLVIMENTO DE SOFTWARES EDUCACIONAIS PARA PESSOAS COM NECESSIDADES ESPECIAIS. Elaine Cristina Dias Calaça

Leia mais

Introdução ao Aplicativo de Programação LEGO MINDSTORMS Education EV3

Introdução ao Aplicativo de Programação LEGO MINDSTORMS Education EV3 Introdução ao Aplicativo de Programação LEGO MINDSTORMS Education EV3 A LEGO Education tem o prazer de trazer até você a edição para tablet do Software LEGO MINDSTORMS Education EV3 - um jeito divertido

Leia mais

Interface Homem-Computador

Interface Homem-Computador Faculdade de Ciências e Tecnologia do Maranhão Interface Homem-Computador Aula: Engenharia Cognitiva e Semiótica Professor: M.Sc. Flávio Barros flathbarros@gmail.com Conteúdo Engenharia Cognitiva Fundamentos

Leia mais

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

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

CHECK - LIST - ISO 9001:2000

CHECK - LIST - ISO 9001:2000 REQUISITOS ISO 9001: 2000 SIM NÃO 1.2 APLICAÇÃO A organização identificou as exclusões de itens da norma no seu manual da qualidade? As exclusões são relacionadas somente aos requisitos da sessão 7 da

Leia mais

ENGENHARIA DE SOFTWARE I

ENGENHARIA DE SOFTWARE I ENGENHARIA DE SOFTWARE I Prof. Cássio Huggentobler de Costa [cassio.costa@ulbra.br] Twitter: www.twitter.com/cassiocosta_ Agenda da Aula (002) Metodologias de Desenvolvimento de Softwares Métodos Ágeis

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

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

ANÁLISE E DESENVOLVIMENTO DE SISTEMAS TURMA 2008 4º PERÍODO - 7º MÓDULO AVALIAÇÃO A4 DATA 22/10/2009 ENGENHARIA DE USABILIDADE

ANÁLISE E DESENVOLVIMENTO DE SISTEMAS TURMA 2008 4º PERÍODO - 7º MÓDULO AVALIAÇÃO A4 DATA 22/10/2009 ENGENHARIA DE USABILIDADE ANÁLISE E DESENVOLVIMENTO DE SISTEMAS TURMA 2008 4º PERÍODO - 7º MÓDULO AVALIAÇÃO A4 DATA 22/10/2009 ENGENHARIA DE USABILIDADE 2009/2 GABARITO COMENTADO QUESTÃO 1: Quando nos referimos à qualidade da interação

Leia mais

Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS)

Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS) Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS) Definição Geral: Disciplina de Compiladores Prof. Jorge Bidarra (UNIOESTE) A especificação de requisitos tem como objetivo

Leia mais

Interface Homem- Computador

Interface Homem- Computador Interface Homem- Computador (IHC) Profª. Leticia Lopes Leite Software Educacional I Interface Deve ser entendida como sendo a parte de um sistema computacional com a qual uma pessoa entra em contato física,

Leia mais

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia. 1 Introdução aos Sistemas de Informação 2002 Aula 4 - Desenvolvimento de software e seus paradigmas Paradigmas de Desenvolvimento de Software Pode-se considerar 3 tipos de paradigmas que norteiam a atividade

Leia mais

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

EMENTAS DAS DISCIPLINAS

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

Leia mais

Compiladores Aula 5. Celso Olivete Júnior. olivete@fct.unesp.br

Compiladores Aula 5. Celso Olivete Júnior. olivete@fct.unesp.br Aula 5 Celso Olivete Júnior olivete@fct.unesp.br Na aula passada Conjuntos Primeiro(First) e Seguidor(Follow) 2 Na aula de hoje Análise Sintática Análise Sintática Descendente Recursividade Fatoração 3

Leia mais

Projeto de Sistemas I

Projeto de Sistemas I Instituto Federal de Educação, Ciência e Tecnologia de São Paulo Projeto de Sistemas I Professora: Kelly de Paula Cunha E-mail:kellypcsoares@ifsp.edu.br Requisitos: base para todo projeto, definindo o

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

Introdução à Computação

Introdução à Computação Aspectos Importantes - Desenvolvimento de Software Motivação A economia de todos países dependem do uso de software. Cada vez mais, o controle dos processos tem sido feito por software. Atualmente, os

Leia mais

DESENVOLVIMENTO DE INTERFACE WEB MULTIUSUÁRIO PARA SISTEMA DE GERAÇÃO AUTOMÁTICA DE QUADROS DE HORÁRIOS ESCOLARES. Trabalho de Graduação

DESENVOLVIMENTO DE INTERFACE WEB MULTIUSUÁRIO PARA SISTEMA DE GERAÇÃO AUTOMÁTICA DE QUADROS DE HORÁRIOS ESCOLARES. Trabalho de Graduação DESENVOLVIMENTO DE INTERFACE WEB MULTIUSUÁRIO PARA SISTEMA DE GERAÇÃO AUTOMÁTICA DE QUADROS DE HORÁRIOS ESCOLARES Trabalho de Graduação Orientando: Vinicius Stein Dani vsdani@inf.ufsm.br Orientadora: Giliane

Leia mais

UNIVERSIDADE DO VALE DO ITAJAÍ PAULO ROBERTO LIMA

UNIVERSIDADE DO VALE DO ITAJAÍ PAULO ROBERTO LIMA UNIVERSIDADE DO VALE DO ITAJAÍ PAULO ROBERTO LIMA UM SOFTWARE EDUCACIONAL PARA CONSTRUÇÃO E VALIDAÇÃO DE FORMALISMOS UTILIZADOS NA GERAÇÃO E RECONHECIMENTO DE SENTENÇAS DE UMA LINGUAGEM REGULAR São José

Leia mais

Pesquisa com Professores de Escolas e com Alunos da Graduação em Matemática

Pesquisa com Professores de Escolas e com Alunos da Graduação em Matemática Pesquisa com Professores de Escolas e com Alunos da Graduação em Matemática Rene Baltazar Introdução Serão abordados, neste trabalho, significados e características de Professor Pesquisador e as conseqüências,

Leia mais

Tópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite andreza.lba@gmail.com (81 )9801-6619

Tópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite andreza.lba@gmail.com (81 )9801-6619 Tópicos em Engenharia de Software (Optativa III) AULA 2 Prof. Andrêza Leite andreza.lba@gmail.com (81 )9801-6619 Engenharia de Software Objetivo da aula Depois desta aula você terá uma revisão sobre o

Leia mais

Dadas a base e a altura de um triangulo, determinar sua área.

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

Linguagens Formais e Autômatos

Linguagens Formais e Autômatos Linguagens Formais e Autômatos SLIDE 1 Professor Júlio Cesar da Silva juliocesar@eloquium.com.br site: http://eloquium.com.br/ twitter: @profjuliocsilva facebook: https://www.facebook.com/paginaeloquium

Leia mais

softwares que cumprem a função de mediar o ensino a distância veiculado através da internet ou espaço virtual. PEREIRA (2007)

softwares que cumprem a função de mediar o ensino a distância veiculado através da internet ou espaço virtual. PEREIRA (2007) 1 Introdução Em todo mundo, a Educação a Distância (EAD) passa por um processo evolutivo principalmente após a criação da internet. Os recursos tecnológicos oferecidos pela web permitem a EAD ferramentas

Leia mais

Definição 2.2 (Palavra) As sequências finitas de letras são designadas por palavras sobre o alfabeto V.

Definição 2.2 (Palavra) As sequências finitas de letras são designadas por palavras sobre o alfabeto V. Capítulo 2 Definição de Linguagens 2.1 Linguagens Formais Definição 2.1 (Alfabeto) Um conjunto finito e não vazio de símbolos arbitrários é designado por um alfabeto, e é denotado por V. Os elementos de

Leia mais

Apresentação 24/12/2014. Professor Wilker Bueno

Apresentação 24/12/2014. Professor Wilker Bueno Apresentação 1 Wilker Bueno Técnico em Magistério Colégio Estadual José Cipriano Varjão/GO Graduado em Administração de Empresas Universidade do Norte do Paraná Londrina/PR Especialista em RH e suas Atribuições

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

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

EMENTAS DAS DISCIPLINAS

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

Leia mais

2 Diagrama de Caso de Uso

2 Diagrama de Caso de Uso 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 Caso de Uso (Use Case) Autoria:Aristófanes Corrêa

Leia mais

Análise e Projeto de Sistemas. Engenharia de Software. Análise e Projeto de Sistemas. Contextualização. Perspectiva Histórica. A Evolução do Software

Análise e Projeto de Sistemas. Engenharia de Software. Análise e Projeto de Sistemas. Contextualização. Perspectiva Histórica. A Evolução do Software Análise e Projeto de Sistemas Análise e Projeto de Sistemas Contextualização ENGENHARIA DE SOFTWARE ANÁLISE E PROJETO DE SISTEMAS ENGENHARIA DA INFORMAÇÃO Perspectiva Histórica Engenharia de Software 1940:

Leia mais

GARANTIA DA QUALIDADE DE SOFTWARE

GARANTIA DA QUALIDADE DE SOFTWARE GARANTIA DA QUALIDADE DE SOFTWARE Fonte: http://www.testexpert.com.br/?q=node/669 1 GARANTIA DA QUALIDADE DE SOFTWARE Segundo a NBR ISO 9000:2005, qualidade é o grau no qual um conjunto de características

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

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

SAV Sistema de Aluguel de Veículos I - DOCUMENTO DE REQUISITOS Versão 1.00

SAV Sistema de Aluguel de Veículos I - DOCUMENTO DE REQUISITOS Versão 1.00 SAV Sistema de Aluguel de Veículos I - DOCUMENTO DE REQUISITOS Versão 1.00 Conteúdo 1. INTRODUÇÃO...3 1.1 CONVENÇÕES, TERMOS E ABREVIAÇÕES... 3 1.1.1 Identificação dos Requisitos... 3 1.1.2 Prioridades

Leia mais

ISO 9000:2000 Sistemas de Gestão da Qualidade Fundamentos e Vocabulário. As Normas da família ISO 9000. As Normas da família ISO 9000

ISO 9000:2000 Sistemas de Gestão da Qualidade Fundamentos e Vocabulário. As Normas da família ISO 9000. As Normas da família ISO 9000 ISO 9000:2000 Sistemas de Gestão da Qualidade Fundamentos e Vocabulário Gestão da Qualidade 2005 1 As Normas da família ISO 9000 ISO 9000 descreve os fundamentos de sistemas de gestão da qualidade e especifica

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

Pós-Graduação em Gerenciamento de Projetos práticas do PMI

Pós-Graduação em Gerenciamento de Projetos práticas do PMI Pós-Graduação em Gerenciamento de Projetos práticas do PMI Planejamento do Gerenciamento das Comunicações (10) e das Partes Interessadas (13) PLANEJAMENTO 2 PLANEJAMENTO Sem 1 Sem 2 Sem 3 Sem 4 Sem 5 ABRIL

Leia mais

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA RESUMO Ricardo Della Libera Marzochi A introdução ao Service Component Architecture (SCA) diz respeito ao estudo dos principais fundamentos

Leia mais

GUIA DE CURSO. Tecnologia em Sistemas de Informação. Tecnologia em Desenvolvimento Web. Tecnologia em Análise e Desenvolvimento de Sistemas

GUIA DE CURSO. Tecnologia em Sistemas de Informação. Tecnologia em Desenvolvimento Web. Tecnologia em Análise e Desenvolvimento de Sistemas PIM PROGRAMA DE INTEGRAÇÃO COM O MERCADO GUIA DE CURSO Tecnologia em Sistemas de Informação Tecnologia em Desenvolvimento Web Tecnologia em Análise e Desenvolvimento de Sistemas Tecnologia em Sistemas

Leia mais

ATIVIDADES PRÁTICAS SUPERVISIONADAS

ATIVIDADES PRÁTICAS SUPERVISIONADAS ATIVIDADES PRÁTICAS SUPERVISIONADAS 4ª Série Informática Industrial CST em Mecatrônica Industrial A atividade prática supervisionada (ATPS) é um método de ensinoaprendizagem desenvolvido por meio de um

Leia mais

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho 20 Capítulo 3 Avaliação de Desempenho Este capítulo aborda como medir, informar e documentar aspectos relativos ao desempenho de um computador. Além disso, descreve os principais fatores que influenciam

Leia mais

Processos de gerenciamento de projetos em um projeto

Processos de gerenciamento de projetos em um projeto Processos de gerenciamento de projetos em um projeto O gerenciamento de projetos é a aplicação de conhecimentos, habilidades, ferramentas e técnicas às atividades do projeto a fim de cumprir seus requisitos.

Leia mais

1. NÍVEL CONVENCIONAL DE MÁQUINA

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

Gestão da Qualidade por Processos

Gestão da Qualidade por Processos Gestão da Qualidade por Processos Disciplina: Gestão da Qualidade 2º Bimestre Prof. Me. Patrício Vasconcelos adm.patricio@yahoo.com.br Gestão da Qualidade por Processos Nas empresas, as decisões devem

Leia mais

Universidade de Santa Cruz do Sul Departamento de Informática

Universidade de Santa Cruz do Sul Departamento de Informática Universidade de Santa Cruz do Sul Departamento de Informática II Seminário dos Grupos de Pesquisa da UNISC Ficha de Inscrição do Grupo de Pesquisa Sistemas Computacionais de Apoio à Educação Santa Cruz

Leia mais

NÚCLEO DE EDUCAÇÃO MATEMÁTICA E ENSINO DE FÍSICA E AS NOVAS TECNOLOGIAS NA FORMAÇÃO DE PROFESSORES

NÚCLEO DE EDUCAÇÃO MATEMÁTICA E ENSINO DE FÍSICA E AS NOVAS TECNOLOGIAS NA FORMAÇÃO DE PROFESSORES NÚCLEO DE EDUCAÇÃO MATEMÁTICA E ENSINO DE FÍSICA E AS NOVAS TECNOLOGIAS NA FORMAÇÃO DE PROFESSORES Edson Crisostomo dos Santos Universidade Estadual de Montes Claros - UNIMONTES edsoncrisostomo@yahoo.es

Leia mais

A APRENDIZAGEM SIGNIFICATIVA NA EDUCAÇÃO BIOLÓGICA: UMA REVISÃO BIBLIOGRÁFICA

A APRENDIZAGEM SIGNIFICATIVA NA EDUCAÇÃO BIOLÓGICA: UMA REVISÃO BIBLIOGRÁFICA A APRENDIZAGEM SIGNIFICATIVA NA EDUCAÇÃO BIOLÓGICA: UMA REVISÃO BIBLIOGRÁFICA Maria José Rodrigues de Farias Universidade Estadual da Paraíba lyarodriguesbio@gmail.com Introdução Atualmente os modelos

Leia mais

FATEC Cruzeiro José da Silva. Ferramenta CRM como estratégia de negócios

FATEC Cruzeiro José da Silva. Ferramenta CRM como estratégia de negócios FATEC Cruzeiro José da Silva Ferramenta CRM como estratégia de negócios Cruzeiro SP 2008 FATEC Cruzeiro José da Silva Ferramenta CRM como estratégia de negócios Projeto de trabalho de formatura como requisito

Leia mais

SISTEMAS DE INFORMAÇÃO PARA GESTÃO

SISTEMAS DE INFORMAÇÃO PARA GESTÃO 07-05-2013 1 SISTEMAS DE INFORMAÇÃO PARA GESTÃO Aula I Docente: Eng. Hercílio Duarte 07-05-2013 2 Objectivo Sistemas Modelos Dados Vs. Informação Introdução aos sistemas de Informação 07-05-2013 3 Introdução

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

DESIGN DE INTERFACES E USABILIDADE (AULA 1)

DESIGN DE INTERFACES E USABILIDADE (AULA 1) Prof. Breno Leonardo G. de M. Araújo brenod123@gmail.com http://blog.brenoleonardo.com.br DESIGN DE INTERFACES E USABILIDADE (AULA 1) Apresentações Quem sou eu? Breno Leonardo http://blog.brenoleonardo.com.br

Leia mais

PERSPECTIVAS DO PROJETO DE ENSINO FÁBRICA DE SOFTWARE *

PERSPECTIVAS DO PROJETO DE ENSINO FÁBRICA DE SOFTWARE * PERSPECTIVAS DO PROJETO DE ENSINO FÁBRICA DE SOFTWARE * Hudson Henrique de Souza LOPES 1 ; Wellington Garcia PEREIRA 2 ; Getúlio Antero de DEUS JÚNIOR 3. 1 Bolsista do PET EEEC/UFG hudsonhsl@hotmail.com.

Leia mais

PROPOSTA DE UM MODELO DE SISTEMA HIPERMÍDIA PARA APRESENTAÇÃO DO CURSO DE CIÊNCIA DA COMPUTAÇÃO

PROPOSTA DE UM MODELO DE SISTEMA HIPERMÍDIA PARA APRESENTAÇÃO DO CURSO DE CIÊNCIA DA COMPUTAÇÃO PROPOSTA DE UM MODELO DE SISTEMA HIPERMÍDIA PARA APRESENTAÇÃO DO CURSO DE CIÊNCIA DA COMPUTAÇÃO Fabiana Pacheco Lopes 1 1 Universidade Presidente Antônio Carlos (UNIPAC) fabipl_21@yahoo.com.br Resumo.Este

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

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

Manual SAGe Versão 1.2 (a partir da versão 12.08.01)

Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Submissão de Relatórios Científicos Sumário Introdução... 2 Elaboração do Relatório Científico... 3 Submissão do Relatório Científico... 14 Operação

Leia mais

Interface Humano-Computador IHC Paradigmas de IHC

Interface Humano-Computador IHC Paradigmas de IHC Instituto Federal de Educação, Ciência e Tecnologia Campus Formosa Interface Humano-Computador IHC Paradigmas de IHC Prof. M.Sc. Victor Hugo Lázaro Lopes IHC Paradigmas de IHC AGENDA Engenharia Cognitiva

Leia mais

Utilizando a ferramenta de criação de aulas

Utilizando a ferramenta de criação de aulas http://portaldoprofessor.mec.gov.br/ 04 Roteiro Utilizando a ferramenta de criação de aulas Ministério da Educação Utilizando a ferramenta de criação de aulas Para criar uma sugestão de aula é necessário

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

Organização e Arquitetura de Computadores I. de Computadores

Organização e Arquitetura de Computadores I. de Computadores Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de Computadores I Organização Básica B de Computadores

Leia mais

Sistema Inteligente Não-Linear de Apoio à Aprendizagem 1 Rangel RIGO, Ana Paula Laboissière AMBRÓSIO

Sistema Inteligente Não-Linear de Apoio à Aprendizagem 1 Rangel RIGO, Ana Paula Laboissière AMBRÓSIO Sistema Inteligente Não-Linear de Apoio à Aprendizagem 1 Rangel RIGO, Ana Paula Laboissière AMBRÓSIO rangelrigo@gmail.com, apaula@inf.ufg.br Instituto de Informática Universidade Federal de Goiás (UFG)

Leia mais

Descrição Formal de Linguagens -Sumário - Descrição Formal de Linguagens. -Overview- -Overview- - Fundamentos das Linguagens de Programação -

Descrição Formal de Linguagens -Sumário - Descrição Formal de Linguagens. -Overview- -Overview- - Fundamentos das Linguagens de Programação - Descrição Formal de Linguagens Linguagens de Programação Ciência da Computação DIN UEM CTC Prof. Jucimar Aula 4 Descrição Formal de Linguagens -Sumário - 1. Fundamentos de Linguagens de Programação 2.

Leia mais

Autômatos a pilha. UFRN/DIMAp/DIM0330 Linguagens formais. David Déharbe. http://www.consiste.dimap.ufrn.br/ david/enseignement/2003.

Autômatos a pilha. UFRN/DIMAp/DIM0330 Linguagens formais. David Déharbe. http://www.consiste.dimap.ufrn.br/ david/enseignement/2003. UFRN/DIMAp/DIM0330 Linguagens formais http://www.consiste.dimap.ufrn.br/ david/enseignement/2003.1/dim0330 1/36 Autômatos a pilha David Déharbe UFRN/DIMAp Campus Universitário, Lagoa Nova, 59072-970 Natal,

Leia mais

Módulo 15 Resumo. Módulo I Cultura da Informação

Módulo 15 Resumo. Módulo I Cultura da Informação Módulo 15 Resumo Neste módulo vamos dar uma explanação geral sobre os pontos que foram trabalhados ao longo desta disciplina. Os pontos abordados nesta disciplina foram: Fundamentos teóricos de sistemas

Leia mais

Glossário Apresenta a definição dos termos, siglas e abreviações utilizadas no contexto do projeto Citsmart.

Glossário Apresenta a definição dos termos, siglas e abreviações utilizadas no contexto do projeto Citsmart. Apresenta a definição dos termos, siglas e abreviações utilizadas no contexto do projeto Citsmart. Versão 1.6 15/08/2013 Visão Resumida Data Criação 15/08/2013 Versão Documento 1.6 Projeto Responsáveis

Leia mais

3. O NIVEL DA LINGUAGEM DE MONTAGEM

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

Relatório da ListEx02 Aplicação da Heurística do objetivo na definição das propostas do meu aplicativo de banco de dados e dissertação de mestrado

Relatório da ListEx02 Aplicação da Heurística do objetivo na definição das propostas do meu aplicativo de banco de dados e dissertação de mestrado ITA Instituto Tecnológico da Aeronáutica IEC Divisão de Ciência da Computação Pós-Graduação em Engenharia Eletrônica e Computação Relatório da ListEx02 Aplicação da Heurística do objetivo na definição

Leia mais

COERÊNCIA DO CURRÍCULO DO CURSO DE ENGENHARIA DE COMPUTAÇÃO EM FACE DAS DIRETRIZES CURRICULARES NACIONAIS

COERÊNCIA DO CURRÍCULO DO CURSO DE ENGENHARIA DE COMPUTAÇÃO EM FACE DAS DIRETRIZES CURRICULARES NACIONAIS COERÊNCIA DO CURRÍCULO DO CURSO DE ENGENHARIA DE COMPUTAÇÃO EM FACE DAS DIRETRIZES CURRICULARES NACIONAIS O documento que serviu de base para a análise a seguir é o denominado "Diretrizes Curriculares

Leia mais

Resumo do BABok 2.0 O Guia de Referência de Análise de Negócio Curso de Analista de Negócio 3.0

Resumo do BABok 2.0 O Guia de Referência de Análise de Negócio Curso de Analista de Negócio 3.0 O que é BABok? O BABok 2.0, Corpo de Conhecimento de Análise de Negócios, é considerado como um Guia Referência de Práticas de Análise de Negócio. Este guia é publicado e mantido pelo IIBA. O guia BABok

Leia mais

Engenharia de Software: conceitos e aplicações. Prof. Tiago Eugenio de Melo, MSc tiagodemelo@gmail.com

Engenharia de Software: conceitos e aplicações. Prof. Tiago Eugenio de Melo, MSc tiagodemelo@gmail.com Engenharia de Software: conceitos e aplicações Prof. Tiago Eugenio de Melo, MSc tiagodemelo@gmail.com 1 Objetivos da aula Apresentar os conceitos de Engenharia de Software e explicar a sua importância.

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

ATIVIDADES PRÁTICAS SUPERVISIONADAS

ATIVIDADES PRÁTICAS SUPERVISIONADAS ATIVIDADES PRÁTICAS SUPERVISIONADAS 6ª Série Teoria da Computação Ciência da Computação A atividade prática supervisionada (ATPS) é um método de ensinoaprendizagem desenvolvido por meio de um conjunto

Leia mais

Tema: Por que estudar IHC (Interação Humano Computador)?

Tema: Por que estudar IHC (Interação Humano Computador)? Profa. Tatiana Aires Tavares tatiana@lavid.ufpb.br Tema: Por que estudar IHC (Interação Humano Computador)? Criar desejos... Resolver problemas do nosso dia-a-dia Facilitar a vida da gente Tornar possível...

Leia mais

Processos de Design de IHC (Parte II)

Processos de Design de IHC (Parte II) Interface Homem/Máquina Aula 8 Professor Leandro Augusto Frata Fernandes laffernandes@ic.uff.br Material disponível em http://www.ic.uff.br/~laffernandes/teaching/2011.1/tcc-00.184 Roteiro da Aula de Hoje

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

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

ADM041 / EPR806 Sistemas de Informação

ADM041 / EPR806 Sistemas de Informação ADM041 / EPR806 Sistemas de Informação UNIFEI Universidade Federal de Itajubá Prof. Dr. Alexandre Ferreira de Pinho 1 Sistemas de Apoio à Decisão (SAD) Tipos de SAD Orientados por modelos: Criação de diferentes

Leia mais

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas CMP1132 Processo e qualidade de software II Prof. Me. Elias Ferreira Sala: 402 E Quarta-Feira:

Leia mais

Requisitos de Software

Requisitos de Software Requisitos de Software Centro de Informática - Universidade Federal de Pernambuco Kiev Gama kiev@cin.ufpe.br Slides originais elaborados por Ian Sommerville e adaptado pelos professores Márcio Cornélio,

Leia mais

A PÁGINA DISCIPLINAR DE MATEMÁTICA DO PORTAL DIA A DIA EDUCAÇÃO

A PÁGINA DISCIPLINAR DE MATEMÁTICA DO PORTAL DIA A DIA EDUCAÇÃO A PÁGINA DISCIPLINAR DE MATEMÁTICA DO PORTAL DIA A DIA EDUCAÇÃO Resumo: Dolores Follador Secretaria de Estado da Educação do Paraná e Faculdades Integradas do Brasil - Unibrasil doloresfollador@gmail.com

Leia mais

O olhar do professor das séries iniciais sobre o trabalho com situações problemas em sala de aula

O olhar do professor das séries iniciais sobre o trabalho com situações problemas em sala de aula O olhar do professor das séries iniciais sobre o trabalho com situações problemas em sala de aula INTRODUÇÃO Josiane Faxina Universidade Estadual Paulista Júlio de Mesquita Filho Câmpus Bauru e-mail: josi_unesp@hotmail.com

Leia mais

PROGRAMA DE CAPACITAÇÃO E APERFEIÇOAMENTO PARA TUTORES - PCAT

PROGRAMA DE CAPACITAÇÃO E APERFEIÇOAMENTO PARA TUTORES - PCAT 1 RESOLUÇÃO CONSU 2015 04 de 14/04/2015 PROGRAMA DE CAPACITAÇÃO E APERFEIÇOAMENTO PARA TUTORES - PCAT Campus Virtual 2 A. JUSTIFICATIVA A vida universitária tem correspondido a um período cada vez mais

Leia mais

FUNÇÕES POLINOMIAIS DO SEGUNDO GRAU MEDIADOS PELO SOFTWARE GEOGEBRA NA PERSPECTIVA DOS REGISTROS DE REPRESENTAÇÃO SEMIÓTICA

FUNÇÕES POLINOMIAIS DO SEGUNDO GRAU MEDIADOS PELO SOFTWARE GEOGEBRA NA PERSPECTIVA DOS REGISTROS DE REPRESENTAÇÃO SEMIÓTICA FUNÇÕES POLINOMIAIS DO SEGUNDO GRAU MEDIADOS PELO SOFTWARE GEOGEBRA NA PERSPECTIVA DOS REGISTROS DE REPRESENTAÇÃO SEMIÓTICA Modalidade: Relato de experiência Izaias Cordeiro Néri Mestrando em Educação

Leia mais

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0 AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0 SUMÁRIO 1 Conceitos Básicos... 3 1.1 O que é Software?... 3 1.2 Situações Críticas no desenvolvimento

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

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

Introdução. Hardware X Software. Corpo Humano Parte Física. Capacidade de utilizar o corpo em atividades especificas explorando seus componentes

Introdução. Hardware X Software. Corpo Humano Parte Física. Capacidade de utilizar o corpo em atividades especificas explorando seus componentes Introdução Hardware X Software Corpo Humano Parte Física Componentes 18 Capacidade de utilizar o corpo em atividades especificas explorando seus componentes Hardware Introdução Parte física: placas, periféricos,

Leia mais

MRP II. Planejamento e Controle da Produção 3 professor Muris Lage Junior

MRP II. Planejamento e Controle da Produção 3 professor Muris Lage Junior MRP II Introdução A lógica de cálculo das necessidades é conhecida há muito tempo Porém só pode ser utilizada na prática em situações mais complexas a partir dos anos 60 A partir de meados da década de

Leia mais

Autómatos Finitos Determinísticos

Autómatos Finitos Determinísticos Ficha 2 Autómatos Finitos Determinísticos 2.1 Introdução Se olharmos, de forma simplificada, para um computador encontramos três componentes principais: a) A unidade de processamento central b) As unidades

Leia mais