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.
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
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 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.
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 ;]
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 ^^
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.
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 :)
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!
Ś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.
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
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ą 😎
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.
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ę :)
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...
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
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
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
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!
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 ;-)
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. :)
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
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
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ą.
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ą
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ć.
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
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
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!
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
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.
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. ;)
@@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.
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
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ę!
@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ź :)
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
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
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
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ę.
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!
Mam pytanie. Dlaczego w pętli for (14:05) zapisujemy numer iteracji tablicy, skoro z założenia zaczyna się od zera? Czy moglby mi ktos to wyjasnic, prosze?
Błąd który nie wiem dlaczego autor odcinka nie miał spowodowany błąd a visual studio 2022 przy próbie inkrementacji tablicy próbuje usunąc co powoduje błąd powinnien albo o tym wspomnieć gdzieś jak to robią lub dać jakiś odcinek z poprawioną wersją . Uważajcie na ten błąd 5:00 do 10:00 gdzieś bo później będziecie się zastanawiać co się odwaliło
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ę!
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?
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.
19:10 U mnie gdy próbuje zmierzyć ze wskaźnikiem program przestaje działać. W czym problem? #include #include #include using namespace std; int ile; clock_t start, stop; double czas,czasa; int main() { cout >ile; int *tablica; tablica = new int [ile]; start=clock(); for(int i=0; i
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.
16:43 wpisałem 1000000000 (10 miliardów ) i zawiesiłem komputer. Po naciśnięciu enter nic się nie działo ale po 20 sekundach. Myszka się nie ruszała , alt+f4 też nie działał. Po prostu konsola z liczbą 10000000000 nic nie dało się zrobić. Wyłączyłem go i teraz będę włączał
Witam, chciałbym nieco zapytać. Otóż w 11:35 mówi Pan, w+=5 jest to szufladka nr 6, a gdy jest zapis w-=2 nie powinna byc szufkladka nr -1? Z góry dziękuję za odpowiedź. :)
Przede wszystkim świetny kurs, bardzo dużo się póki co nauczyłem, a jestem na niecałej połowie przecież ; 0. Bardzo dziękuje! Aczkolwiek w tym odcinku jednej rzeczy nie do końca zrozumiałem, może ktoś z obecnych na forum pomoże. Czy w programie 2, tym w którym badamy która operacja zajmie więcej czasu, w pierwszej części w jaki sposób zapełniamy tablicę wartościami? Przecież zmienna tablica jest wskaźnikiem(jest wczytana poprzez int *tablica); Więc czy pętla: "for (int i=0; i
Nobel z przekazywania wiedzy informatycznej dla Pana!!! Kazda uczelnia powinna Panu placic za obowiazkowe odtwarzanie tych materialow. Czy jest gdzies opisane double *& i double **?
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
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
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
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 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.
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
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!
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.
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 :)
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!
Ś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.
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
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
Wysiadam w połowie, zacznę chyba od początku oglądanie. ;)
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.
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.
Dla mnie jak narazie najtrudniejszy odcinek, ale takie są najlepsze.
Ten kanał to skarb narodowy
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...
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
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
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
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 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 ;-)
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 ?)
Jak zwykle Super!
Świetnie wytłumaczone jak działają wskaźniki. Dopiero teraz naprawdę je rozumiem
Pozdrawiam
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. :)
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 :) .
Jak pan mówi posłuchaj to aż chce się słuchać :P
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.
@@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!
Zatrzymałem film w połowie (przed zaczęciem pisania przykładów) i przez dwa dni zbierałem się w sobie, żeby kontynuować 😂
dla tych co wychodzi 22:30 srednia 1,2 trzeba zmienic na
Dobry odcinek, pewnie wielu ludziom wyjaśni dlaczego i jak używać wskaźników.
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
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ą.
~10:00 Świetnie wytłumaczone! Dzięki!
Dziękuję bardzo za wiedzę
Kawał dobrej roboty :D Dziękuję :)
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ą
07:20 ma być indeks: 3 w ostatnim, popraw pan panie Mirosławie
Wow, ten odcinek był wyczerpujący ;) ale jak zwykle świetny materiał!!
Udało się :) czyli wydaje mi się, że zrozumiałem :) dzięki wielkie!
5:36-6 misja terran ;p
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ć.
Tak się zainteresowałem C++, że "pożeram" pańskie odcinki. W jeden dzień przerobiłem aż 5.
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
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... ;)
Powiem to co każdy chce powiedzieć "Merci że jesteś tu"
Ś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
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?
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
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 ;)
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. ;)
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
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.
Jej nareszcie wskaźniki
dzięki, wiedziałem czym jest wskaźnik, ale teraz wiem jak mogę go zastowować :D
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
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]
Po tym odcinku z kursu odpadło 200 tys osób
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ę!
Studia informatyki na polibudzie gdańskiej pozdrawiają
ta siema xd
@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
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
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?
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
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ę.
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++?
Ten odcinek przyszedł mi łatwiej niż nr.8 :D
Mam pytanie. Dlaczego w pętli for (14:05) zapisujemy numer iteracji tablicy, skoro z założenia zaczyna się od zera? Czy moglby mi ktos to wyjasnic, prosze?
Błąd który nie wiem dlaczego autor odcinka nie miał spowodowany błąd a visual studio 2022 przy próbie inkrementacji tablicy próbuje usunąc co powoduje błąd powinnien albo o tym wspomnieć gdzieś jak to robią lub dać jakiś odcinek z poprawioną wersją . Uważajcie na ten błąd 5:00 do 10:00 gdzieś bo później będziecie się zastanawiać co się odwaliło
21:50 -> Ja bym dał unsigned :D
Uczcie się wskaźników!
Przy dziedziczeniu (polimorfiźmie) się przyda jak mało co.
Nieeeeeeeeeeeeeeeeeeeeeee
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ę!
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.
Elegancko
W 17:05 jest drobna, aczkolwiek istotna pomyłka. 2^32 bajtów jest równe 4GB, nie 2^32 bitów. :)
Pozdrawiam.
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.
8:19 no właśnie mi nie wystarcza , error: cast from 'int' to ' int' loses precision [ -fpermisive]
bardzo proszę o pomoc!
tu sie spytaj
facebook.com/groups/jaknauczycsieprogramowania/?epa=SEARCH_BOX
setting -> compiler -> other compiller options i wklej to: -fpermissive
@@xetoyt8780 Bardzo mi pomogłeś!
@@xetoyt8780 kocham cie byniu, pomogles mi
@@xetoyt8780 Dzięki złoty człowieku
19:10
U mnie gdy próbuje zmierzyć ze wskaźnikiem program przestaje działać.
W czym problem?
#include
#include
#include
using namespace std;
int ile;
clock_t start, stop;
double czas,czasa;
int main()
{
cout >ile;
int *tablica;
tablica = new int [ile];
start=clock();
for(int i=0; i
Dzięki :)
Where have you been all my life? ^^
Fantastyczny kurs, wiem że minęło milion lat ale nie wytrzymam i muszę to napisać.
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.
Super odcinek, tylko podsumowania brakło :(
Problem " cast from 'int' to ' *int' loses precision [ -fpermisive] " można również rozwiązać wpisując w nawiasie "intptr_t" zamiast "int".
reinterpret_cast(tablica) wiem data
16:43 wpisałem 1000000000 (10 miliardów ) i zawiesiłem komputer. Po naciśnięciu enter nic się nie działo ale po 20 sekundach. Myszka się nie ruszała , alt+f4 też nie działał. Po prostu konsola z liczbą 10000000000 nic nie dało się zrobić. Wyłączyłem go i teraz będę włączał
Witam, chciałbym nieco zapytać. Otóż w 11:35 mówi Pan, w+=5 jest to szufladka nr 6, a gdy jest zapis w-=2 nie powinna byc szufkladka nr -1? Z góry dziękuję za odpowiedź. :)
Raczej nie było by możliwe wejść na ujemny zakres w tablicy, wykroczył byś po za pamięć tablicy i "zassał" jakieś śmieci.
interesujące jest to że u mnie wskaźnik potrzebuje więcej czasu niż liczenie bez niego (:
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
Przede wszystkim świetny kurs, bardzo dużo się póki co nauczyłem, a jestem na niecałej połowie przecież ; 0. Bardzo dziękuje!
Aczkolwiek w tym odcinku jednej rzeczy nie do końca zrozumiałem, może ktoś z obecnych na forum pomoże.
Czy w programie 2, tym w którym badamy która operacja zajmie więcej czasu, w pierwszej części w jaki sposób zapełniamy tablicę wartościami?
Przecież zmienna tablica jest wskaźnikiem(jest wczytana poprzez int *tablica);
Więc czy pętla:
"for (int i=0; i
27:17 - proste asf
Nobel z przekazywania wiedzy informatycznej dla Pana!!! Kazda uczelnia powinna Panu placic za obowiazkowe odtwarzanie tych materialow.
Czy jest gdzies opisane double *& i double **?
witam, czy można to przetłumaczyć na język C? 6:50
Dobry odcinek. Muszę tylko napisać, że bardzo dużo tutaj jest porównań podobnych do Pasji C++ Gębosza :)