Stránka 1 z 3

C++ minimálka?

Napsal: 09 srp 2015, 17:53
od arduino2015
Ahoj, když kdesi chtějí základní znalosti C++, co přesně se pod tím rozumí? Co je to minimum? Toto? Abych věděl, co se tak v průměru očekává.

Kód: Vybrat vše

#include <iostream>
using namespace std;
int main()
{
  int volba, cislo1, cislo2 ; // deklarovani funkce volba a operandů příkladů
  float deleni ; // deleni se zbytkem umoznuje pouze nekolik druhu pameti, viz Floating point anebo Pohyblivá řádová čárka
  do //do-while loop starts here.that display menu again and again until user select to exit program
  {
     //Vlastni nabidka:
     cout << "Vitejte v ukazkovem programu na vypocet ele. vykonu." << endl;
    cout << "Upozorneni: pri psani desetinnych cisel dodrzujte" << endl;
    cout << "anglosasky standart, tudiz 2.5 (nikoliv 2,5)!" << endl;
    cout << "(Vyhotoven: 9.8.2015)" << endl;
    cout << "1) P = W / t" << endl;
     cout << "2) W = P * t" << endl;
     cout << "3) t = W / P" << endl;
     cout << "4) KONEC" << endl;

     cout << "Prosim, zadejte volbu: ";
     cin >> volba;
     
     if(volba == 1)
     {
    cout << "Zvolen vykon P = W / t" << endl;
    cout << "Zadejte praci [J]: " << endl;
   cin >> deleni;
   cout << "Zadejte cas [s]: " << endl;
   cin >> cislo1;
   deleni /= cislo1;
   cout << "Vas vysledek: [W]" << endl;
   cout << deleni << endl;
    }
     else if(volba == 2)
     {
    cout << "Zvolena prace W = P * t" << endl;
    cout << "Zadejte vykon [W]: " << endl;
   cin >> cislo1;
   cout << "Zadejte cas [s]: " << endl;
   cin >> cislo2;
   cislo1 *= cislo2;
   cout << "Vas vysledek: [J]" << endl;
   cout << cislo1 << endl;
     }
     else if(volba == 3)
     {
    cout << "Zvolen cas t = W / P:" << endl;
    cout << "Zadejte praci [J]: " << endl;
   cin >> deleni;
   cout << "Zadejte vykon [W]: " << endl;
   cin >> cislo1;
   deleni /= cislo1;
   cout << "Vas vysledek: [s]" << endl;
   cout << deleni << endl;
     }
    else if(volba == 9)
     {
    cout << "Zvoleno deleni:" << endl;
   cout << "Zadejte prvni cislo: " << endl;
   cin >> deleni;
   cout << "Zadejte druhe cislo: " << endl;
   cin >> cislo1;
   deleni /= cislo1;
   cout << "Vas vysledek: " << endl;
   cout << deleni << endl;
  }
    else if(volba == 5)
     {
    cout << "Zvoleno MODULO (navratka zbytku po deleni):" << endl;
    cout << "Zadejte prvni cislo: " << endl;
   cin >> cislo1;
   cout << "Zadejte druhe cislo: " << endl;
   cin >> cislo2;
   cislo1 %= cislo2;
   cout << "Vas vysledek: " << endl;
   cout << cislo1 << endl;
  }
    else if(volba == 6)
     {
       
        cout << "test kruh" << endl;
  }
    else if(volba == 7)
     {
       
        cout << "test rez" << endl;
  }
     else if(volba == 4)
     {
       cout << "Ukonceni programu..." << endl;
     }
     else if(volba % 2 == 0) 
     {
       
        cout << "Toto neni cislo!" << endl;
    }
  else //doplnit hlídání CÍSELNÝCH výrazů
     {
       //Displaying error message
       cout << "Zadan neplatny udaj." << endl;
     }
  }
  while(volba != 8); 
   
   return 0;
}

Napsal: 10 srp 2015, 08:38
od frpr666
No ono jedna věc je chápat syntaxi jazyka jako takového a druhá věc je schopnost v daném jazyce zvládnout naprogramovat nějaký reálný projekt. Výpis 100 řádků konzolové aplikace pro PC s tím nemá co dělat. Jinak programování obecně je podle mě docela dřina, ne každý má na tuhle práci dispozice.

Napsal: 10 srp 2015, 08:45
od arduino2015
Já dělal plno věcí, ale vždy pasivně... modifikace a podobně, prostě "vivisekce" původního kódu.

Dobře no... vidím, že moje prrojekty byly tak na úrovni hezčího .bat souboru.

Ještě ocením nějaký tipy na knížky anebo kurzy, protože takle bych se donekonečna točil dokola.

díky...

Napsal: 10 srp 2015, 08:56
od arduino2015
" Jinak programování obecně je podle mě docela dřina, ne každý má na tuhle práci dispozice."

To nepopírám, ale nejdříve to chci zkusit.

Napsal: 10 srp 2015, 11:36
od arduino2015
To beru, taky "se učím programovat, a používám na to jazyk C++" - ve strojáku psát nebudu.

Co s tímto? Detekce, zda do int ukládám číslo, anebo, špatně, znak:

http://programujte.com/forum/vlakno/297 ... o/#p204185

