matematykaszkolna.pl
Ksiązka Dobra Ksiązka: "Język C++ szkoła programowania" Stephen Prata czy to dobra ksiązka do nauki C++.Jestem na poziomie 0.
14 maj 14:17
Dziadek Mróz: każda książka jest dobra. Ważne jest pisanie własnych programów
14 maj 14:30
Dziadek Mróz: Wejdź na http://www.SoloLearn.com i tam jest kurs C++, w aplikacji mobilnej są dodatkowo zawody 1 vs 1
14 maj 16:02
Metis: Tutorial Xion'a polecam. Unikałbym starych książek, wiele się zmienia.
14 maj 16:25
Dobra Ksiązka: dzięki Dziadek Mróz i Metis . Zaraz sprawdzę .
14 maj 18:12
Dobra Ksiązka: Tutorial Xion'a wydaje się być dobrym początkiem mojej przygody z C++
14 maj 18:22
Draghan: Dziadek Mróz: "każda książka jest dobra" − zdecydowanie się nie zgadzam. Niektóre książki są po prostu złe, inne są dobre tylko na pewnym poziomie zaawansowania czytelnika. Metis: "Tutorial Xion'a polecam. Unikałbym starych książek, wiele się zmienia." − tutorial Xiona w tej chwili też zalicza się do "starych". emotka Ale na początek może być pomocny, na jego korzyść przemawia również cena. Polecam pozycje Stroustrupa. Nie dość że (z racji tego kim jest) jest rzetelny, to jeszcze wcale nieźle pisze. Nie czytałem żadnej jego książki dla początkujących, chociaż na StackOverflow polecali tę: http://helion.pl/ksiazki/programowanie-teoria-i-praktyka-z-wykorzystaniem-c-wydanie-ii-poprawione-bjarne-stroustrup,pcppt2.htm Nie jestem tylko pewny, jak polskie "Wydanie II" ma się do oryginalnego "Second edition", a że nie reklamują na okładce "C++11 / 14", mam złe przeczucia... Generalnie Prata również Cię czegoś nauczy. http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list
14 maj 18:56
Mariusz: Ściągnąłeś już Linuksa ? Masz tam na dzień dobry dostęp do czterech języków programowania Pascal (Free Pascal) C/C++ (gcc) Java (z edytorem Eclipse) Python (ma własny interpreter) Kody C/C++ musisz pisać w edytorze tekstu jak gedit czy vim a kompilować z linii poleceń chyba że ściągniesz jakiś edytor taki jak np geany Ja pożałowałem miejsca na partycję linuksową i teraz mogę go zainstalować tylko na maszynie wirtualnej ale to już nie to samo
14 maj 19:30
Dziadek Mróz: Na linuxa machnij 50GB wolnej przestrzeni razem z katalogiem domowym, a pliki zgrywaj sobie na drugą partycję z Windowsa
14 maj 19:38
Metis: Draghan, jest darmowy.
14 maj 19:43
14 maj 19:43
Mariusz: Teraz musiałbym kopiować dane , formatować dysk i wtedy podzielić dysk na partycje i instalować obydwa systemy Na dysku u zewnętrznym zainstalowałem sobie maszynę wirtualną a na niej Linuksa Jeżeli jest na poziomie zerowym to proponuję zacząć od zainstalowania Linuksa Tam ma chyba manuala do gcc
14 maj 19:51
Dobra Ksiązka: To Linuks ma od razu wbudowany dostęp do 4 języków programowania? Właśnie pobrałem CodeBlock'a wraz z kompilatorem − (posiadamy go na komputerach w szkole).
14 maj 20:23
Dziadek Mróz: Jakiekolwiek złożone IDE jak CodeBlock, MS Studio czy Eclipse nie nauczy szukania błędów w kodzie. Dopiero po kompilacji widać błędy
14 maj 20:29
Draghan: Metis, wiem − uczyłem się z niego jakoś w 2008. emotka Dlatego napisałem, że cena jest na plus. I dlatego zwróciłem uwagę, że już trochę trąci myszką. Panowie, nie rozpędzacie się za bardzo? emotka Dobra Książka chciał(a) tylko nauczyć się języka, a nie stawiać całe środowisko developerskie, łącznie z instalowaniem dodatkowego systemu operacyjnego.
14 maj 20:30
Mariusz: Tak Linuks ma dostęp do czterech języków programowania tych co wymieniłem Pascal (Free Pascal razem z edytorem) C/C++ (gcc) Java (z edytorem Eclipse) Python (ma interpreter) Do C/C++ musiałbyś jakiś edytor ściągnąć chyba że pisałbyś w notatniku a kompilował z linii poleceń Na Linuksie wystarczyłoby pobrać sam edytor Code::Blocksa bez kompilatora tylko że Code::Blocks jest pełen błędów Na Linuksie masz też manual do gcc tylko na początku manual nie zastąpi książki bo musisz wiedzieć czego w tym manualu chcesz szukać
14 maj 20:37
Dobra Ksiązka: Bardzo serdecznie dziękuję za porady, na pewno wezmę je pod uwagę.Od przyszłego roku w 2 klasie LO będę miał początki C++, więc chciałbym przez ten okres wakacji pouczyć się tego języka.Jeszcze raz dziękuję
14 maj 20:53
Mariusz: Bez algorytmów i struktur danych dużo nie napiszesz więc poszukaj sobie jeszcze takich książek jak Cormen Leiserson Rivest Stein Introduction to algorithms (angielska wersja jest nieco lepsza według mnie) i jako uzupełnienie Wirth Algorithms + data structures=programs Zaczynasz od sortowania i wyszukiwania np sortowanie bąbelkowe sortowanie przez wstawianie sortowanie przez wybór sortowanie przez kopcowanie sortowanie przez scalanie sortowanie szybkie sortowanie plików (tutaj głównie różne wersje sortowania przez scalanie) wyszukiwanie liniowe wyszukiwanie binarne (jest szybsze ale zakłada że tablica jest posortowana) Możesz dość łatwo zrealizować kopiec na tablicy Algorytmy z powrotami skoczek hetmany sudoku Otoczka wypukła algorytm Grahama (szybszy ale nie można go uogólnić złożoność zależy od algorytmu sortującego) algorytm Jarvisa (wolniejszy ale można uogólnić) Struktury danych stos,kolejka,listy drzewa,grafy Wybrane algorytmy grafowe Cykle Eulera, najkrótsze ścieżki kolorowanie grafu Algorytmy inne jak Problem komiwojażera czy problem plecakowy Może jakieś algorytmy kryptograficzne Co do języka to najpierw zaczynasz strukturalnie np stałe, zmienne, zasięg zmiennych (zmienne globalne i lokalne) instrukcje warunkowe (if) i wyboru (switch case) instrukcje iteracyjne (for,while, do while) wskaźniki, tablice, Operacje na łańcuchach (tablicach znakowych) Zapis i odczyt do pliku rekordy i unie (struct, union) własne funkcje rekurencja Dopiero później przechodzisz do programowania obiektowego
14 maj 23:28
Metis: Code::Blocks'a nie używaj bo szkoda na niego czasu Zelent polecił to wszyscy na start, nie wiadomo po co. Od razu zaznajamiaj się z VS Community.
15 maj 00:42
Alky: Bądź co bądź C++ jest stosunkowo prosty i ma składnie podobną do wielu innych języków. Nie bez powodu zaczyna się od niego w szkołach średnich i wyższych
15 maj 01:16
Alky: A co do autora, to w 2 klasie będziesz miał/a start od totalnego 0, więc jak teraz poświęcisz trochę czasu na ogarnianie c++ to na lekcjach będziesz się zwyczajnie nudził/a. W szkole pewnie szybciej i łatwiej Ci wejdzie, bo dostaniesz wszystko na tacy, a nauczyciel Ci dokładnie objaśni co i jak, a tak sam/a się będziesz musiał/a uczyć i szukać materiałów−>poświęcisz na to więcej czasu. Nie twierdzę, że nie warto się uczyć programowania. Niektórzy zaczynają się bawić już w gimnazjum, ale ja za 2−3 mies masz mieć to samo czego teraz się nauczysz to jeśli już chcesz się uczyć warto pouczyć się czegoś innego.
15 maj 01:22
Draghan: Mariusz "wskaźniki, tablice, Operacje na łańcuchach (tablicach znakowych) rekordy i unie (struct, union)" Szlag mnie trafia, kiedy ludzie wciąż i wciąż próbują uczyć "C z klasami", nazywając to "C++". W C++ NIE UŻYWA SIĘ w kodzie produkcyjnym wskaźników (a std::unique/shared/weak ptr), tablic (std::vector, std::array...), tablic znakowych (std::string), unii (std:: optional), a "rekordy" to nic innego niż klasy z domyślnym dostępem publicznym. Nowe standardy są wprowadzane po to, by uczynić język lepszym. Łatwiejszym i bardziej ekspresywnym. Wymieniane przez Ciebie zagadnienia są ważne, ale żeby zrozumieć, jak działają mechanizmy z biblioteki standardowej i by móc potem implementować podobne rozwiązania, kiedy zajdzie taka potrzeba. A zachodzi naprawdę rzadko, bo standard ma tę część biblioteki bardzo dobrze opracowaną. Na początku nauki warto wpoić dobre nawyki współczesnego programowania, bo inaczej potem ciągnie się przez czterdzieści lat "C z klasami"... Metis − akurat C::B na start nie jest zły − prosty, darmowy, multiplatformowy. emotka Ale VS lepsze, fakt. Od siebie polecę jeszcze CLion − jeśli autor jest uczniem, to powinien móc otrzymać darmową licencję. Alky prosty to jest Python. W C++ można się natknąć na wiele pułapek, a składnia podobna do wielu innych języków to średni argument. emotka Bo skoro wiele języków ma zbliżoną składnię, to dlaczego nie wybrać innego spośród tych "wielu"? emotka Dobra Książka: w szkole raczej nie będą od Was wymagali znajomości C++ na start. Ale jestem zdania, że lepiej umieć więcej, niż mniej. Trzymam kciuki. emotka
15 maj 06:55
Metis: Swoją drogą, co tam u Ciebie draghan ? emotka Czym się zajmujesz, jak żyjesz emotka
15 maj 08:19
Mariusz: Zadanie matematyka.pisz.pl/forum/319451.html wpis Triviala Jak zamienić instrukcje skoku na pętlę ? Pytanie Czy podany przez niego pomysł nadaje się do usunięcia rekurencji z procedury przywracającej własność kopca
15 maj 12:08
jc: Mariusz, zawsze możesz zapisać bez rekurencji tylko po co? Jeśli program nie będzie działał szybciej lub nie będzie czytelniejszy to nie warto.
15 maj 12:20
Draghan: Mariusz zamiana 'goto' na pętlę jest trywialna: int tailrec(int x) { bool condition; do { something(x); condition = x < 5; if(condition) { x = x + 10; } } while(condition); return x; } Kod Triviala usuwa rekurencję ogonową − nie ma przecież znaczenia, do czego ta rekurencja jest zastosowana. Metis, a studiuję sobie jeszcze. Biorę się do pisania inżynierki. Szukam praktyk. Nic więcej ciekawego chyba się u mnie nie dzieje. emotka A co po drugiej stronie? emotka
15 maj 17:44
Mariusz: Draghan kombinowałem podobnie Tak ale chodzi o to czy aby na pewno w kodzie Cormena wywołanie rekurencyjne wykona się jako ostatnie , czy na pewno w procedurze przywracającej kopiec mamy do czynienia z rekurencją ogonową U Wirtha mamy taką procedurę procedure sift(a,l,r); label 13; var x:item; i,j:index; begin i:=l;j:=2*i;x:=a[i]; while j<=r do begin if j<r then if a[j].key <a[j+1].key then j:=j+1; if x.key>=a[j].key then goto 13; a[i]:=a[j]; i:=j;j:=2*i end; 13: a[i]:=x end; Tutaj wprowadziłem zmienną logiczną w ten sposób procedure sift(a,l,r); var x:item; i,j:index; isHeap:boolean; begin i:=l;j:=2*i;x:=a[i];isHeap:=false; while ((j<=r)and(not isHeap)) do begin if j<r then if a[j].key <a[j+1].key then j:=j+1; if not(x.key>=a[j].key) then begin a[i]:=a[j]; i:=j;j:=2*i end else isHeap:=true; end; a[i]:=x end; Wirth na swoje przykłady w Pascalu
15 maj 18:49
Mariusz: Procedurę zamieszczoną u Cormena tak zapisałem (bazując na pomyśle Triviala) procedure heapify(var A:TArray;i,heapsize:integer); var left,right,largest,save:integer; temp:TElem; begin repeat left:=2*i; right:=2*i+1; if((left<=heapsize)and(A[left]>A[i]))then largest:=left else largest:=i; if((right<=heapsize)and(A[right]>A[largest]))then largest:=right; save:=i; if(largest<>i)then begin temp:=A[i]; A[i]:=A[largest]; A[largest]:=temp; i:=largest; end; until save=largest; end; Można też było wprowadzić zmienną logiczną
15 maj 21:11
Mariusz: Sortowanie i wyszukiwanie http://wklej.org/id/3114983/
16 maj 14:11
jc: Mariusz, nie musisz kopiować całej tablicy, wystarczy połowa. Raz tylko rezerwujesz pamięć o wielkości połowy sortowanej tablicy (adres podajesz jako ostatni argument). void sklej(int *p, int *s, int *k, int *t){ int *q, *r; for( q = p, r = t; q < s; q++, r++) *r = *q; while(t < r and s < k) if(*t < *s) *(p++) = *(t++); else *(p++) = *(s++); while(t < r) *(p++) = *(t++); } void sortuj(int * p, int * k, int* t){ if( k − p <= 1) return; int * s = p + (k−p)/2 ; sortuj(p,s,t); sortuj(s,k,t); sklej(p,s,k,t); }
16 maj 16:32
Mariusz: Na dysku mam też wersję z połową tablicy Dla tablic rzeczywiście nie trzeba ale jeśli chcemy to zastosować do pliku to trzeba przekopiować cały plik Jeśli chodzi o scalanie to najlepiej działa dla list bo tam wystarczy poustawiać wskaźniki Jeżeli poeksperymentuje z sortowaniem przez wstawianie to dostanie sortowanie Shella Ciągi h0=1 hn=2hn−1+1 oraz h0=1 hn=3hn−1+1 dają złożoność O(nn) ale znany jest ciąg dający złożoność O(nlog2 n) Ciąg trzeba ustawić malejąco a wyrazy tego ciągu są mniejsze od liczby elementów tablicy którą sortujemy Mogę podrzucić skoczka i hetmany a także znalazłem funkcje do obsługi listy
16 maj 18:46
Mariusz: Pomysły jc z 16:32 są godne uwagi
16 maj 18:52
Mariusz: http://wklej.org/id/3115873/ Napisałem skoczka na podstawie kodu Nicklausa Wirtha Gdyby ktoś miał ochotę to mógłby sprawdzić czy nie ma błędów
17 maj 10:19