21
Programação de Computadores Linguagens de programação Programas Características da linguagem Python Nesta aula. . . Analisamos na ultima aula a evolução e caraterísticas de computadores e linguagens de programação. Nesta aula iremos ver: 1 Programação de Computadores O que é? Porquê aprender? 2 Linguagens de programação Paradigmas — história 3 Programas Programação estruturada 4 Características da linguagem Python João Pedro PEDROSO Introdução à Programação - minor

Introdução à Programação - minor

  • Upload
    lynga

  • View
    223

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Introdução à Programação - minor

Programação de ComputadoresLinguagens de programação

ProgramasCaracterísticas da linguagem Python

Nesta aula. . .

Analisamos na ultima aula a evolução e caraterísticas de computadores elinguagens de programação. Nesta aula iremos ver:

1 Programação de ComputadoresO que é?Porquê aprender?

2 Linguagens de programaçãoParadigmas — história

3 ProgramasProgramação estruturada

4 Características da linguagem Python

João Pedro PEDROSO Introdução à Programação - minor

Page 2: Introdução à Programação - minor

Programação de ComputadoresLinguagens de programação

ProgramasCaracterísticas da linguagem Python

O que é?Porquê aprender?

O que é a programação de computadores?

Concepção de métodos para resolver problemas usando computadores

Análise e comparação de métodos diferentes

Conjunção de várias competências:matemática linguagens formais para especificar ideiasengenharia projectar, juntar componentes para formar um sistema,

avaliar prós/contras de alternativasciências naturais observar comportamento de sistemas complexos,

tecer hipóteses, testar previsões

João Pedro PEDROSO Introdução à Programação - minor

Page 3: Introdução à Programação - minor

Programação de ComputadoresLinguagens de programação

ProgramasCaracterísticas da linguagem Python

O que é?Porquê aprender?

O que é a programação de computadores? (cont.)

A principal competência de um bom programador é a resolução deproblemas.

Capacidade para formular problemas

Pensar de forma criativa em possíveis soluções

Expressar as soluções de forma clara e precisa.

João Pedro PEDROSO Introdução à Programação - minor

Page 4: Introdução à Programação - minor

Programação de ComputadoresLinguagens de programação

ProgramasCaracterísticas da linguagem Python

O que é?Porquê aprender?

Porquê aprender a programar. . .. . . se não vai ser programador profissional?

trabalhos científicos necessitam de processamento de dados complexo

necessidade de automatizar tarefas repetitivas

aplicações programáveis (e.g. Excel, GNUplot, Matlab, Maple,Mathematica. . . )

estrutura o pensamento para resolver problemas

é um desafio intelectual

é uma competência transponível para outras áreas

é divertido!

João Pedro PEDROSO Introdução à Programação - minor

Page 5: Introdução à Programação - minor

Programação de ComputadoresLinguagens de programação

ProgramasCaracterísticas da linguagem Python

Paradigmas — história

Linguagens de programação

notações formais para exprimir computaçãosintaxe: regras de formação (gramática)

semântica: significado ou acção associados

analogias: expressões aritméticas, símbolos químicos

sintaxe semântica1 + 2 = 3 ok verdade1 + 2 = 4 ok falsidade+ = 3, 2 erro —

H2O ok água2zZ erro —

João Pedro PEDROSO Introdução à Programação - minor

Page 6: Introdução à Programação - minor

Programação de ComputadoresLinguagens de programação

ProgramasCaracterísticas da linguagem Python

Paradigmas — história

Linguagens de baixo nível: linguagem máquina

55 89 e5 83 ec 20 83 7d 0c 00 75 0f ...

linguagem nativa de um computador

códigos numéricos associados a operações elementares

incompreensível para humanos

única linguagem directamente executável pelo computador

João Pedro PEDROSO Introdução à Programação - minor

Page 7: Introdução à Programação - minor

Programação de ComputadoresLinguagens de programação

ProgramasCaracterísticas da linguagem Python

Paradigmas — história

Linguagens de baixo nível: “assembly”

55 push %ebp89 e5 mov %esp,%ebp83 ec 20 sub $0x20,%esp83 7d 0c 00 cmpl $0x0,0xc(%ebp)75 0f jne 1b... ...

representação do código máquina em mnemónicas (texto)

mais clara, para humanos, do que a linguagem máquina

traduzida para código máquina por um programa assemblador

continua a ser específica para cada computador/processador

