Jako, ze kurs nadal po tylu latach jest oglądany; rada dla tych ktorzy sie gubią, ktorej sam kiedys potrzebowalem przy wskaznikach: Nic na sile, jezeli nie wchodzi odpusc i pojdz dalej, po to aby wrocic tu pozniej. Przerob nawet caly kurs podstawowy, nawet kurs obiektowy. Zupelnie inaczej spojrzysz na wskazniki i referencje gdy oswoisz sie troche z programowaniem. Miej z tylu glowy "zrozumiem to w swoim czasie/wroce za jakis czas" a siłą rzeczy tak wlasnie bedzie. Przyznam, ze sam osobiscie mialem problemy z tematem alokowania pamieci, wskaznikow i referencji, az do czasu rozpoczecia pracy jako programista. Uzywalem tego co prawda bo to konieczne, znalem cala teorie, wiedzialem co, kiedy, jak i dlaczego ale robilem to troche po omacku, to musi zaskoczyc i tyle.
Jeżeli ktoś ma problem z error: cast from 'int' to ' *int' loses precision [ -fpermisive] to należy otworzyć w CodeBlocks ->Settings->Compiler->Other Compiler Options-> I tam w tym polu po prostu wpisujemy -fpermissive I będzie działało ;) Zajęło mi to kilka dni, żeby naprawić :D
@@MrTheDanthe dlatego, że kompilujesz na platforme 64bit to wskaźnik na int ma 64bit, ale sam int już 32bit. Kompilator cie ostrzega dlatego, że przy próbie rzutowania dostaniesz jakieś śmieci a nie faktyczną wartość. A co to tego rozwiązania to bez sensu jest uciszać kompilator, wystarczy zamienić int na jakiś typ 64bit, np long long, inptr_t, int64_t, itp.
Nie do końca, ale już zaczynam rozumieć. Musiałem obejrzeć ten film z parę razy, porobić odpowiednie notatki, pobrać materiały z bloga i tam po znakach // dodać odpowiednie komentarze. Pomogło. Nie przejmujcie się jeżeli nie rozumiecie, ważne aby próbować :D
Panie Mirosławie ;] Jestem zachwycony w jaki sposób przedstawia Pan zagadnienia programowania. Prosto, czytelnie i na prawdę zrozumiale. Chapeau bas! Gdyby laboratoria na moich studiach wyglądałoby w ten sposób to pewnie nie przenosiłbym się na grafikę. Oświata powinna zainteresować się tymi materiałami, a nauczyciel/wykładowca byłby tylko od sprawdzania wyników. Pozdrawiam i życzę dalszych sukcesów ;]
Dzien dobry bardzo dziekuje za lekcje z pana filmów z panem Borowiakiem z 15LO Gdańsk ulica Pilotoów 2A Kocha Pana!!!!!!!!!!!!!!! Jest Pan informatycznym depeściakiem ❤😻
Witam. Zostawiam komentarz. Chce się przebranżowić na branżę IT i idzie mi naprawdę ciężko,mało co rozumiem bo wszystko ulatuje z głowy ale nie poddaje się. Będę się starał do końca,znajdę swoją pierwszą pracę w branży IT. Dziękuję że są ludzie tacy jak Pan. Pozdrawiam
+Kami LPM wielkie dzięki! chyba z pół godziny jak nie dłużej się z tym głowiłem i przeszukiwałem fora szukając odpowiedzi na treść błędu XDD jeszcze raz dzięki ^^
Świetnie prowadzony kurs, nareszcie zwięzłe wytłumaczenie skąd się wszystko bierze a nie jak to często bywa rób tak i koniec. Jakby jeszcze pod filmami były zestawy zadań do zrobienia to praktycznie byłoby wszystko aby utrwalić sobie podstawy.
Panie Miroslawie, dziekuje za podana Wiedze, za Wyjasnienie Tematu i Przedstawienie go w taki cudowny Sposob! :D Mi zostaje Praktywowac dana Wiedze dalej na Forach, Stronach, tworzac nowe wlasne Programy. Zrozumialem duzo a choc co z Programowaniem zaczolem. Dziekuje jeszcze raz i prosze o wiecej Materialow!
Wróciłem z ciekawości do starszych odcinków - jak ten, kiedy zaczynałem swoją naukę z programowaniem. Panie Mirku to tu słucha się o wiele lepiej, niż odcinki robione teraz. Głos jakby bardziej naturalny i nie ma muzyczki, która rozprasza. Pozdrawiam serdecznie i dziękuję za pomoc przy starcie :)
kiedyś nie zrozumiałem tego tematu co spowodowało, że opuściłem naukę C++. minęło pół roku, wróciłem do tego filmika i planuję kontynuować swoją drogę z tym językiem. Nie dajcie się za wygraną 😎
dokładnie rok temu zacząłem się uczyć programować. Doszedłem bardzo dawno temu do wskaźników i stwierdziłem że nie potrzebne mi są, ale zacząłem programowanie obiektowe i polimorfizm to wskaźniki bardzo są potrzebne do tego, nie rozumiałem tego tematu i wróciłem do proceduralnego od zera znowu. Teraz mogę powiedzieć, że rozumiem wskaźniki tylko trzeba poświęcić na to trochę czasu
Pamiętam kiedyś nawet zacząłem uczyć się Cplusa krok po kroku jakiś kurs i fajnie mi szło, praktycznie wszystko rozkminiałem aż doszedłem do wskaźników właśnie, które okazały się ścianą i końcem mojej nauki...
Witam. Uważam, że robi pan kawał dobrej roboty! Nie chodzi mi tylko o kurs, który zapewne wielce pomaga ludziom takim jak ja, a mam tu na myśli niedoszłych techników informatyków. Przeglądałem testy z kwalifikacji E12, świetna sprawa. Jeżeli pojawią się testy z pozostałych kwalifikacji będę wniebowzięty. Szacunek za to co pan robi.
W okolicach 6:50 jest chyba błąd - przy 'tablica' : tablica = new int [ile] nie ma gwiazdki, bo nie chodzi nam o tego na co wskazuje wskaźnik (a chodzi o adres własnie). Poprawcie mnie jesli się mylę. Pozdrowienia.
ja nie mogę ! 10 odcinek za mną rozumiem wszystko a robię to w 8 klasie Panie Mirosławie naprawde panu dziękuje wiem że raczej pan tego nie zobaczy (film opublikowany był 5 lat temu) ale po prostu mam takie wrazenie ze moze jednak jakos pan to odczyta
Oczywiście. Nie znam ani jednego zawodowego programisty C/C++ który nie uczył się na książkach Jerzego Grębosza. I jak widać Panu Mirosławowi również jest ona nie obca ;-)
Na prawde gratuluje za chec jak i za poswiecenie czasu ktory pan poswiecil robiac ten kurs !! Szczerze mowiac do tego odcinka rozumialem wszystko tylko tu musialem powtorzyc filmik :p
Jeżeli masz błąd kompilacji w 8:27: Masz masz komputer 64 bit i konwersja (int)tablica ci nie zadziała. Zamieniłem ten zapis na reinterpret_cast(tablica) i poszło Proszę doświadczonych programistów o odpowiednie wytłumaczenie tego zagadnienia, ja się dopiero uczę :)
Dziwne, zrozumienie tego nie sprawiło mi aż takich trudności na jakie się nastawiłem, natomiast w poprzednich filmach tej serii, gdy coś powinno być łatwe (ponieważ Pan Zelent tłumaczył to prostymi słowami i bez większych przykładów), nie zrozumiałem kilka rzeczy do końca, nie czuję tego, że to dobrze przepracowałem i będę musiał jeszcze do poprzednich części wrócić. Każdy najwidoczniej jest inny, ale najważniejsze, żeby każdy to miał na prawdę w głowie. Zaczynałem się martwić, czy ten kurs to będzie tylko teoria i przykłady. Bałem się, że będę musiał szukać ćwiczenia, dla samodzielnego tworzenia, w internecie, ale na szczęście wspomniał Pan, że niedługo czeka mnie praktyka. Dziękuję jak zawsze!
Witam, do kursu C++ podchodzę nie po raz pierwszy w swoim życiu i mam nadzieję, że nie ostatni. Pan Mirosław prowadzi mnie przez moje studia Informatyki, gdzie programować po prostu trzeba umieć i nie ma czasu na tyle poświęcenia ile [pan Mirosław] wkłada w dbałość o zrozumienie u uczniów. Odcinek ze wskaźnikami początkowo był dla mnie przerażający, ale teraz jestem już w miarę oswojony z tematem i nie boję się tej wiedzy. Pozwoliłem sobie zamieścić komentarz ze względu na drobny problem, który napotkałem podczas kompilacji kodu w CodeBlocks na swojej maszynie. W momencie 8:20 "Po prostu int w nawiasach, to wystarczy", okazało się, że u mnie nie wystarczy. Kompilator narzekał, że nie otworzy programu, bo: error: cast from 'int*' to 'int' loses precision [-fpermissive]| Jako, że jako przyszły informatyk jestem leniwy to zrezygnowalem z badania przyczyn tego bledu i zastosowalem u siebie rozwiązanie alternatywne: Zamiast tej linii: cout
Powróciłem drugi raz do tego odcinka, ponieważ miałem problemy ze zrozumieniem. Teraz z czystym sumieniem mogę powiedzieć, że rozumiem zastosowanie wskaźnika oraz zaczynam potrafić go używać. Dzięki ***** :) Niech RAM będzie z tobą
Trudny temat, ale bardzo podoba mi się programowanie i im trudniej tym bardziej jestem nim zainteresowany. 3 raz oglądałem ten odcinek i dopiero dotarło do mnie jak się robi wskaźniki. Tak poza tematem, to bardzo podobają mi się kursy, jakie pan przygotowuje dla początkujących. :)
Panie Mirosławie, świetny kurs. Polecam go każdemu kto chce zacząć przygodę z programowaniem. Bardzo za niego dziękuję. Osobiście robię kurs jednocześnie z podręcznikiem "C++. Przewodnik dla początkujących" Alexa Allain. Dla mnie połączenie kursu i książki jest świetną praktyką, jak czegoś nie rozumiem to uzupełnię to w książce lub kursie. Po skończeniu książki i Pana kursu czeka Java :) Pozdrawiam.
wykupiony mam kurs na stronie javastart.pl + książki "rusz głową JAVA wyd.II" oraz "JAVA Podstawy wyd. IX". Po tym jak dobrze ogarnę podstawy to biorę się za JavaEE
Chciałbym Mirku serdecznie podziekować. To jak prowadzisz ten kurs to mistrzostwo. Musisz wiedziec, że dzieki temu kursowi pomagasz wielu ludziom. Oczywiście subskrypcja i lajk pod każdym przeanalizowanym filmem. Ja też mam szacunek do twojego czasu ,wiec pozdrawiam i lece do Code Blocka. ;)
Czytam akurat książkę "Symfonia C++" i przez problemy ze zrozumieniem tego trudnego tematu jakim są wskaźniki zajrzałem tutaj... ktoś tu chyba czytał książkę Grębosza i posługuje się użytymi przez niego przykładami :D I słusznie, bo są bardzo dobre!
Robiłem jakiś czas temu jakiś kurs C++ i właśnie do wskaźników doszedłem i na tym zakończyłem kurs... ;) Poza napisanie prostego programiku liczącego zużycie paliwa albo cenę danej wagi lub objętości np. złota i podobne żenady - nie wyszedłem. Co ciekawe z programiku liczącego zużycie paliwa nawet korzystam... ;)
Świetny odcinek! Tak jak wspomniałeś, nie jest to łatwy temat. Od piątego odcinka zastanawiałem się jak można na początku programu liczącego średnią ustalić ilość ocen, które komputer ma policzyć do średniej. Udało mi się rozszerzyć program liczący średnią o wpisanie ilości ocen do policzenia. Jeśli kogoś to zainteresowało, proszę sprawdzić i ewentualnie wprowadzić jakieś poprawki :) #include using namespace std; int ile; float oceny=1; float suma=0, srednia; int main() { cout
4 podejścia do tego odcinka a i tak nie do końca załapałem. Niby rozumiem co to i po co to ale jak zaczynasz tego używać to już jest trudniej... No nic, potrzeba praktyki :D
Panie Mirosławie: ma Pan rzadki dar mówienia o rzeczach trudnych w prosty sposób. Proszę kontynuować nagrywanie kursów, bo są rewelacyjne. Mogę tylko napisać: bardzo dziękuję.
Jeśliby ktoś miał problem z błędem wyskakującym przy delete(w Visual studio to "debugbreak") 8:36 to nie można dodawać inkrementacji w linijce 18(w filmie), zamiast tego proponuje wykasowanie tej linijki i stworzenie wskaźnika lokalnego dla pętli i przypisaniu mu adresu konkretnej komórki pamięci która ma się wyświetlić int* p = &arr[i]; Oto cały kod: int main() { int number; std::cout > number; int * arr = new int[number]; for (int i = 0; i < number; i++) { int* p = &arr[i]; std::cout
Dla tych co używają XCode. Zamiast (int) stosujcie (uintptr_t) i delete nie będzie działał dopóki tablica nie będzie miała pierwotnej wartości, czyli tablica=tablica-ile; delete [] tablica; żeby uniknąć powrotu do pierwotnej wartości stosuje się podobno zapis tablicowy w pętli for . Jak się douczę to zrobie edit!
13:52 - i to mnie BARDZO myliło: po co deklarować wskaźnik, jeśli w pierwszej części programu go nie używamy - po co linie 12 i 13, skoro wystarczyłoby int tablica[ile]?
8:21 - u mnie "rzutowanie zmiennej na typ int" nie działa, otrzymuję komunikat : "|error: cast from 'int*' to 'int' loses precision [-fpermissive]| - o co chodzi?
to jest uproszczona wersja wypisywania, według standardów jedyna gwarantowana opcja wypisywania adresów to printf("%p", wskaznik). Z drugiej strony jak dasz kompilatorowi opcję -fpermissive to on zwyczajnie to zignoruje i zadziała tak jak jest w wideo.
@@kthmhg jak chcesz zrobić dokładnie jak w wideo to tak, ale to jak się daje dodatkowe argumenty do kompilatora to już zależy od twojego środowiska (czy Visual Studio czy Eclipse czy CodeBlocks). alternatywnie zamień to co jest w wideo na printf("%p", wskaznik); ^ różnica w powyższym to to %p które jest specjalnie do wskaźników podczas gdy autor wideo używa %d (chyba) które jest ogólnie do liczb
12:29 "Nazwa tablicy jest jednocześnie adresem jej zerowego elementu", ja bym powiedział inaczej: Adres tablicy zaczyna się od tego samego bajta co adres zerowowego elementu tablicy. - Myślę, że to łatwiej zrozumieć. No i w = &tablica to wskaźnik na całą tablicę, a w = tablica to wskaźnik na zerowy element tablicy. Normalnie ten adres to 4 bajty, bo to typ int, ale może być więcej np jeśli się zaznaczy adres całej tablicy, a nie tylko że ma wskazywać tablicę w ogóle, niekoniecznie całą. Nie jest to wcale takie trudne, tylko trzeba wiedzieć.
Chciałbym powiedzieć że jest to najlepszy kurs jaki znalazłem w polsce. :) dzięki Panu w końcu zaczynam coś rozumieć... do tej pory czytając książki było to bardzo ciężkie do zrozumienia, a tu jest o wiele wiele lepiej. Przydałyby się jeszcze tylko jakieś zadania do zrobienia w PDF + zrobione ("odpowedzi") zad by móc sprawdzić czy poanalizować kod. Bo jak wiadomo tylko praktyka i samowolne wklepywanie kodu i różnych przypadków może nauczyć. Bo tak to nie wiem jak ćwiczyć jeszcze te odcinki. Wtedy było by naprawdę super! i mam nadzieje że mógłby Pan coś takiego w przyszłości dodać... dziekuje
Zadanie mam także w Symfonii C++, ale tam muszę stronę parę razy przeczytać, aby zrozumieć, tutaj miałem tak z odczytem/zapisem do pliku, ale chodziło raczej o to, że nie do końca rozumiałem pętlę for. Po raz kolejny dziękuję za świetny kurs i proszę o kontynuację!
Taki tip na przyszłe filmy Mówienie z góry że coś jest trudne jeszcze bardziej utrudnia naukę. Zazwyczaj działa tu efekt placebo, uczący się wmawia sobie że coś jest trudne i rzeczywiście, nauka nawet najprostszych rzeczy sprawia mu problem. Nie mówię żeby nie zwracać uwagi na bardziej skomplikowane działy języka ale robić to w sposób mniej straszący coś w stylu "Dzisiaj prosiłbym cię o większe skupienie się" czy "Wskaźniki są trochę bardziej złożone, wymagają więcej twojej uwagi". I jeszcze ten obrazek na początku mówiący "BĘDZIESZ ŚLĘCZAŁ NAD TYM GODZINAMI !" xd
Nie jest to pierwszy filmik tylko, któryś z kolei - przez cały kurs jest mówione, że C++ jest prosty, tylko wymaga ćwiczeń. Myślę, że warto mówić jakie są realia, a jeśli ktoś doszedł do tego etapu to po usłyszeniu czegoś takiego bardziej go to podbuduje na zasadzie "kurczę, ale jestem dobry - inni już pewnie dawno odpadli" ;) Obrazek wskazuje na wymóg analitycznego myślenia, jeśli kogoś to przeraża to traci tu czas bo nie odnajdzie się w programowaniu.
Powiedział że to trudne i dał mi szansę żebym się nie poddawała bo jestem początkująca i muszę to wpoić poprzez oglądanie kilka razy i ćwiczenia (o czym mowa pod koniec) W przeciwnym wypadku pomyślałabym że ze mną jest coś nie tak i poddałabym się ;)
Dla mnie zdecydowanie jest to najtrudniejszy dotychczas odcinek... Ale nie dam się:D:D Panie Mirosławie kiedy będą następne odcinki PHP? Bo nie ukrywam, że C++ to dla mnie wstęp do dalszej nauki PHP.
@@91TheSebastian Według mnie C++ to bardzo dobry, lecz wymagający wstęp do daleszej nauki programowania. Uczy myślenia i samokontroli przy pisaniu kodu. C++ nie prowadzi za rękę i nie wybacza błędów. Traktuje programistę jako osobę rozumną, pozwala na wiele rzeczy i daje duże pole manewru programiście. Co do PHP, na twoim miejscu darowałbym PHP. Obecnie mało kto wykorzystuje PHP w projektach komercyjncyh, wiele projektów opiera się teraz o Node.js
@@blowmanPL ja traktuje c++ tylko jako wstęp, ale potem chce uderzyć w Javę i w przyszłym roku zrobić wszystko żeby się dostać na juniora. Nie miałem wcześniej nic wspólnego z IT i od kilku miesięcy samodzielnie się ucze
Film nie jest zły ale, 19:10 nie do końca prawda jeżeli chodzi o obecne kompilatory, obecnie kompilator po dodaniu dyrektywy O2/O3 może poradzić sobie nawet lepiej mając tablice zamiast wskaźników. Przykłady z filmu generuje praktycznie identyczne czasy dla tablic i wskaźników po dodaniu O2. 24:31 nie referencje tylko wskaźnik :) 25:04 wypada dodać że jeżeli zmienimy wartość zmiennych w funkcji to zmienią się poza nią.
Wydaje mi się, że do 8m23s w przykładzie jest kilka błędów. Tj. bezpośrednie zwiększanie wskaźnika poprzez "tablica++" skutkuje tym, że po wyjściu z pętli tablica będzie wynosiła wartość końcowego adresu + 4 bajty (int), w C++11 funkcja "delete [] tablica" zwróci błąd "invalid poitner". lepszym rozwiązaniem jest cout
Przy tym programie drugim patrzę i w plikach też jest błąd możecie mieć problem że nie wyświetla wam się czas ze wskaźnikiem wystarczy usunąć kod ten pierwszy delete[] tablica; a ten drugi zostawić i git pozdrawiam
Mam problem z debugowaniem kodu, który rozwiązałem. Obecnie sam przerabiam cały kurs pracując w Microsoft Visual Studio, ale jeśli coś mi nie działa to sprawdzam kod jeszcze w CodeBlocks. Spowodowany był on błędem w linijce 33 oraz 34. 33 tablica = new int[ile]; 34 int *wskaznik = tablica; Dokładnie wygląda to tak jak w filmiku, ale po pobraniu materiałów zauważyłem, że w Pana kodzie te dwie linijki są zamienione. Satysfakcja z rozwiązania problemu jest spora :D Coraz bardziej lubię studiować kody i znajdować w nich błędy ^^ Dajcie znać jeśli ktoś miał ten sam problem :D
Panie Mirku, dziękuję za wykłady! Mistrzostwo świata! Jednak zaproponowany kod w liniach 33 i 34 generuje mi błąd: "exited with code -1073741819". Zamiast tego wpisałem int* wskaznik= new int[ile]; I taka linia działa. Kontynuuję naukę!
W 21 minucie funkcja wykorzystuje przekazanie danych poprzez wskaźnik, a nie referencję. Dla zmiennych podstawowych: srednia (float x) - przez wartość srednia (float &x) - przez referencje srednia (float *x) - przez wskaznik Dla tablic mamy: srednia (float tab[]) - przez referencje srednia (float *tab) - przez wskaznik
Witam. Napisałem program do liczenia czasu pracy operacji na wskaźnikach i bez nich i co zaobserwowałem to to, że 8/10 przypadków czas pracy na wskaźnikach jest większy. Zdziwiło mnie to mocno. Raczej zrobiłem wszystko dobrze, na początku pomyślałem, że może nie wyzerowałem zegara, ale zeruje. Zauważyłem też, że jeżeli nie zrobię delete wcześniejszej tablicy, to czas ten znacznie się skraca i wyniki są porównywalne(procentowo) do tego co obserwowałem na filmiku. Pozdrawiam
Mam tak samo. A kod skopiowałem ze strony więc nie ma mowy o błędzie z mojej strony. Pytanie jakiego używasz kompilatora, frameworka itd. I czy masz system 32- czy 64 bitowy.
Przydatne przy programowaniu uC np AVR, 32kb miejsca na program i 2 kb ramu :D jakis czas temu stworzyłem rejestrator parametrow sieci pneumatycznej na Atmega 328p (cisnienie punkt rosy itp.) ale ile sie nakombinowalem z kodem zeby sie w ramie utrzymac to masakra :D ale rejestratorek smiga i ma nawet easteregg'a :D
@@UgaGeguga Uważasz że arytmetyka gołych wskaźników jest dobrą praktyką w c++? Tak samo jak dziś, 5 lat temu też to nie było dobre. W żadnym dobrym kursie dla początkujących takiego czegoś nie ma, bo to wprowadza tylko zamieszanie. Ten kurs był przestarzały nawet wtedy gdy powstawał, nie ma w nim prawie nic ze standardu c++ 11, a już był..., o STLu też nic nie wspomniał, chociażby o kontenerach albo podstawowych algorytmach.
Jeśli ktoś ma problem z tym, że po zakończeniu programu wywala błąd, to na forum pasja informatyki jest odpowiedź - inkrementujemy wskaźnik pokazujący na tablicę, a nie samą tablicę (kod na dole kom). A jeśli ktoś ma problem z cout
Dzięki za odpowiedź! Właśnie miałam z tym problem na ubuntu. Ale znalazłam dla siebie jeszcze prostsze rozwiązanie, po prostu przypisałam wartość NULL do wskaźnika *tablica przed jej usunięciem (tablica = NULL;), bez potrzeby tworzenia *wskaźnika.
Czy czasem w 12:39 nie ma błędu? Przypisując adres zerowego indeksu tablicy nie powinniśmy użyć w = tablica? Na filmie jest że zamiast w=&tablica[0] mozemy uzyc w= &tablica.
@Mirosław Zelent Czy przestawienie wskaźnika tablica w przykładzie pokazanym w 8:10 i później podanie go przy operatorze delete spowoduje prawidłowe usunięcie tablicy z pamięci ? Co przyjmuje delete[ ] ? adres początku tablicy, czy obojętne jaki adres ale w obszarze zaalokowanym przez new ? Jak można sprawdzić czy pamięć została pomyślnie usunięta ? z góry dzięki za odpowiedź :)
siemniak No nie powinno być zero, bo dopóki nie przypiszesz zmiennym wartości, to one mają randomowe wartości. Spróbuj sobie zadeklarować tablicę bez inicjowania jej wartości i odczytuj po kolei jej elementy.
A propos zadania domowego: W konsoli śmiga, aż miło. Natomiast SPOJ niestety odrzuca kod jako błędny. Czuje się zawiedziony i nie wiem tylko, czy ja gdzieś popełniłem błąd, czy sędzia kalosz... Poniżej wklejam kod: #include #include using namespace std; int test,ileob,suma=0; double ileciawpa; int main() { cin>>test; for (int i=0; i>ileob>>ileciawpa; int *czasnacia = new int [ileob]; for (int i=0; i>czasnacia[i]; } int *ilecianadob = new int [ileob]; for (int i=0; i
14:09 - nie rozumiem czemu w jednej linijce deklarujesz że tablica[i]= i a w następnej dodajesz 50 - dlaczego nie zrobić tego w jedenj linii: tab [i]=i+50?
Znalazlem rozwiazanie bledu z kodu z filmiku. Bylo na stronie Pana Miroslawa na forum : "W linii 33 kodu porównującego czas następuje przypisanie zmiennej wskaznik obiektu tablica, który został właśnie usunięty, i zostaje ponownie zdefiniowany dopiero w następnej linii. W skrócie wydaje mi się, że linie 33 i 34 powinny być zamienione miejscami, jak ma to miejsce w kodzie dołączonym do odcinka. "
Nawet przy krojeniu cebuli nie wylałem tylu łez co podczas nauki C++.
Jako, ze kurs nadal po tylu latach jest oglądany;
rada dla tych ktorzy sie gubią, ktorej sam kiedys potrzebowalem przy wskaznikach:
Nic na sile, jezeli nie wchodzi odpusc i pojdz dalej, po to aby wrocic tu pozniej. Przerob nawet caly kurs podstawowy, nawet kurs obiektowy. Zupelnie inaczej spojrzysz na wskazniki i referencje gdy oswoisz sie troche z programowaniem. Miej z tylu glowy "zrozumiem to w swoim czasie/wroce za jakis czas" a siłą rzeczy tak wlasnie bedzie.
Przyznam, ze sam osobiscie mialem problemy z tematem alokowania pamieci, wskaznikow i referencji, az do czasu rozpoczecia pracy jako programista. Uzywalem tego co prawda bo to konieczne, znalem cala teorie, wiedzialem co, kiedy, jak i dlaczego ale robilem to troche po omacku, to musi zaskoczyc i tyle.
chyba nie mam innego wyboru niż posłuchanie się twojej rady dzięki ;)
Dokladnie tak jest, ze wszytskim trudniejszym w programowaniu, sam wiem z doswiadczenia, kolega ma swieta racje! :D
Ale jutro kolos
Jeżeli ktoś ma problem z error: cast from 'int' to ' *int' loses precision [ -fpermisive] to należy otworzyć w
CodeBlocks ->Settings->Compiler->Other Compiler Options-> I tam w tym polu po prostu wpisujemy -fpermissive
I będzie działało ;) Zajęło mi to kilka dni, żeby naprawić :D
wow dzięki :>
mi tylko pare minut znalezienie Twojego komentarza, dzieki za oszczedzony czas :)
DZIĘKUJĘ
a ktoś wie o co chodzi z tym błędem dlaczego w ogóle się pojawia ?
@@MrTheDanthe dlatego, że kompilujesz na platforme 64bit to wskaźnik na int ma 64bit, ale sam int już 32bit. Kompilator cie ostrzega dlatego, że przy próbie rzutowania dostaniesz jakieś śmieci a nie faktyczną wartość. A co to tego rozwiązania to bez sensu jest uciszać kompilator, wystarczy zamienić int na jakiś typ 64bit, np long long, inptr_t, int64_t, itp.
Nie do końca, ale już zaczynam rozumieć. Musiałem obejrzeć ten film z parę razy, porobić odpowiednie notatki, pobrać materiały z bloga i tam po znakach // dodać odpowiednie komentarze. Pomogło.
Nie przejmujcie się jeżeli nie rozumiecie, ważne aby próbować :D
Panie Mirosławie ;] Jestem zachwycony w jaki sposób przedstawia Pan zagadnienia programowania. Prosto, czytelnie i na prawdę zrozumiale. Chapeau bas!
Gdyby laboratoria na moich studiach wyglądałoby w ten sposób to pewnie nie przenosiłbym się na grafikę.
Oświata powinna zainteresować się tymi materiałami, a nauczyciel/wykładowca byłby tylko od sprawdzania wyników.
Pozdrawiam i życzę dalszych sukcesów ;]
Gdzie studiowałeś? Jeśli nie jest to tajemnicą? :D
@@heniekhenkowski411 To chyba była jednak tajemnica
@@InvisibleConfusion pewnie jakaś wysoko-rangowa polibuda
@Gunnar Dustin Zamknij się baranie jesteś w Polsce to po polsku mów
@@bougahh a co jeśli nie jest w Polsce, kimkolwiek on był? To chyba nie PRL że się wyjeżdża z kraju za pozwoleniem od łaskawej władzy
Dzien dobry bardzo dziekuje za lekcje z pana filmów z panem Borowiakiem z 15LO Gdańsk ulica Pilotoów 2A Kocha Pana!!!!!!!!!!!!!!! Jest Pan informatycznym depeściakiem ❤😻
Jeżeli macie błąd to przez 32 bitowego inta, należy go zmienic na 64 bitowego np. long long int.
-> cout
dzieki niech bóg bedzie z toba
dziękuję gościu
mistrzuniu
wielkie dzięki szefie
Dzięki
Witam. Zostawiam komentarz. Chce się przebranżowić na branżę IT i idzie mi naprawdę ciężko,mało co rozumiem bo wszystko ulatuje z głowy ale nie poddaje się. Będę się starał do końca,znajdę swoją pierwszą pracę w branży IT. Dziękuję że są ludzie tacy jak Pan. Pozdrawiam
18:38 linijki 33 i 34 powinny być zamienione :)
+Kami LPM wielkie dzięki! chyba z pół godziny jak nie dłużej się z tym głowiłem i przeszukiwałem fora szukając odpowiedzi na treść błędu XDD jeszcze raz dzięki ^^
+Michał Klemiato Nie ma sprawy, powodzenia! :)
+Kami LPM no i dzięki wielkie!
nie pozdrawiam wszystkich tych fifarafa programistow tutaj
Ale mnie pozdrawiasz? :D
+Kami LPM Nie pozdrawiam jeszcze konfidentów, wszystkich pozostałych pozdrawiam!
Świetnie prowadzony kurs, nareszcie zwięzłe wytłumaczenie skąd się wszystko bierze a nie jak to często bywa rób tak i koniec. Jakby jeszcze pod filmami były zestawy zadań do zrobienia to praktycznie byłoby wszystko aby utrwalić sobie podstawy.
Panie Miroslawie, dziekuje za podana Wiedze, za Wyjasnienie Tematu i Przedstawienie go w taki cudowny Sposob! :D
Mi zostaje Praktywowac dana Wiedze dalej na Forach, Stronach, tworzac nowe wlasne Programy. Zrozumialem duzo a choc co z Programowaniem zaczolem.
Dziekuje jeszcze raz i prosze o wiecej Materialow!
Wróciłem z ciekawości do starszych odcinków - jak ten, kiedy zaczynałem swoją naukę z programowaniem. Panie Mirku to tu słucha się o wiele lepiej, niż odcinki robione teraz. Głos jakby bardziej naturalny i nie ma muzyczki, która rozprasza. Pozdrawiam serdecznie i dziękuję za pomoc przy starcie :)
Wysiadam w połowie, zacznę chyba od początku oglądanie. ;)
kiedyś nie zrozumiałem tego tematu co spowodowało, że opuściłem naukę C++.
minęło pół roku, wróciłem do tego filmika i planuję kontynuować swoją drogę z tym językiem.
Nie dajcie się za wygraną 😎
Żaden poradnik mi nie pomógł ze wskaźnikami dopóki nie znalazłem tego.WYTłumaczone IDEALnie
dokładnie rok temu zacząłem się uczyć programować. Doszedłem bardzo dawno temu do wskaźników i stwierdziłem że nie potrzebne mi są, ale zacząłem programowanie obiektowe i polimorfizm to wskaźniki bardzo są potrzebne do tego, nie rozumiałem tego tematu i wróciłem do proceduralnego od zera znowu. Teraz mogę powiedzieć, że rozumiem wskaźniki tylko trzeba poświęcić na to trochę czasu
Pamiętam kiedyś nawet zacząłem uczyć się Cplusa krok po kroku jakiś kurs i fajnie mi szło, praktycznie wszystko rozkminiałem aż doszedłem do wskaźników właśnie, które okazały się ścianą i końcem mojej nauki...
Witam. Uważam, że robi pan kawał dobrej roboty! Nie chodzi mi tylko o kurs, który zapewne wielce pomaga ludziom takim jak ja, a mam tu na myśli niedoszłych techników informatyków. Przeglądałem testy z kwalifikacji E12, świetna sprawa. Jeżeli pojawią się testy z pozostałych kwalifikacji będę wniebowzięty. Szacunek za to co pan robi.
Dla mnie jak narazie najtrudniejszy odcinek, ale takie są najlepsze.
W okolicach 6:50 jest chyba błąd - przy 'tablica' :
tablica = new int [ile]
nie ma gwiazdki, bo nie chodzi nam o tego na co wskazuje wskaźnik (a chodzi o adres własnie). Poprawcie mnie jesli się mylę.
Pozdrowienia.
Ten kanał to skarb narodowy
ja nie mogę ! 10 odcinek za mną rozumiem wszystko a robię to w 8 klasie Panie Mirosławie naprawde panu dziękuje wiem że raczej pan tego nie zobaczy (film opublikowany był 5 lat temu) ale po prostu mam takie wrazenie ze moze jednak jakos pan to odczyta
Jak słucham tego co Pan mówi to przypomina się pewien rozdział z Symfonii c++ :)
Oczywiście. Nie znam ani jednego zawodowego programisty C/C++ który nie uczył się na książkach Jerzego Grębosza. I jak widać Panu Mirosławowi również jest ona nie obca ;-)
Na prawde gratuluje za chec jak i za poswiecenie czasu ktory pan poswiecil robiac ten kurs !!
Szczerze mowiac do tego odcinka rozumialem wszystko tylko tu musialem powtorzyc filmik :p
Jeżeli masz błąd kompilacji w 8:27:
Masz masz komputer 64 bit i konwersja (int)tablica ci nie zadziała. Zamieniłem ten zapis na reinterpret_cast(tablica) i poszło
Proszę doświadczonych programistów o odpowiednie wytłumaczenie tego zagadnienia, ja się dopiero uczę :)
dzieki za info, sprawdze teżmam ten blad.
cout
XD przerabiajac ten kurs czuje sie jak wojownik
Dziwne, zrozumienie tego nie sprawiło mi aż takich trudności na jakie się nastawiłem, natomiast w poprzednich filmach tej serii, gdy coś powinno być łatwe (ponieważ Pan Zelent tłumaczył to prostymi słowami i bez większych przykładów), nie zrozumiałem kilka rzeczy do końca, nie czuję tego, że to dobrze przepracowałem i będę musiał jeszcze do poprzednich części wrócić. Każdy najwidoczniej jest inny, ale najważniejsze, żeby każdy to miał na prawdę w głowie. Zaczynałem się martwić, czy ten kurs to będzie tylko teoria i przykłady. Bałem się, że będę musiał szukać ćwiczenia, dla samodzielnego tworzenia, w internecie, ale na szczęście wspomniał Pan, że niedługo czeka mnie praktyka. Dziękuję jak zawsze!
Jak pan mówi posłuchaj to aż chce się słuchać :P
Witam,
do kursu C++ podchodzę nie po raz pierwszy w swoim życiu i mam nadzieję, że nie ostatni. Pan Mirosław prowadzi mnie przez moje studia Informatyki, gdzie programować po prostu trzeba umieć i nie ma czasu na tyle poświęcenia ile [pan Mirosław] wkłada w dbałość o zrozumienie u uczniów. Odcinek ze wskaźnikami początkowo był dla mnie przerażający, ale teraz jestem już w miarę oswojony z tematem i nie boję się tej wiedzy. Pozwoliłem sobie zamieścić komentarz ze względu na drobny problem, który napotkałem podczas kompilacji kodu w CodeBlocks na swojej maszynie. W momencie 8:20 "Po prostu int w nawiasach, to wystarczy", okazało się, że u mnie nie wystarczy. Kompilator narzekał, że nie otworzy programu, bo:
error: cast from 'int*' to 'int' loses precision [-fpermissive]|
Jako, że jako przyszły informatyk jestem leniwy to zrezygnowalem z badania przyczyn tego bledu i zastosowalem u siebie rozwiązanie alternatywne:
Zamiast tej linii:
cout
tez tak mam
Zatrzymałem film w połowie (przed zaczęciem pisania przykładów) i przez dwa dni zbierałem się w sobie, żeby kontynuować 😂
Powróciłem drugi raz do tego odcinka, ponieważ miałem problemy ze zrozumieniem. Teraz z czystym sumieniem mogę powiedzieć, że rozumiem zastosowanie wskaźnika oraz zaczynam potrafić go używać.
Dzięki ***** :)
Niech RAM będzie z tobą
ja już wracam 4 :/
Ja też nie ogarniam :( trudny odcinek..
Niech RAM będzie z Tobą
Dobry odcinek, pewnie wielu ludziom wyjaśni dlaczego i jak używać wskaźników.
Fakt wskaźniki są ciężkie, ale trochę pracy i można działać!
wow Wiśnia nie wiedziałem, że programujesz :D
SZTUCZNA GŁUPIA WIŚNIA PODRÓBKA WIŚNI TA KTÓRA ROBI CIEKAWOSTKI
MardesPL Najpierw bartekzbartek (Wiśnia)
MardesPL Boxdel to gowno
Nareszcie znalazłem kanał prawdziwego wiśni :-D ! (Nagrasz jakiś film o programowaniu XD ?)
Dziękuję bardzo za wiedzę
Świetnie wytłumaczone jak działają wskaźniki. Dopiero teraz naprawdę je rozumiem
Pozdrawiam
Powiem to co każdy chce powiedzieć "Merci że jesteś tu"
Trudny temat, ale bardzo podoba mi się programowanie i im trudniej tym bardziej jestem nim zainteresowany. 3 raz oglądałem ten odcinek i dopiero dotarło do mnie jak się robi wskaźniki. Tak poza tematem, to bardzo podobają mi się kursy, jakie pan przygotowuje dla początkujących. :)
Tak się zainteresowałem C++, że "pożeram" pańskie odcinki. W jeden dzień przerobiłem aż 5.
Kawał dobrej roboty :D Dziękuję :)
Panie Mirosławie, świetny kurs. Polecam go każdemu kto chce zacząć przygodę z programowaniem. Bardzo za niego dziękuję.
Osobiście robię kurs jednocześnie z podręcznikiem "C++. Przewodnik dla początkujących" Alexa Allain. Dla mnie połączenie kursu i książki jest świetną praktyką, jak czegoś nie rozumiem to uzupełnię to w książce lub kursie. Po skończeniu książki i Pana kursu czeka Java :) Pozdrawiam.
I jak tam idzie ;D?
Już lecę z Javą :)
A z czego się uczysz? Z jakiś książek czy kursów w sieci?
wykupiony mam kurs na stronie javastart.pl + książki "rusz głową JAVA wyd.II" oraz "JAVA Podstawy wyd. IX". Po tym jak dobrze ogarnę podstawy to biorę się za JavaEE
Jak zwykle Super!
Chciałbym Mirku serdecznie podziekować. To jak prowadzisz ten kurs to mistrzostwo. Musisz wiedziec, że dzieki temu kursowi pomagasz wielu ludziom. Oczywiście subskrypcja i lajk pod każdym przeanalizowanym filmem. Ja też mam szacunek do twojego czasu ,wiec pozdrawiam i lece do Code Blocka. ;)
Czytam akurat książkę "Symfonia C++" i przez problemy ze zrozumieniem tego trudnego tematu jakim są wskaźniki zajrzałem tutaj... ktoś tu chyba czytał książkę Grębosza i posługuje się użytymi przez niego przykładami :D I słusznie, bo są bardzo dobre!
i jak, programujesz dalej?
Wow, ten odcinek był wyczerpujący ;) ale jak zwykle świetny materiał!!
~10:00 Świetnie wytłumaczone! Dzięki!
Robiłem jakiś czas temu jakiś kurs C++ i właśnie do wskaźników doszedłem i na tym zakończyłem kurs... ;) Poza napisanie prostego programiku liczącego zużycie paliwa albo cenę danej wagi lub objętości np. złota i podobne żenady - nie wyszedłem. Co ciekawe z programiku liczącego zużycie paliwa nawet korzystam... ;)
Udało się :) czyli wydaje mi się, że zrozumiałem :) dzięki wielkie!
dla tych co wychodzi 22:30 srednia 1,2 trzeba zmienic na
Świetny odcinek! Tak jak wspomniałeś, nie jest to łatwy temat. Od piątego odcinka zastanawiałem się jak można na początku programu liczącego średnią ustalić ilość ocen, które komputer ma policzyć do średniej. Udało mi się rozszerzyć program liczący średnią o wpisanie ilości ocen do policzenia. Jeśli kogoś to zainteresowało, proszę sprawdzić i ewentualnie wprowadzić jakieś poprawki :)
#include
using namespace std;
int ile;
float oceny=1;
float suma=0, srednia;
int main()
{
cout
4 podejścia do tego odcinka a i tak nie do końca załapałem. Niby rozumiem co to i po co to ale jak zaczynasz tego używać to już jest trudniej... No nic, potrzeba praktyki :D
dzięki, wiedziałem czym jest wskaźnik, ale teraz wiem jak mogę go zastowować :D
Panie Mirosławie: ma Pan rzadki dar mówienia o rzeczach trudnych w prosty sposób. Proszę kontynuować nagrywanie kursów, bo są rewelacyjne. Mogę tylko napisać: bardzo dziękuję.
Jej nareszcie wskaźniki
7:21 Kolejne indeksy to 0, 1, 2 i 4? Wiem, czepiam się szczegółów, ale znalezienie błędu w Pańskim poradniku to sztuka :) .
Jeśliby ktoś miał problem z błędem wyskakującym przy delete(w Visual studio to "debugbreak") 8:36 to nie można dodawać inkrementacji w linijce 18(w filmie), zamiast tego proponuje wykasowanie tej linijki i stworzenie wskaźnika lokalnego dla pętli i przypisaniu mu adresu konkretnej komórki pamięci która ma się wyświetlić
int* p = &arr[i];
Oto cały kod:
int main()
{
int number;
std::cout > number;
int * arr = new int[number];
for (int i = 0; i < number; i++) {
int* p = &arr[i];
std::cout
Po tym odcinku z kursu odpadło 200 tys osób
5:36-6 misja terran ;p
Dla tych co używają XCode.
Zamiast (int) stosujcie (uintptr_t) i delete nie będzie działał dopóki tablica nie będzie miała pierwotnej wartości, czyli
tablica=tablica-ile;
delete [] tablica;
żeby uniknąć powrotu do pierwotnej wartości stosuje się podobno zapis tablicowy w pętli for . Jak się douczę to zrobie edit!
douczyłeś się?
@@kollyr5524 juz nawet nie pamietam o co chodziło i nie robie w C++ 🥹
@@2233igor wróciłeś do C++?
Studia informatyki na polibudzie gdańskiej pozdrawiają
ta siema xd
13:52 - i to mnie BARDZO myliło: po co deklarować wskaźnik, jeśli w pierwszej części programu go nie używamy - po co linie 12 i 13, skoro wystarczyłoby
int tablica[ile]?
Ten odcinek przyszedł mi łatwiej niż nr.8 :D
Oo nawet przykład z Symfonii C++ :D
Where have you been all my life? ^^
Fantastyczny kurs, wiem że minęło milion lat ale nie wytrzymam i muszę to napisać.
8:21 - u mnie "rzutowanie zmiennej na typ int" nie działa, otrzymuję komunikat : "|error: cast from 'int*' to 'int' loses precision [-fpermissive]| - o co chodzi?
to jest uproszczona wersja wypisywania, według standardów jedyna gwarantowana opcja wypisywania adresów to printf("%p", wskaznik). Z drugiej strony jak dasz kompilatorowi opcję -fpermissive to on zwyczajnie to zignoruje i zadziała tak jak jest w wideo.
@@supersonictumbleweed Mam to samo, jak "dasz kompilatorowi opcję -fpermissive" to zrobić?
@@kthmhg jak chcesz zrobić dokładnie jak w wideo to tak, ale to jak się daje dodatkowe argumenty do kompilatora to już zależy od twojego środowiska (czy Visual Studio czy Eclipse czy CodeBlocks).
alternatywnie zamień to co jest w wideo na printf("%p", wskaznik);
^ różnica w powyższym to to %p które jest specjalnie do wskaźników podczas gdy autor wideo używa %d (chyba) które jest ogólnie do liczb
@@supersonictumbleweed Dobra śmiga, dzięki wielkie (Dla tych co to będą czytać, trzeba zastąpić cały wers z cout wersem : printf("%p",tablica); )
Dzięki Wielkie Panom!
07:20 ma być indeks: 3 w ostatnim, popraw pan panie Mirosławie
12:29 "Nazwa tablicy jest jednocześnie adresem jej zerowego elementu", ja bym powiedział inaczej: Adres tablicy zaczyna się od tego samego bajta co adres zerowowego elementu tablicy. - Myślę, że to łatwiej zrozumieć. No i w = &tablica to wskaźnik na całą tablicę, a w = tablica to wskaźnik na zerowy element tablicy. Normalnie ten adres to 4 bajty, bo to typ int, ale może być więcej np jeśli się zaznaczy adres całej tablicy, a nie tylko że ma wskazywać tablicę w ogóle, niekoniecznie całą. Nie jest to wcale takie trudne, tylko trzeba wiedzieć.
Chciałbym powiedzieć że jest to najlepszy kurs jaki znalazłem w polsce. :) dzięki Panu w końcu zaczynam coś rozumieć... do tej pory czytając książki było to bardzo ciężkie do zrozumienia, a tu jest o wiele wiele lepiej. Przydałyby się jeszcze tylko jakieś zadania do zrobienia w PDF + zrobione ("odpowedzi") zad by móc sprawdzić czy poanalizować kod. Bo jak wiadomo tylko praktyka i samowolne wklepywanie kodu i różnych przypadków może nauczyć. Bo tak to nie wiem jak ćwiczyć jeszcze te odcinki. Wtedy było by naprawdę super! i mam nadzieje że mógłby Pan coś takiego w przyszłości dodać... dziekuje
Zadanie mam także w Symfonii C++, ale tam muszę stronę parę razy przeczytać, aby zrozumieć, tutaj miałem tak z odczytem/zapisem do pliku, ale chodziło raczej o to, że nie do końca rozumiałem pętlę for. Po raz kolejny dziękuję za świetny kurs i proszę o kontynuację!
Taki tip na przyszłe filmy
Mówienie z góry że coś jest trudne jeszcze bardziej utrudnia naukę.
Zazwyczaj działa tu efekt placebo, uczący się wmawia sobie że coś jest trudne i rzeczywiście, nauka nawet najprostszych rzeczy sprawia mu problem. Nie mówię żeby nie zwracać uwagi na bardziej skomplikowane działy języka ale robić to w sposób mniej straszący coś w stylu "Dzisiaj prosiłbym cię o większe skupienie się" czy "Wskaźniki są trochę bardziej złożone, wymagają więcej twojej uwagi".
I jeszcze ten obrazek na początku mówiący "BĘDZIESZ ŚLĘCZAŁ NAD TYM GODZINAMI !" xd
Wiktor Poprawski zgadzam się w 100%
Funkcje np były jednymi z prostrzych elementów poradnika, a przecież pan Mirosław tyle przed nimi ostrzegał...
ekhm... Ja uważam, że lepiej ostrzec przed trudnym tematem niż abym siedział i zastanawiał się "czy tylko ja tego nie kumam?"
Nie jest to pierwszy filmik tylko, któryś z kolei - przez cały kurs jest mówione, że C++ jest prosty, tylko wymaga ćwiczeń. Myślę, że warto mówić jakie są realia, a jeśli ktoś doszedł do tego etapu to po usłyszeniu czegoś takiego bardziej go to podbuduje na zasadzie "kurczę, ale jestem dobry - inni już pewnie dawno odpadli" ;) Obrazek wskazuje na wymóg analitycznego myślenia, jeśli kogoś to przeraża to traci tu czas bo nie odnajdzie się w programowaniu.
Powiedział że to trudne i dał mi szansę żebym się nie poddawała bo jestem początkująca i muszę to wpoić poprzez oglądanie kilka razy i ćwiczenia (o czym mowa pod koniec) W przeciwnym wypadku pomyślałabym że ze mną jest coś nie tak i poddałabym się ;)
Dla mnie zdecydowanie jest to najtrudniejszy dotychczas odcinek... Ale nie dam się:D:D Panie Mirosławie kiedy będą następne odcinki PHP? Bo nie ukrywam, że C++ to dla mnie wstęp do dalszej nauki PHP.
z perspektywy czasu myslisz, ze C++ jako wstep do PHP to byl dobry pomysł?
@@91TheSebastian Według mnie C++ to bardzo dobry, lecz wymagający wstęp do daleszej nauki programowania. Uczy myślenia i samokontroli przy pisaniu kodu. C++ nie prowadzi za rękę i nie wybacza błędów. Traktuje programistę jako osobę rozumną, pozwala na wiele rzeczy i daje duże pole manewru programiście. Co do PHP, na twoim miejscu darowałbym PHP. Obecnie mało kto wykorzystuje PHP w projektach komercyjncyh, wiele projektów opiera się teraz o Node.js
@@blowmanPL ja traktuje c++ tylko jako wstęp, ale potem chce uderzyć w Javę i w przyszłym roku zrobić wszystko żeby się dostać na juniora. Nie miałem wcześniej nic wspólnego z IT i od kilku miesięcy samodzielnie się ucze
@@blowmanPL aktualnie nie lepiej isc w pythona wydaje mi sie że to bardzo rozwojowy język?
Film nie jest zły ale,
19:10 nie do końca prawda jeżeli chodzi o obecne kompilatory, obecnie kompilator po dodaniu dyrektywy O2/O3 może poradzić sobie nawet lepiej mając tablice zamiast wskaźników. Przykłady z filmu generuje praktycznie identyczne czasy dla tablic i wskaźników po dodaniu O2.
24:31 nie referencje tylko wskaźnik :)
25:04 wypada dodać że jeżeli zmienimy wartość zmiennych w funkcji to zmienią się poza nią.
Wystarczy dobrze się skupić i wszystko zrozumiesz ;)
Wydaje mi się, że do 8m23s w przykładzie jest kilka błędów. Tj. bezpośrednie zwiększanie wskaźnika poprzez "tablica++" skutkuje tym, że po wyjściu z pętli tablica będzie wynosiła wartość końcowego adresu + 4 bajty (int), w C++11 funkcja "delete [] tablica" zwróci błąd "invalid poitner". lepszym rozwiązaniem jest cout
Przy tym programie drugim patrzę i w plikach też jest błąd możecie mieć problem że nie wyświetla wam się czas ze wskaźnikiem wystarczy usunąć kod ten pierwszy delete[] tablica; a ten drugi zostawić i git pozdrawiam
Mam problem z debugowaniem kodu, który rozwiązałem.
Obecnie sam przerabiam cały kurs pracując w Microsoft Visual Studio, ale jeśli coś mi nie działa to sprawdzam kod jeszcze w CodeBlocks.
Spowodowany był on błędem w linijce 33 oraz 34.
33 tablica = new int[ile];
34 int *wskaznik = tablica;
Dokładnie wygląda to tak jak w filmiku, ale po pobraniu materiałów zauważyłem, że w Pana kodzie te dwie linijki są zamienione.
Satysfakcja z rozwiązania problemu jest spora :D Coraz bardziej lubię studiować kody i znajdować w nich błędy ^^
Dajcie znać jeśli ktoś miał ten sam problem :D
dokładnie ten sam problem u mnie wystąpił, dobrze że trafiłem na twój komentarz
Panie Mirku, dziękuję za wykłady! Mistrzostwo świata! Jednak zaproponowany kod w liniach 33 i 34 generuje mi błąd: "exited with code -1073741819".
Zamiast tego wpisałem
int* wskaznik= new int[ile];
I taka linia działa.
Kontynuuję naukę!
10 odc. za mną. :) Dzięki.
W 21 minucie funkcja wykorzystuje przekazanie danych poprzez wskaźnik, a nie referencję.
Dla zmiennych podstawowych:
srednia (float x) - przez wartość
srednia (float &x) - przez referencje
srednia (float *x) - przez wskaznik
Dla tablic mamy:
srednia (float tab[]) - przez referencje
srednia (float *tab) - przez wskaznik
Czas zapisu (bez wskaznika): 1.109
Czas zapisu (ze wskaznikiem): 1.042 wow
Przy większej ilości danych różnice widać lepiej
Ale jak masz duży program to różnice są większe
interesujące jest to że u mnie wskaźnik potrzebuje więcej czasu niż liczenie bez niego (:
21:50 -> Ja bym dał unsigned :D
Uczcie się wskaźników!
Przy dziedziczeniu (polimorfiźmie) się przyda jak mało co.
Nieeeeeeeeeeeeeeeeeeeeeee
Dzięki :)
Witam. Napisałem program do liczenia czasu pracy operacji na wskaźnikach i bez nich i co zaobserwowałem to to, że 8/10 przypadków czas pracy na wskaźnikach jest większy. Zdziwiło mnie to mocno. Raczej zrobiłem wszystko dobrze, na początku pomyślałem, że może nie wyzerowałem zegara, ale zeruje. Zauważyłem też, że jeżeli nie zrobię delete wcześniejszej tablicy, to czas ten znacznie się skraca i wyniki są porównywalne(procentowo) do tego co obserwowałem na filmiku. Pozdrawiam
Mam tak samo. A kod skopiowałem ze strony więc nie ma mowy o błędzie z mojej strony. Pytanie jakiego używasz kompilatora, frameworka itd. I czy masz system 32- czy 64 bitowy.
Elegancko
Dobry odcinek. Muszę tylko napisać, że bardzo dużo tutaj jest porównań podobnych do Pasji C++ Gębosza :)
Tylko skąd wiemy, w której komórce znajduje się wartość z mierników?
(26:00)
Musi działać program, który będzie sczytywał z magistrali to, co czujnik wysyła, więc nie jest to dla komputera/programisty wiedza tajemna
5:05 nie dokońca po prostu deklaracje możemy zrobić po wyznaczeniu N i wyglądało to by tak long double fib[n]
Super odcinek, tylko podsumowania brakło :(
Najlepiej zainwestowane pół godziny dzisiejszego dnia.
Przydatne przy programowaniu uC np AVR, 32kb miejsca na program i 2 kb ramu :D jakis czas temu stworzyłem rejestrator parametrow sieci pneumatycznej na Atmega 328p (cisnienie punkt rosy itp.) ale ile sie nakombinowalem z kodem zeby sie w ramie utrzymac to masakra :D ale rejestratorek smiga i ma nawet easteregg'a :D
8:12 Dlaczego nie można tutaj użyć w pętli for cout
można, nawet trzeba, ten jego kod to jakaś porażka, miesza c z c++ i uczy złych praktyk
@@Ev3r0x Bo to jest poradnik z 5 lat i wtedy te "złe praktyki" nie były złymi praktykami
@@UgaGeguga Uważasz że arytmetyka gołych wskaźników jest dobrą praktyką w c++? Tak samo jak dziś, 5 lat temu też to nie było dobre. W żadnym dobrym kursie dla początkujących takiego czegoś nie ma, bo to wprowadza tylko zamieszanie. Ten kurs był przestarzały nawet wtedy gdy powstawał, nie ma w nim prawie nic ze standardu c++ 11, a już był..., o STLu też nic nie wspomniał, chociażby o kontenerach albo podstawowych algorytmach.
Jeśli ktoś ma problem z tym, że po zakończeniu programu wywala błąd, to na forum pasja informatyki jest odpowiedź - inkrementujemy wskaźnik pokazujący na tablicę, a nie samą tablicę (kod na dole kom). A jeśli ktoś ma problem z cout
Dzięki za podpowiedź, właśnie tego szukałem. Mam farta, że akurat wczoraj to napisałeś :D
dzięki!
Dzięki za odpowiedź! Właśnie miałam z tym problem na ubuntu. Ale znalazłam dla siebie jeszcze prostsze rozwiązanie, po prostu przypisałam wartość NULL do wskaźnika *tablica przed jej usunięciem (tablica = NULL;), bez potrzeby tworzenia *wskaźnika.
@@karo_one_breath ale wtedy nic nie usuwasz (wyciek pamięci)
Dzięki. Mi wywalało błąd na koncu programi
Czy czasem w 12:39 nie ma błędu?
Przypisując adres zerowego indeksu tablicy nie powinniśmy użyć w = tablica?
Na filmie jest że zamiast w=&tablica[0] mozemy uzyc w= &tablica.
+Andrzej Wrzosek włącz adnotacje :)
+hg song , faktycznie :D Mam wyłączone bo przeważnie są wkurzające ;)
@Mirosław Zelent
Czy przestawienie wskaźnika tablica w przykładzie pokazanym w 8:10 i później podanie go przy operatorze delete spowoduje prawidłowe usunięcie tablicy z pamięci ?
Co przyjmuje delete[ ] ? adres początku tablicy, czy obojętne jaki adres ale w obszarze zaalokowanym przez new ? Jak można sprawdzić czy pamięć została pomyślnie usunięta ? z góry dzięki za odpowiedź :)
Masz rację: stackoverflow.com/questions/6420329/can-i-delete-a-pointer-that-points-into-an-allocated-array-but-not-to-the-sta
11:58 "Mniejszy o 8 bajtów" jak coś.. kto słucha ten wie, ale żeby się nikomu nie pomyliło... : )
Pozdrawiam Politechnikę Lubelską
Mam pytanie może trochę dzwine. Około 8:30 minuty tworzymy tą tablice. Chciałem sobie zobaczyć co będzie jeśli dam cout
siemniak No nie powinno być zero, bo dopóki nie przypiszesz zmiennym wartości, to one mają randomowe wartości. Spróbuj sobie zadeklarować tablicę bez inicjowania jej wartości i odczytuj po kolei jej elementy.
A propos zadania domowego:
W konsoli śmiga, aż miło. Natomiast SPOJ niestety odrzuca kod jako błędny. Czuje się zawiedziony i nie wiem tylko, czy ja gdzieś popełniłem błąd, czy sędzia kalosz... Poniżej wklejam kod:
#include
#include
using namespace std;
int test,ileob,suma=0;
double ileciawpa;
int main()
{
cin>>test;
for (int i=0; i>ileob>>ileciawpa;
int *czasnacia = new int [ileob];
for (int i=0; i>czasnacia[i];
}
int *ilecianadob = new int [ileob];
for (int i=0; i
Niepotrzebne jest przypisanie wskaźnika do wskaźnika: int *wskaznik=tablica;
Można było użyć od razu: *tablica=i; *tablica+=50; tablica++;
14:09 - nie rozumiem czemu w jednej linijce deklarujesz że tablica[i]= i a w następnej dodajesz 50 - dlaczego nie zrobić tego w jedenj linii: tab [i]=i+50?
Też tego nie rozumiem.
Znalazlem rozwiazanie bledu z kodu z filmiku. Bylo na stronie Pana Miroslawa na forum : "W linii 33 kodu porównującego czas następuje przypisanie zmiennej wskaznik obiektu tablica, który został właśnie usunięty, i zostaje ponownie zdefiniowany dopiero w następnej linii. W skrócie wydaje mi się, że linie 33 i 34 powinny być zamienione miejscami, jak ma to miejsce w kodzie dołączonym do odcinka. "