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

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

Introdução à Programação Um enfoque orientado a construção de modelos em programas baseados em objetos Gustavo Motta Departamento de Informática - UFPB.

Apresentações semelhantes


Apresentação em tema: "Introdução à Programação Um enfoque orientado a construção de modelos em programas baseados em objetos Gustavo Motta Departamento de Informática - UFPB."— Transcrição da apresentação:

1 Introdução à Programação Um enfoque orientado a construção de modelos em programas baseados em objetos Gustavo Motta Departamento de Informática - UFPB

2 (C) 2008 Gustavo Motta2 1. Introdução O que é ciência da computação? O que é ciência da computação? Conceitos da disciplina Conceitos da disciplina Ciência da computação é – e sempre será – o interesse entre a manipulação mecanizada e humana de símbolos [algoritmos], usualmente referidos como computação e programação, respectivamente. Ciência da computação é – e sempre será – o interesse entre a manipulação mecanizada e humana de símbolos [algoritmos], usualmente referidos como computação e programação, respectivamente. Edsger W. Dijkstra, 1989 Ciência (engenharia) da computação é o estudo sistemático de processos algorítmicos teoria, análise, projeto, eficiência, implementação e aplicação que descrevem e transformam informação. Ciência (engenharia) da computação é o estudo sistemático de processos algorítmicos teoria, análise, projeto, eficiência, implementação e aplicação que descrevem e transformam informação. ACM/IEEE-CS, 1989 Algoritmo – conceito fundamental na ciência da computação

3 (C) 2008 Gustavo Motta3 Conceito de algoritmo Conceito de algoritmo Conjunto de passos que definem a forma como uma tarefa é executada Conjunto de passos que definem a forma como uma tarefa é executada Passos ordenados, não ambíguos e executáveis Passos ordenados, não ambíguos e executáveis Atividade finita Atividade finita Exemplos Exemplos Instruções para utilização de caixas bancários Instruções para utilização de caixas bancários Regras para cálculo do imposto de renda Regras para cálculo do imposto de renda Procedimentos para cálculo com a operações fundamentais da aritmética Procedimentos para cálculo com a operações fundamentais da aritmética Instruções para matrícula na universidade Instruções para matrícula na universidade Introdução – O estudo dos algoritmos

4 (C) 2008 Gustavo Motta4 Exemplo – algoritmo de divisão euclidiana Exemplo – algoritmo de divisão euclidiana Condição de entrada – pré-condição Condição de entrada – pré-condição Dois números naturais Dois números naturais a – dividendo a – dividendo b – divisor, sendo b diferente de zero b – divisor, sendo b diferente de zero Condição de saída – pós-condição Condição de saída – pós-condição Dois números naturais únicos Dois números naturais únicos q – quociente q – quociente r – resto, r – resto, onde r maior ou igual a zero e menor que b Tal que: a = b q + r 1. Introdução – O estudo dos algoritmos

5 (C) 2008 Gustavo Motta5 Exemplo – algoritmo de divisão euclidiana Exemplo – algoritmo de divisão euclidiana Passos para execução Passos para execução 1. Atribuir, inicialmente, o valor de zero para q e o valor de a para r 2. Caso b seja maior que r, o algoritmo pára e o resultado é do quociente é q e do resto é r 3. Subtrair b de r e atribuir o resultado para r 4. Somar um ao valor de q 5. Executar o passo Introdução – O estudo dos algoritmos

6 (C) 2008 Gustavo Motta6 Principais características dos algoritmos Principais características dos algoritmos Concebidos por seres humanos Concebidos por seres humanos Representados por programas (software) escritos em linguagens de programação Representados por programas (software) escritos em linguagens de programação Alto nível Alto nível JAVA, C, PASCAL, C++, ADA, ALGOL, FORTRAN JAVA, C, PASCAL, C++, ADA, ALGOL, FORTRAN Baixo nível – linguagens de máquina e assembler (montagem) Baixo nível – linguagens de máquina e assembler (montagem) Executados por máquinas Executados por máquinas Físicas - hardware Físicas - hardware Computadores (analógicos ou digitais), mecânicos, eletromecânicos, eletrônicos,... Computadores (analógicos ou digitais), mecânicos, eletromecânicos, eletrônicos,... Abstratas Abstratas Engendradas na mente humana, formalismo matemático, máquinas virtuais implementadas em programas de computador Engendradas na mente humana, formalismo matemático, máquinas virtuais implementadas em programas de computador 1. Introdução – O estudo dos algoritmos

