Program
| Materiały
| Literatura
| Zadania
| Zaliczenia
| Haszówki: zawartość,
wyniki
| Pomoc
| Kontakt
 |
Podstawy programowania – 2021/22
|
|
|
Uwaga! Aktualizacje informacji dotyczących zaliczenia przedmiotu
01.02.2022 – pojawiły się wyniki kolokwium poprawkowego (z komentarzem umieszczonym tutaj),
25.01.2022 – zmiana progów na zaliczenie wykładu,
25.01.2022 – pojawiły się wyniki haszówek uzupełniających (za chwilową zawieruchę z wynikami sumarycznymi dziękujemy koledze, który postanowił ponownie napisać jedną z haszówek :)
24.01.2022 – pojawiły się wyniki haszówki nr 6 (pisanie jej przez internet znacznie wyszczupliło histogram i poprawiło średni wynik o prawie 3 punkty :)
Program przedmiotu
Oficjalny program przedmiotu: na serwerze Dziekanatu Wydziału Elektroniki PWr (strona 26):
,
podobno także gdzieś w Katalogu kursów w
systemie
Edukacja.cl
(tudzież JSOS), kod
kursu:
INEW17001 (było INEW0001), kopia lokalna:
.
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 |
| prezentacja | folie | wydruki | przywieszki |
| 1 | Wprowadzenie |
 |
 |
 |
 |
| 2 | Algorytm, podstawowe notacje, typy danych, wyrażenia i instrukcje |
 |
 |
 |
 |
| 3 | Składnia wyrażeń i instrukcji, operacje wejścia i wyjścia |
 |
 |
 |
| 4 | Specyfikacja funkcji, operacje wejścia i wyjścia na plikach, rekurencja, tablice i wskaźniki |
 |
 |
 |
| 5 | Wprowadzenie do systemu X Window. Praca z uniksowym interpreterem poleceń |
 |

 |

 |
 |
| 6 | Tablice i wskaźniki cd., argumenty wywołania programu, reguły stylu programowania, asercje |
 |
 |
 |
| 7 | Zmienne dynamiczne, struktury, moduły programowe |
 |
 |
 |
 |
| 8 | Obsługa błędów, przeszukiwanie i sortowanie tablic |
 |
 |
 |
| 9 | Listy i stosy |
 |
 |
 |
| 10 | Złożoność obliczeniowa |
 |
 |
 |
 |
| 11 | Przetwarzanie napisów, drzewa binarne |
 |
 |
 |
 |
| 12 | Języki programowania |
 |
 |
 |
Literatura przedmiotu
Literatura podstawowa:
-
Kernighan, Ritchie: ,,Język ANSI C'' (w serii Klasyka Informatyki), WNT, (1987), 1994, 2007, 2010
-
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:
-
Pyszczuk: ,,Programowanie w języku C'', CC 2010 (
Kopia lokalna,
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)
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)
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)
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)
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)
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)
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)
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)
-
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 :)
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)
Granneman: ,,Linux. Rozmówki'', Helion 2006 (elementarna – praca z systemem, zarządzanie, administrowanie, wszystko przede wszystkim z poziomu konsoli tekstowej, do tego tania)
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)
Cameron: ,,GNU Emacs'' (w serii Leksykon kieszonkowy), Helion 2002 (ściąga dotycząca pracy z edytorem emacs)
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:
Kurs programowania w C z WikiBooks – biblioteki wolnych podręczników (nie zawsze prawdziwe i nie zawsze ANSI, ale chyba dobre dla tych, co kumają mniej:)
Programowania w C też z WikiBooks – biblioteki wolnych podręczników (podobnie jak powyżej, w formacie pdf)
Kurs języka C autorstwa Jacka Dondu (systematyczny przegląd elementów składowych języka C kierowany do przyszłych programistów mikrokontrolerów)
Język C autorstwa Roberta Chwastka (systematyczny przegląd elementów składowych języka C i jego funckji bibliotecznych)
Strona kursu Wstęp do programowania ze Studiów informatycznych (dla tych, co wiedzieć chcą więcej)
Wgłąb języka C wydawnictwa Helion (tytuł w oryginalnej pisowni Wydawnictwa!!! Trochę odmienne od prezentowanego na wykładzie spojrzenie na niektóre zagadnienia)
Język C – ściąga autorstwa Piotra Różnickiego (trochę C, trochę C++, trochę ANSI, trochę Borland – świadomym nie powinno zaszkodzić)
Język C w pytaniach i odpowiedziach (tytuł mówi praktycznie wszystko, może tylko nie to, że strona jest po angielsku – mnóstwo praktycznych uwag i wyjaśnień rozwiewających wątpliwości)
Programowanie w języku C w 5. krokach (też po angielsku, ale za to jak elementarnie)
Jeszcze jedna dobra strona o programowaniu w języku C (;-)
Algorytmy dla każdego autorstwa Łukasza Żarczyńskiego (w większości) (przede wszystkim algorytmy sortowania, ale też kilka innych)
Środowisko programisty autorstwa Grzegorza M. Wójcika i Sławomira Kotyry (
Kopia lokalna) (jak wygodnie urządzić się w świecie GNU/Linux – zestarzał się jedynie rozdział 2 :)
Podstawy programowania powłoki Bash z Wiki Linux (ciągle niekompletne, ale za to systematyczne)
Przewodnik po edytorze GNU Emacs – wydanie oficjalne (warto zapoznać się, by zdawać sobie sprawę z możliwości edytora)
Zadania na ćwiczenia
| nr | temat |
realizacja | opis | materiały |
| 0 | Przecinanie prostokątów |
1/2 zajęć |
|
|
| 1 | Algorytm: specyfikacja, testy |
1 zajęcia |
| |
| 2 | Notacja MBNF, diagramy składni, drzewa wyliczania wartości wyrażeń, instrukcja pętli |
1 zajęcia |
| |
| 3 | Algorytmy, ich zapis, ręczna symulacja, analiza złożoności obliczeniowej |
1 zajęcia |
|
 |
