Program | Materiały | Literatura | Zadania | Zaliczenia | Haszówki: zawartość | Pomoc | Kontakt
logo PWr

Podstawy programowania – 2023/24


Wydział Elektroniki, Fotoniki i Mikrosystemów
Kierunek: Automatyka i robotyka


Karta przedmiotu

Aktualna wersja karty przedmiotu (strona 93 w Katalogu)


Tematy i materiały do wykładów

Poniższa tabela zawiera prezentacje wykorzystywane w trakcie wykładu w formacie PDF (Portable Document Format), obsługiwanym m.in. przez program Acrobat Reader. Dodatkowo umieszczono w niej materiały przeznaczone do wydruku w układzie jeden, dwa i cztery slajdy na stronę, niektóre w formacie PostScript (ps), obsługiwanym m.in. przez programy Ghostscript i GhostView.

Przedstawiane prezentacje nie stanowią internetowego podręcznika do samodzielnej nauki programowania! Zostały one tu umieszczone w celu ułatwienia pracy i dla wygody studentów. Zalecamy przybywanie na dany wykład z dotyczącymi go wydrukowanymi materiałami (naszym zdaniem najlepiej w wersji cztery slajdy na stronę) – stanowią one doskonałe miejsce do czynienia notatek:).

Materiały udostępnione za pomocą poniższej tabelki objęte są prawami autorskimi. Można je wykorzystywać wyłącznie do własnych, prywatnych celów i nie wolno ich w żaden sposób rozpowszechniać, na przykład przez umieszczenie na ogólnodostępnych stronach internetowych.

nr temat wykładu materiały
prezentacjafoliewydrukiprzywieszki
1Wprowadzenie PDF PDF Postscript 1x1 PDF 2x1 PDF 4x1 HTML MP4
2Algorytm, podstawowe notacje, typy danych, wyrażenia i instrukcje PDF PDF Postscript 1x1 PDF 2x1 PDF 4x1 HTML *
3Składnia wyrażeń i instrukcji, operacje wejścia i wyjścia PDF PDF Postscript 1x1 PDF 2x1 PDF 4x1
4Specyfikacja funkcji, operacje wejścia i wyjścia na plikach, rekurencja, tablice i wskaźniki PDF PDF Postscript 1x1 PDF 2x1 PDF 4x1
5Wprowadzenie do systemu X Window. Praca z uniksowym interpreterem poleceń PDF PDF
PDF
Postscript 1x1 PDF 2x1 PDF 4x1
Postscript 1x1 PDF 2x1 PDF 4x1
HTML HTML HTML HTML
6Tablice i wskaźniki cd., argumenty wywołania programu, reguły stylu programowania, asercje PDF PDF Postscript 1x1 PDF 2x1 PDF 4x1
7Zmienne dynamiczne, struktury, moduły programowe PDF PDF Postscript 1x1 PDF 2x1 PDF 4x1 HTML
8Obsługa błędów, przeszukiwanie i sortowanie tablic PDF PDF Postscript 1x1 PDF 2x1 PDF 4x1
9Listy i stosy PDF PDF Postscript 1x1 PDF 2x1 PDF 4x1
10Złożoność obliczeniowa PDF PDF Postscript 1x1 PDF 2x1 PDF 4x1 MP4 MP4 MP4 MP4 MP4
11Przetwarzanie napisów, drzewa binarne PDF PDF Postscript 1x1 PDF 2x1 PDF 4x1 HTML
12Języki programowania PDF PDF Postscript 1x1 PDF 2x1 PDF 4x1 HTML


Literatura przedmiotu

Literatura podstawowa:
  1. link  Kernighan, Ritchie: ,,Język ANSI C'' (w serii Klasyka Informatyki), WNT, (1987), 1994, 2007, 2010
  2. link  Glass, Ables: ,,Linux dla programistów i użytkowników'', Helion, 2007
