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

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

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

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

Paradigmas e Histórico de

Paradigmas e Histórico de Paradigmas e Histórico de Linguagens de Programação Linguagens de Programação Departamento de Computação Universidade Federal de Sergipe Influências sobre o projeto de linguagens Arquitetura do computador

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

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

QUALIFICAÇÃO TÉCNICA EM DESENVOLVIMENTO DE SISTEMAS

QUALIFICAÇÃO TÉCNICA EM DESENVOLVIMENTO DE SISTEMAS Desenvolvimento De Sistemas - Lógica De Programação. 1. Lógica de Programação I 1.1 Introdução á Lógica de Programação 1.2 O que é lógica? 1.3 Lógica Matemática 1.4 Lógica de Programação 1.5 Seqüência

Leia mais

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008 Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,

Leia mais

COMPILADORES 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

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

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

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

Leia mais

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

Paradigmas de Linguagens de Programação. Aspectos Preliminares

Paradigmas de Linguagens de Programação. Aspectos Preliminares Aspectos Preliminares Cristiano Lehrer Motivação (1/6) Aumento da capacidade de expressar idéias: Difícil conceituar estruturas quando não se pode descreve-las. Programadores são limitados pelas linguagens.

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

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

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

Leia mais

Professora Isabel Harb Manssour Paradigmas de Linguagens I 1 1. INTRODUÇÃO

Professora Isabel Harb Manssour Paradigmas de Linguagens I 1 1. INTRODUÇÃO Paradigmas de Linguagens I 1 1. INTRODUÇÃO A primeira Linguagem de Programação (LP) de alto nível foi projetada durante a década de 50. Desde então, LP têm sido uma área de estudo fascinante e produtiva.

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

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

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

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

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

Síntese. Compiladores. Geração de código intermediário. Linguagens Intermediárias. Modelo Clássico. Linguagens Intermediárias. Código intermediário

Síntese. Compiladores. Geração de código intermediário. Linguagens Intermediárias. Modelo Clássico. Linguagens Intermediárias. Código intermediário Síntese Compiladores Código intermediário 1 Os assuntos apresentados trazem respostas às perguntas seguintes: 1. Pode a memória ser alocada dinamicamente? 2. Pode a memória ser liberada explicitamente?

Leia mais

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 6 - ALGORÍTIMOS PARALELOS MPI - Parallel Virtual Machine e PVM - Parallel Virtual Machine 1. INTRODUÇÃO Inicialmente é necessário conceber alguns conceitos para entendimento dos algoritmos paralelos:

Leia mais

PROGRAMA DE DISCIPLINA

PROGRAMA DE DISCIPLINA PROGRAMA DE DISCIPLINA Disciplina: Introdução à Programação Carga horária total: 60 Carga horária teórica: 0 Carga horária prática: 60 Código da Disciplina: CCMP0041 Período de oferta: 2010.2 Turma: CA

Leia mais

Sistemas Operacionais Cap 3 Estruturas de Sistemas Operacionais. Podemos analisar um sistema operacional sob diversos aspectos:

Sistemas Operacionais Cap 3 Estruturas de Sistemas Operacionais. Podemos analisar um sistema operacional sob diversos aspectos: Estruturas de Sistemas Operacionais Podemos analisar um sistema operacional sob diversos aspectos: Os serviços que o sistema operacional oferece. A interface que o sistema operacional torna disponível

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

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

Universidade Federal de Uberlândia Faculdade de Computação. Conceitos básicos de algoritmos

Universidade Federal de Uberlândia Faculdade de Computação. Conceitos básicos de algoritmos Universidade Federal de Uberlândia Faculdade de Computação Conceitos básicos de algoritmos Prof. Renato Pimentel 1 Computação Dados Informações vindas de usuários ou de outras máquinas; Processamento transformação

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

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

Resumo da Introdução de Prática de Programação com C. A Linguagem C

Resumo da Introdução de Prática de Programação com C. A Linguagem C Resumo da Introdução de Prática de Programação com C A Linguagem C O C nasceu na década de 70. Seu inventor, Dennis Ritchie, implementou-o pela primeira vez usando um DEC PDP-11 rodando o sistema operacional

Leia 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

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

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

ADMINISTRAÇÃO DOS RECURSOS DE HARDWARE E SOFTWARE

ADMINISTRAÇÃO DOS RECURSOS DE HARDWARE E SOFTWARE ADMINISTRAÇÃO DOS RECURSOS DE HARDWARE E SOFTWARE 1 OBJETIVOS 1. Qual é a capacidade de processamento e armazenagem que sua organização precisa para administrar suas informações e transações empresariais?

