Técnicas de Inspecção de Programas para Inter-relacionar as Vistas Comportamental e Operacional

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

Download "Técnicas de Inspecção de Programas para Inter-relacionar as Vistas Comportamental e Operacional"

Transcrição

1 Técnicas de Inspecção de Programas para Inter-relacionar as Vistas Comportamental e Operacional Mario M. Berón 13 Pedro R. Henriques 1, Maria J. Varanda 2, Roberto Uzal 3 1 Departamento de Informática Universidade do Minho, CCTC, Braga, Portugal {marioberon 2 Departamento de Informática Instituto Politécnico de Bragança,Bragança, Portugal 3 Departamento de Informática Universidad Nacional de San Luis, San Luis, Argentina Grau Académico: Doutor em Ciencias da Computação Inicio: 03/02/2006 Fim: 03/02/2009 Resumo A Compreensão de Programas (CP) é uma disciplina da Engenharia de Software destinada a criar modelos, métodos, técnicas e ferramentas, baseadas num processo da aprendizagem e num processo de engenharia, com o objectivo de alcançar um profundo conhecimento dos sistemas de software. O processo da aprendizagem implica a análise da forma como os programadores entendem os programas. Esta temática é bem descrita no contexto dos Modelos Cognitivos. O processo de engenharia necessita de ser abordado através de tópicos como: Métodos de Extracção da Informação, Administração da Informação e Visualização de Software. A pesquisa em todas estas áreas faz com que seja possível abordar a construção de boas ferramentas de CP. Além disso, esta tarefa dá a possivilidade de inter-relacionar o domínio do programa (componentes de software) e o domínio do problema (comportamento do sistema). Esta última actividade é um dos grandes desafios no contexto da compreensão de programas. Neste artigo, descrevemos as pesquisas e os resultados obtidos nos tópicos descritos nos parágrafos precedentes. Estas tarefas fazem parte de nossa tese de doutoramento denominada: Técnicas de Inspecção de Programas para Inter-Relacionar a Vista Operacional e a Vista Comportamental de Sistemas de Software. Palavras Chaves: Modelos Cognitivos, Extracção da Informação, Visualização de Software. 1 Introdução A compreensão de programas, traduz-se na habilidade de perceber uma secção de código escrito numa linguagem de alto nível. Um programa não é mais do

2 que uma sequência de instruções que serão executadas de forma a garantir uma determinada funcionalidade. O leitor dum programa, consegue extrair o significado do mesmo quando compreende de que forma o código cumpre com a tarefa para a qual foi criado. A área de Compreensão de Programas é uma das mais importantes da Engenharia de Software porque é necessaria para as tarefas de reutilização, inspecção, manutenção, migração e extansão de sistemas de software. Pode também ser utilizada em áreas como Engenharia Inversa ou no Ensino de Linguagens de Programação. O processo de compreensão de programas pode ter diferentes significados e pode ser visto desde perspectivas diferentes. O utilizador pode estar interessado em como o computador executa as instruções, com o objectivo de compreender o fluxo de control e o fluxo de dados, ou pode querer verificar os efeitos que a execução do programa tem sobre o objecto que está a ser controlado pelo programa. Considerando estes níveis de abstracção, uma ferramenta versátil de inspecção visual de código é crucial na tarefa de compreensão de programas. Para construir uma ferramenta destas características é necessário perceber temas relacionados com os Modelos Cognitivos (MC), Extracção da Informação (EI) e Visualização de Software (VS). MC ajuda a perceber as principais estruturas mentais utilizadas pelo programador para entender programas. Desta forma é possível desenhar arquitecturas de software que procurem representar essas componentes do conhecimento. EI torna possível extrair toda a informação dos sistemas de software. Isto é necessário tanto para construir arquitecturas como para implementar diferentes vistas do sistema. Finalmente, VS permite representar a informação claramente. Esta característica é muito importante porque facilita a compreensão. Além das facilidades de inspecção de código, consideramos que uma ferramenta de compreensão deveria possuir algumas formas de inter-relacionar o domínio do programa com o domínio do problema. Uma estratégia importante para alcançar esta relação e facilitar a compreensão, consiste em criar vários domínios intermédios. Usando estes domínios intermédios, e incorporando funções de navegação entre eles, é possível construir uma relação operacional-comportamental. Este artigo está organizado como se explica a seguir. A secção 2, descreve os trabalhos realizados no contexto dos Modelos Cognitivos. A secção 3, apresenta as pesquisas no âmbito da Visualização de Software. A secção 4, detalha a técnica usada para extrair a informação a partir dos sistemas. A secção 5, explica as técnicas da relação operacional-comportamental. Finalmente, a secção 6 apresenta a conclusão deste artigo. 2 Modelos Cognitivos Os Modelos Cognitivos (MC) no contexto da compreesão de programas descrevem a forma como os programadores compreendem os programas. Os MC são importantes porque permitem perceber os distintos processos mentais utilizados na compreensão de programas. Desta forma é possivel desenvolver estratégias ou

3 ferramentas com suporte cognitivo. Depois de realizar um estudo do estado da arte dos MC foi possível detectar que: Todos os autores concordam que um programador compreende um programa quando pode relacionar o domínio do programa com o domínio do problema. Com isto queram eles dizer, que para cada comportamento do sistema de estudo, o programador deve encontrar as peças de código que se utilizaram para produzir esse comportamento. Existe uma necessidade de uniformizar e sistematizar os conceitos usados nesta área. Isto deve-se á existencia de conceitos que produzem ambiguidade. Esta característica dificulta a possível implementação desses conceitos numa ferramenta de compreensão. Por exemplo, o conceito de chunk é muito utilizado para explicar como os programadores extraem informação dos sistemas. Comtudo, as bibliografías de MC não apresentam uma definição ou método para extrair chunks. Por esta razão, a automatização deste conceito fica ao criterio do programador. Esto conduz a conflitos na interpretação do conceito. Não existe uma única aproximação para a aprendizagem. Isto foi claramente observado através das analises das diferentes teorias de CM. Por exemplo, o Brook afirma que o processo utilizado pelos programadores para entender programas é top-down. Em quanto Soloway mantém que este processo é bottom-up. Finalmente, existem outros autores a proporem uma metamodelo integrado que une estas duas aproximações. Todas estas teorias apresentam resultados empíricos que suportam os seus estudos. Por esta razão esta área mostra uma grande divergência neste tópico. Actualmente o Construtivismo tem tomado relevância porque é uma teoria que admite o uso misturado de estratégias da aprendizagem. A primeira observação foi muito útil porque possibilita-nos seleccionar um abordagem para a construção de estratégias e ferramentas de compreensão. A segunda permitiu-nos fazer algumas contribuições nesta área. A terceira confirma que a abordagem seguida para entender programas é seleccionada pelo programador. Quanto ás nossas contribuições nesta área podemos dizer que desenvolvemos definições de conceitos mais próximas ao domínio do engenheiro de software. Desta forma eliminamos as ambiguidades produzidas pelo uso de vocabulário pedagógico. A modo de exemplo, na sub-secção seguinte apresentamos uma parte de uma sistematização dum conceito utilizado no contexto de MC. 2.1 Sistematização do Conceito de Chunk Um chunk é um conjunto de estruturas de texto. Ou seja é uma forma de construir uma abstracção desde o código fonte do programa. Com os chunks é possível construir hierarquias de chunks. Este conceito é muito utilizado no contexto dos MC contudo as bibliografias não especificam como os chunks podem ser extraídos

4 desde o texto do programa. Nós pensamos que uma definição mais precisa permite pensar em algoritmos que façam esta tarefa e portanto proporemos a seguinte sistematização deste conceito. Chunk: é um conceito que descreve conjuntos de estruturas de texto. Eles podem ser classificados em : sequencial, selecção, iteração e rotina. Nos seguintes parágrafos definimos cada uns deles. chunk seq (stmt, n, desc): Está formado por um conjunto de n sentenças genéricas (stmt) e uma descrição (desc). Neste contexto, sentença genérica representa atribuição, chamada a função ou sentença de entrada/saída. A descrição declara a funcionalidade deste grupo de sentenças. A seguinte peça de código ilustra dois exemplos de chunk seq de três sentenças. a=temp; a=b; b=temp;... c[k]=a[i]+b[j]; i=i+1; j=j+2; O primeiro chunk é denotado como chunk seq ({a = temp; a = b; b = temp}, 3, < instercambia o valor da variavel a e o valor da variavel b >). O segundo é definido como chunk seq ({c[k] = a[i] + b[j]; i = i + 1; j = j + 2}, 3, < soma os elementos dum vector >). O tamanho de n é determinado pelo programador e é dependente do nível de precisão desejado. chunk sel (chunk seq (stmt, 1, desc), chunck, chunck): Os chunks selecção são úteis para representar sentenças de selecção. Eles estão compostos dum chunk seq que representa a condição e dois chuncks que representam as sentenças usadas na parte then e na parte else. A seguinte peça de código é um exemplo de chunck sel. if (f(x)==0) { a=temp; a=b; b=temp;} else { c[k]=a[i]+b[j]; i=i+1; j=j+2; } Esta peça de código pode ser descrita usando chunks na seguinte forma: chunk sel ( chunck seq ({f(x) == 0}, 1, < descrição da condição >), chunk seq ({a = temp; a = b; b = temp}, 3, < intercambia o valor da variavel a e o valor da variavel b >), chunk seq ({c[k] = a[i] + b[j]; i = i + 1; j = j + 2}, 3, < soma os elementos dum vector >)) O leitor pode observar que estas definições são mais precisas e possibilitam construir algoritmos para extrair chunks. Por exemplo, uma forma de extrair chunks usando estas definições pode consistir em desenvolver um analisador sintático com acções semânticas que transformem o programa fonte noutro decorado com chunks. O resto das definições de chunks e doutros conceitos de MC pode ser visto em [6]. Neste artigo não foram descritas por razões de extensão. 3 Visualização de Software A Visualização de Software (VS) [7] [2] [4] é crucial no contexto do desenvolvimento desta tese de doutoramento. Isto se deve a que é necessário representar

5 os diferentes domínios através da utilização de vistas. As vistas apresentam uma perspectiva do sistema de estudo que revela algum aspecto do mesmo. Para construir vistas de sistemas úteis para a compreensão é necessário definir uma representação estrutural e uma representação gráfica. A primeira faz referência á estrutura de dados que se utilizará para armazenar a informação e criar as vistas. A segunda aborda a temática das representações visuais dessa informação. Seleccionamos como vistas importantes as seguintes: Códigos fonte e objecto: ambos os códigos são fontes básicas de inspecção e compreensão. Normalmente o programador recorre ao código fonte para entender e modificar o sistema de estudo, por este motivo, temos que possuir estratégias para aceder ao código fonte eficientemente para facilitar o proceso de inspecção e compreensão. O código objecto é uma vista secundária que pode ser útil para tarefas como a análise do código gerado pelo compilador. Grafo de Tipos: permite visualizar os tipos utilizados e as dependências entre eles no sistema de estudo. Grafo de Funções: o código fonte é uma vista de baixo nível muito complexa de analisar quando o sistema de estudo é grande. Uma vista alternativa de mais alto nível é o grafo de funções. Esta vista mostra como as funções estão interligadas estáticamente no sistema. Desta forma o utilizador pode, com uma maior probabilidade, encontrar as funções mais importantes. Esta última função pode ser facilitada através dos operadores de grafos. Grafo de Funções de tempo de execução: o grafo de funções contêm todas as funções do sistema. Contudo, em muitas ocasiões, o utilizador necessita inspeccionar só alguma delas. Por exemplo, normalmente ele gostaria de analisar só as funções que foram utilizadas para atingir algum objectivo específico. Esta informação é fornecida por um subgrafo do grafo de funções denominado grafo de funções de tempo de execução. Grafo de Módulos: esta vista possibilita ter uma visão mais abstracta do sistema, sendo muito útil para analisar como o sistema é construído e que módulos são os mais importantes ou os mais utilizados. Para todas estas vistas a representação estrutural é directa quando utilizam listas e grafos para armazenar toda a informação. Podem aparecer situações que impliquem a geração de novas estruturas de dados, sendo que esses tópicos estão bem descritos e documentados em diferentes livros relacionados com essa temática. O problema aparece quando deseja-mos criar a representação visual. Neste caso é necessário determinar que informação é útil e como a mostrar. Neste contexto, o nosso trabalho consistiu em definir um conjunto de atributos que sempre deveriam visualizar-se e como eles seriam visualizados. Este trabalho foi principalmente feito para as representações de grafos. Para as representações textuais necessita-mos pesquisar mais. A modo de exemplo na sub-secção seguinte apresentamos a definição da visualização das dependências de módulos.

6 3.1 Dependências de Módulos As dependências de módulos mais importantes encontradas podem ser classificadas como dependências de tipos, dados e funções. A estrutura básica para modelar esta situação é um hiper-grafo dirigido, o qual é definido como: MDG=(P,E 1,E 2,E 3 ) onde P={x/ x é um módulo do sistema} e E 1 = {(x, y) / x P y P o módulo x usa uma função definida no módulo y} E 2 = {(x, y)/x P y P o módulo x usa um dado definido no módulo y} E 3 = {(x, y)/x P y P o módulo x usa um tipo definido no módulo y} Estas três principais dependências podem ser mostradas usando diferentes cores e classes de arcos. Contudo é importante caracterizar o grau de inter-dependência entre os módulos. Esta actividade pode ser feita usando a largura ou intensidade da cor. A Figura 1 mostra as dependências entre um grupo de módulos de um sistema. Sobre a esquerda pode-se ver um grafo que mostra só as dependências. Sobre a direita visualiza-se um hiper-grafo decorado. Esta vista mostra diferentes dependências em diferentes cores. Em vermelho as dependências de funções, em preto as de dados e em azul as de tipos. Também é possível visualizar arcos com larguras distintas que indicam o grau de utilização de cada um destes componentes. Neste sentido pode-se observar que o módulo 2 depende mais do que o módulo 3 se tomamos como ponto de análise as funções. Por outra parte o módulo 3 usa mais dados definidos no módulo 1 do que o módulo 2. O problema com este tipo de representação das dependências é a sobrecarga da visualização. Este inconveniente pode ser resolvido usando operações tais como filtragem, zoom, etc. Este mesmo tipo de tarefas foram feitas para as outras vistas descritas nos parágrafos precedentes e podem ser observadas em [6]. 4 Métodos de Extracção da Informação Para extrair a informação dos sistemas utilizamos Instrumentação de Código [5]. Esta técnica consiste em inserir instruções úteis no código fonte do sistema. Selecionamos como pontos estratégicos o inicio e o fim das funções. Nesses lugares inserimos funções de inspecção. Estas funções imprimem o nome da função e alguma outra informação que o programador considere importante. Os resultados obtidos com esta aproximação não foram muito bons. Isto deve-se a que as funções do sistema podem ser invocadas muitas vezes porque em certas ocasiões elas encontram-se dentro de iterações ou formam parte dum algoritmo complexo. Isto produz uma quantidade imensa de funções que não podem ser administradas com facilidade. Por esta razão foi necessário instrumentar o código para controlar as sentenças de iteração. Para atingir este objectivo esta classe de sentenças

7 Figura 1. Dependências de Módulos foram instrumentadas inserindo sentenças antes, dentro e depois das iterações. As sentenças previas ás iterações tem como tarefa inserir numa pilha o número que indica a quantidade de vezes que as funções dentro de uma iteração podem mostrar-se. As sentenças dentro das iteraçãoes diminuem essa quantidade em um. Finalmente as sentenças depois das iteraçãos tem como objectivo recuperar o número de vezes que as funções da iteração anterior devem-se mostrar. Este esquema permitiu reduzir a quantidade de funções reportadas pela nossa técnica de instrumentação. Além disso o número de funções pode ser controlado pelo utilizador porque ele pode decidir as vezes que as funções serão recuperadas. Este resultado foi satisfatório e possibilitou-nos avançar com o desenvolvimento da tese de doutoramento. A Figura 2.a mostra o esquema implementado para a instrumentação das funções e a Figura 2.b mostra o esquema para o controlo de ciclos. void f (int a, int b) push(pila,n) { for(i=0;i<tam;i++) INSPECTOR_ENTRADA("f"); {... /* acciones del loop */ INSPECTOR_SALIDA("f");... return; decrementartope(pila); } } pop(pila); (a) (b) Figura 2. Instrumentação de Funções e Controlo de Ciclos

8 4.1 Outras informações extraidas do sistema Ademais de implementar a instrumentação de código nós recuperamos toda a informação do sistema. Esta actividade permite-nos dispor de todos os componentes necessários para construir as visualizações descritas na secção 3 e inspeccionar todos as partes do código do sistema com facilidade. Além disso, nós desenhamos e criamos uma heurística de detecção de tipo de dados abstractos definidos pelo utilizador. Esta técnica baseia-se na construção dum grafo de dependências de tipos, denominado Grafo de Tipos (GT) que representa a relação é parte de. Depois a estratégia toma cada função do sistema, extrai os tipos usados em sua assinatura e constrói um sub-grafo de GT. Este último grafo contêm os nós do GT que representam os tipos usados pela função. Nós denominamos a este conjunto de nós do grafo nós básicos. Além destes nós o sub-grafo contem a todos os outros nós que podem alcançar através dum caminho aos nós básicos. Finalmente, a heurística extrai os nós maximais. Se a cardinalidade deste conjunto é maior que um, então a heurística não associa a função a nenhum tipo. Noutro caso a função é associada ao tipo maximal. A Figura 3 ilustra esta técnica. Sobre a esquerda pode-se observar um grafo de tipos. No centro encontra-se uma funçaõ. Na direita esta o sub-grafo do GT para a funçao f. O tipo seleccionado pela heurística é visualizado em cor vermelha. Figura 3. Heurística de detecção de grafos de tipos 5 Estratégias de Relação Operacional-Comportamental Nesta secção descrevemos doiss procedimentos para alcançar a relação operacionalcomportamental [3]. O primeiro é uma consequência de nosso esquema de instrumentação de código. O segundo é uma estratégia que usa informação estática é dinâmica para recuperar esta relação.

9 5.1 Efeito derivado do esquema de instrumentação de código Esta aproximação consiste em permitir a execução paralela do sistema instrumentado e do programa que administra as funções de inspecção. Este procedimento permite visualizar, directamente, as funções que estão sendo utilizadas pelo sistema para construir a sua saída. O efeito desta estratégia é similar a uma execução passo a passo a nível de funções. Básicamente este resultado é um produto derivado da implementação do nosso esquema de instrumentação de código. 5.2 BORS BORS (Behavioral-Operational Relation Strategy) [5] [6] tem por objectivo explicar o contexto onde as funções do sistema foram chamadas e suas funcionalidades. BORS baseia-se na seguinte observação: A saída dum sistema está composta de objectos do domínio do problema. Normalmente esses objectos são implementados por tipos de dados abstractos, no caso de linguagens imperativos, ou por classes, no caso de linguagens orientados a objectos. Tanto os TDAs como as classes têm objectos de dados que armazenam o seu estado e um conjunto de operações que os manipulam. Por este motivo é possível descrever cada objecto do dominio do problema utilizando os TDAs ou classes que os implementam. BORS consta dos seguintes passos: Detectar as funções relacionadas com cada objecto do domínio do problema: esta tarefa é feita em forma semi-automática. O utilizador selecciona os Tipos de Dados Abstractos que deseja explicar através da heurística de detecção de tipos descrita em brevemente na sub-secção 4.1. Depois todas as funções relacionadas com esses tipos são candidatas a ser explicadas e são armazenadas numa lista. Construir a arvore de execução de funções de tempo de execução: a saída do esquema de instrumentação de código contêm toda a informação necessária (inicio e fim da execução das funções) para construir uma estrutura de dados denominada fe-tree (Funtion Execution Tree) [1] [5] que descreve como as funções do sistema de estudo foram executadas. Explicar as funções encontradas no passo 1 usando a arvore construído no passo 2: combinando a informação dos passos anteriores (lista de funções a explicar e fe-tree) podem-se explicar as funções mostrando: o contexto onde foram invocadas (caminho desde a raíz até a função) e a tarefa que realizou para o sistema (sub-arvore que tem como raíz a função que está a ser explicada). Este processo aplica uma travessia por níveis sobre a fe-tree. Cada vez que se encontra um nó da fe-tree que pertence á lista de funções a explicar reporta-se o caminho desde esse nó até a raíz. Também é possível mostrar a sub-arvore que tem como raíz o nó analisado.

10 6 Conclução Neste artigo apresentamos os trabalhos realizados no contexto do desenvolvimento de nossa tese de doutoramento. As pesquisas estão relacionadas com: Modelos Cognitivos, Visualização de Software e Métodos de Extracção da Informação. Cada uma destas temáticas permite-nos extrair aspectos importantes para construir estratégias e ferramentas úteis para a compreensão de programas. Como principais contribuições deste trabalho podemos mencionar: a sistematização dos conceitos utilizados no âmbito dos modelos cognitivos, a caracterização de varias vistas dum sistema de software, a elaboração dum esquema de instrumentação de código para a extracção de informação dinâmica e a criação da estratégia BORS. As primeiras duas contribuições são a nível teórico enquanto as últimas são teóricas e práticas. Os procedimentos práticos são parte dum sistema de compreensão e inspecção de programas denominado PICS. Este sistema tenta implementar inter-relação de domínios através de distintas vistas, usa BORS e instrumentação de código como estratégias para relacionar directamente os domínios de programa e do problema. Uma descrição detalhada pode ser vista em [6]. Actualmente os nossos esforços estão orientados a completar: o sistema de visualização do PICS com as caracterizações teóricas do tipo das descritas na secção 3, o esquema de instrumentação de código com a inserção de sentenças noutras partes do programa. Além disso desejamos implementar técnicas de elaboração de documentação de alto nível que usem a nossa sistematização de conceitos de Modelos Cognitivos. Por outra parte, e talvez paralelamente ás tarefas previamente mencionadas, pretendemos fazer uma análise de requisitos com o objectivo de implementar uma estratégia de relação operacional-comportamental que siga um caminho top-down. Referências 1. Abdelwahab Hamou-Lhadj.The Concept of Trace Summarization.PCODA: Program Comprehension through Dynamic Analysis.(2005), Franoise Balmas, Harald Werts, Rim Chaabane. DDGraph: a Tool to Visualize Dynamic Dependences. Program Comprehension through Dynamic Analysis (2005), Lieberman H. and Fry C., Bridging the Gulf Between Code and Behavior in Programming, ACM Conference on Computers and Human Interface, (1994). 4. Maria J. Varanda and P. Henriques, Sistematização da Animação de Programas, Ph.D Thesis, University of Minho, (2000). 5. Mario M. Beron, Pedro Henriques, Maria J. Varanda, Roberto Uzal. A System to understand Programs Written in C Language by Code Annotation. European Joint Conference on Theory and Practice of Software, (2007). 6. Mario M. Beron, Pedro Henriques, Maria J. Varanda, Roberto, Program Inspection to interconnect Behavioral and Operational Views for Program Comprehension, Internal Report. University of Minho - National University of San Luis, (2007). 7. Moher T. G., {PROVIDE}: A Process Visualization and Debugging Environment, IEEE Transactions on Software Engineering, 14 (1988),

Curso de Iniciação ao Access Basic (I) CONTEÚDOS

Curso de Iniciação ao Access Basic (I) CONTEÚDOS Curso de Iniciação ao Access Basic (I) CONTEÚDOS 1. A Linguagem Access Basic. 2. Módulos e Procedimentos. 3. Usar o Access: 3.1. Criar uma Base de Dados: 3.1.1. Criar uma nova Base de Dados. 3.1.2. Criar

Leia mais

Capítulo 1. Linguagens e processadores

Capítulo 1. Linguagens e processadores Capítulo 1. 1. Linguagens 1.1. Definição Definição : Uma linguagem L sobre um alfabeto, também designado com frequência por vocabulário, V, é um conjunto de frases, em que cada frase é uma sequência de

Leia mais

Bases de Dados. Bibliografia. 1. Parte I Componente Teórica. Pedro Quaresma

Bases de Dados. Bibliografia. 1. Parte I Componente Teórica. Pedro Quaresma Índice Bases de Dados Pedro Quaresma Departamento de Matemática Universidade de Coimbra 2010/2011 1. Parte I Componente Teórica 1.1 Introdução 1.2 Modelo ER 1.3 Modelo Relacional 1.4 SQL 1.5 Integridade

Leia mais

Plano de Trabalho Docente 2011. Qualificação: Auxiliar de informática para internet Módulo: 1º

Plano de Trabalho Docente 2011. Qualificação: Auxiliar de informática para internet Módulo: 1º Plano de Trabalho Docente 2011 Ensino Técnico ETEC Santa Isabel Código: 219 Município: Santa Isabel Área Profissional: Informação e Comunicação Habilitação Profissional: Técnico em informática para internet

Leia mais

Algoritmia e Estruturas de Dados

Algoritmia e Estruturas de Dados JOSÉ BRAGA DE VASCONCELOS JOÃO VIDAL DE CARVALHO Algoritmia e Estruturas de Dados Programação nas linguagens C e JAVA Portugal/2005 Reservados todos os direitos por Centro Atlântico, Lda. Qualquer reprodução,

Leia mais

Compiladores. A seção das regras. Especificação (F)lex. Plano da aula. Escolha das regras. Compilação típica com FLEX

Compiladores. A seção das regras. Especificação (F)lex. Plano da aula. Escolha das regras. Compilação típica com FLEX Compilação típica com FLX Compiladores Análise sintática (1) Noções sobre Gramáticas Livres de conteto dição do teto de especificação No arquivo minhas_regras.l 3 partes: Declarações Regras (Rs -> Ação)

Leia mais

Figura 1 - O computador

Figura 1 - O computador Organização e arquitectura dum computador Índice Índice... 2 1. Introdução... 3 2. Representação da informação no computador... 4 3. Funcionamento básico dum computador... 5 4. Estrutura do processador...

Leia mais

3. PARADIGMA ORIENTADO A OBJETOS

3. PARADIGMA ORIENTADO A OBJETOS Paradigmas de Linguagens I 1 3. PARADIGMA ORIENTADO A OBJETOS Este paradigma é o que mais reflete os problemas atuais. Linguagens orientada a objetos (OO) são projetadas para implementar diretamente a

Leia mais

Proposta de um Sistema para Compreensão de Aplicações Web

Proposta de um Sistema para Compreensão de Aplicações Web Proposta de um Sistema para Compreensão de Aplicações Web Resumo Desenvolver software para a web é sempre um desafio dada a diversidade de tecnologias e linguagens que se interligam neste tipo de aplicações.

Leia mais

APRENDENDO LÓGICA DE PROGRAMAÇÃO VIA WEB

APRENDENDO LÓGICA DE PROGRAMAÇÃO VIA WEB APRENDENDO LÓGICA DE PROGRAMAÇÃO VIA WEB Romero Tori Universidade de São Paulo Escola Politécnica INTERLAB Laboratório de Tecnologias Interativas-USP Instituto Sumaré de Educação Superior rometori@usp.br

Leia mais

UNIVERSIDADE LUSÍADA DE LISBOA. Programa da Unidade Curricular INTRODUÇÃO À PROGRAMAÇÃO Ano Lectivo 2014/2015

UNIVERSIDADE LUSÍADA DE LISBOA. Programa da Unidade Curricular INTRODUÇÃO À PROGRAMAÇÃO Ano Lectivo 2014/2015 Programa da Unidade Curricular INTRODUÇÃO À PROGRAMAÇÃO Ano Lectivo 2014/2015 1. Unidade Orgânica Ciências da Economia e da Empresa (1º Ciclo) 2. Curso Informática 3. Ciclo de Estudos 1º 4. Unidade Curricular

Leia mais

Aula 02 Modelagem de Dados. Banco de Dados. Aula 02 Modelagem de Dados. Superior /2011 Redes Computadores - Disciplina: Banco de Dados -

Aula 02 Modelagem de Dados. Banco de Dados. Aula 02 Modelagem de Dados. Superior /2011 Redes Computadores - Disciplina: Banco de Dados - Banco de Dados Aula 02 Modelagem de Dados Roteiro Definição Evolução Projeto de BD Abstração Esquema e Instância Definição É uma representação, normalmente gráfica, de estruturas de dados reais. Auxilia

Leia mais

Processo de análise estruturada - Abordagem clássica

Processo de análise estruturada - Abordagem clássica Processo de análise estruturada - Abordagem clássica Desenvolver modelo físico actual Modelo físico actual Modelos a desenvolver tendo em conta a abordagem clássica Desenvolver modelo lógico actual Modelo

Leia mais

Tecnologia para Sistemas Inteligentes Apontamentos para as aulas sobre. Introdução à Representação e Processamento de Ontologias: Framework O3f

Tecnologia para Sistemas Inteligentes Apontamentos para as aulas sobre. Introdução à Representação e Processamento de Ontologias: Framework O3f Tecnologia para Sistemas Inteligentes Apontamentos para as aulas sobre Introdução à Representação e Processamento de Ontologias: Framework O3f Luís Miguel Botelho Departamento de Ciências e Tecnologias

Leia mais

Engenharia Reversa para Recuperação de Modelos de Sistemas Desenvolvidos em PL/SQL

Engenharia Reversa para Recuperação de Modelos de Sistemas Desenvolvidos em PL/SQL Engenharia Reversa para Recuperação de Modelos de Sistemas Desenvolvidos em PL/SQL Rodnei Couto 1, Luana Lachtermacher 1, Soeli Fiorini 1, Akeo Tanabe 1, Gustavo Carvalho 1, Arndt von Staa 1, Ricardo Choren

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

Análise de Sistemas. Conceito de análise de sistemas

Análise de Sistemas. Conceito de análise de sistemas Análise de Sistemas Conceito de análise de sistemas Sistema: Conjunto de partes organizadas (estruturadas) que concorrem para atingir um (ou mais) objectivos. Sistema de informação (SI): sub-sistema de

Leia mais

Teoria De Bases de dados

Teoria De Bases de dados Teoria De Bases de dados Paulo Leocádio Índice A informática na empresa...2 Da dependência à independência dos dados...3 Os três níveis da arquitectura de um SGBD...6 Funções e estrutura de um SGBD...7

Leia mais

GUILHERME STUTZ TÖWS ANIMAÇÃO DE ALGORITMOS

GUILHERME STUTZ TÖWS ANIMAÇÃO DE ALGORITMOS GUILHERME STUTZ TÖWS ANIMAÇÃO DE ALGORITMOS Trabalho de graduação do Curso de Ciência da Computação do Setor de Ciências Exatas da Universidade Federal do Paraná. Professor: André Luiz Pires Guedes CURITIBA

Leia mais

M323 AUTOMAÇÃO TRABALHO LABORATORIAL Nº 7

M323 AUTOMAÇÃO TRABALHO LABORATORIAL Nº 7 ESCOLA SUPERIOR NÁUTICA INFANTE D. HENRIQUE DEPARTAMENTO DE ENGENHARIA MARÍTIMA M323 AUTOMAÇÃO TRABALHO LABORATORIAL Nº 7 INTRODUÇÃO À PROGRAMAÇÃO DE AUTÓMATOS INDUSTRIAIS Por: Prof. Luis Filipe Baptista

Leia mais

1 UML (UNIFIED MODELING LANGUAGE)

1 UML (UNIFIED MODELING LANGUAGE) 1 UML (UNIFIED MODELING LANGUAGE) Segundo Tonsig (2003), para conseguir desenvolver um software capaz de satisfazer as necessidades de seus usuários, com qualidade, por intermédio de uma arquitetura sólida

Leia mais

Uma Base de Dados é uma colecção de dados partilhados, interrelacionados e usados para múltiplos objectivos.

Uma Base de Dados é uma colecção de dados partilhados, interrelacionados e usados para múltiplos objectivos. 1. Introdução aos Sistemas de Bases de Dados Uma Base de Dados é uma colecção de dados partilhados, interrelacionados e usados para múltiplos objectivos. O conceito de base de dados faz hoje parte do nosso

Leia mais

ESTRUTURAS DE DADOS I. Notas de Aula. Prof. Dr. Gilberto Nakamiti

ESTRUTURAS DE DADOS I. Notas de Aula. Prof. Dr. Gilberto Nakamiti ESTRUTURAS DE DADOS I Notas de Aula 1 SUMÁRIO 1. INTRODUÇÃO... 2 1.1 Array (vetores)... 2 2. BUSCA DE ELEMENTOS... 3 2.1 Busca Seqüencial... 3 2.2 Busca Binária... 3 2.3 Busca Indexada... 3 2.4 Busca Hash...

Leia mais

Engenharia de Software I

Engenharia de Software I Engenharia de Software I Rogério Eduardo Garcia (rogerio@fct.unesp.br) Bacharelado em Ciência da Computação Aula 05 Material preparado por Fernanda Madeiral Delfim Tópicos Aula 5 Contextualização UML Astah

Leia mais

ENIAC. Introdução aos Computadores e à Programação (Noções Básicas)

ENIAC. Introdução aos Computadores e à Programação (Noções Básicas) ENIAC Introdução aos Computadores e à ção (Noções Básicas) Introdução aos Computadores e à ção (Noções Básicas) 1 Introdução aos Computadores e à ção (Noções Básicas) 2 O transistor foi inventado em 1947

Leia mais

UNIVERSIDADE LUSÍADA DE LISBOA. Programa da Unidade Curricular PROGRAMAÇÃO Ano Lectivo 2013/2014

UNIVERSIDADE LUSÍADA DE LISBOA. Programa da Unidade Curricular PROGRAMAÇÃO Ano Lectivo 2013/2014 Programa da Unidade Curricular PROGRAMAÇÃO Ano Lectivo 2013/2014 1. Unidade Orgânica Ciências da Economia e da Empresa (1º Ciclo) 2. Curso Engenharia Electrotécnica e de Computadores 3. Ciclo de Estudos

Leia mais

Capítulo 11. Apresentação de simuladores visuais e interactivos desenvolvidos com o Microsoft Visual C++

Capítulo 11. Apresentação de simuladores visuais e interactivos desenvolvidos com o Microsoft Visual C++ Capítulo 11 Alguns simuladores orientados a objectos Apresentação de simuladores visuais e interactivos desenvolvidos com o Microsoft Visual C++ 11. Alguns simuladores orientados a objectos Apesar de existir

Leia mais

Table 1. Dados do trabalho

Table 1. Dados do trabalho Título: Desenvolvimento de geradores de aplicação configuráveis por linguagens de padrões Aluno: Edison Kicho Shimabukuro Junior Orientador: Prof. Dr. Paulo Cesar Masiero Co-Orientadora: Prof a. Dr. Rosana

Leia mais

ACTOS PROFISSIONAIS GIPE. Gabinete de Inovação Pedagógica

ACTOS PROFISSIONAIS GIPE. Gabinete de Inovação Pedagógica ACTOS PROFISSIONAIS GIPE Gabinete de Inovação Pedagógica Cooptécnica Gustave Eiffel, CRL Venda Nova, Amadora 214 996 440 910 532 379 Março, 2010 GESTÃO E PROGRAMAÇÃO DE SISTEMAS INFORMÁTICOS 1 GIPE - Gabinete

Leia mais

PROJETO DE REDES www.projetoderedes.com.br

PROJETO DE REDES www.projetoderedes.com.br PROJETO DE REDES www.projetoderedes.com.br Centro Universitário de Volta Redonda - UniFOA Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro

Leia mais

Iteração 2 Design inicial

Iteração 2 Design inicial Universidade de Aveiro Departamento de Electrónica, Telecomunicações e Informática Engenharia de Software Iteração 2 Design inicial Projecto: FX-Center Grupo: BEDS David Pacheco (nº 32665) Cesário Lucas

Leia mais

Sistemas de Bases de Dados

Sistemas de Bases de Dados Sistemas de Bases de Dados Carlos Viegas Damásio José Alferes e Carlos Viegas Damásio Sistemas de Bases de Dados 2014/15 Objectivos - Em Bases de Dados (2º ano) pretendia-se: Que os estudantes fossem capazes

Leia mais

Além da correção ortográfica nos editores de textos livres

Além da correção ortográfica nos editores de textos livres Além da correção ortográfica nos editores de textos livres William D. Colen M. Silva (colen@users.sourceforge.net) Eng. Computação pela Escola Politécnica da USP (2006) Mestrando Ciência da Computação

Leia mais

Planificação Anual TIC 8º Ano 2012/2013 1 PERÍODO

Planificação Anual TIC 8º Ano 2012/2013 1 PERÍODO Ano Letivo 2012/2013 TIC 7º ANO PLANIFICAÇÃO ANUAL DE CONTEÚDOS 1 PERÍODO 1 TEMPO- 45 MINUTOS Domínio Duração Objectivos Gerais Objectivos Específicos Estratégias/ Actividades Subdomínio 7ºA 7ºB Informação

Leia mais

Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI PCO203 Tópicos Especiais em Programação

Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI PCO203 Tópicos Especiais em Programação UNIFEI Disciplina Professor Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI PCO203 Tópicos Especiais em Programação Enzo Seraphim 1 Padrões de Operação

Leia mais

EXCEL. Listas como Bases de Dados

EXCEL. Listas como Bases de Dados Informática II Gestão Comercial e da Produção EXCEL Listas como Bases de Dados (TÓPICOS ABORDADOS NAS AULAS DE INFORMÁTICA II) Curso de Gestão Comercial e da Produção Ano Lectivo 2002/2003 Por: Cristina

Leia mais

GeCA: Uma Ferramenta de Engenharia Reversa e Geração Automática de Código

GeCA: Uma Ferramenta de Engenharia Reversa e Geração Automática de Código GeCA: Uma Ferramenta de Engenharia Reversa e Geração Automática de Código Igor Steinmacher 1, Éderson Fernando Amorim 1, Flávio Luiz Schiavoni 1, Elisa Hatsue Moriya Huzita 1 1 Departamento de Informática

Leia mais

Descrição de Arquitectura e Design. SyncMasters

Descrição de Arquitectura e Design. SyncMasters 1 Descrição de Arquitectura e Design SyncMasters ConfiKeeper Version 2.0, 16-11-2014 by SyncMasters: Carlos Paiva, 2009108909, cpaiva@student.dei.uc.pt Inês Parente, 2012152484, iparente@student.dei.uc.pt

Leia mais

Geração de código intermediário. Novembro 2006

Geração de código intermediário. Novembro 2006 Geração de código intermediário Novembro 2006 Introdução Vamos agora explorar as questões envolvidas na transformação do código fonte em uma possível representação intermediária Como vimos, nas ações semânticas

Leia mais

Curso Técnico Superior Profissional em Desenvolvimento Web

Curso Técnico Superior Profissional em Desenvolvimento Web Curso Técnico Superior Profissional em Desenvolvimento Web PROVA DE AVALIAÇÃO DE CAPACIDADE REFERENCIAL DE CONHECIMENTOS E APTIDÕES Áreas relevantes para o curso de acordo com o n.º 4 do art.º 11.º do

Leia mais

REENGENHARIA DE UM SISTEMA DE INFORMAÇÃO DE APOIO AO ENSINO UNIVERSITÁRIO PARA A CRIAÇÃO DE RESULTADOS ESTATÍSTICOS

REENGENHARIA DE UM SISTEMA DE INFORMAÇÃO DE APOIO AO ENSINO UNIVERSITÁRIO PARA A CRIAÇÃO DE RESULTADOS ESTATÍSTICOS REENGENHARIA DE UM SISTEMA DE INFORMAÇÃO DE APOIO AO ENSINO UNIVERSITÁRIO PARA A CRIAÇÃO DE RESULTADOS ESTATÍSTICOS Pedro Branco, Sónia Santos, Luís Barbosa, Ramiro Gonçalves UTAD Universidade de Trás-os-Montes

Leia mais

Capítulo 1. Introdução. 1.1 Linguagens. OBJETIVOS DO CAPÍTULO Ao final deste capítulo você deverá ser capaz de:

Capítulo 1. Introdução. 1.1 Linguagens. OBJETIVOS DO CAPÍTULO Ao final deste capítulo você deverá ser capaz de: i Sumário 1 Introdução 1 1.1 Linguagens....................................... 1 1.2 O que é um Compilador?................................ 2 1.3 Processadores de Programas: Compiladores, Interpretadores

Leia mais

Sistemas de Nomes Planos

Sistemas de Nomes Planos Sistemas de Nomes Planos November 2, 2009 Sumário Sistemas de Nomes Planos e DHTs Chord Sistemas de Nomes Planos Tipicamente, sistemas de nomes à escala da Internet usam nomes estruturados hierarquicamente.

Leia mais

Plano de Trabalho Docente 2014. Ensino Técnico

Plano de Trabalho Docente 2014. Ensino Técnico Plano de Trabalho Docente 2014 Ensino Técnico Etec: ETEC PROF MASSUYUKI KAWANO Código: 136 Município: TUPÃ Eixo Tecnológico: INFORMAÇÃO E COMUNICAÇÃO Habilitação Profissional: Habilitação Profissional

Leia mais

4.2. UML Diagramas de classes

4.2. UML Diagramas de classes Engenharia de Software 4.2. UML Diagramas de classes Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt Um diagrama de classes serve para modelar o vocabulário de um sistema Construído e refinado ao longo

Leia mais

Algumas propriedades dos objetos:

Algumas propriedades dos objetos: Orientação a Objetos Vivemos num mundo de objetos. Esses objetos existem na natureza, nas entidades feitas pelo homem, nos negócios e nos produtos que usamos. Eles podem ser categorizados, descritos, organizados,

Leia mais

Programação Modular. Alessandro Garcia. DI/PUC-Rio Março 2013

Programação Modular. Alessandro Garcia. DI/PUC-Rio Março 2013 Programação Modular Alessandro Garcia DI/PUC-Rio Março 2013 Programação Modular Quem sou eu? Quem são vocês? Qual é o problema abordado no curso? Qual é o objetivo do curso Organização: aulas, avaliação

Leia mais

Engenharia de Software

Engenharia de Software Engenharia de Software Desenho de Software Departamento de Matemática Universidade dos Açores Hélia Guerra helia@uac.pt desenho Desenho (dicionário Priberam on-line) do Lat.! designu s. m., arte de representar

Leia mais

Cap.2.5: Design de Algoritmos e Programação Estruturada. Algoritmos, fluxogramas e pseudo-código

Cap.2.5: Design de Algoritmos e Programação Estruturada. Algoritmos, fluxogramas e pseudo-código Cap.2.5: Design de Algoritmos e Programação Estruturada Algoritmos, fluxogramas e pseudo-código 1 Sumário Problemas e algoritmos Desenho de algoritmos/programas Passos na construção de algoritmos Método

Leia mais

Guia do Mestrado em Informática Sistemas e Redes & Ciência de Computadores

Guia do Mestrado em Informática Sistemas e Redes & Ciência de Computadores Guia do Mestrado em Informática Sistemas e Redes & Ciência de Computadores Faculdade de Ciências, Universidade do Porto Faculdade de Ciências da Universidade do Porto 2006-2008 http://www.dcc.fc.up.pt/mi

Leia mais

Interpretação e Compilação de Linguagens de Programação

Interpretação e Compilação de Linguagens de Programação Interpretação e Compilação de Linguagens de Programação 28 de Fevereiro de 2013 Esta unidade curricular pretende transmitir ao longo de um semestre as noções fundamentais sobre o desenho e implementação

Leia mais

Bases de Dados II 6638: BSc in Information Systems and Technologies. Cap. 1 Arquitectura de Sistemas de Bases de Dados. Module Introduction

Bases de Dados II 6638: BSc in Information Systems and Technologies. Cap. 1 Arquitectura de Sistemas de Bases de Dados. Module Introduction Bases de Dados II 6638: BSc in Information Systems and Technologies Cap. 1 Module Introduction Objectivos O propósito e a origem da arquitectura de base de dados a três níveis. O conteúdo dos níveis externo,

Leia mais

Prof. Dr. Abel Gomes (agomes@di.ubi.pt) Cap.4: Design de Algoritmos e Programação Estruturada. Algoritmos, fluxogramas e pseudo-código

Prof. Dr. Abel Gomes (agomes@di.ubi.pt) Cap.4: Design de Algoritmos e Programação Estruturada. Algoritmos, fluxogramas e pseudo-código Prof. Dr. Abel Gomes (agomes@di.ubi.pt) Cap.4: Design de Algoritmos e Programação Estruturada Algoritmos, fluxogramas e pseudo-código 1 Sumário Problemas e algoritmos Desenho de algoritmos/programas Passos

Leia mais

A Semi-Automatic Strategy to Identify Crosscutting Concerns in PL-AOVgraph Requirement Models

A Semi-Automatic Strategy to Identify Crosscutting Concerns in PL-AOVgraph Requirement Models Universidade Federal do Rio Grande do Norte Departamento de Informática e Matemática Aplicada Natal/RN - Brasil A Semi-Automatic Strategy to Identify Crosscutting Concerns in PL-AOVgraph Requirement Models

Leia mais

Conceitos Básicos de C

Conceitos Básicos de C Conceitos Básicos de C Bibliografia Problem Solving & Program design in C, Jeri R. Hanly e Elliot B. Kpffman, 3 a edição Data Structures and Algorithm Analysis in C, Mark Allen Weiss, 2 a edição, Addison-Wesley,

Leia mais

1 Função e criação do Programa. Relatório de desenvolvimento do projecto Programador/designer : Tiago MC Simões

1 Função e criação do Programa. Relatório de desenvolvimento do projecto Programador/designer : Tiago MC Simões Relatório de desenvolvimento do projecto Programador/designer : Tiago MC Simões 1) Função e criação do Programa 2) Lista de transacções/funções 3) Interface Gráfico do programa 4) A base de dados 4.1)

