dwad
eight: jc, to dziadek mroz
15 mar 23:10
Dziadek Mróz: skucha
16 mar 09:15
Alky: Całe życie w klamstwie
16 mar 10:43
Mariusz:
Ja bym tego nie obstawiał
Gdy przejrzysz ich wpisy zauważysz że się różnią
Wpisy jc są ostatnio typu
"Ale to przecież jest opisane w dziesiątkach miejsc ..."
a Dziadek czasami coś konkretnego napisze
16 mar 11:02
Mariusz:
Gdybyś miał dostęp do IP tych użytkowników to łatwiej mógłbyś to stwierdzić
16 mar 11:04
eight: obaj potrafią cpp, ale tylko jeden się wypowiada konkretnie − zagrywka celowa, bo jako jc musi
rządzić twardą ręką, a jako dziadek mróz pozwala sobie trochę wyluzować
16 mar 14:34
Alky: Wiele osób potrafi teraz c++ na stosunkowo dobrym poziomie. Jest to jeden z bardziej
powiedzialbym podstawowych języków programowania. Az z ciekawości porównałem posty obu i
wydaje mi się, że trochę jednak różnią sie sposobem wypowiedzi + kilka innych różnic takich
jak używanie kolorów emotek etc. Co ma.znaczyć "zarządzać twardą ręką"? To forum, a nie urząd
miasta
A nawet jeśli... Niech się bawi. Dramy się zachciało...
16 mar 18:29
Alky: Zresztą jakiś czas temu metis zadawal kilka pytań odnosnie c++ na które odpowiadali glownie jc
i Dziadek. Czesto przeplatali sie w jednym poscie. Cos nie wydaje mi sie zeby powazny facet
mający juz trochę lat chciałby sie bawić i gadać sam ze sobą z 2 kont pod pytaniem...
16 mar 18:32
Adamm: to jest spisek, to trzeba do prokuratury zgłosić
16 mar 18:51
eight: zartowalem, ale przypomnialy mi się posty Mariusza i jc, i tak sobie myslalem XD, że moze
utworzyc sobie osobne konto do pisania programikow w cpp
16 mar 18:54
eight: Utworzył*
16 mar 18:54
Alky: I ja tak myślę Adam. Na pewno znajdzie się na to paragraf
16 mar 19:08
Mariusz:
eight chcesz się nauczyć programować
Oni cię nie nauczą a ja ani nie jestem programistą ani nie mam metodyki nauczania
Proponuję abyś zajął się programowaniem i algorytmami i strukturami danych jednocześnie
Jeżeli chodzi o algorytmy i struktury danych to kod źródłowy w jakimś języku programowania
to tylko jeden ze sposobów zapisu algorytmu więc zanim nie poznasz podstaw jakiegoś
języka programowania np Pascal lub C to możesz zająć się takimi tematami jak
Schematy blokowe
Pseudokod
Analiza algorytmu
Złożoność obliczeniowa (czasowa i pamięciowa)
Jedne z pierwszych algorytmów to
wyszukiwanie i sortowanie
Wyszukiwanie liniowe i binarne,
binarne zakłada że ciąg jest posortowany
Sortowania
z tych działających przez porównanie kluczy najważniejsze to
sortowanie bąbelkowe
(na zasadzie zamiany sąsiednich elementów)
sortowanie przez wstawianie
(aby wstawić wybrany element w odpowiednie miejsce przesuwasz wcześniejsze elementy)
sortowanie przez wybór
(wybierasz pierwszy element tablicy i wyszukujesz minimum dla pozostałej części tablicy
a następnie zamieniasz minimum z wybranym elementem
wybierasz drugi element i wyszukujesz minimum dla pozostałej części tablicy
a następnie zamieniasz minimum z wybranym elementem
powyższe kroki wykonujesz dopóki ta reszta tablicy nie będzie pusta)
Sortowanie stogowe
(Konstruujesz drzewo binarne spełniające własność kopca (rodzic większy od dzieci)
drzewo zapełniasz od lewej do prawej, nie może być tak że elementy wkładasz tylko
do jednej gałęzi
zamieniasz korzeń z ostatnim elementem kopca, zmniejszasz rozmiar kopca
przywracasz własność kopca, kontynuujesz do rozebrania kopca)
Sortowanie przez scalanie
(Dzielisz tablicę na dwie prawie równe części dla nieparzystej liczby
elementów różnią się one co najwyżej o jeden element
sortujesz każdą z części osobno i scalasz dwie posortowane części tablicy
Jeśli chodzi o procedurę scalającą to
kopiujesz elementy sortowanej tablicy do tablicy pomocniczej
a następnie ustawiasz jeden indeks na początek tablicy drugi n środek tablicy
trzeci na początek sortowanej tablicy i dopóki obydwie części pomocniczej tablicy
nie są puste wybierasz mniejszy element i zwiększasz indeks tej części tablicy
w której on się znajdował , indeks sortowanej tablicy zwiększasz z każdą iteracją
po wyczerpaniu elementów z jednej części tablicy kopiujesz pozostałe
elementy z drugiej tablicy)
Sortowanie szybkie
(Wybierasz sobie element dzielący
jedni wybierają pierwszy element sortowanego przedziału , inni ostatni ,
w przykładach Pascala wybrali środkowy , jeszcze inni biorą losowy element
Przenosisz elementy mniejsze od elementu dzielącego na lewo a
elementy większe od elementu dzielącego na prawo
Powstałe w ten sposób przedziały sortujesz w rekurencyjnie
Można zapisać w jednej procedurze Pascale mają przykład)
Z sortowań przez porównanie elementów to już wszystkie z tych ważniejszych
Są jeszcze sortowania bez porównań ale wymagają pewnych założeń
co do sortowanego ciągu
Temat o sortowaniach można uzupełnić o sortowanie plików
Tutaj najlepiej sprawdzają się różne warianty sortowania przez scalanie
a algorytmy sortowania tablic mogą być przydatne jedynie do przygotowania
początkowych serii
otoczka wypukła
(algorytm Jarvisa − na ogół wolniejszy ale możliwy do uogólnienia
algorytm Grahama − wymaga sortowania, szybszy ale działa tylko dla płaszczyzny)
N hetmanów, Droga skoczka, Sudoku
(Algorytmy z powrotami)
Struktury danych
Do tej pory poznałeś kilka algorytmów na tablicy
teraz poznasz struktury takie jak
stos, kolejka, listy, drzewa, grafy
Stos, kolejkę,listy,drzewa
Struktury te składają się z rekordów które zawierają blok danych
oraz wskaźniki na element poprzedni i następny
Grafy skierowany i nieskierowany (zbiór krawędzi i wierzchołków)
masz macierz sąsiedztwa i tablicę list
Omów jakiś wybrany algorytm grafowy
Z matematyki przyda ci się logika np do konstruowania
instrukcji warunkowych i iteracyjnych,
algebra liniowa z geometrią np do grafiki
analiza matematyczna np do analizy algorytmów
z dyskretnej rachunek różnicowy i rekurencja
16 mar 21:17
eight: Dzięki, no właśnie mam taki cel, ponieważ zajęcia wymuszają niejako na mnie naukę c++. Na razie
nie wiem o czym tam pisałeś w swoich postach, ale już muszę zacząć się go uczyć, bo nie zdam
egzaminu. Dzięki za radę, mieliśmy tylko wstęp do algorytmów.
16 mar 21:21
Mariusz:
Z programowanie proponowałbym zająć się najpierw programowaniem strukturalnym
stałe, zmienne i ich zasięg, typy, instrukcje warunkowe i wyboru
instrukcje iteracyjne,tablice,rekordy,wskaźniki,dynamiczna allokacja pamięci,
podprogramy (procedury i funkcje) , rekurencja , obsługa plików
W Pascalu masz moduły (unit) w C możesz podzielić program na pliki np plik nagłówkowy
i plik z ciałami funkcji
Dla Windows możesz pisać też DLL
Możesz też pobawić się grafiką − środowiska borlanda miały w katalogu bgi moduł do grafiki
Dopiero po opanowaniu podstaw programowania strukturalnego rozpoczynasz zabawę
z programowaniem obiektowym
16 mar 21:55
Mariusz:
Do algorytmów dobrą książką może być wprowadzenie do algorytmów Cormena i reszty
Pseudokody ma stosunkowo łatwe do zapisania w języku programowania
Tablice ma indeksowane od jedynki
Co do sortowań to sortowanie bąbelkowe pominął ,
w procedurze scalającej niepotrzebnie dał wartowników
i zamiast jednej tablicy pomocniczej dał dwie
W sortowaniu przez kopcowanie procedurę przywracającą kopiec napisał rekurencyjnie
Sortowanie szybkie rozbił na funkcję partycjonującą i procedurę sortującą
oraz w funkcji partycjonującej dał nieskończoną pętlę z której wyskakiwanie następuje
przy zwracaniu wartości
Wg mnie lepiej wygląda ta procedura z przykładów Pascala
Wg mnie gorzej sprawdza się książka Niklausa Wirtha Algorytmy + struktury danych=programy
ale np temat sortowania uzupełniony jest o sortowanie danych w pliku
Możesz obejrzeć też Algorytmy i struktury danych Diksa i Ryttera
Jeśli chodzi o środowiska borlandowskie to miały one jako taką pomoc
a devy czy inne code blocksy pomocy nie mają ,
do Free Pascala trzeba oddzielnie instalować pomoc
Jeśli korzystasz z Linuksa to pewnie masz zainstalowanego jakiegoś manuala do gcc
16 mar 23:02
KKrzysiek: Uważam, że książka Cormena( third edition ) jest to aktualnie jedna z lepszych pozycji.
Polecam.
16 mar 23:07
KKrzysiek: Może dlatego, że m.in. pseudokod jest dla mnie BARDZO CZYTELNY niż taki przykład zapisany
typowo w Pascalu
16 mar 23:08
Mariusz:
Z książek do C++ jedyne polskie to te Grębosza Symfonia C++ oraz Pasja C++
reszta to jedynie przekłady (głównie z angielskiego)
Tutaj ktoś inny powinien ci coś polecić
Manual jest dobry gdybyś chciał poznać działanie jakiejś funkcji
17 mar 09:12
Dziadek Mróz:
A z praktyki to Notepad++ (FingrText, NppExec) i MinGW−w64.
Żadne IDE nie nauczy szukania błędów w kodzie
17 mar 15:33
Adamm: szczerze mówiąc to nawet zwykły notatnik wystarczy do pisania kodu
17 mar 15:38
Adamm: oczywiście, nie polecam, mówię tylko że można
17 mar 15:40
Metis: Gorąco
nie polecam nauki języka programowania z polskich książek
17 mar 15:57
KKrzysiek: A jak tak, ale to z jednej.
17 mar 16:01
KKrzysiek: Tytuł został podany wyżej. Ofc dotyczy tylko cpp.
17 mar 16:02
Mariusz:
Z polskich książek o cpp to ta Grębosza reszta to przekłady
Z algorytmów tylko ta Diksa i Ryttera może nie być przekładem
Krzysiek a masz więcej polskich książek o cpp niż te Grębosza
(w Pasji ma też trochę o algorytmach)
Z notatnikiem trzeba wychodzić do linii poleceń i tam kompilować i konsolidować kod
a jak jeszcze zapomni zachować zmiany to cały kod lub znaczna jego część przepadnie
Przyda się zapisywanie algorytmów rekurencyjnych w sposób iteracyjny
zwłaszcza gdy może przyśpieszyć działanie algorytmu lub gdy można
zwolnić pamięć potrzebną na rekurencję
W przypadku sortowań można zapisać w sposób iteracyjny sortowanie stogowe
(które u Cormena zapisane jest rekurencyjnie)
oraz sortowanie przez scalanie bo w tych przypadkach do
usunięcia rekurencji wystarczy instrukcja iteracyjna
Oszczędność pamięci może nie jest zbyt duża ale
np sortowanie przez scalanie można wtedy wykorzystać np do sortowania plików
Jeżeli chodzi o tzw szybkie sortowanie to procedura bez wywołań rekurencyjnych
mogłaby cię zainteresować w celu uniknięcia przepełnienia stosu
bo ani nie przyspieszysz algorytmu ani nie zaoszczędzisz pamięci
usuwając rekurencję w tym przypadku
Możesz łatwo usunąć rekurencję z funkcji matematycznych jak
silnia i symbol Newtona
ciąg Fibonacciego
algorytm Euklidesa
Wymuszają na nim naukę C++ ?
To on nie jest na informatyce
18 mar 10:28