Intuição da sintaxe de L2 (35)

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

Download "Intuição da sintaxe de L2 (35)"

Transcrição

1 2.2 A Linguagem L2 2.2 A Linguagem L2 A linguagem L2 é uma extensão de L1 com funções recursivas, memória (acesso e atualização de variáveis), sequência de comandos ( ; ) e laço de repetição while. Primeiro, devemos estender a sintaxe de L1: onde n Z b {true, false} op {, +} Sintaxe de L2 (34) e ::= n b e 1 op e 2 if e 1 then e 2 else e 3 ( ) l := e ( )! l ( ) skip ( ) e 1 ; e 2 ( ) while e 1 do e 2 fn x:t e e 1 e 2 x let x:t = e 1 in e 2 end ( ) let rec f:t 1 T 2 = (fn y:t 1 e 1 ) in e 2 end v ::= n b fn x:t e ( ) skip l Loc = {l 1, l 2, l 3,...} Intuição da sintaxe de L2 (35) Loc representa um conjunto de localizações de memória (ou endereços), cujos elementos vamos representar por l, l 1, l 2, l 3,.... Assumimos que Loc é contável e infinito (existem tantas posições de memória quanto necessitarmos). Vamos assumir que somente inteiros serão armazenados em memória. Isso permite considerar a memória uma função total σ : Loc int. 21

2 2 Semântica Operacional e Sistemas de Tipos l := e representa o armazenamento do resultado da avaliação de e no endereço l dentro da memória.! l representa acessar o valor armazenado em memória no endereço l, ao passo que que l representa o endereço em si. skip representa o comando que não faz nada. Ele é útil para simular a construção if-then a partir de if-then-else. c 1 ; c 2 executa inicialmente c 1 e somente após executa c 2. while e 1 do e 2 executa o teste e 1. Se este for falso, o comando termina. Se e 1 resultar em verdadeiro, o comando e 2 é executado e o processo é repetido. let rec f:t 1 T 2 = (fn y:t 1 e 1 ) in e 2 end permite o uso da função recursiva f dentro da expressão e 2. Linguagem de Tipos de L2 (36) os tipos da linguagem L2 são dados pela seguinte gramática: T ::= int bool unit T 1 T 2 unit representa o tipo de comandos, isto é, expressões cujo propósito não é retornar um valor, mas sim causar algum efeito colateral como modificar o estado das variáveis. Configurações (37) Nesta linguagem, ao contrário de L1, temos a ideia de que o programa roda ao lado de uma memória, que armazena o valor das variáveis. Portanto, ao dar semântica operacional, precisamos de duas informações: O estado atual do programa e P rog. O estado atual da memória σ Mem, onde Mem = (Loc int). Ao par e, σ damos o nome de configuração (ou estado da máquina abstrata). A semântica operacional será definida pela relação ( ) P rog, Mem P rog, Mem 22

3 2.2 A Linguagem L2 Nota: não estamos considerando entrada e saída de dados. Poderíamos assumir que o programa inicia com as entradas do problema preenchidas em certas posições de memória, e a saída pode ser obtida de outra posição de memória ou do resultado do programa em si. Nota: cada vez que estendemos a sintaxe da linguagem, precisamos atualizar as definições de fv (variáveis livres) e {e 1 /x}e 2 (substituição) para atuarem de forma consistente sobre as novas construções Funções recursivas Funções recursivas (38) A sintaxe e ::=... let rec f:t 1 T 2 = (fn y:t 1 e 1 ) in e 2 end permite descrever uma função f que, durante a sua execução, pode se chamar recursivamente. Note que a construção let comum não permitiria isso, pois o nome f estaria livre dentro do corpo da função. A regra de tipos precisa garantir que o corpo da função recursiva está bem tipado considerando a informação do parâmetro da função x e a possibilidade de chamada recursiva a f. Além disso, a expressão e 2 também precisa estar bem tipada, supondo que possamos realizar chamadas a f. Γ, f : T 1 T 2, y : T 1 e 1 : T 2 Γ, f : T 1 T 2 e 2 : T Γ let rec f:t 1 T 2 = (fn y:t 1 e 1 ) in e 2 end : T (Tletrec) A avaliação de expressões let rec, da mesma forma que o let, substitui todas as ocorrências de f dentro da expressão e 2. Contudo, ao invés de substituir f pela função (fn y:t 1 e 1 ), ele substitui por (fn y:t 1 let rec f:t 1 T 2 = (fn y:t 1 e 1 ) in e 1 end), que mantém o nome f preso em e 1 se alguma chamada recursiva a f precisar ser feita. A memória não é modificada por essa transformação. let rec f:t 1 T 2 = (fn y:t 1 e 1 ) in e 2 end, σ (letrec) {(fn y:t 1 let rec f:t 1 T 2 = (fn y:t 1 e 1 ) in e 1 end)/f}e 2, σ Segue abaixo a definição da função fatorial e a sua chamada para calcular o fatorial de 5 (neste exemplo supomos que operadores para igualdade, multiplicação e para subtração foram adicionados a linguagem): 23

