22
7/23/2019 Fundamentos1 SlidesA2 E 31072008 http://slidepdf.com/reader/full/fundamentos1-slidesa2-e-31072008 1/22 Fundamentos de Programação 1 Slides Slides N. 2 N. 2  – E / Prof. SIMÃO E / Prof. SIMÃO Jean Marcelo SIMÃO Slides Slides elaborados pelo Prof. Robson Linhares elaborados pelo Prof. Robson Linhares http://www.dainf.ct.utfpr.edu.br/~robson/

Fundamentos1 SlidesA2 E 31072008

Embed Size (px)

Citation preview

Page 1: Fundamentos1 SlidesA2 E 31072008

7/23/2019 Fundamentos1 SlidesA2 E 31072008

http://slidepdf.com/reader/full/fundamentos1-slidesa2-e-31072008 1/22

Fundamentos de Programação 1

Slides Slides N. 2N. 2 – – E / Prof. SIMÃOE / Prof. SIMÃO

Jean Marcelo SIMÃO

Slides Slides 

elaborados pelo Prof. Robson Linhareselaborados pelo Prof. Robson Linhareshttp://www.dainf.ct.utfpr.edu.br/~robson/

Page 2: Fundamentos1 SlidesA2 E 31072008

7/23/2019 Fundamentos1 SlidesA2 E 31072008

http://slidepdf.com/reader/full/fundamentos1-slidesa2-e-31072008 2/22

Fundamentos deProgramação I

Linguagens e paradigmas deprogramação

Page 3: Fundamentos1 SlidesA2 E 31072008

7/23/2019 Fundamentos1 SlidesA2 E 31072008

http://slidepdf.com/reader/full/fundamentos1-slidesa2-e-31072008 3/22

 Tópicos

Classificações das linguagens de

programação Paradigmas de programação

Paradigma estruturado x paradigma OO Histórico das linguagens de programação

Page 4: Fundamentos1 SlidesA2 E 31072008

7/23/2019 Fundamentos1 SlidesA2 E 31072008

http://slidepdf.com/reader/full/fundamentos1-slidesa2-e-31072008 4/22

Classificação das linguagens de

programação

Vários critérios de classificação Por tecnologia de execução Por grau de abstração

Por paradigma

Por geração Por estrutura de tipos

...

Page 5: Fundamentos1 SlidesA2 E 31072008

7/23/2019 Fundamentos1 SlidesA2 E 31072008

http://slidepdf.com/reader/full/fundamentos1-slidesa2-e-31072008 5/22

Classificação das linguagens de

programação – por tecnologia de execução

Linguagem compilada Programas são traduzidos (compilados) parainstruções de máquina antes de serem executados Programa é compilado uma vez e executado várias

vezes Tendem a ter melhor desempenho – quem executa

 já é código de máquina... Tendem a não fazer verificações sofisticadas de

erros de tempo de execução Exemplos

C, C++, Pascal, Java (parcialmente),...

Page 6: Fundamentos1 SlidesA2 E 31072008

7/23/2019 Fundamentos1 SlidesA2 E 31072008

http://slidepdf.com/reader/full/fundamentos1-slidesa2-e-31072008 6/22

Classificação das linguagens de

programação – por tecnologia de execução Linguagem interpretada

Programas são traduzidos (interpretados) para instruções demáquina durante a sua execução Processo pode ser efetuado por um interpretador ou por uma

máquina virtual Interpretação ocorre sempre que o programa é executado

Exceção: JIT (just in time compiling) Tendem a ter pior desempenho – interpretador/máquina

virtual utilizam tempo de processamento Tendem a ser mais sofisticados na detecção de erros em

tempo de execução – depende da tecnologia do

interpretador/máquina virtual Exemplos

BASIC, Java (parcialmente), C# (parcialmente), linguagens descript (VBScript, JavaScript, etc.)

Page 7: Fundamentos1 SlidesA2 E 31072008

7/23/2019 Fundamentos1 SlidesA2 E 31072008

http://slidepdf.com/reader/full/fundamentos1-slidesa2-e-31072008 7/22

Classificação das linguagens de

programação – por grau de abstração

Linguagem de alto nível :

  L  i n g  u

 a g  e n s  d

 e  p r o g  r a

 m a ç  ã

 o .

Linguagens imperativas(procedurais, orientada a objetos)

(e.g. C, Pascal, ...)

(e.g. C++, Object Pascal,...)

e.g. linguagens declarativas(como o Prolog, LISP)

linguagem montadora(assembler)

Page 8: Fundamentos1 SlidesA2 E 31072008

