Uma memória é uma função total de identificadores para valores inteiros: se x=y

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

Download "Uma memória é uma função total de identificadores para valores inteiros: se x=y"

Transcrição

1 Semântica denotacional é um estilo de semântica que visa dar modelos matemáticos para linguagens de programação (por isso ela também é chamada semântica matemática). Significados de programas são definidos como sendo elementos de alguma estrutura matemática apropriada. Um comando de IMP, por exemplo, dado um estado inicial, produz um estado final, ou não termina. Podemos então dizer que comandos de IMP denotam funções parciais entre estados que, por sua vez, são representados como funções de identificadores de variáveis para inteiros. Objetos Semânticos. Num primeiro momento é suficiente assumir que as estruturas matemáticas apropriadas para a semântica denotacional de IMP são simplesmente conjuntos. Representação da memória (1) Uma memória é uma função total de identificadores para valores inteiros: Σ Ident Z σ, σ, σ 1, σ 2... Ident Z σ[x n] é o mesmo que σ, exceto que mapeia x para n Notação: σ[x n](y) = n σ(y) se x=y caso contrário Um estado (ou uma memória) é um mapeamento pertencente ao conjunto de funções Ident Z e vamos assumir que essas funções são totais, ou seja que todo identificador possui um valor inteiro associado a ele na memória. Por conveniência, de agora em diante vamos nos referir ao conjunto Ident Z pelo nome Σ e usamos σ, σ... como meta-variáveis para elementos de Σ. Portanto, para IMP temos: Objetos Semânticos para IMP (2) Os significados de elementos de Aexp? funções totais pertencentes a Σ Z Os significados de elementos de Bexp? funções totais pertencentes a Σ B onde B = verdadeiro, falso} sourcefile 5 Rev: revision, 16 de Junho de 2014

2 Os significados de elementos de Com? funções parciais pertencentes a Σ Σ Exercício 1.1 Explique porque os significados de expressões aritméticas da linguagem IMP são (i) funções pertencentes a Σ Z e não simplesmente elementos de Z e (ii) porque são funções totais Exercício 1.2 Explique porque os significados de expressões booleans da linguagem IMP são (i) funções pertencentes a Σ B e não simplesmente elementos de B e (ii) porque são funções totais. Exercício 1.3 Explique porque os significados de comandos da linguagem IMP são funções pertencentes a Σ Σ e (ii) porque são funções parciais. Exercício 1.4 Como podemos transformar as funções que são significados de comandos da linguagem IMP em funções totais pertencentes a Σ Σ Funções auxiliares. As seguintes funções serão usadas na definição da semântica denotacional de IMP: +,,, =,,, e. Observe, que esses símbolos são sobrecarregados. O contexto de uso dirá se eles são operadores (sintáticos) da linguagem IMP ou se são os nomes das funções matemáticas. Funções Semânticas Funções semânticas definem o mapeamento entre a sintaxe é a semântica. Em geral, temos uma função semântica para cada categoria sintática. Os nomes das funções semânticas são tradicionais em semântica denotacional. Funções Semânticas (3) A semântica denotacional de IMP é dada através de três funções semânticas Para a Aexp, b Bexp e c Com temos: E, para σ Σ: A[[ ]] Aexp (Σ Z) B[[ ]] Bexp (Σ B) C[[ ]] Com (Σ Σ) A[[a]] Σ Z B[[b]] Σ B C[[c]] Σ Σ A[[a]]σ Z B[[b]]σ B C[[c]]σ Σ caso C[[c]]σ for definido 6

