Introdução à Programação - minor
Transcript of 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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