C vs. C++: Rozdíly a podobnosti

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.