Jazyk C tvoří základ pro C++. Ačkoliv se C++ častěji uplatňuje při tvorbě desktopových aplikací a her, C je skvělou volbou pro začátečníky v programování. Následující text vám objasní, proč tomu tak je.
Co je to C?
C je strukturovaný programovací jazyk vyšší úrovně. Programy vytvořené v C jsou přenositelné. Díky své robustnosti patří C dodnes mezi nejvýznamnější programovací jazyky. Používá se při tvorbě komplexních programů, jako jsou vestavěné systémy, ovladače, jádra, systémové aplikace, operační systémy (např. Microsoft Windows, Apple OS X), databáze (např. MySQL) a některé aplikace pro IoT.
C je kompilovaný jazyk, což znamená, že zajišťuje vrstvu abstrakce mezi strojovým kódem a programem.
Jednoduchý program v C pro součet dvou čísel může vypadat následovně:
#include<stdio.h> int main() { int a, b, sum; printf("Zadejte dvě čísla pro sčítání: "); scanf("%d%d", &a, &b); sum = a + b; printf("nSoučet %d a %d je %d", a, b, sum); return 0; }
Zde je ukázkový výstup:
Výstup tohoto ukázkového programu v C
Programy v C zahrnují stdio.h – standardní vstup a výstup.
STDIO poskytuje základní vstupně-výstupní funkce jako printf a scanf. Funkce printf slouží k zobrazení informací (zpráv, výstupu) v konzoli, zatímco scanf umožňuje uživateli zadávat data. Specifikátor %d signalizuje, že se jedná o celá čísla.
Pokud bychom zadali desetinná čísla, obdrželi bychom neočekávané výsledky. Pro práci s desetinnými čísly můžeme použít %f. Funkce main() je první funkcí, která se spustí při spuštění programu. Syntaxe je velmi jednoduchá – deklarujeme typy proměnných a poté je používáme.
Co je C++?
C++ je postaveno na principech objektově orientovaného programování (OOP), jako jsou abstrakce, polymorfismus, dědičnost a zapouzdření. C++ lze považovat za rozšíření jazyka C o koncept tříd a objektů.
Objekty umožňují vytvářet strukturovaná data. Například, pokud chceme uložit informace o studentovi, můžeme vytvořit třídu Student a v ní definovat atributy jako jméno, věk, zájmy, známky atd. Poté můžeme vytvořit skutečný objekt typu Student.
class Student { public: char name[20]; int age; float marks; }; //Vytvoření objektu Student student1 = new Student();
Objekt bude skutečně vytvořen a paměť pro něj alokována až za běhu programu.
C++ dosahuje vysokého výkonu, a proto je oblíbenou volbou pro vývoj herních enginů, vestavěných systémů, prohlížečů, kompilátorů a grafických aplikací, jako je zpracování obrazu.
Některé databáze, jako je MongoDB, jsou naprogramovány v C++. Stejně jako C, i C++ je přenositelné.
Nyní si představíme, jak by vypadal náš předchozí program pro sčítání v C++, a všimneme si rozdílných funkcí.
#include <iostream> using namespace std; int main() { int a, b; cout << "Zadejte čísla: "; cin >> a >> b; int sum = a + b; cout << a << " + " << b << " = " << sum; return 0; }
Všimněte si, že namísto funkcí printf a scanf používáme cout a cin. Deklarace proměnných může být provedena kdekoliv v programu před jejich použitím (např. proměnná sum). Výpis je velmi jednoduchý, používáme pouze názvy proměnných. Používáme jmenný prostor std z hlavičkového souboru iostream. std obsahuje metody jako cout, cin a mnoho dalších.
Podobnosti mezi C a C++
Lze říci, že C je podmnožinou C++. Mezi C a C++ existuje mnoho podobností, ať už v způsobu, jakým jsou programy napsány, nebo v oblastech jejich použití. Oba jazyky jsou robustní, přenositelné a vysoce výkonné. Mezi nejdůležitější podobnosti patří:
Č. | Funkce | Vysvětlení |
1. | Syntaxe | Oba jazyky sdílejí podobnou syntaxi, včetně deklarací proměnných, středníku na konci řádků, a konvencí pro pojmenování. |
2. | Struktura a Procedurálnost | Kód je vykonáván sekvenčně, řádek po řádku. Programy mají podobnou strukturu – importy, deklarace proměnných a následně hlavní kód. |
3. | Funkce Main() | Veškerý kód, který má být vykonán, musí být obsažen v rámci funkce main(). main() je první funkcí, která se spouští při zahájení programu. |
4. | Ukazatele | Jak C, tak C++ využívají ukazatele stejným způsobem. Ukazatel je proměnná, která uchovává paměťovou adresu jiné proměnné. Například int a = 1;. Po vykonání kódu bude alokována paměť (např. XX0011). K paměťovému umístění ‚a‘ lze přistoupit pomocí ampersandu (&) jako int ptr_a = &a |
5. | Klíčová slova a operátory | Všechna klíčová slova a operátory v jazyce C jsou platné i v C++. Například rozsah, static, public, int atd. C++ navíc obsahuje další operátory a klíčová slova. |
Rozdíly mezi C a C++
C++ vznikl s cílem překonat některé nedostatky jazyka C a je nadmnožinou jazyka C. Proto jakýkoliv program napsaný v C bude fungovat v C++, ale opačně tomu tak není! Hlavní rozdíl mezi C a C++ spočívá v tom, že C++ je založeno na principech objektově orientovaného programování (OOP). V C++ je také kladen větší důraz na kontrolu typů. Níže jsou uvedeny některé další rozdíly:
C | C++ |
Vyvinuto Dennisem Ritchiem v letech 1969-1973 v laboratořích AT&T Bell | Vyvinuto Bjarnem Stroustrupem v roce 1979. |
Neřídí se principy objektově orientovaného programování | Je založeno na konceptech OOP, jako je zapouzdření, polymorfismus a dědičnost |
C obsahuje celkem 32 klíčových slov jako např. , switch, int, static, union a další | Všechna klíčová slova C jsou platná v C++, a navíc existuje dalších 31 klíčových slov. |
Podporuje pouze procedurální programování | C++ podporuje více programovacích paradigmat, jako je OOP, generické a funkční programování |
Nelze implementovat funkce OOP v C | Funkce jako přátelé, virtuální funkce v C++ zdokonalují podstatu OOP. |
C podporuje vestavěné datové typy. | C++ podporuje vestavěné i uživatelsky definované datové typy prostřednictvím konceptu tříd. |
Neexistuje možnost přetížení operátorů nebo funkcí | C++ podporuje přetížení operátorů i funkcí (polymorfismus) |
Alokace paměti se provádí pomocí funkcí malloc() a calloc() a dealokace pomocí free() | Alokace paměti probíhá pomocí operátoru new a dealokace pomocí operátoru delete |
C nepodporuje zpracování výjimek | Podporuje zpracování výjimek |
Zaměřuje se na proceduru nebo metodu více než na data | Více se zaměřuje na data |
Některé další důležité funkce dostupné pouze v C++ jsou:
- Pomocí klíčového slova jmenného prostoru můžeme vytvářet proměnné se stejným názvem v různých jmenných prostorech.
- Můžeme používat funkce uvnitř struktur. Struktury mohou mít také modifikátory přístupu.
- Podporuje referenční proměnné.
Kdy použít C nebo C++
Toto je častá otázka mezi programátory – proč se učit C, když můžu dělat vše v C++?
Učení C vám poskytne pevný základ v datových strukturách, ukazatelích, klíčových slovech, konceptech zásobníku, haldy a alokaci paměti.
C je stále široce používán pro aplikace s vysokými nároky na výkon, protože kompilátor C je rychlejší než kompilátor C++. Pokud tedy píšete kód, který nevyžaduje objekty, třídy, virtuální funkce nebo šablony, je vhodnější C. Použití C++ by mohlo být v takovém případě zbytečně složité kvůli jeho rozsáhlým knihovnám.
Většina nízkoúrovňového kódování, jako jsou jádra, operační systémy a databáze, je stále udržována v C, takže znalost C vám také usnadní rychlejší naučení se C++.
C++ je považován za jeden z nejrychlejších a nejefektivnějších jazyků, a proto je stále jedním z nejlepších programovacích jazyků, zejména pro vysoce výkonné aplikace, jako jsou herní enginy, zařízení internetu věcí a desktopové aplikace. Mnoho aplikací využívá kombinaci kódu C a C++ – pro dosažení optimálního výkonu a výhod objektově orientovaného programování.
Shrnutí
V tomto článku jsme si představili základy jazyků C a C++ pomocí jednoduchého programového příkladu. Diskutovali jsme o hlavních rozdílech a podobnostech mezi těmito jazyky a o tom, kdy je vhodné je použít.
Pokud jste na začátku své cesty vývoje softwaru, začátek s jazykem C vám dodá sebedůvěru. Je relativně snadný a pokrývá všechny základní programovací koncepty, jako jsou datové struktury, ukazatele, paměť a další.
Může vás zajímat online kompilátor C a C++, který nabízí etechblog.cz.