Skip to content

Commit

Permalink
Import FP
Browse files Browse the repository at this point in the history
  • Loading branch information
JCapucho committed Oct 13, 2022
0 parents commit 5e5713d
Show file tree
Hide file tree
Showing 78 changed files with 3,566 additions and 0 deletions.
3 changes: 3 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
*.pdf filter=lfs diff=lfs merge=lfs -text
*.vpp filter=lfs diff=lfs merge=lfs -text
*.odt filter=lfs diff=lfs merge=lfs -text
14 changes: 14 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
name: "Deploy"
on:
pull_request:
push:
jobs:
tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: cachix/install-nix-action@v18
with:
nix_path: nixpkgs=channel:nixos-unstable
- run: nix build
- run: nix flake check
1 change: 1 addition & 0 deletions FP/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
build/
317 changes: 317 additions & 0 deletions FP/aula00/aula00.norg
Original file line number Diff line number Diff line change
@@ -0,0 +1,317 @@
@document.meta
title: Aula 00
description: The beggining of the journey
author: João Capucho
@end

* Fundamento de Programação, Aula 00

** Exercício 1

> Antes de começar, confirme que criou uma pasta (diretório) chamada FP (ou
> FundamentosProgramacao) para guardar os materiais desta disciplina. E deve ter
> extraído a pasta da aula dentro de FP, para manter os materiais bem organizados.

@code bash
$ tree
FP
├── aula00
│ ├── aula00.pdf
│ ├── plot.py
│ ├── README.md
│ ├── solution.py
│ └── welcome.py
├── aula01
│ ├── aula01.pdf
│ ├── points.py
│ ├── README.md
│ ├── tp00-computers.pdf
│ └── tp01-intro.pdf
@end

** Exercício 2

> No seu computador, siga as instruções para instalar Python que encontra
> na página da cadeira.

@code bash
$ python3 --version
Python 3.10.6
@end

** Exercício 3

> Abra uma janela de terminal (ver como aqui) e, na linha de comandos,
> introduza o comando python3 para executar o Python em modo interativo.

