Compiladores II. Fabio Mascarenhas
|
|
|
- Gilberto Osório Castanho
- 9 Há anos
- Visualizações:
Transcrição
1 Compiladores II Fabio Mascarenhas
2 Objetivo Durante esse curso iremos revisitar as técnicas de implementação de linguagens de programação Veremos novas técnicas de análise sintática e de verificação de tipos Também veremos a construção de máquinas virtuais como uma alternativa à geração de código nativo em tempo de compilação
3 Avaliação Presença será cobrada! Avaliação com dois componentes (mesmo peso): Apresentação de 30 minutos sobre um artigo científico, a escolha do artigo é livre, mas o tema deve ser relacionado aos vistos em sala Participação nas atividades em sala A avaliação é individual!
4 Estrutura Básica de um Compilador Três grandes fases Análise léxica/sintática Análise semântica Otimização e geração de código As primeira cuida da sintaxe do programa, a intermediária do seu significado, e a última da tradução para a linguagem destino As duas primeiras fases formam o front- do compilador, e a última seu back-
5 Lua Usaremos Lua como linguagem de implementação dos vários algoritmos vistos em aula (junto com C na parte do curso sobre máquinas virtuais) Lua é uma linguagem de script nos moldes de Python, Ruby e JavaScript, mas mais simples que as duas primeiras, e mais elegante que a última A página do curso tem um executável do interpretador Lua para Windows, e todas as distribuições Linux disponibilizam Lua nos seus gerenciadores de pacotes Existem IDEs para a linguagem, mas qualquer editor de texto também serve; eu usarei o Atom, que tem um bom plugin para Lua
6 Chunks e comandos A base de Lua é imperativa: um programa Lua é uma sequência de comandos chamada de chunk Qualquer sequência de comandos é um chunk: o corpo de um programa, o corpo de um laço, o corpo da definição de uma função... Os comandos em um chunk podem ser separados simplesmente por espaços, mas normalmente usamos quebras de linha ou ponto e vírgula: > a = 1 b = 2 print(a, b) 1 2 > a = 1; b = 2; print(a, b) 1 2
7 REPL e dofile O interpretador Lua embute um modo interativo, ou REPL (Read-Eval-Print Loop), útil para experimentar Um inconveniente do REPL é que ele esquece tudo que foi definido quando saímos dele, por isso escrevemos as definições em um arquivo separado, e usamos o REPL apenas para interagir com elas, e definir valores temporários Usamos dofile para carregar as definições em um arquivo: > dofile("defs.lua") > print(fact(5)) 120 Tanto dofile quanto print são funções pré-definidas, e a sintaxe para chamar uma função é parecida com a de outras linguagens
8 Variáveis Como qualquer linguagem imperativa, Lua tem variáveis; em Lua, uma variável é global por padrão Não é preciso declarar variáveis globais, basta atribuir; seu escopo é qualquer chunk executado a partir do ponto em que ela foi definida, a não ser oculta por alguma variável local > print(x) nil > x = 2 > print(x) 2 Uma variável global que ainda não foi definida tem o valor nil
9 Detalhes léxicos Nomes de variáveis são como em outras linguagens, mas _ (um único underscore) é um nome de variável válido, e nomes começando com _ seguidos por letras maiúsculas são considerados reservados As seguintes palavras chave são reservadas e não podem ser usadas como nomes de variáveis and break do else elseif false for function if in local nil not repeat return then true until while or goto Comentários começam com -- (dois hífens) e vão até o fim da linha
10 Valores Valores em Lua pertencem a um de oito tipos básicos: nil (o valor nil), boolean (os valores true e false), number (números de ponto flutuante), string (vetores imutáveis de bytes), table (vetores associativos ou tabelas hash), function (funções), userdata (handles opacos para dados de bibliotecas externas) e thread (corotinas) Variáveis podem apontar para valores de qualquer tipo nil é a ausência de um valor: variáveis não inicializadas, campos inexistentes em uma tabela, parâmetros de uma função que não foram passados...
11 Booleanos Operações relacionais produzem booleanos, mas qualquer valor pode ser usado em uma expressão booleana: false e nil são falsos, e qualquer outro valor é verdadeiro As operações lógicas and e or produzem um dos seus argumentos, e dão idiomas úteis: function greeting(s) s = s or "Hello" print(s.. ", World!") greeting() greeting("olá") function max(a, b) return (a > b) and a or b
12 Números Números são sempre de ponto flutuante, como em JavaScript Divisão por 0 não é um erro! Além das quatro operações aritméticas usuais, Lua também tem ^ (exponenciação) e % (módulo) Igualdade é ==, como nas linguagens estilo C, mas diferente de é ~=
13 Strings Uma string é uma sequência imutável de bytes, inclusive zeros, então podem representar qualquer dado binário Quando usadas com texto, normalmente usa-se a codificação UTF-8 A operação de concatenação é.., e a operação # dá o tamanho de uma string, em bytes Strings não podem ser indexadas como vetores, mas funções dentro do namespace string podem retornar partes de uma string Strings simples podem ser delimitadas com aspas simples ou duplas; strings delimitadas com [[ e ]] podem se ester por várias linhas
14 Tabelas e funções Tabelas associam chaves a valores Qualquer valor Lua pode ser um chave, exceto nil, mas normalmente usamos números e strings como chaves Existe suporte da linguagem para usar tabelas como vetores, estruturas, tipos abstratos de dados, objetos, módulos... Funções são valores como quaisquer outros, e código Lua pode guardar funções em variáveis, passar funções como argumento para outra função, retornar funções, guardar funções em tabelas...
15 if-then-else, elseif Comandos condicionais são como em outras linguagens: if a < 0 then print("a is negative") a = -a else print("a is positive") Se quisermos testar várias condições em cascata usamos elseif: if op == "+" then r = a + b elseif op == "-" then r = a - b elseif op == "*" then r = a * b elseif op == "/" then r = a / b else error("invalid operation")
16 while e repeat Lua tem um laço while como as linguagens estilo C: i = 1; sum = 0 while i <= 5 do sum = sum + (2 * i - 1) i = i + 1 print(sum) E também um laço repeat estilo Pascal, que executa seu corpo até a condição ser verdadeira, garantindo que ele executa ao menos uma vez: i = 1; sum = 0 repeat sum = sum + (2 * i - 1) i = i + 1 until i > 5 print(sum)
17 for numérico Lua tem dois laços for; o primeiro serve para percorrer sequências numéricas, similar ao for de Pascal, com um valor inicial, um final e um passo: sum = 0 for i = 1, 10, 2 do sum = sum + (2 * i - 1) print(sum) A variável de controle é local ao corpo do laço, e não pode ser atribuída dentro do laço Expressões podem aparecer no valor inicial, final e no passo, mas só são avaliadas uma vez, antes do laço começar
18 Variáveis locais O comando local declara uma nova variável que é visível até o final do chunk corrente: local sum = 0 for i = 1, 5 do local n = 2 * i - 1 sum = sum + n print(sum, n) -- local ao programa -- local ao corpo do for Uma variável local oculta uma variável já existente com o mesmo nome, seja local ou global Vamos usar variáveis locais sempre que possível
19 do- O bloco do introduz um novo escopo sem afetar o controle de fluxo: sum = 0 do local i = 1 while i <= 5 do sum = sum + (2 * i - 1) i = i + 1 print(sum)
20 Atribuição múltipla Uma atribuição em Lua pode ter várias variáveis no lado esquerdo: > a, b = 10, 2 * sum > print(a, b) Todas as expressões do lado direito são avaliadas antes da atribuição começar, então podemos usar uma atribuição múltipla para trocar o valor de duas variáveis: > a, b = b, a > print(a, b) Um comando local também pode introduzir várias variáveis
21 Definindo funções locais Podemos definir novas funções locais facilmente: local function max(a, b) return (a > b) and a or b Funções são valores, e não vivem em um espaço de nome separado, logo podem ser ocultadas por outras variáveis locais: > print(print) function: B94B40 > do >> local print = 10 >> print(print) >> stdin:3: attempt to call local 'print' (a number value) stack traceback: stdin:3: in main chunk [C]: in?
22 Funções globais e anônimas As funções globais que definimos até o momento não são realmente globais; o que o comando function faz é atribuir a função àquela variável: local max function max(a, b) return (a > b) and a or b O trecho acima é equivalente à definição do slide anterior Também podemos definir funções anônimas, omitindo o nome e usando function como uma expressão: local max = function (a, b) return (a > b) and a or b
23 Múltiplos resultados Uma função pode retornar múltiplos valores com return Os valores extras podem ser usados em uma atribuição múltipla, contanto que a chamada seja a última expressão so atribuída: > s, e = string.find("hello Lua users", "Lua") > print(s, e) 7 9 E também podem ser passados para outra função, contanto que a chamada seja o último argumento passado: > print(string.find("hello Lua users", "Lua")) 7 9 Se a chamada não for a última expressão apenas o primeiro valor retornado é usado
24 Funções variádicas O ultimo parâmetro de uma função pode ser o token... Dentro da função,... produz todos os valores passados para a função a parte da posição do... > function id(...) return... > print(id(1, 2, 3)) function printf(fmt,...) io.write(string.format(fmt,...)) > printf("%s(%d, %d)\n", "maxmin", 2, 3) maxmin(2, 3)
25 Quiz Qual a saída do programa abaixo? local function range(a, b, c) if a > b then return else return a, range(a + c, b, c) print(range(1, 9, 2))
A Linguagem Lua Lua Puc-Rio
A Linguagem Lua Lua foi projetada e implementada por uma equipe no Tecgraf, o Grupo de Computação Gráfica da Puc-Rio (Pontifícia Universidade Católica do Rio de Janeiro). 1 Exemplos de linguagens de scripts
Análise Léxica. Sumário
Análise Léxica Renato Ferreira Sumário Definição informal de Análise Léxica Identifica tokens numa string de entrada Alguns detalhes Lookahead Ambiguidade Especificação de Analisadores Léxicos Expressões
TUTORIAL MATLAB Victor Breder 2016
TUTORIAL MATLAB Victor Breder 2016 1. INTERFACE A. Caminho de trabalho Mostra o caminho pasta raiz que será considerada para executar scripts e funções criados pelo usuário. B. Pasta de trabalho Mostra
Programação de Computadores I. Linguagem C Função
Linguagem C Função Prof. Edwar Saliba Júnior Fevereiro de 2011 Unidade 07 Função 1 Conceitos As técnicas de programação dizem que, sempre que possível, evite códigos extensos, separando o mesmo em funções,
Um Tradutor Dirigido por Sintaxe
Um tradutor dirigido por sintaxe 1 Um Tradutor Dirigido por Sintaxe Aula introdutória às técnicas de compilação. Ilustra técnicas desenvolvendo um programa Java que traduz instruções de uma linguagem de
2. Tipos Abstratos de Dados
2. Tipos Abstratos de Dados Um Tipo Abstrato de Dados especifica uma classe de dados definida pelo usuário em termos de suas propriedades abstratas Esta especificação do TAD descreve o comportamento de
Ciclo com Contador : instrução for. for de variável := expressão to. expressão do instrução
Métodos de Programação I 2. 27 Ciclo com Contador : instrução for identificador downto for de variável := expressão to expressão do instrução UMA INSTRUÇÃO (SIMPLES OU COMPOSTA) Neste caso o ciclo é repetido
Descobrindo Lua. Sérgio Queiroz de Medeiros. Campus Party LabLua. Sérgio Queiroz de Medeiros Descobrindo Lua 1
Descobrindo Lua Sérgio Queiroz de Medeiros [email protected] LabLua Campus Party 2009 Sérgio Queiroz de Medeiros Descobrindo Lua 1 Instalando o Interpretador Para baixar o fonte: www.lua.org Para
Admistração de Redes de Computadores (ARC)
Admistração de Redes de Computadores (ARC) Instituto Federal de Educação, Ciência e Tecnologia de Santa Catarina - Campus São José Prof. Glauco Cardozo [email protected] Shell Quem usa Linux conhece
Módulo IV Programação Visual Basic. Programação
Módulo IV Visual Basic 1 Vamos considerar os seguintes elementos e estruturas fundamentais que são habitualmente usados em programação: Tipos de Dados Operadores Atribuições Entrada e Saída de Dados Estruturas
LUA. Deise Miranda Douglas Neves Luane Gomes Naara Soares
LUA Deise Miranda Douglas Neves Luane Gomes Naara Soares Roteiro Histórico Visão Geral A Linguagem Aplicações Exemplos Práticos Histórico Substituir DEL (Data-Entry Language) e SOL (Linguagem para Descrição
03. [Sebesta, 2000] Descreva a operação de um gerador de linguagem geral.
01. [Sebesta, 2000] Defina sintaxe e semântica. 02. [Sebesta, 2000] A quem se destinam as descrições de linguagem? 03. [Sebesta, 2000] Descreva a operação de um gerador de linguagem geral. 04. [Sebesta,
Linguagem C. Introdução à Programação C. Variáveis. Identificadores. Identificadores 12/03/2011 VARIÁVEIS E TIPOS DE DADOS
Linguagem C Introdução à Programação C Introdução à Ciência da Computação I Prof. Denis F. Wolf Origem de C está associada ao sistema Unix Histórico: 1970: Ken Thompson desenvolve B, baseada em BCPL, para
Python: Tipos Básicos. Claudio Esperança
Python: Tipos Básicos Claudio Esperança Python como calculadora O Interpretador python pode ser usado como calculadora Por exemplo, as quatro operações aritméticas são denotadas pelos símbolos + adição
3. COMPILAÇÃO E ESTRUTURA BÁSICA DE UM PROGRAMA EM C
3. COMPILAÇÃO E ESTRUTURA BÁSICA DE UM PROGRAMA EM C 3.1. Compilação de um Programa C O compilador C realiza a compilação do código-fonte de um programa em cinco etapas: edição, pré-processamento, compilação,
Nº horas ESTRATÉGIAS RECURSOS AVALIAÇÃO
ANO: 10.º Curso Profissional Técnico de Informática de Gestão Disciplina: Linguagens de Programação ANO LECTIVO: 2008/2009 p.1/13 Módulo 1 Algoritmia 1 - Introdução à Lógica de Programação Lógica Sequência
Conceitos c++ Prof. Demétrios Coutinho INFORMÁTICA BÁSICA
INFORMÁTICA BÁSICA Conceitos c++ Prof. Demétrios Coutinho C a m p u s P a u d o s F e r r o s D i s c i p l i n a d e O r g a n i z a ç ã o d e A l g o r i t m o s D e m e t r i o s. c o u t i n h o @
Aula 11: Desvios e Laços
Aula 11: Desvios e Laços Nesta aula explicaremos alguns comandos que podem alterar o fluxo dos seus programas em JavaScript. Você aprenderá a estrutura dos comandos de desvios e laços. Entenderá como funcionam
Universidade Federal da Paraíba Centro de Informática Departamento de Informática
Universidade Federal da Paraíba Centro de Informática Departamento de Informática Disciplina: Introdução à Programação Horário: T08002, I08002 Sala: CISB01 T10002, I10002 Sala: CI304 Número de Créditos:
LINGUAGEM JAVA - RESUMO
LINGUAGEM JAVA - RESUMO 1.1. Estrutura Geral de um Programa 1. ESTRUTURAS BÁSICAS public class nome do programa public static void main(string[] args) instruções do programa 1.2. Tipos Primitivos de Dados
Algoritmos e Programação : Conceitos e estruturas básicas. Hudson Victoria Diniz
Algoritmos e Programação : Conceitos e estruturas básicas Hudson Victoria Diniz Relembrando... Um algoritmo é formalmente uma seqüência finita de passos que levam a execução de uma tarefa. Podemos pensar
Java possui 4 tipos de dados. Estes tipos de dados são divididos em: boolean, character, integer e float.
1 - Tipos de Dados em Java Java possui 4 tipos de dados. Estes tipos de dados são divididos em: boolean, character, integer e float. a. Boolean Um dado boolean poderá assumir somente dois valores: true
Montadores e Compiladores
Montadores e Compiladores Prof. Idevar Gonçalves de Souza Júnior Conteúdo Programático Resumido Revisão da Arquitetura de Computadores Introdução a Teoria das Linguagens Compilação e Interpretação Análise
Teste de Funções por Cobertura do Grafo de Fluxo de Controle
Teste de Funções por Cobertura do Grafo de Fluxo de Controle Programação II Universidade de Lisboa Faculdade de Ciências Departamento de Informática Licenciatura em Tecnologias da Informação Vasco Thudichum
Árvores Parte 1. Aleardo Manacero Jr. DCCE/UNESP Grupo de Sistemas Paralelos e Distribuídos
Árvores Parte 1 Aleardo Manacero Jr. DCCE/UNESP Grupo de Sistemas Paralelos e Distribuídos Árvores uma introdução As listas apresentadas na aula anterior formam um conjunto de TADs extremamente importante
INF1005: Programação I. Algoritmos e Pseudocódigo
INF1005: Programação I Algoritmos e Pseudocódigo Tópicos Principais Definição de Algoritmo Exemplos Básicos Formas de representação Condicionais Exemplos com Condicionais Repetições Exemplos com Repetições
Orientação a Objetos
Orientação a Objetos 1. Manipulando Atributos Podemos alterar ou acessar os valores guardados nos atributos de um objeto se tivermos a referência a esse objeto. Os atributos são acessados pelo nome. No
Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada. [email protected], [email protected].
Teoria dos Grafos Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada [email protected], [email protected] Grafos e Algoritmos Preparado a partir do texto: Rangel, Socorro.
Aula Extra. Depurador Code::Blocks. Monitoria de Introdução à Programação
Aula Extra Depurador Code::Blocks Monitoria de Introdução à Programação Depurador - Definição Um depurador (em inglês: debugger) é um programa de computador usado para testar outros programas e fazer sua
Comandos de Desvio 1
Programação de Computadores I UFOP DECOM 2014 1 Aula prática 3 Comandos de Desvio 1 Sumário Resumo Nesta aula você irá resolver problemas que requerem uma decisão com base em um teste, ou condição. Para
Algoritmos e Estruturas de Dados I. Variáveis Indexadas. Pedro O.S. Vaz de Melo
Algoritmos e Estruturas de Dados I Variáveis Indexadas Pedro O.S. Vaz de Melo Por que índices são importantes? Como uma loja de sapatos artesanais deve guardar os seus produtos? 1 2 3 4 Tamanhos entre
Linguagens de Programação:
Capítulo I : Noções Gerais 11 Linguagens de Programação: Como comunicar com o computador? Linguagem Máquina: Conjunto básico de instruções, em código binário, características de cada computador, correspondentes
Tutorial 3 Básico do VBA do Excel
Tutorial 3 Básico do VBA do Excel Este tutorial contém a 3 ª lição sobre a série de Tutoriais do VBA Básico do Excel. Ele cobre tópicos na criação e gerenciamento de array e entendimento das estruturas
Estruturas de Repetição
Estruturas de Repetição Lista de Exercícios - 04 Algoritmos e Linguagens de Programação Professor: Edwar Saliba Júnior Estruturas de Repetição O que são e para que servem? São comandos que são utilizados
Introdução à Programação com Python
Introdução à Programação com Python Algoritmos e lógica de programação para iniciantes Nilo Ney Coutinho Menezes Novatec Copyright 2010 da Novatec Editora Ltda. Todos os direitos reservados e protegidos
Estruturas de controlo condicional
4 Estruturas de controlo condicional Would you tell me, please, which way I ought to go from here? That depends a good deal on where you want to get to. said the Cat. I don't much care where said Alice.
Introdução à Programação. Funções e Procedimentos. Prof. José Honorato F. Nunes [email protected]
Introdução à Programação Funções e Procedimentos Prof. José Honorato F. Nunes [email protected] RESUMO DA AULA SUB-ROTINAS: Procedimentos Funções Escopo de variáveis Parâmetros Prof. José Honorato
Controle de Fluxo Comandos de repetição: while e do-while
BCC 201 - Introdução à Programação Controle de Fluxo Comandos de repetição: while e do-while Guillermo Cámara-Chávez UFOP 1/1 Comandos de Repetição (Laços) I São muito comuns as situações em que se deseja
AULA 3 Alocação dinâmica de memória: Ponteiros
UNIP - Ciência da Computação e Sistemas de Informação Estrutura de Dados AULA 3 Alocação dinâmica de memória: Ponteiros Estrutura de Dados 1 Variáveis X Ponteiros VARIÁVEL - Estrutura para armazenamento
Linguagens e Paradigmas de Programação
Universidade Federal do Amazonas Departamento de Ciência da Computação IEC481 Projeto de Programas Linguagens e Paradigmas de Programação Professor: César Melo Slides baseados em materiais preparados pelo
Lista de Exercícios Critérios de Divisibilidade
Nota: Os exercícios desta aula são referentes ao seguinte vídeo Matemática Zero 2.0 - Aula 10 - Critérios de - (parte 1 de 2) Endereço: https://www.youtube.com/watch?v=1f1qlke27me Gabaritos nas últimas
Do alto-nível ao assembly
Do alto-nível ao assembly Compiladores Cristina C. Vieira 1 Viagem Como são implementadas as estruturas computacionais em assembly? Revisão dos conceitos relacionados com a programação em assembly para
4. Álgebra Booleana e Simplificação Lógica. 4. Álgebra Booleana e Simplificação Lógica 1. Operações e Expressões Booleanas. Objetivos.
Objetivos 4. Álgebra Booleana e Simplificação Lógica Aplicar as leis e regras básicas da álgebra Booleana Aplicar os teoremas de DeMorgan em expressões Booleanas Descrever circuitos de portas lógicas com
4. Constantes. Constantes pré-definidas
4. Constantes Constantes pré-definidas O PHP possui algumas constantes pré-definidas, indicando a versão do PHP, o Sistema Operacional do servidor, o arquivo em execução, e diversas outras informações.
Linguagens de Programação
Linguagens de Programação Paradigma Imperativo Matheus Hafner Tiago Xavier CET 087 - Conceitos de Linguagens de Programação (CLP) 17 de novembro de 2011 Aula Prática Instalação Fortran sudo apt-get install
Análise Sintática. Análise Sintática. Tipos de Analisadores Gramáticais: PARSERS
Análise Sintática Tipos de Analisadores Gramáticais: PARSERS * Analisadores TOP-DOWN: Árvore de derivação começa pela raiz indo para as folhas => Análise Descendente Tipo LL(1): Left to right / Leftmost
números decimais Inicialmente, as frações são apresentadas como partes de um todo. Por exemplo, teremos 2 de um bolo se dividirmos esse bolo
A UA UL LA Frações e números decimais Introdução Inicialmente, as frações são apresentadas como partes de um todo. Por exemplo, teremos de um bolo se dividirmos esse bolo em cinco partes iguais e tomarmos
Circuitos Aritméticos
Circuitos Aritméticos Semi-Somador Quando queremos proceder à realização de uma soma em binário, utilizamos várias somas de dois bits para poderemos chegar ao resultado final da operação. Podemos, então,
Compiladores II. Fabio Mascarenhas
Compiladores II Fabio Mascarenhas - 2016.2 http://www.dcc.ufrj.br/~fabiom/comp2 Tabelas para tudo Tabelas são o único tipo estruturado de Lua Elas podem representar vetores, conjuntos, registros, objetos,
Representações de caracteres
Representações de caracteres Sistemas de Numeração A necessidade de contar é algo que acompanha o ser humano desde tempos imemoriais. Sistemas de Numeração Usando o polegar para indicar em cada dedo a
TECNOLOGIA EM MECATRÔNICA INDUSTRIAL CONTROLADORES LÓGICOS PROGRAMÁVEIS
TECNOLOGIA EM MECATRÔNICA INDUSTRIAL CONTROLADORES LÓGICOS PROGRAMÁVEIS TECNOLOGIA EM MECATRÔNICA INDUSTRIAL CONTROLADORES LÓGICOS PROGRAMÁVEIS Autor: Prof. Heliliano Carlos Sartori Guedes [email protected]
Projetando um Computador
Objetivo Projetando um Computador Parte II (2) Projetando um Computador Parte II Arquitetura do Processador BIP Apresentar as noções do funcionamento de um computador através da descrição da arquitetura
Programação Orientada a Objeto Java
Programação Orientada a Objeto Java Aula 2 Introdução a Programação Java Sintaxe da Linguagem e Principais Conceitos Profª Kelly Christine C. Silva Sumário Construção do programa Saída de dados Entrada
números decimais Inicialmente, as frações são apresentadas como partes de um todo. Por exemplo, teremos 2 de um bolo se dividirmos esse bolo
A UA UL LA Frações e números decimais Introdução Inicialmente, as frações são apresentadas como partes de um todo. Por exemplo, teremos de um bolo se dividirmos esse bolo em cinco partes iguais e tomarmos
Até o momento, vimos que a estrutura de um computador segue uma seqüência: ENTRADA => PROCESSAMENTO => SAÍDA
Curso de Sistemas de Informação Disciplina: Algoritmos 1º e 2º Períodos Turmas 216071A, 216071B e 216062 Notas de Aula Aulas 07, 08 e 09. Professor: Edkallenn Aula 07 Variáveis Talvez o conceito de variável
OBSERVAÇÕES: EXERCÍCIOS
OBSERVAÇÕES: 1. Esta lista de exercícios poderá ser resolvida individualmente ou em grupos de 2 pessoas. 2. A lista possui 25 exercícios, destes você deve responder os 5 primeiros exercícios e os outros
http://www.ic.uff.br/~boeres/fac.html! Conteúdos: Debora, Edcarllos, livros! slides disponíveis!
http://www.ic.uff.br/~boeres/fac.html! 1 Conteúdos: Debora, Edcarllos, livros! slides disponíveis! Unidade central de Processamento realiza operações básicas codificadas em 0s e 1s instrução contém código
Sumários de REDES de COMUNICAÇÃO
Sumários de REDES de COMUNICAÇÃO Curso Profissional de Técnico de Gestão e Programação de Sistemas Informáticos MÓDULO V Desenvolvimento de Páginas Web Dinâmicas 12G Turno 2 Aulas n. 1 e 2 (2011-09-19)
RACIOCÍNIO LÓGICO QUANTITATIVO
RACIOCÍNIO LÓGICO QUANTITATIVO AULA 1 ESTUDO DA LÓGICA O estudo da lógica é o estudo dos métodos e princípios usados para distinguir o raciocínio correto do incorreto. A lógica tem sido freqüentemente
Introdução à Programação com Python
Introdução à Programação com Python Algoritmos e lógica de programação para iniciantes Nilo Ney Coutinho Menezes Novatec Copyright 2010, 2014 da Novatec Editora Ltda. Todos os direitos reservados e protegidos
Aula de hoje. Expressões. Expressões. Expressões. Exemplos. Programa em Python. SCC Introdução à Programação para Engenharias
SCC 124 - Introdução à Programação para Engenharias Expressões Professor: André C. P. L. F. de Carvalho, ICMC-USP Pos-doutorando: Isvani Frias-Blanco Monitor: Henrique Bonini de Britto Menezes Aula de
Dr. Alan R. R. de Freitas
Introdução à Programação Curso em C++ Dr. Alan R. R. de Freitas Copyright c 25 Alan R. R. de Freitas ALANDEFREITAS.COM Edição: 9 de Março de 25 Conteúdo I Programação Estruturada Introdução ao C++.........................................
Algoritmos APRENDENDO A PROGRAMAR COM C#
Algoritmos APRENDENDO A PROGRAMAR COM C# Alô Mundo AULA 01 Conhecendo o ambiente O objetivo principal desse programa não é mostrar a mensagem Alo Mundo. O objetivo é apresentar o ambiente de desenvolvimento
Gramáticas Livres de Contexto
Conteúdo da aula Gramáticas Livres de Contexto Marcelo Johann Trabalho - primeira etapa Definição, código e estrutura Mais elementos e detalhes de lex GLCs Gramática, produção, derivações, árvores Ambíguas,
C A P I T U L O 6 E S T R U T U R A S D E C O N T R O L E D E R E P E T I Ç Ã O
C A P I T U L O 6 E S T R U T U R A S D E C O N T R O L E D E R E P E T I Ç Ã O Sempre que precisarmos em um script PHP que uma ou mais linhas de comandos sejam repetidamente executadas, utilizamos laços
Os conceitos aprendidos são fundamentais, essenciais para escrever um programa macro. Mas o que é um programa macro?
Resumo. O uso de uma variável é necessário quando você não sabe ainda um valor ou uma função, ou seja, quando há uma situação de mudança que impede a determinação direta destes valores. Uma variável pode
Programação WEB I Funções
Programação WEB I Funções Funções As funções podem ser definidas como um conjunto de instruções, agrupadas para executar uma determinada tarefa. Dentro de uma função pode existir uma chamada a outra função.
Vírgula flutuante Aula 6
Vírgula flutuante Aula 6 17 de Março de 2005 1 Estrutura desta aula Números em vírgula flutuante Formatos dos números em vírgula fixa e em vírgula flutuante A norma IEEE 754 Normalizações, expoentes, zeros
Introdução a Funções
Introdução a Funções Funções Matemáticas função é uma relação de um ou vários valores de argumentos de entrada em um ÚNICO resultado de saída. y z Fig I f(x) = x 2 x = 2 f(x) = 4 x z = f(x,y) = x 2 +y
Escola Secundária c/3º CEB José Macedo Fragateiro. Curso Profissional de Nível Secundário. Componente Técnica. Disciplina de
Escola Secundária c/3º CE José Macedo Fragateiro Curso Profissional de Nível Secundário Componente Técnica Disciplina de Sistemas Digitais e Arquitectura de Computadores 2009/2010 Módulo 2: Álgebra e Lógica
- Campus Salto. Disciplina: Sistemas de Arquivos Docente: Fernando Santorsula E-mail: [email protected]
Disciplina: Sistemas de Arquivos Docente: Fernando Santorsula E-mail: [email protected] Sistemas de Arquivos- Parte 2 Pontos importantes de um sistema de arquivos Vários problemas importantes devem
INTRODUÇÃO À PROGRAMAÇÃO EM FORTRAN
3 INTRODUÇÃO À PROGRAMAÇÃO EM FORTRAN 3.1 Estrutura de um programa Fortran Como se viu anteriormente, a definição da sequência de instruções (isto é, o algoritmo) é uma etapa importante na elaboração de
Introdução à Algoritmos. Aula 11
Introdução à Algoritmos Aula 11 Um programa de computador é um produto resultante da atividade intelectual. Essa atividade depende de um treinamento prévio em abstração e modelagem de problemas, bem como
Capítulo VI Circuitos Aritméticos
Capítulo VI Circuitos Aritméticos Introdução No capítulo anterior estudamos a soma e subtração de números binários. Neste capítulo estudaremos como as operações aritméticas de soma e subtração entre números
Programação de Computadores II
Programação de Computadores II 1. Programação Básica 2019.1 Slides adaptados do material de Karina Mochetti Problema, Algoritmo, Programa Um programa de computador é a implementação de um algoritmo para
MC-102 - Teste de Mesa e Comandos Repetitivos
MC-102 - Teste de Mesa e Comandos Repetitivos Elaborado por Raoni Teixeira e Editado por Danillo Roberto Pereira Instituto de Computação Unicamp Primeiro Semestre de 2013 Introdução Introdução Pode acontecer
Projetando um Computador Parte II Arquitetura do Processador BIP
Projetando um Computador Parte II Arquitetura do Processador BIP Prof. Dr. Cesar Albenes Zeferino ([email protected]) Objetivo Projetando um Computador Parte II (2) Apresentar as noções do funcionamento
Trabalho de Implementação de Analisador Léxico Parte 1
Trabalho de Implementação de Analisador Léxico Parte 1 Nesta página estão detalhados os procedimentos que devem ser seguidos para o desenvolvimento do Trabalho 1 da disciplina de Compiladores I. Este trabalho
Introdução. Software Básico Aula 3. Prof. Dr. Rogério Vargas.
Introdução Software Básico Aula 3 Prof. Dr. Rogério Vargas http://rogerio.in Provocação Você já se perguntou como é que os programas que você escreve são traduzidos em instruções executáveis pelas estruturas
SINTAXE DO COMANDO SEQUÊNCIA
31 A partir da digitação de alguns parâmetros no Comando Sequência é possível produzir sequências numéricas e geométricas, e é o que propomos nesse texto. Para isso, abordamos as sintaxes do comando e
Algoritmo e Pseudo-código
Departamento de Sistemas de Computação Universidade de São Paulo Algoritmo e Pseudo-código Responsável Prof. Seiji Isotani ([email protected]) Objetivos do Curso Desenvolver o Pensamento Computacional
Linguagem de Programação C. Fluxo de Saída Padrão. Linguagem de Programação C. printf. Fluxo de Saída Padrão. Algoritmos e Lógica de Programação
Algoritmos e Lógica de Programação Linguagem de Programação C Linguagem C Entrada e Saída de dados Reinaldo Gomes [email protected] Fluxo de Saída Padrão Saída Formatada: ( ) Tem a função de
Programação de Computadores I Estruturas de Repetição PROFESSORA CINTIA CAETANO
Programação de Computadores I Estruturas de Repetição PROFESSORA CINTIA CAETANO Introdução Existem situações onde é necessário repetir um determinado trecho de um programa um certo número de vezes. Assim,
Variáveis primitivas e Controle de fluxo
Variáveis primitivas e Controle de fluxo Material baseado na apostila FJ-11: Java e Orientação a Objetos do curso Caelum, Ensino e Inovação, disponível para download em http://www.caelum.com.br/apostilas/
Capítulo 8. Estruturas de Controle no Nível de Sentença
Capítulo 8 Estruturas de Controle no Nível de Sentença Níveis de fluxo de controle Computações são realizadas por meio da avaliação de expressões e da atribuição dos valores a variáveis Para tornar a computação
Dada uma gramática GLC G: Obter G tal que L(G )=L(G) e G seja LL(1); Conforme a conveniência, efetuar eliminação de regras e de recursões à direita, usando a notação EBNF; Criar, para cada símbolo não-terminal
PYTHON Compreensão de Listas. Introdução à Programação SI2
PYTHON Compreensão de Listas Introdução à Programação SI2 Inicializando listas Não é possível atribuir a uma posição inexistente de uma lista >>> vetor = [] >>> vetor [0] = 1 Traceback (most recent call
ÁLGEBRA BOOLEANA- LÓGICA DIGITAL
ÁLGEBRA BOOLEANA- LÓGICA DIGITAL LÓGICA DIGITAL Álgebra Booleana Fundamentação matemática para a lógica digital Portas Lógicas Bloco fundamental de construção de circuitos lógicos digitais Circuitos Combinatórios
Compiladores. Transformações de GLCs. Plano da aula. Análise Top-Down. Análise Top-Down Exemplo. Gramáticas Livres de Contexto.
Gramáticas Livres de Contexto Análise Top-Down Compiladores ε Análise sintática (2) Análise Top-Down Top-Down AB AB cb A c ccbb B cbb ccbca B ca 2 Transformações de GLCs Eliminação de produções vazias