7/23/2019 Fundamentos1 SlidesA2 E 31072008

http://slidepdf.com/reader/full/fundamentos1-slidesa2-e-31072008 8/22

Classificação das linguagens de

programação – por grau de abstração

Linguagem de baixo nível Mais “próxima” da máquina Difícil implementação pelo ser humano - abstrações

muito simples Em comparação com alto nível, programas em

baixo nível tendem a ser: Menores – ocupam menos bytes Mais rápidos

MUITO mais lentos para se implementar Exemplos: diversos tipos de assembly (linguagem

de montagem)

Page 9: Fundamentos1 SlidesA2 E 31072008

7/23/2019 Fundamentos1 SlidesA2 E 31072008

http://slidepdf.com/reader/full/fundamentos1-slidesa2-e-31072008 9/22

Classificação das linguagens de

programação – por grau de abstração

Linguagem de alto nível

Mais “próxima” do ser humano – oferece abstrações maiscomplexas

Não executável diretamente pela máquina

Em comparação com baixo nível, programas em alto nível

tendem a ser: Maiores – ocupam mais bytes

Mais lentos

MUITO mais rápidos para se implementar

Exemplos: uma infinidade de linguagens de programação... C, Pascal, Fortran, LISP, C++, Java, C#, Cobol, Perl, Python, ...

Page 10: Fundamentos1 SlidesA2 E 31072008

7/23/2019 Fundamentos1 SlidesA2 E 31072008

http://slidepdf.com/reader/full/fundamentos1-slidesa2-e-31072008 10/22

Paradigmas de programação

Paradigma – “idéia” Várias definições para paradigma de programação:

Visão que o programador possui sobre a estruturação e aexecução de um programa

Modelos, padrões e estilos suportados por linguagens deprogramação com características comuns

Técnicas ou conceitos amplamente utilizados por programadorespara programar

Paradigmas de programação podem definir um conjunto de“permissões” e “proibições” em técnicas de programação –

objetivo é sempre facilitar o desenvolvimento em um ou maisaspectos Uma linguagem de programação pode suportar mais do que um

paradigma

Page 11: Fundamentos1 SlidesA2 E 31072008

7/23/2019 Fundamentos1 SlidesA2 E 31072008

http://slidepdf.com/reader/full/fundamentos1-slidesa2-e-31072008 11/22

Paradigmas de programação

Exemplos de paradigmas de programação: Programação estruturada Programação imperativa

Programação declarativa

Programação orientada a eventos Programação lógica

Programação orientada a aspecto

Programação orientada a objetos

...

Page 12: Fundamentos1 SlidesA2 E 31072008

7/23/2019 Fundamentos1 SlidesA2 E 31072008

http://slidepdf.com/reader/full/fundamentos1-slidesa2-e-31072008 12/22

Programação estruturada

Paradigma de programação de alto nível

Define que os programas podem ser reduzidos asequências de comandos, decisões e iterações 

Sequência de comandos: ações que são tomadas sempreem sequência, respeitando uma ordem

Decisões: situações em que se deve decidir por prosseguira execução por um caminho dentre vários, de acordo comalguma condição

Iteração: repetição condicionada de determinadasequência de comandos

Page 13: Fundamentos1 SlidesA2 E 31072008

7/23/2019 Fundamentos1 SlidesA2 E 31072008

http://slidepdf.com/reader/full/fundamentos1-slidesa2-e-31072008 13/22

Programação estruturada

Exemplo de algoritmo estruturado:

Algoritmo AreaTrireal base, altura, area;

repita

escreva “Forneça base e altura:”;

leia base, altura;

se base <=0 ou altura <= 0 então

escreva “Valor(es) inválido(s)”;

Fim se

enquanto base <= 0 ou altura <= 0;

Fim repita

area <- base * altura /2;

escreva “A área do tri é “, area;

Fim algoritmo

iteração

decisão

sequência

Page 14: Fundamentos1 SlidesA2 E 31072008

7/23/2019 Fundamentos1 SlidesA2 E 31072008

http://slidepdf.com/reader/full/fundamentos1-slidesa2-e-31072008 14/22

Programação estruturada

Um programa estruturado pode ser modularizado  –

decomposto em módulos com tarefas específicas Vantagens de um módulo:

Reutilização

Facilidade de manutenção Divisão de tarefas

Pode-se afirmar que um programa estruturadoconsiste em um conjunto de módulos “disparados”de acordo com uma lógica

Page 15: Fundamentos1 SlidesA2 E 31072008

7/23/2019 Fundamentos1 SlidesA2 E 31072008