7 (C) 2008 Gustavo Motta7 Origens na matemática Origens na matemática Objetivava encontrar um conjunto de comandos suficiente para descrever, unificadamente, a resolução de um problema qualquer de um determinado tipo Objetivava encontrar um conjunto de comandos suficiente para descrever, unificadamente, a resolução de um problema qualquer de um determinado tipo Mecanização do cálculo aritmético, por exemplo Mecanização do cálculo aritmético, por exemplo Idéia de reduzir todo raciocínio a um processo mecânico (automatizado), baseado em algum tipo de cálculo formal Idéia de reduzir todo raciocínio a um processo mecânico (automatizado), baseado em algum tipo de cálculo formal Alguns personagens Alguns personagens Euclides (c. 330 a.C. a 277 a.C.) – matemático grego Euclides (c. 330 a.C. a 277 a.C.) – matemático grego Axiomatização e método dedutivo para demonstração de teoremas – primórdios da busca pela automatização do raciocínio Axiomatização e método dedutivo para demonstração de teoremas – primórdios da busca pela automatização do raciocínio Leibniz ( ) – matemático alemão Leibniz ( ) – matemático alemão Vislumbrou a estrutura de um sistema onde processos mentais de uma inferência poderiam ser reduzidos a um procedimento simples – mecânico – regras para manipulação de símbolos Vislumbrou a estrutura de um sistema onde processos mentais de uma inferência poderiam ser reduzidos a um procedimento simples – mecânico – regras para manipulação de símbolos 1. Introdução – O estudo dos algoritmos

8 (C) 2008 Gustavo Motta8 Exemplo de automatização do raciocínio Exemplo de automatização do raciocínio Premissas Premissas Todos os cães são mamíferos Todos os cães são mamíferos Todos os mamíferos são animais Todos os mamíferos são animais Conclusão – insight, inspiração Conclusão – insight, inspiração Todos os cães são animais Todos os cães são animais Silogismo categórico de Aristóteles Silogismo categórico de Aristóteles Raciocínio dedutivo estruturado formalmente a partir de duas proposições, ditas premissas, das quais, por inferência, se obtém necessariamente uma terceira, chamada conclusão Raciocínio dedutivo estruturado formalmente a partir de duas proposições, ditas premissas, das quais, por inferência, se obtém necessariamente uma terceira, chamada conclusão 1. Introdução – O estudo dos algoritmos

9 (C) 2008 Gustavo Motta9 Exemplo de automatização do raciocínio Exemplo de automatização do raciocínio Premissas Premissas Todos os As são B tanto A quanto B são A (A = AB) Todos os As são B tanto A quanto B são A (A = AB) Todos aqueles que são cães e que são mamíferos, são os cães Todos aqueles que são cães e que são mamíferos, são os cães Todos os Bs são C tanto B quanto C são B (B = BC) Todos os Bs são C tanto B quanto C são B (B = BC) Todos aqueles que são mamíferos e que são animais, são os mamíferos Todos aqueles que são mamíferos e que são animais, são os mamíferos Conclusão Conclusão Todos As são C tanto A quanto C são A (A = AC) Todos As são C tanto A quanto C são A (A = AC) Todos aqueles que são cães e que são animais, são os cães Todos aqueles que são cães e que são animais, são os cães A representação algébrica (simbólica) do silogismo facilita implementar a inferência por meio de um algoritmo A representação algébrica (simbólica) do silogismo facilita implementar a inferência por meio de um algoritmo 1. Introdução – O estudo dos algoritmos

