x-kom hosting

[Rozwiązany] Kilka prostych pytań dotyczących C++

Cyper
utworzono
utworzono (edytowane)

Od jakigoś czasu zacząłem się uczyć j. C++. Umiem już podstawy, czyli m. in. różne pętle, zmienne, stałe, instrukcje itd.

Jednak korzystając z e-booka "Od Zera Do Gier Kodera" nauczyłem się jedynie (przy użycie programu Visual expres C++ 2005) tworzenia aplikacji konsolowych.

A oto pytania:

1. Czy mógłbym dostać linki do jakichś internetowych kursów, poradników i tutoriali w których mógłbym nauczyc się jak tworzyć programy nie w oknach konsolowych tylko w normalnych oknach, jak np. notatnik czy paint.

2. Czy wystarczy mi do tego program Visual expres C++ 2005?

3. Czy w C++ (po długich miesiącach nauki) mozna stworzyć program do odtwarzania filmów, albo edytor tekstu lub gre na podobie pasjansa?

4. Na rynku IT chyba bardziej potrzeba programistów PHP i Javy, więc czy jest popyt na programistów C++?? (Troche głupie pytanie)

Z góry dziekuje za wszystkie odpowiedzi.

Pozdro :)

luq
komentarz
komentarz

1.Trzeba poznać WinAPI http://www.gamedev.pl/tutorials.php

2. Tak

