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

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

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

Transcrição

1 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. Sintaxe EBNF Digramas Sintáticos 3. Semântica O Significado de um Programa Definição da Semântica da Linguagem Lambda Calculus: Uma Base Semântica Mínima 4. Estendendo a Semântica de uma Linguagem 1 2 -Overview- -Overview- A sintaxe de uma linguagem é o seu conjunto de regras gramaticais (normalmente definidos através de EBNF Extended Backus-Naur Form e/ou diagramas sintáticos). O significado de um programa é representado através do código portável (p-code) ou por uma árvore de computação. A sintaxe da linguagem define a árvore de computação que corresponde a cada programa fonte válido. A semântica é um conjunto de regras para a interpretação do significado dos comandos da linguagem de programação. A especificação da semântica de uma linguagem de programação define como cada árvore de computação será implementada em uma máquina de forma que seja preservado o seu significado. 3 Sendo sempre coerente com a portabilidade do código, define-se a semântica de uma linguagem em termos de um modelo independente de implementação. Tal modelo, a máquina abstrata, é composto de um ambiente de programa, ambiente compartilhado, pilha, e fluxos (de comunicação). A base semântica de uma linguagem dá significado à versão específica de uma máquina que define a linguagem, junto com as estruturas de dados internas e procedimentos de interpretação que implementam a semântica abstrata. O lambda calculus é um exemplo de uma base semântica mínima. Uma linguagem pode ser estendida primariamente através de seu vocabulário e ocasionalmente através de sua sintaxe, como em EL/1, ou através de sua semântica, como em FORTH. 4 - Fundamentos das Linguagens de Programação - Métodos Formais não estavam disponíveis quando as primeiras LPs de alto nível estavam sendo criadas (anos 50). FORTRAN: desenvolvimento ad hoc sem método formal. ALGOL: nova abordagem para a especificação da sintaxe e da semântica. Foi a primeira LP com cuja sintaxe foi descrita formalmente. A notação BNF foi desenvolvida para este propósito (início dos anos 60). BNF: Backus-Naur Form: A BNF é equivalente (em termos de poder de expressão) às GLCs desenvolvidas pelo lingüista Noam Chomsky para descrição das linguagens naturais. As sintaxes formais e os métodos de análise sintática surgiram dos trabalhos sobre autômatos e de lingüística. Os métodos formais de especificação de semântica surgiram dos trabalhos de lógica e computabilidade e foram influenciados pelo trabalho de Church sobre lambda calculus. 5 Sintaxe: As regras para a construção de uma sentença de palavras (comando), de um parágrafo (módulo), e de um texto (programa) corretos formam a sintaxe de uma linguagem. Definição da sintaxe de uma LP: através de uma linguagem formal. Variedade de formalismos surgiram, porém as notações mais comuns são: EBNF Extended Backus-Naur Form Diagramas Sintáticos Ambas podem expressar exatamente a mesma classe de linguagens. Parser Generators: Geradores de Analisadores Sintáticos 6

2 Uma definição de linguagem em EBNF pode ser traduzida por um programa denominado parser generator 1 (Gerador de Analisador Gramatical) para um analisador sintático Um parser generator pode manipular apenas gramáticas para linguagens livres de contexto. As gramáticas publicadas para maioria das linguagens de programação são livres de contexto. 1 - [O termo antigo era compiler compiler. Isto levou ao nome do parser generator UNIX, yacc, sigla de yet another compiler compiler.] Parser: Lê os programas fontes do usuário e determina a categoria sintática (classes de palavras) de cada símbolo e combinações de símbolos. Apresenta como saída: lista de símbolos definidos no programa, e árvore sintática, que especifica o papel de cada símbolo; O parser é o coração de qualquer compilador ou interpretador de uma linguagem Ver Figura 4.3 (anexo página 76 do livro) 7 8 Resultados positivos devido aos estudos da Teoria das Linguagens Formais e dos Analisadores Sintáticos: Facilitou o projeto da linguagens Linguagens antigas (ex.: FORTRAN): Desenvolvimento ad hoc, Definição da sintaxe muito extensa e com excesso de casos especiais, Processo de análise sintática lento e difícil, comparado aos padrões atuais. Linguagens atuais: Projetadas para serem analisadas sintaticamente por algoritmos eficientes; Sintaxe concisa e elegante (ex. Pascal); Compiladores pequenos, podendo ser implementados em PCs. 9 Os estudos da Teoria das Linguagens Formais e dos Analisadores Sintáticos trouxeram resultados positivos e afetaram fortemente o projeto das linguagens. As linguagens mais antigas não foram projetadas tendo em mente os modernos métodos de análise sintática: suas sintaxes foram desenvolvidas ad hoc. Conseqüentemente, a definição da sintaxe para tais linguagens, como a FORTRAN por exemplo, é muito extensa e cheia de casos especiais. Atualmente os padrões dessas linguagens são relativamente baixos e de difícil análise sintática Sintaxe : BNF Estendida - - Sintaxe : BNF Estendida - BNF - Backus-Naur Form: desenvolvida por Backus e Naur (1960): Linguagem formal para a descrição de sintaxes de LP s. Usada para definir a ALGOL (1960 s): popularizou-se! O formalismo original foi estendido: EBNF: Extended Backus-Naur Form e teve aceitação geral. Uma gramática EBNF consiste de: Um símbolo inicial, Um conjunto de símbolos terminais que são palavras-chave e marcadores sintáticos da linguagem que está sendo definida. Um conjunto de símbolos não-terminais, que correspondem às categorias sintáticas e tipos de comandos da linguagem. Uma série de regras, denominadas produções, que especificam como cada símbolo não-terminal pode ser expandido em uma frase contendo terminais e não-terminais. Cada não-terminal possui uma regra de produção, a qual pode conter alternativas. 11 A sintaxe da EBNF Ver anexo (págs. 77 a 80 do livro) 12