Napsal: 10 srp 2015, 11:49
od Wolfik
ten kód to je zatím C kód pro C++ kompilátor (místo funkce printf se přetěžuje operátorem << objekt pro streamy)...
C++ je o objektivním programování a dalších fičurách. Čisté Cčko jako podmnožina jazyka, tam je kvůli kompatibilitě a tvoří cca čtvrtinu z celého jazyka. :D
Co se týče požadavku základy C++, tak nevím co si pod tím "pan manažer" představuje. Spoustu lidí dělající do moderních mcuček (a signálových procesorů) používají "ANSI" C++, ale používají z jazyka minimum, protože spoustu věcí z principu na malých procesorech nemůže fungovat. Podobně jako na 8bitovým mcučku s malou pamětí se nedá implementovat dynamická alokace paměti.
Pokud to C++ je pro desktop, tak se máš hodně co učit. Většinou to je kvůli nějakým toolchainům pro GUI apod

Napsal: 10 srp 2015, 18:29
od mtajovsky
Arduino << na takový nudlový kód asi nebude nikdo zvědavý, ale když už bych to měl před sebou, chtěl bych dost detailně vysvětlit co znamená

Kód: Vybrat vše

cout << cislo1 << endl;

jak by se to napsalo s vynecháním

Kód: Vybrat vše

using namespace std;

a co to je to std. Jak oddělit data a kód a jak to lépe strukturovat, aby z toho nebyl takový guláš.

Obvykle se dávají jako příklady krátké kusy kódu s chybou a úkolem je chybu najít (například přetečení čísla a v důsledku nekonečný cyklus). Napsat (třeba v pseudokódu) tisk nějaké posloupnosti podle zadaného algoritmu typu prvek n+1 je dán jako součet prvku n a n-1 a podobně, napsat funkci na setřídění pole podle velikosti nebo na vybrání největšího prvku z posloupnosti o předem neznámé délce. Vypsat čísla od 1 do 100 bez použití cyklu (očekává se rekurse). Dotazy typu jaký je rozdíl mezi malloc a calloc, jaké jsou způsoby zpracování chyb za běhu programu. Vysvětlit vzájemný vztah a odlišnosti pointeru a pole, předávání parametrů odkazem a hodnotou, třídy uložení dat a tak dále.

Napsal: 10 srp 2015, 19:16
od Wolfik
dobrý je taky ukázat zdroják některých svých projektů.
Zkušený programátor hned pozná, jestli dotyčný má nějaké zkušenosti nebo to je jenom další pras...bastlič. Spoustu lidí, co mastí programy pro 8bity, si o sobě myslí jaký jsou profesionálové a přitom jejich zdrojáky jsou totální nemodulární paskvil.
Největší prdel je pak s takovýma lidma dělat na nějakém projektu nebo nedej bože použít jejich zdroják jako výchozí...

EDIT: Jinak pokud se hodláš učit opravdové C++, tak se doporučuju vyhnout často doporučovaným knihám jako je Mistrovství C++. Autor je nějakej astronomickej akademik, co C++ vysvětluje jako Cčkař. Takže po přečtení knihy sice píšeš v C++ ale se s dost blbými zlozvyky.

Napsal: 10 srp 2015, 19:25
od mtajovsky
Po zvládnutí syntaxe a možností C++ to nekončí. Dnes se programátor, který nezná návrhové vzory, považuje za nehotového. Dobrá kniha je tato:

http://knihy.abz.cz/prodej/navrhove-vzory

Je sice psána pro Javu, ale principy se dají převzít snadno pro C++.

Napsal: 10 srp 2015, 19:32
od arduino2015
pfff
a modrý z nebe by nechtěli? Skutečně, když se člověk kouká na inzeráty, tak tam chtějí třeba i tři jazyky, to je každej takle do mrtě?

Anebo jsou aspoň tak podobný, že lze "know-how" z jednoho přenést na jinej?

Napsal: 10 srp 2015, 20:05
od Wolfik
dude...kdyby to bylo tak jednoduchý, tak by to zvládl každej ňouma a nebyl by za to tolik placenej

Napsal: 10 srp 2015, 20:10
od arduino2015
To je mi jasný... spíš se realisticky ptám, do jaký míry je daný know how přenositelný mezi používanejma jazykama.

Taky se snáz naučíš nizozemsky, když umíš německy, než když umíš čínsky.

Napsal: 10 srp 2015, 21:47
od mtajovsky
Co se týče kódování, tak některé moderní jazyky vycházejí ze syntaxe C, jmenujme například Java, Perl. Kdo se jednou naučil C, necítí se v takových jazycích ztracený a po chvíli koukání do kódu se zorientuje co a jak.

Co se týče programovacích návyků, strukturování, generického přístupu nebo objektového uvažování, to jde napříč programováním nezávisle na konkrétním jazyku. Jistě, různé jazyky mají různé specifické možnosti, ale to není velký problém.

V kódu, který zde na fóru bývá prezentován, často vidím začátečnické chyby. Nudlový kód, který se mastí bez dekompozice úlohy, opakují se velmi podobné sekvence aniž by autor podumal, jak napsat obecný blok, který se pak parametrizuje. Směska kódu a dat, řešení high-level vrstvy úlohy je promícháno na stejné úrovni jako řešení detailů.

Doporučuji studovat zdrojový kód, například jak jsou napsány knihovny pro Arduino. Na FTP serveru je dostupný můj zdrojový kód pro generátor s AD9851 v holém C. Netvrdím, že je to ukázka skvělého kódu bez chyb, najde se ohromné množství lepšího, ale něco byste tam okoukat mohl.

Napsal: 11 srp 2015, 11:46
od frpr666
Programováním (PC) se zabývají odborné fóra jako root.cz atd.
Každopádně kopu peněz lze vydělat i jinak než programováním...

Napsal: 11 srp 2015, 12:13
od arduino2015
Nejde mi o kopu prachu, spíš o to, že to jistým způsobem pomáhá s rozvíjením myšlení.