21
Programação I / Introdução à Programação Capítulo 1, "The way of the program" João Pedro Pedroso 2020/2021

Programação I / Introdução à Programação - DCCjpp/P1/teorica-04_python-intro.pdfLinguagens formais Têm,normalmente,regrasdesintaxerígidas área expressão sintaxe semântica

  • Upload
    others

  • View
    28

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Programação I / Introdução à Programação - DCCjpp/P1/teorica-04_python-intro.pdfLinguagens formais Têm,normalmente,regrasdesintaxerígidas área expressão sintaxe semântica

Programação I / Introdução à ProgramaçãoCapítulo 1, "The way of the program"

João Pedro Pedroso

2020/2021

Page 2: Programação I / Introdução à Programação - DCCjpp/P1/teorica-04_python-intro.pdfLinguagens formais Têm,normalmente,regrasdesintaxerígidas área expressão sintaxe semântica

"How to Think Like a Computer Scientist"I Competências:

I matemática → utilização de linguagens formais para descreverideias

I engenharia → desenhar, construir sistemas a partir decomponentes, avaliar alternativas

I ciências → observar comportmento de sistemas complexos,formular hipóteses, testar previsões

I Competência mais importante: resolução de problemasI capacidade de formular problemasI criatividade para encontrar soluçõesI exprimir solução de forma clara e precisa

Page 3: Programação I / Introdução à Programação - DCCjpp/P1/teorica-04_python-intro.pdfLinguagens formais Têm,normalmente,regrasdesintaxerígidas área expressão sintaxe semântica

A linguagem de programação Python

I Python: linguagem de alto nívelI forte abstração relativamente aos detalhes do computadorI usa elementos da linguagem naturalI outros exemplos: C++, C#, Java, . . .

I Linguagens de baixo nível:I linguagens máquina/assemblyI são as linguagens de os computadores executamI linguagens de alto nível têm de ser traduzidas para poderem

ser executadas num computadorI Vantagens de linguagens de alto nível:

1. mais fáceis de programarI rapidez de programaçãoI programas curtos e fáceis de lerI menos erros

2. portabilidadeI podem ser executadas em computadores diferentes

Page 4: Programação I / Introdução à Programação - DCCjpp/P1/teorica-04_python-intro.pdfLinguagens formais Têm,normalmente,regrasdesintaxerígidas área expressão sintaxe semântica

Linguagens de baixo nível: linguagem máquina55 89 e5 83 ec 20 83 7d 0c 00 75 0f ...

I linguagem nativa de um computadorI códigos numéricos associados a operações elementaresI única linguagem directamente executável pelo computadorI assembly

55 push %ebp89 e5 mov %esp,%ebp83 ec 20 sub $0x20,%esp83 7d 0c 00 cmpl $0x0,0xc(%ebp)75 0f jne 1b... ...I representação do código máquina em mnemónicas (texto)I mais clara, para humanos, do que a linguagem máquinaI traduzida para código máquina por um programa assembladorI continua a ser específica para cada computador/processadorI muito próxima da máquina:

I desenvolvimento lento, fastidioso, susceptível de errosI usada apenas em aplicações muito específicas

Page 5: Programação I / Introdução à Programação - DCCjpp/P1/teorica-04_python-intro.pdfLinguagens formais Têm,normalmente,regrasdesintaxerígidas área expressão sintaxe semântica

Interpretador de Python

Python é uma linguagem de alto nível.Pode ser usada emI modo imediato → escrevemos instruções e recebemos

feedback imediato

I >>> → prompt, usado para indicar que está à espera deinstruções

I conveniente para testar pequenos segmentos de códigoI Control-D ou quit() para terminar

I modo de script →I executa série de instruções escritas num ficheiro de textoI usado sempre, exceto para testar uma ou duas linhas de código

Page 6: Programação I / Introdução à Programação - DCCjpp/P1/teorica-04_python-intro.pdfLinguagens formais Têm,normalmente,regrasdesintaxerígidas área expressão sintaxe semântica

O que é um programa?

Um programa é uma sequência de instruções que determina comoefetuar um cálculoI matemáticoI simbólicoI . . .

