Zaloguj się, aby obserwować  
Bartuc

Język C / C++ / C# / Java - pytania, problemy...

1979 postów w tym temacie

Dnia 17.10.2005 o 18:37, Yamamoto napisał:

Mam do was pytanko. Kończe turbo pascal''em. Jaki mam wybrać następny język? Szykuje się na C++. Dobry wybór? Prosze o rade.
Pozdro!



Mam podobny dylemat. Po maturze z informatyki (piszę w maju) chcę porzucić Pascala i wziąć sięza coś innego.
Niestety do innego miasta na studia nie mogę wyjechać, a elbląska uczelnia nie jest na najwyższym poziomie z informatyki. Z tego powodu będę zdany tylko na siebie, a chciałbym nauczyć się czegoś "poważniejszego" no i tu pojawia się problem, bo nie wiem na co przejść. Wydaje mi się, że najrozsądniej będzie wybrać C lub C++ z tym, że jeszcze nie wiem, czym dokładniej się one różnią... Proszę o sensowne odpowiedzi :P

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

C++ to rozwinięcie C, zawiera sporo nowych "funkcjii". A co najważniejsze: zbliża się choć trochę do programowania obiektowego (klasy są dopiero w C++, w C tylko struktury). Jednym słowem jak zaczniesz w C, to potem spokojnie przejdziesz na C++, w końcu język ten projektowaniu myśląć ciągle o tym żęby był jak najbardziej zbliżony do C.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Co więcej, jeśli zacznie od C++, to i tak (choć pewnie trochę nieświadomie) nauczy się też C, bo bardzo wielu powtarzających się elementów programowania strukturalnego zwyczajnie nie uda mu się ominąć.

Dlatego moim zdaniem nie ma znaczenia, od którego języka zacznie, bo i tak na to samo wyjdzie.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ale C++ jest rozwinięciem C, i umiejąc C++ a przechodząc na C zacznie się okazywać żę wielu rzeczy zrobić nie można. A z C na C++ okaże się że mozna zrobić więcej rzeczy...

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 27.10.2005 o 21:26, michal19 napisał:

Ale C++ jest rozwinięciem C, i umiejąc C++ a przechodząc na C zacznie się okazywać żę wielu rzeczy zrobić nie można. A z
C na C++ okaże się że mozna zrobić więcej rzeczy...


Problem może być tylko jeden: o wiele więcej programów napisanych w C skompiluje się bez zmian w C++ niż programów napisanych w C++ - w C. Ale zrobić można to samo, tylko że inaczej i działa to w obie strony. Jeśli zacznie od C, a potem przejdzie do C++ to zostaną mu pewne nawyki, które w C++, chociaż są poprawne i się skompilują, są uznawane za przestarzałe lub niebezpieczne w tym języku, np. korzystanie z napisów jak z tablic znaków czy korzystanie z printf() zamiast strumieni.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Zapomniałem czegoś dodać, sorry za dwa posty:
Moim zdaniem o wiele łatwiej jest przejść z C++ do C niż odwrotnie, dlatego właśnie polecam od razu przyzwyczajać się do "myślenia" obiektowego, bo i tak pozna się "esencję" języka C.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 27.10.2005 o 21:53, michal19 napisał:

Ale najważniejszej rzeczy czyli obiektów (w C++ klas) nie ma w C, i potem może być trudno przestawić się na struktury.