Standard języka C ISO/IEC 9899:1999 (C99 z poprawkami TC1-TC3): Inne normy dotyczące języka C: Literatura uzupełniająca:
  1. link  Pyszczuk: ,,Programowanie w języku C'', CC 2010 (pdf  Kopia lokalna, gz  Kody) (napisana nieformalnym językiem (niestety z licznymi błędami, ale mimo to wciąż warta polecenia) książka o programowaniu w C pod linuksem, trochę podobna do pozycji ,,Język ANSI C'', z wieloma dobrze opisanymi przykładami – warto zajrzeć także na pozostałe podstrony przytoczonej powyżej strony (dostępne z umieszczonego na niej menu), traktujące między innymi o instalacji linuksa i pracy w tym systemie)
  2.  Kernighan, Pike: ,,Lekcja programowania'' (w serii Inżynieria Oprogramowania), WNT 2002 (bardziej zaawansowana pozycja z przykładami w większości w języku C – zagadnienia stylu, algorytmów i struktur danych, ich implementacji, interfejsów, wykrywania błędów, wydajności i przenośności oprogramowania)
  3.  Martin: ,,Czysty kod. Podręcznik dobrego programisty'', Helion 2010 (obowiązkowa pozycja dla każdego początkującego programisty, który uważa, że już umie programować – jak pisać dobry kod, jak go formatować, jak implementować pełną obsługę błędów bez zaśmiecania logiki kodu, niestety z przykładami w Javie)
  4.  Love: ,,Linux. Programowanie systemowe'' , Helion 2008 (systematycznie o programowaniu w C pod linuksem, o plikowych operacjach wejścia/wyjścia, o buforowanych operacjach wejścia/wyjścia, o zarządzaniu plikami, procesami, pamięcią, sygnałach i czasie)
  5.  Wróblewski: ,,Algorytmy, struktury danych i techniki programowania'', Helion 2000, 2003, 2009 (dla zaawansowanych z przykładami w C++ – algorytmy i struktury danych, analiza sprawności, optymalizacja, zaawansowane techniki programowania, algorytmika grafów, kodowanie i kompresja danych)
  6.  Prata: ,,Język C. Szkoła programowania'', Helion 2006, 2016, albo King: ,,Język C. Nowoczesne programowanie'', Helion 2011 (dla chcących wiedzieć wiele – biblie w zakresie języka C w standardzie C99, niestety drogie. Dlaczego albo? O tym tutaj)
  7.  Harel, Feldman: ,,Rzecz o istocie informatyki. Algorytmika'' (w serii Klasyka Informatyki), WNT 1992, 2008 (trochę filozoficzna, aczkolwiek zawiera elementy z zakresu algorytmiki – świetna książka dla tych, którym wydaje się, że wiedzą czym jest informatyka)
  8.  Cormen, Leiserson, Rivest: ,,Wprowadzenie do algorytmów'' (w serii Klasyka Informatyki), WNT 1998, 2007 (dla chcących wiedzieć wiele – biblia w zakresie algorytmów i struktur danych, niestety bardzo droga)
  9. link  Knuth: ,,Sztuka programowania'' (w serii Klasyka Informatyki), WNT 2002 (dla chcących wiedzieć wiele – jeszcze jedna ,,biblia'' autorstwa guru programowania, niestety też bardzo droga, ale w sumie ponad dwa i pół tysiąca stron :)
  10.  Matthew, Stones: ,,LINUX: Programowanie'', Wydawnictwo RM 1999 (dla zaawansowanych z przykładami w C – programowanie w środowisku linux, współpraca między programami z wykorzystaniem potoków i mechanizmów komunikacji międzyprocesowej, programowanie aplikacji sieciowych za pomocą gniazd, biblioteka curses, języki powłoki i Tcl, TK)
  11.  Granneman: ,,Linux. Rozmówki'', Helion 2006 (elementarna – praca z systemem, zarządzanie, administrowanie, wszystko przede wszystkim z poziomu konsoli tekstowej, do tego tania)
  12.  Czarny: ,,Linux. Kurs'', Helion 2007 (elementarna w obrazkach (lamerska:) – j.w. z poziomu konsoli graficznej, przeglądanie stron www, korzystanie z poczty, nagrywanie płyt, tworzenie grafiki, redagowanie tekstów, arkuszy kalkulacyjnych)
  13.  Cameron: ,,GNU Emacs'' (w serii Leksykon kieszonkowy), Helion 2002 (ściąga dotycząca pracy z edytorem emacs)
  14.  Wirth: ,,Algorytmy + struktury danych = programy'', WNT 1980, 2004 (ze względów historycznych – struktury danych, algorytmy ilustrowane przykładami w języku Pascal:)
Materiały internetowe:

Zadania na ćwiczenia

nr temat realizacja opis materiały
0 Przecinanie prostokątów 1/2 zajęć HTML MP4
1 Algorytm: specyfikacja, testy 1 zajęcia HTML HTML
2 Notacja MBNF, diagramy składni, drzewa wyliczania wartości wyrażeń, instrukcja pętli 1 zajęcia PDF
3 Algorytmy, ich zapis, ręczna symulacja, analiza złożoności obliczeniowej 1 zajęcia PDF PDF PDF
4 Analiza poprawności konstrukcji, wyliczanie wyrażeń ze wskaźnikami i tablicami, ręczna symulacja, opracowywanie funkcji programu 1 zajęcia (2?!) PDF
5 Sortowanie 0,5 zajęć
lub wcale
PDF
6 Listy i stosy 1 zajęcia PDF
7 Drzewa binarne 1 zajęcia PDF

Zadania na laboratorium

Diablo – praca zdalna, czyli jak pisać programy na zajęcia i opanować obsługę Linuksa/Uniksa

Materiały autorstwa Waszych starszych kolegów, kolegi Potockiego i kolegi Tarnowskiego pt. ,,Linux – jak zacząć?'': Slajdy, Video, (a do tego poradnik ,,Jak przeżyć...'').

