Conceitos de Linguagens de Programação Apresentação da Disciplina Prof. Dr. Rogério Vargas UESC 2013.2 O professor • Rogério R. de Vargas – Bacharel em Informática (URCAMP) – Mestre em Ciência da Computação (UCPel) – Doutor em Ciência da Computação (UFRN) • Gaúcho – Sotaque do Sul – Grêmio Contato • Pavilhão Jorge Amado – Módulo “33” (em frente aos banheiros, no térreo, próximo a torre administrativa) • Site – http://rogerio.in – Conteúdo programático – Avisos – Cronograma – Todas as informações referentes à disciplina CLP • Conceitos de Linguagens de Programação [CET 087] • Aulas – segunda-feira – quinta-feira • Formato – 1 aula teórica – 1 aula prática (dentro do possível) Ementa • Caracterização das linguagens de programação de computadores e seus diferentes paradigmas de programação (lógico, procedimental, funcional, orientação a objetos, orientação a aspectos, etc.). Ambiente. Estudo dos conceitos básicos de cada paradigma. Modelos computacionais. Semântica. Outros paradigmas de programação. Objetivos • Proporcionar ao aluno uma visão geral dos conceitos envolvidos no projeto e no uso dos diversos paradigmas de linguagens de programação. Conteúdo Programático (1) • 1. Características e objetivos das Linguagens de Programação. Abstração de Dados. Polimorfismo. Ambiente e escopo de variáveis. • 2. Tipos. Linguagens fortemente e fracamente tipadas. Linguagens não-tipadas. Inferência de tipos. Linguagens com tipo estático (Haskell) e dinâmico (Scheme). • 3. Semântica: conceitos das semânticas operacional, denotacional, axiomática, algébrica e de ações. • 4. Linguagens Imperativas: – – – – Variáveis e atribuição; Efeitos colaterais; Desvios e execução sequencial de comandos; Programação estruturada. Conteúdo Programático (2) • 5. Linguagens Lógicas: – – – – – • Cláusulas de Horn; Implicação lógica; Sistema de inferência lógica; Variáveis lógicas; Diferença entre Prolog e programação lógica. 6. Linguagens Funcionais: – O cálculo lambda; – Ordem de avaliação de expressões: cálculo preguiçoso (lazy evaluation) e cálculo guloso (eager evaluation); – Avaliação parcial; – Casamento de padrões; – Transparência referencial; – Transformação de programas. • • 7. Linguagens Orientadas a Objetos: tipos abstratos de dados, encapsulamento de dados e operações, herança e outros conceitos de orientação a objetos. 8. Outros paradigmas: programação concorrente, modelo de dados relacional (SQL), Redes de Petri, orientação a aspectos, etc. Créditos • 3 Créditos – 2 Teórico – 1 Prática • Ou seja, 2 provas e 1 prática. Faremos: – 2 Avaliações – 1 Prática • Seminário (70% da nota) • Lista de exercícios (30% da nota) • Presença – Assinar a folha de presença, conferir no portal o andamento das presenças/faltas Provas • Aproximadamente 10 questões • 4 ou 5 questões do estilo “check box” – Dada 4 alternativas, assinalar o que é verdadeiro e deixar em branco o que é falso. – As questões poderão ser todas assinaladas ou todas em branco. • Questões dissertativas • Segunda chamada – Final do semestre – Mediante pedido no protocolo geral Seminário (1) • Individual • Formato – 2 aulas teórica – 2 aulas prática • Duração – 2 horas/aula para cada formato Seminário (2) • Discutir com o professor os slides/atividade a serem apresentados uma aula antes da apresentação • Entregar os slides/atividade ao professor antes da apresentação • A ausência na apresentação acarretará nota ZERO ao aluno, não será prorrogado a apresentação para data posterior (salvo apresentando atestado médico ao professor) Lista de exercícios • Individual • Trabalhos similares, será atribuído nota zero aos trabalhos • A entrega será em dia de aula, presencialmente, não será aceito a entrega por e-mail ou fora do horário de aula da data estabelecida no cronograma Pontos para o seminário 1. Características e objetivos das LP 8. Prolog 2. Tipos 9. Linguagens Funcionais 3. Haskell 10. POO 4. Scheme 11. POO (prática em Java/C++) 5. Semântica 12. SQL 6. Linguagens Imperativas 13. Redes de Petri 7. Programação Lógica / Programação Concorrente 14. POA