Leia mais

Visual Library: Uma Biblioteca para Criação de Ferramentas de Modelagem Gráfica

Visual Library: Uma Biblioteca para Criação de Ferramentas de Modelagem Gráfica Visual Library: Uma Biblioteca para Criação de Ferramentas de Modelagem Gráfica Tiago A. Gameleira 1, Raimundo Santos Moura 2, Luiz Affonso Guedes 1 1 Universidade Federal do Rio Grande do Norte (UFRN)

Leia mais

Programa de Unidade Curricular

Programa de Unidade Curricular Programa de Unidade Curricular Faculdade Engenharia Licenciatura Engenharia e Gestão Industrial Unidade Curricular Algoritmia e Programação Semestre: 1 Nº ECTS: 6,0 Regente Prof. Vítor Pereira Assistente

Leia mais

Ciclo de Vida Clássico ou Convencional CICLOS DE VIDA DE DESENVOLVIMENTO DE SISTEMAS. Ciclo de Vida Clássico ou Convencional. Enfoque Incremental

Ciclo de Vida Clássico ou Convencional CICLOS DE VIDA DE DESENVOLVIMENTO DE SISTEMAS. Ciclo de Vida Clássico ou Convencional. Enfoque Incremental CICLOS DE VIDA DE DESENVOLVIMENTO DE SISTEMAS Elicitação Ciclo de Vida Clássico ou Convencional O Modelo Cascata Análise Ana Paula Terra Bacelo Blois Implementação Material Adaptado do Prof. Marcelo Yamaguti

