C++ minimálka?

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
arduino2015
Příspěvky: 158
Registrován: 30 led 2015, 01:00

C++ minimálka?

#1 Příspěvek 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;
}

Uživatelský avatar
frpr666
Příspěvky: 1051
Registrován: 28 pro 2009, 01:00

#2 Příspěvek 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.

Uživatelský avatar
arduino2015
Příspěvky: 158
Registrován: 30 led 2015, 01:00

#3 Příspěvek 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...

Uživatelský avatar
arduino2015
Příspěvky: 158
Registrován: 30 led 2015, 01:00

#4 Příspěvek 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.

Uživatelský avatar
arduino2015
Příspěvky: 158
Registrován: 30 led 2015, 01:00

#5 Příspěvek 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

Wolfik
Příspěvky: 1076
Registrován: 28 črc 2009, 02:00

#6 Příspěvek 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

Uživatelský avatar
mtajovsky
Příspěvky: 3694
Registrován: 19 zář 2007, 02:00
Bydliště: Praha

#7 Příspěvek 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.

Wolfik
Příspěvky: 1076
Registrován: 28 črc 2009, 02:00

#8 Příspěvek 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.

Uživatelský avatar
mtajovsky
Příspěvky: 3694
Registrován: 19 zář 2007, 02:00
Bydliště: Praha

#9 Příspěvek 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++.

Uživatelský avatar
arduino2015
Příspěvky: 158
Registrován: 30 led 2015, 01:00

#10 Příspěvek 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?

Wolfik
Příspěvky: 1076
Registrován: 28 črc 2009, 02:00

#11 Příspěvek od Wolfik »

dude...kdyby to bylo tak jednoduchý, tak by to zvládl každej ňouma a nebyl by za to tolik placenej

Uživatelský avatar
arduino2015
Příspěvky: 158
Registrován: 30 led 2015, 01:00

#12 Příspěvek 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.

Uživatelský avatar
mtajovsky
Příspěvky: 3694
Registrován: 19 zář 2007, 02:00
Bydliště: Praha

#13 Příspěvek 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.

Uživatelský avatar
frpr666
Příspěvky: 1051
Registrován: 28 pro 2009, 01:00

#14 Příspěvek 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...

Uživatelský avatar
arduino2015
Příspěvky: 158
Registrován: 30 led 2015, 01:00

#15 Příspěvek od arduino2015 »

Nejde mi o kopu prachu, spíš o to, že to jistým způsobem pomáhá s rozvíjením myšlení.

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“