-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 5e5713d
Showing
78 changed files
with
3,566 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
build/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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}") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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)) |
Oops, something went wrong.