Leia mais

Escola Superior de Gestão de Santarém. Instalação e Manutenção de Redes e Sistemas Informáticos. Peça Instrutória G

Escola Superior de Gestão de Santarém. Instalação e Manutenção de Redes e Sistemas Informáticos. Peça Instrutória G Escola Superior de Gestão de Santarém Pedido de Registo do CET Instalação e Manutenção de Redes e Sistemas Informáticos Peça Instrutória G Conteúdo programático sumário de cada unidade de formação TÉCNICAS

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

EAD Árvore árvore binária

EAD Árvore árvore binária EAD Árvore árvore binária - Uma árvore binária é um conjunto finito de elementos (nodos) que pode ser vazio ou particionado em três subconjuntos: - raiz da árvore (elemento inicial, que é único); - subárvore

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

Pragmática das Linguagens de Programação 2004/2005

Pragmática das Linguagens de Programação 2004/2005 Instituto Superior Técnico Pragmática das Linguagens de Programação 2004/2005 Segundo Exame 11/2/2005 Número: Turma: Nome: Escreva o seu número em todas as folhas do teste. O tamanho das respostas deve

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

Extracção de Anúncios e Notificação de Utilizadores do Site do Emprego Científico da Fundação para a Ciência e a Tecnologia

Extracção de Anúncios e Notificação de Utilizadores do Site do Emprego Científico da Fundação para a Ciência e a Tecnologia Extracção de Conhecimento da Internet Mestrado em Inteligência Artificial e Computação Extracção de Anúncios e Notificação de Utilizadores do Site do Emprego Científico da Fundação para a Ciência e a Tecnologia