Leia mais

Paradigmas de Programação

Paradigmas de Programação Paradigmas de Programação Tipos de Dados Aula 5 Prof.: Edilberto M. Silva http://www.edilms.eti.br Prof. Edilberto Silva / edilms.eti.br Tipos de Dados Sistema de tipos Tipos de Dados e Domínios Métodos

Leia mais

Geração e Otimização de Código

Geração e Otimização de Código Geração e Otimização de Código Representação de código intermediária Código de três endereços, P-código Técnicas para geração de código Otimização de código Prof. Thiago A. S. Pardo 1 Estrutura geral de

Leia mais

Introdução. Paradigmas de Linguagens de Programação. Heloisa de Arruda Camargo. Motivos para estudar os conceitos de linguagens de programação

Introdução. Paradigmas de Linguagens de Programação. Heloisa de Arruda Camargo. Motivos para estudar os conceitos de linguagens de programação Paradigmas de Linguagens de Programação Heloisa de Arruda Camargo Introdução Motivos para estudar os conceitos de linguagens de programação Aumento da capacidade de expressar idéias É difícil para as pessoas

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

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

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

Leia mais

A Linguagem Algorítmica Estrutura de Repetição. Ex. 2

A Linguagem Algorítmica Estrutura de Repetição. Ex. 2 Estrutura de Repetição. Ex. 2 A ESTRUTURA Enquanto faça{} É MELHOR UTILIZADA PARA SITUAÇÕES ONDE O TESTE DE CONDIÇÃO (V OU F) PRECISA SER VERIFICADO NO INÍCIO DA ESTRUTURA DE REPETIÇÃO.

Leia mais

- Aula 1 - ARQUITETURA DE COMPUTADORES

- Aula 1 - ARQUITETURA DE COMPUTADORES - Aula 1 - ARQUITETURA DE COMPUTADORES Em arquitetura de computadores serão estudados aspectos da estrutura e do funcionamento dos computadores. O objetivo é apresentar de forma clara e abrangente a natureza

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

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

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

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

Primeiro Curso de Programação em C 3 a Edição

Primeiro Curso de Programação em C 3 a Edição Edson Luiz França Senne Primeiro Curso de Programação em C 3 a Edição Visual Books Sumário Prefácio da Terceira Edição 9 Prefácio da Primeira Edição 11 Aula 1 13 Regras de sintaxe de uma linguagem de programação...

Leia mais

Arquitetura de Computadores. Introdução aos Sistemas Operacionais

Arquitetura de Computadores. Introdução aos Sistemas Operacionais Arquitetura de Computadores Introdução aos Sistemas Operacionais O que é um Sistema Operacional? Programa que atua como um intermediário entre um usuário do computador ou um programa e o hardware. Os 4

Leia mais

Um compilador é um programa que lê um programa escrito numa dada linguagem, a linguagem objecto (fonte), e a traduz num programa equivalente

Um compilador é um programa que lê um programa escrito numa dada linguagem, a linguagem objecto (fonte), e a traduz num programa equivalente Capítulo 1 Introdução Um compilador é um que lê um escrito numa dada linguagem, a linguagem objecto (fonte), e a traduz num equivalente numa outra linguagem, a linguagem destino Como parte importante neste

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

Protótipo de Gerador de Código Executável no Ambiente FURBOL

Protótipo de Gerador de Código Executável no Ambiente FURBOL Protótipo de Gerador de Código Executável no Ambiente FURBOL Acadêmico: Geovânio Batista André Orientador: José Roque Voltolini da Silva Trabalho de Conclusão de Curso Área/SubÁrea Compiladores/Geração

Leia mais

Programação Elementar de Computadores Jurandy Soares

Programação Elementar de Computadores Jurandy Soares Programação Elementar de Computadores Jurandy Soares Básico de Computadores Computador: dispositivos físicos + programas Dispositivos físicos: hardware Programas: as instruções que dizem aos dispositivos

Leia mais

EXEMPLO: Processo para atualização da hora Processo para monitoramento da necessidade de proteção de tela. Figura 4-1 - Exemplo

EXEMPLO: Processo para atualização da hora Processo para monitoramento da necessidade de proteção de tela. Figura 4-1 - Exemplo 4 PROCESSOS Os primeiros sistemas operacionais permitiam que apenas um processo fosse executado por vez. Dessa maneira, este processo tinha todo o sistema computacional a sua disposição. Os atuais sistemas

Leia mais

