	<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pt">
		<id>https://wiki.dcet.uab.pt/files/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=1201425</id>
		<title>Wiki Universidade Aberta - Contribuições do utilizador [pt]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.dcet.uab.pt/files/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=1201425"/>
		<link rel="alternate" type="text/html" href="https://wiki.dcet.uab.pt/files/index.php/Especial:Contribui%C3%A7%C3%B5es/1201425"/>
		<updated>2026-05-07T11:55:46Z</updated>
		<subtitle>Contribuições do utilizador</subtitle>
		<generator>MediaWiki 1.29.1</generator>

	<entry>
		<id>https://wiki.dcet.uab.pt/files/index.php?title=Ficheiro:E-folio_A.pdf&amp;diff=1778</id>
		<title>Ficheiro:E-folio A.pdf</title>
		<link rel="alternate" type="text/html" href="https://wiki.dcet.uab.pt/files/index.php?title=Ficheiro:E-folio_A.pdf&amp;diff=1778"/>
				<updated>2015-12-03T16:10:01Z</updated>
		
		<summary type="html">&lt;p&gt;1201425: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>1201425</name></author>	</entry>

	<entry>
		<id>https://wiki.dcet.uab.pt/files/index.php?title=Linguagens_de_Programa%C3%A7%C3%A3o&amp;diff=1777</id>
		<title>Linguagens de Programação</title>
		<link rel="alternate" type="text/html" href="https://wiki.dcet.uab.pt/files/index.php?title=Linguagens_de_Programa%C3%A7%C3%A3o&amp;diff=1777"/>
				<updated>2015-12-03T15:52:53Z</updated>
		
		<summary type="html">&lt;p&gt;1201425: /* Enunciados e Resoluções de e-Fólios, p-Fólios e Exames de anos anteriores: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Informática]]&lt;br /&gt;
&lt;br /&gt;
==Guia Informativo Oficial==&lt;br /&gt;
*[http://www2.uab.pt/guiainformativo/detailuc.php?uc=121 Guia Informativo de Linguagens de Programação]&lt;br /&gt;
&lt;br /&gt;
== Planos da Unidade Curricular (PUC): ==&lt;br /&gt;
* [http://wiki.dcet.uab.pt/files/images/9/96/PUC_LP_2015_16.pdf PUC LP do ano 2015-2016]&lt;br /&gt;
*[http://wiki.dcet.uab.pt/files/images/6/62/PUC_LP.pdf PUC Linguagens de Programação 2014/15]&lt;br /&gt;
&lt;br /&gt;
== Enunciados e Resoluções de e-Fólios, p-Fólios e Exames de anos anteriores: ==&lt;br /&gt;
=== Ano Letivo 2015/2016: ===&lt;br /&gt;
&lt;br /&gt;
=== Ano Letivo 2014/2015: ===&lt;br /&gt;
* [http://wiki.dcet.uab.pt/files/images/7/7a/P-folio_LP-29-JAN-2015.pdf P-Fólio Época Normal de 29-jan-2015]&lt;br /&gt;
&lt;br /&gt;
=== Ano Letivo 2013/2014: ===&lt;br /&gt;
*[http://wiki.dcet.uab.pt/files/images/d/d6/E-F%C3%B3lio_C_LP_14-15_.pdf E-Fólio C]&lt;br /&gt;
*[http://wiki.dcet.uab.pt/files/images/2/2d/E-F%C3%B3lio_B_LP_14-15_.pdf E-Fólio B]&lt;br /&gt;
*[http://wiki.dcet.uab.pt/files/images/1/1f/E-F%C3%B3lio_A_LP_14-15_.pdf E-Fólio A]&lt;br /&gt;
&lt;br /&gt;
=== Ano Letivo 2012/2013: ===&lt;br /&gt;
* [http://wiki.dcet.uab.pt/files/images/0/06/LPefolioA.pdf e-fólio A]&lt;br /&gt;
* [http://wiki.dcet.uab.pt/files/images/5/5f/LPefolioB.pdf e-fólio B]&lt;br /&gt;
* [http://wiki.dcet.uab.pt/files/images/2/2d/LPefolioC.pdf e-fólio C]&lt;br /&gt;
* [http://wiki.dcet.uab.pt/files/images/4/44/Exame-Epoca-Normal-UC-21077-LP-Linguagens-Programacao-20130218.pdf Exame Época Normal de 18-fev-2013]&lt;br /&gt;
* [http://wiki.dcet.uab.pt/files/images/5/51/Exame-Epoca-Recurso-UC-21077-LP-Linguagens-Programacao-20130725.pdf Exame Época de Recurso de 25-jul-2013]&lt;br /&gt;
&lt;br /&gt;
=== Ano Letivo 2011/2012: ===&lt;br /&gt;
&lt;br /&gt;
== Corpo Docente: ==&lt;br /&gt;
&lt;br /&gt;
* Nos anos letivos de 2012/2013 a 2015/2016: [https://www2.uab.pt/departamentos/DCT/detaildocente.php?doc=34 Prof. Jorge Morais]&lt;br /&gt;
&lt;br /&gt;
== Links úteis: ==&lt;br /&gt;
Livro online [https://realworldocaml.org/v1/en/html/index.html Real World Ocaml].&lt;br /&gt;
&lt;br /&gt;
Video sobre Prolog [https://www.youtube.com/watch?v=SykxWpFwMGs Prolog Tutorial]&lt;br /&gt;
&lt;br /&gt;
Site livro online [http://www.learnprolognow.org/lpnpage.php?pageid=top Learn Prolog Now]&lt;br /&gt;
&lt;br /&gt;
== Materiais de Apoio==&lt;br /&gt;
=== 2013/2014 ===&lt;br /&gt;
Neste ano a ordem das linguagens de programação foi, primeiro Java depois Prolog e por fim OCaml. Os e-fólios foi resolver o mesmo problema utilizando as diferentes linguagens.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2009/2010 ===&lt;br /&gt;
&lt;br /&gt;
Foram abordados três diferentes paradigmas de programação:&lt;br /&gt;
&lt;br /&gt;
    Programação Funcional;&lt;br /&gt;
    Programação Lógica;&lt;br /&gt;
    Programação por Objectos.&lt;br /&gt;
&lt;br /&gt;
OCaml&lt;br /&gt;
&lt;br /&gt;
A programação funcional constituiu uma parte significativa de toda a matéria (6 semanas). Foi utilizada a linguagem OCaml da qual apenas se estudou a parte funcional. A leitura da bibliografia fornecida não foi difícil nem muito demorada mas foi fundamental fazer bastantes exercícios. Há alguns conceitos novos, por vezes contrastantes com os de outros paradigmas, o que pode causar alguma dificuldade de adaptação. A ideia fundamental é a de que uma computação complexa se obtém pela composição de funções (como na matemática) e cada função apenas devolve um valor, não alterando o estado de outras &amp;quot;variáveis&amp;quot; - os chamados side-effects. Aqui tudo são (converte-se em) valores, até mesmo uma função &amp;quot;é&amp;quot; um valor e pode ser utilizada como argumento de outras funções, sendo estas denominadas funções de ordem superior. Esta é uma das características mais poderosas deste tipo de linguagens. Outros conceitos que importa interiorizar para nos adaptarmos a este paradigma são coisas como static binding, currying, closure, polimorfismo... mas a &amp;quot;força motriz&amp;quot; da programação funcional é mesmo a recursividade. Os algoritmos são sempre recursivos, não há ciclos iterativos do tipo while ou for. Até os tipos podem também ser recursivos!&lt;br /&gt;
&lt;br /&gt;
Recursos utilizados:&lt;br /&gt;
&lt;br /&gt;
Compilador&lt;br /&gt;
    http://caml.inria.fr/resources/index.en.html&lt;br /&gt;
Bibliografia&lt;br /&gt;
    Chailloux, E.; Manoury, P.; Pagano, B., Developing Applications With Objective Caml, INRIA 1995-2005&lt;br /&gt;
&lt;br /&gt;
[http://wiki.dcet.uab.pt/files/images/3/32/Exercicios_resolvidos_OCaml.pdf ExerciciosResolvidosOCaml]&lt;br /&gt;
&lt;br /&gt;
Prolog&lt;br /&gt;
&lt;br /&gt;
Deste paradigma fez-se apenas uma pequena introdução, mas mesmo assim é imprescindível estudar a bibliografia e, mais uma vez, praticar bastante. Esta linguagem de programação assenta num conceito completamente diferente das restantes. Aqui nada é avaliado/convertido em valores. Aquilo com que se trabalha são factos e regras. Toda a computação consiste em verificar se uma determinada proposição é falsa ou verdadeira, verificando os factos existentes e as regras sobre eles definidos. Este processo tem por base o conceito de &amp;quot;unificação&amp;quot;, fundamental para entender a linguagem. Até mesmo a aritmética - o único lugar da linguagem onde se calcula o valor de uma expressão - funciona de uma forma inesperada. É interessante (e espantoso) aquilo que se consegue fazer pensando sempre em &amp;quot;é falso ou verdadeiro?&amp;quot;. No vocabulário deste paradigma estão palavras como clausula, termo, predicado, aridade, query... e recursividade! Uma grande parte da computação é conseguida de forma recursiva.&lt;br /&gt;
&lt;br /&gt;
Recursos utilizados:&lt;br /&gt;
&lt;br /&gt;
Compilador&lt;br /&gt;
    http://www.swi-prolog.org/&lt;br /&gt;
Bibliografia&lt;br /&gt;
    Sterling, L.; Shapiro, E., The Art of Prolog, MIT Press, 1994&lt;br /&gt;
&lt;br /&gt;
Nota:&lt;br /&gt;
Nestes dois paradigmas é essencial esquecer tudo (quase tudo) o que se sabe de programação e embarcar numa viagem por terras desconhecidas, culturas diferentes. Tal como nessa circunstância, não devemos tentar empregar (forçar) as técnicas e procedimentos que já conhecemos mas antes tentar perceber qual é a &amp;quot;filosofia&amp;quot;, qual é a &amp;quot;cultura&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Java&lt;br /&gt;
&lt;br /&gt;
Neste caso foi muito mais rápida a fase inicial, com muita coisa semelhante ao que se faz em C/C++, mas é tudo muito mais trabalhoso. É um grande contraste com os paradigmas anteriores (especialmente o funcional) o número de linhas de código que é necessário escrever para fazer mesmo a coisa mais simples. É importante dominar o conceito de apontador e referência para entender os problemas de violação do encapsulamento - um dos princípios fundamentais em POO - mas em Java não se faz nada parecido com a manipulação dos endereços de memória como em C ou C++. Se quisermos caracterizar numa frase esta linguagem (exagerando um bocadinho) podemos dizer que em Java tudo são objectos. Até os tipos numéricos têm umas &amp;quot;embalagens&amp;quot; para funcionar como tal. O vocabulário desta linguagem é já conhecido: classe, método, atributo, instância, interface, composição, herança, polimorfismo, overloading... switch e instanceof são coisas a evitar, faz-se muito foreach com as colecções e os tipos podem ser parametrizados.&lt;br /&gt;
&lt;br /&gt;
Recursos utilizados:&lt;br /&gt;
&lt;br /&gt;
IDE&lt;br /&gt;
    Eclipse&lt;br /&gt;
Bibliografia&lt;br /&gt;
    David J. Eck, Introduction to Programming Using Java, 2006&lt;br /&gt;
    Martins, F. M. J., Java 6 e Programação Orientada Pelos Objectos, FCA, 2009&lt;br /&gt;
&lt;br /&gt;
A unidade curricular estava bem organizada, sendo a bibliografia acessível e suficiente, exceptuando o caso do Prolog em que o livro é de qualidade, bom para conhecer os conceitos fundamentais, mas mais complexo e difícil de ler. No entanto foi fornecido um tutorial on-line que vai directo ao assunto, traduzido, tornando a aprendizagem mais rápida.&lt;br /&gt;
&lt;br /&gt;
Os e-fólios foram equilibrados, 4 valores cada, e o grau de dificuldade estava de acordo com aquilo que foi trabalhado ao longo do semestre. O primeiro e-fólio foi sobre a programação funcional, com um problema sobre árvores binárias. O segundo e-fólio consistiu em fazer um programa em Java para simular uma leiloeira on-line, tipo eBay, que recebendo um ficheiro de comandos com diversas transacções produzia outro ficheiro com o resultado dessas transacções. Embora laborioso e com alguma extensão, o grau de dificuldade estava de acordo com as actividades propostas e no livro encontrava-se tudo o que era necessário para construir uma solução, sem ser necessário inventar algoritmos complexos, para os quais não tínhamos tido qualquer tipo de formação.&lt;/div&gt;</summary>
		<author><name>1201425</name></author>	</entry>

	</feed>