GRY-Online.pl --> Archiwum Forum

C++

13.08.2009
23:55
smile
[1]

perto1 [ Konsul ]

C++

Ostarnio zacząłem interesować się programowaniem. Robię już proste programy wyświetlające tekst przy użyciu zintegrowanego środowiska programistycznego (jak to brzmi... :D)- programu Dev-C++. Piszę tak:
#include <iostream>

int main()

Nic nadzwyczajnego, prawda? Tyle, że w książce nie ma napisane co to jest te "int main()"! Czy ktoś może mi powiedzieć co to jest?

13.08.2009
23:57
smile
[2]

Raynor [ Big Man ]

Main() to funkcja specjalna programu od której się zaczyna on wykonywać. Jest ona w każdym programie w C++. Ot, taki element na stałe. :)

13.08.2009
23:59
[3]

perto1 [ Konsul ]

A "int"?

14.08.2009
00:01
[4]

maviozo [ man with a movie camera ]

int to typ zmiennych, integer - liczba całkowita w przedziale -32456 (koło tego) do 32446

poszukaj w necie, to podstawy:)

14.08.2009
00:02
[5]

Raynor [ Big Man ]

Int to typ danych jaki ta funkcja zwraca - w tym przypadku Integer czyli liczba całkowita.

Ogólnie to polecam jakąś książkę czy chociażby kurs na necie. na przykład. :)

ED: Maviozo mnie uprzedził. :) Co do typu funkcji to w Dev C++ jest domyślnie po odpaleniu nowego projektu:

int main ()


return 0;

14.08.2009
00:03
[6]

yo dawg [ 1979 ]

Zmienna typu integer czyli int to liczba całkowita (dodatnia/ujemna).

14.08.2009
00:08
[7]

master53 [ Senator ]

powinno być raczej void main()

main musi zwracać int. void main() nie jest zgodne ze standardem - main powinien zwracać kod zakończenia programu.

Poza tym w gcc int ma 4 bajty, więc obsługuje przedział liczb całkowitych od -2^31 do 2^31 - 1. -32 768 do 32 767 to 2 bajtowy short int.

14.08.2009
00:09
[8]

maviozo [ man with a movie camera ]

W takim razie sorry za wprowadzanie w błąd. Faktycznie powinien. z C już dawno nic wspólnego nie mam..

14.08.2009
00:10
[9]

perto1 [ Konsul ]

Nie oszukujmy się- (prawie) nic nie zrozumiałem. Ale dajcie sobie spokój, zrozumiem z czasem... :)

14.08.2009
00:23
smile
[10]

master53 [ Senator ]

perto1 -> Ogólnie w C++ możesz tworzyć funkcje. Są to jakby osobne podprogramy, które wykonują jakieś czynności. Taka funkcja (podprogram) zwraca obiekt danego typu, a także przyjmuje obiekty danego typu, które określa się jako argumenty funkcji. Przykładowo funkcję, która oblicza pole kwadratu możemy zdefiniować jako:

int kwadrat (int bok)

return bok*bok


Z przodu jest int, bo funkcja zwraca liczbę całkowitą w postaci wartości pola kwadratu. Później mamy nazwę funkcji oraz w nawiasach argumenty, które zostaną przesłane do tego podprogramu. Jak widać do tej funkcji przesyłamy długość boku kwadratu wyrażoną jako liczba całkowita. Równie dobrze, możemy przesłać długość boku jako liczbę zmiennoprzecinkową i niczego nie zwracać, tylko od razu wypisać wartość na ekranie:

void kwadrat (double bok)

std::cout << "Pole kwadratu = " << bok*bok << std::endl;
return;


main jest właśnie podstawową funkcją (szkieletem) programu - żadne cuda na patyku :)

Radzę skorzystać z jakiejś porządnej książki do nauki C++ (lub od biedy jakiegoś kursu w internecie). Tam znajdziesz więcej informacji.

14.08.2009
01:06
[11]

Likfidator [ Generaďż˝ ]

Nie oszukujmy się- (prawie) nic nie zrozumiałem. Ale dajcie sobie spokój, zrozumiem z czasem... :)

Nie zrozumiesz z czasem, jeśli nie zainwesujesz w dobrą książkę. Kursy w necie są niewiele warte, bo najczęściej są pisane przez ludzi, którzy mają małe pojęcie o programowaniu i nie znają teorii.
Nie ma się co oszukiwać, żeby być dobrym programistą, trzeba znać matematykę, a przynajmniej algebrę liniową i matematykę dyskretną.

Popatrz chociażby na posty, w tym wątku, każdy próbuje Ci coś tłumaczyć, co jest kompletnie wyrwane z kontekstu np.

int to typ zmiennych, integer - liczba całkowita w przedziale -32456 (koło tego) do 32446

Poza tym w gcc int ma 4 bajty, więc obsługuje przedział liczb całkowitych od -2^31 do 2^31 - 1. -32 768 do 32 767 to 2 bajtowy short int.