4 2 Semântica Operacional e Sistemas de Tipos let rec f a t : int > int = (fn y : int => if y = 0 then 1 else y * f a t ( y 1 ) ) in f a t 5 end Comandos Skip e sequência (39) Γ skip : unit Γ e 1 : unit Γ e 2 : T Γ e 1 ;e 2 : T (Tskip) (Tseq) O sistema de tipos atribui a skip o tipo unit. Sequências de ações e 1 ;e 2 são bem tipadas somente quando e 1 é do tipo unit. Neste caso, o tipo da sequência é igual ao tipo de e 2. skip;e 2, σ e 2, σ (seq1) e 1, σ e 1, σ e 1 ;e 2, σ e 1 ;e 2, σ (seq2) Pela regra de reescrita seq2 acima, a avaliação sequencial de duas expressões é feita da esquerda para direita. Pela regra seq1 (uma regra de computação), quando o lado esquerdo estiver completamente reduzido para skip, a avaliação deve continuar com a expressão no lado direito do ponto e vírgula. Note que aqui foi feita uma escolha arbritrária no projeto da linguagem: a avaliação continua com a expressão no lado direito somente se a expressão do lado esquerdo do ponto e vírgula avalia para skip. Qualquer outra possibilidade leva a erro de execução. Operações com a Memória (40) Γ e : int Γ l:= e : unit Γ! l : int l Dom(σ) l:= n, σ skip, σ[l n] (Tatr) (Tderef) (atr1) 24

5 2.2 A Linguagem L2 e, σ e, σ l:= e, σ l:= e, σ (atr2) l Dom(σ) σ(l) = n! l, σ n, σ (deref) σ[l v] representa a memória com os mesmos valores armazenados que σ com exceção da posição l, a qual aponta para o valor v. Se l / Dom(σ), a memória σ[l v] é o resultado da definição de um novo mapeamento para uma nova posição l. Se l Dom(σ), a memória σ[l v] é o resultado da alteração do valor armazenado em l para v, destruindo o valor anteriormente armazenado em l. Observe que as operações de atribuição e derreferência (regras atr1 e deref) somente são executadas se o endereço l estiver mapeado na memória (formalizado pela premissa l Dom(σ)). Na regra atr1 podemos observar outras escolhas feitas em relação à semântica da linguagem: a memória somente pode receber valores inteiros e uma atribuição é reduzida para o valor skip. Em algumas linguagens de programação o valor final de uma expressão de atribuição é mesmo do valor atribuido. Note também que l 1, l 2, l 3,... (endereços) não são considerados objetos de primeira classe. Endereços não podem ser passados para ou retornados por funções. Os operadores de atribuição e dereferenciação necessitam referenciar endereços diretamente, não podendo ser aplicados sobre expressões que poderiam retornar endereços após algum cálculo. While (41) Γ e 1 : bool Γ e 2 : unit Γ while e 1 do e 2 : unit (Twhile) A regra de tipo de while e 1 do e 2 requer que e 1 seja uma expressão booleana, e que e 2 seja uma expressão do tipo unit (comando). while e 1 do e 2, σ if e 1 then (e 2 ;while e 1 do e 2 ) else skip, σ (while) O comando while e 1 do e 2 pode ser visto como uma sequência infinita de ifs encadeados. A regra de reescrita realiza a expansão em um passo do teste e execução como um if, retornando ao while e 1 do e 2 inicial após cada execução de e 2 (caso mais iterações sejam necessárias). 25

6 2 Semântica Operacional e Sistemas de Tipos Mais açucar sintático (42) Note que o operador de sequência ';' e a construção while poderiam ser simulados através de funções: e 1 ; e 2 pode ser codificado como (fn y:unit e 2 ) e 1 onde y fv(e 2 ) while e 1 do e 2 poderia ser codificado como: l e t r e c w: unit > unit = fn y : unit => i f e 1 then (e 2 ; (w skip ) ) else skip in w skip end para um novo w e y fv(e 1 ) fv(e 2 ) Propriedades de L2 Assim como L1, a linguagem L2 é determinística e o enunciado do teorema que afirma essa propriedade é o mesmo. O enunciado das propriedades de preservação e progresso na essência são os mesmos mas neles assumimos que as expressões em consideração são expressões fechadas, ou seja, expressões onde não há variáveis não declaradas. Progresso e Preservação (43) Teorema 5 (Progresso) Se e : T, então e é um valor ou existe e ; σ e, σ e, σ. tal que Teorema 6 (Preservação) Se e : T e e, σ e, σ então e : T. Todos os resultados sobre os problemas da tipabilidade e da verificação de tipos de L1 permancem os mesmos para L2. 26

Programas em L1 pertencem ao conjunto de árvores de sintaxe abstrata definido pela gramática abstrata abaixo:

Programas em L1 pertencem ao conjunto de árvores de sintaxe abstrata definido pela gramática abstrata abaixo: 1 Semântica Operacional e Sistemas de Tipos Vamos definir a semântica operacional de uma série de linguagens no estilo conhecido por semântica operacional estrutural chamado também de semântica operacional

Leia mais

INF Semântica Formal N. Universidade Federal do Rio Grande do Sul

INF Semântica Formal N. Universidade Federal do Rio Grande do Sul INF05516 - Semântica Formal N Ciência da Computação Universidade Federal do Rio Grande do Sul Álvaro Moreira, Marcus Ritt {afmoreira,mrpritt}@inf.ufrgs.br 21 de Junho de 2009 Conteúdo 1 Semântica Operacional

Leia mais

ao paradigma imperativo