3. Tutaj chodzi o poznanie odpowiednich bibliotek, raczej nie jest to takie trudne jak poznanie samego jezyka, przypuścmy dla pasjansa ja uzyłbym SDL`a.

4. Jest wielki popyt na programistów C++ tylko że trzeba dużo wiedzieć :)

Cyper
komentarz
komentarz

Dzieki Ci bardzo za udzieleni mi odpowiednich odpowiedzi :)

+ dla Ciebie :)

Ale mam jeszce kilka pytań:

1. Czy WinApi bardzo różni się od tworzenia aplikacji w oknie konsolowym? Czy kod programu wygląda mniej więcej tak samo?

2. Czy te biblioteki to takie coś w rodzaju pluginów dodawające nowe komendy?

3. Czy profesjonalne programy (jak, np. WinRar, Gadu-Gadu, Windows Media Player oraz gry typu pasjans) tworzone przez profesjonalne firmy są tworzone w języku C++, a może jakimś innm? A jeżeli w innym to czy mozna podobny stworzyć w C++?

4. Czy TEN program jest stworzony w C++? Czy w tym jezyku da się zrobić podobny?

PS: Oczywiście wiem, że nawet stworzenie prostego edytora tekstu, typu Notatnik wymaga wielu lat (?) nauki, a już samo jego stworzenie zajmuje kilkadziesiąt godzin (?).

luq
komentarz
komentarz

1. Różni się. Włącz sobie File -> New -> Project i wybierz Windows Aplication. Skompiluj i bedziesz mial puste okienko. Zaznaczm że nie używam Visuala, ale powinno byc podobnie jak nie tak samo. Chodzi o to że masz "nowe" funkcje, stałe itp po prostu korzystasz z nowej bibloteki.

2. Przeczytałeś tą książke do końca? Powinno pisać czym jest biblioteka. Dołączasz sobie plik nagłówkowy np. cmath, ctime, string.h SDL.h, Allegro.h, który to zawiera stałe i prototypu funkcji, definicje kasy z ktorych możesz po dołączeni tego pliku korzystać.

3. Praktycznie programy pisane są mozna powiedzieć w 2 językach C++ lub Object Pascal (Delphi). Spotkalem się ze stwierdzeniem że Delphi jest lepszy do programów nie wiem czy prawda ale na pewno C++ bije pod względem pisania gier.

4. Nie wiem w czym jest zrobiony, zapytaj autorów :) C++ ma wielkie możliwości, pewnie teraz siedziesz sobie na nielubianym przez wszystkich Windowsie. Zgadnij w czym jest pisany.

Esus
komentarz
komentarz
C++ ma wielkie możliwości, pewnie teraz siedziesz sobie na nielubianym przez wszystkich Windowsie. Zgadnij w czym jest pisany.
To chyba nie jest trudne do odgadnięcia zważywszy na to po co ten cały C++ właściwie powstał. ;)
2. Przeczytałeś tą książke do końca? Powinno pisać czym jest biblioteka. Dołączasz sobie plik nagłówkowy np. cmath, ctime, string.h SDL.h, Allegro.h, który to zawiera stałe i prototypu funkcji, definicje kasy z ktorych możesz po dołączeni tego pliku korzystać.
To tak jak z opisem trąby słonia za pomocą węża. ;) Napisałeś co zawierają jakieś tam pliki nagłówkowe i że dołączasz jakiś plik. Po cholerę tak młodym umysłom mieszać? ;) Później przyjdzie co do czego i taki młody adept sztuk magicznych nie dogaduje się z linkerem. ;) Ale fakt, żeby skorzystać z biblioteki zazwyczaj musisz dołączyć jej "plik nagłówkowy". ;)

TEN program przypomina mi coś co ma wspólnego z Borlandem, tak przynajmniej wyglądają kontrolki w Builderze i Delphi. ;)

3. Czy profesjonalne programy (jak, np. WinRar, Gadu-Gadu, Windows Media Player oraz gry typu pasjans) tworzone przez profesjonalne firmy są tworzone w języku C++, a może jakimś innm? A jeżeli w innym to czy mozna podobny stworzyć w C++?
Kiedyś czytałem artykuł (nie pamiętam niestety gdzie) na temat najpopularniejszych języków programowania 2007 przy czym statystyki były oparte na w miarę miarodajnych wskaźnikach, tj. ilości zatrudnionych w badanych firmach posługujących się danym językiem. Okazało się, że najpopularniejsze są: C (a nie C++ jak można by było się spodziewać), PHP, Java, Perl i Python. C++ był gdzieś pomiędzy Javą a C. Przy czym były opisane również tendencje na najbliższe lata - rośnie zastosowanie Javy i C#.
luq
komentarz
komentarz
Ale fakt, żeby skorzystać z biblioteki zazwyczaj musisz dołączyć jej "plik nagłówkowy". ;)

Mam takie pytanie bo może nie jestem wyedukowany :). Jest jakis inny sposob?

Kiedyś czytałem artykuł (nie pamiętam niestety gdzie) na temat najpopularniejszych języków programowania 2007 przy czym statystyki były oparte na w miarę miarodajnych wskaźnikach, tj. ilości zatrudnionych w badanych firmach posługujących się danym językiem. Okazało się, że najpopularniejsze są: C (a nie C++ jak można by było się spodziewać), PHP, Java, Perl i Python. C++ był gdzieś pomiędzy Javą a C. Przy czym były opisane również tendencje na najbliższe lata - rośnie zastosowanie Javy i C#.

Że niby C? Jakos mi sie nie chce wierzyc. Co do Javy i C# to tez czytalem, z czasem to te jezyki beda najchetniej uzywane.

Esus
komentarz
komentarz

Co do C, też byłem zaskoczony, ale jest to prawda. C to w dalszym ciągu bardzo popularny język. Chciałbym też zwrócić uwagę, że projekty naukowo-techniczne (te uruchamiane na takich dużych komputerach z tysiącami procesorów) w dalszym ciągu są pisane w FORTRAN-ie i w C właśnie. :) Poza tym na zachodzie bardzo popularny jest Perl, czego w Polsce jakimś dziwnym trafem nie widać. Popularność Pythona w Polsce rośnie i dobrze, bo jest duże zapotrzebowanie, chociażby w Google. ;) Można dojść do wniosku, że to co dla nas jest oczywiste (tj. popularność C++) wcale nie jest taka oczywista na całym świecie. Trzeba także wziąć pod uwagę to, że mówiąc o programowaniu nie mamy na myśli jedynie tworzenia tzw. "programów użytkowych", ktoś kto by tak myślał mógłby się zdziwić popularnością Perla, a przecież jest to bardzo wydajny język programowania. Którego nawet w pewnych okolicznościach nie wypada nie znać. :P

A jeśli chodzi o dołączanie bibliotek, różnie z tym jest w różnych, nie tyle językach, co kompilatorach. W C/C++ biblioteki string zazwyczaj nie musisz linkować za pomocą włączenia pliku nagłówkowego, podobnie jest z biblioteką standardową (standard). Dołączanie różnych bibliotek czasami nie sprowadza się do deklaracji #include, czasami należy zrobić coś jeszcze. Wiedzą to chociażby programiści UNIX-a, którzy kiedykolwiek próbowali dołączyć bibliotekę matematyczną w gcc. ;)

luq
komentarz
komentarz
A jeśli chodzi o dołączanie bibliotek, różnie z tym jest w różnych, nie tyle językach, co kompilatorach. W C/C++ biblioteki string zazwyczaj nie musisz linkować za pomocą włączenia pliku nagłówkowego, podobnie jest z biblioteką standardową (standard).

Mozliwe, ja tam nie wiem. Korzystam jak na razie z Dev`a. Wiem co zaraz napiszesz, że Dev jest do dupy, ale podoba mi się download bibliotek :]. Może i w innym IDE tez cos takiego jest ale jakos narazie Dev. Ale uciekłem od tematu, w Devie trzeba pisać #include<string.h> ale pewnie masz racje, co do standardowej biblioteki to chyba byłoby głupie w każdym programie dopisywać dołączenie odpowiedniego pliku.

