Podstawy: C/C++

Programowanie strukturalne

Wprowadzenie do programowania z wykorzystaniem języka C++ — te materiały wykładowe dedykowane są dla osób, które nie miały wcześniej styczności z programowaniem, zawierają łagodne wprowadzenie w zagadnienia programowania, od samych jego podstaw.

Materiały te są dedykowane dla z przedmiotu Podstawy Programowania (1-szy semestr WSTI), Języków Programowania (2-szy semestr WSTI). Ściągnij, wydrukuj, przyjdź na wykład z wydrukiem, będzie mniej pisania. Materiały to dokumenty PDF.

  • Wprowadzenie — wykład poświęcony jest prezentacji koncepcji programowania w języku symbolicznym, omówieniu roli i koncepcji działania asemblera, koncepcji programowania w językach wysokiego poziomu, omówieniu roli translatorów. Przedstawiono różnice pomiędzy kompilacją a interpretacją programu, wskazano możliwość kompilowania do postaci kodu pośredniego. Omówiono rolę maszyny wirtualnej, elementy środowiska pracy programisty. Przedstawiono wady i zalety programowania na niskiego i wysokiego poziomu, przedstawiono ogólną charakterystykę współczesnego podziału języków programowania na rożne kategorie.
  • Pierwsze programy — ten wykład to łagodne wprowadzenie do zagadnień programowania. Prezentuje on koncepcję algorytmu, właściwości dobrego algorytmu, sposoby zapisu algorytmów. Przedstawiono pojęcie zmiennej, rolę jej nazwy i typu. Na przykładzie prostych programów wprowadzono podstawowe elementy niezbędne do przygotowania programów w języku C++. Omówiono rolę koncepcję funkcji, rolę funkcji main, plików nagłówkowych, sposoby wykonywanie operacji wejścia-wyjścia z wykorzystaniem obiektów cin i cout, sposoby wykonywania prostych obliczeń, omówiono podstawowe operatory, wprowadzono pojęcie instrukcji warunkowej.
  • Instrukcje sterujące — wykład prezentuje instrukcje sterujące wykonaniaem programu: warunkowe, przełączającą, iteracyjne. Omawiane instrukcje ilustrowane są przykładami prezentującymi sposoby ich wykorzystania. Przykłady przyjmują postać prostych, lecz kompletnych programów, których implementację można przećwiczyć we własnym zakresie.
  • Tablice — wykład wprowadzający w tematykę wykorzystania tablic. Prezentuje koncepcję zmiennych tablicowych, ich zastosowania, sposoby deklarowania w języku C++, podstawowe operacje na tablicach. Iteracyjne przetwarzanie tablic. Przykłady przetwarzania ciągów liczbowych zapamiętanych w tablicach. Sortowanie — koncepcja i implementacja algorytmu sortowania przez proste wybieranie. Tablice dwuwymiarowe — koncepcja, deklaracja, podstawowe operacje, zastosowania.
  • Podprogramy — wykład wprowadzający w tematykę wykorzystania podprogramów. Prezentuje koncepcję podprogramu, rodzaje podprogramów — procedury i funkcje. Omawia realizację podprogramów w C/C++, wskazując metodę budowania procedur jako funkcji z rezultatem typu void. Wykład prezentuje koncepcję przekazywania parametrów przez wartość oraz przez zmienną, wykorzystując w C++ parametry w postaci referencji. Uzupełnieniem są wykłady poświęcone preprocesorowi oraz klasom pamięci oraz budowaniu programów wielomodułowych. Uwaga — te zagadnienia są bardzo istotne a zwykle brakuje czasu na ich omówienie.
  • Typy, operatory, wyrażenia — wykład prezentujący podstawowe jednostki leksykalne programu, typy proste, operacje na typach prostych, operatory i zasady budowania wyrażeń. Wykład dość długi i nudny, ale zawiera szereg informacji typu jazda obowiązkowa, czyli jeżeli tego nie wiesz, to nigdy nie będziesz profi.
  • Przetwarzanie napisów — wykład prezentuje koncepcje reprezentowania napisów w postaci łańcuchów zakończonych znacznikiem końca. Przedstawiono podstawowe zagadnienia związane z przetwarzaniem łańcuchów znakowych, ilustrowana przykładami funkcji. Ćwiczenie polega na zaimplementowaniu przykładowych funkcji wg, opisu w komentarzach programu, który można pobrać stąd.
  • Zmienne wskaźnikowe, koncepcja, podstawowe zastosowania — wykład przedstawia koncepcję zmiennych wskaźnikowych, sposób ich definiowania, inicjalizowania, odwoływania się do obiektów wskazywanych. Przedstawiono także podstawowe zastosowania zmiennych wskaźnikowych — wykorzystanie zmiennych wskaźnikowych do przekazywania parametrów przez „zmienną” oraz dynamiczny przydział pamięci dla pojedynczych obiektów z wykorzystaniem operatorów new i delete. W suplemencie przedstawione funkcje z biblioteki języka C: malloc i free.
  • Wskaźniki a tablice — wykład poświęcony jest omówieniu powiązań występujących pomiędzy zmiennymi wskaźnikowymi a nazwami tablic. Po przedstawieniu koncepcji reprezentacji fizycznej tablic, przedstawione zostały przykłady wykorzystania analogii pomiędzy zmiennymi tablicowymi a zmiennymi wskaźnikowymi, głównie na przykładzie wskaźnikowych implementacji funkcji operujących na łańcuchach znakowych. Zaprezentowano także możliwości wykorzystania zmiennych wskaźnikowych oraz dynamicznego przydziału pamięci do tworzenia tablic pseudodynamicznych. Przedyskutowano metody realizacji tego typu tablic w języku C i C++.
  • Struktury czyli rekordy w języku C i C++ — wykład poświęcony jest koncepcji reprezentacji rekordów w językach C i C++. Zaprezentowano koncepcję rekordu jako złożonej struktury danych opisujących złożone obiekty, zasady definiowania typów strukturalnych w C oraz C++, manipulowanie rekordami, przekazywanie rekordów jako parametrów funkcji.
  • Przetwarzanie plików na poziomie stdio, wprowadzenie — wykład poświęcony jest koncepcji reprezentacji plików w języku C, prezentuje metody wykorzystania standardowej biblioteki obsługi plikowego wejścia-wyjścia.
  • Przetwarzanie plików na poziomie stdio, pliki operacje blokowe — wykład poświęcony jest koncepcji przetwarzania z wykorzystaniem amorficznych bloków, zaprezentowano metody wykorzystania funkcji fread oraz fwrite.
  • Tablice i pliki struktur — wykład poświęcony jest prezentacji przykładu wykorzystania trzech poznanych, zlożonych struktur danych — tablic, rekordów i plików — jako narzędzia realizacji programu ewidencjonującego informacje o samochodach. Prosty program realizujący ewidencjonowanie danych o pojazdach autokomisu, do pobrania program w wersji źródłowej.