Você está na página 1de 12

Programa¸c˜ao I

Licenciatura em Engenharia Inform´atica

2011–2012

Vitor Beires Noguera

Escola de Ciˆencia e Tencologia

 

´

Universidade de

Evora

e Tencologia   ´ Universidade de Evora PI VBN Introdu¸c˜ao ´a Programa¸c˜ao Linguagens de

PI

VBN

Introdu¸c˜ao ´a

Programa¸c˜ao

Linguagens de

Programa¸c˜ao

O que ´e a programa¸c˜ao

O que ´e a programa¸c˜ao PI VBN Introdu¸c˜ao ´a Programa¸c˜ao Linguagens de Programa¸c˜ao Concep¸c˜ao de

PI

VBN

Introdu¸c˜ao ´a

Programa¸c˜ao

Linguagens de

Programa¸c˜ao

Concep¸c˜ao de m´etodos para resolver problemas usando computadores

Concep¸c˜ao de m´etodos para resolver problemas usando computadores

An´alise e compara¸c˜ao de m´etodos diferentes

An´alise e compara¸c˜ao de m´etodos diferentes

Combina¸c˜ao de v´arias competˆencias de

Combina¸c˜ao de v´arias competˆencias de

matem´atica: linguagens formais para especificar ideias engenharia: projectar, unir componentes para formar um sistema, avaliar pr´os/contras de alternativas ciˆencias naturais observar comportamento de sistemas complexos, tecer hip´oteses, testar previs˜oes

Linguagens de Programa¸c˜ao

Linguagens formais

As linguagens formais tem

As linguagens formais tem

sintaxe: regras ”gramaticais“ semˆantica: significado ou ac¸c˜ao associada

Existem linguagens formais j´a conhecidas:

Existem linguagens formais j´a conhecidas:

express˜oes aritm´eticas: 3 + 3 = 6 estrutura molecular: H 2 O

Exerc´ıcio: Qual a semˆantica dos exemplos acima? Ilustre casos de sintaxe incorrecta.

Exerc´ıcio: Qual a semˆantica dos exemplos acima? Ilustre casos de sintaxe incorrecta.

dos exemplos acima? Ilustre casos de sintaxe incorrecta. PI VBN Introdu¸c˜ao ´a Programa¸c˜ao Linguagens de

PI

VBN

Introdu¸c˜ao ´a

Programa¸c˜ao

Linguagens de

Programa¸c˜ao

Programa¸c˜ao

Estruturada

Linguagem Python

Debugging

Defini¸c˜ao (Linguagens de Programa¸c˜ao)

Linguagens formais que foram concebidas para exprimir computa¸c˜oes

Linguagens de Baixo e de Alto N´ıvel I

Linguagens de Baixo N´ıvel

Linguagem/C´odigo m´aquina

Exemplo: 01010101 linguagem mais baixa e nativa dos computadores unica´ linguagem directamente execut´avel pelo computador dif´ıcil compreens˜ao ”Looking at a program written in machine language is vaguely comparable to looking at a DNA molecule atom by atom.”(Hofstadter)

Assembly

Exemplo: push, Utiliza mnemˆonicas (texto) para representar c´odigo maquina Existem programas (assembladores) para traduzir para c´odigo maquina Pr´oximo da linguagem maquina

para c´odigo maquina Pr´oximo da linguagem maquina PI VBN Introdu¸c˜ao ´a Programa¸c˜ao Linguagens de

PI

VBN

Introdu¸c˜ao ´a

Programa¸c˜ao

Linguagens de

Programa¸c˜ao

Programa¸c˜ao

Estruturada

Linguagem Python

Debugging

Linguagens de Baixo e de Alto N´ıvel II

Linguagens de Alto N´ıvel

Exemplo: C, Java, Prolog, Python,mais pr´oximas da formula¸c˜ao matem´atica dos problemas mais ”f´aceis” “port´aveis” Traduzidas para

mais pr´oximas da formula¸c˜ao matem´atica dos problemasExemplo: C, Java, Prolog, Python, mais ”f´aceis” “port´aveis” Traduzidas para c´odigo maquina por

mais ”f´aceis”mais pr´oximas da formula¸c˜ao matem´atica dos problemas “port´aveis” Traduzidas para c´odigo maquina por

“port´aveis”matem´atica dos problemas mais ”f´aceis” Traduzidas para c´odigo maquina por interpretadores ou

Traduzidas para c´odigo maquina por interpretadores ou compiladoresJava, Prolog, Python, mais pr´oximas da formula¸c˜ao matem´atica dos problemas mais ”f´aceis” “port´aveis”

