Otázka: Základní programové konstrukce
Předmět: Programování, Informatika
Přidal(a): Ondřej Rethy
Proměnné
- Jedná se o místo v paměti, které je určené pro uložení dat
- Každá proměnná má svůj datový typ (v některých jazycích povinné deklarovat při založení, např. C#, Java)
- Typová kontrola podle typového systému
- Statická (Java, C#)
- Proměnné je přiřazen datový typ a podle něj i rozsah a typ informace kterou může uchovávat
- Například integer nemůže uchovávat string
- Dynamická (Python)
- Samotné hodnoty mají datový typ, nikoliv proměnné
- Tyto typy jsou kontrovány až za běhu programu
- Statická (Java, C#)
- Deklarace datového typu
- Explicitní
- Zapisuje se před vlastní použitím proměnné
- int priklad;
priklad = 5;
- int priklad;
- Zapisuje se před vlastní použitím proměnné
- Implicitní
- Proměnou použijeme v podprogramu
- Jedná se o deklaraci „za běhu“
- Implicitní deklarace má rychlejší zápis programového kódu
- int funkce()
{
return 5;
}
int priklad = funkce();
- int funkce()
- Explicitní
Operátory
Aritmetické
- +, – … sčítání a odčítání
- *, / … násobení a dělení
- % … modulo (zbytek po dělení)
- ++x … preinkrementace
- x++ … postinkrementace
- –x … predekrementace
- x– … postdekrementace
Logické
- &&, || … logické AND, logické OR
- ! … logické NOT
Bitové
- &,| … bitové AND, bitové OR
- ~ … bitové NOT
- <<, >> … bitový posun vlevo a vpravo
Relační
- <, > … porovnání menší a větší
- <=, >= … porovnání menší nebo rovno a větší nebo rovno
- == … porovnání rovnosti
- != … porovnání nerovnosti
Přístupové
- [] … indexer
- . … přísup ke členům
- () … invokace
Ostatní
Název | Symbol |
operátor přiřazení | = |
lambda operátor | => |
ternární operátor | ?: |
operátor nullového sjednocení | ?? |
kvalifikátor aliasu oboru názvů | :: |
await operátor | await |
default operátor | default |
delegate operátor | delegate |
nameof operátor | nameof |
new operátor | new |
sizeof operátor | sizeof |
stackalloc operátor | stackalloc |
true/false operátor | true/false |
Priorita operátorů
Operátory | Kategorie nebo název |
x. y, x?. y, x? [ y], f (x), a[i], x++, x–, new, typeof, checked, unchecked, default, nameof,
delegate, sizeof, stackalloc, x -> y |
primární |
+ x, -x, !x, ~ x, ++x, –x, (T) x, await, & x, * x, true a false | unární |
x * y, x/y, x% y | multiplikativní |
x + y, x – y | přičítáním |
x << y, x >> y | posunu |
x< y, x > y, x <= y, x > = y, is, as | relační testování a testování typu |
x == y, x != y | rovnost |
x & y | logický operátor AND nebo bitový logický operátor AND |
Operátory | Kategorie nebo název |
x ^ y | logická hodnota XOR nebo bitový logický operátor
XOR |
x | y | logická OR logická logická hodnota nebo |
x && y | podmiňovací operátor AND |
x || y | podmiňovací operátor OR |
x?? y | operátor slučování null |
r ? t : f | podmíněný operátor |
x = y, x + = y, x ^ = y, x < < = y, x > > = y ,=> | přiřazení a deklarace lambda |
Datové typy
- Hodnotové
- Instance hodnotových typů (proměnné) jsou ukládány na zásobník programu a program s nimi pracuje přímo
- Obsahují pouze hodnotu daného typu
- Referenční
- Referenční datové typy neuchovávají přímo hodnotu samotnou, nýbrž odkaz na místo v paměti
a) Hodnotové
Logické
- bool … hodnoty true, false
Čísla
- byte … 8bitové beznaménkové celé číslo 0 – 255
- ushort … 16bitové beznaménkové celé číslo 0 – 65535
- uint … 32bitové beznaménkové celé číslo 0 – 4294967295
- ulong … 64bitové beznaménkové celé číslo 0 – 18446744073709551615
- sbyte … 8bitové znaménkové celé číslo -128 – 127
- short … 16bitové znaménkové celé číslo -32768 – 32767
- int … 32bitové znaménkové celé číslo -2147483648 – 2147483647
- long … 64bitové znaménkové celé číslo -9223372036854775808 – 9223372036854775807
- float … 32bitové znaménkové reálné číslo (1bit znaménko, 8bit exponent a 23bit mantisa)
- double … 64bitové znaménkové reálné číslo (1bit znaménko, 11bit exponent a 52bit mantisa)
b) Referenční
- string … slouží k uložení textů
- Jedná se o alias ke třídě System.String()
- Lze jí přímo naplnit (bez použití new)
- Při porovnání se porovnává hodnota objektů, nikoliv hodnota odkazů, jak tomu je u ostatních tříd
- object … ostatní třídy rozšiřují tuto třídu
- Alias třídy System.Object()
- Object je tedy společným základem pro ostatní typy
- třída (class)
- rozhraní (interface)
- pole
- delegát (delegate)
Základní programové konstrukce
- Větvení (if, switch/case)
- Úplné/Neúplné
- Vícenásobné
- Cyklus (for, while)
- Podmínka na začátku
- Podmínka na konci
- Známý počet průchodů
Podprogram
- logický celek programu
- část programu definovaná před startem programu
- po startu hlavního programu je podprogram z hlavního programu spouštěn
Využití podprogramů
- zkrácení, zpřehlednění a zjednodušení hlavního programu
- rozdělení algoritmu na více jednodušších částí
- jednoduché kontrola a odstranění chyb
- správné rozdělení programu na podprogramy je součástí programátorského umění
- zkušení programátoři si vyvíjí celeé knihovny podprogramů – programové jednotky
Volání podprogramu
- podprogram je volán svým jménem
- volání probíhá z hlavního programu nebo z nadřazeného podprogramu