Jaka ksiązka/kurs?

Jaka ksiązka/kurs?
Wielki Zły Rozpruwacz
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 4 lata
  • Postów:18
0

Witam znacie jakieś dobre książki i kursy?

Mam zamiar używać kurs darmowy pana Mirosława Zelenta oraz książke Symfonia c++

PR
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 2 miesiące
  • Postów:316
2

Symfonia to klasyka, od Zelenta uciekaj.

PrezesiQ
  • Rejestracja:prawie 8 lat
  • Ostatnio:prawie 6 lat
  • Postów:187
1

C++. Poradnik dla początkujących. Polecam. Dzięki niej ogarnąłem WIELE spraw jakimi są wskaźniki itd.

A od Mirosława Zelenta uciekaj, bo uczy starych praktyk i uczy tak, że trudno cokolwiek zrozumieć.


"Jesteśmy karłami, którzy wspięli się na ramiona olbrzymów. W ten sposób widzimy więcej i dalej niż oni, ale nie dlatego, ażeby wzrok nasz był bystrzejszy, lub wzrost słuszniejszy, ale dlatego, iż to oni nas dźwigają w górę i podnoszą o całą gigantyczną wysokość" ~ Bernard z Chartes
NU
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad rok
  • Postów:43
1

Jeśli angielski to nie problem:
,,C++ primer" Stanley Lippman - 5 edycja.
Ksiażka bardzo dobrze napisana, praktyczna i dość aktualna (chyba c++ 14 jeśli mnie pamięć nie mysli).

K9
  • Rejestracja:prawie 8 lat
  • Ostatnio:ponad 6 lat
  • Postów:15
1

Od siebie proponuje "C++ Szkoła programowania"

https://helion.pl/ksiazki/jezyk-c-szkola-programowania-wydanie-vi-stephen-prata,cppri6.htm

Bardzo dobrze napisana, autor wszystko bardzo dobrze tłumaczy.

NU
Mam tę książke. Dobrze napisana, dokładny opis składowych języka. Czy moge polecić? Cieżko powiedzieć. Boli mnie za mała ilość praktycznych przykładów i dobrych praktyk. Z tego powodu raczej sklaniał bym sie do ,,c++ primer". Jednak w jezyku polskim to jest chyba jedna z najlepszych pozycji (z Gręboszem nie miałem styczności).
1

Bierz najnowszą Grębosza, co jak co ale uczy najlepiej. On nie pokazuje patrzcie jaki jestem mądry, tylko patrzcie jakie to proste. Szkoda, że inne języki programowania nie mają takich nauczycieli. Te goście od Javy są bardzo przemądrzałe.

kaczus
  • Rejestracja:około 10 lat
  • Ostatnio:2 minuty
  • Lokalizacja:Łódź
  • Postów:1402
1

Ze swojej strony polecę Programowanie. Teoria i praktyka z wykorzystaniem C++. Jeśli chodzi o Grębosza, to jeśli, to tylko najnowsza. Starsze wydania są oparte na zbyt starym standardzie, by miało to jakikolwiek sens.


Ogólnie na prace domowe mam stawki zaporowe. Czasem coś o programowaniu znajdzie się na mojej stronie
LG
Brnę, przez nową książkę Grębosza i stwierdzam, że jest tam sporo roboty zrobionej względem pierwszych Symfonii. Pierwsza książka o podstawach, gdzie wspomniane jest o tablicach, ale polecane są vectory. W dalszych częściach ma być bardziej wyjaśnione, jak i przedstawione operacje na tablicach niskopoziomowych.
kaczus
Część rzeczy z pierwszych Gręboszów nie zadziała prawidłowo, ba nie skompiluje się :) Na początku lat 90 c++ wyglądał zupełnie inaczej :)
LG
No tak, bo pierwsza symfonia była daaawno, potem poprawiona wersja Standard z której raczej kod się skompiluje. Najnowsza książka, natomiast zmienia podejście chociażby, jeśli chodzi o kolejność poznawania, języka, rekomendacje struktur czy wprowadzanie nowinek (lambdy etc.). Opus... to nie jest kolejna poprawiona Symfonia. Niemniej, tak - powiedziałeś prawdę ;)
MarekR22
Moderator C/C++
  • Rejestracja:około 17 lat
  • Ostatnio:10 minut