10 (C) 2008 Gustavo Motta10 Exemplo de automatização do raciocínio Exemplo de automatização do raciocínio Algoritmo Algoritmo Pré-condição Pré-condição Duas premissas Duas premissas A=AB (premissa 1) A=AB (premissa 1) B=BC (premissa 2) B=BC (premissa 2) Pós-condição Pós-condição A=AC (conclusão) A=AC (conclusão) Passos para execução – regra de inferência Passos para execução – regra de inferência 1.Substitua B na premissa 1 pelo valor correspondente a B da premissa 2, obtendo a equação resultante A=ABC 2.Na equação resultante do passo anterior, substitua AB pelo valor correspondente a AB na premissa 1, obtendo a equação final A=AC (pós-condição) e o algoritmo pára 1. Introdução – O estudo dos algoritmos

11 (C) 2008 Gustavo Motta11 O que se pode concluir? O que se pode concluir? A regra de inferência anterior prescinde da semântica expressa nas premissas A regra de inferência anterior prescinde da semântica expressa nas premissas Todos os cães são mansos Todos os cães são mansos Todos os mansos não mordem Todos os mansos não mordem Todos os cães não mordem Todos os cães não mordem Um argumento é avaliado pela validade de sua inferência e não pela verdade de suas premissas Um argumento é avaliado pela validade de sua inferência e não pela verdade de suas premissas Caso as premissas sejam verdadeiras, a conclusão é verdadeira Caso as premissas sejam verdadeiras, a conclusão é verdadeira 1. Introdução – O estudo dos algoritmos

12 (C) 2008 Gustavo Motta12 O que se pode concluir? O que se pode concluir? Uma vez concebido (descoberto) um algoritmo, sua execução não dependerá do conhecimento dos princípios em que se baseia Uma vez concebido (descoberto) um algoritmo, sua execução não dependerá do conhecimento dos princípios em que se baseia Uma calculadora digital sabe dividir números inteiros (algoritmo de divisão euclidiana), mas não sabe o que significa números inteiros, divisão, algoritmos, etc. Uma calculadora digital sabe dividir números inteiros (algoritmo de divisão euclidiana), mas não sabe o que significa números inteiros, divisão, algoritmos, etc. Algoritmos codificam conhecimento (raciocínio) necessário a resolução de um problema Algoritmos codificam conhecimento (raciocínio) necessário a resolução de um problema A semântica dos algoritmos, das pré e pós condições dependem do observador humano A semântica dos algoritmos, das pré e pós condições dependem do observador humano A seqüência de passos de um algoritmo corresponde a prova (demonstração) de um teorema, onde a pré-condição é a hipótese e a pós-condição é a tese A seqüência de passos de um algoritmo corresponde a prova (demonstração) de um teorema, onde a pré-condição é a hipótese e a pós-condição é a tese 1. Introdução – O estudo dos algoritmos

13 (C) 2008 Gustavo Motta13 Quais as limitações dos algoritmos? Quais as limitações dos algoritmos? Não são capazes de calcular funções não-computáveis Não são capazes de calcular funções não-computáveis Função para provar teoremas em geral Função para provar teoremas em geral Na aritmética Na aritmética Teorema da incompletude de Gödel – Kurt Gödel ( ) matemático austro-húngaro Teorema da incompletude de Gödel – Kurt Gödel ( ) matemático austro-húngaro Impossibilidade de se construir uma máquina que, de modo consistente, resolva todos os problemas da matemática, apenas com os recursos do próprio sistema Impossibilidade de se construir uma máquina que, de modo consistente, resolva todos os problemas da matemática, apenas com os recursos do próprio sistema Função para decidir se um programa qualquer pára, ou não, sendo conhecido os dados de entrada deste Função para decidir se um programa qualquer pára, ou não, sendo conhecido os dados de entrada deste Problema da parada – formulado por Alan M. Turing (matemático inglês, ) em 1936 Problema da parada – formulado por Alan M. Turing (matemático inglês, ) em 1936 Etc. Etc. Não são auto-organizáveis - depende do ser humano Não são auto-organizáveis - depende do ser humano A capacidade (inteligência) das máquinas limita-se ao conhecimento embutido no algoritmo A capacidade (inteligência) das máquinas limita-se ao conhecimento embutido no algoritmo 1. Introdução – O estudo dos algoritmos