Instruções básicas, presentes em praticamente todas as linguagens:I input → obter dados do teclado ou de outro dispositivoI output → escrever dados no ecrã ou noutro dispositivoI cálculo matemático → operações como adição e multiplicaçãoI execução condicional → testar uma condição e decidir quais as

instruções a executar de acordo com o resultadoI repetição → executar um conjunto de instruções

repetidamente, geralmente com pequenas variantesMais detalhes quando virmos algoritmos

Page 7: Programação I / Introdução à Programação - DCCjpp/P1/teorica-04_python-intro.pdfLinguagens formais Têm,normalmente,regrasdesintaxerígidas área expressão sintaxe semântica

Debugging

I Programação é um processo complexo, suscetível a errosI Erros de programação → bugs

I sua correção → debuggingI Tipos de erro:

I erros de sintaxeI erros de execução (runtime errors)I erros semânticos

Page 8: Programação I / Introdução à Programação - DCCjpp/P1/teorica-04_python-intro.pdfLinguagens formais Têm,normalmente,regrasdesintaxerígidas área expressão sintaxe semântica

Erros de sintaxe

SintaxeI regras de formação (gramática)I num programa: estrutura, regras sobre essa estruturaI Exemplo: expressões aritméticas

I 3× (2+ 4) → correctoI 3+×24) → erro de sintaxe

Erros de sintaxe:I Linguagem natural → alguns erros são aceitáveisI Em Python:

I dão origem a uma mensagem de erroI impedem a execução do programa

Page 9: Programação I / Introdução à Programação - DCCjpp/P1/teorica-04_python-intro.pdfLinguagens formais Têm,normalmente,regrasdesintaxerígidas área expressão sintaxe semântica

Erros de execução (runtime errors)

I Aparecem durante a execução de um programaI Indicam que algo excecional aconteceu → "exceções"

(exceptions)I Raros em programas simples

Page 10: Programação I / Introdução à Programação - DCCjpp/P1/teorica-04_python-intro.pdfLinguagens formais Têm,normalmente,regrasdesintaxerígidas área expressão sintaxe semântica

Erros semânticos

SemânticaI significado ou operação associados a expressão/programaI Exemplo: expressões aritméticas

I 3× (2+ 4) → 18

Erros semânticos:I o programa é executado sem mensagens de erroI mas não fará o que se pretende. . .I o significado/semântica do programa não estão corretosI exemplo: no caso anterior, escrever (incorretamente)

I 3× 2+ 4

I frequentemente, são difíceis de localizar e corrigir

Page 11: Programação I / Introdução à Programação - DCCjpp/P1/teorica-04_python-intro.pdfLinguagens formais Têm,normalmente,regrasdesintaxerígidas área expressão sintaxe semântica

Debugging experimental

I Uma das competências mais importantes que aquidesenvolveremos

I Por vezes frustante, mas intelectualmente interessanteI Trabalho de detetive

I com base em indícios, inferir o que causa os resultadosI Ciência experimental:

I com base numa hipótese sobre o que está errado, modificar oprograma e tentar de novo

I hipótese correta → um passo em frente para a versão finalI hipótese errada → encontar nova ideia

I Alguns programadores:I programação e debugging ao mesmo tempoI debugging desde o princípio até o programa fazer o que se

pretendeI programa faz qualquer coisa desde o princípio

I funciona sempre, funcionalidade/correção crescente

Page 12: Programação I / Introdução à Programação - DCCjpp/P1/teorica-04_python-intro.pdfLinguagens formais Têm,normalmente,regrasdesintaxerígidas área expressão sintaxe semântica

Linguagens formais e naturais

I Linguagens naturaisI o que as pessoas falam: português, inglês, . . .I não foram desenhadas; evoluíram naturalmente

I Linguagens formaisI foram desenhadas explicitamente para fins específicosI exemplos:

I notação matemática, para formular relações entre números esímbolos

I notação química, para representar estrutura de moléculasI linguagens de programação, para exprimir

cálculos/computação

Page 13: Programação I / Introdução à Programação - DCCjpp/P1/teorica-04_python-intro.pdfLinguagens formais Têm,normalmente,regrasdesintaxerígidas área expressão sintaxe semântica

Linguagens formais

Têm, normalmente, regras de sintaxe rígidas

área expressão sintaxe semânticamatemática 3+ 3× 6 correta 21matemática 3 = #6+ erroquímica H2O correta águaquímica 2RZ erro

