Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950...

35
Conceitos de Linguagens de Programação - Características Paavo Soeiro

Transcript of Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950...

Page 1: Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950 a 1960 1954 – FORTRAN Desenvolvida pela IBM por uma equipe liderada por John W.

Conceitos de

Linguagens de

Programação -

Características Paavo Soeiro

Page 2: Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950 a 1960 1954 – FORTRAN Desenvolvida pela IBM por uma equipe liderada por John W.

Motivação Para que possa escolher uma linguagem

apropriada ao problema.

Melhorar o entendimento da linguagem utilizada.

Facilitar o aprendizado de uma nova linguagem.

Fazer um melhor uso de determinada linguagem.

Facilitar o projeto de uma nova linguagem, ou uma

nova funcionalidade.

Page 3: Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950 a 1960 1954 – FORTRAN Desenvolvida pela IBM por uma equipe liderada por John W.

Pré-história

1842-1843

Ada Lovelace criou um

algoritmo para o cálculo

da sequência de Bernoulli

usando a máquina

analítica de Charles

Babbage

Page 4: Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950 a 1960 1954 – FORTRAN Desenvolvida pela IBM por uma equipe liderada por John W.

História 1950 a 1960

1954 – FORTRAN

Desenvolvida pela IBM por uma equipe

liderada por John W. Backus.

1958 – LISP

Desenvolvida por John McCarthy durante um

projeto de pesquisa em inteligência artificial.

1959 – COBOL

Criado por um comitê de investigadores de

várias instituições civis e governamentais

Page 5: Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950 a 1960 1954 – FORTRAN Desenvolvida pela IBM por uma equipe liderada por John W.

1967 a 1978 Nascimento dos paradigmas fundamentais

1962 – Simula

1964 – BASIC

1970 – Pascal

1969 a 1973 – C Dennis Ritchie, no AT&T Bell Labs

1972 – Smalltalk Orientação a objetos

1972 – Prolog Programação logica

Page 6: Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950 a 1960 1954 – FORTRAN Desenvolvida pela IBM por uma equipe liderada por John W.

1980

Módulos, performance

1983 – Ada

Sistemas modulares

1983 – C++

Fortalecimento da orientação a objetos

1987 – Perl

Page 7: Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950 a 1960 1954 – FORTRAN Desenvolvida pela IBM por uma equipe liderada por John W.

1990 – Era da Internet

1990 – Haskell

1991 – Python

1991 – Java

1993 – Ruby

1993 – Lua

1995 – JavaScript

1995 – PHP

2000 – C#

Page 8: Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950 a 1960 1954 – FORTRAN Desenvolvida pela IBM por uma equipe liderada por John W.

Fonte: TIOBE

Page 9: Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950 a 1960 1954 – FORTRAN Desenvolvida pela IBM por uma equipe liderada por John W.

Objetivos

Permitir que uma pessoa escreva

programas que ajudem a resolver

problemas.

Facilitando a comunicação entre o

programador e a máquina.

Page 10: Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950 a 1960 1954 – FORTRAN Desenvolvida pela IBM por uma equipe liderada por John W.

Programação estruturada

Programação modular

Programação orientada a objetos

Programação linear

Page 11: Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950 a 1960 1954 – FORTRAN Desenvolvida pela IBM por uma equipe liderada por John W.

Paradigma

Paradigma Imperativo:

Procedural

Estrutura de blocos

Orientação a objetos

Computação distribuída

Paradigma Declarativo:

Funcional

Lógica

Page 12: Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950 a 1960 1954 – FORTRAN Desenvolvida pela IBM por uma equipe liderada por John W.

Grau de abstração

Linguagem de programação de baixo nível

Assembly

Linguagem de programação de médio nível

C

Linguagem de programação de alto nível

Java

Page 13: Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950 a 1960 1954 – FORTRAN Desenvolvida pela IBM por uma equipe liderada por John W.

Geração

Segundo Henri Bal e Dick Grune:

Primeira geração - linguagem de máquina.

Segunda geração - linguagens de montagem (assembly).

Terceira geração - Linguagens procedurais.

Quarta geração - Linguagens aplicativas.

Quinta geração - Linguagens voltadas a Inteligência artificial como as linguagens lógicas (Prolog) e as linguagens funcionais (Lisp).

Sexta geração - Redes neurais.

Page 14: Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950 a 1960 1954 – FORTRAN Desenvolvida pela IBM por uma equipe liderada por John W.

Interpretada x Compilada

Interpretada:

Programa é executado instrução a

instrução

Cada comando é traduzido depois

executado

Compilada:

Programa é executado somente após a

tradução completa do código fonte.

Page 15: Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950 a 1960 1954 – FORTRAN Desenvolvida pela IBM por uma equipe liderada por John W.

Características

Simplicidade

Abstração de dados

Ortogonalidade

Expressividade

Eficiência

Portabilidade

Leitura

Confiabilidade

Page 16: Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950 a 1960 1954 – FORTRAN Desenvolvida pela IBM por uma equipe liderada por John W.

Abstração de dados

Descrever famílias de objetos focando

nos aspectos fundamentais, sem entrar

em possíveis detalhes específicos sobre

um objeto em particular.

A abstração de dados torna-se cada fez

mais importante a medida que o grau de

complexidade do problema aumenta.

