Wstęp do programowania

Instytucja

Politechnika Wrocławska

Semestr

Zimowy 2024/25

Wykładowca

dr Andrzej Giniewicz

Informacje i materiały

Zasady zaliczenia

Doprecyzowania obowiązujące w moich grupach:

Co najmniej pierwsze 4 listy będziemy robić na zajęciach, w systemie deklaracyjnym. Po zajęciach proszę o przesłanie rozwiązań. Kolejne listy zadań będą w formie zadań domowych, do zrobienia i przesłania przed zajęciami. Rozwiązania będą omawiane i wyrywkowo sprawdzane w trakcie zajęć.

Wyobraź sobie, że pomagasz młodszemu koledze lub koleżance, którzy dalej są w liceum. Chcesz przygotować interaktywny notebook tłumaczący jakieś zagadnienie z zakresu matematyki, fizyki, informatyki lub chemii. Wybrany temat może, ale nie musi pochodzić z zakresu nauczania w szkole średniej. Ma być zrozumiały i dostępny dla ucznia liceum. Kod Python nie musi być zrozumiały dla licealisty. Polecam wybrać temat, który Ciebie też interesuje.

W Twoim dokumencie powinny znaleźć się prawidłowo sformatowane komórki tekstowe, z nagłówkami oraz wzorami. Umieść również obliczenia wykonane w języku Python, jako ilustrację do niektórych przykładów, rozwiązanie zadań, lub wizualizację. Można, ale nie trzeba używać modułów Python nie przedstawionych na kursie.

Za zadanie domowe można dostać maksymalnie 10 punktów. Po 3 za użycie Pythona, skład i formatowanie komórek Markdown oraz treść tłumacząca zagadnienie. Dodatkowy punkt za ogólna schludność i estetykę zeszytu.

Gdybyś chciał wydrukować notatnik, powinien zająć przynajmniej dwie strony A4 przy standardowym rozmiarze kroju pisma (podpowiedź - możesz sprawdzić podgląd wydruku w menu File w narzędziu Jupyter Lab, jeśli trudno ocenić Ci ile już napisałeś).

Termin oddania do 19 listopada (grupa wtorkowa) / 21 listopada (grupa czwartkowa). Zadanie domowe proszę przesyłać mailowo. Proszę załączyć informację czy zgadzasz się na pokazanie Twojej pracy innym studentom i opublikowanie jej tutaj jako przykład.

Od 7-mych zajęć można zgłaszać się na ochotnika, co najmniej 3 ochotników jest wymaganych na jednych zajęciach.

Można się łączyć w grupy w obrębie moich 2 zajęć (wtorek 7:30 i czwartek 7:30), ale nie poza. Zakładam w sumie 5-8 grup projektowych.

Punkty zostaną przydzielone na zasadzie normalizacji rozkładu aktywności na zajęciach. Gwarantuję, że jedna duża aktywność (np. przedstawienie pełnego rozwiązania z listy) będzie dawała co najmniej jeden punkt.

Bash i git

Przykłady komend użytych na zajęciach:

pwd
cd ~
mkdir test
cd test
touch test.txt
code test.txt
cp test.txt test2.txt
mv test2.txt test3.txt
rm test2.txt
echo "Hello World" >> test3.txt
cat test3.txt
wc < test3.txt
cat test.txt test3.txt > test4.txt
cd ..
rm -ri test
ls -la

Przykładowy skrypt zapisany jako plik hello.sh:

#! bash

echo "Hello $1 !"

if [ "$1"=="Flip" ] ; then
    echo ”Long time no see ! ”
elif [ "$1"=="Flap" ] ; then
    echo "What do you want?"
else
    echo "Who are you again ?"
fi

if ! [ -f log.txt ] ; then
    touch log.txt
fi
echo "$(date) User $1 visited." >> log.txt

for i in $(seq 5 -1 1)
do
    echo "Konczymy za $i"
done

Jego wykonanie:

chmod +x hello.sh
./hello.sh Flap

Skrypt w pythonie:

#! python3

import sys

print(f"Hello !")

if __name__ == "__main__":
    if len(sys.argv) > 1:
        for x in sys.argv[1:]:
            print(f"Nice to meet you {x}")

Jego wykonanie:

chmod +x hello.py
./hello.py Flip Flap Flop

Generowanie klucza SSH (warto przeczytać oficjalne instrukcje)

ssh-keygen -t ed25519 -C "imie nazwisk, indeks"

Ustawienie klucza SSH w systemie lokalnym:

eval $(ssh-agent)
ssh-add <sciezka klucza>
ssh git@gitlab.com

Klonujemy repozytorium GitLab, ustawiamy użycie klucza SSH, tworzymy gałąź main.

git clone <sciezka ssh>
git config --global user.name "<imie nazwisko>"
git config --global user.email "<email pwr>"
git config --local gpg.format ssh
git config --local user.signingkey /ścieżka/do/klucza/id_ec25519.pub
git switch --create main

Tworzymy plik README.md, dodajemy go do repozytorium, commitujemy i pushujemy.

touch README.md
git add README.md
git commit -S -m "puste readme"
git status
git push
Back to top