Wiedzą to chociażby programiści UNIX-a, którzy kiedykolwiek próbowali dołączyć bibliotekę matematyczną w gcc. ;)

gcc nie jest tylko i wyłączenie pod sys. UNIX`owe jest wersja pod wina. Chodzi ci o -lm ta (czy jakos tak)? Czytalem ale nie bawilem sie tak dokładnie gcc czy g++.

Esus
komentarz
komentarz

GCC pod Windows? Z tego co mnie się wydaje dostępne są jedynie cross-compilery, tak więc prawdziwego gcc w Windows nie znajdziesz. Ale nie wiem nie próbowałem. ;) Pewnie to jest w jakimś stopniu kompatybilne, chociaż nie wydaje mi się żeby do końca. Jak brałem udział w OI to pamiętam, że na ich stronie internetowej wypisane były różnice pomiędzy G++ a Cygwinem albo czymś takim, nie pamiętam do końca. :) Napisałem o programistach pracujących w UNIX-ach z tego względu, że tam gcc jest najpopularniejsze. I właściwie czemu tu się dziwić.

To tyle off-topic'owania, bo z tego co zauważyłem moderatorzy na tym forum są strasznie drażliwi. ;)

luq
komentarz
komentarz

E tam, nie szukałeś po prostu. Jest normalna wersja pod winde, nie trzeba odpalac przez cygwina: http://sourceforge.net/projects/gcw/ (znaczy sie zam nie kozystalem pod winda, bawilem sie troche g++ na linux`ie ale wiem ze takie cos jest :)

Niby taki prosty kompilator a trzyma się najbardziej standardów :)

To tyle off-topic'owania, bo z tego co zauważyłem moderatorzy na tym forum są strasznie drażliwi. ;)

Zdaje ci się. Nie są tacy źli. Możesz mi wierzyć :P

Cyper
komentarz
komentarz

yyy... Temat chyba troszeczke zboczył z tematu :)

Skoro C++ niby taki nowoczesny, a w firmach wolą używać starszych języków to może lepiej zabrać się za Jave albo Delphi???

Możliwe, że będę prowadził naukę w kierunku informatycznym. Jestem dopiero w III klasie gimnazjum, i może przez te kilka lat firmy powoli przestawią się na C++.

Co byście mi doradzili? Czy kontynuować naukę C++? Od razu zamienić go na bardziej popularny język, nap poprzednika C++, czyli C? A może najpierw w miarę dobrze opanować C++, a potem zabrać się za nauke języka, który bardziej mi się przyda?

luq
komentarz
komentarz