1 - Processamento de dados

1 - Processamento de dados Conceitos básicos sobre organização de computadores 2 1 - Processamento de dados O que é processamento? O que é dado? Dado é informação? Processamento é a manipulação das informações coletadas (dados).

Leia mais

Laudon & Laudon Essentials of MIS, 5th Edition. Pg. 6.1

Laudon & Laudon Essentials of MIS, 5th Edition. Pg. 6.1 Laudon & Laudon Essentials of MIS, 5th Edition. Pg. 6.1 6 OBJETIVOS OBJETIVOS ADMINISTRAÇÃO DOS RECURSOS DE HARDWARE E SOFTWARE 6.1 2003 by Prentice Hall Qual é a capacidade de processamento e armazenagem

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

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

Vetores. Vetores. Figura 1 Exemplo de vetor com 10 elementos

Vetores. Vetores. Figura 1 Exemplo de vetor com 10 elementos Vetores Nos capítulos anteriores estudamos as opções disponíveis na linguagem C para representar: Números inteiros em diversos intervalos. Números fracionários com várias alternativas de precisão e magnitude.

Leia mais

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

Compiladores Aula 1. Celso Olivete Júnior. olivete@fct.unesp.br Aula 1 Celso Olivete Júnior olivete@fct.unesp.br Tópicos da disciplina Introdução à compilação Analisador léxico Analisador sintático descendente Analisador sintático ascendente Análise semântica Geração

Leia mais

RAFF Um Compilador para Facilitar o Aprendizado de Algoritmos

RAFF Um Compilador para Facilitar o Aprendizado de Algoritmos RAFF Um Compilador para Facilitar o Aprendizado de Algoritmos Almir Joaquim de Sousa 1, Fábio Silveira Vidal 1, Fredson Vieira Costa 1, Ranildo Costa Santana 1 Curso de Bacharelado em Ciência da Computação

Leia mais

Computação Eletrônica

Computação Eletrônica Computação Eletrônica Introdução ovsj@cin.ufpe.br Observação: Material da Disciplina Computação Eletrônica CIN/UFPE. Computador O que diferencia o computador de outras máquinas? Comportamento variável;

Leia mais

Programação de Computadores

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

Leia mais

Suporte à Engenharia Reversa para o ambiente SEA

Suporte à Engenharia Reversa para o ambiente SEA Otavio Pereira Suporte à Engenharia Reversa para o ambiente SEA Orientador: Ricardo Pereira e Silva Universidade Federal de Santa Catarina - UFSC Departamento de Informática e Estatística - INE Florianópolis

Leia mais

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

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

Leia mais

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

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

Banco de Dados 1 Prof. MSc Wagner Siqueira Cavalcante

Banco de Dados 1 Prof. MSc Wagner Siqueira Cavalcante Banco de Dados 1 Programação sucinta do curso:. Conceitos fundamentais de Banco de Dados.. Arquitetura dos Sistemas Gerenciadores de Banco de Dados (SGBD ou DBMS).. Características típicas de um SGBD..

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

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

Sistema Operacional. Processo e Threads. Prof. Dr. Márcio Andrey Teixeira Sistemas Operacionais

Sistema Operacional. Processo e Threads. Prof. Dr. Márcio Andrey Teixeira Sistemas Operacionais Sistema Operacional Processo e Threads Introdução a Processos Todos os computadores modernos são capazes de fazer várias coisas ao mesmo tempo. Enquanto executa um programa do usuário, um computador pode

Leia mais

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

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

Leia mais

ADMINISTRAÇÃO DOS RECURSOS DE HARDWARE E SOFTWARE

ADMINISTRAÇÃO DOS RECURSOS DE HARDWARE E SOFTWARE Capítulo 6 ADMINISTRAÇÃO DOS RECURSOS DE HARDWARE E SOFTWARE 6.1 2003 by Prentice Hall OBJETIVOS Qual é a capacidade de processamento e armazenagem que sua organização precisa para administrar suas informações

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

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

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

Um sistema é constituído de um conjunto de processos que executam seus respectivos códigos do sistema operacional e processos e códigos de usuários.

Um sistema é constituído de um conjunto de processos que executam seus respectivos códigos do sistema operacional e processos e códigos de usuários. Os sistemas computacionais atuais permitem que diversos programas sejam carregados na memória e executados simultaneamente. Essa evolução tornou necessário um controle maior na divisão de tarefas entre

Leia mais

ALGOL 68 FUNDAMENTOS DA LINGUAGEM