3 - Sintaxe : BNF Estendida - - Sintaxe : Diagramas Sintáticos - Geração de um programa: Para se gerar um programa usando uma gramática, inicia-se com o símbolo de entrada especificado e expande-se de acordo suas regras de produção. Processo de derivação. Ver exemplo na pág. 79 do livro. Análise sintática de um programa: É o processo inverso do processo de geração; Inicia-se com o código fonte: as rotinas de análise sintática de um compilador determina o quanto um código fonte corresponde à gramática; A saída é uma representação em árvore da estrutura gramatical do código, chamada árvore sintática (parse tree): métodos bottom-up e top-down. 13 Desenvolvido por Niklaus Wirth para definir a sintaxe da linguagem Pascal. Tem o poder de expressar exatamente a mesma classe de linguagens que o formalismo EBNF. Proporciona uma forma gráfica bi-dimensional para comunicar a gramática é visual, e mais fácil para as pessoas. Tem os mesmos elementos de uma gramática EBNF. Um símbolo inicial, Símbolos terminais, Símbolos não-terminais, Regras de produção Sintaxe : Diagramas Sintáticos - O Significado de um Programa Definição dos diagramas sintáticos: Ver anexo (págs. 81 a 83 do livro) 15 Tradutor converte um programa do seu código fonte para uma representação em árvore chamada p-code (portable code): os p-codes são totalmente independentes de hardware. Esta árvore representa a estrutura do programa. A sintaxe formal da linguagem define os tipos de nós na árvore e como eles podem ser combinados. Os nós da árvore representam objetos e computações. A estrutura da árvore representa a ordem (parcial) na qual as computações devem ser realizadas. Se alguma parte desta árvore estiver indefinida ou faltando, a árvore pode não ter significado. 16 O Significado de um Programa A semântica formal define o significado da árvore de computação e, conseqüentemente, o significado do programa. O implementador da linguagem deve determinar como converter esta árvore para código de máquina para uma máquina específica a fim de que a sua tradução tenha o mesmo significado que àquele definido pela semântica formal. Esta abordagem em dois passos é usada porque a conversão do texto fonte para a forma de árvore pode ser a mesma para todas as implementações de uma linguagem. Apenas o segundo passo, geração de código, é dependente de máquina (hardware). 17 O Significado de um Programa Tradução do código fonte para código de máquina Código Fonte: begin x := 17; y := x + 1; End Código Objeto: moveq #17, d0 mode d0, x addq #1, d0 move d0, y Árvore do código portável (p-code) ; := := x 17 y + x 1 18

4 Definição da Semântica da Linguagem Definição da Semântica da Linguagem Semântica das linguagens: são as regras para a interpretação do significado dos comandos da linguagem. Para que uma linguagem seja significativa e útil, os projetistas da linguagem, os autores de compiladores, e os programadores devem compartilhar de um entendimento comum sobre sua semântica. Se não existir um padrão de semântica único, ou não existir um entendimento comum sobre o padrão, vários desenvolvedores de compiladores implementarão a linguagem diferentemente um do outro, e o conhecimento de um programador não será transferível de uma implementação para outra. Para se definir a semântica: devem ser definidos os resultados de algum computador abstrato ou real executando o programa, ou escrever um conjunto completo de fórmulas matemáticas axiomatize a operação do programa e os resultados esperados. A definição deve ser completa, precisa, correta, e sem ambigüidade Definição da Semântica da Linguagem A semântica de uma linguagem deve definir um conjunto altamente variado de coisas, incluindo: Qual é a interpretação correta para cada tipo de comando? O que significa quando um nome é escrito? O que acontece durante uma chamada a função? E qual ordem um computação é feita? Existem expressões válidas sintaticamente que não têm significado? Em quais modos um autor de um compilador possui liberdade? Até que ponto todos os compiladores devem produzir códigos que computam as mesmas respostas? Assim como existem sistemas formais (como EBNF) usados para se definir as sintaxes das LPs, também existem sistemas formais para se definir as semânticas das LPs. 21 A fim de tornar as definições das LPs portáveis e independentes das propriedades de algum hardware em particular, a semântica de uma árvore de computação deve ser definida em termos de um modelo abstrato de um computador, ao invés de algum hardware específico. Tal modelo possui elementos que representam o hardware do computador, mais um recurso para a definição e uso de símbolos. Modelo abstrato de um computador. Forma uma ponte entre as necessidades dos humanos e o computador. Por um lado, isso pode representar computação simbólica, e Por outro lado, os elementos do modelo são escolhidos a fim de que eles possam ser facilmente implementados em um hardware real. 22 A máquina abstrata que descreveremos aqui possui 5 elementos: Ambiente de programa, Pilha, Fluxos, Ambiente compartilhado, Controle. 23 Ambiente de Programa Contexto interno do programa. Inclui definições globais e o armazenamento alocado dinamicamente que podem ser alcançados através de objetos globais. É a parte da máquina abstrata que suporta comunicação entre quaisquer módulos aninhados sem hierarquia em um único programa. Cada função, F, existe em algum contexto simbólico. Nomes estão definidos fora de F para objetos e outras funções. Se estes nomes estão no ambiente de programa de F, eles são conhecidos para F e permitem a F fazer referência a seus objetos e chamar essas funções. O ambiente de programa é implementado através de uma tabela de símbolos. Quando um símbolo é definido, seu nome é colocado na tabela de símbolos, a qual conecta cada nome ao seu significado. Símbolos pré-definidos também são partes do ambiente. O significado do nome é armazenado em alguma localização de memória, quando da definição do nome ou posteriormente. 24