nr temat realizacja opis materiały
0 Praca w systemach UNIX, GNU/Linux 1/2 zajęć HTML Diablo – praca zdalna, Linux – powłoka, Emacs – początek
1 Edytor Emacs, kompilator języka C 1 zajęcia HTML emacs_config, plik_do_pracy.txt, trojmian.c
2 Przecięcia zera 1 zajęcia HTML dane wejściowe 1, dane wejściowe 2, Metodyka pracy
3 Przetwarzanie obrazów 1 1 zajęcia HTML odczyt.c PDF PDF PDF Klucze SSH
4 Praca z uniksowym interpreterem poleceń oraz systemem X Window 1 zajęcia HTML licz.sh, dnm.sh, czy_jest.sh, show_userfriendly.sh
5 Tajemnicza plansza 1 zajęcia ePortal moduly.tgz, Samouczek make'a, Więcej o make'u
6 Przetwarzanie obrazów 2 dodatkowe HTML opcje.c
7 Kalkulator RPN 1 zajęcia HTML HTML HTML czytaj1.c, czytaj2.c, czytaj3.c
8 Wyszukiwanie przybliżone dodatkowe HTML

Informacje o zaliczeniu wykładu i przedmiotu

Warunki zaliczenia wykładu

Zaliczenie wykładu następuje na podstawie krótkich testów ekranowych (tzw. haszówek) prowadzonych w trakcie semestru na ćwiczeniach. Dla osób, które nie uzyskają zaliczenia w tym trybie będzie zorganizowane kolokwium poprawkowe w postaci haszówki zbiorczej z całego materiału. Będzie to ostatnia szansa uzyskania zaliczenia wykładu.

Do zaliczenia wykładu brane są wyniki haszówek po odrzuceniu najgorszej z nich, według poniższej tabeli (procentowy próg jest ilorazem liczby punktów uzyskanych w haszówkach do liczby punktów możliwych do uzyskania).

Skala ocen do zaliczenia wykładu

próg % 50.0060.0070.0080.0090.00
ocena 3.0 3.5 4.0 4.5 5.0

Warunki zaliczenia ćwiczeń i laboratorium

Warunki zaliczenia ćwiczeń i laboratorium ustalają indywidualnie osoby prowadzące te zajęcia. Uzyskane oceny uwzgledniane są w ocenie końcowej z przedmiotu według poniżej przedstawionych zasad.

Warunki zaliczenia przedmiotu

Warunkiem koniecznym zaliczenia przedmiotu jest pozytywne zaliczenie wykładu i form towarzyszących.

Ocena końcowa z przedmiotu

Ocena końcowa z przedmiotu będzie stanowić średnią ważoną ocen z wykładu, ćwiczeń oraz laboratorium z wagami odpowiednio 0.5, 0.2, 0.3.


Zawartość tematyczna haszówek

haszówka termin tematyka
1 0. lub 1. ćwiczenia zagadnienia poruszane na pierwszych ćwiczeniach, zadanie algorytmiczne, zapis algorytmów
2 po 23.10.2023 składnia – notacja MBNF, kategorie składniowe C: komentarze, identyfikatory, literały, typy danych, stałe i zmienne, wyrażenia i operatory, drzewa wyliczania wartości wyrażeń, instrukcje – podstawy.
3 po 20.11.2023 obliczenia stało- i zmiennopozycyjne, zarys złożoności obliczeniowej, operacje wejścia/wyjścia, funkcje i ich parametry, zmienne lokalne a globalne, specyfikacja funkcji, tablice jednowymiarowe i wskaźniki.
4 po 27.11.2023 architektura systemu X Window, serwer X Window, klienty, zarządcy okien, system X Window w środowisku sieciowym, operowanie tablicami, funkcje operujące na tablicach, arytmetyka wskaźników, rzutowanie, przeszukiwanie tablic, inicjowanie tablic.
5po 04.12.2023 argumenty wywołania programu, reguły stylu programowania, dokumentacja programu, asercje, obsługa błędów, zmienne dynamiczne – przydział i zwalnianie pamięci, tablice dynamiczne, wskaźniki do struktur, struktury zawierające tablice, rozdzielna kompilacja – moduły.
ostatniapo 08.01.2024 listy, stosy, sortowanie, ocena i poprawa efektywności programów (algorytmów)

Dla wygody studentów i prowadzących ćwiczenia stąd można pobrać formularz przydatny przy pisaniu haszówek. Jedna strona wystarcza na cztery haszówki! Powodzenia:)

Osoby mające problemy z liczeniem modulo w systemie szesnastkowym przed pisaniem haszówek mogą poćwiczyć wyliczanie numeru grupy korzystając z tej prostej aplikacji (wpisujemy nr indeksu, losujemy parametry funkcji haszującej, samodzielnie wyliczamy nr grupy, sprawdzamy poprawność obliczeń wybierając przycisk Rezultat).


Informacje i materiały pomocnicze nt. laboratoriów


Program | Materiały | Literatura | Zadania | Zaliczenia | Haszówki: zawartość | Pomoc
Licznik odwiedzin strony od 25 września 2007: licznik
Licznik odwiedzin strony od 25 września 2021: licznik
Ostatnia aktualizacja: Monday, 29-Jan-2024 09:25:42 CET   Valid XHTML 1.0 Transitional! Valid CSS! Created with Emacs  Bykom Stop Spam Poison