3 1.1 Tentativa de definição atráves da formulação de propriedades 1.1 Tentativa de definição atráves da formulação de propriedades Equações Semânticas A definição das funções semânticas, e portanto a definição do significado matemático de construções de IMP, consiste de um conjunto de equações semânticas. Definições (4) As equações semânticas podem ser escritas na forma ou, usando a notação lambda, na forma A[[a]]σ =... B[[b]]σ =... C[[c]]σ =... A[[a]] = λσ Σ.... B[[b]] = λσ Σ.... C[[c]] = λσ Σ.... Tanto A[[a]]σ =... como A[[a]] = λσ Σ.... possuem a mesma leitura: a denotação da expressão a é a função que, dada uma memória σ... a denotação da expressão b é a função que, dada uma memória σ... a denotação do comando c é a função que, dada uma memória σ... Equações Semânticas para Expressões Aritméticas (5) O significado de uma expressão aritmética é uma função em Σ Z definida como segue: A[[n]]σ = n (EqN) A[[x]]σ = σ(x) (EqId) A[[a 1 +a 2 ]]σ = A[[a 1 ]]σ + A[[a 2 ]]σ A[[a 1 -a 2 ]]σ = A[[a 1 ]]σ A[[a 2 ]]σ A[[a 1 *a 2 ]]σ = A[[a 1 ]]σ A[[a 2 ]]σ (Eq+) (Eq-) (Eq*) Exercício: A[[x + (5 * 4)]]σ = A[[x]]σ + A[[5 4] σ (Eq+) = σ(x) + A[[5 4] σ (EqId) = σ(x) + A[[5] σ A[[4] σ (Eq ) = σ(x) + (5 4) (EqN, EqN) = σ(x) + 20 Note que a definição do significado de expressões booleanas faz uso da função de atribuição de significado para expressões aritméticas: 7

4 Equações Semânticas para Expressões Boolenas (6) B[[t]]σ = t (EqB) B[[a 1 =a 2 ]]σ = A[[a 1 ]]σ = A[[a 2 ]]σ (Eq=) B[[a 1 <a 2 ]]σ = A[[a 1 ]]σ < A[[a 2 ]]σ (Eq<) B[[ b]]σ = B[[b]]σ (EqNeg) B[[b 1 b 2 ]]σ = B[[b 1 ]]σ B[[b 2 ]]σ (EqAnd) B[[b 1 b 2 ]]σ = B[[b 1 ]]σ B[[b 2 ]]σ (EqOr) Segue abaixo a definição da denotação de comandos. O significado do comando while exige cuidados e será visto mais adiante: Equações Semânticas para Comandos (7) O significado de um comando é uma função em Σ Σ definida como segue C[[skip]]σ = σ (EqSkp) C[[x:=a]]σ = σ[x A[[a]]σ] (EqAtr) C[[c 1 ;c 2 ]]σ = C[[c 2 ]](C[[c 1 ]]σ) (EqSeq) C[[if b then c 1 else c 2 ]]σ = se B[[b]]σ então C[[c 1 ]]σ senão C[[c 2 ]]σ (EqIf) C[[while b do c]] =... (EqWh) Segue abaixo um exemplo no qual é calculado o significado matemático de um comando utilizando as equações acima: 8

5 1.1 Tentativa de definição atráves da formulação de propriedades Exemplo (8) C[[x:=1;(skip;y:=2)]]σ = C[[skip;y:=2]] (C[[x:=1]]σ) (EqSeq) = C[[skip;y:=2]] σ[x A[[1]]σ] (EqAtr) = C[[skip;y:=2]] σ[x 1] (EqN) = C[[y:=2]] (C[[skip]]σ[x 1]) (EqSeq) = C[[y:=2]] σ[x 1] (EqSkp) = σ[x 1][y A[[2]]σ[x 1]] (EqAtr) = σ[x 1][y 2] (EqN) Semântica com funções totais. O tratamento formal fica mais simples se lidar somente com funções totais. Podemos adicionar o elemento (lido bottom, ou indefinido ) ao conjunto Σ para representar indefinição. Escrevemos Σ para nomear o conjunto Σ }. Ao invés de dizermos que os significados de comandos pertencem ao conjunto de funções parciais de Σ para Σ dizemos que pertencem ao conjunto de funções totais de Σ para Σ. E, finalmente, como o comando c 1 em c 1 ;c 2 pode não terminar, dizemos que os significados de comandos pertencem ao conjunto de funções totais Σ Σ. Essas funções são estritas, ou seja se aplicadas a produzem. Σ = Σ } representa a indefinição Lifting - trabalhando com funções totais (9) C[[c]] é agora função total em Σ Σ Exemplo : C[[(while true do c); c 2 ]]σ = C[[c 2 ]](C[[while true do c]]σ) = C[[c 2 ]] = Significado do Comando while Como fica a equação para o comando while? Podemos começar lembrando que o significado do comando while b do c é equivalente ao significado do comando Logo if b then (c;while b do c) else skip. 9

6 Significado do comando while? (10) C[[while b do c]]σ = C[[if b then (c;while b do c) else skip]]σ = se B[[b]]σ então C[[c;while b do c]]σ senão C[[skip]]σ (EqIf ) = se B[[b]]σ então C[[while b do c]](c[[c]]σ) senão C[[skip]]σ (EqSeq) = se B[[b]]σ então C[[while b do c]](c[[c]]σ) senão σ (EqSkp) Ou seja: [[while b do c]]σ = se [[b]]σ então [[while b do c]]([[c]]σ) senão σ ou, usando W para [[while b do c]]: W σ = se [[b]]σ se W([[c]]σ) senão σ Contudo a equação C[[while b do c]]σ = se B[[b]]σ então C[[while b do c]](c[[c]]σ) senão σ (EqWhV1 ) não é suficiente para definir o significado de comandos while, e a razão é simples: ao contrário das demais equações para a linguagem que definem explicitamente uma única função de Σ Σ dado um comando está equação (como veremos nos exercícios abaixo), dado um comando while específico, pode ter várias soluções. O significado do comando é, com certeza, uma dessas soluções, mas a equação acima, por si só, não indica qual delas. Equações e Definições - Revisão (11) Dado um universo U, uma equação define um elemento de U quando ela possui solução em U, e a solução é única Se uma equação possui mais de uma solução, ela não define um elemento de U Uma propriedade adicional pode ser adotada para apontar uma das soluções como sendo o elemento definido Exemplos: Equações e Definições - Revisão (12) x = x + 1 não possui solução, seja lá qual for o universo 10

7 1.1 Tentativa de definição atráves da formulação de propriedades x = 3x 4 possui o natural 2 como uma única solução em N, logo essa equação define x como sendo o natural 2 2x 2 = 8 possui duas soluções em R: 2 e 2, logo ela por si só não define nenhum número real Exercício 1.5 Considere o comando while x 0 do x:=x-2 Obtenha a equação associada a esse comando No que segue W [[while (x 0) do x := x 2]]: Wσ = se [[x 0]]σ então W([[x := x 2]]σ) senão σ (EqWhV1) = se [[x]]σ [[0]]σ então W([[x := x 2]]σ) senão σ (EqDif) = se σ(x) [[0]]σ então W([[x := x 2]]σ) senão σ (EqId) = se σ(x) 0 então W([[x := x 2]]σ) senão σ (EqN) = se σ(x) 0 então W(σ[x [[x 2]]σ]) senão σ (EqAtr) = se σ(x) 0 então W(σ[x [[x]]σ [[2]]σ]) senão σ (EqSub) = se σ(x) 0 então W(σ[x σ(x) [[2]]σ]) senão σ (EqId) = se σ(x) 0 então W(σ[x σ(x) 2]) senão σ (EqN) Usando σ σ[x σ(x) 2] a equação fica: Wσ = se σ(x) 0 então Wσ senão σ Verifique se as funções g 1 e g 2 definidas abaixo são soluções dessa equação: g 1 σ = g 2 σ = onde σ 1 e σ 2 podem ser estados quaisquer ou σ[x 0] se σ(x) é par e σ(x) 0 caso contrário σ[x 0] se σ(x) é par e σ(x) 0 σ 1 se σ(x) é par e σ(x) < 0 se σ(x) é ímpar σ 2 Verificação se g 1 é solução da equação acima: 11

8 g 1 σ = se σ(x) 0 então g 1 σ senão σ = se σ(x) 0 então (se par(σ (x)) σ (x) 0 então σ [x 0] senão ) senão σ = se σ(x) 0 então (se par(σ(x) 2) σ (x) 0 então σ [x 0] senão ) senão σ = se σ(x) 0 então (se par(σ(x)) σ (x) 2 então σ [x 0] senão ) senão σ = se σ(x) 0 então (se par(σ(x)) σ(x) 2 0 então σ[x 0] senão ) senão σ = se σ(x) 0 então (se par(σ(x)) σ(x) 2 então σ[x 0] senão ) senão σ = se σ(x) 0 então (se par(σ(x)) σ(x) 2 então σ[x 0] senão ) senão σ[x 0] = se par(σ(x)) σ(x) 0 então σ[x 0] senão = g 1 σ Verificação se g 2 é solução da equação acima: g 2 σ = se σ(x) 0 então g 2 σ senão σ = se σ(x) 0 entao (se par(σ (x)) σ (x) 0 entao σ [x 0] senao se par(σ (x)) σ (x) < 0 entao σ 2 senao σ 3 ) senao σ = se σ(x) 0 entao (se par(σ(x)) σ(x) 2 entao σ[x 0] senao se par(σ(x)) σ(x) < 2 entao σ 2 senao σ 3 ) senao σ[x 0] = se par(σ(x)) σ(x) 0 entao σ[x 0] senao se par(σ(x)) σ(x) < 0 entao σ 2 senao σ 3 ) = g 2 σ Qual das duas funções, g 1 ou g 2 deve ser o significado do comando while acima? Exercício 1.6 Considere o comando while true do skip. Escreva a equação associada ao comando e explique por que todas as funções em Σ Σ são soluções para esta equação. Qual dessas funções é o significado deste comando? Exercício 1.7 Considere o comando while (x=0) do skip. Escreva a equação correspondente ao comando while acima; 12

9 1.2 Voltando a tentativa de definição pela formulação de propriedades Verifique se as funções g 1 e g 2 abaixo são soluções desta equação se σ(x) 0 g 1 σ = σ se σ(x) = 0 σ 3 se σ(x) 0 g 2 σ = σ se σ(x) = 0 Qual dessas funções é o significado do comando? Certifique-se de que a função g definida abaixo não é solução da equação acima gσ = para todo σ Σ Exercício 1.8 Considere o comando while (x=0) do x:=x-1. Escreva a equação associada a esse comando. Verifique se funções definidas abaixo são soluções dessa equação: g 1 σ = para todo σ Σ σ[x 0] se σx 0 g 2 σ = se σx < 0 σ[x 0] se σx 0 g 3 σ = σ se σx < 0 g 4 σ = σ[x 0] g 5 σ = σ para todo σ Σ para todo σ Σ Qual dessa funções é o significado do comando while acima? 1.2 Voltando a tentativa de definição pela formulação de propriedades Observe, pelos exercícios da seção 1.1, que há uma relação de ordem entre as soluções de uma equação baseada na quantidade de informação que cada uma expressa. Formalmente podemos definir essa relação de ordem da seguinte maneira: Definição de menor (13) Considere o seguinte relação ordem entre funções deσ Σ : f g σ fσ = fσ = gσ (1.1) Nessa ordem uma função com menos informação é dita menor. 13

10 ou seja, quando f é definida, g também é definida e produz o mesmo resultado do que f. Em todos exemplos acima, a solução correspondente ao significado do comando sempre foi a menor solução (dada a relação de ordem acima). Formulamos então a seguinte hipótese: Hipótese - o significado é a menor solução (14) o significado de um comando while é a menor solução da equação C[[while b do c]]σ = se B[[b]]σ então C[[while b do c]](c[[c]]σ) senão σ Exercício 1.9 Ordene as soluções das equações dos exercícios anteiores utilizando a definição de ordem dada acima. 1.3 Equações de Ponto Fixo Até agora, usando somente a nossa intuição e alguns exemplos, levantamos a hipótese de que o significado de comando while deve ser a menor solução da equação para o comando while associada associada. Mas como obter/calcular essa menor solução? Para começar vai ser necessário colocar a equação (EqWhV1) no formato geral de equação de ponto fixo. Equações de ponto fixo são aquelas que podem ser colocadas no seguinte formato geral x = f(x). Uma solução para uma equação de ponto fixo x = f(x) é dita ponto fixo de f. A equação Equação no formato de equação de ponto fixo (15) C[[while b do c]]σ = se B[[b]]σ então C[[while b do c]](c[[c]]σ) senão σ no formato geral de equação de ponto fixo, fica: [while b do c] = F ([while b do c]) onde F (Σ Σ ) (Σ Σ ) é definido como: F g = λσ Σ. se [[b]σ então g([c]σ) senão σ Sendo assim a nossa hipótese a cerca do significado de qualquer comando while pode ser reescrita nas seguintes formas equivalentes: Hipótese - o significado é a menor solução (II) (16) O significado de um comando while é a menor solução da equação abaixo, ou ainda O significado de um comando while é o menor ponto fixo de F da equação abaixo 14

11 1.4 Calculando menor ponto fixo [while b c] = F ([while b c]) onde: F (Σ Σ ) (Σ Σ ) é definido como: F g = λσ Σ. se [[b]σ então g([c]σ) senão σ Outra forma equivalente de formular a nossa hipótese faz uso da seguinte notação empregada para se referir ao menor ponto fixo de F : fix F ou ainda, µ F [while b c] = fix F Hipótese (III) (17) onde: F (Σ Σ ) (Σ Σ ) é definido como: F g = λσ Σ. se [[b]σ então g([c]σ) senão σ Exercício 1.10 Reescreva as equações dos comandos while dos exemplos/exercícios das seções anteriores colocando-as no formato geral de equação de ponto fixo. 1.4 Calculando menor ponto fixo Para obter o menor ponto fixo de F começamos aplicando F a função totalmente indefinida de Σ Σ e assim aplicamos F sucessivamente a cada resultado obtido anteriormente. A idéia é que, acada aplicação de F obtemos uma função de Σ Σ com mais informação e, eventualmente, obtemos uma função que é ponto fixo de F (ou seja que é o significado do comando while). Exemplo 1 (18) Considere while x 0 do x:=x-2. O funcional F associado a esse comando é: F g = λσ Σ. se σ(x) 0 então gσ[x σ(x) 2] senão σ Usando σ no lugar de σ[x σ(x) 2] temos: F g = λσ Σ. se σ(x) 0 então gσ senão σ Calculando F 0 ( ), F 1 ( ), F 2 ( ),...: Exemplo 1 (19) 15

12 F 0 ( ) = def F 1 ( ) = F ( ) = λσ Σ. se σ(x) 0 então (σ ) senão σ = λ.σ Σ. se σ(x) 0 então Σ senão σ[x 0] = λ.σ Σ. se σ(x) = 0 então σ[x 0] senão Σ F 2 ( ) = F (F 1 ( )) = λσ Σ. se σ(x) 0 então (F 1 )σ senão σ = λσ Σ. se σ(x) 0 então (se σ (x) = 0 então σ [x 0] senão Σ ) senão σ = λσ Σ. se σ(x) 0 então (se σ(x) = 2 então σ[x 0] senão Σ ) senão σ = λσ Σ. se σ(x) = 0 σ(x) = 2 então σ[x 0] senão Σ F 3 ( ) = F (F 2 ( )) =... = λσ Σ. se σ(x) = 0 σ(x) = 2 σ(x) = 4 então σ[x 0] senão Σ... Exemplo 1 (20) Com cada aplicação de F a informação cresce e temos a seguinte cadeia: F 0 ( ) F 1 ( ) F 2 ( ) F 3 ( ) Intuitivamente, no limite da cadeia acima temos σ[x 0] se par(σ(x)) x 0 g = λσ Σ. caso contrário representa a função que é ponto fixo de F (verifique isso) corresponde ao significado do comando while Exemplo 2 (21) 16

13 1.4 Calculando menor ponto fixo Considere while x>0 do x:=x-1. O funcional F associado a esse comando é o seguinte: F g = λσ Σ. se σ(x) > 0 então gσ[x σ(x) 1] senão σ Usando σ para σ[x σ(x) 1] temos: F g = λσ Σ. se σ(x) > 0 então gσ senão σ Exemplo 2 (22) F 0 ( ) = def F 1 ( ) = F ( ) = λσ Σ. se σ(x) > 0 então σ senão σ = λ.σ Σ. se σ(x) > 0 então Σ senão σ F 2 ( ) = F (F 1 ( )) = λσ Σ. se σ(x) > 0 então (F 1 )σ senão σ... σ se σ(x) 0 = λσ Σ. σ[x 0] se σ(x) = 1 Σ se σ(x) > 1 σ se σ(x) 0 F 3 ( ) = F (F 2 ( )) = = λσ Σ. σ[x 0] se σ(x) = 1 σ(x) = 2 Σ se σ(x) > 2 σ se σ(x) 0 F 4 ( ) = F (F 3 ( )) = = λσ Σ. σ[x 0] se σ(x) = 1 σ(x) = 2 σ(x) = 3 Σ se σ(x) > 3 Exemplo 2 (23) Com cada aplicação de F a informação cresce: F 0 ( ) F 1 ( ) F 2 ( ) F 3 ( ) 17

14 Intuitivamente, no limite da cadeia acima, temos a seguinte função: σ se σ(x) 0 λσ Σ. σ[x 0] se σ(x) > 0 representa a função que é ponto fixo de F (verifique isso) corresponde ao significado do comando while Exemplo 3 (24) Considere o comando while x>0 do skip. O funcional F associado a esse comando é o seguinte Calculando F 0 ( ), F 1 ( ), F 2 ( ),... F g = λσ Σ. se σx > 0 então gσ senão σ F 0 ( ) = def F 1 ( ) = F ( ) = λσ Σ. se σ(x) > 0 então (σ) senão σ = λσ Σ. se σ(x) > 0 então Σ senão σ F 2 ( ) = F (F 1 ( )) = λσ Σ. se σ(x) > 0 então (F 1 ( ))(σ) senão σ = λσ Σ. se σ(x) > 0 então (se σ(x) > 0 então Σ senão σ) senão σ = λσ Σ. se σ(x) > 0 então Σ senão σ F 3 ( ) = F (F 2 ( )) =... = λσ Σ. se σ(x) > 0 então Σ senão σ F 4 ( ) = F (F 3 ( )) =... = λσ Σ. se σ(x) > 0 então Σ senão σ... 18

15 1.4 Calculando menor ponto fixo Exemplo 3 - continuação (25) Neste caso obtemos um ponto fixo para F já na terceira aplicação. Observe que a função λσ Σ. se σ(x) > 0 então Σ senão σ obtida dessa forma : é o menor dentre os pontos fixos de F corresponde ao significado do comando while x>0 do skip Tendo em vista os exemplos anteriores podemos refinar a nossa hipótese sobre o significado do comando while para C[[while b do c]] = limite superior de cadeia F 0 ( ) F 1 ( ) F 2 ( ) F 3 ( ) Observação: os termos limite superior e cadeia serão precisamente definidos mais adiante. Veremos também que uma cadeia pode ter mais do que um limite superior e que estamos interessados no menor limite superior. Logo C[[while b do c]] = menor limite superior de cadeia F 0 ( ) F 1 ( ) F 2 ( ) F 3 ( ) De agora em diante vamos escrever F n ( ) n 0 para menor limite superior de cadeia F 0 ( ) F 1 ( ) F 2 ( ) F 3 ( ). reescrevemos a hipótese acima para Assim C[[while b do c]] = F n ( ) n 0 Exercício 1.11 Calcule o significado dos seguintes comandos: while x 0 do x:= x - 1 while (x = 0) do x:=x - 1 while true do skip 19

Uma memória é uma função total de identificadores para valores inteiros: se x=y σ(y) caso contrário

Uma memória é uma função total de identificadores para valores inteiros: se x=y σ(y) caso contrário 4 Semântica Denotacional 4 Semântica Denotacional Semântica denotacional é um estilo de semântica que visa dar modelos matemáticos para linguagens de programação (por isso ela também é chamada semântica

Leia mais

Nelma Moreira. Departamento de Ciência de Computadores da FCUP. Aula 12

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

Leia mais

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

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

Como podemos provar que este programa termina com x = 100. Correr o programa seguindo a sua semântica operacional é uma opção.

Como podemos provar que este programa termina com x = 100. Correr o programa seguindo a sua semântica operacional é uma opção. Verificação Automática de Programas Consideremos o seguinte programa para calcular 100 m=1 m: x:=0; y:=1; (while y!=101 do x:=x+y;y:=y+1) Como podemos provar que este programa termina com x = 100 m=1 m.

Leia mais

INE Programação Funcional - Transparência Resolução de alguns problemas de redução:

INE Programação Funcional - Transparência Resolução de alguns problemas de redução: INE 5363 - Programação Funcional - Transparência 47 2.4.4. Resolução de alguns problemas de redução: 1. Redução direta: (λx.x(xy))n-> N(Ny) aqui N é substituído nos dois x, pois x está livre na subespressã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 Introdução Quais das expressões abaixo têm o mesmo significado? (vector-ref a 42) Introdução Quais das expressões

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

Aula prática 14. Expressão Lambda

Aula prática 14. Expressão Lambda Programação Funcional UFOP DECOM 2014.1 Aula prática 14 Expressão Lambda Sumário Resumo Expressões lambdas são funções anônimas que podem ser usadas como qualquer outro valor de primeira classe. Nesta

Leia mais

Algoritmos. Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi

Algoritmos. Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi Algoritmos Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi Conceitos Linhas de Código de um Algoritmo ou Programa escrita do programa linha a linha, ou seja, a sintaxe do programa, podendo-se

Leia mais

Expressões Lambda. Programação Funcional. Capítulo 7. José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto

Expressões Lambda. Programação Funcional. Capítulo 7. José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto Programação Funcional Capítulo 7 Expressões Lambda José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2012.1 1/64 1 Valores de primeira classe 2 Expressão lambda 3 Aplicação

Leia mais

Introdução à Programação / Programação I

Introdução à Programação / Programação I Introdução à Programação / Programação I Aula 3: Primeiros Programas Rita P. Ribeiro 2018/2019 Departamento de Ciência de Computadores Nesta aula 1. Tipos básicos 2. Variáveis e atribuições 3. Programas

Leia mais

Programação I Aula 3 Primeiros programas

Programação I Aula 3 Primeiros programas Programação I Aula 3 Primeiros programas Pedro Vasconcelos DCC/FCUP 2018 Pedro Vasconcelos (DCC/FCUP) Programação I Aula 3 Primeiros programas 2018 1 / 23 Nesta aula... 1 Tipos básicos 2 Variáveis e atribuições

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

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

Introdução à Programação Aula 3 Primeiros programas

Introdução à Programação Aula 3 Primeiros programas Introdução à Programação Aula 3 Primeiros programas Pedro Vasconcelos DCC/FCUP 2015 Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 3 Primeiros programas 2015 1 / 23 Nesta aula... 1 Tipos básicos

Leia mais

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95 PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95 Exercícios de revisão Lista 01: a) Monte um mapa conceitual indicando as relações entre os seguintes conceitos, no contexto do assunto visto em aula:

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

Intuição da sintaxe de L2 (35)

Intuição da sintaxe de L2 (35) 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,

Leia mais

Semântica Axiomática

Semântica Axiomática Semântica Axiomática O estilo axiomático presta-se particularmente à prova e raciocínio sobre propriedades dos programas, e à sua verificação, i.e. à prova de correcção dos programas face às suas especificações.

Leia mais

Elementos básicos das linguagens de programação

Elementos básicos das linguagens de programação Elementos básicos das linguagens de programação Objetivos: Apresentar os últimos elementos básicos das linguagens de programação Elementos básicos já estudados Entrada (read, readln) Saída (write, writeln)

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

Programação Estruturada Prof. Rodrigo Hausen VAMOS USAR O LINUX. SE TIVER ENTRADO NO WINDOWS, REINICIE O COMPUTADOR.

Programação Estruturada Prof. Rodrigo Hausen   VAMOS USAR O LINUX. SE TIVER ENTRADO NO WINDOWS, REINICIE O COMPUTADOR. Programação Estruturada Prof. Rodrigo Hausen http://progest.compscinet.org Expressões e Funções VAMOS USAR O LINUX. SE TIVER ENTRADO NO WINDOWS, REINICIE O COMPUTADOR. 1 TIPOS PRIMITIVOS EM C Numéricos:

Leia mais

Compiladores - Análise Léxica

Compiladores - Análise Léxica Compiladores - Análise Léxica Fabio Mascarenhas 2018.1 http://www.dcc.ufrj.br/~fabiom/comp Introdução Primeiro passo do front-end: reconhecer tokens Tokens são as palavras do programa O analisador léxico

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

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

Compiladores - Análise Léxica

Compiladores - Análise Léxica Compiladores - Análise Léxica Fabio Mascarenhas 2017.2 http://www.dcc.ufrj.br/~fabiom/comp Introdução Primeiro passo do front-end: reconhecer tokens Tokens são as palavras do programa O analisador léxico

Leia mais

Programação II. Aula 3

Programação II. Aula 3 Programação II Aula 3 Algoritmo Algoritmo: REVISÃO qualquer procedimento bem definido que toma algum valor como entrada e produz algum valor como saída. Técnica de refinamentos sucessivos: dividir um processo

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

08/05/2012. Tipos de dados. Tipos de dados. Elementos Básicos. Tipos de dados. Elementos Básicos Tipos de dados. Dados e seus tipos:

08/05/2012. Tipos de dados. Tipos de dados. Elementos Básicos. Tipos de dados. Elementos Básicos Tipos de dados. Dados e seus tipos: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DA PARAÍBA CAMPUS CAMPINA GRANDE 1 2 Elementos Básicos Tipos de dados Dados e seus tipos: Computadores lidam com diversos tipos de dados: numéricos,

Leia mais

Linguagens de Programação Aula 14

Linguagens de Programação Aula 14 Linguagens de Programação Aula 14 Celso Olivete Júnior olivete@fct.unesp.br Na aula passada Linguagem Haskell Funções Tipos básicos Expressões 2 Na aula de hoje Linguagem Haskell Listas 3 Listas e Tuplas

Leia mais

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó

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

Paradigmas de Linguagens de Programação. Expressões e Instruções de Atribuição

Paradigmas de Linguagens de Programação. Expressões e Instruções de Atribuição Expressões e Instruções de Atribuição Cristiano Lehrer Introdução Expressões são o meio fundamental de especificar computações em uma linguagem de programação: Familiarização com as ordens de avaliação

Leia mais

Programação de Computadores

Programação de Computadores Programação de Computadores Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo Tipos de variáveis comuns em linguagens em geral Identificadores

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

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

A palavra ALGORITMO teve origem com um Matemático Persa, al. Khawarizmi. O seu trabalho mais famoso foi Al-jabr walmuquabalah,

A palavra ALGORITMO teve origem com um Matemático Persa, al. Khawarizmi. O seu trabalho mais famoso foi Al-jabr walmuquabalah, A palavra ALGORITMO teve origem com um Matemático Persa, al Khawarizmi. O seu trabalho mais famoso foi Al-jabr walmuquabalah, ou a ciência das Equações que, em última análise suscitaram o desenvolvimento

Leia mais

LINGUAGEM C: VARIÁVEIS E EXPRESSÕES

LINGUAGEM C: VARIÁVEIS E EXPRESSÕES LINGUAGEM C: VARIÁVEIS E EXPRESSÕES 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

Leia mais

Introdução ao SciLab. SciLab O que é? Onde obter o programa:

Introdução ao SciLab. SciLab O que é? Onde obter o programa: Introdução ao SciLab SciLab O que é? SciLab é uma plataforma interativa para computação numérica composta de uma rica coleção de algoritmos numéricos e de uma linguagem de programação associada. CN04 2010

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

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

ESTRUTURA CONDICIONAL E SELEÇÃO

ESTRUTURA CONDICIONAL E SELEÇÃO Algoritmos e Estruturas de Dados 1 Prof. Eduardo 1 ESTRUTURA CONDICIONAL E SELEÇÃO 1 - ESTRUTURA CONDICIONAL (ESTRUTURAS DE CONTROLE OU DECISÃO) Até o momento da disciplina vimos algoritmos e programas

Leia mais

Matemática Discreta. Fundamentos e Conceitos da Teoria dos Números. Universidade do Estado de Mato Grosso. 4 de setembro de 2017

Matemática Discreta. Fundamentos e Conceitos da Teoria dos Números. Universidade do Estado de Mato Grosso. 4 de setembro de 2017 Matemática Discreta Fundamentos e Conceitos da Teoria dos Números Professora Dr. a Donizete Ritter Universidade do Estado de Mato Grosso 4 de setembro de 2017 Ritter, D. (UNEMAT) Matemática Discreta 4

Leia mais

Juliana Kaizer Vizzotto. Universidade Federal de Santa Maria. Disciplina de Teoria da Computação

Juliana Kaizer Vizzotto. Universidade Federal de Santa Maria. Disciplina de Teoria da Computação Universidade Federal de Santa Maria Disciplina de Teoria da Computação Quais são as capacidades e limitações fundamentais dos computadores? Funções Computáveis Algoritmo: descrição finitade uma computação

Leia mais

Variáveis e Entrada de Dados Marco André Lopes Mendes marcoandre.googlepages.

Variáveis e Entrada de Dados Marco André Lopes Mendes  marcoandre.googlepages. Variáveis e Entrada de Dados Marco André Lopes Mendes marcoandre@ifc-araquari.edu.br marcoandre@gmail.com marcoandre.googlepages.com Algoritmos é a base Primeiro programa Este programa possui apenas uma

Leia mais

DCC008 - Cálculo Numérico

DCC008 - Cálculo Numérico DCC008 - Cálculo Numérico Polinômios de Taylor Bernardo Martins Rocha Departamento de Ciência da Computação Universidade Federal de Juiz de Fora bernardomartinsrocha@ice.ufjf.br Conteúdo Introdução Definição

Leia mais

Folha 4.2 Análise sintática ascendente

Folha 4.2 Análise sintática ascendente Folha 4.2 Análise sintática ascendente 1. Considere a gramática G = (S, T, P, S) que representa o cabeçalho de métodos na linguagem Java (sem os modificadores de acesso), onde T = {S, Type, Param, Exception,

Leia mais

Teoria da Computação e Algoritmos. Introdução à Linguagem Pascal. ALGORITMO <Nome do algoritmo>; <definições>; INÍCIO <Comandos>; FIM.

Teoria da Computação e Algoritmos. Introdução à Linguagem Pascal. ALGORITMO <Nome do algoritmo>; <definições>; INÍCIO <Comandos>; FIM. Teoria da Computação e Algoritmos Introdução à Linguagem Pascal 1 Estrutura de um programa INÍCIO FIM. PROGRAM END.

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

Aula Teórica 03. Comandos Condicionais (Decisão)

Aula Teórica 03. Comandos Condicionais (Decisão) Aula Teórica 03 Comandos Condicionais (Decisão) Semana 03 Material Didático Proposto 1 Conteúdos da Aula Programação Estruturada Comandos Condicionais (Decisão) Operadores Relacionais 2 Programação Estruturada

Leia mais

15/03/2018. Professor Ariel da Silva Dias Aspectos sintáticos e semânticos básicos de linguagens de programação

15/03/2018. Professor Ariel da Silva Dias Aspectos sintáticos e semânticos básicos de linguagens de programação Professor Ariel da Silva Dias Aspectos sintáticos e semânticos básicos de linguagens de programação Conjunto de regras que definem a forma da linguagem; Como as sentenças podem ser formadas como sequências

Leia mais

Programação de Computadores

Programação de Computadores Programação de Computadores Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo Alguns Conceitos sobre Linguagens Conceito de Algoritmo Pseudocódigo

Leia mais

6) ESTRUTURA DE UM PROGRAMA

6) ESTRUTURA DE UM PROGRAMA Página 1 de 16 6) ESTRUTURA DE UM PROGRAMA = = program ; = uses

Leia mais

Números Inteiros Algoritmo da Divisão e suas Aplicações

Números Inteiros Algoritmo da Divisão e suas Aplicações Números Inteiros Algoritmo da Divisão e suas Aplicações Diferentemente dos números reais (R), o conjunto dos inteiros (Z) não é fechado para a divisão. Esse não-fechamento faz com que a divisão entre inteiros

Leia mais

Linguagens Formais e Problemas de Decisão

Linguagens Formais e Problemas de Decisão Linguagens Formais e Problemas de Decisão Mário S. Alvim (msalvim@dcc.ufmg.br) Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02) Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Formais e Problemas

Leia mais

Universidade Federal de Viçosa Centro de Ciências Exatas Departamento de Matemática

Universidade Federal de Viçosa Centro de Ciências Exatas Departamento de Matemática Universidade Federal de Viçosa Centro de Ciências Exatas Departamento de Matemática a Lista MAT 146 - Cálculo I 018/I DERIVADAS Para este tópico considera-se uma função f : D R R, definida num domínio

Leia mais

2.2.5 EXPRESSÕES - Regras para o cálculo de valores

2.2.5 EXPRESSÕES - Regras para o cálculo de valores Métodos de Programação I Departamento de Matemática, FCTUC 30 2.2.5 EXPRESSÕES - Regras para o cálculo de valores As expressões fornecidas ao computador, quer tenham variáveis, constantes ou apenas literais,

Leia mais

Introdução a Programação

Introdução a Programação Introdução a Programação Prof. André Gustavo Duarte de Almeida andre.almeida@ifrn.edu.br docente.ifrn.edu.br/andrealmeida Aula 02 Primeiro Programa Roteiro Primeiros Passos Variáveis Expressões Comandos

Leia mais

Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação Matemática Discreta para Ciência da Computação P. Blauth Menezes blauth@inf.ufrgs.br Departamento de Informática Teórica Instituto de Informática / UFRGS Matemática Discreta para Ciência da Computação

Leia mais

SEMÂNTICA 02/09/2013. Conceitos de LPs - Semântica

SEMÂNTICA 02/09/2013. Conceitos de LPs - Semântica UNIVERSIDADE ESTADUAL DE SANTA CRUZ CURSO: CIÊNCIA DA COMPUTAÇÃO DISCIPLINA: CONCEITOS DE LINGUAGENS DE PROGRAMAÇÃO DOCENTE: ROGÉRIO VARGAS DISCENTE: MARIANNA NOVAES Semântica SEMÂNTICA Semântica é a área

Leia mais

Linguagens de Programação. Marco A L Barbosa

Linguagens de Programação. Marco A L Barbosa Expressões e sentença de atribuição Linguagens de Programação Marco A L Barbosa cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional. http://github.com/malbarbo/na-lp-copl

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

LFA. Provas formais; Indução; Sintaxe e Semântica Teoria dos Conjuntos

LFA. Provas formais; Indução; Sintaxe e Semântica Teoria dos Conjuntos LFA Provas formais; Indução; Sintaxe e Semântica Teoria dos Conjuntos Técnicas de Demonstração Um teorema é uma proposição do tipo: p q a qual, prova-se, é verdadeira sempre que: p q Técnicas de Demonstração

Leia mais

Programação Estruturada

Programação Estruturada Algoritmos e Técnicas - Estruturas de Controle de Fluxo - Programação Estruturada Programação estruturada é a técnica de construir e formular algoritmos de uma forma sistemática. Utilizada para apresentar

Leia mais

Iteração e Pontos Fixos

Iteração e Pontos Fixos Iteração e Pontos Fixos Iteração é um dos pontos chave da programação numérica. Iterar consiste em repetir uma mesma operação diversas vezes levando a uma aproximação cada vez melhor da solução exata.

Leia mais

Programação I Apresentação

Programação I Apresentação Programação I Apresentação Prof. Carlos Alberto carlos.batista@facape.br carlos36_batista@yahoo.com.br Referências JUNIOR, D. P.; NAKAMITI, G. S.; ENGELBRECHT, A. de M. E.; BIANCHI, F. Algoritmos e Programação

Leia mais

Capítulo 2: Procedimentos e algoritmos

Capítulo 2: Procedimentos e algoritmos Capítulo 2: Procedimentos e algoritmos Para estudar o processo de computação de um ponto de vista teórico, com a finalidade de caracterizar o que é ou não é computável, é necessário introduzir um modelo

Leia mais

Aula 6: Entrada e Saída

Aula 6: Entrada e Saída Aula 6: Entrada e Saída Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Entrada e Saída Programação de Computadores IV 1 / 29 Agenda 1 Revisão e Contexto

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

Procedimentos e Algorítmos Programas e Linguagens de Programação Tese de Church-Turing Formas de Representação de Linguagens

Procedimentos e Algorítmos Programas e Linguagens de Programação Tese de Church-Turing Formas de Representação de Linguagens Procedimentos e Algorítmos Programas e Linguagens de Programação Tese de Church-Turing Formas de Representação de Linguagens 1 Introdução Estudar computação do ponto de vista teórico é sinônimo de caracterizar

Leia mais

Prof. Esp. Andrew Rodrigues 1

Prof. Esp. Andrew Rodrigues   1 Prof. Esp. Andrew Rodrigues www.andrewrodrigues.com.br www.andrewrodrigues.com.br 1 PHP em Ação PHP é uma linguagem de programação que pode fazer todo o tipo de coisas: avaliar dados de formulários enviados

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

Fundamentos da Programação

Fundamentos da Programação Fundamentos da Programação Solução do Primeiro Teste 29 de Março de 2014 09:00 10:30 1. (1.0) O que é um processo computacional? Qual a relação entre um programa e um processo computacional? Um processo

Leia mais

Programação de Computadores

Programação de Computadores Programação de Computadores Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo Alguns Conceitos sobre Linguagens Conceito de Algoritmo Pseudocódigo

Leia mais

Linguagem Haskell. Universidade Estadual Santa Cruz Conceitos de Linguagens de Programação. Tiago Carneiro 19 Agosto 2013

Linguagem Haskell. Universidade Estadual Santa Cruz Conceitos de Linguagens de Programação. Tiago Carneiro 19 Agosto 2013 Linguagem Haskell Universidade Estadual Santa Cruz Conceitos de Linguagens de Programação Tiago Carneiro 19 Agosto 2013 1 1 Linguagem Haskell Linguagem de programação funcional É um paradigma de programação

Leia mais

Uma introdução ao GAP

Uma introdução ao GAP Uma introdução ao GAP O nome GAP, advém de Groups, Algorithms and Programming. Trata-se de um sistema computacional inicialmente concebido para trabalhar na área da álgebra. Álgebra (Curso de CC) Ano lectivo

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

Introdução à Programação

Introdução à Programação Programação de Computadores Introdução à Programação Prof. Helton Fábio de Matos hfmatos@dcc.ufmg.br Agenda Algoritmo & Programa Variáveis Declaração de tipos Comando de entrada ou de leitura Comando de

Leia mais

Português Estruturado

Português Estruturado Português Estruturado Português Estruturado Para que o algoritmo possa ser executado por uma máquina é importante que as instruções sejam corretas e sem ambigüidades. O português estruturado é, na verdade,

Leia mais

Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida)

Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida) Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida) Não-terminais são nomes mnemônicos colocados entre parênteses angulares. Vocabulário terminal formado por

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

