Politechnika
Wrocławska, Wydział Informatyki i Telekomunikacji, Kierunek Informatyka
Techniczna, 1 rok studiów,
sem. zimowy 2024/2025
"PODSTAWY PROGRAMOWANIA"
Kurs:
W04ITE-SI0037G / WYKŁAD '2024/25
- Zasady
zaliczenia kursu
obowiązujące semestrze zimowym 2024/25
- Kolokwia zaliczeniowe
dla kierunku INFORMATYKA
I.
3 grudnia
2024
|
- przykładowe
zadania 1 (na
pierwszy sprawdzian)
|
II. 28
stycznia
2025
|
- przykładowe
zadania 2 (na
sprawdzian końcowy)
|
III. 5-7
lutego 2025
|
-
termin poprawkowy
(dla
osób które nie pisały kolokwium, nie zaliczyły, lub chcą poprawić ocenę)
|
Materiały
do
wykładu '2024/25: Podstawy
programowania (z przykładami w języku C i C++)
-
Wprowadzenie:
Algorytmiczne języki programowania. Program komputerowy i proces jego
opracowywania.
Struktura
programu źródłowego w C/C++. Przykłady prostych programów.
Podstawowe
typy całkowite i rzeczywiste . Definiowanie i inicjalizacja
zmiennych prostych.
Operatory
i wyrażenia:
Operator przypisania.
Operatory i wyrażenia arytmetyczne.
Operatory
przypisania arytmetycznego, inkrementacji i dekrementacji.
Operatory relacji, wyrażenia logiczne.
slajdy
do wykładu: ( W1.PDF
)
wiki:
- paradygmat
programowania / programming
paradigms,
- programowanie strukturalne oraz proceduralne,
- comparison
of programming languages
,
C
/ C++
standards,
- Podstawowe
operacje wejścia i wyjścia: Podejście
proceduralne -
funkcje standardowe scanf i printf.
Sterowanie wykonaniem
programu.
Instrukcje
warunkowe if, if-else,
konstrukcja else-if.
Zagniezdżanie instrukcji
if. Instrukcja switch.
slajdy
do wykładu:( W2.PDF
)
( Dodatkowe
przykłady
ilustrujące if/else )
Materiały pomocnicze:
- Wikibooks/Język C:
Podstawowe
procedury wejścia/wyjścia
- dokumentacja
online
funkcji printf oraz scanf (ze
strony www.cplusplus.com)
-
Wikibooks/Język C: Instrukcje
sterujące
Do
przeczytania:
-
Wikipedia → Programowanie
strukturalne
- C
Programming / Program flow control → "Last
thing: goto"
(ilustracja
jak
wyglądałoby programowanie bez strukturalnych instrukcji if-else oraz
instrukcji pętli)
- Programowanie
niskopoziomowe / asembler (dr
Tomasz
Kapela, kurs na Uniwersytecie Jagielońskim)
(ilustracja
jak
wygląda programowanie w kodzie maszynowym, z instrukcjami: jmp, jz ,
jnz , loop, . . .)
- Instrukcje
iteracyjne:
while, do-while, for.
Badanie warunku zakończenia pętli.
Pętle zagnieżdżone.
Instrukcje break
i continue.
Przykłady programów
z wykorzystaniem w/w instrukcji.
slajdy do wykładu: ( W3.PDF )
Materiały pomocnicze
dla instrukcji sterujących
- Kurs
MIT "Introduction
to C++" /
Lecture notes:
- "1.
Introduction" ,
- "3.
Flow of control"
Przykłady:
w3resource: C++ Loops [87 ćwiczeń z
rozwiązaniami]
Inne wskazówki: oprogramowanie
pozycji/koloru wydruków w konsoli: console
color
, gotoxy
, clrscr
- Tablice
w języku C
- deklaracja i inicjalizacja - dostęp do
elementów za
pomocą operatora indeksu.
Operacje na
tablicach z wykorzystaniem pętli for.
Tablice
wielowymiarowe.
slajdy
do wykładu: ( W4.PDF
)
Materiały
pomocnicze:
-
wikiBook: C
Programming / Arrays
- Kurs
MIT -
Lecture 4 notes: Arrays
and Strings
- przykłady
zadań:
w3resource: C++
Array [29 ćwiczeń z
rozwiązaniami w języku C++]
Dla
zaawansowanych:
Do
przeczytania i przemyślenia: Why
aren't "variable-length" arrays part of the C++ standard?,
tzn. dyskusja dlaczego są
problemy z konstrukcją dopuszczoną w wersji C99:
int
rozmiar;
double tablica[rozmiar];
zwłaszcza jak
ktoś próbuje w dlaszej części programu modyfikować zmienną
"rozmiar":
np. scanf("%d",
&rozmiar);
lub
rozmiar = rozmiar+1;
+ artykuł "Legitimate
Use of Variable Length Arrays" by Chris Wellons
" . . . In
general, VLAs not useful. They’re time bombs. VLAs are nearly always
the wrong choice . . . "
|
- Wskaźniki: Wskaźniki
zmiennych i ich adresy, arytmetyka wskaźników.
Związek
pomiędzy wskaźnikami a tablicami. Praca z tablicami w zapisie
wskaźnikowym.
slajdy do
wykładu: ( W5.PDF )
Materiały
uzupełniające:
-
Wikibooks/Język C: Wskaźniki
-
MIT: Lecture 5 notes Pointers
-
guru99: Pointers
in C
Programming: What is Pointer, Types & Examples
-
tutorialspoint: C
- Pointers (Pointer
arithmetic, Array of pointers, Pointer to pointer, Passing pointers to
functions)
-
programiz: C
Pointers (with examples)
-
programiz: Relationship
Between Arrays and Pointers
- .
. . ( kolejne
materiały będą zamieszczane sukcesywnie, w miarę postępu wykładów
)
ARCHIWUM
'2023 (materiały z
poprzedniej edycji kursu)
- Funkcje:
pojęcie funkcji. Deklaracja i definicja funkcji. Prototyp funkcji.
Zwracanie wartości funkcji. Przekazywanie parametrów przez wartość.
Parametry funkcji:
przekazywanie parametrów
funkcji przez: wartość, adres, referencję.
Zwracanie jednej i wielu wartości. Przekazywanie zmiennych prostych,
tablic, łańcuchów.
Funkcje operujące na pamięci: memset,
memcpy, memcmp, memmove,
itp. (z biblioteki <string.h>)
slajdy do
wykładu: ( W6.PDF
)
( Dodatkowe
przykłady tworzenia
funkcji z argumentami
)
Materiały
uzupełniające:
- Wikibooks/Język C - Funkcje
- w3schools - C++
Functions tutorial
- cplusplus - Functions
tutorial
- MIT course - Lecture 3 notes: Functions
- Teksty
-
tablice znakowe
w języku C (C-string).
Standardowe
funkcje łańcuchowe z biblioteki <string.h>
(strcpy, strcmp, strcat, strlen, itd.)
Przykłady
przetwarzania danych tekstowych (operacje na łańcuchach
znaków).
slajdy do
wykładu: ( W7.PDF )
- przykłady_1: Dodatkowe
przykłady funkcji przetwarzających teksty
- przykłady_2: String
User Defined Functions in C language
Materiały
uzupełniające:
- Wikibooks/Język C - PL: Napisy
(EN: String
manipulation)
-
guru99: Strings
in C: How to Declare Variable, Initialize, Print, Examples
-
cplusplus: Null-terminated
character sequences
tutorial
- Dynamiczne
przydzielanie pamięci (malloc, calloc, realloc, free / new, delete)
Tworzenie
tablic i łańcuchów o zadawanej wielkości.
slajdy do
wykładu: ( W8.PDF
)
Porównanie: tablicy statycznej,
tablicy quazi-dynamicznej
(z ograniczeniem rozmiaru) i tablicy dynamicznej
Materiały
uzupełniające:
- BinaryUpdates: Dynamic
Memory Allocation in C Programming
-
Design&Reuse: Dynamic
Memory Allocation and Fragmentation in C and C++
- Guru99: Dynamic
Memory Allocation in C using malloc(), calloc() Functions ,
- GeeksForGeeks: Dynamic
Memory Allocation in C using malloc(), calloc(), free() and realloc()
- cplusplus: Dynamic memory
tutorial
-
Guru99: C++
Dynamic Allocation of Arrays with Example ,
: Stack vs
Heap: Know the Difference
- Typ
strukturalny.
Definicje nowych typów. Deklaracja i inicjalizacja zmiennych
strukturalnych.
Zagnieżdżanie
struktur.Rozszerzenie struktury o metody składowe. Atrybuty dostępu.
slajdy do
wykładu: ( W9.PDF )
( Dodatkowe
przykłady
przetwarzania tablic struktur
)
Materiały uzupełniające:
- cplusplus: Data
structures
- tutorialspoint: C
- Structures
-
programiz: C
struct
-
guru99: What is a
Struct in C++
-
guru99: Difference
between Structure and Class: Explained with C++ Example
- Obsługa
plików zewnętrznych. Pliki tekstowe
i
binarne.Podejście
proceduralne: Standardowe funkcje do obsługi plików z biblioteki <stdio.h>. Wejście i
wyjście dla znaków, łańcuchów i danych formatowanych. Wejście i wyjście
blokowe (binarne).
slajdy do
wykładu: ( W10.PDF )
( Dodatkowe
przykłady przetwarzania plików tekstowych i binarnych )
Materiały uzupełniające:
- WikiBooks - C
Programming/Stream IO
- programiz:
C
Files Input/Output + C
Files Examples
- guru99: C
File management
- tutorialspoint: C
- file I/O
- codingeek: Files in C Programming
Language: Introduction
and Various File Modes
+ File
operations + Examples
and explanation of fgets, fputs, fprintf, fscanf, fread, fwrite
+ Text
Files vs Binary Files
ARCHIWUM
'2022 (materiały
z wcześniejszych edycji kursu)
- Inne możliwości
oprogramowania operacji plikowych (dla
porównania): Obsługa plików zewnętrznych - Podejście
obiektowe - Klasa fstream. Podstawowe metody i operatory.
slajdy do wykładu:
( W10b.PDF
)
cplusplus:
C++ input/output with files
- Wskaźniki a tablice wielowymiarowe.
Tablice wskaźników, wskaźniki na tablice.
- Wskaźniki na funkcje.
Funkcja qsort.
Porównanie różnych kombinacji / zastosowań wskaźników.
slajdy do wykładu:
( W11.PDF
)
- Złożone
struktury danych:
a)
dynamiczna tablica tablic,
b)
tablica wskaźników na dynamiczne tablice / łańcuchy,
c)
dynamiczna tablica wskaźników na dynamiczne tablice / łańcuchy.
Literatura:
Jerzy
Grębosz
“Symfonia
C++”
Robert
Lafore
“Programowanie w języku C przy użyciu Turbo C++”
Andrzej
Zalewski
“Programowanie
w
językach C i C++ z wykorzystaniem pakietu Borland C++”
Kris
Jamsa
“Wygraj z C++”
----------------------------------------------
Bjarne
Stroustrup
“Język C++
“
Robert
Sedgewick “Algorytmy
w C
++ “
----------------------------------------------
Brian Kernigham,
Dennis
Ritchie “Język ANSI C“
Zagadnienia
do
opracowania na laboratorium:
-
Poznanie wybranego środowiska
programistycznego
(Falcon C++, Microsoft Visual Studio, Visual
Studio Code, CLion, Dev-C++ , CodeBlock,)
- Pisanie i
uruchamianie
programów konsolowych z użyciem:
a) zmiennych prostych oraz instrukcji warunkowych
b) pętli i tablic (zapis indeksowy)
c) definiowanie funkcji oraz przekazywanie parametrów,
d) przetwarzanie łańcuchów (zapis indeksowy i wskaźnikowy),
e) tablic struktur - wczytywanie, wyświetlanie, wyszukiwanie,
obliczenia
g) składowanie danych w pliku dyskowym (tekst oraz binarnie)
h)
dynamicznej alokacji pamięci,
dynamicznych
struktur danych
Przykładowy program
laboratorium/ćwiczeń
|