muito próxima da máquina: desenvolvimento lento, fastidioso,susceptível de erros

usada apenas em aplicações muito específicas

João Pedro PEDROSO Introdução à Programação - minor

Page 8: Introdução à Programação - minor

Programação de ComputadoresLinguagens de programação

ProgramasCaracterísticas da linguagem Python

Paradigmas — história

Linguagens de alto nívelExemplo: linguagem C

p = 1;for(i=2; i<=n; i++)p = p*i;

printf("factorial %d = %d\n", n, p);

mais naturais e mais compreensíveis (para humanos)

mais próximas da formulação matemática dos problemas

facilitam o desenvolvimento de programas

independentes das características do hardware

traduzidas para código máquina por programas especiaisinterpretadores: tradução é efectuada passo-a-passocompiladores: tradução é efectuada uma só vez; produz um executável

em código-máquina

João Pedro PEDROSO Introdução à Programação - minor

Page 9: Introdução à Programação - minor

Programação de ComputadoresLinguagens de programação

ProgramasCaracterísticas da linguagem Python

Paradigmas — história

Cronologia das linguagens mais importantes

1956 Fortran I1958 Lisp1960 Cobol, Algol 601964 PL/I1968 Smalltalk1970 Pascal, Prolog1974 Scheme1976 Fortran 77, ML1978 C (K&R)1980 Smalltalk 801982 Ada 83

1984 Common Lisp, C++, SML1986 Eiffel, Perl, Caml1988 Tcl1990 Fortran 90, Python, Java1994 Ruby, Perl 51996 OCaml1998 Scheme R5RS, C++(ISO),

Haskell 982000 Python 2.0, C#2004 C# 2.0(beta), Java 2 (beta)2008 Python 3.02009 CoffeeScript

João Pedro PEDROSO Introdução à Programação - minor

Page 10: Introdução à Programação - minor

Programação de ComputadoresLinguagens de programação

ProgramasCaracterísticas da linguagem Python

Paradigmas — história

Porquê tantas linguagens?

diferentes níveis de abstração:nível mais alto: mais próximo da formulação dos problemas; facilita a

programação, detecção e correcção de errosnível mais baixo: mais próximo da máquina; potencialmente mais

eficiente

diferentes tipos de problemas:cálculo numérico: Fortran, Csistemas operativos: C/C++sistemas críticos: Ada

scripting: Perl, Tcl, Python

João Pedro PEDROSO Introdução à Programação - minor

Page 11: Introdução à Programação - minor

Programação de ComputadoresLinguagens de programação

ProgramasCaracterísticas da linguagem Python

Paradigmas — história

Porquê tantas linguagens? (2)

diferentes paradigmas:imperativo: Algol, Pascal, C

funcional: Lisp, Scheme, ML, Caml, Haskelllógico: Prolog

orientado a objectos: Smalltalk, C++, Java, C#

subjectividade: estilo, elegância, legibilidade

João Pedro PEDROSO Introdução à Programação - minor

Page 12: Introdução à Programação - minor

Programação de ComputadoresLinguagens de programação

ProgramasCaracterísticas da linguagem Python

Paradigmas — história

Programação estruturada

Antes de surgir

custos excediam sistematicamente orçamentos

desenvolvimento tinha tipicamente atrasos substanciais

produtos finais pouco fiáveis

Forma de programar é disciplinada

programas claros

pode-se provar que/se são correctos

fáceis de modificar

Exemplos:

Pascal (sobretudo no meio académico)

C (sem as limitações do Pascal, muito usada na prática)

João Pedro PEDROSO Introdução à Programação - minor

Page 13: Introdução à Programação - minor

Programação de ComputadoresLinguagens de programação

ProgramasCaracterísticas da linguagem Python

Paradigmas — história

Programação declarativa

ênfase é posta na apresentação do problema, não na forma de oresolver

nem todos os problema são facilmente especificáveis

pouco apropriada para implementação de algoritmos

João Pedro PEDROSO Introdução à Programação - minor

Page 14: Introdução à Programação - minor

Programação de ComputadoresLinguagens de programação

ProgramasCaracterísticas da linguagem Python

Paradigmas — história

Programação orientada por objectos

Antes: foco era posto nas acções

Objectos:facilitam criação de unidades de software com sentidoessas unidades podem ser grandeshá uma ligação entre objectos e a realidadeobjectos :

têm propriedadesdesempenham acções