Leia mais

Arquiteturas RISC. (Reduced Instructions Set Computers)

Arquiteturas RISC. (Reduced Instructions Set Computers) Arquiteturas RISC (Reduced Instructions Set Computers) 1 INOVAÇÕES DESDE O SURGIMENTO DO COMPU- TADOR DE PROGRAMA ARMAZENADO (1950)! O conceito de família: desacoplamento da arquitetura de uma máquina

Leia mais

EMENTAS DO CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

EMENTAS DO CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS EMENTAS DO CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS INTRODUÇÃO À COMPUTAÇÃO 60 h 1º Evolução histórica dos computadores. Aspectos de hardware: conceitos básicos de CPU, memórias,

Leia mais

Cadeira de Tecnologias de Informação. Conceitos fundamentais de sistemas e tecnologias de informação e de gestão do conhecimento.

Cadeira de Tecnologias de Informação. Conceitos fundamentais de sistemas e tecnologias de informação e de gestão do conhecimento. Cadeira de Tecnologias de Informação Ano lectivo 2007/08 Conceitos fundamentais de sistemas e tecnologias de informação e de gestão do conhecimento. Prof. Mário Caldeira Profª Ana Lucas Dr. Fernando Naves

Leia mais

Caderno de Introdução Bases Dados

Caderno de Introdução Bases Dados José Adriano Adriano@ipb.pt Página 1 Sumário 1. Introdução ao Ambiente de Base de Dados 1.1 Contextualização das Base de Dados 1.2 Noção de Base de Dados 1.3 Características das Bases de Dados 1.4 Objectivos

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