Nie mam pojęcie jak z tym C jest może rzeczywiście jest bardziej popularny od C++, ale ja uważam że każdy szanujący programista powinien przynajmniej liznąć ten język (C++) bo wiele innym właśne z niego czerpie. Czystego C nie poznalem i nie mam raczej zamiaru, jednak C++ to rozszerzenie C o obiekty wiec dlaczego robic krok w tył? Pozatym ucząc się najpierw C ma się wiele nawyków które należy zmienić przesiadając sie na C++. Javy nie znam a naprawde chcialbym poznac bo to jest naprawde jezyk przyszlosci, juz uzywany w wielu zroznicowanych "srodowiskach".

Trudno cos polecac ale ja uwazam ze warto poznac kilka jezykow nie chodzi tu o jakies naprawde wglebianie sie w to, a potem juz obrac sobie ten jezyk ktory najlepiej nam podchodzi, czy np. jest najwieksze zapotrzebowanie na programistow.

Cyper
komentarz
komentarz

Dzięki Ci Luq za mądrą odpowiedź.

A czy ten język C bardzo różni się od C++? Czy w C są te same komendy, te same zasady tworzenia programów? Czy jest on tylko troszkę bardziej "ubogi"?

Dzieki wszystkim za odpowiedzi :)

Najpierw postaram się b. dobrze opanować C++, a potem nauczę się troszkę obsługiwać jego starszą wersją. Następnie sprubuje opanować jave, gdyż jest to język bardzo uniwersalny spotykany m. in. w telefonach komurkowych czy na stronach www.

luq
komentarz
komentarz
A czy ten język C bardzo różni się od C++? Czy w C są te same komendy, te same zasady tworzenia programów? Czy jest on tylko troszkę bardziej "ubogi"?

Hm... cieżko tak wytłumaczyć tymbardziej jak sie dopiero uczy C++, a C sie nie zna :)

Zasady programowania w kazdym jezyku sa takie same, ale z tego wzglądu że C jest starszy od C++ (sama nazwa cos znaczy, no nie) inaczej pewne strawy sa postrzegane, pewne wyrazenia sa zabronione w C++ itp. Np. z C++ uzywasz new do dynamicznej alokacji pamieci z C jest to malock, w C nie ma cout i cin (sa to klasy wiec wiadomo) jest za to printf, (nie wiem jakie jest przeciwienstwo cin) jak dla mnie mozolny (programisci C pewnie krzywo parza na couta :) definiowanie stalych jest inne, w C++ jest to const, programisci C uzywają preprocesora i #define, przed definicja tabeli trzeba postawić static.

Ogolnie jak dla mnie C++ jest prostszy i bardziej przemyslany, chodz jak zaznaczam nie znam C wiec czy wolno mi sie wypowiadac? :>

Aha zapomnialem dodac ze C++ poza struktura umożliwia programowanie obiektowe w C tego nie ma (chodz slyszalem o C z klasami, ale kasy to nie wszystko)

Esus
komentarz
komentarz

Pozatym ucząc się najpierw C ma się wiele nawyków które należy zmienić przesiadając sie na C++.
Jakich nawyków? Pytam z ciekawości, bo może jest coś o czym nie wiem? :P No bo chyba nie chodzi ci o ograniczenie się z preprocesorem i kontrolę pamięci? Różnic nie jest tak wiele, bez przesady. ;) Ja tam z C++ nie mam zbyt wiele wspólnego (choć nie ukrywam ciągnie mnie trochę do niego, może kiedyś. ;) ) ale znam wieloletniego programistę C++ który napisał w życiu już trochę tego kodu i on twierdzi, że jak ktoś nie zna C, to tym bardziej nie zna C++. Chyba chodziło mu o sprawne korzystanie z niskopoziomowego programowania - de facto, jeśli nie ma się dostępu do wyższego poziomu abstrakcji to jest się skazanym na programowanie na niższym poziomie. :P
do dynamicznej alokacji pamieci z C jest to malock
Już nie żyjesz za tego malocka. :P
nie wiem jakie jest przeciwienstwo cin
Scanf/Scan, jak można być takim niezsynchronizowanym? :P
jak dla mnie mozolny
Faktycznie, formatowanie wyjścia to nie lada wyzwanie. :P
przed definicja tabeli trzeba postawić static.
Co to jest tabela? :P
Ogolnie jak dla mnie C++ jest prostszy i bardziej przemyslany, chodz jak zaznaczam nie znam C wiec czy wolno mi sie wypowiadac? :>
Nie wstyd ci? Tylko dzieci neo wypowiadają się na tematy których nie znają. Swoisty dyletantyzm z twojej strony. ;)
Następnie sprubuje opanować jave, gdyż jest to język bardzo uniwersalny spotykany m. in. w telefonach komurkowych czy na stronach www.
Polecam także opanować język polski. Też czasami się przydaje, co prawda nie tak często jak angielski, ale może mimo wszystko będziesz w przyszłości pracował z Polakami? Albo może znasz jakiegoś Polaka osobiście?
ale ja uważam że każdy szanujący programista powinien przynajmniej liznąć ten język (C++) bo wiele innym właśne z niego czerpie.
A masz jakiś przykład który potwierdzi tę teorię? :P
luq
komentarz
komentarz
Już nie żyjesz za tego malocka. :P

