Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Automatyczne formatowanie kodu #15

Open
wants to merge 15 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
BasedOnStyle: LLVM
AccessModifierOffset: -4
AlignAfterOpenBracket: BlockIndent
AlignTrailingComments:
Kind: Always
OverEmptyLines: 1
BreakArrays: false
ColumnLimit: 120
IncludeBlocks: Merge
IndentWidth: 4
LineEnding: LF
RemoveSemicolon: true
TabWidth: 4
9 changes: 9 additions & 0 deletions .github/workflows/pre_commit.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
name: pre-commit
on: [push]
jobs:
run:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
- uses: pre-commit/[email protected]
18 changes: 18 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: trailing-whitespace
args: [--markdown-linebreak-ext=md]
exclude: .(in|out)$
- id: end-of-file-fixer
- repo: https://github.com/finsberg/clang-format-docs
rev: v0.3.0
hooks:
- id: clang-format-docs
additional_dependencies: [clang-format==19.1.6]
args: [--style=file:.clang-format]
files: ^docs/
types: [markdown]
# Ignorujemy lekcje A2, A3 i A8, w których specjalnie są błędy.
exclude: ^docs/A-podstawy-programowania/A[238]
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ mkdocs serve
## Dependencies

```bash
pip3 install mkdocs mkdocs-material
pip3 install mkdocs mkdocs-material pre-commit
pre-commit install
```

## Link
Expand Down
4 changes: 0 additions & 4 deletions docs/A-podstawy-programowania/A2-zmienne.md
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,3 @@ Dla wygody programisty, w języku C++ wprowadzono kilka typów całkowitych, ró
| unsigned short (pełna nazwa: unsigned short int) | $[0,65536]$ |
| unsigned int | $[0,4294967296]$ |
| unsigned long long (pełna nazwa: unsigned long long int) | mniej więcej $[0,2\cdot10^{19}]$ |