Estrutura da Norma. 0 Introdução 0.1 Generalidades. ISO 9001:2001 Sistemas de Gestão da Qualidade Requisitos. Gestão da Qualidade 2005

Estrutura da Norma. 0 Introdução 0.1 Generalidades. ISO 9001:2001 Sistemas de Gestão da Qualidade Requisitos. Gestão da Qualidade 2005 ISO 9001:2001 Sistemas de Gestão da Qualidade Requisitos Gestão da Qualidade 2005 Estrutura da Norma 0. Introdução 1. Campo de Aplicação 2. Referência Normativa 3. Termos e Definições 4. Sistema de Gestão

Leia mais

Capítulo. Sistemas de apoio à decisão

Capítulo. Sistemas de apoio à decisão Capítulo 10 1 Sistemas de apoio à decisão 2 Objectivos de aprendizagem Identificar as alterações que estão a ter lugar na forma e função do apoio à decisão nas empresas de e-business. Identificar os papéis

Leia mais

Algoritmos e Estrutura de Dados II

Algoritmos e Estrutura de Dados II Universidade Federal do Vale do São Francisco Algoritmos e Estrutura de Dados II Professor: Marcelo Santos Linder E-mail: marcelo.linder@univasf.edu.br Ementa Árvores B, grafos e tabelas de hash: alocação