14 (C) 2008 Gustavo Motta14 Questões no desenvolvimento de algoritmos Questões no desenvolvimento de algoritmos Perspectiva em pequena escala Perspectiva em pequena escala Como projetar novos algoritmos? Como projetar novos algoritmos? Como representá-los em linguagens de programação? Como representá-los em linguagens de programação? Qual paradigma de programação? Qual paradigma de programação? Orientado a funções - Orientado a objetos Orientado a funções - Orientado a objetos Perspectiva em grande escala – Engenharia de Software Perspectiva em grande escala – Engenharia de Software Como estruturar/lidar com programas com milhões de linhas de código? Como estruturar/lidar com programas com milhões de linhas de código? Como compreender os problemas do mundo real para implementar soluções em programas de computador? Como compreender os problemas do mundo real para implementar soluções em programas de computador? Como lidar com os fatores humanos? Como lidar com os fatores humanos? desenvolvedores e clientes desenvolvedores e clientes Qual processo de construção de software a adotar? Qual processo de construção de software a adotar? 1. Introdução – O estudo dos algoritmos

15 (C) 2008 Gustavo Motta15 Máquinas algorítmicas (computacionais) Máquinas algorítmicas (computacionais) Objetivam executar mecanicamente (automaticamente) as tarefas (computáveis) especificadas nos algoritmos Objetivam executar mecanicamente (automaticamente) as tarefas (computáveis) especificadas nos algoritmos Tipos de máquinas Tipos de máquinas Abstratas Abstratas Existentes na mente humana Existentes na mente humana Máquinas virtuais Máquinas virtuais Máquinas formalizadas matematicamente - Máquinas formalizadas matematicamente - Máquinas de Turing (1936) Máquinas de Turing (1936) Define um sistema formal para computação universal Máquinas de Post (1943) Máquinas de Post (1943) 1. Introdução – O desenvolvimento das máquinas algorítmicas

16 (C) 2008 Gustavo Motta16 Máquinas algorítmicas (computacionais) Máquinas algorítmicas (computacionais) Tipos de máquinas - Físicas Tipos de máquinas - Físicas Mecânicas Mecânicas Ábaco (c a. C. na Babilônia) Ábaco (c a. C. na Babilônia) Régua de cálculo (Willian Oughtred, 1632) – analógico Régua de cálculo (Willian Oughtred, 1632) – analógico Dispositivos para cálculos astronômicos – analógicos Dispositivos para cálculos astronômicos – analógicos Quadrantes Quadrantes Compasso de setor Compasso de setor Antikythera – dispositivo cálculo de calendário lunar (79 a. C.) Antikythera – dispositivo cálculo de calendário lunar (79 a. C.) Etc. Etc. 1. Introdução – O desenvolvimento das máquinas algorítmicas

17 (C) 2008 Gustavo Motta17 Máquinas algorítmicas (computacionais) Máquinas algorítmicas (computacionais) Tipos de máquinas - Físicas Tipos de máquinas - Físicas Mecânicas – baseadas em engrenagens Mecânicas – baseadas em engrenagens Máquinas de calcular - digitais Máquinas de calcular - digitais Blaise Pascal (1642) máquina para somar ( , matemático francês) Blaise Pascal (1642) máquina para somar ( , matemático francês) G. W. Leibniz (1673) – máquina com as 4 operações G. W. Leibniz (1673) – máquina com as 4 operações Máquina de Jacquard ( ) Máquina de Jacquard ( ) Programa expressos em cartões perfurados especificando o padrão de desenho de tecidos em teares (1801) Programa expressos em cartões perfurados especificando o padrão de desenho de tecidos em teares (1801) Operários com menor qualificação poderiam fazer desenhos elaborados Operários com menor qualificação poderiam fazer desenhos elaborados O conhecimento de desenhar foi transferido para os cartões perfurados (programas) processados em teares (máquinas) O conhecimento de desenhar foi transferido para os cartões perfurados (programas) processados em teares (máquinas) Os operários forneciam basicamente a energia mecânica Os operários forneciam basicamente a energia mecânica 1. Introdução – O desenvolvimento das máquinas algorítmicas