Page 17: Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950 a 1960 1954 – FORTRAN Desenvolvida pela IBM por uma equipe liderada por John W.

Encapsulamento

Técnica que permite a separação de

aspectos internos e externos de um

objeto.

Impedir o acesso direto aos atributos.

Provê métodos de acesso para esses

atributos.

Page 18: Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950 a 1960 1954 – FORTRAN Desenvolvida pela IBM por uma equipe liderada por John W.

Herança

Permite que características comuns a um

grupo de classes, seja encapsulado em

uma superclasse, a qual é estendida em

subclasses que herdam as características

da classe base e adiciona características

especificas.

Herança simples

Herança múltipla

Page 19: Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950 a 1960 1954 – FORTRAN Desenvolvida pela IBM por uma equipe liderada por John W.

Polimorfismo

“Muitas formas”

Permite que classes derivadas de uma

classe base invoquem métodos com

mesma assinatura, porem com

comportamentos diferentes.

Page 20: Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950 a 1960 1954 – FORTRAN Desenvolvida pela IBM por uma equipe liderada por John W.

Tipos de polimorfismo

Inclusão – O mais básico, ponteiro (referencia) da classe pai, aponta para instancia da classe filha.

Animal animal = new Cachorro();

Paramétrico

Generics em Java

Sobrecarga

Coerção

Casting implicito

Page 21: Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950 a 1960 1954 – FORTRAN Desenvolvida pela IBM por uma equipe liderada por John W.

Escopo de variáveis

Escopo diz respeito a visibilidade de uma

variável.

Qual porção de código enxerga a variável?

O escopo pode ser:

Dinâmico

Estático

Quanto a visibilidade:

Local

Global

Page 22: Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950 a 1960 1954 – FORTRAN Desenvolvida pela IBM por uma equipe liderada por John W.

C vs Java

Características Gerais:

C

Paradigma procedural

Compilado

Java

Orientado a objetos

Hibrido (bytecode + interpretador)

Page 23: Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950 a 1960 1954 – FORTRAN Desenvolvida pela IBM por uma equipe liderada por John W.

Tipos de dados int

float

double

char

int

float

double

char

byte

short

long

boolean

Page 24: Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950 a 1960 1954 – FORTRAN Desenvolvida pela IBM por uma equipe liderada por John W.

Estruturas de repetição e controle if

else

switch

for

while

do while

break

continue

return

if

else

switch

for

while

do while

break

continue

return

try

catch

finally

Page 25: Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950 a 1960 1954 – FORTRAN Desenvolvida pela IBM por uma equipe liderada por John W.

Palavras reservadas C

Page 26: Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950 a 1960 1954 – FORTRAN Desenvolvida pela IBM por uma equipe liderada por John W.

Java

Reservadas porem não utilizadas

Page 27: Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950 a 1960 1954 – FORTRAN Desenvolvida pela IBM por uma equipe liderada por John W.

Operadores aritméticos Operador binário Descrição

= Atribuição

+ Soma

- Subtração

/ Divisão

% Modulo (obtém o resto da divisão)

Page 28: Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950 a 1960 1954 – FORTRAN Desenvolvida pela IBM por uma equipe liderada por John W.

Incremento e decremento Operador Instrução Pós-fixado Pré-fixado

++ var = var+1;

var = var++;

ou

var++;

var = ++var;

ou

++var;

-- var = var-1;

var = var--;

ou

var--;

var= --var;

ou

--var;

Page 29: Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950 a 1960 1954 – FORTRAN Desenvolvida pela IBM por uma equipe liderada por John W.

Relacional

Operador Descrição

> Maior

>= Maior igual

< Menor

<= Menor igual

== Igualdade

!= Diferente

Page 30: Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950 a 1960 1954 – FORTRAN Desenvolvida pela IBM por uma equipe liderada por John W.

Logico

Operador Descrição

&& AND

|| OR

! NOT (operador de negação)

Page 31: Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950 a 1960 1954 – FORTRAN Desenvolvida pela IBM por uma equipe liderada por John W.

Bit a bit

Operador Descrição

& AND

| OR

^ XOR (OR exclusivo)

<< Deslocamento para esquerda

>> Deslocamento para direita

Page 32: Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950 a 1960 1954 – FORTRAN Desenvolvida pela IBM por uma equipe liderada por John W.

Portabilidade

O programa em C precisa é distribuído

em formato binário executável e precisa

ser compilado em cada arquitetura que

for executado.

Em Java, o programa é distribuído em

bytecode e necessita de uma maquina

virtual para ser executado.

Page 33: Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950 a 1960 1954 – FORTRAN Desenvolvida pela IBM por uma equipe liderada por John W.

Segurança

O programador C possui mais liberdades

ao escrever seus códigos.

Ex.: acessando regiões de memoria fora

do escopo da aplicação por meio de

ponteiros.

Page 34: Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950 a 1960 1954 – FORTRAN Desenvolvida pela IBM por uma equipe liderada por John W.

Encapsulamento

Java prove mecanismos de

encapsulamento:

public

protected

private

C

Através de struct

Page 35: Apresentação do PowerPointrogerio/material_auxiliar/CLP20122... · 2014-03-17 · História 1950 a 1960 1954 – FORTRAN Desenvolvida pela IBM por uma equipe liderada por John W.

Aplicações

C

kernel Linux

Excel

Java

Netbeans