Leia mais

Gestão de Configurações II

Gestão de Configurações II Gestão de Configurações II Bibliografia Livro: Software Configuration Management Patterns: Effective Teamwork, Practical Integration Gestão de Projecto 14 Padrões de Gestão Os padrões de gestão de configurações

Leia mais

GereComSaber. Disciplina de Desenvolvimento de Sistemas de Software. Sistema de Gestão de Serviços em Condomínios

GereComSaber. Disciplina de Desenvolvimento de Sistemas de Software. Sistema de Gestão de Serviços em Condomínios Universidade do Minho Conselho de Cursos de Engenharia Licenciatura em Engenharia Informática 3ºAno Disciplina de Desenvolvimento de Sistemas de Software Ano Lectivo de 2009/2010 GereComSaber Sistema de

Leia mais

LEVANTAMENTO DE REQUISITOS SEGUNDO O MÉTODO VOLERE

LEVANTAMENTO DE REQUISITOS SEGUNDO O MÉTODO VOLERE LEVANTAMENTO DE REQUISITOS SEGUNDO O MÉTODO VOLERE RESUMO Fazer um bom levantamento e especificação de requisitos é algo primordial para quem trabalha com desenvolvimento de sistemas. Esse levantamento

Leia mais

Direcção Regional de Educação do Algarve