66 changes: 26 additions & 40 deletions docs/A-podstawy-programowania/A4-warunki.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@ Schemat instrukcji `if` jest następujący:
```cpp
if (warunek) {
instrukcja1;
}
else {
} else {
instrukcja2;
}
```
Expand All @@ -25,34 +24,32 @@ int main() {
cin >> a;
if (a > 10) {
cout << "Liczba jest wieksza niz 10!";
}
else {
cout << "Liczba nie jest wieksza niz 10.".
} else {
cout << "Liczba nie jest wieksza niz 10.";
}
}
```

Widzimy, że napis ``(a > 10)`` w czasie wykonania programu – kiedy już znana jest wartość ``a`` – zawsze jest albo prawdziwy, albo fałszywy, więc program wie, którą z dwóch instrukcji wykonać. Takie napisy nazywamy **warunkami logicznymi**. Najprostsze warunki to takie, które używają operatorów znanych z podstawowej matematyki:


- $<$ (w C++: <)
- $\le$ (w C++: <=)
- $>$ (w C++: >)
- $\ge$ (w C++: >=)
- $=$ (w C++: ==)
- $\not=$ (w C++: !=).
- $<$ (w C++: `<`)
- $\le$ (w C++: `<=`)
- $>$ (w C++: `>`)
- $\ge$ (w C++: `>=`)
- $=$ (w C++: `==`)
- $\not=$ (w C++: `!=`).

Ale są jeszcze prostsze: słowo ``true`` w języku C++ oznacza warunek, który jest po prostu prawdziwy -- czyli jeśli napiszemy:
Są też jeszcze prostsze: słowo `true` w języku C++ oznacza warunek, który jest po prostu prawdziwy -- czyli jeśli napiszemy:

```cpp
if (true) {
instrukcja1;
}
else {
} else {
instrukcja2;
}
```
to zawsze wykona się ``instrukcja1``. Podobnie ``false`` oznacza warunek, który jest zawsze fałszywy. (Nie jest w tym momencie jasne, do czego mielibyśmy użyć takich trywialnych warunków, ale później zobaczymy, do czego nam się mogą przydać.)
to zawsze wykona się `instrukcja1`. Podobnie `false` oznacza warunek, który jest zawsze fałszywy. (Nie jest w tym momencie jasne, do czego mielibyśmy użyć takich trywialnych warunków, ale później zobaczymy, do czego nam się mogą przydać.)

Zobaczmy teraz program, który oblicza wartość bezwzględną z liczby całkowitej, tzn. wypisuje tę liczbę bez znaku.

Expand All @@ -65,8 +62,7 @@ int main() {
cin >> x;
if (x >= 0) {
cout << x << "\n";
}
else {
} else {
cout << -x << "\n";
}
}
Expand All @@ -75,7 +71,7 @@ int main() {
Jeśli liczba $x$ jest nieujemna, wypisujemy nią samą, a w przeciwnym razie wypisujemy minus tę liczbę (czyli to samo co $x$ przemnożone przez -1). Gdyby w programie użyć warunku:

```cpp
if (x > 0)
if (x > 0)
```

program wciąż działałby poprawnie, gdyż nie ma liczby minus zero (jest to po prostu 0).
Expand All @@ -85,14 +81,11 @@ Instrukcja warunkowa `if` może także składać się z większej liczby warunk
```cpp
if (warunek1) {
instrukcja1;
}
else if (warunek2) {
} else if (warunek2) {
instrukcja2;
}
else if (warunek3) {
} else if (warunek3) {
instrukcja3;
}
else {
} else {
instrukcja4;
}
```
Expand All @@ -118,11 +111,9 @@ int main() {
cin >> x;
if (x > 0) {
cout << "+" << "\n";
}
else if (x < 0) {
} else if (x < 0) {
cout << "-" << "\n";
}
else {
} else {
cout << 0 << "\n";
}
}
Expand All @@ -147,11 +138,9 @@ int main() {
if (a == b && b == c) {
// Jezeli a == b oraz b == c, to tez c == a.
cout << "rownoboczny" << "\n";
}
else if (a == b || b == c || c == a) {
} else if (a == b || b == c || c == a) {
cout << "rownoramienny" << "\n";
}
else {
} else {
// Boki sa parami rozne.
cout << "roznoboczny" << "\n";
}
Expand Down Expand Up @@ -179,8 +168,7 @@ int main() {
cin >> rok;
if ((rok % 4 == 0 && !(rok % 100 == 0)) || rok % 400 == 0) {
cout << 366 << "\n";
}
else {
} else {
cout << 365 << "\n";
}
}
Expand All @@ -194,7 +182,7 @@ W ramach instrukcji `if` mogą występować także tzw. **instrukcje złożone**
if (warunek1) {
instrukcja1;
instrukcja2;
...
// ...
instrukcja7;
} else {
instrukcja8;
Expand All @@ -204,11 +192,10 @@ if (warunek1) {
**Uwaga:** Niektórzy programiści piszą obie klamry w instrukcji złożonej na tej samej wysokości w kodzie źródłowym, żeby zachować pewną symetrię:

```cpp
if (warunek1)
{
if (warunek1) {
instrukcja1;
instrukcja2;
...
// ...
instrukcja7;
} else
instrukcja8;
Expand Down Expand Up @@ -242,8 +229,7 @@ int main() {
if (a == b && b == c) {
// Jezeli a == b oraz b == c, to tez c == a.
cout << "rownoboczny" << "\n";
}
else if (a == b || b == c || c == b)
} else if (a == b || b == c || c == b)
cout << "rownoramienny" << "\n";
else {
// Boki sa parami rozne.
Expand Down
31 changes: 15 additions & 16 deletions docs/A-podstawy-programowania/A5-przypisanie.md
Original file line number Diff line number Diff line change
Expand Up @@ -112,15 +112,15 @@ To zadanie można oczywiście rozwiązać bez użycia instrukcji przypisania, je
using namespace std;

int main() {
int t;
cin >> t;
int g, m, s;
s = t % 60;
t /= 60;
m = t % 60;
t /= 60;
g = t;
cout << g << "g" << m << "m" << s << "s" << endl;
int t;
cin >> t;
int g, m, s;
s = t % 60;
t /= 60;
m = t % 60;
t /= 60;
g = t;
cout << g << "g" << m << "m" << s << "s" << endl;
}
```

Expand All @@ -136,14 +136,13 @@ Jako pierwszy przykład napiszmy program, który wczytuje dany znak, o którym w
using namespace std;

int main() {
char c;
cin >> c;
if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' || c == 'y')
cout << "samogloska" << endl;
else
cout << "spolgloska" << endl;
char c;
cin >> c;
if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' || c == 'y')
cout << "samogloska" << endl;
else
cout << "spolgloska" << endl;
}

```

Każdy ze znaków typu `char` ma przypisany numer będący liczbą całkowitą. To przyporządkowanie, używane powszechnie w komputerach do reprezentowania znaków, nazywa się [kodem ASCII](http://pl.wikipedia.org/wiki/ASCII "kodem ASCII"). Wygląda ono tak:
Expand Down
Loading
Loading