I vice versa. Mówię na podstawie własnego doświadczenia: C jest na tyle prostym językiem, że przestawienie się na struktury (choć, jak wspomniałem, w C++ z elementów programowania strukturalnego korzysta się cały czas!) trwa o wiele krócej niż przestawienie się ze struktur na obiekty.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Wie ktoś jaka instrukcja w c++ jest odpowiednikiem np. readkey w Pascalu? Chodzi mi o to by program czekał na naciśnięcie jakiegoś klawisza.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 27.10.2005 o 08:17, Sebastian` napisał:

Mam podobny dylemat. Po maturze z informatyki (piszę w maju) chcę porzucić Pascala i wziąć sięza
coś innego.
Niestety do innego miasta na studia nie mogę wyjechać, a elbląska uczelnia nie jest na najwyższym poziomie
z informatyki. Z tego powodu będę zdany tylko na siebie, a chciałbym nauczyć się czegoś "poważniejszego" no i tu pojawia
się problem, bo nie wiem na co przejść. Wydaje mi się, że najrozsądniej będzie wybrać C lub C++ z tym, że jeszcze nie wiem,
czym dokładniej się one różnią... Proszę o sensowne odpowiedzi :P


zastanow sie co chcesz w przyszlosci robic i do czego ci jest programowanie potrzebne. jesli np. chcesz pisac aplikacje do konretnych celow dla firm (cos w rodzaju cms) to zapomnij o archaizmach typu c i c++ i sprobuj czegos z wyzszego poziomu jak c# czy java.
jak chcesz pisac hiper wydajne i niezwykle skomplikowane programy to niestety bez c++ sie nie obejdzie.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 04.11.2005 o 17:42, Yamamoto napisał:

Wie ktoś jaka instrukcja w c++ jest odpowiednikiem np. readkey w Pascalu? Chodzi mi o to by program czekał na naciśnięcie
jakiegoś klawisza.


Napiszcie co trzeba zrobić. Prosze!!!

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 04.11.2005 o 20:07, Yamamoto napisał:

> Wie ktoś jaka instrukcja w c++ jest odpowiednikiem np. readkey w Pascalu? Chodzi mi o to by program czekał na naciśnięcie

> jakiegoś klawisza.

Napiszcie co trzeba zrobić. Prosze!!!


Jak na mój gust to możesz w miejscu, w którym chcesz żeby się program zatrzymał i czekał na wciśnięcie klawisza wpisać: getchar();

albo skorzystać z funkcji z blibloteki <stdlib.h> i w pożądanym miejscu wpisać: system("pause");

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dnia 04.11.2005 o 20:26, Bartuc napisał:


Jak na mój gust to możesz
w miejscu, w którym chcesz żeby się program zatrzymał i czekał na wciśnięcie klawisza wpisać: getchar();

albo skorzystać
z funkcji z blibloteki <stdlib.h> i w pożądanym miejscu wpisać: system("pause");


Dzięki!!! Za chwile zobacze czy działa.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Powiedzmy że mam taki program :

//"Jakiś tekst.
#include <iostream.h>
int main()
{
cout<<"Jakiś tekst\n";
return 0;
}

W którym miejscu umieszczam instrukcje : getchar();
Bo wyskakuje mi błąd.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 04.11.2005 o 20:45, Yamamoto napisał:

Powiedzmy że mam taki program :
W którym miejscu umieszczam instrukcje : getchar();
Bo wyskakuje mi błąd.


getchar(); umieszczasz przed return(0);

albo ta druga opcja:

#include <stdio.h>
#include <stdlib.h>

int main()
{
printf("To jest napis.\n");
system("pause");
return 0;
}

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Czyli tak wygląda mój program:

//"Jakiś tekst.
#include <iostream.h>
int main()
{
cout<<"Jakiś tekst\n";
getchar();
return 0;
}

I nie działa :-( Coś musze robić źle.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Wiem moja wina... przepraszam... do getchar(); potrzebna jest biblioteka <stdio.h> zatem:

//"Jakiś tekst.
#include <iostream.h>
#include <stdio.h>
int main()
{
cout<<"Jakiś tekst\n";
getchar();
return 0;
}

... i powinno działać :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Od siebie dodam, ze można również skorzystać z biblioteki <conio.h> i funkcji getch() Umieszczasz ją dokładnie tam, gdzie chcesz, aby program się na chwilę zatrzymał - czyli z reguły po otrzymaniu wyników, żeby od razu się nie wyłączył :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 04.11.2005 o 20:59, Yamamoto napisał:

I nie działa :-( Coś musze robić źle.

Pewnie, że źle. getchar() powoduje wczytanie pierwszego znaku ze standardowego wejścia, którym zazwyczaj jest klawiatura. Problem w tym, że każde mimowolne wcześniejsze wciśnięcie jakiegoś klawisza jest takim znakiem. Poza tym przy uruchomieniu programu mogą w buforze klawiatury już istnieć nie wczytane znaki. Tak więc znak zostanie poprabny przez getchar(), a następnie zignorowany jako wyrażenie i program od razu się zakończy.
Aby poprawnie to zrobić nalezy najpierw wszytać wszystkie możliwe znaki i je odrzucić, aż do momentu w którym nie będzie już żadnego i dopiero wtedy wywołać funkcję oczekującą na znak (np. kbhit(),) albo funkcję oczekującą i wczytującą znak (np. getch()).

W języku C mógłbyś napisać tak:
while(!kbhit()); /*uwaga na pustą instrukcję wykonawczą reprezentowaną przez ";" */
getch();

albo w języku C++ korzystając z biblioteki standardowej:
while(!cin.ignore());
cin.get();

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Utwórz konto lub zaloguj się, aby skomentować

Musisz być użytkownikiem, aby dodać komentarz

Utwórz konto

Zarejestruj nowe konto na forum. To jest łatwe!


Zarejestruj nowe konto

Zaloguj się

Masz już konto? Zaloguj się.


Zaloguj się
Zaloguj się, aby obserwować