Cálculo de Programas

Licenciaturas em Engenharia Informática e Ciências da Computação

Tópicos

Avisos

19 Set - Classificações do exame de época especial: estão publicadas em Alunos.

05 Set - Exame da época especial: ver o calendário da disciplina.

25 Jul - Classificações finais: estão publicadas em Alunos.

21 Jul - Os alunos que pretendam consultar os seus exames poderão fazê-lo hoje, 21-Jul, das 16h00-18h00, junto do responsável da disciplina.

21 Jul - Provas orais: terão lugar dia 23-Jul de manhã, das 9h às 11h, na sala DI 1.08.

21 Jul - Classificações do exame de recurso: estão publicadas em Alunos.

18 Jul - As notas do exame de recurso serão lançadas em Alunos dentro de 2 ou 3 dias no máximo.

25 Jun - Horário para consulta do teste: amanhã (26-Jun) das 11h-13h e das 14h30-16h30, no gabinete de Luis S. Barbosa.

24 Jun - O exame de recurso está marcado para as 9h00 de 4-Jul, nas salas CPII - 201, 202 e 203, cf. Sumários.

24 Jun - Classificações à data da época normal: estão publicadas em Alunos .

24 Mai - Publicado no Material Pedagógico o enunciado do teste de 13-Jun, com a correcção.

23 Mai - Continua a haver alunos que não têm fotografia no portal académico, o que pode comprometer a sua componente de avaliação contínua na disciplina.

11 Jun - Teste de 13-Jun: por falta de salas foi necessário alterar a hora do teste para as 18h, ver Sumários.

11 Jun - Algumas dúvidas frequentes encontram-se respondidas na secção de FAQs do Atendimento.

05 Jun - Classificações do mini-teste: estão publicadas em Alunos.

26 Mai - Publicada no Material Pedagógico aúltima ficha prática (nr.11).

21 Mai - Publicado no Material Pedagógico o enunciado do mini-teste com a correcção.

21 Mai - LEI, Turno TP4: devido a uma missão em Lisboa o docente não poderá leccionar esta aula, tendo lugar a sua substituição dia 4 de Junho das 17 às 19h, no anfiteatro DI-A2.

18 Mai - Publicada no Material Pedagógico a ficha nr.10, destinada às aulas práticas da semana de aulas que começa a 19-Mai.

11 Mai - O miniteste dia 15-Maio, 9h00, salas CPII - 201, 202 e 203 é uma prova individual sem consulta, exceptuando o formulário da disciplina que os alunos podem imprimir a partir do Material Pedagógico.

10 Mai - Turno LEI-TP2, de quinta-feira: as aulas de compensação terão lugar 2ª e 3ª-feira no horário afixado em Sumários. Por favor não faltem: são aulas essenciais em que vai ser versada matéria quer sai para o mini-teste.

10 Mai - Miniteste dia 15-Maio, 9h00, salas CPII - 201, 202 e 203: a matéria a avaliar vai até à Ficha nr.9, excluindo lei de recursividade múltipla e fusão-cata envolvendo árvores. A matéria é, obviamente, a mesma para os dois cursos.

08 Mai - Chama-se a atenção dos alunos para as aulas de reposição do turno TP2 (LEI) que terão lugar nos dias 12 e 13 de Maio - ver Sumários.

04 Mai - Publicada no Material Pedagógico a ficha nr.9, destinada às aulas práticas da semana de aulas que começa a 05-Mai.

