CI062 - TÉCNICAS ALTERNATIVAS DE PROGRAMAÇÃO 1. EMENTA - PRÉ-REQUISITOS - CARGA HORÁRIA CRÉDITOS: 04 CARGA HORÁRIA: 60 Aulas Teóricas: 60 Aulas Práticas: 00 EMENTA: Programação em Lógica, Programação Funcionalista, Programação Orientada a Objetos. Cálculo Proposicional e Lambda Calculus. OBJETIVOS: Promover uma visão aprofundada da pragmática dos princípios e das técnicas de programação nos 3 (três) paradigmas alternativos ao de programação imperativa. Isto é feito com base no ensino dos referidos princípios e técnicas, com a aplicação destes em 3 (três) linguagens de programação diferentes, uma para cada paradigma. PRÉ-REQUISITOS: Conhecimento aprofundado EQUIVALÊNCIA: PROGRAMA: 1 - Introdução à noção de múltiplos paradigmas 2 - O paradigma de programação em lógica e a linguagem Prolog 2.1 - Introdução (conceituação, notação convencional) 2.2 - Cálculos Proposicional e de Predicados (semântica de operadores e métodos de inferência) 2.3 - Tipos de cláusula lógica (fato, regra) 2.4- Controle do processo de cálculo semântico por meio de predicados especiais 2.5 - Monitoramento do processo de interpretação 2.6 - Exercícios 3 - O paradigma de programação orientada a objetos e a linguagem Flavours 3.1 - Introdução (conceituação, notação convencional) 3.2 - Estrutura de Programa (forma geral, objeto-método) 3.3 - Encapsulamento (abstração e ocultação gradual de informação) 3.4 - Herança simples e múltipla 3.5 - Comunicação entre objetos (passagem e recebimento de mensagens) 3.6 - Exercícios 4 - O paradigma de programação funcionalista e a linguagem ML 4.1 - Introdução (conceituação, notação convencional) 4.2 - Tipos de Dados (número, caracter, símbolo, lista, etc) 4.3 - Estrutura de Programa (forma geral, função, declaração) 4.4 - Estruturas de controle (atribuição de valores, ativação de função, sequenciamento simples, condicional, iteração, percorrimento de estruturas complexas, multi-valoração) 4.5 - Expressões-Lambda 4.6 - Exercícios BIBLIOGRAFIA: 1 - Ulf Nilsson, Jan Maluszynski. Logic, Programming and Prolog (2ed). Previously published by John Wiley & Sons Ltd. ( Agora em: http://www.ida.liu.se/~ulfni/lpp/ ) 2 - Logic, Programming and Prolog (2nd ed.). Nilsson, U. and Maluszynski, J., JOHN WILEY & SONS 1995. 3 - Artificial Intelligence Techniques in Prolog. Yoav Shoham, Morgan Kaufmann, 1994 4 - Prolog Programming for Artificial Intelligence (International Computer Science Series). Ivan Bratko, Addison-Wesley, 1993. 5 - Clocksin, W. F. & Mellish C. S. - "Programming in Prolog" - Springer-Verlag, 1987. 6 - Isaías Camilo Boratti. Programação Orientada a Objetos em Jave. Editora Visual Books, 2009. 7 - On to Smalltalk. Patrick Henry Winston, Addison-Wesley Pub Co, 1998. 8- Object-Oriented Languages, Systems and Applications. G. Blair and J. Gallagher and D. Hutchison and D. Shepherd, Pitman Publishing, 1991. 9- Analise Baseada em Objetos. Peter Coad e Edward Yourdon. Editora Campus. 10- Fundamentals of Object-Oriented Design in UML. Larry Meilir Page-Jones. Addison-Wesley Object Technology Series. 11- Design Patterns: Elements of Reusable Object-Oriented Software. Erich Gamma, et alii. Addison-Wesley Professional Computing. 12- Análise e Projeto de Sistemas de Informação Orientados a Objetos. Raul Sidnei Wazlawick. Editora Campus, 1994. 13 - ML for the Working Programmer. Lawrence C. Paulson, Cambridge University Press, 1998 3a. Edição. 14 - Elements of Ml Programming : Ml97. Jeffrey D. Ullman, Prentice Hall, 1997. 15- Introdução à Programação Funcional. Silvio R. de L. Meira. VI Escola de Computação da Sociedade Brasileira de Computação - Campinas - SP, 1988. Software de Apoio: - Poplog: http://www.cs.bham.ac.uk/research/poplog/freepoplog.html - SWI-Prolog: http://www.swi-prolog.org/ Avaliação: A avaliação consiste de dois trabalhos e duas provas.