tutorium 03

This commit is contained in:
2024-10-31 15:23:58 +01:00
parent 0b3def995c
commit 37db8d9000
3 changed files with 228 additions and 0 deletions

55
Tutorium/tut03/GIT.md Normal file
View File

@ -0,0 +1,55 @@
# Beispiel Workflow mit Git
## SSH-Key generieren
1. `ssh-keygen` in der Konsole eingeben
- generiert einen privaten und öffentlichen Schlüssel in euer SSH-Verzeichnis `~/.ssh`
2. Kopiert den Inhalt des öffentlichen Schlüssel `<key-name>.pub`
```sh
cd ~/.ssh # wir gehen in unser .ssh directory
ssh-keygen # danach key namen eingeben und enter bis zum ende
cat eidp_key.pub # gibt den public key aus, diesen kopieren
```
Wie das ganze aussieht:
![image how I generated the key](./img/ssh-key.png)
## SSH-Key zum Git hinzufügen
1. Settings
2. Keys
3. Add Key
4. Kopiert den Inhalt von `<key-name>.pub` in Content
![image how to add the key](./img/gitea.png)
## Repository clone und VSCode
1. Wir kopieren oder besser gesagt klonen das Git Repository mit `git clone <url>`
- die URL findet ihr rechts oben im repository auf der Website
2. Das Repository wird in einem Ordner gespeichert der wie das Repository heißt
3. Jetzt öffnen wir diesen Ordner in VSCode
4. Über den Git Tab können wir Datein hinzufügen und hochladen oder Änderungen herunterladen
![image how clone git](./img/git-clone.png)
alternative kann man auch direkt in VSCode das Repository herunterladen
1. Git-Tab auswählen
![img of git tab](./img/git-tab.png)
2. Clone Repository
3. Die URL zum Repository einfügen
4. Speicherort auswählen
Nach dem öffnen sieht das dann so aus:
![img how vscode looks with the repository](./img/git-project-open.png)
## Dateien über Git-Tab hochladen
1. Fügt die Datein mit dem `+` hinzu
2. Gebt eine Nachricht ein und drückt auf `Commit`
3. Zum endgültigen hochladen `Sync changes`
![img how to upload files](./img/git-upload.png)

173
Tutorium/tut03/README.md Normal file
View File

@ -0,0 +1,173 @@
---
marp: true
paginate: true
theme: rose-pine
footer: EidP 2024 - Nils Pukropp - https://git.narl.io/nvrl/eidp-2024
style: ".columns {\r display: grid;\r grid-template-columns: repeat(2, minmax(0, 1fr));\r gap: 1rem;\r }"
---
# Tutorium 03 - 2024-10-31
Blatt 02, Workflow, Blatt 03
---
# Blatt 02
Welche Fehler wurden gemacht?
---
# Hochladen
- Probleme beim Hochladen
- Binary statt Textdatei
- Tutorial: [Beispiel Workflow mit Git](./GIT.md)
---
# keine korrekte Ausgabe
<div class="columns">
<div>
- Expectation:
```
p = -4.0
q = -5.0
x1 = 5.0
x2 = -1.0
```
</div>
<div>
- Reality:
```
Geben Sie nun einen Wert für p an:
> -4.0
Geben Sie nun einen Wert für q an:
> -5.0
Die Lösungsmenge ist L := {5.0, -1.0}
```
</div>
</div>
- Gebt bitte alles exakt wie vorgeschrieben in der Console aus!
---
# One-Liner in 2.4
```python
print((((((float(input())) * 2) + 3) ** 2) - (float(input()))) / 4)
```
Falsch, weil `input` zwei mal aufgerufen wird
---
# One-Liner in 2.4
```python
print((((((float(x := input())) * 2) + 3) ** 2) - (float(x))) / 4)
```
Das wäre korrekt, aber `:=` kam noch nicht in der Vorlesung vor
---
# Blatt 02 - Vorrechnen
---
# Recap Vorlesung
Funktionen, Loops
---
# Funktionen
- Ihr habt schon die ganze Zeit mit Funktionen gearbeitet
- `print(...)`
- `int(...)`
- ...
- Funktionen haben ihren eigenen *Scope*
- Funktionen sollten auch nur lokale Objekte verwenden
---
```python
def my_func(param1: type, param2: type) -> type:
...
if __name__ == '__main__':
my_func(...)
```
---
```python
def add(a: int, b: int) -> int:
return a + b
if __name__ == '__main__':
print(add(1, 2)) # 3
```
---
# Was ist `if __name__ == '__main__'?
- Damit bestimmter Code auch nur ausgeführt wird wenn wir die Datei als Hauptdatei ausführen
- Beim importieren von anderen Python-Datein möchten wir nicht dass irgend etwas Ausgegeben wird/Eingaben erfragt werden
---
# Iteration - for
```python
for some_item in some_iterable:
...
```
- Wenn wir für jedes *Element* in einer *Menge* machen wollen
---
```python
def print_even_numbers(max: int):
for num in range(0, max + 1):
print(num)
```
---
# Iteration - while
```python
while condition:
...
```
- Wenn wir eine Bendingung haben die vor jedem Durchlauf gelten muss
---
```python
def find_next_prime(n: int) -> int:
next_prime = n + 1
while !is_prime(next_prime):
next_prime += 1
return next_prime
```
---
# Blatt 03

Binary file not shown.