30 Abr - Não tendo sido possível cumprir estritamente o calendário previsto para as aulas de CP, informa-se que o teste foi adiado para o dia 15 de Maio, 9h, nas salas CP2 - 201, 202 e 203 (ver Sumários.

24 Abr - Por determinação superior e tal como se avisa nos Sumários, foram suspensas as aulas do dia de hoje.

20 Abr - Publicada no Material Pedagógico a ficha nr.8, destinada às aulas práticas da semana de aulas que começa a 22-Abr.

20 Abr - Chama-se a atenção dos alunos para as aulas de reposição de vários turnos que terão lugar no dia 23-Abr, ver Sumários.

06 Abr - Publicada no Material Pedagógico a ficha nr.7, destinada às aulas práticas da semana que começa a 7-Abr.

30 Mar - Publicada no Material Pedagógico a ficha nr.6, destinada às aulas práticas da semana que começa a 31-Mar.

30 Mar - Publicado na Bibliografia o capítulo dos apontamentos teóricos da disciplina referentes à segunda parte da matéria.

22 Mar - Publicada no Material Pedagógico ficha nr.5, destinada às aulas práticas da semana que começa a 24-Mar.

15 Mar - Aula de substituição (LEI/TP4): Tal como anunciado em Sumários, a aula em falta será reposta 4feira, dia 19 de Março, 17-19h na sala DI-A2.

15 Mar - Publicada no Material Pedagógico a ficha nr.4, destinada às aulas práticas da semana que começa a 17-Mar.

08 Mar - Publicada no Material Pedagógico a ficha nr.3, destinada às aulas práticas da semana que começa a 10-Mar.

03 Mar - Publicada no Material Pedagógico a ficha nr.2, destinada às aulas práticas desta semana.

03 Mar (LEI): mudança de sala da aula teórica de 5.ª-feira: passou para o CP1/A3.

03 Mar - Fotografias: os alunos que não têm fotografia no portal académico devem tratar de a disponibilizar o mais rapidamente possível. A falta de fotografia pode comprometer a componente de avaliação contínua desta disciplina.

22 Fev - Publicada no Material Pedagógico a ficha nr.1, destinada às aulas práticas da semana que começa a 24-Fev.

17 Fev - Datas das avaliações: ver Sumários

17 Fev - Turnos TP (LEI): ver Alunos

16 Fev - Calendário previsto para a disciplina publicado em Sumários, incluindo provas de avaliação.

14 Fev - As aulas terão início a 17-Fev-2014.

14 Fev - Criada esta página de avisos.

Horário de Atendimento

  • Em qualquer altura: via correio electrónico pressionando aqui. Qualquer outro meio de contacto será considerado informal, não se sentindo a equipa docente vinculada a dar uma resposta em tempo útil.

  • Durante o período de aulas: marcação verbal junto do respectivo docente com um mínimo de 24h de antecedência.

Atendimento electrónico (FAQs) tinynew.gif

Q1 - Estou com dificuldade em resolver um dos exercicios que aparecem na blibliografia (exercicio 2.21, pagina 38 do segundo capitulo), onde é pedido para verificar a seguinte propriedade: < f , ( p -> q , h ) > = p -> < f, q >, < h , f > tendo em conta que p -> f , f = f...

R: Não é de admirar pois, infelizmente, havia uma gralha (!) no exercício, que já se corrigiu no PDF desse capítulo: deverá provar < f , ( p -> q , h ) > = p -> < f, q >, < f , h > e não o que lá estava (troca de f com h).


Q2 - Estou sem conseguir resolver a questão 8 do teste de 2011/12: definir um anamorfismo de naturais como um catamorfismo de listas. Tentei usar a lei universal-ana(44) mas fiquei bloqueado a meio.

R: Sim, universal-ana (naturais) é bom começo (expandindo out = [nil,cons]º ):

f = [( (id+p2). [nil,cons]º )]

== { universal-ana (naturais); álgebra in dos naturais é [0,succ] }

f = in. (id + f ) . (id+p2). [nil,cons]º

== { passando isomorfismo [nil,cons]º para o outro lado, "trocando o sinal" }

f . [nil,cons] = in. (id + f ) . (id+p2)

== { ... }

Aqui começa a preparação das coisas para termos f como catamorfismo de listas: fica como exercício.

A dificuldade desta questão é que começa com um anamorfismo de naturais (F f = id + f) e termina com um catamorfismo de listas (F f = id + id x f). A mudança de F dá-se a partir do ponto em que se parou acima. Como sempre, as propriedades naturais não se devem ignorar (neste caso a do p2).


Q3 - Na ficha 9, ex. 3, consegui obter as seguintes igualdades:

look k . nil = Nothing

look k . cons = (==k) . π1 . π1 -> Just . π2 . π1, (look k) . π2

Mas não consigo perceber qual será o próximo passo a tomar a partir daqui.

R: Como o functor é F f = id + id >< f, vamos precisar de ter

(look k). in = g . (id + id >< (look k))

É fácil decompor g = [ const Nothing, g2], passando agora a dificuldade a ser resolver a equação

g2. (id >< (look k) = (==k) . π1 . π1 -> Just . π2 . π1, (look k) . π2

em ordem a g2. Por natural-π2, (look k) . π2 = π2. (id >< (look k)). Por natural-π1, π1 = π1 . (id >< (look k)). Substituindo:

g2. (id >< (look k) = (==k) . π1 . (π1 . (id >< (look k))) -> Just . π2 . (π1 . (id >< (look k))), (π2. (id >< (look k)))

que simplifica pela 2ª lei de fusão de McCarthy:

g2. (id >< (look k) = ((==k) . π1 . π1 -> Just . π2 . π1 , π2) . (id >< (look k))

Cancelando (id >< (look k) obtém-se:

g2 = (==k) . π1 . π1 -> Just . π2 . π1 , π2

Esta é de facto a versão de look que aparece na secção (4.2) da biblioteca List.hs.


Q4 - Na ficha 9, ex. 6, chego a

f2 . in = [nil, f1 . π2]

Dado que tenho que aplicar, mais tarde, a lei de Fokkinga, ainda fiz o seguinte passo:

f2 . in = [nil, π1 . <f1, f2> . π2] (*)

mas não consegui avançar mais.

R: A lei que refere vai pedir, para um gene g2 que queremos calcular, f2 . in = g2 . F <f1, f2>, isto é,

f2 . in = g2 . (id + id >< <f1, f2>)

pois estamos a trabalhar como listas. Por natural-π2, <f1, f2> . π2 = π2 . (id >< <f1, f2>). Logo, (*) é o mesmo que

f2 . in = [nil, π1 . π2 . (id >< <f1, f2>)]

Por absorção-+, teremos finalmente

f2 . in = [nil, π1 . π2] . (id + id >< <f1, f2>)

Logo g2 = [nil, π1 . π2]. O raciocínio para f1 é idêntico.


Q5 - Estou a tentar resolver a questão 6 do teste de 17 de Junho de 2013: fiz os diagramas de cada catamorfismo e chego às definições das funções com variáveis através da lei universal-cata e consigo perceber que realmente fazem a mesma coisa, mas não sei se era assim que era suposto resolver...

R: Não, isso mostra... mas não prova! O que queremos provar é que f=g, sendo ambas catamorfismos. Logo podemos usar a lei-universal aplicada a f ou g, à nossa escolha, por exemplo

f = ([ (const k), id ])
<=> { Universal-cata }
f.in = [(const k), id] . (id + f)
<=> { simplificação }
f.in = [(const k), f]
<=> { cancelamento-cata (f) }
[const k, const k].(id+f) = [(const k), f]
<=> { simplificação seguida de eq-(+) etc }
f = const k

Agora basta verificar se const k = g, pelo mesmo processo.


-- JoseNunoOliveira - 14 Feb 2014

r5 - 12 Jun 2014 - 17:47:14 - JoseNunoOliveira
This site is powered by the TWiki collaboration platform Copyright © by the contributing authors. Ideas, requests, problems? Send feedback.
Syndicate this site RSSATOM