@code bash
$ python3
Python 3.10.6 (main, Aug 1 2022, 20:38:21) [GCC 11.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
@end

** Exercício 4

> Usando o Python em modo interativo, execute as seguintes instruções:

@code python
>>> 20-3
17
>>> type(17)
<class 'int'>
>>> 1+2.3
3.3
>>> type(1+2.3)
<class 'float'>
>>> 'Paris'
'Paris'
>>> type('Paris')
<class 'str'>
>>> 'Paris'/2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for /: 'str' and 'int'
@end

> A função type(x) permite determinar o tipo de dados do valor x. Para cada uma das
> expressões abaixo, tente prever o valor e tipo de dados (int, float, str, ...) do
> resultado, ou se dá erro. Depois confirme no Python.

@table
Expressão | Valor | Tipo
1 + 2 * 5 | 11 | int
17 / 3.0 | 5.666666666666667 | float
17 / 3 | 5.666666666666667 | float
17 // 3 | 5 | int
17 % 3.0 | 2.0 | float
5.0 / 0.75 | 6.666666666666667 | float
5.0 // 0.75 | 6.0 | float
'tau' + 'rus' | 'taurus' | str
'tau' + 2 | erro | N/A
'tau' * 2 | 'tautau' | str
@end

** Exercício 5

> Em Python podemos guardar valores em variáveis para depois os reutilizar. Por
> exemplo, para guardar as dimensões de um retângulo pode usar as seguintes instruções.

@code python
>>> largura = 21.0
>>> altura = 29.7
@end

> Agora pode calcular a área do retângulo, guardá-la numa variável e mostrar o seu valor:

@code python
>>> area = largura * altura
>>> area
623.6999999999999
@end

> Consegue calcular, guardar e mostrar o perímetro? Dê um nome sugestivo à nova variável.

@code python
>>> perimetro = 2 * largura + 2 * altura
>>> perimetro
101.4
@end

** Exercício 6

> Abra um editor de texto (por exemplo, o “Bloco de notas”/Notepad do Windows, “Text
> editor”/gedit no Linux), reescreva as instruções que usou no exercício anterior e
> grave num ficheiro com o nome retangulo.py, dentro da pasta aula00.

@code python
# retangulo.py
largura = 21.0
altura = 29.7

area = largura * altura
area

perimetro = 2 * largura + 2 * altura
perimetro
@end

> Acabou de criar um programa (script) em Python. Para o executar o programa,
> regresse ao terminal e introduza o comando:

@code bash
$ python3 retangulo.py
$
@end

> No editor, corrija o programa para mostrar os resultados explicitamente usando
> a função print, grave e volte a executar o programa. Repita o processo até o
> programa funcionar.

@code python
# retangulo.py
largura = 21.0
altura = 29.7

area = largura * altura
print(f"area = {area}")

perimetro = 2 * largura + 2 * altura
print(f"perimetro = {perimetro}")
@end

@code bash
$ python3 retangulo.py
area = 623.6999999999999
perimetro = 101.4
$
@end

** Exercício 7

> Altere o programa anterior para pedir ao utilizador as dimensões do retângulo
> (usando a função input).

@code python
# Pede ao utilizador para inserir a largura
larguraStr = input("Insira a largura do retângulo: ")
# Tenta transformar de uma string para um int
largura = float(larguraStr)
# Pede ao utilizador para inserir a altura
alturaStr = input("Insira a altura do retângulo: ")
# Tenta transformar de uma string para um int
altura = float(alturaStr)

# Calcula a area
area = largura * altura
print(f"area = {area}")

# Calcula o perimetro
perimetro = 2 * largura + 2 * altura
print(f"perimetro = {perimetro}")
@end

** Exercício 8

> Execute o programa welcome.py para ver o que acontece. Modifique o programa
> para que o X seja substituído pelo curso indicado pelo utilizador.

@code bash
$ python3 welcome.py
Primeiro nome? João
Apelido? Capucho
Curso? LEI
Olá João Capucho!
Bem vindo ao curso de X!
@end

@code python
# welcome.py
# coding: utf-8

# Execute the program and see what happens.
# Then modify the program so that X is replaced by the course input.
# Hint: see what we did with the name and surname.

name = input("Primeiro nome? ")
surname = input("Apelido? ")
course = input("Curso? ")

print("Olá {} {}!\nBem vindo ao curso de {}!".format(name, surname, course))
@end

@code bash
$ python3 welcome.py
Primeiro nome? João
Apelido? Capucho
Curso? LEI
Olá João Capucho!
Bem vindo ao curso de LEI!
@end

** Exercício 9

> O programa plot.py traça os gráficos de duas funções. Experimente executá-lo.

@code bash
$ python3 plot.py
@end

@embed image
./res/graph00.png
@end

> Experimente colocar uma instrução print para imprimir o valor de alguma
> variável ou modifique um parâmetro de alguma expressão. Depois grave
> e volte a executar o para ver o que acontece.

@code python
# plot.py
# Try running this program.
# Then change it to generate another subplot with the product of y1 and y2.

import numpy as np
import matplotlib.pyplot as plt

plt.figure(1)

t = np.arange(0.0, 5.0, 0.1) # try printing t

print(t)

plt.subplot(2, 1, 1)
y1 = np.exp(-t)
plt.plot(t, y1, "k+") # try 'g' or 'bo' or 'k+'

plt.subplot(2, 1, 2)
y2 = np.cos(2 * np.pi * t)
plt.plot(t, y2, "ro-")

plt.show()
@end

@code bash
$ python3 plot.py
[0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1. 1.1 1.2 1.3 1.4 1.5 1.6 1.7
1.8 1.9 2. 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3. 3.1 3.2 3.3 3.4 3.5
3.6 3.7 3.8 3.9 4. 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9]
@end

@embed image
./res/graph01.png
@end

** Exercício 10

> Altere o programa anterior para gerar um terceiro gráfico com o produto
> das funções y1 e y2. Trace o gráfico com linhas e bolas verdes.

@code python
# plot.py
# Try running this program.
# Then change it to generate another subplot with the product of y1 and y2.

import numpy as np
import matplotlib.pyplot as plt

plt.figure(1)

t = np.arange(0.0, 5.0, 0.1) # try printing t

plt.subplot(3, 1, 1)
y1 = np.exp(-t)
plt.plot(t, y1, "b") # try 'g' or 'bo' or 'k+'

plt.subplot(3, 1, 2)
y2 = np.cos(2 * np.pi * t)
plt.plot(t, y2, "ro-")

plt.subplot(3, 1, 3)
plt.plot(t, y1 * y2, "go-")

plt.show()
@end

@embed image
./res/graph02.png
@end
Binary file added FP/aula00/res/graph00.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added FP/aula00/res/graph01.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added FP/aula00/res/graph02.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
22 changes: 22 additions & 0 deletions FP/aula00/res/plot.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Try running this program.
# Then change it to generate another subplot with the product of y1 and y2.

import numpy as np
import matplotlib.pyplot as plt

plt.figure(1)

t = np.arange(0.0, 5.0, 0.1) # try printing t

plt.subplot(3, 1, 1)
y1 = np.exp(-t)
plt.plot(t, y1, "b") # try 'g' or 'bo' or 'k+'

plt.subplot(3, 1, 2)
y2 = np.cos(2 * np.pi * t)
plt.plot(t, y2, "ro-")

plt.subplot(3, 1, 3)
plt.plot(t, y1 * y2, "go-")

plt.show()
10 changes: 10 additions & 0 deletions FP/aula00/res/retangulo.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
larguraStr = input("Insira a largura do retângulo: ")
largura = float(larguraStr)
alturaStr = input("Insira a altura do retângulo: ")
altura = float(alturaStr)

area = largura * altura
print(f"area = {area}")

perimetro = 2 * largura + 2 * altura
print(f"perimetro = {perimetro}")
11 changes: 11 additions & 0 deletions FP/aula00/res/solution.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Este programa é a solução de um dos exercícios da aula.

largura = float(input('Largura? '))
altura = float(input('Altura? '))

area = largura * altura
perimetro = largura*2 + altura*2

print('Area:', area)
print('Perimetro:', perimetro)

11 changes: 11 additions & 0 deletions FP/aula00/res/welcome.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# coding: utf-8

# Execute the program and see what happens.
# Then modify the program so that X is replaced by the course input.
# Hint: see what we did with the name and surname.

name = input("Primeiro nome? ")
surname = input("Apelido? ")
course = input("Curso? ")

print("Olá {} {}!\nBem vindo ao curso de {}!".format(name, surname, course))
Loading

0 comments on commit 5e5713d

Please sign in to comment.