5 Este próprio espaço, ou um ponteiro para ele, é mantido adjacente ao nome na tabela de símbolos. Dependendo da LP, o significado pode ser armazenado dentro de um espaço através da vinculação e inicialização e/ou ele pode ser alterado por atribuição. Ambiente Compartilhado É o contexto proporcionado pelo Sistema Operacional ou shell de desenvolvimento de programa. Suporta a comunicação entre o programa e o mundo externo ao programa. Um modelo para uma LP que suporta multitarefa deve incluir este elemento para permitir a comunicação entre tarefas. Objetos compartilhados estão no ambiente de duas ou mais tarefas mas não pertencem a nenhuma delas. Os objetos que podem ser acessados diretamente por tarefas separadas, assíncronas que formam um job, são parte do ambiente compartilhado. A Pilha A pilha é a parte do modelo de computação que suporta comunicação entre as chamadas a funções abrangidas e abrangentes que formam uma expressão. É uma estrutura segmentada de tamanho teoricamente ilimitado. O topo do segmento da pilha, ou frame, proporciona um ambiente local e objetos temporários para a função atualmente ativa. Este ambiente local consiste de nomes locais para objetos externos à função (parâmetros) e para objetos internos à função (variáveis locais). Ambientes locais para diversas funções podem existir simultaneamente e não interferirão entre si. A suspensão de uma função a fim de executar uma outra é possível, com a reativação posterior da primeira no mesmo estado como quando ela foi suspendida. Mensagens intertarefas são exemplos A pilha é implementada através de uma estrutura do tipo pilha. Um ponteiro de pilha é usado para apontar para o frame da pilha (ambiente local) da função local, que aponta de volta para o frame anterior. Um frame para uma função F é criado sobre o frame anterior mediante a entrada para F, e é destruído quando F sair. O armazenamento para parâmetros de funções e endereço de retorno de função são alocados neste frame e inicializados (e possivelmente removidos mais tarde) pelo programa chamador. Mediante uma entrada para F, os nomes de seus parâmetros são adicionados ao ambiente local vinculando-os às localizações da pilha que foram determinadas pelo programa chamador. Os símbolos locais definido em F também são adicionados ao ambiente e vinculados a localizações adicionais alocadas no frame da pilha de F. A tabela de símbolos é gerenciada de tal forma que é permitido que estes nomes sejam removidos do ambiente mediante a saída da função. 27 Fluxos (streams) São um meio de comunicação entre diferentes tarefas que são partes de um job. Um programa existe em um contexto maior de um sistema computacional e seus arquivos. A máquina abstrata, conseqüentemente, deve refletir o armazenamento em massa e formas de se alcançar entrada e saída de dados. Um fluxo é um modelo de um arquivo seqüencial. Ele é uma seqüência, no tempo, de objetos de dados, que podem ser lidos ou escritos. Nomes simbólicos para fluxos e para os arquivos para os quais eles estão vinculados devem ser parte de um ambiente de programa. O conceito de um fluxo é, na verdade, mais genérico do que o conceito de um arquivo seqüencial. Suponha duas tarefas rodando concorrentemente em um sistema computacional, e o fluxo de saída de uma torna-se o fluxo de entrada da outra. Um pequeno buffer para manter a saída até que ela seja reprocessada pode ser o suficiente para implementar ambos os fluxos. 28 Controle A seção de controle do modelo abstrato implementa as regras semânticas da LP que definem a ordem na qual as partes da árvore de computação abstrata será avaliada. Ela define como a execução de comandos e funções iniciará, processará e finalizará, incluindo os detalhes de seqüenciação, execução condicional, repetição, e avaliação de função. Existem 3 tipos padrões de controle: funcional, seqüencial, e assíncrono. Estes padrões são suportados em várias combinações em diferentes linguagens. Cada tipo de padrão de controle está associado com sua própria forma de comunicação. (ver diagrama 4.9 página 89 do livro) 29 Uma Base Semântica A definição da semântica formal de uma linguagem deve incluir definições específicas dos detalhes da máquina abstrata que implementa sua semântica. Diferentes modelos de linguagens incluem e excluem diferentes elementos para nossa máquina abstrata. Muitas linguagens não suportam um ambiente compartilhado. As novas linguagens funcionais não suportam um ambiente de programa, exceto para símbolos pré-definidos. Os elementos de controle, em particular, diferem grandemente de uma linguagem para a outra. Define-se o termo base semântica de uma linguagem para expressar a versão específica da máquina abstrata que define a linguagem, juntamente com as estruturas de dados e procedimentos de interpretação que implementam a semântica abstrata. No topo da da base semântica está a sintaxe da linguagem, que especifica palavras-chaves, símbolos, e ordem dos elementos a serem usados para denotar cada unidade semântica que ela suporta. 30