para c´odigo maquina por interpretadores ou compiladores PI VBN Introdu¸c˜ao ´a Programa¸c˜ao Linguagens de

PI

VBN

Introdu¸c˜ao ´a

Programa¸c˜ao

Linguagens de

Programa¸c˜ao

Programa¸c˜ao

Estruturada

Linguagem Python

Debugging

Interpretador

´a Programa¸c˜ao Linguagens de Programa¸c˜ao Programa¸c˜ao Estruturada Linguagem Python Debugging Interpretador 1.5

Linguagens de Baixo e de Alto N´ıvel III

Linguagens de Baixo e de Alto N´ıvel III   PI VBN Introdu¸c˜ao ´a Programa¸c˜ao Linguagens de
 

PI

VBN

Introdu¸c˜ao ´a

Programa¸c˜ao

Linguagens de

Programa¸c˜ao

Programa¸c˜ao

Estruturada

Linguagem Python

Compilador

Debugging

Linguagens de Programa¸c˜ao Programa¸c˜ao Estruturada Linguagem Python Compilador Debugging 1.6

Porquˆe tantas linguagens?

Permitem diferentes n´ıveis de abstrac¸c˜ao

Alto n´ıvel: mais pr´oximo da formula¸c˜ao do problemas; facilita a programa¸c˜ao, detec¸c˜ao e correc¸c˜ao de errosBaixo n´ıvel: mais pr´oximo da maquina; possivelmente mais eficiente

Baixo n´ıvel: mais pr´oximo da maquina; possivelmente mais eficienten´ıvel: mais pr´oximo da formula¸c˜ao do problemas; facilita a programa¸c˜ao, detec¸c˜ao e correc¸c˜ao de erros

mais pr´oximo da maquina; possivelmente mais eficiente PI VBN Introdu¸c˜ao ´a Programa¸c˜ao Linguagens de

PI

VBN

Introdu¸c˜ao ´a

Programa¸c˜ao

Linguagens de

Programa¸c˜ao

Programa¸c˜ao

Estruturada

Linguagem Python

Debugging

Para problemas diferentes

C´alculo num´ericos: FortranRacioc´ınio: Prolog Scripting: Perl, Python

Racioc´ınio: PrologC´alculo num´ericos: Fortran Scripting: Perl, Python

Scripting: Perl, PythonC´alculo num´ericos: Fortran Racioc´ınio: Prolog

Diferentes paradigmas

imperativo: C, Pascalfuncional: Haskell, Caml l´ogico: Prolog orientado a objectos: Java

funcional: Haskell, Camlimperativo: C, Pascal l´ogico: Prolog orientado a objectos: Java

l´ogico: Prologimperativo: C, Pascal funcional: Haskell, Caml orientado a objectos: Java

orientado a objectos: Javaimperativo: C, Pascal funcional: Haskell, Caml l´ogico: Prolog

Programa¸c˜ao Estruturada

Programa¸c˜ao Estruturada   PI VBN Introdu¸c˜ao ´a Programa¸c˜ao Linguagens de
 

PI

VBN

Introdu¸c˜ao ´a

Programa¸c˜ao

Linguagens de

Programa¸c˜ao

Programa¸c˜ao

Estruturada

decompor um programa em pequenos m´odulosLinguagem Python

Linguagem Python

Debugging

m´odulos podem ser re-utilizadosem pequenos m´odulos Linguagem Python Debugging podem-se testar e/ou provar que s˜ao correctos f´aceis de

podem-se testar e/ou provar que s˜ao correctosPython Debugging m´odulos podem ser re-utilizados f´aceis de modificar programas devem ser escritos para

f´aceis de modificarpodem-se testar e/ou provar que s˜ao correctos programas devem ser escritos para serem lidos por humanos!

programas devem ser escritos para serem lidos por humanos! Coment´arios, estrutura, nomes das “coisas”,re-utilizados podem-se testar e/ou provar que s˜ao correctos f´aceis de modificar correcto - simples - eficiente

correcto - simples - eficienteprogramas devem ser escritos para serem lidos por humanos! Coment´arios, estrutura, nomes das “coisas”, 1.8

Linguagem Python I

Caracter´ısticas

Site principal: http://python.org/ http://python.org/

Alto n´ıvelSite principal: http://python.org/ Sintaxe simples F´acil aprendizagem Existe para a maioria dos sistemas operativos:

Sintaxe simplesSite principal: http://python.org/ Alto n´ıvel F´acil aprendizagem Existe para a maioria dos sistemas operativos:

F´acil aprendizagemprincipal: http://python.org/ Alto n´ıvel Sintaxe simples Existe para a maioria dos sistemas operativos: Linux, Mac

Existe para a maioria dos sistemas operativos: Linux, Mac OS, M$,Alto n´ıvel Sintaxe simples F´acil aprendizagem ´ E livre! Utilizada com sucesso em muitos locais:

´

E livre!a maioria dos sistemas operativos: Linux, Mac OS, M$, ´ Utilizada com sucesso em muitos locais:

Utilizada com sucesso em muitos locais:Existe para a maioria dos sistemas operativos: Linux, Mac OS, M$, ´ E livre! http://python.org/about/success/

sucesso em muitos locais: http://python.org/about/success/ PI VBN Introdu¸c˜ao ´a Programa¸c˜ao Linguagens de

PI

VBN

Introdu¸c˜ao ´a

Programa¸c˜ao

Linguagens de

Programa¸c˜ao

Programa¸c˜ao

Estruturada

Linguagem Python

Debugging

Linguagem Python II

Interpretada

ou quase

Interpreta¸c˜ao “h´ıbrida”:

compilador traduz Python (ficheiros com extens˜ao py ) para um c´odigo interm´edio “byte-code“ (ficheiros com

compilador traduz Python (ficheiros com extens˜ao py) para um c´odigo interm´edio “byte-code“ (ficheiros com extens˜ao pyc)

execu¸c˜ao ´e feita por um interpretador de ”byte-code“

execu¸c˜ao ´e feita por um interpretador de ”byte-code“

´e feita por um interpretador de ”byte-code“ PI VBN Introdu¸c˜ao ´a Programa¸c˜ao Linguagens de

PI

VBN

Introdu¸c˜ao ´a

Programa¸c˜ao

Linguagens de

Programa¸c˜ao

Programa¸c˜ao

Estruturada

Linguagem Python

Debugging

Vantagens/Desvantagens

+ Desenvolvimento r´apido

+ Mais eficiente que um interpretador cl´assico

- Menos eficiente do que linguagens compiladas (por exemplo

C)

Linguagem Python III

Interpretador de Python

Em Linux temos o comando python

Interactivo: executa uma instru¸c˜ao de cada vez e mostra o resultado Batch: executa todos os comandos existentes num ficheiro

Existem muitos ambientes de desenvolvimento: IDLE, PyDev, Emacs,

muitos ambientes de desenvolvimento: IDLE, PyDev, Emacs, PI VBN Introdu¸c˜ao ´a Programa¸c˜ao Linguagens de

PI

VBN

Introdu¸c˜ao ´a

Programa¸c˜ao

Linguagens de

Programa¸c˜ao

Programa¸c˜ao

Estruturada

Linguagem Python

Debugging

Programa : ”Hello, World“ (vers˜ao 2.*)

print ’ Hello , World ! ’ Programa : ”Hello, World“ (vers˜ao 3.*) print (
print
’ Hello ,
World ! ’
Programa : ”Hello, World“ (vers˜ao 3.*)
print ( ’ Hello ,
World ! ’ )

Debugging

”Errare humanum est“  

”Errare humanum est“

 
A programa¸c˜ao est´a sujeita a (muitos) erros

A

programa¸c˜ao est´a sujeita a (muitos) erros

Erros de programa¸c˜ao s˜ao denominados de bugs

Erros de programa¸c˜ao s˜ao denominados de bugs

O processo de encontrar os erros ´e denominado por debugging

O

processo de encontrar os erros ´e denominado por debugging

Tipos de erros:  

Tipos de erros:

 
 

sint´atico: Por exemplo

print

’ Hello ,

World !

runtime: indicam que algo excepcional (e normalmente mau) aconteceu semˆantico: Exemplo?

Debugging como ciˆencia experimental

Debugging como ciˆencia experimental

Exemplo? Debugging como ciˆencia experimental PI VBN Introdu¸c˜ao ´a Programa¸c˜ao Linguagens de

PI

VBN

Introdu¸c˜ao ´a

Programa¸c˜ao

Linguagens de

Programa¸c˜ao

Programa¸c˜ao

Estruturada

Linguagem Python

Debugging

Debugging ´e semelhante ao trabalho de um detective Quando temos uma ideia sobre o que est´a errado no programa, alteramos e experimentamos. ”When you have eliminated the impossible, whatever remains, however improbable, must be the truth.“ (A. Conan Doyle, The Sign of Four)