Programação Estruturada e OO Aula 1.2 – Introdução a Paradigmas de Programação Prof. Bruno Moreno [email protected] Motivação ● Por que existe mais de uma LP? – Propósitos diferentes; – Avanços tecnológicos; – Interesses comerciais (linguagens comerciais); – Cultura; – Background científico; 2 Motivação ● Linguagens de programação e linguagens naturais são análogas? Léxico – Conjunto de palavras do idioma; Sintaxe Semântica – Regras que constroem as frases; – Refere-se ao significado das frases; – Estuda a disposição das palavras na frase; – Relação lógica das palavras; 3 Introdução ● Uma linguagem de programação possui a parte léxica, sintática e semântica – Léxica: o conjunto de “palavras-chaves” que formam a linguagem, i.e. a gramática da LP; – Sintática: o conjunto de regras que determinam quais palavras-chaves podem ser combinadas; – Semântica: a lógica representada pelo conjunto de palavras chaves combinadas; 4 Introdução ● Características de um LP – Léxico, sintático e semântico bem definidos; – Implementável (executável) com eficiência; – Universal ● Expressa todo e qualquer problema computável; 5 Introdução ● O que é um paradigma de programação? – ● Modelo, padrão ou estilo de programação que agrupam características comuns; Diferentes paradigmas de programação: – Paradigma Imperativo; – Paradigma Funcional; – Paradigma Lógico; – Paradigma Orientado a Objetos; 6 Tipos de Paradigmas ● Paradigma Imperativo; ● Paradigma Funcional; ● Paradigma Lógico; ● Paradigma Orientado a Objetos; 7 Tipos de Paradigmas ● Paradigma Imperativo; ● Paradigma Funcional; ● Paradigma Lógico; ● Paradigma Orientado a Objetos; 8 Paradigma Imperativo ● Os programas são desenvolvidos de acordo com o conceito de estado (modelado por variáveis) e ações que manipulam-no: Entrada Programa Saída ESTADO 9 Paradigma Imperativo ● ● Também denominado de procedural, por incluir subrotinas ou procedimentos como mecanismo de estruturação; Primeiro paradigma a surgir e ainda utilizado; Procedural = Imperativo = Procedimental 10 Paradigma Imperativo ● Exemplo: somar os naturais de 1 a 10 (em C): int total = 0; for (int i = 1; i<= 10; ++i) total = total + i; – O programa é uma sequência de instruções; – O resultado é obtido por diferentes estados das variáveis i e total; 11 Paradigma Imperativo ● Exemplo: somar os naturais de 1 a 10 (em C): int total = 0; for (int i = 1; i<= 10; ++i) total = total + i; – Simulação: passo instrução i total 1 total = 0 ? 0 2 i = 1 1 0 3 total = total + i 1 1 4 ++i 2 1 5 total = total + i 2 3 ... ... ... ... 21 total = total + i 10 55 22 ++i 11 55 12 Tipos de Paradigmas ● Paradigma Imperativo; ● Paradigma Funcional; ● Paradigma Lógico; ● Paradigma Orientado a Objetos; 13 Paradigma Funcional ● ● Os programas desenvolvidos são vistos como funções que descrevem uma relação explícita e precisa entre entrada e saída (E/S); Esse estilo de programação evita estados ou dados mutáveis; 14 Paradigma Funcional ● Exemplo: somar os naturais de 1 a 10 (em Haskell): sum[..10] ● Exemplo: somar os naturais de 1 a 10 (em R): sum(1:10) ● Basicamente, o programa consiste na aplicação da função sum à lista de inteiros; 15 Tipos de Paradigmas ● Paradigma Imperativo; ● Paradigma Funcional; ● Paradigma Lógico; ● Paradigma Orientado a Objetos; 16 Paradigma Lógico ● ● ● Os programas são desenvolvidos de acordo com relações entre E/S; Faz uso da lógica matemática; Na prática inclui características imperativas por questões de eficiência; 17 Paradigma Lógico ● A programação é feita usando inferência lógical: – Se declara fatos a respeito de objetos e seus relacionamentos; – Define-se regras sobre os objetos e seus relacionamentos; – Se faz perguntas sobre os objetos e seus relacionamentos; 18 Tipos de Paradigmas ● Paradigma Imperativo; ● Paradigma Funcional; ● Paradigma Lógico; ● Paradigma Orientado a Objetos; 19 Paradigma OO ● ● ● ● Não é um paradigma no sentido estrito: é uma subclassificacão do imperativo; A diferença é mais de metodologia quanto à concepção e modelagem do sistema; A grosso modo, uma aplicação é estruturada em módulos (classes) que agrupam um estado e operações (métodos) sobre este; Classes podem ser estendidas e/ou usadas como tipos (cujos elementos são objetos). 20 Paradigma OO ● Imperativo: Entrada Saída Programa ESTADO ● OO: Entrada Programa Saída ESTADO Entrada Programa ESTADO Saída ... Entrada Programa ESTADO Saída ... Entrada Programa Saída ESTADO 21 Histórico das LPs 22 Java ● Popularidade (RedMonk ranking) 23 Java ● Popularidade (TIOBE ranking) 24 JAVA: Introdução, Histórico, Conceitos Básicos 25 Introdução ● O que é Java? – Linguagem de programação OO ● Década de 90 ● Sun Microsystems ● Multiplataforma: bytecodes ● Máquina Virtual Java 26 Bibliografia 27 Histórico Green Project 1991 A Sun decidiu lançar uma nova versão do Oak para a Internet: applets Oak→Java JDK 1.0 1995 1996 JDK 1.1 JDK 1.2 1997 1998 Java Swing e segurança J2SE, J2EE e J2ME 1999 JDK para linux O *7 foi desenvolvido usando uma linguagem específica: Oak. 28 Histórico Robo enviado a Marte com JAVA Abertura do código de Java 2000 2001 2002 2003 2007 Mais de 50 milhões de celulares com J2ME IDE Eclipse; J2ME para Linux; J2EE patterns 400 grupos de usuários no mundo; JavaOne com mais de 25 mil desenvolvedores; Netbeans open-source 29 Histórico ● Em 2010, a Oracle comprou a Sun MicroSystems 30 Princípios para criação de Java 1. Simples, OO e familiar 2. Robusta e segura 3. Portável e independente de arquitetura 4. Deve ser executável com alta performance 5. Interpretada, multi-tarefa e dinâmica 31 Bytecodes 32 Bytecodes ● ● ● ● O código é compilado, gerando um conjunto de instruções chamado de byte-code; O byte-code é aplicado à Máquina Virtual Java (JVM) que se encarrega de interpretar os comandos para o SO onde o programa está rodando; Ou seja, a máquina virtual traduz as instruções do código Java para instruções válidas no SO em que está rodando; Esse byte-code poderá então ser interpretado por qualquer máquina virtual Java (Linux, Windows, Palm OS, Solari, etc) 33 Compilação e Execução ● Você pode usar um arquivo texto normal para programar: 34 Compilação e Execução ● Após isso, erros podem ser detectados por meio do processo de compilação usando o terminal: – javac NomeDoSeuArquivoJava.java ● ● – Esse comando executa o compilador Java; Caso o processo de compilação for OK, o compilador gera os bytecodes (arquivo .class) que pode ser executado em qualquer local que tenha uma JVM; java NomeDoSeuArquivoJava ● Esse comando chama a JVM para executaro seu programa que foi compilado no passo anterior; 35 Compilação e Execução ● ● Esse processo pode ser demorado e trabalhoso dependendo da complexidade do sistema sendo desenvolvido; Por isso, existem os IDEs (Integrated Development Environment) – É um ambiente integrado de programação; – Apresenta erros de compilação em “tempo real”; – Otimiza o trabalho do compilador; 36 IDEs ● Ambiente de programação – Netbeans 37 IDEs ● Ambiente de programação – Eclipse 38 IDEs ● Ambiente de programação – BlueJ ● ● Focado no nível introdutório Ambiente fácil de usar e propício para o aprendizado em Java 39 Componentes principais ● API Java – Java tem código aberto e livre – API é o conjunto de documentação a respeito do código de Java. – No mundo do desenvolvimento, é comum se disponbilizar uma API de determinada linguagem. 40 Componentes principais ● API Java 41 Componentes principais ● JVM: Java Virtual Machine – É uma máquina virtual que executa os bytecodes de um sistema em Java – Cada SO possui uma máquina virtual – Um sistema desenvolvido em Java roda em qualquer máquina virtual – É essa arquitetura que proporciona a portabilidade de Java 42 Componentes principais ● JVM: Java Virtual Machine 43 Comunidades ● Grupos de Java – guj.com.br – soujava.org.br ● Listas de discussões ● Grupos no facebook ● Stackoverflow (em pt e em) ● – stackoverflow.com – pt.stackoverflow.com GOOGLE!!! 44