O C++ jsem se samozřejmě už zajímal několikrát, jako o spoustu jiných jazyků ale přesto nejvíce skriptů mám asi v tomto:
- C#
- JavaScript / TypeScript
- Dart
Ty ostatní jsem jen zkusil ale neměl jsem psychickou sílu a ani motivaci se je naučit – stejně jsem měl všechno v C#, který zvládne totéž co třeba C++ (aspoň u Windows OS) tak no stress . Před asi 2mi měsíci jsem poprvé naprogramoval něco malinkého v C++ – pro kamaráda který studuje VSB, obor Informační a komunikační technologie, je v prváku a dělají tam C++, v druháku by měla přijít Java a v třeťáku už sítě, kvůli kterým se ubral tímto směrem.
Poslal mi to někdy v průběhu týdne, já jsem se v neděli koukl na googlu tutorial c++ , které jsou samozřejmě i v češtině, osobně jsem si prošel kurz Základy C++ na itnetwork.cz . Doma jsem pak podle jeho zadání napsal toto:
//-K pouziti cout
#include < iostream >
//-K pouziti funkce string
#include < locale >
//-Pro pouziti ofstream
#include < fstream >
//-Pro dereferenci stringu
#include < string >
//-Pro pouziti ostringstream
#include < sstream >
//-Pro psani bez prefixu std::
using namespace std;
string intToString(int i) {
ostringstream outputStringStream; //output string stream
outputStringStream <<
i;
return outputStringStream.str();
}
int main(int argc, char * argv[]) {
if (argc != 3) {
cout << "Spatny pocet parametru.Pokud zadavate cestu s mezerami, nezapomente pouzit uvozovky. " <<endl;
} else {
unsigned int start = clock();
string outputFile = argv[2];
ofstream outputFileStream(outputFile.c_str());
if (outputFileStream.is_open()) {
string inputFile = argv[1];
ifstream input(inputFile.c_str());
int number;
while (input >> number) {
//-1 a samo sebe
int countDivisors = 2;
for (int i = 2; i < number; i++) {
if (number % i == 0) {
countDivisors++;
}
}
string line = intToString(number) + * (new string( " ")) + intToString(countDivisors);
cout <<
line <<
endl;
outputFileStream <<
line <<
endl;
}
}
outputFileStream.flush();
outputFileStream.close();
int elapsedMilliseconds = clock() - start;
cin.ignore();
cout << "Pry to trvalo jen " << elapsedMilliseconds << " ms ";
cin.ignore();
}
return 0;
}Je to samozřejmě program kterému se zadá vstupní i výstupní soubor - ve vstupním jsou na každém řádku 1 číslo, program vypočítá počet čísel kterými je dělitelný beze zbytku a tuto informaci zapíše do výstupního souboru i na konzoli. Tohle byl v podstatě jen 1 soubor .cpp a .h, pak mi poslal další zadání jenže to už jsem mu neposlal protože jsem si řekl že úplně končím s jakýmkoliv programováním. Nyní jsem se k tomu vrátil, nedokážu bez toho žít. 💻
Je to velká část mého života. Včera mi to poslal zase, žel jsem na tom neudělal skoro nic protože jsem už za pár minut vyrážel do sboru na koncert. Napsal jsem mu na messenger a šel ven. Doma pak jsem taky neudělal nic, protože jsem rychle usnul, vzbudil se skoro ve 22h a pak šel zase spát ať neponocuji. 😴
Protože ale se to chci taky naučit a ne mu posílat projekt jen s jedním souborem .cpp, metodou mou nejčastěji používanou, tedy pokus-omyl jsem se naučil statické metody, třídy, include hlavičkových souborů mých, Visual Studio "stdafx.h" a nebo z globální knihovny C++, konstruktory a ještě nějaké drobnosti.
S timhle základem se mi podařilo zkompilovat soubor o čtyřech mých *.cpp souborech, samozřejmě zde i se stejným počtem *.h. Nutno říct že kdybych neuměl C# tak nevím jestli bych to zvládl =D. Toto je první a doufám že stovky dalších budou následovat ohledně C++. Pokud také začínáte v "plusku" a umíte nejlépe C#, budu se snažit popsat jak některé věci fungují a jak jsou rozdílné od .NETu - takže nejenom syntaxe jazyka, s trochou fantazie by se to dalo zaměnit, tu jde primárně o filozofii za tím. Ono to pomůže i tomu kamarádovi.
Píšu kód v Visual Studio 2015 Community, ten kamarád sice používá Code::Blocks, i ten je dobrý ale na VS nic nemá, hlavně v jazycích které podporuje samotný MS. Mě jede stejně rychle Code::Blocks i VS, který je na míle napřed ostatními IDE. Budu se snažit tu dávat hotové řešení, primárně pro VS ale když bude možnost tak i pro jiné IDE, hlavně tedy zmiňovaný Code:: :).