18 (C) 2008 Gustavo Motta18 Máquinas algorítmicas (computacionais) Máquinas algorítmicas (computacionais) Tipos de máquinas - Físicas Tipos de máquinas - Físicas Mecânicas – baseadas em engrenagens – digital Mecânicas – baseadas em engrenagens – digital Máquina diferencial de Babbage (1822) – matemático Inglês (1792- Máquina diferencial de Babbage (1822) – matemático Inglês ( ) Produção de tabelas logarítmicas Produção de tabelas logarítmicas Projeto iniciado nunca foi concluído Projeto iniciado nunca foi concluído Máquina analítica de Babbage (1933) Máquina analítica de Babbage (1933) Primeiro modelo teórico de computador universal Primeiro modelo teórico de computador universal Não foi implementado – totalmente mecânico – movido à vapor Não foi implementado – totalmente mecânico – movido à vapor Os algoritmos não eram amarrados à máquina, que poderia ser programada livremente Os algoritmos não eram amarrados à máquina, que poderia ser programada livremente 1842 – Primeiro programa escrito por Lady Ada Augusta Byron 1842 – Primeiro programa escrito por Lady Ada Augusta Byron 1. Introdução – O desenvolvimento das máquinas algorítmicas

19 (C) 2008 Gustavo Motta19 Máquinas algorítmicas (computacionais) Máquinas algorítmicas (computacionais) Tipos de máquinas - Físicas Tipos de máquinas - Físicas Eletromecânicas – baseadas em engrenagens – digital Eletromecânicas – baseadas em engrenagens – digital Tabulador de Hollerith (1890) Tabulador de Hollerith (1890) Tabular o resultado do censo nos EUA Tabular o resultado do censo nos EUA Cartões perfurados Cartões perfurados Representavam números que eram interpretados e somados em acumuladores Fundou a Hollerith Tabulating Machines, compondo uma das empresas que resultou na International Business Machine – IBM em 1924 Fundou a Hollerith Tabulating Machines, compondo uma das empresas que resultou na International Business Machine – IBM em Introdução – O desenvolvimento das máquinas algorítmicas

20 (C) 2008 Gustavo Motta20 Máquinas algorítmicas (computacionais) Máquinas algorítmicas (computacionais) Tipos de máquinas - Físicas Tipos de máquinas - Físicas 1 o Computador eletromecânico (relé) universal 1 o Computador eletromecânico (relé) universal Z1 (1936) – Konrad Zuze ( ) engenheiro civil alemão Z1 (1936) – Konrad Zuze ( ) engenheiro civil alemão Computadores eletrônicos Computadores eletrônicos Mark I (1944) – Howard Aiken – Harvard University – relés comandados eletronicamente Mark I (1944) – Howard Aiken – Harvard University – relés comandados eletronicamente ENIAC (1946) – Universidade da Pensilvânia – válvulas ENIAC (1946) – Universidade da Pensilvânia – válvulas EDVAC (1949) – John von Neumann EDVAC (1949) – John von Neumann Concebeu a moderna arquitetura de computadores Concebeu a moderna arquitetura de computadores Programa armazenado Programa armazenado 1. Introdução – O desenvolvimento das máquinas algorítmicas

21 (C) 2008 Gustavo Motta21 As primeiras linguagens As primeiras linguagens Frutos da busca de um procedimento efetivo (mecânico) para verificar a validade de uma proposição matemática Frutos da busca de um procedimento efetivo (mecânico) para verificar a validade de uma proposição matemática Busca frustrada, mas que resultou no desenvolvimento da teoria da computação Busca frustrada, mas que resultou no desenvolvimento da teoria da computação Usadas para representar algoritmos, possuindo Usadas para representar algoritmos, possuindo Sintaxe para determinar a forma com que as entidades de um programa são estruturadas Sintaxe para determinar a forma com que as entidades de um programa são estruturadas Semântica para determinar o significado de um programa, isto é, o que provoca quando executado por uma máquina algorítmica e como é entendido por um programador Semântica para determinar o significado de um programa, isto é, o que provoca quando executado por uma máquina algorítmica e como é entendido por um programador 1. Introdução – Histórico das linguagens de programação

22 (C) 2008 Gustavo Motta22 As primeiras linguagens As primeiras linguagens Subconjunto não ambíguo de linguagens naturais Subconjunto não ambíguo de linguagens naturais Português, inglês, francês, etc. Português, inglês, francês, etc. Linguagens artificiais Linguagens artificiais Universais – capaz de expressar qualquer algoritmo Universais – capaz de expressar qualquer algoritmo Formal e matematicamente bem definidas Formal e matematicamente bem definidas O -cálculo (lambda-cáclulo) proposto por Alonzo Church ( – matemático norte-americano) em 1936 O -cálculo (lambda-cáclulo) proposto por Alonzo Church ( – matemático norte-americano) em 1936 Cálculo para expressar todas as funções computáveis Cálculo para expressar todas as funções computáveis Base teórica das linguagens de programação Base teórica das linguagens de programação Lógica combinatorial proposta em 1924 por Moses Shönfinkel Lógica combinatorial proposta em 1924 por Moses Shönfinkel Equivalente ao -cálculo Equivalente ao -cálculo Linguagem de máquina Linguagem de máquina Instruções diretamente interpretada por computadores Instruções diretamente interpretada por computadores Difíceis para programar e para entender Difíceis para programar e para entender 1. Introdução – Histórico das linguagens de programação

23 (C) 2008 Gustavo Motta23 As primeiras linguagens As primeiras linguagens Linguagens artificiais Linguagens artificiais Linguagens de montagem (assembler) - fins dos anos 40 início dos anos 50 Linguagens de montagem (assembler) - fins dos anos 40 início dos anos 50 Notação simbólica para instruções em linguagem de máquina Notação simbólica para instruções em linguagem de máquina Uso de mnemônicos Uso de mnemônicos Primeiros tradutores – assembler linguagem de máquina Primeiros tradutores – assembler linguagem de máquina Dependente de máquinas específicas Dependente de máquinas específicas Instruções muito primitivas Instruções muito primitivas Linguagens de baixo nível Linguagens de baixo nível 1. Introdução – Histórico das linguagens de programação LOAD R, X ADD R, 1 LOAD X, R LOAD R X LOAD R X ADD R 1 ADD R LOAD X R LOAD X R tradução

24 (C) 2008 Gustavo Motta24 As primeiras linguagens As primeiras linguagens Linguagens artificiais Linguagens artificiais Linguagens de alto nível Linguagens de alto nível Meados dos anos 50 Meados dos anos 50 Objetivos Objetivos Expressar algoritmos independente de uma máquina particular Expressar algoritmos independente de uma máquina particular Linguagem mais próxima da linguagem natural Linguagem mais próxima da linguagem natural Facilitar a programação e o entendimento de programas Facilitar a programação e o entendimento de programas Compiladores para traduzir automaticamente programas em linguagens de alto nível para programas em linguagem de máquina Compiladores para traduzir automaticamente programas em linguagens de alto nível para programas em linguagem de máquina 1. Introdução – Histórico das linguagens de programação X = X + 1 LOAD R, X ADD R, 1 LOAD X, R tradução Processo de compilação código fonte alto nível código objeto intermediário código objeto linguagem de máquina

25 (C) 2008 Gustavo Motta25 Simula Fortran Pascal Lisp Cobol C ML Prolog Miranda Smalltalk Ada Algol-68 Algol-60 PL/1 Linguagens orientadas a objetos Linguagens concorrentes e imperativas Linguagens funcionais Linguagens lógicas C Java Haskell Fonte: adaptação da fig. 1.1 do livro Programming Language Concepts and Paradigms de David A. Watt. Prentice Hall, Introdução – Histórico das linguagens de programação

26 (C) 2008 Gustavo Motta26 Inicialmente – anos 40, 50 e meados de 60 Inicialmente – anos 40, 50 e meados de 60 Computadores Computadores Custo elevado Custo elevado Primeiro HD criado pela IBM em 1956, com 5Mbytes de capacidade, custava mais de US$ ,00 Primeiro HD criado pela IBM em 1956, com 5Mbytes de capacidade, custava mais de US$ ,00 PDP-1 – primeiro minicomputador – fabricado pela DEC nos anos 60, custava aproximadamente US$ ,00, e possuía 4 Kbytes de memória principal PDP-1 – primeiro minicomputador – fabricado pela DEC nos anos 60, custava aproximadamente US$ ,00, e possuía 4 Kbytes de memória principal Grandes em tamanho Grandes em tamanho Pequena capacidade de memória e processamento Pequena capacidade de memória e processamento Programas Programas Usados para resolver problemas simples Usados para resolver problemas simples Baixo custo de desenvolvimento Baixo custo de desenvolvimento Aplicações militares, científicas e em organizações de grande porte Aplicações militares, científicas e em organizações de grande porte Lei de Moore (1965) – co-fundador da Intel Lei de Moore (1965) – co-fundador da Intel O número de transistores por polegada quadrada nos circuitos integrados dobrará a cada ano (revisto nos anos 70 para a cada 18 meses) O número de transistores por polegada quadrada nos circuitos integrados dobrará a cada ano (revisto nos anos 70 para a cada 18 meses) 1. Introdução – Evolução da ciência da computação

27 (C) 2008 Gustavo Motta27 Hoje Hoje Computadores Computadores Baixo custo Baixo custo Simples de usar e de dimensões reduzidas Simples de usar e de dimensões reduzidas Grande capacidade de memória e processamento Grande capacidade de memória e processamento Interconectados em rede Interconectados em rede Programas Programas Usados para resolver problemas complexos Usados para resolver problemas complexos Elevados custos de desenvolvimento Elevados custos de desenvolvimento Processo de desenvolvimento complexo Processo de desenvolvimento complexo Importância do fator humano Importância do fator humano Crise de software permanente Crise de software permanente Aplicações de software permeiam toda a sociedade Aplicações de software permeiam toda a sociedade Exemplos: lazer, entretenimento, cultura e informação Exemplos: lazer, entretenimento, cultura e informação Sociedade da informação Sociedade da informação 1. Introdução – Evolução da ciência da computação

28 (C) 2008 Gustavo Motta28 O que são modelos? O que são modelos? Representação simplificada e abstrata de fenômeno ou situação concreta, e que serve de referência para a observação, estudo ou análise (dicionário Aurélio) Representação simplificada e abstrata de fenômeno ou situação concreta, e que serve de referência para a observação, estudo ou análise (dicionário Aurélio)fenômeno Os fenômenos existentes no mundo real são muitos complexos para serem modelados em todos os seus detalhes Os fenômenos existentes no mundo real são muitos complexos para serem modelados em todos os seus detalhes Adota-se um processo para construção de modelos que Adota-se um processo para construção de modelos que Considera a realidade sendo formada por diferentes entidades que exibem um certo comportamento exterior e uma certa organização interior Considera a realidade sendo formada por diferentes entidades que exibem um certo comportamento exterior e uma certa organização interior Permite pensar como entidades interagem para compor novas entidades Permite pensar como entidades interagem para compor novas entidades Abstrai as propriedades externas (observáveis, essenciais) de uma entidade para distingui-las das propriedades internas (não observáveis, acidentais), considerando o problema que o observador que resolver Abstrai as propriedades externas (observáveis, essenciais) de uma entidade para distingui-las das propriedades internas (não observáveis, acidentais), considerando o problema que o observador que resolver Abstraiessenciaisacidentais Abstraiessenciaisacidentais 1. Introdução – A construção de modelo para resolução de problemas René Magritte, Belvedere (1958), litogravuraBelvedere (1958), litogravura - M. C. EscherM. C. Escher Waterfall (1961), litogravura Waterfall (1961), litogravura - M. C. EscherM. C. Escher

29 (C) 2008 Gustavo Motta29 Exemplos Exemplos Problema 1: Controlar o acendimento-apagamento de uma lâmpada Problema 1: Controlar o acendimento-apagamento de uma lâmpada A construção de uma solução (modelo) visa identificar A construção de uma solução (modelo) visa identificar Propriedades essenciais – observáveis externamente Propriedades essenciais – observáveis externamente A lâmpada está acesa ou apagada – estado da lâmpada A lâmpada está acesa ou apagada – estado da lâmpada Os comandos (procedimentos, operações, controles) para acender e apagar a lâmpada Os comandos (procedimentos, operações, controles) para acender e apagar a lâmpada e visa desprezar e visa desprezar Propriedades acidentais – não essenciais Propriedades acidentais – não essenciais O fabricante da lâmpada O fabricante da lâmpada O tipo da lâmpada – incandescente ou fluorescente O tipo da lâmpada – incandescente ou fluorescente O preço da lâmpada O preço da lâmpada O acabamento do interruptor O acabamento do interruptor A cor dos fios de conexão A cor dos fios de conexão A última pessoa que instalou a lâmpada A última pessoa que instalou a lâmpada Etc. Etc. 1. Introdução – A construção de modelo para resolução de problemas

30 (C) 2008 Gustavo Motta30 Exemplos Exemplos Problema 1: Controlar o acendimento-apagamento de uma lâmpada Problema 1: Controlar o acendimento-apagamento de uma lâmpada Como representar as propriedades essenciais? Como representar as propriedades essenciais? Identificar um conjunto de variáveis para representar o estado da entidade modelada Identificar um conjunto de variáveis para representar o estado da entidade modelada Especificar um conjunto de operações que determinam o comportamento observável da entidade com base em seu estado, podendo modificá-lo Especificar um conjunto de operações que determinam o comportamento observável da entidade com base em seu estado, podendo modificá-lo 1. Introdução – A construção de modelo para resolução de problemas acende() estadoDaLampada Lâmpada apaga() mostraEstado() Operações que permitem interagir com o modelo da entidade (fenômeno) observada (estudado)

31 (C) 2008 Gustavo Motta31 Exemplos Exemplos Problema 1: Controlar o acendimento-apagamento de uma lâmpada Problema 1: Controlar o acendimento-apagamento de uma lâmpada Representação do modelo numa pseudo-linguagem de programação Representação do modelo numa pseudo-linguagem de programação Cabe ressaltar que este modelo considerou os aspectos essenciais na perspectiva do problema enunciando Cabe ressaltar que este modelo considerou os aspectos essenciais na perspectiva do problema enunciando Caso fosse para representar as lâmpadas à venda num supermercado, as propriedade essenciais seriam diferentes Caso fosse para representar as lâmpadas à venda num supermercado, as propriedade essenciais seriam diferentes 1. Introdução – A construção de modelo para resolução de problemas modelo Lampada inicio do modelo variavel estadoDaLampada = apagada; operacao acende() inicio estadoDaLampada = aceso; fim operacao apaga() inicio estadoDaLampada = apagado; fim operacao mostraEstado() inicio se (estadoDaLampada == aceso) exiba A lâmpada está acesa; senão exiba A lâmpada está apagada; fim fim do modelo Declaração do estado entidade representada Declaração das operações da entidade representada Símbolo para operador que atribui um valor (à direita) a uma variável (à esquerda) Símbolo para operador de igualdade que determina se dois valores são iguais

32 (C) 2008 Gustavo Motta32 Que impacto a ciência da computação e a programação, em particular, trazem para a sociedade e para os indivíduos? Que impacto a ciência da computação e a programação, em particular, trazem para a sociedade e para os indivíduos? Implicações nos direitos autorais Implicações nos direitos autorais Uso militar Uso militar Redução de empregos Redução de empregos Privacidade dos indivíduos Privacidade dos indivíduos Conhecimento das capacidades, limitações e ramificações das tecnologias da informação Conhecimento das capacidades, limitações e ramificações das tecnologias da informação Antagonismos, ambivalências, dilemas Antagonismos, ambivalências, dilemas Afinal, o que é ética? Afinal, o que é ética? 1. Introdução – Aspectos éticos


Carregar ppt "Introdução à Programação Um enfoque orientado a construção de modelos em programas baseados em objetos Gustavo Motta Departamento de Informática - UFPB."

Apresentações semelhantes


Anúncios Google