CONCEITOS DE LINGUAGEM
DE PROGRAMAÇÃO
CARACTERÍSTICAS
João Gabriel Ganem Barbosa
Sumário
Motivação
¨ História
¨ Linha do Tempo
¨ Divisão
¨
¤ Conceitos
¤ Paradigmas
¤ Geração
Tipos de Dados
¨ Operadores
¨ Estruturada vs OO
¨
¤ Vantagens
¤ Desvantagens
Introdução - Motivacional
¨
Por que estudar CLP?
Conhecer os princípios e mecanismos por trás da
linguagem
¨ Facilitar a curva de aprendizado das linguagens
¨ Melhorar o uso e diminuir o tempo de programação
¨ Escolher melhor a linguagem para resolver um
problema
¨
História
¨
¨
¨
O primeiro trabalho foi da Ada Lovelace, em 1843.
Uma das primeiras linguagens de programação
para computadores foi Plankalkul
O primeiro compilador escrito foi para a linguagem
A-0, em 1952 por Grace Hopper
História
¨
A primeira linguagem de alto nível amplamente
usada foi Fortran, criada em 1954
Linha do Tempo – Década de 50
1954 – FORTRAN
1958 – LISP
1959 - COBOL
Décadas de 60 e 70
1962 – Simula
¨ 1964 – Basic
¨ 1970 – Pascal
¨ 1973 – C
¨ 1972 – Smalltalk (OO)
¨ 1972 - Prolog
¨
Década de 80
¨
1982 – ADA (Sistemas modulares)
¨
1983 – C++
¨
1987 – Perl
Década de 90
1990 – Haskell
¨ 1991 – Python
¨ 1991 – Java
¨ 1993 – Ruby
¨ 1993 – Lua
¨ 1995 – JavaScript
¨ 1995 – PHP
¨ 2000 – C#
¨
Conceitos
¤ Programação
Estruturada
¤ Programação Modular
¤ Programação Linear
¤ Programação Orientada a Objetos
Programação Estruturada
¤ Três
estruturas: Sequência, Decisão e Repetição
¤ Haskell
¤ Dominou
¤ Ainda
a criação de software até a OO
é amplamente utilizada
Programação Modular
¤ Desenvolvimento
¤ Modula-2
de rotinas através de módulos
e Modula-3
Programação Linear
¤ Utilizado
para resolução de problemas matemáticos
Programação Orientada a Objetos
Baseado na composição e interação entre unidades
chamadas de objetos
Maior facilidade em modelar o mundo real
Mais utilizada atualmente para desenvolvimento
Paradigmas
¨
Imperativos
¤ Procedural
n BASIC
e Fortran
¤ Estrutura
n Pascal
de Blocos
eC
¤ Orientação
n C++,
a Objetos
Java, Python
¤ Computação
n Ada
Distribuída
Paradigmas
¨
Declarativos
¤ Funcional
n LISP
e Haskell
¤ Programação
n Prolog
Lógica
Gerações
¨
1ª Geração
¤ Estruturas
de controle orientadas a máquina
¤ Fortran
¨
2ª Geração
¤ Estruturadas
¤ Algol
¨
para minimizar o uso do GOTO
60
3ª Geração
¤ Enfase
¤ Pascal
a Simplicidade e Eficiência
Gerações
¨
4ª Geração
¤ Linguagens
com abstração de dados
¤ Encapsulamento
¤ Ada
¨
5ª Geração
¤ Orientação
a Objeto
¤ Paradigma Funcional
¤ Java, Prolog
Características das Linguagens de
Programação
Simplicidade
¨ Abstração de dados
¨ Ortogonalidade
¨ Expressividade
¨ Eficiência
¨ Portabilidade
¨ Leitura
¨ Confiabilidade
¨
Abstração de Dados
¨
¨
Abstração é o processo ou resultado de
generalização por redução do conteúdo da
informação de um conceito ou fenômeno observável
A abstração de dados permite reduzir a
informação necessária para a criação de um
programa através das variáveis envolvidas em uma
única entidade fechada.
Abstração de Dados
¨
¨
Exemplo:
struct Cliente { !
Nome!
Idade!
CPF!
}!
Encapsulamento
¨
Separar um programa em partes
¨
Tornar o software Flexível
¨
Fácil Manutenção
¨
Impedir acesso a atributos
¨
Acesso se dá por métodos definidos
Polimorfismo
¨
Classes derivadas de uma Classe base conseguem
tomar diferentes formas
¨
Herança
¨
Mesmo métoodo, comportamentos diferentes
Tipos de Dados
int
¨ float
¨ double
¨ char
¨ byte
¨ short
¨ long
¨ boolean
¨
Estruturas de Repetição
if
¨ else
¨ switch
¨ for
¨ while
¨ do while
¨ break
¨ continue
¨ return
¨
try
¨ catch
¨ finally
¨
Palavras Reservadas C
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
auto
break
case
char
const
continue
default
do double
else
enum
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
extern
float
for
goto
if
int
long
register
return
short
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
signed
sizeof
static struct
switch
typedef
union
unsigned
void
volatile
while
Palavras Reservadas Java
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
package
import
new
class
interface
enum
abstract
final
implements
extends
instanceof
public
private
protected
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
super
this
throw
throws
try
catch
finally
if
else
for
do
while
switch
case
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
default
break
continue
return
boolean
byte
short
int
long
double
float
char
void
strictfp
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
transient
volatile
synchronized
native
assert
static
goto
const
true
false
null
Operadores Aritméticos
Operador
Descrição
=
Atribuição
+
Soma
-
Subtração
/
Divisão
%
Resto
Incremento e Decremento
Operador
Descrição
++
Incremento ( x++ ou ++x)
--
Decremento (x-- ou --x)
Operadores Relacionais
Operador
Descrição
>
Maior que
<
Menor que
>=
Maior ou igual
<=
Menor ou igual
==
Igual a
!=
Diferente de
Operadores Lógicos
Operador
Descrição
&&
E
||
OU
!
Não (Negação)
Operadores Bit-a-Bit
Operador
Descrição
&
E
|
OU
ˆ
XOR (Ou exclusivo)
<<
Shift a esquerda
>>
Shift a direita
Estruturada Vs OO
¨
Portabilidade
¤ Em
Java, o programa roda em cima de uma máquina
virtual, que pode ser instalada nos sistemas mais
utilizados (linux, OS e Windows), permitindo uma
portabilidade muito maior que o C
¤ Em
C, o programa é distribuído no formato binário
executável exclusivamente para a plataforma em que
foi compilado, podendo dar conflito até em tipos
diferentes de processador
Estruturada Vs OO
¨
Segurança
¤ Em
C, é possível ao programador acessar áreas de
memória que não dizem respeito ao programa.
¤ Vírus podem ser criados em C
¤ Java é amplamente utilizado em serviços WEB por ser
mais seguro (mas nem tanto).
Estruturada Vs OO
¨
Encapsulamento
¤ Em
Java, pode-se declarar os atributos e métodos
como public, protected e private
¤ Em
C, através de Structs
Estruturada Vs OO
¨
Aplicações
¤ Java
n OpenOffice
n Jdownloader
n Netbeans
¤ C
n Kernel
do Linux
CLP
¨
Dúvidas?