A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Engenharia de Computação

Cópias: 1
Introdução à Programação: uma Abordagem Funcional PD I – Engenharia Elétrica Prof.ª Claudia Boeres 2008/2.

Apresentações semelhantes


Apresentação em tema: "Engenharia de Computação"— Transcrição da apresentação:

1 Engenharia de Computação
Introdução à Programação: uma Abordagem Funcional Programação I Engenharia de Computação Prof.ª Claudia Boeres 2009/1 Theme created by Sakari Koivunen and Henrik Omma Released under the LGPL license.

2 Conceitos Básicos construção de programas para computadores;
solução de problemas x soluções prontas devem satisfazer requisitos de qualidade construção de programas: através da descrição de funções

3 Computadores máquina de processar dados numéricos ou simbólicos
hardware + software é capaz de interpretar dados, produzir novos resultados, aceitar novos conceitos para interpretação de novas situações.

4 Máquina de Von Neumann

5 Memória memória RAM (Random Acess Memory)
memória ROM (Read Only Memory) memória auxiliar ou externa (cd, usb, disco rígido,...)

6 Representação/armazenamento da informação
BIT:menor unidade de informação (0 ou 1) Medidas: 1 byte : 8 bits 1 Kbyte: 1024 bytes 1 Mbyte: 1024 Kbytes 1 Gbyte: 1024 Mbytes

7 Exemplos de utilização
tradução e edição de textos reconhecimento de imagens gerenciamento de bancos roteamento de mensagens em redes de computadores etc.

8 O que é programar? identificar, organizar e codificar o conhecimento para a descrição de um conceito para o computador.

9 O que é necessário para programar?
compreender o problema a ser resolvido; planejar uma solução; descrever a solução por meio de uma linguagem de programação; testar o programa com o objetivo de verificar se ele resolve o problema.

10 Linguagem de Programação
formalismo: padrões segundo os quais um agente possa interpretar e/ou descrever informação formalismo = sintaxe + semântica

11 Por que usar linguagem de programação?
não é possível ainda usar linguagem natural para programar no computador; a linguagem de máquina é difícil de ser compreendida; são mais próximas da linguagem natural, podendo-se focar no problema e não nas dificuldades de entendimento da linguagem; tradutores.

12 Propriedades de um programa
correção: o programa deve descrever corretamente o conhecimento segundo a intenção desejada; desempenho: o programa deve usar de forma adequada os recursos e o tempo da máquina considerada.

13 Paradigmas de Linguagem de Programação
uma forma específica de se pensar em programação procedural, funcional e lógico

14 Programação Funcional
podemos entender o computador como uma “máquina funcional”, capaz de: avaliar expressões escritas segundo regras sintáticas bem definidas; aceitar a definição de novas funções e considerá-las na avaliação de expressões

15 lê expressão avalia exibe resultado Máquina Funcional 2+4
Soma de 2 e 4 exibe resultado 6

16 Exemplo Arquivo texto usuário: 4 * 3 – 2 máquina funcional: 10
usuário: f máquina funcional: definição de f não conhecida usuário: carrega arquivo com funções máquina funcional: ok máquina funcional: 13 Arquivo texto f x = x + 1

17 Funções associação entre elementos de dois conjuntos A e B tal que o conjunto de partida A seja igual ao domínio da função; em outras palavras: seja F uma função de A em B. Então F representa o conjunto de pares ordenados (x,y) tais que para todo x  A, existe y  B, tal que (x, y)  F.

18 Funções Seja f uma função de A em B. Então:
f é uma função total se Domínio (f) = A f é uma função parcial se Domínio (f)  A

19 Exemplos a) A = {a, b, c}, B = {1, 2, 3}
f: A  B tq f = {(a,1), (b,1), (c,3)} b) A = {1, 2, 3}, B = {a, e, i, o, u} f: A  B tq f = {(1,a), (2,e), (2,i), (3,o)} c) A = {a, b, c}, B = {1, 2, 3} f: A  B tq f = {(a,1), (b,1)}

20 Descrições Funcionais
extensional: todos os elementos são explicitados f = {(a,1), (b,2), (c,3)} intencional: os elementos são descritos através de um critério de pertinência f = {(x,y) | x   e y = 2x}

21 Exemplos a) f:    tq f (x) = 1/x b) g:    tq g(y) = y – 1
c) f:    tq f (x) = x2 - 1

22 Por que aprender programação através do paradigma funcional?
este é o momento inicial, propício para estimular a busca de problemas e apresentação dos fundamentos; o paradigma procedural requer o bom entendimento do funcionamento de um computador (máquina de Von Neumann);

23 Por que aprender programação através do paradigma funcional?
o paradigma lógico: requer conhecimento de lógica matemática; o paradigma funcional: requer o conhecimento de funções; a ineficiência de linguagens funcionais tem se reduzido em relação a linguagens procedurais; descrições funcionais podem servir como especificações do programa (correção), já que descrevem “o que fazer” ao invés de “como fazer”.

24 Algumas aplicações de Haskell
Functional programming languages are used in substantial applications. For example: Software AG, a major German software company, market an expert system (Natural Expert) which is programmed in a functional language. Their users find it easy to develop their applications in this language, through which they gain access to an underlying database system. It all runs on an IBM mainframe. Ericsson have developed a new functional language, Erlang, to use in their future telephony applications. They have already written 130k-line Erlang applications, and find them very much shorter and faster to develop. Amoco ran an experiment in which they re-coded in Miranda, a lazy functional language, a substantial fraction of their main oil-reservoir simulation code, a critical application. The resulting program was vastly shorter, and its production revealed a number of errors in the existing software. Amoco subsequently transcribed the functional program into C++ with encouraging results. A researcher at the MITRE corporation is using Haskell to prototype his digital signal-processing applications. Researchers at Durham University used Miranda, and later Haskell, in a seven-year project to build LOLITA, a 30,000-line program for natural-language understanding. Query is the query language of the O2 object-oriented database system. O2Query is probably the most sophisticated commercially-available object-oriented database query language and it is a functional language. ICAD Inc market a CAD system for mechanical and aeronautical engineers. The language in which the engineers describe their design is functional, and it uses lazy evaluation extensively to avoid recomputing parts of the design which are not currently visible on the screen. This results in substantial performance improvements. An incestuous example: the Glasgow Haskell compiler is written in Haskell: a 100,000-line application. And another applications

25 Exercícios 1. Conceitue programação de computadores.
2. Quais os principais paradigmas de programação e o que os diferenciam. 3. Faça uma descrição intencional da função: F = {1,3,5,7,...}. 4. Faça uma listagem de outros exemplos de programas de computador que são usados hoje em diferentes áreas do conhecimento e por diferentes profissionais. 5. Apresente exemplo de outras linguagens técnicas usadas pelo ser humano para descrever conhecimento. 6. Os conceitos de correção e de desempenho, se aplicam a qualquer artefato. Escolha 3 artefatos quaisquer e discuta os dois conceitos.


Carregar ppt "Engenharia de Computação"

Apresentações semelhantes


Anúncios Google