MCM032102 W

Jest to podstawowy zestaw informacji dla kursu Wprowadzenie do informatyki prowadzonego na Wydziale Mechanicznym Politechniki Wrocławskiej na kierunku Mechatronika — MCM032102W.

Slajdy

  1. Język C w pigułce
  2. Programowanie (Blockly) slajdycoś do czytaniaWprowadzenie. Algorytm. Schematy blokowe. Idea programowania strukturalnego.
  3. Struktura programów w C. Identyfikator, typy danych (typy fundamentalne: całkowite, rzeczywiste, znakowe, logiczny), deklaracja i inicjalizacja zmiennych, definiowanie stałych. Komunikacja poprzez konsolę. Operatory: arytmetyczne, logiczne, inkrementacji, dekrementacji, przypisania. Obliczanie wartości wyrażeń.
  4. Instrukcje sterujące.
  5. Preprocesor: dyrektywy, makrodefinicje. Zazwyczaj temat omawiany jest w sposób skrótowy!
  6. Funkcje: budowa funkcji, argumenty funkcji, wynik wykonania funkcji, definicje i deklaracje globalne, argumenty funkcji main, rekurencja.
  7. Tablice (tablice jedno i wielowymiarowe), łańcuchy znaków.
  8. Wskaźniki. Pamięć dynamiczna.
  9. Kolokwium (czasami go nie ma)
  10. Struktury danych, unie: deklaracja struktury, definiowanie zmiennej strukturalnej, tablice struktur, wskaźniki a struktury danych.
  11. Operacje na plikach: otwieranie, zamykanie plików, czytanie i zapisywanie do plików.
  12. Formatowanie w operacjach wejście/wyjście. Binarne wejście/wyjście.
  13. Operacje na łańcuchach znaków.
  14. Programy pomocnicze: diff, make, systemy rcs i cvs, debugger. Zarządzanie wersjami. Środowiska zintegrowane.
  15. Programowanie strukturalne w praktyce: podział programu na moduły, struktury danych, kompilacja.
  16. Extra:

Podręczniki