Direcção Regional de Educação do Algarve MÓDULO 1 Folha de Cálculo 1. Introdução à folha de cálculo 1.1. Personalização da folha de cálculo 1.2. Estrutura geral de uma folha de cálculo 1.3. O ambiente de da folha de cálculo 2. Criação de uma

Leia mais

EAD Árvore - representação usando listas ligadas

EAD Árvore - representação usando listas ligadas 4.1. Definição É uma árvore binária em que os seus nodos têm associado uma chave, que - determina a sua posição de colocação na árvore e - obedece às seguintes regras: a chave de um nodo é - maior do que

Leia mais

UNIVERSIDADE ESTADUAL PAULISTA INSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO E ESTATÍSTICA

UNIVERSIDADE ESTADUAL PAULISTA INSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO E ESTATÍSTICA UNIVERSIDADE ESTADUAL PAULISTA INSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO E ESTATÍSTICA Teste de Software Engenharia de Software 2o. Semestre de 2005 Slide

Leia mais

EMENTAS DAS DISCIPLINAS

EMENTAS DAS DISCIPLINAS EMENTAS DAS DISCIPLINAS CST SISTEMAS DE INFORMAÇÃO DISCIPLINA: Algoritmo e Programação I A disciplina aborda o estudo de algoritmos, envolvendo os conceitos fundamentais: variáveis, tipos de dados, constantes,