ALGOL 68 FUNDAMENTOS DA LINGUAGEM ALGOL 68 FUNDAMENTOS DA LINGUAGEM Aldo Ventura da Silva 1 RESUMO Na década de 60, as linguagens estruturadas imperativas de certa forma atendiam às necessidades da época. Com o tempo e a evolução tecnológica,

Leia mais

Paradigmas de Linguagens de Programação

Paradigmas de Linguagens de Programação Paradigmas de Linguagens de Programação Faculdade Nova Roma Cursos de Ciências da Computação (6 Período) Prof. Adriano Avelar - Site: www.adrianoavelar.com Email: edson.avelar@yahoo.com.br Ementa Introdução

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

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

Notas da Aula 15 - Fundamentos de Sistemas Operacionais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais Notas da Aula 15 - Fundamentos de Sistemas Operacionais 1. Software de Entrada e Saída: Visão Geral Uma das tarefas do Sistema Operacional é simplificar o acesso aos dispositivos de hardware pelos processos

Leia mais

Linguagens de programação

Linguagens de programação Prof. André Backes Linguagens de programação Linguagem de Máquina Computador entende apenas pulsos elétricos Presença ou não de pulso 1 ou 0 Tudo no computador deve ser descrito em termos de 1 s ou 0 s

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

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

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

Rede de Computadores II

Rede de Computadores II Rede de Computadores II Slide 1 SNMPv1 Limitações do SNMPv1 Aspectos que envolvem segurança Ineficiência na recuperação de tabelas Restrito as redes IP Problemas com SMI (Structure Management Information)

Leia mais

Universidade Estadual de Mato Grosso do Sul - Curso de Ciência da Computação Disciplina: Estruturas de Dados Profª. Raquel Marcia Müller

Universidade Estadual de Mato Grosso do Sul - Curso de Ciência da Computação Disciplina: Estruturas de Dados Profª. Raquel Marcia Müller 1 Listas Lineares Dentre as estruturas de dados não primitivas, as listas lineares são as de manipulação mais simples. Uma lista linear agrupa informações referentes a um conjunto de elementos que, de

Leia mais

Introdução à Linguagem

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

Leia mais

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

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

PROGRAMAÇÃO DE COMPUTADORES (Teoria)

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

Leia mais

Sistemas Operacionais Carlos Eduardo Portela Serra de Castro

Sistemas Operacionais Carlos Eduardo Portela Serra de Castro Introdução Sistemas Operacionais 1 Sistema Operacional: Um conjunto de programas, executado pelo computador como os outros programas. Função: Controlar o funcionamento do computador, disponibilizando seus

Leia mais

ADMINISTRAÇÃO DOS RECURSOS DE HARDWARE E SOFTWARE

ADMINISTRAÇÃO DOS RECURSOS DE HARDWARE E SOFTWARE 6 ADMINISTRAÇÃO DOS RECURSOS DE HARDWARE E SOFTWARE OBJETIVOS Qual é a capacidade de processamento e armazenagem que sua organização precisa para administrar suas informações e transações empresariais?

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

Análises Geração RI (representação intermediária) Código Intermediário

Análises Geração RI (representação intermediária) Código Intermediário Front-end Análises Geração RI (representação intermediária) Código Intermediário Back-End Geração de código de máquina Sistema Operacional? Conjunto de Instruções do processador? Ambiente de Execução O

Leia mais

Implementação de Jogo de Damas em Python Orientado a Objetos e em Python Funcional

Implementação de Jogo de Damas em Python Orientado a Objetos e em Python Funcional Implementação de Jogo de Damas em Python Orientado a Objetos e em Python Funcional Cristiano Medeiros Dalbem - 173362 INF01121 Modelos de Linguagens de Programação Instituto de Informática Universidade

Leia mais

Curso de C. Introdução. Copyright @ 2005 by Arnaldo V. Moura e Daniel F. Ferber

Curso de C. Introdução. Copyright @ 2005 by Arnaldo V. Moura e Daniel F. Ferber Curso de C Introdução Introdução Roteiro: Recordando Algoritmos Linguagem de Programação O computador Instruções de Máquina Níveis de Abstração Compilação Algoritmos Recordando: Algoritmo: conjunto finito

Leia mais

Sistemas Operacionais Aula 03: Estruturas dos SOs. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com

Sistemas Operacionais Aula 03: Estruturas dos SOs. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Sistemas Operacionais Aula 03: Estruturas dos SOs Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com OBJETIVOS Descrever os serviços que um sistema operacional oferece aos usuários e outros sistemas

Leia mais

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

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

Leia mais

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