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?
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. :)
perto1 [ Konsul ]
A "int"?
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:)
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;
yo dawg [ 1979 ]
Zmienna typu integer czyli int to liczba całkowita (dodatnia/ujemna).
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.
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..
perto1 [ Konsul ]
Nie oszukujmy się- (prawie) nic nie zrozumiałem. Ale dajcie sobie spokój, zrozumiem z czasem... :)
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.
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.
blood [ Killing Is My Business ]
Warto zacząć od książki "Język C" Herberta Shildta. Tłumaczy wszystko od podstaw.
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.
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.
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.
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.
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...
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.
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
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.
mirionis [ Konsul ]
Regis -> więc co polecasz?
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
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.
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.
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 :]
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ć.
wydolny_pławikonik [ Konsul ]
main oznacza główną część stronki w c++
legrooch [ MPO Squad Member ]
main oznacza główną część stronki w c++
Co oznacza? I czego?
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 :)
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 :]
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