a gdzie definicja zmiennej? Co początkującemu pomoże wiadomość o liczbie bajtów jaką w pamięci zajmuje int, skoro on nie rozróżnia funkcji od zmiennej?

Main() to funkcja specjalna programu od której się zaczyna on wykonywać. Jest ona w każdym programie w C++. Ot, taki element na stałe. :)
Oj nie w każdym. Pisząc np. w WinApi mamy funkcję:
int WINAPI WinMain(HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil);

Ogólnie w C++ możesz tworzyć funkcje. Są to jakby osobne podprogramy, które wykonują jakieś czynności.
Ponownie, co mu mówicie o funkcjach, jak nawet nie zna pętli czy instrukcji warunkowych, o zmiennych nie wspominając. Z resztą używanie funkcji w C++, przecież to język obiektowy:)

Moim zdaniem powinieneś zacząć:
- dobra znajomość logiki to podstawa, bez tego nie da się programować
- poznać pojęcia, takie jak, zmienna, pętla, instrukcja warunkowa, instrukcja GOTO (i dlaczego jej nie używać),
- napisać proste programy: dodawanie dwóch liczb, obliczanie pola prostokąta, sortowanie bąbelkowe, sprawdzanie czy liczba jest liczbą pierwszą,
- funkcje, zmodyfikować powyższe programy tak, aby były były wywołane jako funkcje
- rekurencja, zaimplementować obliczanie silni, w wersji rekurencyjnej i iteracyjnej (porównać)
- struktury, czyli bardziej zaawansowane korzystanie ze zmiennych
I teraz już bardziej zawaansowane rzeczy, czyli dynamiczne struktury danych:
- pliki, wczytywanie, zapisywanie
- wskaźniki - cała istota języka C
- stosy, kolejki, listy.

Na tym mniej więcej kończy się C, a zaczyna się C++, czyli kończymy programowanie strukturalne, a zaczynamy programowanie obiektowe.

Nie będę opisywał dalej, bo to co napisałem to mniej więcej program połowy roku na studiach informatycznych na przedmiocie programowanie C.

14.08.2009
01:09
[12]

blood [ Killing Is My Business ]

Warto zacząć od książki "Język C" Herberta Shildta. Tłumaczy wszystko od podstaw.

14.08.2009
01:09
[13]

master53 [ Senator ]

Likfidator -> Owszem, zgadzam się w pełni, jednak nie oczekuj, że ktoś opisze tutaj dokładnie wszystko to, co wymieniłeś. Od tego są podręczniki do cpp.

14.08.2009
01:21
[14]

Likfidator [ Generaďż˝ ]

master53, napisanie tutaj kursu byłoby stratą czasu, nie mniej chciałem tylko trochę naprostować sytuację, żeby perto1 się nie zniechęcił po przeczytaniu tego wątku.

14.08.2009
01:23
smile
[15]

darek_dragon [ 42 ]

Nie ma się co oszukiwać, żeby być dobrym programistą, trzeba znać matematykę, a przynajmniej algebrę liniową i matematykę dyskretną.

Innym sposobem jest studiowanie informatyki na politechnice, a nie na uniwersytecie :D

Żeby umieć programować, trzeba przede wszystkim programować. A także umieć myśleć, uczyć się na błędach i wyciągać wnioski, tak jak w przypadku każdej umiejętności. Dobra książka jest przydatna na początek, ale najłatwiej się nauczyć po prostu eksperymentując. Zrozumienie, czym są funkcje, pętle, a nawet mistyczne klasy i obiekty nie wymaga nie wiadomo jakiej wiedzy.

14.08.2009
02:19
smile
[16]

wysiu [ ]

"Nie ma się co oszukiwać, żeby być dobrym programistą, trzeba znać matematykę, a przynajmniej algebrę liniową i matematykę dyskretną."
Damn, jaka szkoda, ze nie wiedzialem o tym te 10 czy ile lat temu, gdy zaczynalem prace w tym zawodzie.

14.08.2009
02:24
[17]

Likfidator [ Generaďż˝ ]

Zrozumienie, czym są funkcje, pętle, a nawet mistyczne klasy i obiekty nie wymaga nie wiadomo jakiej wiedzy.

Tyle tylko, że to są kwestie techniczne, w sumie nie istotne. To, że kupisz farbę, pędzel i płótno nie znaczy, że namalujesz arcydzieło.
Teoria sama w sobie nic nie daje, ale bez niej nie ma programowania. Znajomość faktów z algebry i matematyki dyskretnej naprawdę pomaga. Oto przykład: Czy macierz odwrotna do macierzy nad liczbami całkowitymi o wyznaczniku +/- 1, będzie też całkowito liczbowa? Odpowiedź brzmi tak, ale dlaczego? Standardowy informatyk umie tylko policzyć macierz odwrotną za pomocą eliminacji gaussa. Jest to dobra metoda, bo szybka i łatwa w implementacji, ale w opisanym przypadku może generować błędy, bo każde dzielenie powoduje zaokrąglenie, które w tym konkretnym przypadku może prowadzić do błędów.
Rozwiązanie jest następujące, wyznacznik macierzy przecież definiuje się jako permutacje, a macierz odwrotną można policzyć przy pomocy minorów. Mówiąc inaczej, korzystając tylko z dodawania i odejmowania na liczbach całkowitych, a więc bez błędów zaokrągleń, co akurat w moim przypadku było ważniejsze od czasu obliczeń.

