Untitled Quiz
42 Questions
0 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

Qual é o propósito da declaração defpackage em LISP?

  • Criar um novo arquivo de código.
  • Inicializar variáveis globais.
  • Carregar bibliotecas externas.
  • Definir um novo pacote de funções. (correct)
  • O que é um package de default em LISP?

  • Um pacote que contém funções básicas de programação.
  • Um pacote que pode ser carregado automaticamente a qualquer momento.
  • Um pacote que não pode ser acessado diretamente.
  • Um pacote que é utilizado por padrão para novos símbolos. (correct)
  • Como é indicado o package em que os símbolos são definidos dentro de um arquivo?

  • Com a declaração `load`.
  • Com a declaração `use-package`.
  • Com a declaração `in-package`. (correct)
  • Com a declaração `define`.
  • Em qual linha deve estar a declaração in-package no arquivo?

    <p>Na primeira linha do arquivo. (D)</p> Signup and view all the answers

    Qual das seguintes opções é um exemplo correto de definição de packages?

    <p>(defpackage :jogador) (D)</p> Signup and view all the answers

    Qual função é utilizada para carregar um arquivo em LISP?

    <p>(load 'caminho') (C)</p> Signup and view all the answers

    Qual é a correta relação entre os packages Common-LISP e Common-LISP-User?

    <p>O <code>Common-LISP-User</code> herda todas as funções do <code>Common-LISP</code>. (A)</p> Signup and view all the answers

    Qual é uma das recomendações para a organização de arquivos com in-package?

    <p>Cada arquivo deve ter apenas um <code>in-package</code> na primeira linha. (C)</p> Signup and view all the answers

    Qual é uma funcionalidade que o programa de gestão da pauta deve ter?

    <p>Calcular a moda das notas da turma (A)</p> Signup and view all the answers

    O que caracteriza a estrutura de dados utilizada no jogo dos animais?

    <p>Uma árvore de decisão binária (C)</p> Signup and view all the answers

    Como deve o programa atualizar a estrutura de dados após a interação com o utilizador no jogo dos animais?

    <p>Aprendendo o novo animal e adicionando à árvore (B)</p> Signup and view all the answers

    Qual é a representação inicial da estrutura de dados para o jogo dos animais?

    <p>Uma estrutura de árvore com perguntas e animais (A)</p> Signup and view all the answers

    Qual é uma maneira de os alunos serem adicionados à turma no programa de gestão?

    <p>Por leitura de um ficheiro ou interativamente (D)</p> Signup and view all the answers

    Qual a saída do comando (funcall secret-1 'get-secret 'valentine) após set-password ter sido definido como 'valentine'?

    <p>DEEP-DARK (C)</p> Signup and view all the answers

    Qual é o propósito da função make-secret-keeper?

    <p>Gerenciar senhas e segredos de forma segura (C)</p> Signup and view all the answers

    Qual a resposta do comando (funcall secret-2 'set-secret 'valentine 'mysterious) se a senha 'valentine' não foi definida?

    <p>Password errada (D)</p> Signup and view all the answers

    O que acontece se set-password for chamado novamente antes de definir uma nova senha?

    <p>O novo valor da senha será ignorado (B)</p> Signup and view all the answers

    Qual é a função do parâmetro operation na função anônima retornada por make-secret-keeper?

    <p>Identificar qual operação deve ser executada (C)</p> Signup and view all the answers

    O que o comando (funcall secret-1 'change-password 'wrong 'newpass) retorna?

    <p>Password errada (C)</p> Signup and view all the answers

    Qual será a saída do comando (funcall secret-1 'set-secret 'unauthorized 'secret)?

    <p>Password errada (D)</p> Signup and view all the answers

    Se secret-1 já tem uma senha definida, o que o comando (funcall secret-1 'set-password 'newpassword) retornará?

    <p>a password já está definida (D)</p> Signup and view all the answers

    O que é retornado quando (funcall secret-2 'get-secret 'bloody) é executado após set-secret ser chamado com a senha correta?

    <p>mysterious (A)</p> Signup and view all the answers

    Qual comando seria utilizado para alterar a senha para 'novaSenha' na secret-2 após previamente definir a senha como 'bloody'?

    <p>(funcall secret-2 'change-password 'bloody 'novaSenha) (C)</p> Signup and view all the answers

    Qual é a função do parâmetro :export na definição de um package?

    <p>Adiciona símbolos criados no package à lista de símbolos exportados. (B)</p> Signup and view all the answers

    O que faz a função use-package?

    <p>Importa todos os símbolos exportados de um dado package. (C)</p> Signup and view all the answers

    Qual dos seguintes parâmetros é utilizado para importar símbolos de outros packages na definição de um package?

    <p>:import-from (D)</p> Signup and view all the answers

    Para qual propósito se utiliza a função unexport?

    <p>Para remover um símbolo da lista de símbolos exportados. (D)</p> Signup and view all the answers

    O que significa o parâmetro :use na definição de um package?

    <p>Herdar simbolicamente de outros packages. (B)</p> Signup and view all the answers

    Qual é o efeito do uso da função unuse-package?

    <p>Desfazer a importação de símbolos de um package. (C)</p> Signup and view all the answers

    Qual dos seguintes elementos não é uma opção válidas na definição de um package?

    <p>:internal (B)</p> Signup and view all the answers

    O que representa a 'exported symbol list' em um package?

    <p>Uma lista de todos os símbolos criados e que podem ser usados por outros packages. (D)</p> Signup and view all the answers

    Qual é o objetivo da função :shadow na definição de um package?

    <p>Redefinir símbolos existentes em um package. (B)</p> Signup and view all the answers

    O que ocorre se nenhum valor for dado para o parâmetro :use na definição de um package?

    <p>Assume um valor padrão baseado na implementação. (B)</p> Signup and view all the answers

    Qual é o resultado da chamada da função (maiores50 '((antonio 51 PT)(brad 34 UK) (charles 77 FR)))?

    <p>(PT FR) (C)</p> Signup and view all the answers

    O que a função (apply #'append '((a) (b) nil (c) nil nil (d))) retorna?

    <p>(a b c d) (D)</p> Signup and view all the answers

    Qual é o comportamento da função definida como (lambda (pessoa) (cond ((> (second pessoa) 50) (cddr pessoa))) (t nil)) neste contexto?

    <p>Retorna somente o nome da pessoa se a idade for superior a 50. (C)</p> Signup and view all the answers

    Para que serve a função mapcar no exemplo (mapcar #'1+ '(1 2 3 4 5))?

    <p>Adiciona 1 a cada elemento da lista. (B)</p> Signup and view all the answers

    Qual é o resultado da chamada (mapcar #'list '(1 2 3 4 5))?

    <p>((1) (2) (3) (4) (5)) (D)</p> Signup and view all the answers

    O que a função mapcar retorna quando utilizada como (mapcar #'list '(1 2 3 4 5) '(a b c))?

    <p>((1 a) (2 b) (3 c)) (D)</p> Signup and view all the answers

    Qual das seguintes opções descreve corretamente a função 'defun multimap' para multiplicar duas matrizes?

    <p>Ela multiplica as linhas de uma matriz pelas colunas de outra. (D)</p> Signup and view all the answers

    Qual é a finalidade da função 'transposta' em um contexto de matrizes?

    <p>Trocar linhas por colunas na matriz. (D)</p> Signup and view all the answers

    Qual é a implementação correta para somar 2 unidades a todos os elementos de uma lista de números?

    <p>(lambda (lista) (mapcar #'(lambda (x) (+ x 2)) lista)) (D)</p> Signup and view all the answers

    Study Notes

    Introdução à Inteligência Artificial (IA)

    • A inteligência artificial (IA) não possui uma definição globalmente aceite.
    • Aspectos importantes a considerar na IA incluem a capacidade de resolver problemas, utilizar conhecimentos (raciocínio) e aprender.
    • O conceito de QI (quociente de inteligência) não é uma medida adequada para a IA.
    • O xadrez representava antes uma forma de determinar inteligência, mas atualmente, máquinas superam os campeões mundiais.

    Definição de Trabalho

    • Não existe uma definição globalmente aceite para a IA.
    • Elaine Rich definiu a IA como o estudo de como fazer computadores realizarem tarefas nas quais as pessoas são melhores.
    • Já houve momentos em que as pessoas eram mais capazes que as máquinas em operações aritméticas.

    Nascimento da IA

    • A designação "Inteligência Artificial" foi inventada em 1956.
    • Foi numa conferência realizada em "Dartmouth College", nos EUA.
    • Os principais percursores incluem John McCarthy (LISP, 1959), Marvin Minsky, Seymour Papert (Percepção, 1969), Allen Newell (Logic Theorist, 1956), Arthur Samuel (Teoria de Jogos, Damas, 1963) e Herbert Simon (Racionalidade Limitada, Prémio Nobel).

    Paradigma Funcional

    • As funções são consideradas entidades de primeira classe em linguagens funcionais, podendo ser passadas como argumentos ou retornadas por outras funções.
    • As funções de ordem superior são comumente suportadas.
    • O paradigma funcional caracteriza-se pela ausência de efeitos colaterais.
    • O cálculo lambda é a base da programação funcional.

    Cálculo Lambda

    • Um modelo de computação universal baseado na lógica matemática.
    • O cálculo lambda permite expressar a computação através da abstração de funções.
    • É utilizado para modelar e computar funções.

    Conceitos Básicos

    • A revisão de conceitos de compilação vs. interpretação, gestão de memória (heap vs. stack) e tipos de dados é crucial para compreender a implementação da IA.
    • Devem ser consideradas as vantagens e desvantagens de cada abordagem.
    • Tipos de dados estaticos vs dinamicos.

    Compilação vs Interpretação

    • Compilação: Conversão da linguagem do programa para linguagem de máquina antes da execução, mas tem dependência da plataforma e recompilação para novos testes.
    • Interpretação: Independência da plataforma usada para execução, o que torna relevante para testes, pois permite a criacao e instanciação de entidades à medida que programa é executado.

    Características de Linguagens Interpretadas Reflexivas

    • Baseia-se num REPL, que permite fazer testes incrementais rápidos.
    • Trata dados como se fossem programas, permitindo construir código em tempo de execução.

    Gestão de Memória: Stack vs Heap

    • Stack: Seguindo a disciplina LIFO, guarda as informações de invocação de função, incluindo código e variáveis, que têm um tamanho fixo e vida limitada, e é rápido.
    • Heap: Possível problema com recursividade, fornece alocação dinâmica de memória para variáveis globais com tamanho variável e vida indefinida, que é mais lento.

    Tipos de Dados

    • Os tipos de dados definem a semântica e as regras de comportamento de um programa.
    • Os tipos de dados básicos incluem inteiro, caracter, booleano e string.
    • Os tipos têm vantagens associadas (ex. modularidade).

    Variáveis

    • As variáveis têm um tipo e um âmbito.
    • O tempo de vida de uma variável abrange desde a sua criação até ao seu desaparecimento.
    • O âmbito léxico é definido pelo código fonte, onde uma variável é referenciável dentro dos blocos internos.
    • O âmbito dinâmico é associado ao encadeamento de invocação de funções durante a execução do programa.

    Características Principais de LISP

    • Linguagem functional, interpretada e reflexiva.
    • Tipos de dados dinâmicos (late binding).
    • Âmbito das variáveis baseado em escopo léxico.
    • Estruturas de dados dinâmicas.

    Gênese

    • LISP (List Processing) foi criado em 1958.

    LISP: Uma Linguagem Funcional

    • Uma linguagem de programação com a função como elemento central.
    • Enfatiza o estilo de programação de cima para baixo e também de baixo para cima, resultando em programas mais fáceis de ler e manutenção facilitada.
    • Aplicabilidade importante no domínio da sua aplicação.

    LISP Puro

    • Um núcleo central da linguagem LISP, focado somente no cálculo lambda.
    • Ausência de atribuição, sequenciação, pointer e estrutura de dados de armazenamento como memória heap.

    Aspectos Básicos do Avaliador

    • Invocações de funções usando notação prefixa.
    • Mecanismos para evitar a avaliação de expressões como programas.

    Tipos de Dados Elementares

    • Incluem átomos (símbolos, números, inteiros, bignums, reais, booleanos, carateres e strings).
    • São estruturas de dados dinâmicas usadas para dados e programas.

    Literais de Números, Booleanos, Caracteres e Strings

    • Exemplos de literais de números (inteiros, fixnums, bignums, reais) e valores booleanos.
    • Inclui exemplos de literais de caracteres e strings.
    • Tipos de dados numéricos (inteiro, real).
    • Tipos booleanos (T, NIL).
    • Tipos de caracteres (#\a, #\b).
    • Tipos de strings ("uma string").

    Símbolos

    • Permitem representar variáveis e funções (estrutura de slots).

    Listas

    • Estruturas de dados dinâmicas.
    • Baseadas em células Cons.

    Tipo Abstrato Lista

    • Os construtores incluem cons, car e cdr.
    • Apresenta-se exemplos práticos de como trabalhar com listas complexas e os selectores.

    Macros

    • Formas especiais em LISP que extendem a sintaxe.
    • Mecanismo de substituição léxica, sem uso de stack.

    Notações BNF

    • Uma notação formal para definir a sintaxe de uma linguagem.

    Tipo Abstrato de Dados

    • Modelo matemático definindo um tipo de dados pelas operações sobre seus valores.
    • Um tipo abstrato de dado é independente da sua implementação.

    Algumas Funções de Manipulação de Listas

    • Apresenta-se funções como append, length, nth e reverse, com exemplos de uso.

    Tipos Numéricos, Funções Aritméticas

    • Tipos numéricos (real, inteiro).
    • Principais operações aritméticas.

    Operações com Números

    • Exemplos de cálculo com números inteiros (ex.: divisão, resto da divisão, raiz quadrada).
    • Detalhes sobre as diferenças entre as utilizações das funções.
    • Operações matemáticas como divisão, resto da divisão e raiz quadrada são demonstradas, incluindo detalhes sobre suas possíveis exceções.

    Algumas Funções Interessantes (Log, Exp e Random)

    • As funções exp, log e random estão disponíveis.

    Números Muito Grandes

    • Dados numéricos com muitos dígitos são representados como lista de bytes (bignums).

    Tipo Boolean/Predicados

    • Operadores booleanos (ex.: igualdade, maior que, menor que...).
    • Predicados booleanos (ex.: zero, impar, par, elemento de uma lista...).

    Operadores Relacionais

    • Operadores relacionais.

    Tipo Boolean/Operadores Lógicos

    • Operadores lógicos (ex.: e, ou, não).
    • Resultados demonstrados nos predicados booleanos.

    Detalhes dos Operadores Booleanos de Igualdade

    • Detalhes sobre ref vs. valor em operadores de igualdade.

    Exercícios

    • Diversos exercícios para praticar os conceitos aprendidos.
    • Detalhes sobre o trabalho com funções, recursividade e estruturas de dados.
    • Apresentação de exercícios para praticar os conhecimentos adquiridos em aplicações de diferentes áreas.

    Definição de Funções e Estruturas de Controlo

    • Sintaxe para definir funções (defun) com parâmetros, descrição, e corpo.

    Exemplos

    • Desenvolve exemplos para ilustrar a sintaxe do LISP e suas aplicações.
    • Exemplos práticos para calcular o quadrado de um número e a área de um círculo.

    Funções e Símbolos de Funções

    • Distinção entre funções nomeadas e funções anônimas (lambda).

    Depuração (Debug)

    • Métodos para depurar o código (ex.: trace, dribble).

    Estruturas de Controlo no LISP Puro

    • Sequenciação (não aplicada no LISP puro)
    • Seleção (cond)
    • Repetição (recursividade)

    Seleção

    • Sintaxe e exemplos de uso da estrutura de controlo cond.
    • Apresenta-se exemplos usando a estrutura de controlo cond.

    Macros (if e ecase).

    • Sintaxe e exemplos do uso das macros if e ecase.

    Exemplos (max e max4)

    • Definição e exemplos de funções para encontrar o máximo de 2 e 4 números.

    Recursividade

    • Recursividade é abordada.
    • Funcionalidades, estruturas e condição de paragem.
    • Exemplos de funções recursivas.

    Utilização do Stack

    • Explicação visual da pilha de chamadas (stack) durante a execução recursiva.

    Exercícios (pot, fib e A de Ackermann)

    • Exercícios para definir funções recursivas.

    Usar com extremo cuidado e apenas em casos excepcionais

    • Sequenciação, iteração (do e dotimes).
    • Conceitos com exemplos de uso.

    Atribuição

    • Funcoes para atribuicao de valores a variaveis (setq e setf).

    Variáveis e Constantes Globais

    • Definição e uso adequado de variáveis globais.
    • Usar com extremo cuidado.
    • Utilização da diretiva defparameter.
    • Exemplos práticos.

    Ligação de Valores a Variáveis em Ambientes Léxicos

    • Funções LET e LET*, avaliando em sequencialmente ou em paralelo.

    Exemplo LET

    • Demonstração do uso de LET num exemplo para calcular perímetro e área de um círculo baseado no raio recebido.

    Exemplo LET*

    • Demonstração de uso num cálculo de raiz quadrada, baseado na amplitude dos valores de uma lista, caso esta amplitude seja maior que 10.

    LET e LAMBDA

    • Exemplos mostrando a similaridade entre as construções LET e LAMBDA.

    Ligação de Funções a Variáveis em Ambientes Léxicos (flet e labels)

    • Funcionamentos de flet e labels com demonstrações das suas utilizações.

    Exemplos de Flet e Labels.

    • Exemplos práticos, demonstrando os usos de flet e labels.

    Closures

    • Explicação do conceito de closures léxicas.
    • Caracterísitcas e demonstrações de utilização.
    • Âmbito léxico e dinâmico, e tipos de escopos.

    Algumas Funções Destrutivas

    • Funções destrutivas (incf, setf).

    Outro Exemplo (segurança com passwords).

    • Criar um exemplo prático para lidar com a segurança de uma aplicação com passwords.

    Exemplo 2 (segurança com passwords).

    • Uma abordagem mais segura para proteger os dados de uma aplicação com passwords.

    Exercícios

    • Exercícios práticos para demonstrar os conceitos.
    • Exercícios práticas variam desde funções para manipular listas. Funções para tratamento de números (inteiros e reais) e para resolução de equações matemticas.

    Functionais ou meta-funções

    • Funções para manipulação de outras funções.
    • eval, apply e funcall.
    • Exemplos de funções.

    Funções de Correspondência

    • mapcar, maplist, mapc, mapl, mapcan, e mapcon.
    • Demonstrando exemplos de uso.

    Exemplo

    • Função para listar os países das pessoas com mais de 50 anos, a partir de uma lista de dados.

    Detalhes

    • Detalhes e exemplos da função apply como ferramenta fundamental em LISP para processar diversas entradas e saídas.

    Exercícios

    • Exercícios para praticar a utilização de funções de correspondência e manipulação de dados complexos em LISP.

    Ficheiros

    • Funcionalidades de funções de ficheiros, como abrir, ler e escrever dados.

    Keywords de open

    • Opções disponíveis para configurar as funções de abertura de ficheiros em LISP.

    Pathname

    • Métodos para criar e trabalhar com nomes de caminhos de ficheiros usando a classe pathname.

    Exemplo (cópia de linhas impares)

    • Criar uma função que copia as linhas impares de um ficheiro ".txt" para um novo ficheiro, mantendo o mesmo nome (e extensão).

    Exercícios

    • Exercícios envolvendo a leitura/escrita de ficheiros.
    • Escrita de programas para lidar com ficheiros e funções de leitura/escrita.

    Packages

    • Namespace problem, uma problemática de LISP que se resolve utilizando packages.

    Possíveis Soluções

    • As possibilidades para resolver problemas de Namespace.
    • Uso de prefixos diferentes para símbolos em módulos distintos e a gestão dos nomes pelos programadores.

    Exemplo Concreto

    • Exemplo prático de um jogo de 2 jogadores baseado em simbolos.

    Exemplo Esquemático

    • Representação visual de um exemplo.

    A Melhor Solução: Packages

    • Utilização de packages para gestão de nomes em LISP.
    • Um pacote é uma forma de organizar símbolos, e os pacotes predefinidos como CL, e CL-User.

    Exemplo Simples de Utilização

    • Exemplos práticos de definição e carga de packages.

    Programas J1.lisp e J2.lisp

    • Exemplos mostrando os programa de cada jogador, para um jogo entre dois jogadores.

    Recomendações

    • Recomendações para boas práticas na utilização de packages.

    Definir Packages

    • Utilização de defpackage para definição de pacotes.

    Opções Principais

    • Opções principais para configuração de pacotes em LISP (ex.: :use, :import-from, :export).

    Export e Use-Package

    • Mecanismos para importação e exportação de símbolos entre pacotes.

    Shadowing

    Mecanismo para gestão de simbolos com mesmo nome, sem conflitos.

    Intern/Unintern

    • Mecanismo para criar e remover símbolos dentro de um package.

    Lista de Símbolos de um Package

    • Macros para listagem dos símbolos de um pacote.

    Exercícios

    • Exercícios sobre diferentes funcionalidades do LISP envolvendo packages.
    • Envolve funcionalidades dos packages com exemplos práticos de jogo entre dois jogadores.

    Programas Completos

    • Apresentação de exemplos de programas completos em LISP com foco em packages.

    Tipos Abstratos de Dados

    • Discussão de linguagem extensível do LISP e Vantagens.

    Exemplo 1

    • Exemplo prático com o tipo de dados "Turma".
    • Inclui o tipo de dados "Aluno" necessário para o tipo "Turma".

    Exercício 1

    • Exercício para praticar a gestão de uma pauta de alunos em LISP numa aplicação prática.

    Exemplo 2

    • Abordagem baseada em árvore de decisão binária para um jogo.

    Exercício 2 (Implementacão)

    • Orientações sobre a criação do tipo abstrato dos dados, para a implementação da árvore binária do jogo.

    Exercícios

    • Exercícios adicionais (roda para esquerda, equação do segundo grau, Fibonacci, binary, hexadecimal) e exercicios adicionais sobre conjuntos.

    Studying That Suits You

    Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

    Quiz Team

    Related Documents

    LISP Slides PDF

    More Like This

    Untitled Quiz
    6 questions

    Untitled Quiz

    AdoredHealing avatar
    AdoredHealing
    Untitled Quiz
    55 questions

    Untitled Quiz

    StatuesquePrimrose avatar
    StatuesquePrimrose
    Untitled Quiz
    50 questions

    Untitled Quiz

    JoyousSulfur avatar
    JoyousSulfur
    Untitled Quiz
    48 questions

    Untitled Quiz

    StraightforwardStatueOfLiberty avatar
    StraightforwardStatueOfLiberty
    Use Quizgecko on...
    Browser
    Browser