2

Zelent uczy złych nawyków, więc lepiej trzymać się z daleka. Na dodatek używa C++ Builder, co jest już przestarzałe (ostatnie dobre wydanie było 15 lat temu).
Tu masz długą listę: https://4programmers.net/Forum/C_i_C++/140817-Materialy_dostepne_w_sieci


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
Wielki Zły Rozpruwacz
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 4 lata
  • Postów:18
0
KA
Ta. Chociaz niektorzy mowia, ze warto najpierw Programowanie. Teoria i praktyka z wykorzystaniem C++. A pozniej skuteczny, nowoczesny c++ meyersa. W polskich wydaniach niestety c++ 11 to chyba najnowsze co jest.
K9
Według mnie nie. Nie polecam tej książki na start. Autor zakłada tutaj że już coś wiemy na temat C++. Jeśli chcesz koniecznie ksiazke od twórcy C++ to zaopatrz się najpierw w "Programowanie. Teoria i praktyka z wykorzystaniem C++" a dopiero później Biblię C++ "Język C++. Kompendium wiedzy. Wydanie IV".
KA
Nie wiem jakie doswiadczenie ma autor. imo jak ktos programowal w innym jezyku to wedlug mnie moze siegac po kompendium.
K9
Po wpisie o Mirosławie Zelencie zakładam że autor zna podstawy podstaw, ale nie jestem tego do końca pewien.
trybot
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 6 lat
  • Postów:23
1

Ja tylko dodam, że sama książka / kurs nic nie da ;) Wyznacz sobie jakieś zadanie np. napisz snejka ;)
Polecam też: tutorialspoint_cpp

K9
no tylko żeby coś takiego napisać, trzeba mieć jakąś wiedzę na temat C++. Pisanie snejka nie znając dobrych praktyk to zło. Lepiej przeczytać książkę a dopiero później zabrać się za coś konkretnego.
trybot
Najlepiej to czytać i kodować jednocześnie ;)
K9
Tak też można ;) Tylko żeby dobrze napisać snejka, warto znać jakieś wzorce projektowe najlepiej na bazie programowania obiektowego.
trybot
hm ja napisałem swojego snejka i to z użyciem opengl - fajna sprawa dla początkującego. Co do dobrego programowania i wzorców masz rację i nie neguję tego. Ale sądzę, że to przyjdzie z praktyką ;)
Wielki Zły Rozpruwacz
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 4 lata
  • Postów:18
0

Napisałem w C# grę rpg konsolową bardzo prostą z minimalistycznym AI. Nie wiem czy to starczy do tego Kompedium wiedzy c++..

Co do: https://helion.pl/ksiazki/programowanie-teoria-i-praktyka-z-wykorzystaniem-c-bjarne-stroustrup,pcpptp.htm#format/d To nie ma standardu c++11 ;/

Kod gry:

Kopiuj
using System;