http://slidepdf.com/reader/full/fundamentos1-slidesa2-e-31072008 15/22

Programação estruturada

Exemplo de algoritmo estruturado com módulos:

Função inteiro FATORIAL(N)

inteiro N, RES;

RES <- 1;

enquanto N > 1 faça

RES <- RES * N;

N <- N – 1;

Fim enquanto

FATORIAL <- RES;Fim função

Algoritmo Combinações

inteiro N, P, COMB;

N <- 12;

P <- 5;

COMB <- FATORIAL(N) / (FATORIAL(P) * FATORIAL(N-P));escreva “O número de combinações de 12 elementos 5 a 5 é “, COMB;

Fim algoritmo

módulo

Page 16: Fundamentos1 SlidesA2 E 31072008

7/23/2019 Fundamentos1 SlidesA2 E 31072008

http://slidepdf.com/reader/full/fundamentos1-slidesa2-e-31072008 16/22

Programação orientada a objetos (OO)

Paradigma de programação de alto nível OO apresenta uma visão diferente da programação estruturada

Estruturada: programas são módulos com lógica (decisões,iterações, comandos) executados em uma determinadasequência

OO: programas são compostos por objetos que interagem entre

si Os objetos em um programa OO representam entidades que

existem no contexto daquele programa Os objetos de um programa OO são criados a partir de classes

(modelos de representação) Exemplo: diagrama de classes simplificado do sistema de RH de

uma empresa

Page 17: Fundamentos1 SlidesA2 E 31072008

7/23/2019 Fundamentos1 SlidesA2 E 31072008

http://slidepdf.com/reader/full/fundamentos1-slidesa2-e-31072008 17/22

Programação orientada a objetos (OO)

Pessoa

Empregado Companhia

Município

1..*

0..*

0..* 1

1..* 1

Diagrama de classes de um sistema de RH

Page 18: Fundamentos1 SlidesA2 E 31072008

7/23/2019 Fundamentos1 SlidesA2 E 31072008

http://slidepdf.com/reader/full/fundamentos1-slidesa2-e-31072008 18/22

Programação estruturada x OO

Não cabe comparação – filosofias diferentes

que se adaptam melhor ou pior a sistemascom naturezas diferentes

Via de regra, sistemas mais complexos são

melhor modelados com a abordagem OO Preço: programas maiores, menor desempenho

Page 19: Fundamentos1 SlidesA2 E 31072008

7/23/2019 Fundamentos1 SlidesA2 E 31072008

http://slidepdf.com/reader/full/fundamentos1-slidesa2-e-31072008 19/22

Classificação das linguagens de

programação – por paradigma

Exemplos de linguagens puramente

estruturadas C, Basic, Fortran, Pascal, Cobol, ...

Exemplos de linguagens com suporte a OO C++, Java, Perl, Object Pascal (Delphi), Visual

Basic, C#,...

Page 20: Fundamentos1 SlidesA2 E 31072008

7/23/2019 Fundamentos1 SlidesA2 E 31072008

http://slidepdf.com/reader/full/fundamentos1-slidesa2-e-31072008 20/22

Histórico das linguagens de programação

Dezenas de linguagens foram desenvolvidas,

com diferentes propósitos Cronologicamente (por gerações):

Primeira geração linguagens de máquina – códigos binários das instruções

utilizados diretamente

Segunda geração

linguagens de baixo nível de montagem (assembly).Representação mnemônica dos códigos de máquina

Page 21: Fundamentos1 SlidesA2 E 31072008

7/23/2019 Fundamentos1 SlidesA2 E 31072008

http://slidepdf.com/reader/full/fundamentos1-slidesa2-e-31072008 21/22

Histórico das linguagens de programação

Terceira geração linguagens de programação estruturadas

Exemplos: Fortran (1954), COBOL (1959), BASIC, Pascal, C,etc.

Quarta geração Linguagens de programação orientadas a objeto (OO)

Linguagens de programação não-procedurais (declarativas) Linguagens com suporte a RAD (Rapid Application 

Development)

Exemplos: C++ (1983), Java (1995), SQL (, Delphi (1985),Mathematica, etc.

Quinta geração linguagens lógicas

Exemplos: Prolog, etc.

Page 22: Fundamentos1 SlidesA2 E 31072008

7/23/2019 Fundamentos1 SlidesA2 E 31072008

http://slidepdf.com/reader/full/fundamentos1-slidesa2-e-31072008 22/22

Referências online

Tipos de linguagens de programação

http://www.criarweb.com/artigos/685.php Computer languages history (preview) -

http://www.levenez.com/lang/history.html

Wikipedia