Page 14: Programação I / Introdução à Programação - DCCjpp/P1/teorica-04_python-intro.pdfLinguagens formais Têm,normalmente,regrasdesintaxerígidas área expressão sintaxe semântica

Regras: baseadas emI tokens (símbolos) → elementos básicos da linguagem

I palavras, números, parêntesis, vírgulas, . . .I exemplo:

print("Happy New Year for",2013) → 6 tokens:1. nome da função2. abertura de parêntesis3. cadeia de carateres (string)4. vírgula5. número6. fecho de parêntesis

I estrutura → a forma como os tokens são encadeadosI exemplo: print("Happy New Year for" 2013) → falta

vírgulaI os tokens continuariam válidos mas a estrutura está incorreta

Parsing: determinar a estrutura de uma frase/instruçãoI em linguagens naturais → inconsciente

Page 15: Programação I / Introdução à Programação - DCCjpp/P1/teorica-04_python-intro.pdfLinguagens formais Têm,normalmente,regrasdesintaxerígidas área expressão sintaxe semântica

Linguagens formais e naturais: diferenças

linguagens naturais formaisambiguidade elevada reduzidaredundância elevada reduzidaliteralidade reduzida elevada

Page 16: Programação I / Introdução à Programação - DCCjpp/P1/teorica-04_python-intro.pdfLinguagens formais Têm,normalmente,regrasdesintaxerígidas área expressão sintaxe semântica

O primeiro programa

1. Criar o ficheiro de texto programa.py com o seguinteconteúdo:

print("Ola, mundo!")

2. Executamos no terminal com

1 python3 programa.py

e obtemos o outputOla, mundo!

3. Convenção: ficheiros de programas Python têm extensão .py

Page 17: Programação I / Introdução à Programação - DCCjpp/P1/teorica-04_python-intro.pdfLinguagens formais Têm,normalmente,regrasdesintaxerígidas área expressão sintaxe semântica

Comentários

I Partes mais difíceis de um programa devem ser explicadas →comentários

I Permitem explicar em linguagem natural o que oprograma/parte do código está a fazer

I Comentários são ignorados pelo interpretador de PythonI Em Python, comentários começam com #I Tudo o que está à direita é ignorado

1 # Este programa imprime uma saudação2 # A linguagem utilizada é Python3 print("Ola, mundo!") # é realmente simples...

Page 18: Programação I / Introdução à Programação - DCCjpp/P1/teorica-04_python-intro.pdfLinguagens formais Têm,normalmente,regrasdesintaxerígidas área expressão sintaxe semântica

O segundo programa

1. Criar o ficheiro de texto inout.py com o seguinte conteúdo:

x = input()print(x)

2. Executamos no terminal com

1 python3 inout.py

→ verifique o que se obtém

Nota: pode-se usar um prompt como argumento de input:

x = input("What's your name? ")print("Hello,", name, "!")

Page 19: Programação I / Introdução à Programação - DCCjpp/P1/teorica-04_python-intro.pdfLinguagens formais Têm,normalmente,regrasdesintaxerígidas área expressão sintaxe semântica

O segundo programa

1. Criar o ficheiro de texto inout.py com o seguinte conteúdo:

x = input()print(x)

2. Executamos no terminal com

1 python3 inout.py

→ verifique o que se obtém

Nota: pode-se usar um prompt como argumento de input:

x = input("What's your name? ")print("Hello,", name, "!")

Page 20: Programação I / Introdução à Programação - DCCjpp/P1/teorica-04_python-intro.pdfLinguagens formais Têm,normalmente,regrasdesintaxerígidas área expressão sintaxe semântica

Noções estudadasalgorithmbugcommentdebuggingexceptionformal languagehigh-level languageimmediate modeinterpreterlow-level languagenatural languageobject codeparse

portabilityprint functionproblem solvingprogramPython shellruntime errorscriptsemantic errorsource codesyntaxsyntax errortoken

Page 21: Programação I / Introdução à Programação - DCCjpp/P1/teorica-04_python-intro.pdfLinguagens formais Têm,normalmente,regrasdesintaxerígidas área expressão sintaxe semântica

Próxima aulaI "Variáveis, expressões, instruções"