6 Lambda Calculus: Uma base semântica mínima A base semântica mínima de uma linguagem deve definir os tipos de objetos que são suportados, as ações primitivas, e as estruturas de controle pelas quais os objetos e ações são relacionados, e as formas pelas quais a linguagem pode ser estendida através de novas definições. Os recursos incluídos em uma base semântica mínima determina completamente o poder de uma linguagem; itens deixados de foram não podem ser definidos pelo programador ou adicionados através do uso de macros. Onde duas unidades semânticas diferentes proporcionam o mesmo poder, a escolha de qual incluir determina o caráter da linguagem e o estilo de programas que serão escritos nela. 31 Não é uma linguagem de programação e não está diretamente relacionado com computadores. É um sistema simbólico e lógico no qual fórmulas são escritas como strings de símbolos e manipulados de acordo com regras lógicas. É um sistema completo (desenvolvido por Church), capaz de representar qualquer função computável. Conseqüentemente, qualquer LP que pode implementar ou emular lambda calculus também é completa. O lambda calculus nos dá um ponto de partida para a definição de uma base semântica mínima para computação que é matematicamente clara. Uma versão estendida do lambda calculus forma a base semântica para as LPs modernas. 32 Lambda Calculus: Uma base semântica mínima Símbolos, Funções e Fórmulas Símbolo de um único caracter, tal como y, chamado variável, usado para nomear um parâmetro. Símbolos de pontuação (, ),., e λ. Esses símbolos podem ser combinados para constituir fórmulas de acordo com três regras simples, como segue: 1. Uma variável é uma fórmula, 2. Se y é uma variável e F é uma fórmula, então (λy.f) é uma fórmula, a qual é chamada expressão lambda; diz-se que y éo parâmetro da expressão lambda, e F é o seu corpo. 3. Se F e G são fórmulas, então (FG) é uma fórmula, denominada aplicação. Lambda Calculus: Uma base semântica mínima Conseqüentemente, toda fórmula lambda calculus é de um dos três tipos: uma variável, uma expressão lambda, ou uma aplicação. Exemplos de fórmulas: x (λx.((yy)x)) (λz.(y(λz.z))) ((λz.(zy))x) Qualquer variável é uma fórmula Expressões lambdas são fórmulas O corpo desta expressão lambda é uma aplicação Porque esta fórmula é uma aplicação? Defina suscintamente a EBNF e os diagramas sintáticos. Como eles são usado, e porque eles são necessários? Descreva o processo de compilação do código fonte para código objeto. Considere a seguinte sintaxe EBNF. Reescreva esta gramática na forma de diagramas sintáticos. sneech ::= * ( ( <sneech> ) * ) [ <bander> ] <sneech> bander ::= { +$+ # } ( % <bander> ) 35 Quais das seguintes sentenças não são válidas de acordo a sintaxe para sneeches (dada na questão anterior)? Por quê? a. (*) b. (+$+*) c. * d. ***** e. %%%** f. #####** g. (+$+# h. +$+#* i. *+$+# j. %#*+$+** 36

7 Qual a diferença entre um símbolo terminal e um nãoterminal na EBNF? O que é uma produção? Como as alternativas são denotadas na EBNF? Como são denotadas as repetições? Quais são as produções EBNF para um comando condicional em Pascal? Mostre os diagramas sintáticos correspondentes. Mostre o diagrama para o comando FOR em Pascal. Liste os diversos detalhes do significado do FOR que não são definidos pelo diagrama sintático. O que é semântica? Qual a diferença entre um ambiente de programa e um ambiente compartilhado? Porque o lambda calculus é importante no estudo de linguagens de programação? Reescreva o seguinte diagrama sintático como uma gramática EBNF. (slide seguinte) # blit [ grit ] slit % blit grit Y slit B grit slit N O 39

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

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

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

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

Leia mais

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

Resolução de problemas e desenvolvimento de algoritmos

Resolução de problemas e desenvolvimento de algoritmos SSC0101 - ICC1 Teórica Introdução à Ciência da Computação I Resolução de problemas e desenvolvimento de algoritmos Prof. Vanderlei Bonato Prof. Cláudio Fabiano Motta Toledo Sumário Análise e solução de

Leia mais

Curso Técnico em Redes

Curso Técnico em Redes Curso Técnico em Redes Prof. Airton Ribeiro - 2012 Histórico das Linguagens de Programação O que é? É um método padronizado para expressar instruções para um computador. É um conjunto de regras sintáticas

Leia mais

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

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

Leia mais

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

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

COMPILADORES E INTERPRETADORES

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

Leia mais

Engenharia de Software III

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

Leia mais

Breve Histórico & Conceitos Básicos

Breve Histórico & Conceitos Básicos Breve Histórico & Conceitos Básicos compiladores interpretadores montadores filtros pré-processadores carregadores linkers compilador cruzado (cross-compiler) auto-compilável (bootstraping) auto-residente

Leia mais

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Conceitos básicos e serviços do Sistema Operacional Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Tipos de serviço do S.O. O S.O.

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

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO Santa Maria, 01 de Novembro de 2013. Revisão aula passada Projeto de Arquitetura Decisões de projeto de Arquitetura

Leia mais

Linguagens de Programação Aula 10

Linguagens de Programação Aula 10 Linguagens de Programação Aula 10 Celso Olivete Júnior olivete@fct.unesp.br Na aula passada As sentenças de controle das LP imperativas ocorrem em diversas categorias: seleção, seleção múltipla, iteração

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

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

Introdução à Lógica de Programação Introdução à Lógica de Programação Sistemas Numéricos As informações inseridas em um computador são traduzidos em dados, ou seja, em sinais que podem ser manipulados pelo computador. O computador trabalha

Leia mais

Feature-Driven Development

Feature-Driven Development FDD Feature-Driven Development Descrição dos Processos Requisitos Concepção e Planejamento Mais forma que conteúdo Desenvolver um Modelo Abrangente Construir a Lista de Features Planejar por

Leia mais

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

Aula 4 Pseudocódigo Tipos de Dados, Expressões e Variáveis 1. TIPOS DE DADOS Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. Estas informações podem ser classificadas em dois tipos: As instruções, que

Leia mais

1.6. Tratamento de Exceções

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

Leia mais

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

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

Leia mais

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

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

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira IFPE Disciplina: Sistemas Operacionais Prof. Anderson Luiz Moreira SERVIÇOS OFERECIDOS PELOS SOS 1 Introdução O SO é formado por um conjunto de rotinas (procedimentos) que oferecem serviços aos usuários

Leia mais

Construção de Compiladores. Construção de Compiladores. Motivação. Motivação. Contexto Histórico. Classificações: Gerações 09/03/2010

Construção de Compiladores. Construção de Compiladores. Motivação. Motivação. Contexto Histórico. Classificações: Gerações 09/03/2010 Construção de Compiladores Prof. Raimundo Santos Moura (http://www.ufpi.br/rsm) Construção de Compiladores Livro-Texto: AHO, Alfred V.; ULLMAN, Jeffrey D.; SETHI, R. Compiladores: princípios, técnicas

Leia mais

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

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

Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura UFPI CCN DIE Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura O projeto Desenvolver um compilador de um subconjunto básico da linguagem PORTUGOL.

Leia mais

BARRAMENTO DO SISTEMA

BARRAMENTO DO SISTEMA BARRAMENTO DO SISTEMA Memória Principal Processador Barramento local Memória cachê/ ponte Barramento de sistema SCSI FireWire Dispositivo gráfico Controlador de vídeo Rede Local Barramento de alta velocidade

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

FundamentosemInformática

FundamentosemInformática FundamentosemInformática 04 Software Conteúdo Conceito de Software Classificação de Softwares Conceito de Sistema Operacional(S.O.) FunçõesBásicasdeumS.O. um Arquivos Atributos Diretórios 1 -Conceitos

Leia mais

Conceitos básicos de programação

Conceitos básicos de programação O QUE É UM PROGRAMA? Para executar uma dada tarefa é geralmente necessário entender o sistema onde ela é realizada. Por exemplo, para fazer um bolo temos um sistema composto por: Ingredientes Cozinheiro

Leia 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

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

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

Leia mais

INTRODUÇÃO À PROGRAMAÇÃO BCC 201 TURMAS 31, 32 E 33 2015-2 AULA TEÓRICA 2 PROF. MARCELO LUIZ SILVA (R E D)

INTRODUÇÃO À PROGRAMAÇÃO BCC 201 TURMAS 31, 32 E 33 2015-2 AULA TEÓRICA 2 PROF. MARCELO LUIZ SILVA (R E D) Universidade Federal de Ouro Preto - UFOP Instituto de Ciências Exatas e Biológicas - ICEB Departamento de Computação - DECOM INTRODUÇÃO À PROGRAMAÇÃO BCC 201 TURMAS 31, 32 E 33 2015-2 1 AULA TEÓRICA 2

Leia mais

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 1. Cursos de Computação

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 1. Cursos de Computação Cursos de Computação Sistemas Operacionais Prof. M.Sc. Sérgio Teixeira Aula 05 Estrutura e arquitetura do SO Parte 1 Referência: MACHADO, F.B. ; MAIA, L.P. Arquitetura de Sistemas Operacionais. 4.ed. LTC,

Leia mais

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

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

Leia mais

O modelo do computador

O modelo do computador O modelo do computador Objetivos: Mostrar como é o funcionamento dos computadores modernos Mostrar as limitações a que estamos sujeitos quando programamos Histórico Os primeiros computadores são da década

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

11/3/2009. Software. Sistemas de Informação. Software. Software. A Construção de um programa de computador. A Construção de um programa de computador

11/3/2009. Software. Sistemas de Informação. Software. Software. A Construção de um programa de computador. A Construção de um programa de computador Sistemas de Informação Prof. Anderson D. Moura Um programa de computador é composto por uma seqüência de instruções, que é interpretada e executada por um processador ou por uma máquina virtual. Em um

Leia 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 aos Computadores

Introdução aos Computadores Os Computadores revolucionaram as formas de processamento de Informação pela sua capacidade de tratar grandes quantidades de dados em curto espaço de tempo. Nos anos 60-80 os computadores eram máquinas

Leia mais

ESTUDO DE CASO WINDOWS VISTA

ESTUDO DE CASO WINDOWS VISTA ESTUDO DE CASO WINDOWS VISTA História Os sistemas operacionais da Microsoft para PCs desktop e portáteis e para servidores podem ser divididos em 3 famílias: MS-DOS Windows baseado em MS-DOS Windows baseado

Leia mais

Universidade Federal de Santa Maria Curso de Arquivologia. Disciplina de Banco de Dados Aplicados à Arquivística. Versao 1.

Universidade Federal de Santa Maria Curso de Arquivologia. Disciplina de Banco de Dados Aplicados à Arquivística. Versao 1. Universidade Federal de Santa Maria Curso de Arquivologia Disciplina de Banco de Dados Aplicados à Arquivística Prof. Andre Zanki Cordenonsi Versao 1.0 Março de 2008 Tópicos Abordados Conceitos sobre Banco

Leia mais

Introdução à Programação de Computadores

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

Leia mais

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

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

Leia mais

NOTAS DE AULA Prof. Antonio Carlos Schneider Beck Filho (UFSM) Prof. Júlio Carlos Balzano de Mattos (UFPel) Arquitetura de Von Neumann

NOTAS DE AULA Prof. Antonio Carlos Schneider Beck Filho (UFSM) Prof. Júlio Carlos Balzano de Mattos (UFPel) Arquitetura de Von Neumann Universidade Federal de Santa Maria NOTAS DE AULA Prof. Antonio Carlos Schneider Beck Filho (UFSM) Prof. Júlio Carlos Balzano de Mattos (UFPel) Arquitetura de Von Neumann O modelo (ou arquitetura) de von

Leia mais

ALP Algoritmos e Programação. . Linguagens para Computadores

ALP Algoritmos e Programação. . Linguagens para Computadores ALP Algoritmos e Programação Iniciação aos computadores. Linguagens para Computadores. Compiladores, Interpretadores. Ambientes de Programação 1 Linguagens para Computadores. Linguagem binária: Dispositivos

Leia 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

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

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

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

Leia mais

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

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

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

Leia mais

MC102 Algoritmos e Programação de Computadores 1ª Aula Introdução à Programação de Computadores

MC102 Algoritmos e Programação de Computadores 1ª Aula Introdução à Programação de Computadores MC102 Algoritmos e Programação de Computadores 1ª Aula Introdução à Programação de Computadores 1. Objetivos Situar a atividade de programação de computadores Apresentar conceitos fundamentais relativos

Leia mais

Sistemas Operacionais Processos e Threads

Sistemas Operacionais Processos e Threads Sistemas Operacionais Processos e Threads Prof. Marcos Monteiro, MBA http://www.marcosmonteiro.com.br contato@marcosmonteiro.com.br 1 Estrutura de um Sistema Operacional 2 GERÊNCIA DE PROCESSOS Um processo

Leia mais

Modelos de Sistema. 2007 by Pearson Education. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 8 Slide 1.

Modelos de Sistema. 2007 by Pearson Education. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 8 Slide 1. Modelos de Sistema Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 8 Slide 1 Objetivos Explicar por que o contexto de um sistema deve ser modelado como parte do processo de RE Descrever

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 6 Estrutura de Sistemas Operacionais Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 13 Gerência de Memória Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso Sumário

Leia mais

Figura 01 Kernel de um Sistema Operacional

Figura 01 Kernel de um Sistema Operacional 01 INTRODUÇÃO 1.5 ESTRUTURA DOS SISTEMAS OPERACIONAIS O Sistema Operacional é formado por um Conjunto de rotinas (denominado de núcleo do sistema ou kernel) que oferece serviços aos usuários e suas aplicações

Leia mais

Introdução. à Linguagem JAVA. Prof. Dr. Jesus, Edison O. Instituto de Matemática e Computação. Laboratório de Visão Computacional

Introdução. à Linguagem JAVA. Prof. Dr. Jesus, Edison O. Instituto de Matemática e Computação. Laboratório de Visão Computacional Introdução à Linguagem JAVA Prof. Dr. Jesus, Edison O. Instituto de Matemática e Computação Laboratório de Visão Computacional Vantagens do Java Independência de plataforma; Sintaxe semelhante às linguagens

Leia mais

Controle do Arquivo Técnico

Controle do Arquivo Técnico Controle do Arquivo Técnico Os documentos existentes de forma física (papel) no escritório devem ser guardados em pastas (normalmente pastas suspensas) localizadas no Arquivo Técnico. Este Arquivo pode

Leia mais

Introdução. Introdução. Introdução. Organização Estruturada de Computadores. Introdução. Máquinas Multiníveis

Introdução. Introdução. Introdução. Organização Estruturada de Computadores. Introdução. Máquinas Multiníveis Ciência da Computação Arq. e Org. de Computadores Máquinas Multiníveis Prof. Sergio Ribeiro Computador digital máquina que resolve problemas executando uma série de instruções. Programa conjunto de instruções

Leia mais

Sumário. INF01040 Introdução à Programação. Elaboração de um Programa. Regras para construção de um algoritmo

Sumário. INF01040 Introdução à Programação. Elaboração de um Programa. Regras para construção de um algoritmo INF01040 Introdução à Programação Introdução à Lógica de Programação s Seqüenciais Sumário Elaboração de um programa/algoritmo Formas de representação de um algoritmo Elementos manipulados em um programa/algoritmo

Leia mais

ARQUITETURA DE COMPUTADORES. Rogério Spindula Rosa

ARQUITETURA DE COMPUTADORES. Rogério Spindula Rosa ARQUITETURA DE COMPUTADORES 1 Rogério Spindula Rosa 2 EXECUÇÃO DE PROGRAMAS PROGRAMA 3 4 INTRODUÇÃO Hoje é raro escrever um programa diretamente em linguagem de computador em virtude da enorme dificuldade

Leia mais

Programação de Computadores III

Programação de Computadores III Programação de Computadores III Introdução a Linguagens de Programação Professor Leandro Augusto Frata Fernandes laffernandes@ic.uff.br Material disponível em http://www.ic.uff.br/~laffernandes/teaching/2013.1/tcc-00.157

Leia mais

UNIVERSIDADE DO OESTE DE SANTA CATARINA CAMPUS DE SÃO MIGUEL DO OESTE

UNIVERSIDADE DO OESTE DE SANTA CATARINA CAMPUS DE SÃO MIGUEL DO OESTE UNIVERSIDADE DO OESTE DE SANTA CATARINA CAMPUS DE SÃO MIGUEL DO OESTE CURSO: CIÊNCIAS DA COMPUTAÇÃO DISCIPLINA: COMPILADORES PROFESSOR: JOHNI DOUGLAS MARANGON Back-End Compilação 1. Compilação etapa Back-end

Leia 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

Introdução. INF1005 Programação I 33K Prof. Gustavo Moreira gmoreira@inf.puc-rio.br

Introdução. INF1005 Programação I 33K Prof. Gustavo Moreira gmoreira@inf.puc-rio.br Introdução INF1005 Programação I 33K Prof. Gustavo Moreira gmoreira@inf.puc-rio.br introdução Tópicos conceitos básicos o que é um programa um programa na memória decifrando um código referência Capítulo

Leia mais

Sistema de Arquivos. Ambientes Operacionais. Prof. Simão Sirineo Toscani stoscani@inf.pucrs.br www.inf.pucrs.br/~stoscani

Sistema de Arquivos. Ambientes Operacionais. Prof. Simão Sirineo Toscani stoscani@inf.pucrs.br www.inf.pucrs.br/~stoscani Sistema de Arquivos Ambientes Operacionais Prof. Simão Sirineo Toscani stoscani@inf.pucrs.br www.inf.pucrs.br/~stoscani Gerência de Arquivos É um dos serviços mais visíveis do SO. Arquivos são normalmente

Leia mais

A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande

A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande região de armazenamento formada por bytes ou palavras, cada

Leia mais

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

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

Leia mais

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

Wilson Moraes Góes. Novatec

Wilson Moraes Góes. Novatec Wilson Moraes Góes Novatec Copyright 2014 Novatec Editora Ltda. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer processo,

Leia mais

Geração de código. Ivan Ricarte INTRODUÇÃO À COMPILAÇÃO

Geração de código. Ivan Ricarte INTRODUÇÃO À COMPILAÇÃO Geração de código Ivan Ricarte 2008 Sumário Geração de código intermediário Código de três endereços Notação pós-fixa Otimização de código Heurísticas de otimização Geração de código em linguagem simbólica

Leia mais

ICC Introdução para JavaScript

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

Leia mais

O que é um programa? Programa é uma lista de instruções que descrevem uma tarefa a ser realizada pelo computador.

O que é um programa? Programa é uma lista de instruções que descrevem uma tarefa a ser realizada pelo computador. O que é um programa? Programa é uma lista de instruções que descrevem uma tarefa a ser realizada pelo computador. Linguagem de Programação Uma linguagem de programação é um método padronizado para expressar

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Gerência de processos Controle e descrição de processos Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Sumário Representação e controle de processos pelo SO Estrutura

Leia mais

Algoritmos e Estruturas de Dados II. Trabalho Prático 2

Algoritmos e Estruturas de Dados II. Trabalho Prático 2 Algoritmos e Estruturas de Dados II Entrega: 24/09/08 Devolução: 15/10/08 Trabalho individual Prof. Jussara Marques de Almeida Trabalho Prático 2 Você foi contratado pela XOL X Online para desenvolver

Leia mais

Faculdades Santa Cruz - Inove. Plano de Aula Base: Livro - Distributed Systems Professor: Jean Louis de Oliveira.

Faculdades Santa Cruz - Inove. Plano de Aula Base: Livro - Distributed Systems Professor: Jean Louis de Oliveira. Período letivo: 4 Semestre. Quinzena: 5ª. Faculdades Santa Cruz - Inove Plano de Aula Base: Livro - Distributed Systems Professor: Jean Louis de Oliveira. Unidade Curricular Sistemas Distribuídos Processos

Leia mais

Notas da Aula 17 - Fundamentos de Sistemas Operacionais

Notas da Aula 17 - Fundamentos de Sistemas Operacionais Notas da Aula 17 - Fundamentos de Sistemas Operacionais 1. Gerenciamento de Memória: Introdução O gerenciamento de memória é provavelmente a tarefa mais complexa de um sistema operacional multiprogramado.

Leia mais

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

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

Leia mais

04/08/2012 MODELAGEM DE DADOS. PROF. RAFAEL DIAS RIBEIRO, M.Sc. @ribeirord MODELAGEM DE DADOS. Aula 1. Prof. Rafael Dias Ribeiro. M.Sc.

04/08/2012 MODELAGEM DE DADOS. PROF. RAFAEL DIAS RIBEIRO, M.Sc. @ribeirord MODELAGEM DE DADOS. Aula 1. Prof. Rafael Dias Ribeiro. M.Sc. MODELAGEM DE DADOS PROF. RAFAEL DIAS RIBEIRO, M.Sc. @ribeirord MODELAGEM DE DADOS Aula 1 Prof. Rafael Dias Ribeiro. M.Sc. @ribeirord 1 Objetivos: Apresenta a diferença entre dado e informação e a importância

Leia mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Processos- Clientes, Servidores, Migração Capítulo 3 Agenda Clientes Interfaces de usuário em rede Sistema X Window Software do lado cliente para

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

LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO. Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto

LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO. Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto Conceitos de Linguagens de Roteiro: Apresentação do plano de ensino; Apresentação do plano de

Leia mais

ISO/IEC 12207: Gerência de Configuração

ISO/IEC 12207: Gerência de Configuração ISO/IEC 12207: Gerência de Configuração Durante o processo de desenvolvimento de um software, é produzida uma grande quantidade de itens de informação que podem ser alterados durante o processo Para que

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

MODELAGEM DE DADOS MODELAGEM DE DADOS. rafaeldiasribeiro.com.br 04/08/2012. Aula 7. Prof. Rafael Dias Ribeiro. M.Sc. @ribeirord

MODELAGEM DE DADOS MODELAGEM DE DADOS. rafaeldiasribeiro.com.br 04/08/2012. Aula 7. Prof. Rafael Dias Ribeiro. M.Sc. @ribeirord MODELAGEM DE DADOS PROF. RAFAEL DIAS RIBEIRO, M.Sc. @ribeirord MODELAGEM DE DADOS Aula 7 Prof. Rafael Dias Ribeiro. M.Sc. @ribeirord 1 Objetivos: Aprender sobre a modelagem lógica dos dados. Conhecer os

Leia mais

ALGORITMOS E FLUXOGRAMAS

ALGORITMOS E FLUXOGRAMAS ALGORITMOS E FLUXOGRAMAS Prof. André Backes INTRODUÇÃO Computadores = cérebros eletrônicos? Computadores são máquinas e, por si sós, não podem ser inteligentes. Alguém as projetou e deu a ela todas as

Leia mais

1 http://www.google.com

1 http://www.google.com 1 Introdução A computação em grade se caracteriza pelo uso de recursos computacionais distribuídos em várias redes. Os diversos nós contribuem com capacidade de processamento, armazenamento de dados ou

Leia mais

PROGRAMA DE DISCIPLINA

PROGRAMA DE DISCIPLINA PROGRAMA DE DISCIPLINA Disciplina: INTRODUÇÃO À PROGRAMAÇÃO Carga horária total: 60 h Carga horária teórica: 30 h Carga horária prática: 30 h Código da Disciplina: CCMP0041 Período de oferta: 2015.2 Turma:

Leia mais

Universidade Federal de Alfenas

Universidade Federal de Alfenas Universidade Federal de Alfenas Projeto e Análise de Algoritmos Aula 04 Introdução a Análise de Algoritmos humberto@bcc.unifal-mg.edu.br Última aula Fundamentos de Matemática Exercícios: Somatórios; Logaritmos

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

Microsoft Office PowerPoint 2007

Microsoft Office PowerPoint 2007 INTRODUÇÃO AO MICROSOFT POWERPOINT 2007 O Microsoft Office PowerPoint 2007 é um programa destinado à criação de apresentação através de Slides. A apresentação é um conjunto de Sides que são exibidos em

Leia mais

Introdução à Programação

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

Leia mais

Professor: Macêdo Firmino Disciplina: Sistemas Operacionais de Rede

Professor: Macêdo Firmino Disciplina: Sistemas Operacionais de Rede Professor: Macêdo Firmino Disciplina: Sistemas Operacionais de Rede O sistema de nome de domínio (DNS) é um sistema que nomeia computadores e serviços de rede e é organizado em uma hierarquia de domínios.

Leia mais

Linguagem algorítmica: Portugol

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

Leia mais