namespace Gra_RPG
{
	class Program
	{
		public static void Main(string[] args)
		{
			//Podstawa
			int gold;
			
			gold = 0;
			
			int exp;
			
			exp = 100;
			
			int lvl;
			
			lvl = 1;
			
			//Staty
			//int str; // 1 punkt = +10 do życia i +5 do ataku
			//str = 1;
			//int dex; // ?? (Statystyka nieużywana);
			//dex = 1;
			//int inta; // 1 punkt = +10 do many i +1 do ataku
			//inta = 1;
			
			//Dodatkowe Staty
			int hp;
			
			hp = 100;
			
			int dmgBroni;
			
			dmgBroni = 0;
			int dmg;
			
			dmg = 10;
			
			int mana;
			
			mana = 100;
			//----------------- OTHER
			string Klasa = null;
			
			//-----Itemy-----//
			string weapon = null;
			string armor = null;
			string artifacts = null;
			string ring = null;
			string CrystalOfPower = null;
			string helmet = null;
			string essence = null;
			//--------------//
			string[] Ekwipunek = new string[7];
			//-----------------
			//-----------------
			int zdrowieGladiatora;
			
			zdrowieGladiatora = 100;
			
			int dmgGladiatora;
			
			dmgGladiatora  = 666666666;
			
			//Start
			Console.WriteLine("-----------------");
			Console.WriteLine("Witaj w grze RPG!");
			Console.WriteLine("-----------------");
			System.Threading.Thread.Sleep(1000);
			Console.Clear();
			//--------------------------------------
			Console.Write("Wpisz swój nick: ");
			string nick = Console.ReadLine();
			//--------------------------------------
			Console.Clear();
			Console.WriteLine("-----------------");
			Console.WriteLine("Twój nick: " + nick);
			Console.WriteLine("-----------------");
			System.Threading.Thread.Sleep(2000);
			Console.Clear();
			//--------------------------------------
			while (Klasa == null){
				Console.WriteLine("Wybierz swoją klase: ");
				Console.WriteLine("1. Wojownik");
				Console.WriteLine("2. Łucznik");
				Console.WriteLine("3. Zabójca");
				Console.WriteLine("4. Mag");
				Console.WriteLine("5. Czarnoksiężnik");
				Console.WriteLine("6. Templariusz");
				Console.WriteLine("7. Wampir");
				Console.WriteLine("8. Łupieżca");
				Console.Write("> ");
			
				string selectClass = Console.ReadLine();
			
			switch (selectClass){
				case "1":
					Klasa = "Wojownik";
					Console.WriteLine("Wybrałeś klase: " + Klasa);
					weapon = "Laga";
					System.Threading.Thread.Sleep(1000);
					Console.Clear();
				break;
				case "2":
					Klasa = "Łucznik";
					Console.WriteLine("Wybrałeś klase: " + Klasa);
					weapon = "Łuk";
					System.Threading.Thread.Sleep(1000);
					Console.Clear();
					break;
				case "3":
					Klasa = "Zabójca";
					Console.WriteLine("Wybrałeś klase: " + Klasa);
					weapon = "Nóż Kuchenny";
					System.Threading.Thread.Sleep(1000);
					Console.Clear();
				break;
				case "4":
					Klasa = "Mag";
					Console.WriteLine("Wybrałeś klase: " + Klasa);
					weapon = "Mop";
					System.Threading.Thread.Sleep(1000);
					Console.Clear();
				break;
				case "5":
					Klasa = "Czarnoksiężnik";
					Console.WriteLine("Wybrałeś klase: " + Klasa);
					weapon = "Kij";
					System.Threading.Thread.Sleep(1000);
					Console.Clear();
				break;
				case "6":
					Klasa = "Templariusz";
					Console.WriteLine("Wybrałeś klase: " + Klasa);
					weapon = "Drewniana Buława";
					System.Threading.Thread.Sleep(1000);
					Console.Clear();
				break;
				case "7":
					Klasa = "Wampir";
					Console.WriteLine("Wybrałeś klase: " + Klasa);
					weapon = "Kastet";
					System.Threading.Thread.Sleep(1000);
					Console.Clear();
				break;
				case "8":
					Klasa = "Łupieżca";
					Console.WriteLine("Wybrałeś klase: " + Klasa);
					weapon = "Długi kij";
					System.Threading.Thread.Sleep(1000);
					Console.Clear();
				break;
				default:
					Console.WriteLine("Nieprawidłowa komenda.");
					System.Threading.Thread.Sleep(1000);
					Console.Clear();
					break;
					
				}	
			
			}
			Console.WriteLine("Komendy: menu");
			Console.Write("> ");
			//-------------Bronie_Początkowe------------------//
		    if (weapon == "Laga"){//Wojownik
				dmgBroni = 5;
		    }
			//-----------------------------------------------//	
			while(true){
			
				string select = Console.ReadLine();
			
			switch (select){
				case "menu":
					Console.Clear();
					Console.WriteLine("Nick: " + nick + " " + "Złoto: " + gold + " " + "Exp: " + exp + " " + "Poziom: " + lvl + " " + "Klasa: " + Klasa);
					Console.WriteLine("1. Przygoda");
					Console.WriteLine("2. Arena");
					Console.WriteLine("3. Kowal");
					Console.WriteLine("4. Dungeony");
					Console.WriteLine("5. Statystyki");
					Console.WriteLine("6. Ekwipunek");
					Console.WriteLine("7. Sklep");
					Console.Write("> ");
					break;
				
				case "2":
					Console.Clear();
					Console.WriteLine("Walczysz z Gladiatorem Klasa: [Wojownik]");
					Console.WriteLine(" ");
					System.Threading.Thread.Sleep(1000);
					
					for(int i = 1; i <= zdrowieGladiatora; i++){
						Console.WriteLine("<" + nick  + " HP: " + hp + "> " + "Atakuje " + "<" + "Gladiatora"  + " HP: " + zdrowieGladiatora + "> " + " \nZadając: " + dmg + " " + "Obrażenia Broni: " + dmgBroni);
						Console.WriteLine(" ");
						zdrowieGladiatora -= dmg+dmgBroni;
						System.Threading.Thread.Sleep(1000);
						Console.WriteLine("<" + "Gladiator" + " HP: " + zdrowieGladiatora + "> " + "Atakuje " + "<" + nick  + " HP: " + hp + "> " + "\nZadając: " + dmgGladiatora );
						Console.WriteLine(" ");
						hp -= dmgGladiatora;
						System.Threading.Thread.Sleep(1000);
					if (hp <= 0){
						
						Console.WriteLine("Przegrałeś!");
						System.Threading.Thread.Sleep(1000);
						break;
					}if (zdrowieGladiatora <= 0){
						
						Console.WriteLine("Wygrałeś!");
						gold = gold + 5;
						exp = exp + 10;
						System.Threading.Thread.Sleep(1000);
						break;
					}
				}
				
				Console.ReadKey();
				goto case "menu";
				
				default:
					Console.WriteLine("Nieprawidłowa komenda. Powracanie do menu głównego...");
					System.Threading.Thread.Sleep(1000);
					Console.Clear();
					goto case"menu";
				case "5":
					Console.Clear();
					Console.WriteLine("Życie: " + hp + "|" + "Mana: " + mana + "|" + "Obrażenia: " + dmg + "|" + "Obrażenia Broni: " + dmgBroni);
					Console.Write("> ");
					break;
				case "6":
					Console.Clear();
					for (int indeks = 0; indeks < Ekwipunek.Length; indeks++)
				{
						Console.WriteLine(Ekwipunek[indeks]);
				} 
			    Console.WriteLine("Kliknij dowolny klawisz by powrócic do menu głównego");
			    Console.ReadKey();
			    	goto case"menu";
				case "add dmg":
					dmg = dmg+10;
					goto case"5";
				case "add hp":
					hp = hp+10;
					goto case"5";
				case "set weapon null":
					weapon = null;
					goto case"menu";
				}
			Ekwipunek[0] = "Broń: " + weapon;
		    Ekwipunek[1] = "Zbroja: " + armor;
		    Ekwipunek[2] = "Artefakt: " + artifacts;
		    Ekwipunek[3] = "Pierścień: " + ring;
		    Ekwipunek[4] = "Kryształ Mocy: " + CrystalOfPower;
		    Ekwipunek[5] = "Hełm: " + helmet;
		    Ekwipunek[6] = "Esencja: " + essence;
		    if (weapon == null){
				dmgBroni = 0;
		    	}
			}
		}
	}
}
Zobacz pozostałe 33 komentarze
R3
Polecilem, by od niego zacząć i ogarnąć PODSTAWY, a nie konsumować 6 ksiazek na raz...
Wielki Zły Rozpruwacz
Jest jakiś może spis headerów? Mmsystem.h chciałem użyć, ale nie ma nigdzie jego w żadnym spisie wiekszość są tlyko ze standardowymi...
Wielki Zły Rozpruwacz
Dla mnie chodziło o spis tego typu headerów...
1

Lekko możesz zacząć od zelenta, wiem że wszyscy cię za to z karcą, ale zawsze czegoś się nauczysz.

Wiedząc jak działają sieci neuronowe lepiej mieć więcej doświadczenia niż mniej.

Nawet tego średniego, w końcu dojdziesz do wyższego poziomu.

1
kaczus
kupiłem na ostatniej promocji, przeglądam i... szału nie ma.... Jeśli chodzi o tematykę... Jest trochę lepiej, bo jest zgodne to z nowym standardem, ale wiekszość istotnych zmian potraktowane po macoszemu. O sprytnych wskaźnikach nie dowiesz się jak ich używać, tylko jest wtrent, jak sa zaimplementowane w jakimś kompilatorze...
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)