| 4 | Analiza poprawności konstrukcji, wyliczanie wyrażeń ze wskaźnikami i tablicami, ręczna symulacja, opracowywanie funkcji programu |
1 zajęcia (2?!) |
| |
| 5 | Sortowanie |
0,5 zajęć lub wcale |
| |
| 6 | Listy i stosy |
1 zajęcia |
| |
| 7 | Drzewa binarne |
1 zajęcia |
| |
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ęć |
|
Diablo – praca zdalna,
Linux – powłoka,
Emacs – początek
|
| 1 | Edytor Emacs, kompilator języka C |
1 zajęcia |
| emacs_config,
plik_do_pracy.txt,
trojmian.c |
| 2 | Przecięcia zera |
1 zajęcia |
| dane wejściowe 1,
dane wejściowe 2,
Metodyka pracy
|
| 3 | Przetwarzanie obrazów 1 |
1 zajęcia |
| odczyt.c
Klucze SSH
|
| 4 | Praca z uniksowym interpreterem poleceń oraz systemem X Window |
1 zajęcia |
| licz.sh,
dnm.sh,
czy_jest.sh,
show_userfriendly.sh |
| 5 | Przetwarzanie obrazów 2 |
1 zajęcia |
| opcje.c,
moduly.tgz, Samouczek make'a,
Więcej o make'u |
| 6 | Kalkulator RPN |
1 zajęcia |
|
czytaj1.c,
czytaj2.c,
czytaj3.c
|
| 7 | Wyszukiwanie przybliżone |
dodatkowe |
| |
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 % |
47.00 | 57.00 | 66.00 | 76.00 | 85.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 22.10.2021 |
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 15.11.2021 |
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 29.11.2021 |
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. |
| 5 | po 13.12.2021 |
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. |
| ostatnia | po 3.01.2022 |
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).
Komentarz do wyników kolokwium poprawkowego
Próg zaliczenia wykładu w kolokwium poprawkowym wynosi 34%.
Wyniki haszówek
Poniższy formularz pozwala sprawdzić aktualne wyniki haszówek.
Każda poprawna odpowiedź daje 1 punkt, niepoprawna zaś -1.
Wynik sumaryczny obejmuje haszówki, których pisanie zostało rozpoczęte
(są dostępne w menu Wybierz kod testu), po odrzuceniu najgorszej z nich. Osobom,
które nie pisały jeszcze danej haszówki system dolicza wynik 0 pkt. na
16 możliwych.
Swoje dane proszę podać z polskimi literami w pisowni jak na liście zapisów
dziekanatu, kodowanie polskich liter w systemie ISO-8859-2
(Legenda do tabelek z wynikami: H - poprawny numer grupy,
Popr - poprawna odpowiedź, G - numer grupy podany przez studenta, Stud
- odpowiedź studenta, Pk - liczba punktów uzyskanych z haszówki (na 16
możliwych), Prace - liczba napisanych haszówek na liczbę wszystkich haszówek,
Punkty - suma punktów z napisanych haszówek po odrzuceniu
najgorszej, Procent - odsetek uzyskanych punktów w stosunku do
możliwych do uzyskania (po odrzuceniu najgorszej)).
Histogramy
Dla tych, co lubią analizować i
porównywać
tutaj znajduje się zestaw histogramów dotyczących dotychczas
napisanych haszówek.
Informacje i materiały pomocnicze nt. laboratoriów
Program
| Materiały
| Literatura
| Zadania
| Zaliczenia
| Haszówki: zawartość,
wyniki
| Pomoc
Licznik odwiedzin strony od 25 września 2007:

Licznik odwiedzin strony od 25 września 2021:

Ostatnia aktualizacja: Wednesday, 27-Aug-2025 15:42:41 CEST