Poniżej lista bardzo wielu dostępnych w księgarni/bibliotece/Internecie źródeł informacji na temat programowania w języku C.

  • J. Grębosz, Symfonia C++, Kraków: Kallimach, 2000.
    [BibTeX]
    @Book{Grebosz,
    author = {Grębosz, J.},
    title = {Symfonia {C}++},
    year = {2000},
    publisher = {Kallimach},
    address = {Kraków},
    }

  • D. Griffiths and D. Griffiths, C. Rusz głową!, Gliwice: Helion, 2013.
    [BibTeX]
    @Book{Griffiths2013,
    author = {Griffiths, David and Griffiths, Dawn},
    title = {C. {R}usz głową!},
    year = {2013},
    note = {Strona księgarni: \url{http://helion.pl/ksiazki/c-rusz-glowa-david-griffiths-dawn-griffiths,cruszg.htm}},
    publisher = {Helion},
    address = {Gliwice},
    owner = {myszka},
    timestamp = {2016.03.02},
    }

  • D. Griffiths and D. Griffiths, Head first C, O’reilly, 2011.
    [BibTeX] [Download PDF]
    @Book{Griffiths2011,
    author = {David Griffiths and Dawn Griffiths},
    title = {Head First {C}},
    year = {2011},
    series = {Head First},
    note = {Są szanse, żeby ksiazka byłą dostępna pod tym adresem: \url{http://proquestcombo.safaribooksonline.com/9781449335649}. Można się o nią „dobijać” zgodnie z instrukcją na \href{http://www.bg.pwr.wroc.pl/600576.dhtml}{stronie biblioteki}.},
    publisher = {O'Reilly},
    url = {http://proquestcombo.safaribooksonline.com/9781449335649},
    owner = {myszka},
    timestamp = {2011.10.18},
    }

  • D. Harel and Y. Feldman, Rzecz o istocie informatyki: algorytmika, Warszawa: Wydawnictwa naukowo-techniczne, 2001, 2002, 2008.
    [BibTeX]
    @Book{Harel,
    author = {David Harel and Yishai Feldman},
    title = {Rzecz o istocie informatyki: algorytmika},
    year = {2001, 2002, 2008},
    series = {Klasyka informatyki},
    publisher = {Wydawnictwa Naukowo-Techniczne},
    address = {Warszawa},
    owner = {myszka},
    timestamp = {2010.10.02},
    }

  • G. Heineman, G. Pollice, and S. Selkow, Algorytmy. almanach, Gliwice: Helion, 2010.
    [BibTeX]
    @Book{Heineman2010,
    author = {George Heineman and Gary Pollice and Stanley Selkow},
    title = {Algorytmy. Almanach},
    year = {2010},
    publisher = {Helion},
    address = {Gliwice},
    owner = {myszka},
    timestamp = {2016.04.11},
    }

  • S. Holmes, „C programming,” , 1995.
    [BibTeX] [Download PDF]
    @Electronic{Holmes,
    author = {Steve Holmes},
    title = {C Programming},
    year = {1995},
    url = {http://www.imada.sdu.dk/~svalle/courses/dm14-2005/mirror/c/},
    howpublished = {\url{http://www.imada.sdu.dk/~svalle/courses/dm14-2005/mirror/c/}},
    }

  • T. Jensen, „A tutorial on pointers and arrays in C,” , 2000.
    [BibTeX] [Download PDF]
    @Electronic{Pointers,
    author = {Ted Jensen},
    title = {A tutorial on pointers and arrays in {C}},
    year = {2000},
    url = {http://pweb.netcom.com/~tjensen/ptr/pointers.htm},
    note = {Dostępne jako \url{http://pweb.netcom.com/~tjensen/ptr/pointers.htm}},
    month = {Feb.},
    }

  • R. Kendrick, „Some dark corners of C,” , 2013.
    [BibTeX] [Download PDF]
    @Electronic{Kendrick,
    author = {Rob Kendrick},
    title = {Some dark corners of {C}},
    year = {2013},
    url = {https://docs.google.com/presentation/d/1h49gY3TSiayLMXYmRMaAEMl05FaJ-Z6jDOWOz3EsqqQ/preview#slide=id.gec7eb408_3500},
    owner = {myszka},
    timestamp = {2013.03.09},
    }

  • B. W. Kernighan and D. M. Ritchie, Język ANSI C, Warszawa: Wnt, 2007.
    [BibTeX]
    @Book{ansic,
    author = {Kernighan, B. W. and Ritchie, D. M.},
    title = {Język {ANSI} {C}},
    year = {2007},
    publisher = {WNT},
    address = {Warszawa},
    }

  • B. Klemens, 21st century C, O’Reilly media, 2012.
    [BibTeX] [Abstract] [Download PDF]

    Throw out your old ideas of C, and relearn a programming language that’s substantially outgrown its origins. With 21st Century C, you’ll learn how to dump old habits that made sense on mainframes, and pick up the tools you need to use thi…

    @Book{ben_klemens_21st_2012,
    author = {Ben Klemens},
    title = {21st Century {C}},
    year = {2012},
    note = {\url{http://shop.oreilly.com/product/0636920025108.do}},
    publisher = {{O'Reilly} Media},
    isbn = {978-1-449-32714-9},
    url = {http://shop.oreilly.com/product/0636920025108.do},
    urldate = {2013-02-06},
    abstract = {Throw out your old ideas of C, and relearn a programming language that’s substantially outgrown its origins. With 21st Century C, you’ll learn how to dump old habits that made sense on mainframes, and pick up the tools you need to use thi...},
    file = {Snapshot:/home/myszka/.zotero/zotero/my63giux.default/zotero/storage/4P2R6AQX/0636920025108.html:text/html},
    keywords = {1449327141, 1-4493-2714-1, 21st Century C, 9781449327149, 978-1-4493-2714-9, Ben Klemens, oreilly, {O'Reilly}},
    }

  • M. J. Kubiak, Programuję w językach Turbo Pascal i C/C++: programowanie strukturalne z elementami programowania obiektowego, Warszawa: Mikom, 2001.
    [BibTeX]
    @Book{kubiak,
    author = {Kubiak, M. J.},
    title = {Programuję w językach {T}urbo {P}ascal i {C/C}++: programowanie strukturalne z elementami programowania obiektowego},
    year = {2001},
    publisher = {Mikom},
    address = {Warszawa},
    }

  • C. O’Riordan, Learning GNU C, Ciaran o’riordan, 2002.
    [BibTeX] [Download PDF]
    @Book{riordan,
    author = {Ciaran O'Riordan},
    title = {Learning {GNU C}},
    year = {2002},
    publisher = {Ciaran O'Riordan},
    url = {http://www.faqs.org/docs/learnc/},
    }

  • R. M. Reese, Wskaźniki w języku C: przewodnik, Gliwice: Helion, 2014.
    [BibTeX] [Abstract]

    Kompendium wiedzy o wskaźnikach w języku C

    @Book{Reese2014,
    author = {Reese, Richard M.},
    title = {Wskaźniki w języku {C}: przewodnik},
    year = {2014},
    note = {Dostęp po zalogowaniu w bazie NASBI. \url{http://biblioteka.pwr.wroc.pl/NASBI_Naukowa_Akademicka_Sieciowa_Biblioteka_Internetowa,161.dhtml}},
    publisher = {Helion},
    abstract = {Kompendium wiedzy o wskaźnikach w języku C},
    address = {Gliwice},
    owner = {myszka},
    timestamp = {2016.04.09},
    }

  • R. M. Reese, Understanding and Using C Pointers, O’reilly, 2013.
    [BibTeX] [Abstract] [Download PDF]

    Improve your programming through a solid understanding of C pointers and memory management. With this practical book, you’ll learn how pointers provide the mechanism to dynamically manipulate memory, enhance support for data structures, and…

    @Book{richard_m._reese_understanding_2013,
    author = {Richard M. Reese},
    title = {Understanding and {Using} {C} {Pointers}},
    year = {2013},
    publisher = {O'Reilly},
    url = {http://shop.oreilly.com/product/0636920028000.do},
    urldate = {2015-03-17},
    abstract = {Improve your programming through a solid understanding of C pointers and memory management. With this practical book, you’ll learn how pointers provide the mechanism to dynamically manipulate memory, enhance support for data structures, and...},
    file = {Snapshot:/home/myszka/.mozilla/firefox/7m2m4ye2.default/zotero/storage/S5RWUJWX/0636920028000.html:text/html},
    }

  • A. Sapek, W głąb języka C, Gliwice: Helion, 1993.
    [BibTeX] [Download PDF]
    @Book{Sapek,
    author = {Adam Sapek},
    title = {W głąb języka {C}},
    year = {1993},
    note = {Wersja elektroniczna dostępna pod adresem: \url{ftp://ftp.helion.pl/online/wglab/1-3.pdf}},
    publisher = {Helion},
    url = {ftp://ftp.helion.pl/online/wglab/1-3.pdf},
    address = {Gliwice},
    month = {lipiec},
    }

  • H. Schildt, Leksykon C/C++, Warszawa: Oficyna wydawnicza LTP, 2002.
    [BibTeX]
    @Book{schildt_leksykon_2002,
    author = {Herbert Schildt},
    title = {Leksykon {C/C++}},
    year = {2002},
    publisher = {Oficyna Wydawnicza {LTP}},
    isbn = {8387115185},
    pages = {345},
    address = {Warszawa},
    lccn = {311669},
    }

  • C. Sexton, Język C to proste, Warszawa: Wyd. rm, 2001.
    [BibTeX]
    @Book{Cproste,
    author = {Sexton, C.},
    title = {Język {C} to proste},
    year = {2001},
    publisher = {Wyd. RM},
    address = {Warszawa},
    }

  • C. Sexton, Programowanie w C++ –- to proste, Warszawa: Rm, 2001.
    [BibTeX]
    @Book{SextonCC,
    author = {Sexton, C.},
    title = {Programowanie w {C}++ --- to proste},
    year = {2001},
    publisher = {RM},
    address = {Warszawa},
    }

  • P. Stańczyk, Algorytmika praktyczna: nie tylko dla mistrzów, Warszawa: Wydawnictwo naukowe PWN, 2009.
    [BibTeX]
    @Book{staczyk_algorytmika_2009,
    author = {Piotr Stańczyk},
    title = {Algorytmika praktyczna: Nie tylko dla mistrzów},
    year = {2009},
    publisher = {Wydawnictwo Naukowe {PWN}},
    isbn = {9788301158217},
    address = {Warszawa},
    lccn = {339077},
    owner = {myszka},
    shorttitle = {Algorytmika Praktyczna},
    timestamp = {2010.09.18},
    }

  • K. Stec, Wybrane elementy języka C, Gliwice: Wyd. pol. śląskiej, 2001.
    [BibTeX]
    @Book{Stec,
    author = {Stec, K.},
    title = {Wybrane elementy języka {C}},
    year = {2001},
    publisher = {Wyd. Pol. Śląskiej},
    address = {Gliwice},
    }

  • C. L. Tondo, S. E. Gimpel, and D. Kruszewska, Język ANSI C: ćwiczenia i rozwiązania, Wyd. 2 ed., Warszawa: Wydawnictwa Naukowo-Techniczne, 2004.
    [BibTeX]
    @Book{tondo_jzyk_2004,
    author = {Clovis L Tondo and Scott E Gimpel and Danuta Kruszewska},
    title = {Język {ANSI} {C}: Ćwiczenia I Rozwiązania},
    year = {2004},
    edition = {Wyd. 2},
    publisher = {Wydawnictwa {Naukowo-Techniczne}},
    isbn = {8320429498},
    pages = {221},
    address = {Warszawa},
    lccn = {317211},
    }

  • P. Wayner, „12 predictions for the future of programming,” InfoWorld, 2014.
    [BibTeX] [Abstract] [Download PDF]

    We gaze into our coding crystal ball to find the sure bets and intriguing developments developers should target in the next five years

    @Electronic{Wayner,
    author = {Wayner, Peter},
    title = {12 predictions for the future of programming},
    year = {2014},
    url = {http://www.infoworld.com/d/application-development/12-predictions-the-future-of-programming-235292},
    month = feb,
    urldate = {2014-02-09},
    abstract = {We gaze into our coding crystal ball to find the sure bets and intriguing developments developers should target in the next five years},
    file = {Snapshot:/home/myszka/.mozilla/firefox/nm4svl2b.default/zotero/storage/HGJ8ZBBZ/12-predictions-the-future-of-programming-235292.html:text/html},
    journal = {{InfoWorld}},
    }

  • N. Wirth, Algorytmy + struktury danych = programy, Warszawa: Wnt, 2001.
    [BibTeX]
    @Book{wirth,
    author = {Wirth, N.},
    title = {Algorytmy + struktury danych = programy},
    year = {2001},
    publisher = {WNT},
    address = {Warszawa},
    }

  • P. Wróblewski, Algorytmy: struktury danych i~techniki programowania, Gliwice: Helion, 2010.
    [BibTeX]
    @Book{Wroblewski2010,
    author = {Piotr Wróblewski},
    title = {Algorytmy: struktury danych i~techniki programowania},
    year = {2010},
    publisher = {Helion},
    address = {Gliwice},
    owner = {myszka},
    timestamp = {2010.10.02},
    }

  • „A gnu manual,” in Using the GNU compiler collection (GCC), Free software foundation, inc., 2015.
    [BibTeX] [Download PDF]
    @InBook{_nested_????,
    title = {A GNU Manual},
    booktitle = {Using the {GNU} Compiler Collection ({GCC)}},
    year = {2015},
    publisher = {Free Software Foundation, Inc.},
    chapter = {Nested Functions},
    url = {https://gcc.gnu.org/onlinedocs/gcc-5.3.0/gcc/Nested-Functions.html#Nested-Functions},
    urldate = {2013-03-17},
    file = {Nested Functions - Using the GNU Compiler Collection (GCC):/home/myszka/.zotero/zotero/my63giux.default/zotero/storage/M2WE9T9D/Nested-Functions.html:text/html},
    howpublished = {http://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html\#Nested-Functions},
    owner = {myszka},
    timestamp = {2016.04.11},
    }

  • „Programowanie w języku C,” , 2007.
    [BibTeX] [Download PDF]
    @Electronic{wiki.pl,
    title = {Programowanie w języku {C}},
    year = {2007},
    url = {http://pl.wikibooks.org/wiki/Programowanie:C},
    note = {Wersja elektroniczna dostępna pod adresem: \url{http://pl.wikibooks.org/wiki/Programowanie:C}},
    key = {C},
    publisher = {Wikibooks},
    }

  • N. Parlante, „Essential C,” , 2003.
    [BibTeX] [Download PDF]
    @Electronic{Parlante2003,
    author = {Nick Parlante},
    title = {Essential {C}},
    year = {2003},
    url = {http://cslibrary.stanford.edu/101/EssentialC.pdf},
    }

  • N. Parlante, „Pointers and memory,” , 2000.
    [BibTeX] [Download PDF]
    @Electronic{Parlante2000,
    author = {Nick Parlante},
    title = {Pointers and Memory},
    year = {2000},
    url = {http://cslibrary.stanford.edu/102/PointersAndMemory.pdf},
    }

  • N. Parlante, „Linked list problems,” , 2002.
    [BibTeX] [Download PDF]
    @Electronic{Parlante2002,
    author = {Nick Parlante},
    title = {Linked List Problems},
    year = {2002},
    url = {http://cslibrary.stanford.edu/105/LinkedListProblems.pdf},
    }

  • N. Parlante, „Binary trees,” , 2001.
    [BibTeX] [Download PDF]
    @Electronic{Parlante2001,
    author = {Nick Parlante},
    title = {Binary Trees},
    year = {2001},
    url = {http://cslibrary.stanford.edu/110/BinaryTrees.pdf},
    }

  • N. Parlante, „The great tree-list recursion problem,” , 2001.
    [BibTeX] [Download PDF]
    @Electronic{Parlante2001a,
    author = {Nick Parlante},
    title = {The Great Tree-List Recursion Problem},
    year = {2001},
    url = {http://cslibrary.stanford.edu/109/TreeListRecursion.html},
    }

  • N. Parlante, „Pointer basics,” , 1999.
    [BibTeX] [Download PDF]
    @Electronic{Parlante1999,
    author = {Nick Parlante},
    title = {Pointer Basics},
    year = {1999},
    url = {http://cslibrary.stanford.edu/106/},
    }

  • N. Parlante and J. Zelenski, „Unix programming tools,” , 2001.
    [BibTeX] [Download PDF]
    @Electronic{Parlante2001b,
    author = {Nick Parlante and Julie Zelenski},
    title = {Unix Programming Tools},
    year = {2001},
    url = {http://cslibrary.stanford.edu/107/UnixProgrammingTools.pdf},
    }

Ja korzystam głównie z:

  • D. Griffiths and D. Griffiths, Head first C, O’reilly, 2011.
    [BibTeX] [Download PDF]
    @Book{Griffiths2011,
    author = {David Griffiths and Dawn Griffiths},
    title = {Head First {C}},
    year = {2011},
    series = {Head First},
    note = {Są szanse, żeby ksiazka byłą dostępna pod tym adresem: \url{http://proquestcombo.safaribooksonline.com/9781449335649}. Można się o nią „dobijać” zgodnie z instrukcją na \href{http://www.bg.pwr.wroc.pl/600576.dhtml}{stronie biblioteki}.},
    publisher = {O'Reilly},
    url = {http://proquestcombo.safaribooksonline.com/9781449335649},
    owner = {myszka},
    timestamp = {2011.10.18},
    }

  • G. Heineman, G. Pollice, and S. Selkow, Algorytmy. almanach, Gliwice: Helion, 2010.
    [BibTeX]
    @Book{Heineman2010,
    author = {George Heineman and Gary Pollice and Stanley Selkow},
    title = {Algorytmy. Almanach},
    year = {2010},
    publisher = {Helion},
    address = {Gliwice},
    owner = {myszka},
    timestamp = {2016.04.11},
    }

  • B. W. Kernighan and D. M. Ritchie, Język ANSI C, Warszawa: Wnt, 2007.
    [BibTeX]
    @Book{ansic,
    author = {Kernighan, B. W. and Ritchie, D. M.},
    title = {Język {ANSI} {C}},
    year = {2007},
    publisher = {WNT},
    address = {Warszawa},
    }

  • R. M. Reese, Understanding and Using C Pointers, O’reilly, 2013.
    [BibTeX] [Abstract] [Download PDF]

    Improve your programming through a solid understanding of C pointers and memory management. With this practical book, you’ll learn how pointers provide the mechanism to dynamically manipulate memory, enhance support for data structures, and…

    @Book{richard_m._reese_understanding_2013,
    author = {Richard M. Reese},
    title = {Understanding and {Using} {C} {Pointers}},
    year = {2013},
    publisher = {O'Reilly},
    url = {http://shop.oreilly.com/product/0636920028000.do},
    urldate = {2015-03-17},
    abstract = {Improve your programming through a solid understanding of C pointers and memory management. With this practical book, you’ll learn how pointers provide the mechanism to dynamically manipulate memory, enhance support for data structures, and...},
    file = {Snapshot:/home/myszka/.mozilla/firefox/7m2m4ye2.default/zotero/storage/S5RWUJWX/0636920028000.html:text/html},
    }

Bryk

Powstała pierwsza wersja czegoś w rodzaju bryku do wykładu. Po angielsku nazywa się to zwykle Lecture Notes. Materiał powstał na podstawie slajdów do wykładu i będzie stale uzupełniany o różne komentarze (których na slajdach nie ma i nie będzie). Nie warto jeszcze tego chyba drukować (tym bardziej, że to prawie 200 stron). Na razie nie przewiduję innej wersji niż PDF.

Do pobrania:

Na stronie tytułowej znajdują się informacje na temat daty ostatnich zmian. Informacje takie dostępne są również dla każdego rozdziału.

Listy zadań

Na razie nie dorobiłem się zebranych list zadań. Można natomiast korzystać z list zadań umieszczonych na stronach dr Doroty Aniszewskiej:

Gadżety

  1. ANSI C Reference Card (najważniejsze polecenia języka C do wydrukowania na jednej kartce)