Dobra malloc, jak zwal tak zwal, pisalem z glowy.

Co to jest tabela? :P

Powiem ze czesto zdaza mi sie powiedziec/napisac tabela zamiast tablica :) chyba ze wzgledu na to ze pierwsze w czym zaczolem pisac to byl HTML i jakos tak nie umiem przestac myslec o tablicy nie wyobrazalac sobie tabeli.

Nie wstyd ci? Tylko dzieci neo wypowiadają się na tematy których nie znają. Swoisty dyletantyzm z twojej strony. ;)

Dzieci neo troszke inaczej postepuja, np w tym wypadku zbluzgalbym cie :D. Pozatym hm... poznając C++ czytajac ksiazke z ktorej sie ucze bylo dosc sporo nawiazac do C, wiec no moze nie jest to wiedza nawet na podstawowym poziomie ale jakis zarys sie ma. Tak mysle.

Polecam także opanować język polski. Też czasami się przydaje, co prawda nie tak często jak angielski, ale może mimo wszystko będziesz w przyszłości pracował z Polakami? Albo może znasz jakiegoś Polaka osobiście?

Polonista nie bylem nie jestem i nie bede, ale masz racje takie bledy to trzeba tepic. Przeoraszam cie bardzo jezeli urazilem twoja polskość

A masz jakiś przykład który potwierdzi tę teorię? :P

Wydze, że raczej zadawałeś ty pytanie czysto retorycznie, myśląc że niestety nie wiem o czym pisze, ale jednak mam taki przykład.