Algoritmos I Aula 13 Linguagem de Programação Java

Algoritmos I Aula 13 Linguagem de Programação Java Algoritmos I Aula 13 Linguagem de Programação Java Professor: Max Pereira http://paginas.unisul.br/max.pereira Ciência da Computação IDE Eclipse IDE (Integrated development environment) Criar um projeto

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

Aula 11: Laços e exercícios

Aula 11: Laços e exercícios Aula 11: Laços e exercícios Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2018/2 Departamento de Computação UFOP Aula Anterior Manipulação de laços Exercício 2 /

Leia mais

Programação I Aula 11 Mais sobre ciclos e iteração

Programação I Aula 11 Mais sobre ciclos e iteração Programação I Aula 11 Mais sobre ciclos e iteração Pedro Vasconcelos DCC/FCUP 2017 Pedro Vasconcelos (DCC/FCUP) Programação I Aula 11 Mais sobre ciclos e iteração 2017 1 / 26 Nesta aula Vamos ver a iteração

Leia mais

Compiladores. Prof. Bruno Moreno Aula 8 02/05/2011

Compiladores. Prof. Bruno Moreno Aula 8 02/05/2011 Compiladores Prof. Bruno Moreno Aula 8 02/05/2011 RECONHECIMENTO DE TOKENS Reconhecimento de Tokens Até aqui aprendemos a identificar tokens Para reconhecimento, a única abordagem utilizada foi árvores