Wysiu-->Damn, jaka szkoda, ze nie wiedzialem o tym te 10 czy ile lat temu, gdy zaczynalem prace w tym zawodzie.

Do wyklikania formularzy i implementacji prostych funkcji, skomplikowana matematyka nie jest wymagana, ale już przy kryptografii, kodowaniu obrazu itd...

14.08.2009
02:31
[18]

wysiu [ ]

Likfidator -->
"Do wyklikania formularzy i implementacji prostych funkcji, skomplikowana matematyka nie jest wymagana, ale już przy kryptografii, kodowaniu obrazu itd..."
Czyli tak ok moze z 2% programistow na rynku pracy.

14.08.2009
18:06
[19]

mirionis [ Konsul ]

Witam, mam pytanie, a nie chcę zakładać nowego tematu.
Czy jest gdzieś w necie pełny kurs jakiegoś języka programowania (najlepiej c++)? linki

14.08.2009
18:26
[20]

Regis [ ]

Ludzie, zamiast naj***ac sie raz czy drugi w weekend odlozcie sobie kase na jedna porzadna ksiazke, zamiast kombinowac z jakimis gownianymi kursami... Wiekszosc z nich jest albo fatalnie napisana, albo zawiera bledy i jakies bzdury, ktore autorowi sie 'zdaja'. Kupujac dobra ksiazke macie pewnosc, ze nie bedziecie sie uczyc glupot.

14.08.2009
18:53
[21]

mirionis [ Konsul ]

Regis -> więc co polecasz?

14.08.2009
18:59
smile
[22]

Chudy The Barbarian [ Legend ]

Jest w necie w sumie jeden bardzo dobry tutorial C++. A raczej Megatutorial:

Możliwe, że nawet lepszy niż Symfonia C++, a dostępny całkowicie za darmo :P

14.08.2009
19:04
[23]

zmudix [ Professor Fate ]

A jeżeli już o książkach mowa, to tylko i wyłącznie "Symfonia C++" Grębosza. Jest idealna dla początkujących.

14.08.2009
19:08
smile
[24]

Regis [ ]

Zaczynałem od Symfonii C++ i bardzo sobie chwalę. Niektórzy twierdzą, że jest 'przegadana' - prawda. Natomiast przedzkadza to, kiedy ktoś się uczy kolejnego języka programowania. Dla początkującego to dobrze, że dostaje kurs w bardzo 'strawnej' postaci.

07.09.2009
20:09
[25]

Shoggoth [ Stairway to Heaven ]

Zobacz ten kurs. Co prawda to C i dla uK ale jakies tam podstawy łatwo wytłumaczone masz.



Swoją drogą Regis dobrze mówi, lepiej kupić książkę. Zauważyłem że ludzie piszący kursy w necie mają słomiany zapał, wszystkie kończą się po góra 3 lekcjach w których wyjaśnia autor jak sterować 2 diodami :]

07.09.2009
20:11
[26]

Neo12 [ Prince of Persia ]

[22]

Miałem właśnie o tym napisać - bardzo polecam ten tutek, sam się z niego uczę.

Napisany takim językiem że pojmie to każdy kto umie czytać.

07.09.2009
23:11
[27]

wydolny_pławikonik [ Konsul ]

main oznacza główną część stronki w c++

07.09.2009
23:14
smile
[28]

legrooch [ MPO Squad Member ]

main oznacza główną część stronki w c++

Co oznacza? I czego?

07.09.2009
23:47
smile
[29]

master53 [ Senator ]

Shoggoth -> Masz może jeszcze jakieś ciekawe materiały dla zupełnie początkujących, dotyczące programowania uC? Dopiero zaczynam przygodę z kostkami i jak na razie to trochę czarna magia :)

08.09.2009
22:59
[30]

Shoggoth [ Stairway to Heaven ]

master53 --> jak chcesz coś o Bascomie lub Asemblerze to pisz na gg mam tego trochę. C nie interesuje mnie szczególnie, Asembler rlz :]

spoiler start

7244598
spoiler stop

08.09.2009
23:21
[31]

Kubx [ Pretorianin ]

Megatutorial Xiona, dokumentacja, Google - to wszystko co potrzeba na początek.

master53 -> Bawisz się AVRami? Jeżeli C to w BASCOMie nie pisze, ale w jego dokumentacji (F1) jest co nie co informacji na temat tego języka. A assembler to głównie pdfy od producenta, znalazłem też to:
Osobiście polecam C - łatwy, przejrzysty język.

Shoggoth -> podaj coś o asmie na gg: 4837574

© 2000-2024 GRY-OnLine S.A.