Trudność ze zrozumieniem - "Szkoła Programowania, C++, S. Prata"

0

Cześć, około miesiąca temu zacząłem naukę programowania w C++ na własnę rękę. Jako początkujący potrzebowałem jakiś materiałów do nauki, po krótkim researchu wybór padł na książkę pana S. Praty, do której zachęciły mnie pozytywne opnie reklamujące "Szkołę programowania" jako dobrą pozycję dla początkujących.

Początki książki (i większości rozdziałów) jak najbardziej ok, niestety coraz częściej łapię się na tym że zupełnie nie rozumiem co jest w niej napisane. Jestem około 200 strony i jest co raz trudniej, opuściłem około 15 ostatnich stron w rozdziale o wskaźnikach bo nie rozumiałem co autor miał na myśli. Czasem łapię się na tym że czytam i nie rozumiem, zdaża się że muszę przeczytac jedną stronę 5 razy i rozłożyć każde zdanie na czynniki pierwsze, aby wynieść z tego jakąś wiedzę.

Czy ta książka jet faktycznie łatwa, dla początkujących którzy nigdy nie mieli styczności z programowaniem? Może faktycznie jestem niekumaty i ta droga nie jest dla mnie?
Może macie jakies rady jak przerobić książkę, aby wynieść z niej jak najwięcej?
Czy warto omijać niektóre części rozdziałów, pozostawić trochę niejasności?
Warto uczyć się definicji na pamięć?

Pytania może głupie, ale fajnie by było gdyby ktoś się zechciał mi pomóc :)

0

skoro zaczynasz sprawdz sobie moj kurs (nie jest kompletny... staram sie pisac nowe rozdzialy jak moge)

http://fasadin.4programmers.net/

Twoje pytanie czy chcesz nauczyc sie pisac czy nauczyc sie jezyka.
Wskaznikow obecnie (w nowym c++) praktycznie sie nie uzywa (w sensie gole wskazniki). Uzywa sie do tego RAII. Jednakze wskazniki predzej czy pozniej musisz znac jezeli chcesz pisac w C++

Ja ta ksiazke czytalem (i przeczytalem). Jest dobra dla poczatkujacych, ale jest techniczna (co jest zaleta!)

Sprawdz sobie moj kurs. Zawsze mozesz pytac mnie o wyjasnienie jakiegos rozdzialu/tematu w inny/lepszy sposob

0

Wskaźniki to jeden z najtrudniejszych elementów nauki programowania. Masa osób z którymi studiowałem nie mogła załapać tego tematu przez długi czas. Książka Praty nie ma najlepszych opinii, ale jest tyle źródeł z których możesz skorzystać w kwestii wskaźników że nie musisz się do niej ograniczać.

0

Miałem to samo. Spotkałem się też z problemem zrozumienia ćwiczeń programistycznych pod koniec rozdziału, może nie tyle co napisania kodu źródłowego, ale problemu z interpretacją tych zadań.

Zamówiłem sobie książkę Bjarne Stroustrup'a "Programowanie. Teoria i praktyka z wykorzystaniem C++" i nauka idzie bardzo gładko, to jest książka dla początkujących. Jeżeli bym wiedział to na początku to właśnie od tej książki bym zaczął, a dopiero później Szkołę Programowania, którą uważam za książkę dla zaawansowanych początkujących.

W książce Stroustrupa wszystko jest lepiej wyjaśnione, ciekawsze zadania programistyczne widać, że gość ma nie tylko wiedzę techniczną ale potrafi dobrze nauczać widać to choćby po zadaniach, które są ułożone tak, że jeżeli nie wykonałbyś poprzednich zadań mógłbyś mieć problem z wykonaniem kolejnego.

0

Ja zrozumiałem wskaźniki dopiero, gdy doszedłem do wniosku, że to właśnie "w tym momencie" chyba powinienem użyć wskaźnika. A może masz jakieś konkretne pytania co do wskaźników?

0

Dziękuję Panowie za odpowiedź!

Fasadin - jak najbardziej zajrzę do Twojego kursu!
Caer - trochę mnie uspokoiłeś, może nie jestem takim tłukiem jak mi się wydaje :)
Przemol - chętnie zainwestuję w tą książkę :)
Juhas - na razie nie mam pytań co do wskaźników, myślę że odłożę ten tmat i zajmę się na razie bardziej przystępnymi rzeczami.

Ale jeżeli któryś z Was, bądź ktokolwiek zechciał by mi przezdstawić bardziej przystepnym językiem fragmetn z książki Pana Praty byłbym bardzo wdzięczny!

"PORÓWNYWNIE ŁAŃCUCHÓW W STYLU C

Załóżmy, że chcemy sprawdzić, czy napis w tablicy znakowej to mate. Jeśli nazwa tej tablicy to word, mogłoby się wydawać, że wystarczy sprawdzić nastepujący warunek:

word =="mate"

Pamiętajmy jednak, że nazwa tablicy jest równoważna jej adresowi. Analogicznie stała łańcuchowa w formie literału jest synonimem jej adresu. Zatem powyższe wyrażenie nie sprawdza, czy łańcuchy są takie same, ale czy znajdują się pod tym samym adresem. Odpowiedź jest przcząca, nawet jeśli oba łąńcuchy zawierają same znaki.
C++ obsługuje łańcuchy w stylu C jako adresy, niewiele da nam użycie do porównywania łańcuchów operatorów relacyjnych. Możemy natomiast skorzystac z biblioteki łańcuchów i porówna łańcuchy funkcją strcmp(). Funkcja ta pobiera dwa adresy łańcuchów jako parametry - adresy, zatem parametry moga byc wskaźnikami, stałymi łańcuchoowymi lub nazwami tablic znakowych. Jeśli oba łańcuchy sa identyczne, funkcja zwraca zero. Jeśli pierwszsy łańcuch w kolejności słownikowej poprzedza drugi zwraca wartość ujemną, a jeśli drugi łańcuch poprzedza pierwszy, wartość dodatnią..."

1

@obkdn
Wyjasnie jedna rzecz...
To co jest uczysz to wszystko podstawy... ale te rzeczy na dobra sprawe nie musisz wiedziec. Tak samo zeby jezdzic autem nie potrzebujesz wiedziec z czego sklada sie silnik prawda?

to co powinienes uzyc to std::string, ktore te wszystkie operacje robi za Ciebie!

Ja preferuje nauczanie w taki sposob. Najpierw naucz sie jezdzic autem (skoro chcesz zostac rajdowcem), a pozniej gdy bedziesz potrafic jezdzic rozbierz samochod na czesci i sproboj zlozyc wlasny.

To co robia wszystkie ksiazki dostepne w Polsce (nie znam ksiazki poleconej przez @PrzemolPrzemol) zaczynaja od skladania silnika... a do jazdy samochodem jeszcze dluuuuga droga.

0

Chodzi w skrócie o to, że w C łańcuchy znaków to są wskaźniki na pierwszy element łańcucha. Także stałe, np. "mate" też są wskaźnikami. I jak chcesz porównać czy jeden łańcuch jest taki sam jak drugi i zrobisz jeden == dwa to ci wyjdzie, że nie, bo on porówna, czy są pod tym samym adresem. Więc jak chcesz porównać zawartość dwóch łańcuchów (czy są takie same) to masz do tego funkcję strcmp().

0

Chodzi o to że możesz mieć dwa takie same stringi pod różnymi miejscami w pamięci i próbując porównać je operatorem == dostaniesz false, mimo że są takie same, bo nie są tym samym obiektem (stringi w cpp to obiekty czy tylko cukier na tablice charów? niech ktoś poprawi). Dlatego trzeba użyć specjalnej funkcji żeby sprawdzić faktyczną zawartość tych stringów, a nie ich adres w pamięci. To w sumie też się wiąże ze wskaźnikami.

0

Zacznij od tego, potem wróć do Praty
http://xion.org.pl/productions/texts/coding/megatutorial/

0

W momencie, jak przestajesz rozumiesz musisz męczyć przykłady, aż zrozumiesz. Niestety opuszczenie iloś stron moze spowodować, że więcej będzie rzeczy niezrozumiałych.

0

Jak ktoś nie rozumie jakiegoś tematu to lepiej żeby przewinął do przodu o kilka stron zamiast się frustrować i tracić czas.

0

Sam uczę się z Praty jak mi czas pozwala, i niektóre rozdziały czytam po 2 razy a czasami wracam od nich + szukam danych zagadnień w necie. Ale nigdy bym nie powiedział, że książka Praty jest słaba. Jest bdb. Z językiem c++ nie ma co się frustrować i próbować poznać wszystkie jego meandry na razy, tylko powoli do przodu poznawać jego części.

0

@fasadin a masz jakis wpis o tym 'po co się uczyc c++ 2 2016 roku' ? ;)

1

nie mam i nie bede mial. Pisalem juz o tym na forum. Jezeli ktos sie chce uczyc to wazne ze sie uczy. Nie wazne jakiego jezyka. Jezeli bedzie mial solidne podstawy to zmieni szybko jezyk. Nadal moim zdaniem najlepszym jezykiem zeby zaczac jest C pozniej Python pozniej co tam chcesz.

0

Aha. Ale bardziej mi chodzilo po co sie uczyc c++ jak juz sie jest doswiadczonym programista, poki co zwykla ciekawosc i pare zastosowan ale chetnie przeczytalbym taki wpis ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1