Leia mais

Aula de hoje. Tipos de Dados e Variáveis. Constantes literais. Dados. Variáveis. Tipagem dinâmica. SCC Introdução à Programação para Engenharias

Aula de hoje. Tipos de Dados e Variáveis. Constantes literais. Dados. Variáveis. Tipagem dinâmica. SCC Introdução à Programação para Engenharias SCC 12 - Introdução à Programação para Engenharias Tipos de Dados e Variáveis Professor: André C. P. L. F. de Carvalho, ICMC-USP Pos-doutorando: Isvani Frias-Blanco Monitor: Henrique Bonini de Britto Menezes

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

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

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

INE5416 Paradigmas de Programação. Ricardo Azambuja Silveira INE CTC UFSC E Mail: URL:

INE5416 Paradigmas de Programação. Ricardo Azambuja Silveira INE CTC UFSC E Mail: URL: INE5416 Paradigmas de Programação Ricardo Azambuja Silveira INE CTC UFSC E Mail: silveira@inf.ufsc.br URL: www.inf.ufsc.br/~silveira Conceitos Léxica estudo dos símbolos que compõem uma linguagem Sintaxe

Leia mais

Afirmações Matemáticas

Afirmações Matemáticas Afirmações Matemáticas Na aula passada, vimos que o objetivo desta disciplina é estudar estruturas matemáticas, afirmações sobre elas e como provar essas afirmações. Já falamos das estruturas principais,

Leia mais

Aula 5 - Mais C e repetição

Aula 5 - Mais C e repetição Vamos nesta aula mostrar mais detalhes e a forma geral dos comandos C vistos até agora. O comando de atribuição A forma geral do comando de atribuição é: = A expressão

Leia mais

Unidade 5: Introdução à Programação com Python Prof. Daniel Caetano

Unidade 5: Introdução à Programação com Python Prof. Daniel Caetano Informática para Engenharia 1 Unidade 5: Introdução à Programação com Python Prof. Daniel Caetano Objetivo: Explicitar os elementos básicos envolvidos na programação com a linguagem Python. Bibliografia:

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

Introdução à Programação / Programação I

Introdução à Programação / Programação I Introdução à Programação / Programação I Aula 6: Mais sobre ciclos Rita P. Ribeiro 2018/2019 Departamento de Ciência de Computadores Nesta aula 1. Ciclos for 2. Ciclos while 3. Saída e continuação num

Leia mais

Expressões e sentença de atribuição

Expressões e sentença de atribuição Expressões e sentença de atribuição Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual

Leia mais