Užitečné odkazy
Jazyk C
- Nízkoúrovňový programovací jazyk
- Platformově nezávislý
- Kompilovaný (překládaný)
- Minimalistický
V čem psát program?
- Code::Blocks (multiplatformní) [český manuál: http://www.sallyx.org/sally/c/codeblocks/]
- MS Visual Studio (MS Windows)
- GNU Emacs (GNU/Linux)
- Xcode (macOS)
- Sublime Text (multiplatformní)
- Libovolný textový editor
První program
#include <stdio.h>
int main() {
/* Tohle je komentar */
printf("Hello, World!\n");
return 0;
}
Překlad programu
- Překlad probíhá příkazem: gcc main.c -o main
- V grafických prostředích kliknutím na příšlušné tlačítko (Build, Compile, případně Run, Debug).
Syntaxe
V programovacích jazých je syntaxe soubor pravidel, která udávají jakým způsobem psát program v daném jazyce.
Úvod
// Rozlišuje velikost písmen (case-sensitive):
number != Number != NUMBER
// Většinou ignoruje bílé znaky (odřádkování, tabulátor, mezera):
a=b+c je stejné jako a = b +c
“Ahoj svete!” != “Ahoj svete!”
int number; != intnumber;
Program pro nás bude posloupnost příkazů a každý příkaz bude ukončený středníkem (;)
Příklady
int number = 47;
int circuit = 2 * PI * r;
printf("Ahoj svete!\n");
printf("obvod=%i\n", circuit);
Proměnné
- Pomocí proměnné si “pojmenujeme” hodnotu.
- Musíme definovat jakého typu proměnná je:
type variable_name = value; type second_variable;
- Název se může skládat z písmen (a-zA-Z), číslic (0-9) a podtržítka (_). Měl by začínat písmenem. Příklady:
int height = 180;
double circuit = 6.283;
float tan2PI;
int a, b = 10, c;
Základní datové typy
Jak již bylo zmíněno u proměnných je nutné uvést datový typ. Můžeme chtít pracovat s celými čísly, desetinými a nebo se znaky a je nutné překladači "řící" jakou hodnotou budou prováděny operace. Níže je tabulka yákladních datových typů:
Datový typ | Velikost | Rozsah |
---|---|---|
char |
1B | 0 — 255 |
int |
4B | -2147483648 — 2147483647 |
float |
4B | 1.2 * 10-38 — 3.4 * 10+38 |
double |
8B | 2.3 * 10-308 — 1.7 * 10+308 |
Kvantifikátory long a short
Pokud nám z jistých důvodů nevyhovuje rozsah daného datového typu , tak máme
kvantifikátory long
a short
které upravují
velikosti datových typů následovně
Datový typ | Velikost | Rozsah |
---|---|---|
short int |
2B | -32768 — 32767 |
long int |
8B | -(263) — (263) - 1 |
long |
8B | -9223372036854775808 — 9223372036854775807 |
short |
8B | -2147483648 — 2147483647 |
long double |
10B | 3.4 * 104932 — 1.1 * 104932 |
Kvantifikátory signed a unsigned
Na celočíselné typy (int
, char
) lze aplikovat
kvalifikátory signed
(umožňuje uložit záporné číslo) a
unsigned
(pouye kladná čísla s 0).
Datový typ | Velikost | Rozsah |
---|---|---|
signed char |
2B | -128 — 127 |
unsigned char |
8B | 0 — 255 |
Logické hodnoty
- Logické hodnoty “pravda” a “nepravda” reprezentujeme čísly:
- nula = nepravda
- nenulové číslo = pravda
Výstup na obrazovku
K výpisu na obrazovku používáme funkci printf
.
printf(format_string, value1, value2, …);
int a = 10, b = 27;
printf("Velikost typu int je %i", sizeof(int)); // Velikost typu int je 4
printf("Soucet 15 + 10 je %i", 15 + 10); // Soucet 15 + 10 je 25
printf("Soucet a + b: %i", a + b); // Soucet a + b: 37
printf("Soucet: %i, soucin: %i, rozdil: %i", a + b, a * b, a - b);
printf("Dek: %d, okt: %o, hexa: %x", b, b, b); // Dek: 27, okt: 33, hexa: 1b
Znaky
- K uložení jednoho znaku používáme datový typ
char
. - Znak je interně reprezentován číslem.
- Podle ASCII tabulky se zjistí jaký znak se má vytisknout.
char letter_a = 'a';
printf("znak: %c, cislo: %i\n", letter_a, letter_a); // znak: a, cislo: 97
char secret_letter = 98;
printf("znak: %c, cislo: %i\n", secret_letter, secret_letter); // znak: b, cislo: 98f
Vstup z klávesnice
Pro načítání hodnot z klávesnice používáme funkci scanf.
scanf(format_string, &variable1, &variable2, …);
int number, hex_number, number1, number2, day, month, year;
scanf("%i", &number);
scanf("%x", &hex_number);
scanf("%d %d", &number1, &number2);
scanf("%d.%d.%d", &day, &month, &year);
Základní možnosti řídíího řetezce pro printf a scanf
%c
– výpis nebo načtení znaku.%d
nebo%i
– celé číslo desítkově znaménkově.%u
– celé číslo desítkově neznaménkově.%o
– celé číslo osmičkově.%x
nebo%X
– celé číslo šestnáctkově (malá/velká písmena).%f
– desetinné číslo.%e
nebo%E
– desetinné číslo semilogaritmicky.%s
– textový řetězec.%.3f
– vypíše desetinné číslo s přesností na tři des. čísla.
Aritmetické operace
V jazyce C máme k dispozici několik základních aritmetických operací:
Operátor | Argumenty | Popis |
---|---|---|
- |
1 | mění znaménko argumentu |
+ |
2 | součet argumentů |
- |
2 | rozdíl prvního a druhé argumentu |
* |
2 | součin argumentů |
/ |
2 | podíl argumentů |
% |
2 | zbytek po celočíselném dělení prvního argumentu druhým |
Typy vs aritmetické operace
int int_number = 11;
double double_number = 2.5;
int int_result = int_number / double_number;
double double_result = int_number / double_number;
// Jake hodnoty budou obsahovat proměnné int_result a double_result
- Typ výsledku aritmetického operátoru je většinou určen typem jeho argumentů s nejvyšší prioritou.
- Typy s plovoucí řádovou čárkou mají vyšší prioritu než celočíselné.
- V rámci jedné skupiny typů mají větší typy vyšší prioritu.
- U operátoru přiřazení je výsledný typ roven typu proměnné do které hodnotu přiřazujeme.
- Pokud chceme změnit datový typ například z desetinného čísla na celé, tak k tomu použijeme přetypování
double double_number = 2.1655;
// Zde ale ztratíme část informace v
// podobě hodnot za desetinnou čárkou
int number = (int) double_number; // Obsahuje hodnotu 2
Úkoly
Ve všech programech je potřeba dodržovat konvence které jsou dostupné zde.
Vytvořte v jazyce C program, v němž budou definovány a inicializovány proměnné různých datových typů. Hodnoty proměnných pak vypište na obrazovku.
Příklad výstupu:
Hodnota promenne cislo je: 3
Hodnota promenne des_cislo je: 3.45
Hodnota promenne muj_znak je: +
Hodnota promenne male_cislo je: 1.2e-10
Napište v jazyce C program, který načte číslo v desítkové soustavě a vypíše ho na obrazovku v osmičkové a šestnáctkové soustavě.
Příklad výstupu:
Zadejte cislo: 12
Cislo 12 odpovida cislu 14 v osmickove soustave a cislu C v sestnactkove soustave.
Napište program, který vypíše velikosti všech základních typů na vašem počítači.
Napište program, který spočítá a vypíše obvod a obsah čtverce, známe-li jeho stranu.
Napište program, který převede velké písmeno na malé písmeno.
Napište program, který vypíše první a poslední číslici tříciferného čísla.
Napište program, vypíše osmimístné číslo, chápané jako datum ve tvaru DDMMYYYY jako opravdové datum. Například pro číslo 13122002 vypište 13. 12. 2002.