Classes: representam grupos de objectos relacionados

Com OO:foco era posto em coisas (objectos)melhor organizaçãocódigo mais compreensível → mais reutilizávelmenos problemas de manutenção

João Pedro PEDROSO Introdução à Programação - minor

Page 15: Introdução à Programação - minor

Programação de ComputadoresLinguagens de programação

ProgramasCaracterísticas da linguagem Python

Programação estruturada

O que é um programa?

Um programa é uma sequência de instruções que indicam como levar acabo uma certa operação.A operação pode ser, por exemplo:

a resolução de uma equaçãoencontrar as raízes de um polinómioencontrar texto num documentoprocurar algo na Webetc.

João Pedro PEDROSO Introdução à Programação - minor

Page 16: Introdução à Programação - minor

Programação de ComputadoresLinguagens de programação

ProgramasCaracterísticas da linguagem Python

Programação estruturada

O que é um programa? (2)

Independentemente da linguagem de programação, existem uma sériede classes de instruções que aparecem em todas elas:

input: obter dados do teclado ou de outro dispositivooutput: mostrar dados no écran ou noutro dispositivo

matemática: levar a cabo operações matemáticasexecução condicional: verificar certas condições e executar uma

sequência de instruções de acordo com o resultadodessa verificação

repetição: executar um conjunto de instruções repetidamente,normalmente com alguma pequena variante

João Pedro PEDROSO Introdução à Programação - minor

Page 17: Introdução à Programação - minor

Programação de ComputadoresLinguagens de programação

ProgramasCaracterísticas da linguagem Python

Programação estruturada

Programação estruturada

decompor um programa grande em pequenos módulos (analogia:blocos Lego)

podem ser re-utilizados

mais fáceis de modificar

possibilita testar e/ou provar a correção

programas devem ser escritos para serem lidos por outrosprogramadores

simples e correcto primeiro, eficiente depois

João Pedro PEDROSO Introdução à Programação - minor

Page 18: Introdução à Programação - minor

Programação de ComputadoresLinguagens de programação

ProgramasCaracterísticas da linguagem Python

A linguagem Python

Interpretada de forma “híbrida”:

compilador traduz Python para um código intermédio “byte-code”

execução é feita por um interpretador de “byte-code”

Vantagens: desenvolvimento rápidofácil testar módulosmais eficiente do que um interpretador clássico

Desvantagem: não é tão eficiente como e.g. C/C++ ou Fortrancompilado

João Pedro PEDROSO Introdução à Programação - minor

Page 19: Introdução à Programação - minor

Programação de ComputadoresLinguagens de programação

ProgramasCaracterísticas da linguagem Python

Características da linguagem Python

Simples: pode-se lerum programa quase como se lê um texto em inglêsFácil de aprender; sintaxe é muito simplesDesenvolvida em código livre: pode-se copiar, distribuir, ler e modificar ocódigo fonte, e usá-lo em novos programas livresLinguagem de alto nívelPortátil (pode ser usada em Linux, Windows, FreeBSD, Mac OS, Solaris,OS/2, Amiga, AROS, AS/400, BeOS, OS/390, z/OS, Palm OS, QNX,VMS, Psion, Acorn RISC OS, VxWorks, PlayStation, Sharp Zaurus,Windows CE, Pocket PC, Nokia Series 60 mobile phones)InterpretadaOrientada a objectosExtensível: se se necessitar de algoritmos críticos, pode-seprograma-los em C ou C++ e utilizá-los em PythonEmbebível: pode-se utilizar Python em programas escritos em C ouC++, para dar a estas linguagens possibilidade de scriptingMuito boa biblioteca (batteries included).Usada no “mundo real”: Google, Microsoft, Yahoo!, NASA, LawrenceLivermore Labs, Industrial Light & Magic. . .Sítio oficial: http://www.python.org

João Pedro PEDROSO Introdução à Programação - minor

Page 20: Introdução à Programação - minor

Programação de ComputadoresLinguagens de programação

ProgramasCaracterísticas da linguagem Python

Nesta aula. . .

Linguagens de programação: classificação

Programa: definição

Algumas características da linguagem Python

João Pedro PEDROSO Introdução à Programação - minor

Page 21: Introdução à Programação - minor

Programação de ComputadoresLinguagens de programação

ProgramasCaracterísticas da linguagem Python

Próxima aula

Introdução ao Python

João Pedro PEDROSO Introdução à Programação - minor