O C++ jsem se samozrejme uz zajimal nekolikrat, jako o spoustu jinych jazyku ale presto nejvice skriptu mam asi v tomto:
- C#
- JavaScript / TypeScript
- Dart
Ty ostatni jsem jen zkusil ale nemel jsem psychickou silu a ani motivaci se je naucit – stejne jsem mel vsechno v C#, ktery zvladne totez co treba C++(aspon u Windows OS) tak no stress . Pred asi 2mi mesici jsem poprve naprogramoval neco malinkeho v C++ – pro kamarada ktery studuje VSB, obor Informacni a komunikacni technologie, je v prvaku a delaji tam C++, v druhaku by mela prijit Java a v tretaku uz site, kvuli kterym se ubral timto smerem.
Poslal mi to nekdy v prubehu tydne, ja jsem se v nedeli koukl na googlu tutorial c++ , ktere jsou samozrejme i v cestine, osobne jsem si prosel kurz Zaklady C++ na itnetwork.cz . Doma jsem pak podle jeho zadani napsal toto:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
//-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 to_string2(int i) { ostringstream ostr; //output string stream ostr << i; return ostr.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 ofs(outputFile.c_str()); if (ofs.is_open()) { string input_file = argv[1]; ifstream input(input_file.c_str()); int num; while (input >> num) { //-1 a samo sebe int countDivisours = 2; for (int i = 2; i < num; i++) { if (num % i == 0) { countDivisours++; } } string line = to_string2(num) + * (new string( " ")) + to_string2(countDivisours); cout << line << endl; ofs << line << endl; } } ofs.flush(); ofs.close(); int diff = clock() - start; cin.ignore(); cout << "Pry to trvalo jen " << diff << " ms "; cin.ignore(); } return 0; } |
Je to samozrejme program kteremu se zada vstupni i vystupni soubor – ve vstupnim jsou na kazdem radku 1 cislo, program vypocita pocet cisel kterymi je delitelny beze zbytku a tuto informaci zapise do vystupniho souboru i na konzoli. Tohle byl v podstate jen 1 soubor .cpp a .h, pak mi poslal dalsi zadani jenze to uz jsem mu neposlal protoze jsem si rekl ze uplne koncim s jakymkoliv programovanim. Nyni jsem se k tomu vratil, nedokazu bez toho zit.
Je to velka cast meho zivota. Vcera mi to poslal zase, zel jsem na tom neudelal skoro nic protoze jsem uz za par minut vyrazel do sboru na koncert. Napsal jsem mu na messenger a sel ven. Doma pak jsem taky neudelal nic, protoze jsem rychle usnul, vzbudil se v skoro ve 22h a pak sel zase spat at neponocuji.
Protoze ale se to chci taky naucit a ne mu posilat projekt jen s jednim souborem .cpp, metodou mou nejcasteji pouzivanou, tedy pokus-omyl jsem se naucil staticke metody, tridy, include hlavickovych souboru mych, Visual Studio “stdafx.h” a nebo z globalni knihovny C++, konstruktory a jeste nejake drobnosti.
S timhle zakladem se mi podarilo zkompilovat soubor o ctyrech mych *.cpp souboru, samozrejme zde i se stejnym poctem *.h. Nutno rict ze kdybych neumel C# tak nevim jestli bych to zvladl =D. Toto je prvni a doufam ze stovky dalsich budu nasledovat ohledne C++. Pokud take zacinate v “plusku” a umite nejlepe C#, budu se snazit popsat jak nektere veci funguji a jak jsou rozdilne od .NETu – takze nejenom syntaxe jazyka, s trochou fantazie by se to dalo zamenit, tu jde primarne o filozofii za tim. Ono to pomuze i tomu kamaradovi.
Pisu kod v Visual Studio 2015 Community, ten kamarad sice pouziva Code::Blocks, i ten je dobry ale na VS nic nema, hlavne v jazycich ktere podporuje samotny MS. Me jede stejne rychle Code::Blocks i VS, ktery je na mile napred ostatnimi IDE. Budu se snazit tu davat hotove reseni, primarne pro VS ale kdyz bude moznost tak i pro jine IDE, hlavne tedy zminovany Code:: :).