W PHP występuje taki bug dotyczący bezpieczeństwa, który zwie się NULL Byte Poisoning. Jest to bład typu LFI. Nie wiem czy znacz PHP`a ale chyba tak wiec raczej nie mam co tlumaczyc. Ja poznalem najpierw PHP potem C++, wiec ok Null Byte = %00, ale co to takiego, w PHP nie mam tak mocno zarysowanych zmiennych jak w C++, wiec dopiero po poznaniu budowy ciagu znakow strikte w C poznajesz \0 = Null Byte wiesz na czym dokladnie polega caly atak i dlaczego tak jest.

Esus
komentarz
komentarz

Przykład jest trochę nie adekwatny do problemu. Interpreter PHP jest pisany w C++, a znak końca ciągu znaków występuje w większości języków programowania. Stringi po prostu najłatwiej implementuje się z użyciem wartownika/terminatora.

luq
komentarz
komentarz
a znak końca ciągu znaków występuje w większości języków programowania

Pascal nie ma, JavaScript tez nie, hm...

Interpreter PHP jest pisany w C++

A to ci. Wiec raczej cos C++ do PHP ma.

Esus
komentarz
komentarz

Od wersji 7.0 istnieje możliwość używania stringów zakończonych znakiem końca. ;)

A to ci. Wiec raczej cos C++ do PHP ma.

Tak, ale nie to co pisałeś na samym początku. Raczej programistę PHP nie interesuje w czym został napisany interpreter. Tak samo mógłbyś powiedzieć, że wszystkie języki programowania mają coś wspólnego z Assemblerami, co jest prawdą, ale nie przekłada się na praktykę programowania. Nadal nie podałeś przykładu języka programowania który czerpie pomysły z C++. ;)

Poza tym ta dyskusja zbacza na jakieś dziwne tematy, ja chciałem tylko najnormalniej w świecie dowiedzieć się co miałeś na myśli pisząc, że inne języki programowania bazują na C++, i jak dotąd się nie dowiedziałem.

luq
komentarz
komentarz

Nie wiem czy ty tego nie wiedziesz czy nie chcesz widziec ale w informatyce wiele rzeczy czerpie z czegos innego. Tak jak chmody sa uzywane w PHP a czerpia z UNIXa tak samo PHP czerpie z C/C++. Funkcje printf, fopen, fwrite, fclose... musialbym pomyslec jeszcze nad jakimis ale jest ich troche. Wydaje ci se ze przypadek, zbieg okolicznosci. Ja twierdze ze PHP jest tworzony na bazie C/C++, no bo jest, sam pisales ze parser pisany jest w C++.

Esus
komentarz
komentarz

Więc jednak nie jest to jakaś specjalna cecha języka C++. ;)

PHP ma więcej cech wspólnych z Perlem niż z C/C++, no bo czemu tu się dziwić, z niego się wywodzi! Parser Pascala, a nawet Brainfucka też można pisać w C++, więc to nie ma żadnego związku.

Funkcje printf, fopen, fwrite, fclose... musialbym pomyslec jeszcze nad jakimis ale jest ich troche. Wydaje ci se ze przypadek, zbieg okolicznosci.
Skąd niby wiesz co mi się wydaje? :/ Nie jest to przypadek, tylko ustalona konwencja, która nie wywodzi się bezpośrednio z języka C++.

Wracając do null-terminated strings, skoro taki jesteś wrażliwy na to co z czego wynika i tak dalej. Stringi kończące się terminatorem (a więc wrażliwe na ich cięcie w dowolnym miejscu) są charakterystyczne dla systemów UNIX, więc to nic dziwnego, że programiści budujący biblioteki wejścia/wyjścia próbowali to w jakiś sposób ujednolicić, to właśnie konwencja. Było to rozwiązanie o tyle prostsze, że wymagało zwykłego dump'a z konsoli.

luq
komentarz
komentarz

Nie dogadamy sie widze.

Mówisz stringi z UNIX`a, ok, być może, wierze ci na słowo bo nie wiem, nie słyszałem, ale rozmawiamy teraz na temat j. programowania. Wiec stringi => unix -> C -> PHP. Wywodzą się z unixa ale pierwszy jezyk w ktorym go zastosowano jest C. Poaztym, nawet jakby miedzy unixem a C jeszcze cos stalo, to i tak stringi posrednio przyszly do PHP za sprawa C.

Rozmowa raczej i tak nie ma wiekszego sensu bo ani ja, przypuszczam że ty też nie, nie znamy całej historii rozwoju języków programowania i nie dojdziemy do prawdy. Ja tam dalej stoje przy swoim ty pewnie przy swoim ale może nie wałkujmy już tego tematu? Autor pytal o kilka prostych rzeczy a tu taka rozmowa wynikla z tego :)

Cyper
komentarz
komentarz

Niestety natrafiłem na mały problem :(

Gdy chcę stworzyć nowy projekt w Visual C++ mam do wyboru kilka opcji i niestety niewiem co wybrać :( Oto co mi się wyświetla:

aonasm.jpg

Kompletnie niewiem co mam wybrać. Próbowałem metodą prób i błędów, ale nic z tego niewychodzi, a w google też nic niemoge znaleźć.

Z góry dzięki za pomoc :)

luq
komentarz
komentarz

Zapewnie, Windows Forms Application

Cyper
komentarz
komentarz

Dzięki CI wielkie Luq. Już dałem CI plusika :)

Temat chyba można zamknąć :)

Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!

Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Strona wykorzystuje pliki cookies w celu prawidłowego świadczenia usług i wygody użytkowników. Warunki przechowywania i dostępu do plików cookies możesz zmienić w ustawieniach przeglądarki.