Apresentação do PowerPoint - Programa de Pós

Propaganda
Conceitos de
Linguagens de
Programação Características
Paavo Soeiro
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.
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
História 1950 a 1960

1954 – FORTRAN


1958 – LISP


Desenvolvida pela IBM por uma equipe
liderada por John W. Backus.
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
1967 a 1978





Nascimento dos paradigmas fundamentais
1962 – Simula
1964 – BASIC
1970 – Pascal
1969 a 1973 – C


1972 – Smalltalk


Dennis Ritchie, no AT&T Bell Labs
Orientação a objetos
1972 – Prolog

Programação logica
1980
 Módulos,
performance
 1983 – Ada

Sistemas modulares
 1983

– C++
Fortalecimento da orientação a objetos
 1987
– Perl
1990 – Era da Internet
 1990
– Haskell
 1991 – Python
 1991 – Java
 1993 – Ruby
 1993 – Lua
 1995 – JavaScript
 1995 – PHP
 2000 – C#
Fonte: TIOBE
Objetivos
 Permitir
que uma pessoa escreva
programas que ajudem a resolver
problemas.
 Facilitando a comunicação entre o
programador e a máquina.
 Programação
estruturada
 Programação modular
 Programação orientada a objetos
 Programação linear
Paradigma
 Paradigma




Procedural
Estrutura de blocos
Orientação a objetos
Computação distribuída
 Paradigma


Imperativo:
Funcional
Lógica
Declarativo:
Grau de abstração
 Linguagem

Assembly
 Linguagem

de programação de médio nível
C
 Linguagem

de programação de baixo nível
Java
de programação de alto nível
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.
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.
Características
 Simplicidade
 Abstração
de dados
 Ortogonalidade
 Expressividade
 Eficiência
 Portabilidade
 Leitura
 Confiabilidade
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.
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.
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
Polimorfismo
 “Muitas
formas”
 Permite que classes derivadas de uma
classe base invoquem métodos com
mesma assinatura, porem com
comportamentos diferentes.
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
Escopo de variáveis

Escopo diz respeito a visibilidade de uma
variável.


O escopo pode ser:



Qual porção de código enxerga a variável?
Dinâmico
Estático
Quanto a visibilidade:


Local
Global
C vs Java
 Características

Gerais:
C
 Paradigma
procedural
 Compilado

Java
 Orientado
a objetos
 Hibrido (bytecode + interpretador)
Tipos de dados
 int
 float
 double
 char
 int
 float
 double
 char
 byte
 short
 long
 boolean
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
Palavras reservadas C
Java
Reservadas porem não utilizadas
Operadores aritméticos
Operador binário
Descrição
=
Atribuição
+
Soma
-
Subtração
/
Divisão
%
Modulo (obtém o resto da divisão)
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;
Relacional
Operador
Descrição
>
Maior
>=
Maior igual
<
Menor
<=
Menor igual
==
Igualdade
!=
Diferente
Logico
Operador
Descrição
&&
AND
||
OR
!
NOT (operador de negação)
Bit a bit
Operador
Descrição
&
AND
|
OR
^
XOR (OR exclusivo)
<<
Deslocamento para esquerda
>>
Deslocamento para direita
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.
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.
Encapsulamento
 Java
prove mecanismos de
encapsulamento:



public
protected
private
C

Através de struct
Aplicações
C


kernel Linux
Excel
 Java

Netbeans
Download