Leia mais

Programação com Objectos. Processamento de Dados I. 3. UML (Unified Modeling Language)

Programação com Objectos. Processamento de Dados I. 3. UML (Unified Modeling Language) Programação com Objectos Processamento de Dados I 3. UML (Unified Modeling Language) 1 Modelo UML Diagrama de classes Programação com Objectos / Processamento de Dados I 2 Modelo O desenvolvimento de programas

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

Banco de Dados Aula 02. Colégio Estadual Padre Carmelo Perrone Profº: Willian

Banco de Dados Aula 02. Colégio Estadual Padre Carmelo Perrone Profº: Willian Banco de Dados Aula 02 Colégio Estadual Padre Carmelo Perrone Profº: Willian Conceitos básicos Dado: Valor do campo quando é armazenado dento do BD; Tabela Lógica: Representa a estrutura de armazenamento

Leia mais

Linguateca e Processamento de Linguagem Natural na Área da Saúde: Alguns Comentários e Sugestões

Linguateca e Processamento de Linguagem Natural na Área da Saúde: Alguns Comentários e Sugestões Capítulo 7 Linguateca e Processamento de Linguagem Natural na Área da Saúde: Alguns Comentários e Sugestões Liliana Ferreira, António Teixeira e João Paulo da Silva Cunha Luís Costa, Diana Santos e Nuno

Leia mais

Guião de Introdução ao Eclipse IDE Índice

Guião de Introdução ao Eclipse IDE Índice Índice 1. Introdução... 2 1.1. O que é um ambiente de desenvolvimento (IDE)?... 2 1.2. Visão geral sobre o Eclipse IDE... 2 2. Iniciar o Eclipse... 3 2.1. Instalação... 3 2.2. Utilizar o Eclipse... 3 3.

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

12 EXCEL MACROS E APLICAÇÕES

12 EXCEL MACROS E APLICAÇÕES INTRODUÇÃO O principal objetivo deste livro é auxiliar o leitor na sua aprendizagem sobre os recursos avançados do Excel em especial na interligação com o Visual Basic for Applications (VBA). Pretende-se

Leia mais

GereComSaber. Desenvolvimento de Sistemas de Software. Universidade do Minho Conselho de Cursos de Engenharia Licenciatura em Engenharia Informática

GereComSaber. Desenvolvimento de Sistemas de Software. Universidade do Minho Conselho de Cursos de Engenharia Licenciatura em Engenharia Informática Universidade do Minho Conselho de Cursos de Engenharia Licenciatura em Engenharia Informática Desenvolvimento de Sistemas de Software Ano Lectivo de 2009/10 GereComSaber Ana Duarte, André Guedes, Eduardo

Leia mais

Portal AEPQ Manual do utilizador

Portal AEPQ Manual do utilizador Pedro Gonçalves Luís Vieira Portal AEPQ Manual do utilizador Setembro 2008 Engenharia Informática - Portal AEPQ Manual do utilizador - ii - Conteúdo 1 Introdução... 1 1.1 Estrutura do manual... 3 1.2 Requisitos...

Leia mais

Modelo Cascata ou Clássico

Modelo Cascata ou Clássico Modelo Cascata ou Clássico INTRODUÇÃO O modelo clássico ou cascata, que também é conhecido por abordagem top-down, foi proposto por Royce em 1970. Até meados da década de 1980 foi o único modelo com aceitação

Leia mais

4 Conversor EDTV Raw. 4.1 Arquitetura

4 Conversor EDTV Raw. 4.1 Arquitetura 4 Conversor EDTV Raw O conversor EDTV Raw é o programa que lê um documento escrito no perfil NCL EDTV e gera um documento Raw equivalente, i.e. que define a mesma apresentação. Este capítulo, apresenta

Leia mais

Interpretação e Compilação de Linguagens de Programação Sintaxe e Semântica

Interpretação e Compilação de Linguagens de Programação Sintaxe e Semântica Interpretação e Compilação de Linguagens de Programação Sintaxe e Semântica 28 de Fevereiro de 2013 Nesta aula apresentam-se dois dos aspetos fundamentais das linguagens de programação, sintaxe e semântica.

Leia mais

... Calendarização: 2 blocos de 90 m Metas/Objetivos Descritores Conceitos/Conteúdos Estratégias/Metodologias Avaliação

... Calendarização: 2 blocos de 90 m Metas/Objetivos Descritores Conceitos/Conteúdos Estratégias/Metodologias Avaliação DEPARTAMENTO DE MATEMÁTICA E INFORMÁTICA DISCIPLINA: TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO PLANIFICAÇÃO DE 7º ANO... 1º Período Domínio INFORMAÇÃO I7 A Informação, o conhecimento e o mundo das tecnologias

Leia mais

Projeto de Arquitetura

Projeto de Arquitetura Projeto de Arquitetura Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 11 Slide 1 Objetivos Apresentar projeto de arquitetura e discutir sua importância Explicar as decisões de projeto

Leia mais

Introdução ao Projeto. Projeto de Software. 1) Objetivos. 2) Importância. Análise e Projeto - Diferenças. Importância. Silvia Regina Vergilio - UFPR

Introdução ao Projeto. Projeto de Software. 1) Objetivos. 2) Importância. Análise e Projeto - Diferenças. Importância. Silvia Regina Vergilio - UFPR Introdução ao Projeto Projeto de Software Silvia Regina Vergilio - UFPR 1. Objetivos 2. Importância 3. Fundamentos 4. O processo de projeto 5. Métodos de projeto 6. Analisando a estrutura do software 1)

Leia mais

Programação I. Departamento de Engenharia Rural Centro de Ciências Agrárias

Programação I. Departamento de Engenharia Rural Centro de Ciências Agrárias Departamento de Engenharia Rural Centro de Ciências Agrárias Programação I Prof. Bruno Vilela Oliveira bruno@cca.ufes.br http://www.brunovilela.webnode.com.br Programas e Linguagens Para executar uma tarefa

Leia mais

Árvores Binárias. Observação: Material elaborado a partir do material do Professor Marcos Costa.

Árvores Binárias. Observação: Material elaborado a partir do material do Professor Marcos Costa. Árvores Binárias Observação: Material elaborado a partir do material do Professor Marcos Costa. Árvores Binárias Árvore binária é definida como um conjunto finito de nós que Ou está vazio Ou consiste de

Leia mais

Estruturas de Dados Árvores

Estruturas de Dados Árvores Estruturas de Dados Árvores Prof. Eduardo Alchieri Árvores (introdução) Importância de estruturas unidimensionais ou lineares (vetores e listas) é inegável Porém, estas estruturas não são adequadas para

Leia mais