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?