ao paradigma imperativo PARADIGMA FUNCIONAL PARADIGMA FUNCIONAL: INTRODUÇÃO G Exemplos de linguagens funcionais LISP - Início: LP puramente funcional - Depois: acréscimo de alguns recursos imperativos (aumentaram eficiência de

Leia mais

INF Semântica Formal - Prova II /1

INF Semântica Formal - Prova II /1 INF05516 - Semântica Formal - Prova II - 2009/1 Nome: Número: Instruções: Todas as questões são relativas a linguagem L3 sem subtipos, exceto quando explicitamente mencionado. A duração da prova é de 100

Leia mais

Introdução à Linguagem C++

Introdução à Linguagem C++ Introdução à Linguagem C++ C++: Definição C++ C A Linguagem de Programação C++ pode ser definida como uma extensão da Linguagem C; Todo código de programação em Linguagem C pode a priori ser compilado

Leia mais

Linguagens de Programação

Linguagens de Programação Linguagens de Programação Fabio Mascarenhas - 2015.2 http://www.dcc.ufrj.br/~fabiom/lp Recursão mútua com pares Agora podemos definir o par de funções mutuamente recursivas: letrec pi = cons( if x < 1

Leia mais

Programação Funcional - Introdução a Cálculo Lambda

Programação Funcional - Introdução a Cálculo Lambda Programação Funcional - Introdução a Cálculo Lambda Cristiano Damiani Vasconcellos Universidade do Estado de Santa Catarina 1. Definição Cálculo lambda (λ-cálculo) é um modelo matemático capaz de ilustrar

Leia mais

I1, I2 e In são instruções simples ou estruturadas da linguagem Pascal.

I1, I2 e In são instruções simples ou estruturadas da linguagem Pascal. Capítulo 4 TESTES, ESCOLHAS E MALHAS DE REPETIÇÃO 1. INTRODUÇÃO Em muitos exemplos e exercícios realizados nos capítulos anteriores, não foram raras as vezes em que fizemos uso de elementos disponíveis

Leia mais

Sintaxe e Semântica. George Darmiton da Cunha Cavalcanti.

Sintaxe e Semântica. George Darmiton da Cunha Cavalcanti. Sintaxe e Semântica George Darmiton da Cunha Cavalcanti (gdcc@cin.ufpe.br) Tópicos Introdução O problema de descrever a sintaxe Métodos formais para descrever a sintaxe Gramáticas de atributos Descrevendo

Leia mais

Semântica Operacional

Semântica Operacional Semântica Conceitos Semântica é o estudo do significado. Incide sobre a relação entre significantes, tais como palavras, frases, sinais e símbolos, e o que eles representam, a sua denotação. Semântica

Leia mais

Apêndice A. Pseudo-Linguagem

Apêndice A. Pseudo-Linguagem Apêndice A. Pseudo-Linguagem Apostila de Programação I A.1 Considerações Preliminares Os computadores convencionais se baseiam no conceito de uma memória principal que consiste de células elementares,

Leia mais

Prova. t ::= t t. t 1 t 4 t 2 t 3 (t 1 t 2 ) (t 3 t 4 ) (t 2 t 1 ) (t 4 t 3 )

Prova. t ::= t t. t 1 t 4 t 2 t 3 (t 1 t 2 ) (t 3 t 4 ) (t 2 t 1 ) (t 4 t 3 ) Sistema de Tipos - II/UFRGS 1 1. Marque verdadeiro ou falso: Prova ( ) A relação de avaliação small-step deve ser determinística (ou seja para qualquer termo deve existir somente uma maneira para ele progredir

Leia mais

Waldemar Celes e Roberto Ierusalimschy. 29 de Fevereiro de 2012

Waldemar Celes e Roberto Ierusalimschy. 29 de Fevereiro de 2012 Capítulo 5: Repetições Waldemar Celes e Roberto Ierusalimschy 29 de Fevereiro de 2012 1 Construção de laços Uma das principais características de um computador é sua capacidade para realizar cálculo e

Leia mais

Puca Huachi Vaz Penna

Puca Huachi Vaz Penna Aula 3 C++: variáveis e expressões aritméticas 2017/1 BCC201 Introdução à Computação Turmas 61, 62, 63, 64, 65 e 66, 32 e 33 Puca Huachi Vaz Penna Departamento de Computação Universidade Federal de Ouro

Leia mais

Lógica de Hoare. Abordagem que usaremos: aplicar o método de Hoare sobre uma linguagem de programação imperativa simplificada.

Lógica de Hoare. Abordagem que usaremos: aplicar o método de Hoare sobre uma linguagem de programação imperativa simplificada. Lógica de Hoare Método axiomático para provar que determinados programas são corretos. Introduzido em 1969 por Charles Antony Richard Hoare. Também utilizado para especificar a semântica de linguagens

Leia mais

Variáveis primitivas e Controle de fluxo

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/

Leia mais

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador;

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador; 1 Microprocessador Um microprocessador é um circuito eletrônico capaz de realizar diversas tarefas conforme os comandos específicos. Para isso ele deve ler esses comandos da memória de programa (ROM) e

Leia mais

Linguagens de Programação

Linguagens de Programação Linguagens de Programação Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/lp Efeitos colaterais: referências e atribuição A partir de agora vamos começar a sair do mundo funcional e explorar

Leia mais

Paradigmas de Programação

Paradigmas de Programação Paradigmas de Programação Sintaxe e semântica Aula 4 Prof.: Edilberto M. Silva http://www.edilms.eti.br Prof. Edilberto Silva / edilms.eti.br Sintaxe A sintaxe de uma linguagem de programação é a forma

Leia mais

SEMÂNTICA. Rogério Rocha. rode = program simples = var x : int := 3 in x := x + 5 end.

SEMÂNTICA. Rogério Rocha. rode = program simples = var x : int := 3 in x := x + 5 end. SEMÂNTICA program simples = var x : int := 3 in x := x + 5 end. rode =? Rogério Rocha Roteiro Introdução Sintaxe Semântica Dinâmica (Métodos formais) Operacional Axiomática Denotacional Estática Conclusão

Leia mais

Compiladores. Simão Melo de Sousa. Computer Science Department University of Beira Interior, Portugal. S. Melo de Sousa Compiladores

Compiladores. Simão Melo de Sousa. Computer Science Department University of Beira Interior, Portugal. S. Melo de Sousa Compiladores Compiladores Verificação e inferência dos Tipos Simão Melo de Sousa Computer Science Department University of Beira Interior, Portugal Problema Permitir evitar declarar o tipo das variáveis, das assinaturas

Leia mais

Programação I Estruturas de Repetição

Programação I Estruturas de Repetição Programação I Estruturas de Repetição Prof. Carlos Alberto carlos.batista@facape.br carlos36_batista@yahoo.com.br Expressões compactas Frequentemente existe a necessidade de escrever expressões da forma:

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Professor: Diego Oliveira Conteúdo 05: Linguagem Java Conteúdo da Aula Linguagem Java Tipos Primitivos Operadores Aritiméticos Operadores Lógicos Precedência de Operadores

Leia mais

Instituto Federal de Educação, Ciência e Tecnologia do RN Câmpus Currais Novos. LINGUAGEM C++ VARIÁVEIS COMPOSTAS Arrays Aula I

Instituto Federal de Educação, Ciência e Tecnologia do RN Câmpus Currais Novos. LINGUAGEM C++ VARIÁVEIS COMPOSTAS Arrays Aula I LINGUAGEM C++ VARIÁVEIS COMPOSTAS Arrays Aula I Prof. Bruno E. G. Gomes Uma variável em um algoritmo pode ser vista como uma gaveta. A declaração de uma variável reserva uma gaveta (posição) de um certo

Leia mais

Paradigmas. Fortran, Algol, Algol-68, Pascal, C, Cobol, PL/I

Paradigmas. Fortran, Algol, Algol-68, Pascal, C, Cobol, PL/I Paradigmas Paradigmas Tradicional Fortran, Algol, Algol-68, Pascal, C, Cobol, PL/I Paradigmas Tradicional Fortran, Algol, Algol-68, Pascal, C, Cobol, PL/I OO Simula-67, Smalltalk, C++, Eiffel, Object Pascal,

Leia mais

4. Constantes. Constantes pré-definidas

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.

Leia mais

Revisão da Linguagem C Prof. Evandro L. L. Rodrigues

Revisão da Linguagem C Prof. Evandro L. L. Rodrigues SEL0433 Aplicação de Microprocessadores I Revisão da Linguagem C Prof. Evandro L. L. Rodrigues Estrutura de um programa C Diretivas de pré processamento Declaração de variáveis globais Declaração de protótipos

Leia mais

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO TEORIA DA COMPUTAÇÃO Aula 04 Programa Recursivo e Máquinas Prof.ª Danielle Casillo Funções recursivas Alguma função é recursiva quando

Leia mais

Introdução à Programação em C. Prof. Ricardo Teixeira Tecnologia em Mecatrônica Industrial SENAI

Introdução à Programação em C. Prof. Ricardo Teixeira Tecnologia em Mecatrônica Industrial SENAI Introdução à Programação em C Prof. Ricardo Teixeira Tecnologia em Mecatrônica Industrial SENAI Linguagem C Criada em 1972 para uso no LINUX; Sintaxe base para diversas outras (Java, JavaScript, PHP, C++,

Leia mais

Linguagem C++ Estruturas de controle Parte II Estruturas de repetição

Linguagem C++ Estruturas de controle Parte II Estruturas de repetição Fundamentos de Programação Linguagem C++ Estruturas de controle Parte II Estruturas de repetição Prof. Bruno E. G. Gomes IFRN 1 Estruturas de Controle Permitem o controle da sequência de execução de um

Leia mais

Como construir um compilador utilizando ferramentas Java

Como construir um compilador utilizando ferramentas Java Como construir um compilador utilizando ferramentas Java p. 1/2 Como construir um compilador utilizando ferramentas Java Aula 1 - Introdução Prof. Márcio Delamaro delamaro@icmc.usp.br Como construir um

Leia mais

Paradigmas de Programação

Paradigmas de Programação Paradigmas de Programação Fabrício Olivetti de França 14 de Junho de 2018 1 λ-cálculo 2 Computabilidade Computabilidade é uma área de estudo central da Ciência da Computação. Ela estuda a possibilidade

Leia mais

Organização de Computadores

Organização de Computadores Organização de Computadores Aula #5.1 EBS 111 ICC Prof. Luiz Fernando S. Coletta luizfsc@tupa.unesp.br Campus de Tupã Exercício 3 (correção) 1. Converta as sequências binárias em números de base 10: (a)

Leia mais

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição 1 Comando while Deseja-se calcular o valor de: 1 + 2 + 3 +... + N. Observação: não sabemos, a priori, quantos termos

Leia mais

Nelma Moreira. Departamento de Ciência de Computadores da FCUP. Aula 2. Nelma Moreira (DCC-FC) Fundamentos de Linguagens de Programação Aula 2 2 / 12

Nelma Moreira. Departamento de Ciência de Computadores da FCUP. Aula 2. Nelma Moreira (DCC-FC) Fundamentos de Linguagens de Programação Aula 2 2 / 12 Fundamentos de Linguagens de Programação Nelma Moreira Departamento de Ciência de Computadores da FCUP Fundamentos de Linguagens de Programação Aula 2 Nelma Moreira (DCC-FC) Fundamentos de Linguagens de

Leia mais

Paradigmas de Linguagem de Programação. Paradigma Imperativo

Paradigmas de Linguagem de Programação. Paradigma Imperativo Paradigmas de Linguagem de Programação Paradigma Imperativo Paradigma Imperativo Imperare Comandar É o mais antigo de todos; Baseado no modo de funcionamento do computador; São também chamadas de procedurais;

Leia mais

Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação

Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Programação em C Variáveis e Expressões DCA0800 Algoritmos e Lógica de Programação Heitor Medeiros Florencio

Leia mais

Estruturas de Controle

Estruturas de Controle Estruturas de Controle Mário Meireles eixeira UMA DEIN ópicos Estruturas de Controle condicionais repetição Expressões Lógicas operadores relacionais operadores lógicos Estruturas de Controle 2 1 Introdução

Leia mais

Linguagens de Programação

Linguagens de Programação Linguagens de Programação Fabio Mascarenhas - 2015.2 http://www.dcc.ufrj.br/~fabiom/lp Exceções Vários erros podem acontecer em nossos programas: fazer aritmética com valores que não são números, chamar

Leia mais

Linguagens de Programação

Linguagens de Programação Linguagens de Programação Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/lp Memória Como o ambiente, a memória é um mapeamento, mas ao invés de mapear variáveis para valores a memória mapeia

Leia mais

Algoritmos e Programação

Algoritmos e Programação Algoritmos e Programação Aula 5 Estruturas de Repetição Profa. Marina Gomes marinagomes@unipampa.edu.br 26/04/2017 Engenharia de Computação - Unipampa 1 Aula de Hoje Estrutura de repetição Comando for

Leia mais

Oficina de Python Prof. Me. José Carlos Perini

Oficina de Python Prof. Me. José Carlos Perini Oficina de Python Prof. Me. José Carlos Perini Prof. José Carlos Perini Formação em Análise de Sistemas Univ. S. Francisco Pós em Administração Universidade S. Francisco Mestrado em Ciência da Computação

Leia mais

Capítulo 8. Estruturas de Controle no Nível de Sentença

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

Leia mais

NESSES SLIDES, VOCÊ VAI APRENDER: Configuração de ambiente Variáveis Operadores Ambiguidade Condições e Laços

NESSES SLIDES, VOCÊ VAI APRENDER: Configuração de ambiente Variáveis Operadores Ambiguidade Condições e Laços MÓDULO II NESSES SLIDES, VOCÊ VAI APRENDER: Configuração de ambiente Variáveis Operadores Ambiguidade Condições e Laços SIGA OS PRÓXIMOS PASSOS: 1. INSTALAÇÃO PYTHON : ESCOLHA A VERSÃO MAIS ATUAL E ESTÁVEL

Leia mais

Conceitos de Linguagem de Programação - 2

Conceitos de Linguagem de Programação - 2 Conceitos de Linguagem de Programação - 2 Arthur Jovita Guerra Thalles Santos Silva Universidade Estadual de Santa Cruz - Ilhéus, BA 1 de novembro de 2011 1 Revisão Natureza das linguagens de Programação

Leia mais

ESTRUTURAS DE REPETIÇÃO - PARTE 1

ESTRUTURAS DE REPETIÇÃO - PARTE 1 AULA 15 ESTRUTURAS DE REPETIÇÃO - PARTE 1 15.1 O comando enquanto-faca- Considere o problema de escrever um algoritmo para ler um número inteiro positivo, n, e escrever todos os números inteiros de 1 a

Leia mais

INF Semântica formal N

INF Semântica formal N INF05516 - Semântica formal N Ciência da Computação - UFRGS 2006-2 Marcus Ritt mrpritt@inf.ufrgs.br 23/08/2006 Introdução 2 Agenda............................................................... 3 Semântica

Leia mais

Prof. A. G. Silva. 28 de agosto de Prof. A. G. Silva INE5603 Introdução à POO 28 de agosto de / 1

Prof. A. G. Silva. 28 de agosto de Prof. A. G. Silva INE5603 Introdução à POO 28 de agosto de / 1 INE5603 Introdução à POO Prof. A. G. Silva 28 de agosto de 2017 Prof. A. G. Silva INE5603 Introdução à POO 28 de agosto de 2017 1 / 1 Comandos de decisão simples e compostas Objetivos: Utilização de controles

Leia mais

Análise de Algoritmos Estrutura de Dados II

Análise de Algoritmos Estrutura de Dados II Centro de Ciências Exatas, Naturais e de Saúde Departamento de Computação Análise de Algoritmos Estrutura de Dados II COM10078 - Estrutura de Dados II Prof. Marcelo Otone Aguiar marcelo.aguiar@ufes.br

Leia mais

Paradigmas de Programação

Paradigmas de Programação Paradigmas de Programação Fabrício Olivetti de França 21 de Junho de 2018 1 Listas 2 Listas Uma das principais estruturas em linguagens funcionais. Representa uma coleção de valores de um determinado tipo.

Leia mais

ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO

ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@ifrn.edu.br

Leia mais

A Linguagem Lua Lua Puc-Rio

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

Leia mais

Capítulo 7. Expressões e Sentenças de Atribuição

Capítulo 7. Expressões e Sentenças de Atribuição Capítulo 7 Expressões e Sentenças de Atribuição Introdução Expressões são os meios fundamentais de especificar computações em uma linguagem de programação Para entender a avaliação de expressões, é necessário

Leia mais

Desenvolvimento de Aplicações Desktop

Desenvolvimento de Aplicações Desktop Desenvolvimento de Aplicações Desktop Estruturas de Controle (Repetição) Professor: Charles Leite Repetição de Instruções Na resolução de problemas em programação, frequentemente, precisamos repetir uma

Leia mais

EXPRESSÕES BOOLEANAS. Ex: boolean b = false; // declara uma variável do tipo boolean e atribui false

EXPRESSÕES BOOLEANAS. Ex: boolean b = false; // declara uma variável do tipo boolean e atribui false Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 4 EXPRESSÕES BOOLEANAS O tipo primitivo boolean É um tipo de dados primitivo em Java que possui

Leia mais

Oficina de Introdução de Programação usando Linguagem Python Prof. Ms. Perini

Oficina de Introdução de Programação usando Linguagem Python Prof. Ms. Perini Oficina de Introdução de Programação usando Linguagem Python Prof. Ms. Perini Apresentação do Professor Professor: José Carlos Perini E-mail: jose.perini@metrocamp.edu.br Blog: http://profperini.com Formação

Leia mais

Linguagens de Domínio Específico

Linguagens de Domínio Específico Linguagens de Domínio Específico Fabio Mascarenhas 2016.1 http://www.dcc.ufrj.br/~fabiom/dsl Processamento de uma DSL Análise Sintática Descendente O analisador sintático descendente é parecido com o analisador

Leia mais

Linguagens de Programação

Linguagens de Programação Linguagens de Programação Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/lp Expressões condicionais Scala tem uma expressão if-else para expressar escolha entre alternativas que se parece muito

Leia mais

Linguagens de Programação

Linguagens de Programação Linguagens de Programação Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/lp Let é açúcar sintático Notem a semelhança no interpretador entre o código de let e o código de aplicar uma função

Leia mais

Pascal. -Cabeçalho do programa. - label - const - type - var - procedure - function. - integer - real - byte - boolean - char - string

Pascal. -Cabeçalho do programa. - label - const - type - var - procedure - function. - integer - real - byte - boolean - char - string Pascal -Cabeçalho do programa Áreas do programa -Área de declarações -Corpo do programa - label - const - type - var - procedure - function - integer - real - byte - boolean - char - string Program

Leia mais

Programação de Computadores:

Programação de Computadores: Instituto de C Programação de Computadores: Introdução ao FORTRAN Luis Martí Instituto de Computação Universidade Federal Fluminense lmarti@ic.uff.br - http://lmarti.com Introdução ao FORTRAN Cinco aspectos

Leia mais

Linguagens de Programação

Linguagens de Programação Linguagens de Programação Fabio Mascarenhas - 2015.2 http://www.dcc.ufrj.br/~fabiom/lp Introdução Quais das expressões abaixo têm o mesmo significado? (vector-ref a 42) Introdução Quais das expressões

Leia mais

Oficina de Python Prof. Me. José Carlos Perini

Oficina de Python Prof. Me. José Carlos Perini Oficina de Python Prof. Me. José Carlos Perini Prof. José Carlos Perini Formação em Análise de Sistemas Univ. S. Francisco Pós em Administração Universidade S. Francisco Mestrado em Ciência da Computação

Leia mais

LINGUAGEM ALGORÍTMICA

LINGUAGEM ALGORÍTMICA LINGUAGEM ALGORÍTMICA Adriano Mauro Cansian André Proto UNESP - São José do Rio Preto Linguagem Computacional Introdução! Para uma melhor padronização de nosso estudos, vamos agora definir uma linguagem

Leia mais

Linguagem de Programação e Compiladores

Linguagem de Programação e Compiladores Linguagem de Programação e Compiladores Fernando Antônio Asevedo Nóbrega Instituto de Ciências Matemáticas e de Computação USP SCC-206 Introdução à Compilação 24 de abril de 2012 1 / 20 Sumário 1 Introdução

Leia mais

Algoritmos II prof. Daniel Oliveira

Algoritmos II prof. Daniel Oliveira Algoritmos II prof. Daniel Oliveira Revisar conceitos abordados na disciplina anterior Abordar conceitos vistos com a linguagem C# Variáveis e listas Expressões Estruturas de controle do tipo condicional

Leia mais

Compiladores - Especificando Sintaxe

Compiladores - Especificando Sintaxe Compiladores - Especificando Sintaxe Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/comp Análise Sintática A análise sintática agrupa os tokens em uma árvore sintática de acordo com a estrutura

Leia mais

FACULDADE LEÃO SAMPAIO

FACULDADE LEÃO SAMPAIO FACULDADE LEÃO SAMPAIO Paradigmas de Programação Curso de Análise e Desenvolvimento de Sistemas Turma: 309-5 Semestre - 2014.2 Paradigmas de Programação Prof. MSc. Isaac Bezerra de Oliveira. 1 PARADIGMAS

Leia mais

Controle de Fluxo Utilizando C

Controle de Fluxo Utilizando C Instituto Federal de Santa Catarina Câmpus Chapecó Ensino Médio Integrado em Informática Módulo III Unidade Curricular: Programação Estruturada Professora: Lara Popov Zambiasi Bazzi Oberderfer Controle

Leia mais

Sistemas de Tipos. Cristiano Damiani Vasconcellos.

Sistemas de Tipos. Cristiano Damiani Vasconcellos. 1 / 24 Sistemas de Tipos Cristiano Damiani Vasconcellos cristiano.vasconcellos@udesc.br Departamento de Ciência da Computação Universidade do Estado de Santa Catarina Tipos 2 / 24 Tipos: Coleção de valores

Leia mais

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO Prof.ª Danielle Casillo Diferentes computadores podem ter diferentes arquiteturas e os diversos tipos de linguagem de programação.

Leia mais

Programação de Computadores III

Programação de Computadores III Programação de Computadores III Introdução ao FORTRAN 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

Métodos Computacionais. Comandos Condicionais e de Repetição em C

Métodos Computacionais. Comandos Condicionais e de Repetição em C Métodos Computacionais Comandos Condicionais e de Repetição em C Tópicos da Aula Hoje vamos acrescentar comportamentos mais complexos a programas em C Comandos Condicionais if-else switch Comandos de Repetição

Leia mais

LINGUAGEM C: COMANDOS DE REPETIÇÃO

LINGUAGEM C: COMANDOS DE REPETIÇÃO LINGUAGEM C: COMANDOS DE REPETIÇÃO Prof. André Backes ESTRUTURAS DE REPETIÇÃO Uma estrutura de repetição permite que uma sequência de comandos seja executada repetidamente, enquanto determinadas condições

Leia mais

Algoritmos e Técnicas de Programação

Algoritmos e Técnicas de Programação Algoritmos e Técnicas de Programação Estrutura, Visualg e Variáveis filipe.raulino@ifrn.edu.br Programação Estruturada A programação estruturada (Top-Down) estabelece uma disciplina de desenvolvimento

Leia mais

Relatório de Projeto Especificação da Linguagem de Programação HELL

Relatório de Projeto Especificação da Linguagem de Programação HELL 2009.2 Relatório de Projeto Especificação da Linguagem de Programação HELL Relatório do projeto da Disciplina Paradigmas de Linguagens Computacionais (if686, que consiste na implementação de um interpretador

Leia mais

Aula 7 Estruturas de Repetição Cleverton Hentz

Aula 7 Estruturas de Repetição Cleverton Hentz Aula 7 Estruturas de Repetição Cleverton Hentz Sumário de Aula Estruturas de Repetições while do for 2 Introdução Nesta aula iremos introduzir outra tipo de estrutura importante na descrição de um algoritmos,

Leia mais

LÓGICA DE PROGRAMAÇÃO. PROFª. M.Sc. JULIANA H Q BENACCHIO

LÓGICA DE PROGRAMAÇÃO. PROFª. M.Sc. JULIANA H Q BENACCHIO LÓGICA DE PROGRAMAÇÃO PROFª. M.Sc. JULIANA H Q BENACCHIO Laços while aninhados Por exemplo, para criar uma estrutura de tópico 1. Capitulo 1.1 Secao 1.1.1 Subsecao 1.1.2 Subsecao 1.1.3 Subsecao 1.1.4 Subsecao

Leia mais

Linguagens de Programação

Linguagens de Programação Linguagens de Programação Fabio Mascarenhas - 2015.2 http://www.dcc.ufrj.br/~fabiom/lp Efeitos colaterais: referências e atribuição A partir de agora vamos começar a sair do mundo funcional e explorar

Leia mais

Programação de Computadores III

Programação de Computadores III Programação de Computadores III Introdução ao FORTRAN Professor Hugo de Oliveira Barbalho hbarbalho@ic.uff.br Material produzido pelo professor: Leandro Augusto Frata Fernandes (laffernandes@ic.uff.br)

Leia mais

Introdução à Algoritmos. Professora: Fabíola Gonçalves.

Introdução à Algoritmos. Professora: Fabíola Gonçalves. Introdução à Algoritmos Professora: Fabíola Gonçalves. AGENDA Algoritmos Comandos Estrutura de Algoritmos Constantes Variáveis Comentários COMANDOS Comandos de uma linguagem de programação podem estar:

Leia mais

MCG114 Programação de Computadores I. Comandos de condição 3/26/18. Comando if. Comando if. Até agora... Comandos de Condição! Comandos de Condição

MCG114 Programação de Computadores I. Comandos de condição 3/26/18. Comando if. Comando if. Até agora... Comandos de Condição! Comandos de Condição 3/26/18 MCG114 Programação de Computadores I Profa. Comandos de condição 20:32:09 1 2 Até agora... Todos os programas têm fluxo de execução único As instruções que serão executadas são sempre as mesmas,

Leia mais

Programação Estruturada e Orientada a Objetos

Programação Estruturada e Orientada a Objetos INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE Programação Estruturada e Orientada a Objetos Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@ifrn.edu.br

Leia mais

Programação Básica em Arduino Aula 2

Programação Básica em Arduino Aula 2 Programação Básica em Arduino Aula 2 Execução: Laboratório de Automação e Robótica Móvel Site: http://oficinaderobotica.ufsc.br/ Canal: Oficina de Robótica UFSC https://www.youtube.com/channel/uc4oojsp2fhfkdrnj0wd7iag

Leia mais

Linguagens de Programação

Linguagens de Programação Linguagens de Programação de Linguagens de Programação Bruno Lopes Bruno Lopes Linguagens de Programação 1 / 11 Propriedades desejáveis Legibilidade: A leitura do programa é facilmente compreendida? Redigibilidade:

Leia mais

Técnicas de análise de algoritmos

Técnicas de análise de algoritmos CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS Técnicas de análise de algoritmos Algoritmos e Estruturas de Dados I Natália Batista https://sites.google.com/site/nataliacefetmg/ nataliabatista@decom.cefetmg.br

Leia mais

Sumário. Ciência da Computação. Prof. Dr. Leandro Alves Neves. Aula 10. Algoritmos e Programação. Enquanto (Teste no início) Repeat (Teste no final)

Sumário. Ciência da Computação. Prof. Dr. Leandro Alves Neves. Aula 10. Algoritmos e Programação. Enquanto (Teste no início) Repeat (Teste no final) Algoritmos e Programação Informática II Ciência da Computação Prof. Dr. Leandro Alves Neves Aula 10 1 Sumário Estruturas de Controle de Fluxo q Repetição Enquanto (Teste no início) Repeat (Teste no final)

Leia mais

Estruturas de Dados. Módulo 4 Funções. 9/8/2005 (c) Dept. Informática - PUC-Rio 1

Estruturas de Dados. Módulo 4 Funções. 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Estruturas de Dados Módulo 4 Funções 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004)

Leia mais

Compiladores. Análise Léxica

Compiladores. Análise Léxica Compiladores Análise Léxica Cristiano Lehrer, M.Sc. Introdução (1/3) Análise léxica é a primeira fase do compilador. A função do analisador léxico, também denominado scanner, é: Fazer a leitura do programa

Leia mais

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica. Computação L2 Linguagem C++ ovsj@cin.ufpe.br Observação: Material Baseado na Disciplina Computação Eletrônica. Alfabeto São os símbolos ( caracteres ) permitidos na linguagem: Letras (maiúsculas e minúsculas);

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Programação Aula 08 Ponteiros Edirlei Soares de Lima Endereço de uma Variável Toda variável definida em um programa ocupa uma área de memória; A cada área de memória

Leia mais

Tratamento dos Erros de Sintaxe. Adriano Maranhão

Tratamento dos Erros de Sintaxe. Adriano Maranhão Tratamento dos Erros de Sintaxe Adriano Maranhão Introdução Se um compilador tivesse que processar somente programas corretos, seu projeto e sua implementação seriam grandemente simplificados. Mas os programadores

Leia mais

Programação Estruturada Aula VisualG

Programação Estruturada Aula VisualG Programação Estruturada Aula VisualG Prof. Flávio Barros flavioifma@gmail.com www.flaviobarros.com.br 2 CRIANDO ALGORITMO CRIANDO ALGORITMO Passos para construir Algoritmos Ler enunciado do problema, compreendendo-o

Leia mais

Programação: Vetores

Programação: Vetores Programação de Computadores I Aula 09 Programação: Vetores José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/62 Motivação Problema Faça um programa que leia

Leia mais

AULA 4 - FLUXOGRAMAS PARTE 1 Noções sobre a ferramenta Flowgorithm para construção de fluxogramas

AULA 4 - FLUXOGRAMAS PARTE 1 Noções sobre a ferramenta Flowgorithm para construção de fluxogramas AULA 4 - FLUXOGRAMAS PARTE 1 Noções sobre a ferramenta Flowgorithm para construção de fluxogramas 4.1 Objetivo: O objetivo desta aula é exercitar a lógica de programação através do desenvolvimento e simulação

Leia mais

Sintaxe Básica de Java Parte 2

Sintaxe Básica de Java Parte 2 Sintaxe Básica de Java Parte 2 Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Instruções Condicionais A instrução

Leia mais

Semântica Denotacional

Semântica Denotacional Semântica Denotacional Uma introdução ISBN 0-321-19362-8 Semântica denotacional é um método formal para definir a semântica de linguagens de programação. Interessa a: projetista de linguagens, quem escreve

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Programação Linguagens de Programação: sintaxe e semântica de linguagens de programação e conceitos de linguagens interpretadas e compiladas Engenharia da Computação Professor: Críston Pereira

Leia mais

Comandos de desvio de fluxo. Expressões lógicas.

Comandos de desvio de fluxo. Expressões lógicas. Programação de Computadores I Universidade Federal de Ouro Preto Departamento de Ciência da Computação Semana 03 Comandos de desvio de fluxo. Expressões lógicas. Material Didático Unificado. 1 Agenda Introdução;

Leia mais