_Koszmarny_ sposob na obliczenie stanu konta zasilonego
w 2010 roku czterema kilozlotymi (albo inna waluta)
na 10% rocznie. Interesuje Cie kwota w roku 2020,
czyli 4000*1.1^20, niecale 27kzl.
U kogo to znalazles?
pozdrawiam
bartekltg
To zobaczcie też mój ulubiony kod i odgadnijcie co on robi :)
int zagadka(
float dane[DATA_SIZE] ,
const int select[MAX_STAN],
const float values_min[MAX_STAN],
const float values_max[MAX_STAN],
const float new_stan_true[MAX_STAN],
const float new_value_true[MAX_STAN],
const int pos_true[MAX_STAN],
const int new_stan_false[MAX_STAN],
const float new_value_false[MAX_STAN],
const int pos_false[MAX_STAN],
const int response[MAX_STAN])
{
int i,stan = 0;
for( i=0 ; i<MAX_LOOP ; i++ )
if( dane[select[stan]] <= values_max[stan] && dane[select[stan]] >=
values_min[stan] ) {
dane[pos_true[stan]] = new_dane_true[stan];
stan = new_stan_true[stan];
}else {
dane[pos_false[stan]] = new_dane_false[stan];
stan = new_stan_false[stan];
}
return response[stan];
}
....
>
> U kogo to znalazles?
Cos jest w srodowiskach VCL (tzn BCB & D) ze ludzie zmiennych nie
powoluja tylko trzymaja niby-zmienne na kontrolkach GUI, spotykam to.
Skad taki zwyczaj moze pochodzic?
IMO to nie zwyczaj, tylko efekt prostoty �rodowiska. Klika� programy
zaczynaj� osoby bez nale�ytego do�wiadczenia, bez dobrych praktyk.
Ale to bardzo dobrze, dzieki takim technikom, wystarczy np. Spyem
odblokowywac buttony, edity itp. itd. aby uruchomic trialowa aplikacje po
czasie ;)
> To zobaczcie też mój ulubiony kod i odgadnijcie co on robi :)
Mamy trzy permutacje, jesli dane spermutowanego stanu mieszcza sie
w ogranicznikach, karmimy dane z innej permutacji stanu danymi z
jednej
tabelki i zmieniamy stan, jak mowi nak kolejna tabelka; gdy sie nie
mieszcza, inna parmutacja, inna tabelka z nowymi danymi i inna
tabelka
z nowym stanem. Powtarzamy klka razy i czytamy tabelka z odpowiedza.
Co to moze robic.. z odpowiednimi danymi moze nawet cos madrego,
ale bez sugestii co jest w danych trudno powiedziec.
pozdrawiam
bartekltg
1) To nie jest sposob na wyliczenie stanu konta ale jestes blisko.
2) Czy kod jest lady? Raczej, formalnie, maksymalnie uproszczony.
3) Nie nie interesuje mnie "kwota w roku 2020," tylko w roku 2030
4) " czyli 4000*1.1^20, niecale 27kzl.". Nie procedura daje inny wynik
Po co trzymac wartosc zmiennych w 2 miejscach? Masz za duzo pamieci RAM?
Pierwszy raz zapamietujesz wyliczona wartosc w zmiennych lokalnych a
nastepnie w propertisach kontrolek VCL?
Tak to sobie wyobrazasz?
Troche mnie rozsmieszasz. Podaj prawidlowe i (Twoim zdaniem ladniejsze)
rozwiazanie w/w problemu w BCB.
Masz za ma�o pami�ci RAM? To po co korzystasz z BCB/VCL?
Niekonsekwentnie troch�. Je�li u�ywasz takiej krowy, to dwa kilobajty
dodatkowych zmiennych nijak nie wp�yn� na pami�cio�erno��.
> Pierwszy raz zapamietujesz wyliczona wartosc w zmiennych lokalnych a
> nastepnie w propertisach kontrolek VCL?
> Tak to sobie wyobrazasz?
Wynik po�redni zapami�tujesz w zmiennej tymczasowej, a potem rezultat
w docelowej. A pola w kontrolce w og�le nie s� w�a�ciwym miejscem do
*trzymania* danych, tylko do ich *prezentowania*.
--
Secunia non olet.
Stanislaw Klekot
> 1) To nie jest sposob na wyliczenie stanu konta ale jestes blisko.
> 2) Czy kod jest lady? Raczej, formalnie, maksymalnie uproszczony.
Daleko mu do maksymalnego uproszczenia. Ciagle odczytywanie
i zapisywanie do kontrolki nie pomaga w wydajnosci (tu nieistotnej).
StrToFloat(StringGrid1->Cells[1][i-1]) +StrToFloat(StringGrid1-
>Cells[1][i-1])*0.1
to to samo co StrToFloat(StringGrid1->Cells[1][i-1])*1.1
Calosc wygladala by sensowniej tak:
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
float bla=4000;
StringGrid1->Cells[1][0]=FloatToStr(bla);
for(int i=1; i<21;i++)
{
StringGrid1->Cells[0][i]=FloatToStr(2010+i);
bla*=1.1;
StringGrid1->Cells[1][i]=FloatToStr (bla);
}
}
> 3) Nie nie interesuje mnie "kwota w roku 2020," tylko w roku 2030
racja
> 4) " czyli 4000*1.1^20, niecale 27kzl.". Nie procedura daje inny wynik
Inna kwota? Czy moze chodzi o to, ze wypelnia tabelke?
pzdr
bartekltg
> 1) To nie jest sposob na wyliczenie stanu konta ale jestes blisko.
> 2) Czy kod jest lady? Raczej, formalnie, maksymalnie uproszczony.
Daleko mu do maksymalnego uproszczenia. Ciagle odczytywanie
i zapisywanie do kontrolki nie pomaga w wydajnosci (tu nieistotnej).
StrToFloat(StringGrid1->Cells[1][i-1]) +StrToFloat(StringGrid1-
>Cells[1][i-1])*0.1
to to samo co StrToFloat(StringGrid1->Cells[1][i-1])*1.1
Calosc wygladala by sensowniej tak:
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
float bla=4000;
StringGrid1->Cells[1][0]=FloatToStr(bla);
for(int i=1; i<21;i++)
{
StringGrid1->Cells[0][i]=FloatToStr(2010+i);
bla*=1.1;
StringGrid1->Cells[1][i]=FloatToStr (bla);
}
}
Chyba masz
a) nazwane (a nie anonimowe) zmienne o nazwach i typach odpowiednich dla
problemu. Tego ucz� na pocz�tku - o ile kto� si� systematycznie edukowa�
a nie nie kopiowa� z wizard�w.
b)
> for(int i=1; i<21;i++)
wg mnie najgorszy spos�b napisania �e chodzi o 20x. Dla mnie ten autor
nigdy nie wykszta�ci� si� w C, kopiowa� z Pascala. Fragment typowy dla
kodu z BCB.
> FloatToStr
Po trzecie jak ju� bronisz BCB to do pieni��k�w ma Currency (tu jest
symulacja, wi�c 'chyba' nie dok�adne obliczenie, ale wspominam)
> StrToFloat(FloatToStr).
Pobaw si� formatami mi�dzynarodowymi, to mo�e byc 'ciekawe'. Ostatnie
cyfry znacz�ce te� ciekawe. BCB "lepiej" zaokr�gla od reszty bran�y.
O kosztach wydajno�ciowych konwersji tu koledzy pisali.
O separacji algorytmu, GUI i danych, MVC itd to "rasowego" u�ytkownika
myszki w BCB nie tylko nie da sie przekona�, ale wr�cz nie zrozumie o
czym mowa.
W sumie, dzi�ki �e bronisz czego� co nie do obronienia, bo pokazuje �e
"subkultura BCB" nie przy�ni�a nam si� ale istnieje.
> Po co trzymac wartosc zmiennych w 2 miejscach? Masz za duzo pamieci RAM?
> Pierwszy raz zapamietujesz wyliczona wartosc w zmiennych lokalnych a
> nastepnie w propertisach kontrolek VCL?
> Tak to sobie wyobrazasz?
Zasadniczo elementy GUI nie służą do zapamiętywania wartości programu. Można by
przymknąć oko, gdyby to były jakieś jednorazowe rzeczy - np. użytkownik wpisuje
ścieżkę do pliku w jakieś kontrolce i ma kliknąć ok lub anuluj, wtedy rzeczywiście
mały jest sens wprowadzania nowej zmiennej dla pojedynczej wartości. Jednak przykład
który pokazałeś to jest okropna pornografia. Konwertowanie 100 razy łańcucha znaków
na liczbę i odwrotnie powinno być wykrywane przez kompilator, z konsekwencją
automatycznego skasowanie pliku źródłowego. :)
w.
--
- Czym różni się wielbłąd jednogarbny od dwugarbnego?
- To co wielbłąd dwugarbny ma w drugim garbie, jednogarbny ma w dupie.
> b)
>> for(int i=1; i<21;i++)
> wg mnie najgorszy spos�b napisania �e chodzi o 20x. Dla mnie ten autor
> nigdy nie wykszta�ci� si� w C, kopiowa� z Pascala. Fragment typowy dla
> kodu z BCB.
Mozesz to wytlumaczyc PHPwcowi? :) Pytam z czystej ciekawosci.
Pozdrawiam.
--
[= WRonX =] [= WRonX@-CUT-WRonX.NET =] [= http://WRonX.NET =]
[= GCS/CC d->++ s+:- a- C++++$ U P>++ L+ !E W+++$ N++(+++) =]
[= !o-- K-? w++$ !O !M- !V-- PS+ PE !Y !PGP !t !5 X++ R++ =]
[= tv+ b+++ DI++ D+ G+ e+++ h--->---- r+++ y? =]
obud� si� o 3 w nocy i powiedz ile razy p�tla si� wykona
dla mnie t� oczywisto�� ma (o ile musi od jedynki):
for(int i=1; i<=20;i++)
gdyby nie musia�o od jedynki
for(int i=0; i<20;i++)
z cyklu "ma�a rzecz a cieszy"
>> FloatToStr
> Po trzecie jak ju� bronisz BCB to do pieni��k�w ma Currency (tu jest symulacja, wi�c 'chyba' nie dok�adne obliczenie, ale
> wspominam)
Patrz uwagi na temat pseudo kodu
> > StrToFloat(FloatToStr).
> Pobaw si� formatami mi�dzynarodowymi, to mo�e byc 'ciekawe'. Ostatnie cyfry znacz�ce te� ciekawe. BCB "lepiej" zaokr�gla od reszty
> bran�y.
> O kosztach wydajno�ciowych konwersji tu koledzy pisali.
>
Patrz uwagi na temat pseudo kodu
> O separacji algorytmu, GUI i danych, MVC itd to "rasowego" u�ytkownika myszki w BCB nie tylko nie da sie przekona�, ale wr�cz nie
> zrozumie o czym mowa.
Tu sie zgadzam, czyli czekam ma Twoja propozycje procedury/funkcji
> W sumie, dzi�ki �e bronisz czego� co nie do obronienia, bo pokazuje �e "subkultura BCB" nie przy�ni�a nam si� ale istnieje.
BCB i Delphi powstal jako opozycja do MS VB i jako taki spelnil swoje zadanie.
Napisz ta funkcje/procedure lepiej to podyskutujemy.
Obudz sie dzialam na tablicy (dokladnie to na 2 wymiarowej tablicy dynamicznej)
Dodatkowo tablica jest komponentem w postaci Grida gdzie indeks 1 ma inne znaczenie niz indeks 0
> gdyby nie musia�o od jedynki
> for(int i=0; i<20;i++)
>
> z cyklu "ma�a rzecz a cieszy"
Nie bardzo rozumiem ale odnosz wrazenie, ze mocno bladzisz....
Ze 3, 4 lata temu napisałem parsowanie struktur SMBIOSowych przy
kombinacją: dd if=/dev/mem ... | od ... | awk ...
Ale napisałem to tylko dlatego, że nie było innej możliwości. Pisanie
takich rzeczy jak wyżej to jak używanie do wszystkiego słowników string
-> string.
JD
>> Ze 3, 4 lata temu napisa�em parsowanie struktur SMBIOSowych przy kombinacj�: dd if=/dev/mem ... | od ... | awk ...
>> Ale napisa�em to tylko dlatego, �e nie by�o innej mo�liwo�ci. Pisanie takich rzeczy jak wy�ej to jak u�ywanie do wszystkiego
>> s�ownik�w string -> string.
> Podaj konrety.Albo lepiej podaj kod, ktory lepiej
> opisuje, rzeczywistosc.
kolego, obud� si�, rzeczywisto�ci� s� liczby. Grid to tylko ich
prezentacja. Nie b�d� si� zn�ca� skr�tami w rodzaju MVC bo na designerze
pod F11 nigdy ich nie widzia�e�.
Fajne jest, �e bronisz swojego kr��ka jak lew. To naprawd� ma sw�j folklor.
Bastion pisze:
> U�ytkownik "Jacek Czerwinski" <x...@y.z.pl> napisa� w wiadomo�ci >>
WRonX pisze:
>>> Jacek Czerwinski pisze:
>> dla mnie t� oczywisto�� ma (o ile musi od jedynki):
>> for(int i=1; i<=20;i++)
>
> Obudz sie dzialam na tablicy (dokladnie to na 2 wymiarowej tablicy
> dynamicznej)
Obudďż˝ siďż˝ i naucz siďż˝ czytaďż˝.
> Dodatkowo tablica jest komponentem w postaci Grida
> gdzie indeks 1 ma inne znaczenie niz indeks 0
naprawd�? nie wiedzia�em .... ;)
Bastion pisze:
> U�ytkownik "Jacek Czerwinski" <x...@y.z.pl> napisa� w wiadomo�ci
news:hkqr8b$6st$1...@news.onet.pl...
>>> for(int i=1; i<21;i++)
>> wg mnie najgorszy spos�b napisania �e chodzi o 20x. Dla mnie ten
autor nigdy nie wykszta�ci� si� w C, kopiowa� z Pascala. Fragment
>> typowy dla kodu z BCB.
> Jacku slyszalesz o pseudokodzie?
> Traktuj ta petle jak przekaz formalny a nie merytoryczny
Chcia�es powiedziec �e taka p�tla ma zalety formalne a wady
merytoryczne czy na odwr�t? Zgubi�em si�.
> BCB i Delphi powstal jako opozycja do MS VB
To sprawd� w kalendarzu bo b��dzisz bracie.
> i jako taki spelnil swoje zadanie.
> Napisz ta funkcje/procedure lepiej to podyskutujemy.
Po hu...gona mam pisaďż˝.
Juďż˝ Ci koledzy napisali lepiej.
gratulujďż˝ pancernego nicka, pasuje bardzo.
Cos na rzeczy jest, VB na jakims niepewnym artykule znalaz�em wskazania
na 1991 ????? a VB3 (pierwszy rzeczywi�cie istniej�cy na rynku, sam go
kiedy� legala kupi�em) na 1994
a Delphi na 1995, kojarzy�em wcze�niej.
To jest jaki� koszmarny mit, kt�ry s�ysz� tu po raz n-ty. Pisz� w Delphi od
przesz�o dziesi�ciu lat i od samego pocz�tku, od bana��w rozwi�zuj�cych
r�wnania kwadratowe przez my�l mi nie przesz�o, �eby trzyma� przetwarzane
w�a�nie dane w jakimkolwiek komponencie.
Je�li kto� pisze kod w taki spos�b, to nie tyle uczy� si� od kogo� pisz�cego
w Pascalu, co od kogo�, kto r�wnie� nie umie projektowa� program�w.
> W sumie, dzi�ki �e bronisz czego� co nie do obronienia, bo pokazuje �e
> "subkultura BCB" nie przy�ni�a nam si� ale istnieje.
W Visual Studio nie da si� pope�ni� takiego potworka, kt�ry trzyma
przetwarzane dane w kom�rkach tabelki? Da si�? No to nie jest to "subkultura
BCB", tylko subkultura "programist�w", kt�rzy nie wiedz� do czego s�u��
komponenty i tyle. Dlaczego wszyscy programi�ci C tak bardzo je�d�� po BCB?
�eby si� dowarto�ciowa�? �rodowisko programistyczne jak ka�de inne.
Pozdrawiam -- Spook.
--
! ._______. Warning: Lucida Console sig! //) !
! || spk || www.spook.freshsite.pl / _ """*!
! ||_____|| spook at op.pl / ' | ""!
! | ___ | tlen: spoko_ws gg:1290136 /. __/"\ '!
! |_|[]_|_| May the SOURCE be with you! \/) \ !
Bzdura.
A m�wi Ci to programista Delphi, �eby nie by�o. Polecam poczyta�, co to jest
tablica dynamiczna i dlaczego *nie* jest ni� komponent s�u��cy do
*wizualizacji* tablicy dynamicznej.
> Dodatkowo tablica jest komponentem w postaci Grida gdzie indeks 1 ma inne
> znaczenie niz indeks 0
Tablica nie jest komponentem. Tablica jest tablicďż˝. Komponent jest
komponentem. �eby by�o �mieszniej, elementy TStringGrida "mo�na indeksowa�
od zera", o ile wie si� do czego s�u�� w�asno�ci FixedRows i FixedCols.
Cudzys��w celowy.
Z tego samego powodu, z kt�rego ktos przechowywalby dane w kontrolkach MFC,
gdyby wpadl na taki durny pomysl. Z niewiedzy i braku doswiadczenia
programistycznego.
Kolego, ja tak nie pisze tylko przedstawiam rozwiazanie pewnego problemu.
Laskawie pochyl glowe i zastanow sie jak w 5 linijkach kodu
lepiej mozna zwizualizowac rozwiazanie. Czekam na kod...
Ciekawe?
Jaka zakladasz precyzje obliczen(po przecinku i przy zaokraglaniu)
dla typow Float i Currency w BCB?
Dlaczego?
- czytelnosc kodu?
- optymalizacja kodu?
- akademicki puryzm?
- akademicki ostracyzm wobec rozwiazam funkcjonalnych i
pieknych w swojej prostocie?
Podaj 1 albo 2 argumenty, dla ktorych nie powinno sie trzymac zmiennych
w kontrolkach VCL:) Sam tego w praktycze nie stosuje ale jestem ciekawy co powiesz;)
Chcesz pogadac o nicku czy programowaniu?
Czekam na Twoj kod rozwiazujacy w/w problem.
A co to wnosi do dyskusji?
> A m�wi Ci to programista Delphi, �eby nie by�o.
No to zastrzeliles mnie stalowa sila argumentow:)
To, ze piszesz w Delphi ma oznaczac "wiem lepiej"?
- Czekam na kod:)
- Merytoryczna argumentacje:)
Tak, ja przeciwko Tobie, bo chwalisz si� czym�, co powiniene� schowa�
g��boko do szuflady i najlepiej nie pokazywa� nikomu.
> 1) StringGried jest tablica (dynamiczna i przynajmniej 2 wymiarowa)
Bzdura. TStringGrid jest komponentem s�u��cym do *wizualizacji* tablicy
dynamicznej (i nie tylko). Dla Twojej wiadomo�ci, wewn�trzna implementacja
nawet nie trzyma danych w tablicy dynamicznej, tylko na surowym wska�niku.
Mi�o by�oby, �eby� popra� powy�sze stwierdzenie jakim� argumentem. Na
przyk�ad Twoj� definicj� tablicy (dynamicznej i przynajmniej dwuwymiarowej),
bo StringGrid ma *zawsze* dwa wymiary.
> 2) StringGrieda mozna ineksowac od 0 ale wtedy w naglowkach kolumn
> bedziesz mial dane zamiast opisu zwartosci kolumn.
Bzdura. FixedRows, FixedCols + F1. Poza tym to wcale nie oznacza, �e trzeba
iterowa� zmienn� od 1.
> 3) StringGrieda jest kontrolka sluzaca do wizualizacji danych.
Brawo. Gdyby� tylko napisa� "StringGrid".
> 4) Czekam na kod z wykorzystaniem FixedRows i FixedCols.
> do zaprezentowania Twojego rozwiazania.
var i, j : integer;
begin
sgData.FixedRows := 0;
sgData.FixedCols := 0;
sgData.RowCount := 10;
sgData.ColCount := 10;
for i:=0 to 9 do
for j := 0 to 9 do
sgData.Cells[i, j] := IntToStr((i+1)*(j+1));
end;
�a�. Mo�na indeksowa� od zera i dane nie wy�wietlaj� si� w nag��wkach.
Pozdrawiam -- Spook.
Nie; to, �e pisz� w Delphi oznacza, �e nie mam uprzedze� dotycz�cych
programowania w BCB.
Pozdrawiam -- Spook.
Zerowa. �aden normalny programista nie korzysta z w�asno�ci komponent�w w
charakterze zmiennych.
> - optymalizacja kodu?
Zerowa. Zastan�w si� chwil�, jaka jest z�o�ono�� obliczeniowa FloatToStr i
StrToFloat. A potem zapu�� Tw�j algorytm dla 1000000 lat i podaj czas jego
dzia�ania (tak, wiem, �e to nie ma rozs�dnego sensu, ale skoro rozmawiamy o
optymalizacji - prosz� bardzo)
> - akademicki puryzm?
Nie, zdrowy rozs�dek.
> Podaj 1 albo 2 argumenty, dla ktorych nie powinno sie trzymac
> zmiennych w kontrolkach VCL:) Sam tego w praktycze nie stosuje ale jestem
> ciekawy co powiesz;)
Piekielnie nieczytelny kod (nie wyobra�am sobie poprawiania programu
napisanego w ten spos�b), niewydajny, bez sensownego modelu aplikacji, bez
rozdzielenia warstwy danych i prezentacji, wymusza stosowanie konkretnych
kontrolek (przer�b potem *�atwo* program tak, �eby korzysta� z
TVirtualTreeView zamiast TStringGrid szczeg�lnie, gdy zastosujesz taki
"sprytny pomys�" w wi�kszej liczbie miejsc w programie - powodzenia).
Nawiasem, p�jd� do pierwszego lepszego pracodawcy i pochwal si� takim
programem. Ciekawe, czy ktokolwiek pomy�li o Tobie jak o potencjalnym
pracowniku.
Pozdrawiam -- Spook.
Zacznijmy od tego, �e nawet nie zabiera�bym si� do projektowania aplikacji
my�l�c panicznie, �eby zmie�ci� si� w n linijkach. P�acisz podatek od ka�dej
napisanej linii kodu? Je�li rado�� sprawia Ci upychanie programu w
niewielkiej przestrzeni, to raczej wy�lij Tw�j pomys� na IOCCC ni� chwal si�
na grupach.
Pozdrawiam -- Spook.
> Co to moze robic.. z odpowiednimi danymi moze nawet cos madrego,
> ale bez sugestii co jest w danych trudno powiedziec.
Ostatnio mam lenia, ale moze to dokoncze. Co to ma robic? Uwazam ze
ten 5-liniowy algorytm moze rozwiazac zupelnie kazdy problem. Dane
moga
reprezentowac dowolne dane uczace, a pozostale tablice moga byc
dobrane przez algorytm genetyczny.
Najbardziej ciekawi mnie jak wyglada najszybszy algorytm, który
dobierze
optymalne tablice dla tamtego algorytmu i dla dowolnych danych
uczacych :)
Pozdrawiam serdecznie
Tamtego potworka to raczej do The Daily WTF.
--
[ Artur M. Piwko : Pipen : AMP29-RIPE : RLU:100918 : From == Trap! : SIG:237B ]
[ 09:37:13 user up 12345 days, 21:32, 1 user, load average: 0.00, 0.18, 0.77 ]
Always go to other people's funerals, otherwise they won't come to yours.
> obud� si� o 3 w nocy i powiedz ile razy p�tla si� wykona
>
> dla mnie t� oczywisto�� ma (o ile musi od jedynki):
> for(int i=1; i<=20;i++)
>
> gdyby nie musia�o od jedynki
> for(int i=0; i<20;i++)
>
> z cyklu "ma�a rzecz a cieszy"
OK, myslalem, ze mowimy o czyms istotnym z punktu widzenia wydajnosci,
poprawnosci programowania w C pod Win32 etc. A Ty mowisz o wygodzie :)
Osobiscie musze przyznac, ze rzeczywiscie tworze takie petle, jak
podales, ale nigdy nie zastanawialem sie, dlaczego. Po prostu tak mi
bylo wygodniej. Wydaje mi sie, ze to kwestia subiektywna.
Wybacz, s� tez dobrzy VCL-owi programi�ci.
>> W sumie, dzi�ki �e bronisz czego� co nie do obronienia, bo pokazuje �e
>> "subkultura BCB" nie przy�ni�a nam si� ale istnieje.
>
> W Visual Studio nie da si� pope�ni� takiego potworka, kt�ry trzyma
> przetwarzane dane w kom�rkach tabelki?
Da si�, ale w MSVC++ orobi si� tak, �e paluchu mu powiedz�, ze nie warto.
Wada nie jest jest w narz�dziach Borlanda jako takich (w ich wn�trzu sa
np. fajne propozycje projektowania, dziedziczenia itd, tak �e
szacuneczek), jednak realno�c jest taka (wielka �atwo�� u�ycia
komponent�w i pozornie brak potzreby jakiej� edukacji, projekotwania
itd), �e ***�rednio*** w tej spo�eczno�ci panuj� zwyczaje jak panuj�.
Charakterystyczny jest ten w�tek, bo cz�owiek nie tylko sie nie wstydzi
tego, co powinien sie wstydzic, ale dowodzi �e tak ma by�, co
***socjologicznie*** jest ciekawe, �wiadczy o ***typowych*** pogl�dach.
Technicznie to bzdura.
Podkre�lam, s� dobry delfistyczni programi�ci.
NB to towarzystwo jest perfekcyjne w wyciskaniu wszystkich mo�liwo�ci z
kontrolek itd (z netu mo�na czerpa� tysi�ce fajnych przyk�ad�w, sam
ostatnio intensywnie pracowa�em z TTreeView), ale nigdy nie widzia�em na
necie nawet w po�owie tak gor�cej dyskusji "jak to dobrze
zaprojektowa�". Nie ma g�odnych, nie ma co ich karmi�. Jako� tak to jest.
Ja od wielu lat wierz� we "wsp�lnote j�zyka programowania" (Java,PHP,VCL
itd), u�ytkownicy i 'producenci', to si� zaz�bia, narz�dzie urabia
ludzi, nowe wersje wydaje si� pod oczekiwania wsp�lnoty i tak w k�ko.
Np fajne hierarchie komponent�w s� dla starych komponent�w (z poziomem
TCustomXxxxxxx), nie wiem dlaczego potem fajny zamys� pieprzn�li. Tzn
wiem, nikt tego nie potrzebowaďż˝.
Dokladnie. Wygoda i czytelno��. Nic o co warto si� zabija�.
na gruncie C pewnien rodzaj p�tli jest naturalny i czyta si� go
intuicyjnie. Mo�e na gruncie Cobola by naturalny zapis wygl�da� inaczej.
W algolu bym napisaďż˝
for i:= -3 to 17 step 1
oczywi�cie �art ;)
Konkrety? Czyli co? Chodzi mi o to, że używasz narzędzi pomyślanych do
jednego celu do osiągnięcia innego celu. I to używasz narzędzia gorszego
niż dostępne.
JD
pomyslec nalezalo by tez na przyklad o ilosci pracy wymaganej pozniej do
zaadaptowania takiego programu do uzywania innego GUI. albo wrecz do
wykorzystania bez GUI. jesli dane sa trzymane w warstwie prezentacyjnej,
a algorytmy sa podpiete pod eventy w GUI, to zycze szczescia w probach
wykorzystania takiego programu bez owego GUI, chcac odpalic dajmy na to
jakis prosty skrypt przetwarzajacy dane.
BR,
Sarr.
A ja uwazam, ze powyzsze to bzdura:)
Zostawmy nawet problemy typu: rekurencja
a= a/2 dla parzystych i 3a+1 dla nieparzystych.
Dla jakiego 'a' mamy okres.
wezmy przyzwoity problem: energia stanu podstawowego
uranu. Jak chcesz to rozwiazac przekladaniem zmiennych
nie wbudowujac wyniku w algorytm.
> Dane moga
> reprezentowac dowolne dane uczace, a pozostale tablice moga byc
> dobrane przez algorytm genetyczny.
czyli w bardzo kosztowny sposob znajdujemy rozwiazanie
i wbudowujemy w tabelka:)
> Najbardziej ciekawi mnie jak wyglada najszybszy algorytm, który
> dobierze
> optymalne tablice dla tamtego algorytmu i dla dowolnych danych
> uczacych :)
Dla wielu przypadkow, tabelki maja dlugosc 1 i zawieraja rozwiazanie.
pozdrawiam
bartekltg
Wolasz o kod ktorys raz. Podalem go dawno temu, a dalej wolasz:
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
float bla=4000;
StringGrid1->Cells[1][0]=FloatToStr(bla);
for(int i=1; i<21;i++)
{
StringGrid1->Cells[0][i]=FloatToStr(2010+i);
bla*=1.1;
StringGrid1->Cells[1][i]=FloatToStr (bla);
}
}
Tez brzydkie, ale nie az tak.
pozdrawiam
bartekltg
Bez sensu.
Kolega chce 'lepszy' kod, natomiast ma zupe�nie chora definicj� s�owa
'lepszy'. On jest najlepszy w tej kategorii, kt�r� sam zdefiniowa�. W
sumie, mo�e nie najlepszy, ale najbardziej uparty.
> wezmy przyzwoity problem: energia stanu podstawowego
> uranu. Jak chcesz to rozwiazac przekladaniem zmiennych
> nie wbudowujac wyniku w algorytm.
Nie bylo mowy ze w tablice nie wolno wbic pomocniczych
rozwiazan, albo dowolnych innych pomocniczych danych.
Tablica response moze nakladac sie na tablice w ktorych
sa przekadane zmienne, wlasciwie to moze byc jedna
tablica z danymi na poczatku i miejscem na czesciowe
wyniki.
> > Dane moga
> > reprezentowac dowolne dane uczace, a pozostale tablice moga byc
> > dobrane przez algorytm genetyczny.
>
> czyli w bardzo kosztowny sposob znajdujemy rozwiazanie
> i wbudowujemy w tabelka:)
No wlasnie dlatego to mnie tak bardzo ciekawi, ze znane sa tylko takie
kosztowne sposoby. Interesuje mnie jaki jest najlepszy algorytm
budowania takich tablic (czyli tak naprawde algorytm budowania
innego algorytmu), o ograniczonych rozmiarach ktore dla dla
wszystkich danych uczacych wypluja wlasciwe rozwiazanie.
> > Najbardziej ciekawi mnie jak wyglada najszybszy algorytm, który
> > dobierze
> > optymalne tablice dla tamtego algorytmu i dla dowolnych danych
> > uczacych :)
>
> Dla wielu przypadkow, tabelki maja dlugosc 1 i zawieraja rozwiazanie.
Sa ciekawsze przypadki. Np. mamy gre kolko i krzyzyk. Algorytm
dostaje pary uczace w postaci opisu sytuacji w grze i najlepszego
ruchu. Czyli
tablica z danymi to bedzie:
int plansza[9+rozszerzenie]
tablica z odpowiedziami to bedzie numer pola z optymalnym ruchem
int response[9] = {1,2,3...9}
I algorytm genetyczny musialby dobrac parametry w pozostalych
tablicach
tak, aby w najmniejszej ilosci krokow zawsze podac optymalny ruch.
Pozdrawiam
Blisko zerowa. Pierwszy napisalem, co to robi. Musialem specjalnie,
sie przyjrzec zeby zrozumiec dzialanie i naprawde myslalem, ze to
dowcip, ciekawe znalezisko w rodzaju dWTF.
> - optymalizacja kodu?
Tak. Na kazde mnozenie i dodanie masz konwersje
string->float i spowrotem. To gigantyczny narzut.
> - akademicki puryzm?
> - akademicki ostracyzm wobec rozwiazam funkcjonalnych i
> pieknych w swojej prostocie?
Zrobili Ci krzywde na tej uczelni?
Wbrew pozorom czasem jajoglowe maja racje.
Tez 'umailem programowac' przed przejsciem sie na pare
zajec na uczelni (nie twierdze, ze teraz umiem;)
Naprawde sadzisz, ze zarzut 'to jest brzydkie bo ciagle
zamieniasz string<->float' jest akademickim marudzeniem?
> Podaj 1 albo 2 argumenty, dla ktorych nie powinno sie trzymac zmiennych
> w kontrolkach VCL:) Sam tego w praktycze nie stosuje ale jestem ciekawy co powiesz;)
1.Niepotrzebny narzut.
2.Kontrola nad danymi, ich wieksze bezpieczesntwo -
nie zmienisz danych w trakcie obliczen, ogolnie, nie zmienisz
ich poza przewidzianymi przez programiste momentami
(wcisniecie guzika 'uaktualnij dane na podstawie tabelki').
3.Przetrzymywanie w takiej tabelce duzych danych (100MB
albo wiekszych) bedzie niewygodne.
pozdr
bartekltg
> Dlaczego uwazasz ze to bzdura? Taki algorytm jest
> tym samym co maszyna turinga. Stan to pozycja glowicy,
> dane to tasma, pozostale tablice to funkjca przejsc.
Nie widze wlasciwie zadnej mozliwosci praktycznego
zastosowania takiego algorytmu.
Jesli chesz uzywac tego jako narzedzia teoretycznego,
jak maszyna turinga, to inna sprawa, ale tez bys
musial pokazac jakies ciekawe wlasciwosci
(bo jest oczko bardziej skomplikowana niz MT)
> Nie bylo mowy ze w tablice nie wolno wbic pomocniczych
> rozwiazan, albo dowolnych innych pomocniczych danych.
To w koncu moge tym algorytmem cokolwiek policzyc, czy
musze znac wynik i wstawic go do tabelki:)
Bo na razei to wyglada jak jakies wyszukiwanie
w przestrzeni rozwiazan. Mamy stan, mamy jakies funkcje
od stanu, jesli nam nie pasuja (u Ciebie sa za male lub za duze)
odpowiednio modyfikujemy stan. Na koncu wypisujemy
odpowiedz (stan lub jakas funkcje stanu).
Tylko po co w to angazowac tabelki:)
> No wlasnie dlatego to mnie tak bardzo ciekawi, ze znane sa tylko takie
> kosztowne sposoby. Interesuje mnie jaki jest najlepszy algorytm
> budowania takich tablic (czyli tak naprawde algorytm budowania
> innego algorytmu), o ograniczonych rozmiarach ktore dla dla
> wszystkich danych uczacych wypluja wlasciwe rozwiazanie.
Jesli dobrze wylapuje idee, chcesz znalesc tak tabelkowy algorytm
dla danego problemu i pozniej te probmely w ten sposob rozwiazywac.
W ogolnosci bedziesz mial z tym problem.
Pomysl, jak 'tabelkowo' znalesc najkrotsza droge w grafie (+z wagami).
Czasem sie da. Znajdz tym algorytmem chocby wysokosc drzewa
(to sie da dosc bezposrtednio, tylko po co).
> Sa ciekawsze przypadki. Np. mamy gre kolko i krzyzyk. Algorytm
> dostaje pary uczace w postaci opisu sytuacji w grze i najlepszego
> ruchu. Czyli
> tablica z danymi to bedzie:
> int plansza[9+rozszerzenie]
> tablica z odpowiedziami to bedzie numer pola z optymalnym ruchem
> int response[9] = {1,2,3...9}
> I algorytm genetyczny musialby dobrac parametry w pozostalych
> tablicach
> tak, aby w najmniejszej ilosci krokow zawsze podac optymalny ruch.
Stabelaryzowales gre. Super, ale to juz bylo. A tabelke lepiej
wypelnic zwyklym przeszukiwaniem drzewa gry.
Algorytmy genetyczne, sieci neuronowe i inne wynalazki
nie sa uniwersalna metoda rozwiazywanie wszytkiego.
Raczej ostatnia deska ratunku dla pewnej klasy zadan,
zeby znalesc rozwiazanie nieco lepsze niz losowe.
Ale jakis czas kazdy sie nimi zachwyca:-)
pozdrawiam
bartekltg
Gdyby te tabelki nie by?y orientacyjna; symulacja; a bankowym
harmonogramem np. do umowy, to krymina?.
Mozna zbudowac taki graf w postaci tablicy:
Node graf[MAX_NODE];
I nastepnie zrealizowac kazdy problem decyzyjny w tak
prostej procedurze:
Response( data[SIZE_DATA+EXTENSION] , graf[MAX_NODE] ) {
stan = 0;
for( i = 0 ; i<MAX_LOOP ; i++ ) {
if( data[ graf[stan].index ] >= graf[stan].min AND
data[ graf[stan].index ] <= graf[stan].max ) {
data[ graf[stan].index_true ] = graf[stan].value_true;
stan = graf[stan].stan_true;
} else {
data[ graf[stan].index_false ] = graf[stan].value_false;
stan = graf[stan].stan_false;
}
return graf[stan].response;
}
> Jesli chesz uzywac tego jako narzedzia teoretycznego,
> jak maszyna turinga, to inna sprawa, ale tez bys
> musial pokazac jakies ciekawe wlasciwosci
> (bo jest oczko bardziej skomplikowana niz MT)
To żadna nowość, można tego używać np. jako
grafu decyzyjnego. Nie wiem dlaczego uwazasz ze to
jest skomplikowane, po prostu stany, funkcja przejsc
pomiedzy stanami, warunek stopu i koncowa odpowiedz.
Uwazam ze to jest maksymalnie uproszczone, poniewaz algorytm
budujacy taki graf widzi po prostu tablice liczb i moze
nimi dowolnie manipulowac. Kod wykonania tego grafu
tez jest zabojczo prosty, niespelna 10 linii, a mozna chodzic
po dowolnym grafie.
> > Nie bylo mowy ze w tablice nie wolno wbic pomocniczych
> > rozwiazan, albo dowolnych innych pomocniczych danych.
>
> To w koncu moge tym algorytmem cokolwiek policzyc, czy
> musze znac wynik i wstawic go do tabelki:)
Wystarczy do rubryki "response" wsadzic dwie liczby: zero i jeden,
aby policzyc tym algorytmem dowolne zadanie. Czesciowe
wyniki mozna wstawiac w celu przyspieszenia.
Np. mozesz tym algorytmem policzyc problem komiwojazera.
Na poczatek danych wrzucasz opis grafu ktory ma komiwojazer
przejsc. Po opisie grafu mozna wpisac dwa wierzcholki grafu.
Algorytm zwroci jedynke jesli owe dwa wierzcholki sa z soba
bezposrednio polaczone na najkrotszej drodze laczacej i zero
gdy nie sa. W ten sposob trzeba algorytm wywolac dla kazdej
pary wierzcholkow, aby ustalic najkrotsza droge laczaca wszystkie.
Podobnie z innymi problemami optymalizacyjnymi. Mozna za
danymi umiescic probne rozwiazanie, algorytm zwroci jedynke jesli
rozwiazanie probne jest za male i zero jesli jest za duze. Trzeba
taki algorytm wywolywac iteracyjne (wielomianowa ilosc razy) aby
przyblizyc sie do dokladnego rozwiazania dowolnego problemu.
> Bo na razei to wyglada jak jakies wyszukiwanie
> w przestrzeni rozwiazan. Mamy stan, mamy jakies funkcje
> od stanu, jesli nam nie pasuja (u Ciebie sa za male lub za duze)
> odpowiednio modyfikujemy stan. Na koncu wypisujemy
> odpowiedz (stan lub jakas funkcje stanu).
Modyfikujemy tez dane, nie tylko stan, mamy pamiec,
> Tylko po co w to angazowac tabelki:)
Po to tabelki zeby bylo czytelniej. Dlaczego operowac na
ciagu nienazwanych bitow? Tutaj mamy ladnie wydzielone
tabele zakresow, nowych wartosci, nowych stanow, itd.
> > No wlasnie dlatego to mnie tak bardzo ciekawi, ze znane sa tylko takie
> > kosztowne sposoby. Interesuje mnie jaki jest najlepszy algorytm
> > budowania takich tablic (czyli tak naprawde algorytm budowania
> > innego algorytmu), o ograniczonych rozmiarach ktore dla dla
> > wszystkich danych uczacych wypluja wlasciwe rozwiazanie.
>
> Jesli dobrze wylapuje idee, chcesz znalesc tak tabelkowy algorytm
> dla danego problemu i pozniej te probmely w ten sposob rozwiazywac.
> W ogolnosci bedziesz mial z tym problem.
No jest z tym ogromny problem. Mnie nie tylko interesuje taki
tabelkowy
algorytm, ale raczej algorytm do budowania takich tabelkowych
algorytmow
na podstawie danych doswiadczalnych. Do tego chcialbym zeby zbudowane
algorytmy byly optymalne w sensie rozmiaru, szybkosci, dokladnosci.
> Pomysl, jak 'tabelkowo' znalesc najkrotsza droge w grafie (+z wagami).
> Czasem sie da. Znajdz tym algorytmem chocby wysokosc drzewa
> (to sie da dosc bezposrtednio, tylko po co).
No jak trzeba znalezc najkrotsza droge w grafie, to lepiej kola nie
wymyslac. Ale wielu innych algorytmow nie znamy.
> > Sa ciekawsze przypadki. Np. mamy gre kolko i krzyzyk. Algorytm
> > dostaje pary uczace w postaci opisu sytuacji w grze i najlepszego
> > ruchu. Czyli
> > tablica z danymi to bedzie:
> > int plansza[9+rozszerzenie]
> > tablica z odpowiedziami to bedzie numer pola z optymalnym ruchem
> > int response[9] = {1,2,3...9}
> > I algorytm genetyczny musialby dobrac parametry w pozostalych
> > tablicach
> > tak, aby w najmniejszej ilosci krokow zawsze podac optymalny ruch.
>
> Stabelaryzowales gre. Super, ale to juz bylo. A tabelke lepiej
> wypelnic zwyklym przeszukiwaniem drzewa gry.
A jak gra jest tak duza jak np. GO na planszy 19x19? Wtedy
potrzeba heurystyk ktore w miare mozliwosci szybko dzialaja i
dobrze uogolniaja.
> Algorytmy genetyczne, sieci neuronowe i inne wynalazki
> nie sa uniwersalna metoda rozwiazywanie wszytkiego.
> Raczej ostatnia deska ratunku dla pewnej klasy zadan,
> zeby znalesc rozwiazanie nieco lepsze niz losowe.
> Ale jakis czas kazdy sie nimi zachwyca:-)
Moze to kwestia mocy obliczeniowej? Teoretycznie na
super-komputerze mozna stablicowac rozwiazania jakiegos
ogromnego problemu NP-trudnego, nastepnie zasymulowac
wszystkie algorytmy na tych danych i wybrac tylko te ktore
zakonczyly sie przed zadanym czasem i daly poprawne
odpowiedzi na wszystkich danych. Moze w przyszlosci
wlasnie takie symulacje pomoga znalezc kontrprzykad
na to ze NP != P. Wlasciwie to juz dzis sie tak robi, ale
dzis dysponumemy moca obliczeniowa do sprawdzenia
zaledwie jakis wybranych parametrow w programie.
> pozdrawiam
rowniez pozdrawiam
Ze co? Odcyfrować się tego nie da!
pozdrawiam,
Przemek O.
>> Podaj konrety.
>
> Konkrety? Czyli co? Chodzi mi o to, �e u�ywasz narz�dzi pomy�lanych do jednego celu do osi�gni�cia innego celu. I to u�ywasz
> narz�dzia gorszego ni� dost�pne.
Podaj konkrety
Reasumujac:
1) Nie widze w zaprezentowanym kodzie, zadnych bledow
skladniowych ani logicznych.
2) Kod jest ktorki, logiczny i realizuje zadania dla ktorych zostal powolany
3) W czym widzisz problem?
Potrafisz uzasadnic swoja wypowiedz czy tylko urozmaiczasz
watek angielska nomenklatura?
> wezmy przyzwoity problem: energia stanu podstawowego
> uranu. Jak chcesz to rozwiazac przekladaniem zmiennych
> nie wbudowujac wyniku w algorytm.
Bartekltg, robrajasz mnie pomyslowascia i intelektualna odwaga.
Kod na poczatku mial sluzyc do szybkiego obliczenia (i wizualizacji)
wynagrodzenia programisty, ktory podpisuje umowe o prace
na czas nieokreslony, przy zalozeniu 10% progresji w ciagu roku;)
Bastion, rozbrajasz mnie swoja niemoznoscia ogarniecia
calosci watku. A moze zwyklą nieswiadomoscia tego,
ze watek nie jest liniowy, a drzewiasty i ze wlasnie wszedles
w poddrzewo gdzie Mariusz cztery dni temu podal swoj
algorytm - zagadke.
Gdzies tam bedzie przycisk zmianiajacy widok
z liniowego na drzewiasty. uzyj, a usenet stanei sie bardziej
zrozumailym miejscem.
pozdr
bartekltg
Odpowiedz na proste pytanie:
Czym pojecha�by� do supermarketu po zakupy?
a) Rowerem, motorem lub samochodem osobowym
b) Walcem drogowym, Boeingiem 767 lub 12-ko�ow� ci�ar�wk�?
Pozdrawiam -- Spook.
--
! ._______. Warning: Lucida Console sig! //) !
! || spk || www.spook.freshsite.pl / _ """*!
! ||_____|| spook at op.pl / ' | ""!
! | ___ | tlen: spoko_ws gg:1290136 /. __/"\ '!
! |_|[]_|_| May the SOURCE be with you! \/) \ !
Czy chcesz koniecznie po raz kolejny usłyszeć argumenty, które padły tu
już wielokrotnie, a których obecności pomimo ich polskiej nomenklatury,
zobaczyć nie chcesz?
--
[ Artur M. Piwko : Pipen : AMP29-RIPE : RLU:100918 : From == Trap! : SIG:226B ]
[ 09:21:10 user up 12346 days, 21:16, 1 user, load average: 0.01, 0.28, 0.84 ]
Overflow on /dev/null; please empty the bit bucket.
Konkretnie, to używasz warstwy prezentacji do przechowywania danych i
dokonujesz zbędnych konwersji.
JD
Zacznijmy od tego, ze w
1) temat watku jest wyraznie zartobliwy i zawiera emotikon ";)":
2) Nikt nie odgadl, czemu ma sluzyc zaprezentowany kod.
3) Jak mam powaznie traktowac argumentacje ludzi
ktorzy nie rozumieja o czym pisza?
Co to ma wspolnego z trescia watku?
Nie podoba Ci sie moj kod- uzasadnij swoje stanowisko.
Na tym polega dyskusja.
Ma - i to wi�cej, ni� my�lisz. Odpowiedz na pytanie.
> 3) Jak mam powaznie traktowac argumentacje ludzi
> ktorzy nie rozumieja o czym pisza?
Pocz�stuj ich tymi samymi dragami, co ty bierzesz, wtedy si� dogadacie
Dragi ? To jakas odmiana Trigerra?
Bardzo akademickie, niemniej bledne.
Robisz jakis smieszne zalozenia.
Dlaczego mam odzielac warstwe logiczna
od biznesowej obliczajac w 5 linijkach kodu, zarobki programisty?
Bo co bo nie wolno?
:)
Obecnie narty biegowe.
Nie bardzo rozumiem do czego zmierzasz?
Masz jakies braki w lodowce? Moja rada zadzwon po telepizze;)
Kto i po co?
> b)
>> for(int i=1; i<21;i++)
> wg mnie najgorszy spos�b napisania �e chodzi o 20x. Dla mnie ten autor nigdy nie wykszta�ci� si� w C, kopiowa� z Pascala. Fragment
> typowy dla kodu z BCB.
Nie, StringGrid ma taka wlasciwosc, ze w indeksie nr 0 mieszcza sie nazwy kolumn.
>> FloatToStr
> Po trzecie jak ju� bronisz BCB to do pieni��k�w ma Currency (tu jest symulacja, wi�c 'chyba' nie dok�adne obliczenie, ale
> wspominam)
Ktos juz o tym pisal, ale dokladnie to nikt nie wie z jaka precyzja i dokladnoscia
maja byc robione obliczenia. Malo tego, nikt nie wie tak naprawde jak nalezy
robic zaokraglenia... Obcinamy zera? zaokroglamy w gore, zaokraglamy w dol?
Myslisz ze Currency rozwiazuje problem?
> > StrToFloat(FloatToStr).
> Pobaw si� formatami mi�dzynarodowymi, to mo�e byc 'ciekawe'. Ostatnie cyfry znacz�ce te� ciekawe. BCB "lepiej" zaokr�gla od reszty
> bran�y.
> O kosztach wydajno�ciowych konwersji tu koledzy pisali.
No to zes sie chyba zagalopowal? Chcialem szybko obliczyc zarobki
programisty w 20 letniej perspektywie... a ty mi wyjezdzasz z
"wydajno�ciowych konwersji":)))
> O separacji algorytmu, GUI i danych, MVC itd to "rasowego" u�ytkownika myszki w BCB nie tylko nie da sie przekona�, ale wr�cz nie
> zrozumie o czym mowa.
Odnosze wrazenie ze masz marne szanse na to, ze bedzie malo zastosowanie:
StringGrid1->Cells[1][0]=FloatToStr(4000);
> W sumie, dzi�ki �e bronisz czego� co nie do obronienia, bo pokazuje �e "subkultura BCB" nie przy�ni�a nam si� ale istnieje.
Odnosze wrazenie ze masz marne szanse na to, ze bedzie malo zastosowanie
StringGrid1->Cells[1][0]=FloatToStr(4000);
Reasumujac, przemysl i popracuj.
>Calosc wygladala by sensowniej tak:
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
float bla=4000;
StringGrid1->Cells[1][0]=FloatToStr(bla);
for(int i=1; i<21;i++)
{
StringGrid1->Cells[0][i]=FloatToStr(2010+i);
bla*=1.1;
StringGrid1->Cells[1][i]=FloatToStr (bla);
}
}
Tak by to wygladalo, gdyby kod nie zostal szczesliwie
zoptymalizowany przez autora watku:)
>> 1) StringGried jest tablica (dynamiczna i przynajmniej 2 wymiarowa)
>
> Bzdura. TStringGrid jest komponentem s�u��cym do *wizualizacji* tablicy dynamicznej (i nie tylko). Dla Twojej wiadomo�ci,
> wewn�trzna implementacja nawet nie trzyma danych w tablicy dynamicznej, tylko na surowym wska�niku. Mi�o by�oby, �eby� popra�
> powy�sze stwierdzenie jakim� argumentem. Na przyk�ad Twoj� definicj� tablicy (dynamicznej i przynajmniej dwuwymiarowej), bo
> StringGrid ma *zawsze* dwa wymiary.
//==============
Gdzie widzisz bzdure? Wojtku w VCL istnieje subtelna roznica pomiedzy
kontrolka a komponentem, obiekt klasy TStringGrid jest kontrolka.
//==============
>> 2) StringGrieda mozna ineksowac od 0 ale wtedy w naglowkach kolumn
>> bedziesz mial dane zamiast opisu zwartosci kolumn.
>
> Bzdura. FixedRows, FixedCols + F1. Poza tym to wcale nie oznacza, �e trzeba iterowa� zmienn� od 1.
Przyczepiles sie do tego FixedRows i FixedCols jak neofita do bibli.
co chcesz osiagnac wykorzystujac wlasciwosc FixedRows+FixedCols?
>> 3) StringGrieda jest kontrolka sluzaca do wizualizacji danych.
> Brawo. Gdyby� tylko napisa� "StringGrid".
Zawsze poprawiam mnie kompilator.
>> 4) Czekam na kod z wykorzystaniem FixedRows i FixedCols.
>> do zaprezentowania Twojego rozwiazania.
>
> var i, j : integer;
>
> begin
> sgData.FixedRows := 0;
> sgData.FixedCols := 0;
> sgData.RowCount := 10;
> sgData.ColCount := 10;
> for i:=0 to 9 do
> for j := 0 to 9 do
> sgData.Cells[i, j] := IntToStr((i+1)*(j+1));
> end;
>
> �a�. Mo�na indeksowa� od zera i dane nie wy�wietlaj� si� w nag��wkach.
W naglowkach kolumn powinny sie wyswietlac
nazwy kolumn a nie dane w nich zawarte?
Co robi ten kod ponad to ze wypelnia grida bezsensownymi danymi?
> bo StringGrid ma *zawsze* dwa wymiary.
Jestes w mylnym bledzie:)
Popatrz, w rzeczywistosci, kazda linia StringGrida
to StringLista. Fajna cecha StringListy jest to ze moze
zawierac w sobie wskazniki do innych obiektow.
W ten jakze prosty sposob, kazda komorka StringGrida
moze posiadac wskaznik do nastepnej StringListy czyli nastepny wymiar?
P: "Huston mamy PROBLEM, programisci wydziwiaja na kontrolki"
O: "Wiemy i badamy to zagadnienie...."
P: "Dodatkowo, zdaje sie ze robia to od dluzszego czasu"
P: "bez odioru..5432"�#%344235�#%�#"
O: "#%344235�#%�#"
> P: "Huston mamy PROBLEM, programisci wydziwiaja na kontrolki"
> O: "Wiemy i badamy to zagadnienie...."
> P: "Dodatkowo, zdaje sie ze robia to od dluzszego czasu"
> P: "bez odioru..5432"�#%344235�#%�#"
> O: "#%344235�#%�#"
> O: Apollo, apollo jak mnie slyszysz?
> O: Czy mozemy zmienic wam oprogramowanie?
> P "432"�#%344235�#%�#" jasne dawaj.... SPADAMY....
> O: Wytrzymajcie jeszcze chwile, wyslalismy to w XML
.... pierdut.
Reasumujac dosc ciekawa dyskusje.
Jest takie stare chinskie powiedznie/przypowiastka/przyslowie:
Kiedy medrzec pokazuje palcem ksiezyc- glupiec patrzy na palec.
;)
Pozdrawiam
--
Pozdrawiam
Michoo
Słuchaj, jeżeli płacą Ci za wkręcanie śrub widelcem, to nie ma problemu,
wkręcaj, na zdrowie, może masz rodzinę do wyżywienia. Ale ja bym Ci za
taki kod nie zapłacił. To tyle.
JD
Bardzo ładnie się podsumowałeś. My Ci pokazujemy MVC, konwersje i złe
praktyki, a Ty mówisz o palcu, że "przecież to jednorazowy kod, który
nigdy nie będzie zmieniany".
To policz to w Excelu.
JD
Jedrzeju, kod ktory podalem w dniu 2010-02-07 jest juz nie aktualny,
bedzie lepiej o jakies 50%:)
Tym optymistycznym akcentem... zakonczmy
Pozdrawiam
Pisałem programy znacznie wcześniej, ale programować nauczyłem się
dopiero w pracy. Po jakichś 5 latach.
>>> My Ci
>> Bardzo fajnie myj sie regularnie:)
>> EOT
> Moze przesadzilem...
> ale sforumowanie "My Ci"
> znaczy tyle co... jezeli miliony much jedza gowno to musi byc dobre?
Miliony much piszą tak jak Ty, w PHP i BCB. Zero separacji, rzutowania
tu i tam, klasy robiące tysiąc rzeczy, nienazwane stałe liczbowe,
niesprawdzanie danych wejściowych, alokacja pamięci "na zapas" i zapis
tam na pałę itd. To, o czym pisaliśmy, to praktyki stosowane przy
udanych projektach.
JD
???
Komponent? Kontrolka?
Panie kolego, po pierwsze to jest tylko gadanie, bo wszystko jest
obiektem :)
W Delphi stosuje siďż˝ nazwďż˝ komponenty
http://pl.wikipedia.org/wiki/Komponent_(informatyka.
Kontrolki to mogďż˝ byďż˝ ActiveX.
Poza tym nazwa kontrolka to niby sk�d si� wziela? Od tego �e dziedziczy
po TControl? A komponent dziedziczy po TComponent? To mo�e zaraz jeszcze
sobie zaczniemy u�ywa� nazwy WinKontrolki? I Persistentki np. dla TStrings?
Tak wi�c nie ma _�adnej_ r�nicy, czy to subtelnej czy nie.
pozdrawiam,
Przemek O.
Temat może jest, ale stosowanie takich reguł woła o pomstę.
> 2) Nikt nie odgadl, czemu ma sluzyc zaprezentowany kod.
Zrobieniu z C++ perla na poziomie składni.
> 3) Jak mam powaznie traktowac argumentacje ludzi
> ktorzy nie rozumieja o czym pisza?
>
Tak: <hl71s3$j4r$1...@news.onet.pl>
O ile tylko do Ciebie w końcu to dotrze.
--
[ Artur M. Piwko : Pipen : AMP29-RIPE : RLU:100918 : From == Trap! : SIG:226B ]
[ 14:29:00 user up 12349 days, 2:24, 1 user, load average: 0.24, 0.61, 0.98 ]
Bad command or file name. Go stand in the corner.
--
wloochacz
Z tego co sobie przypominam, to (pisze z glowy nie pamietam dokladnych definicji)...
W VCL komponenty dzielimy na wizualne i nie wizualne
- komponentami wizualnymi nazywamy kontolki poniewaz mozemy je zobaczyc na
formie po uruchomieniu programu: Button, StringGrid, Edit, Memo.
(czyli mozemy kontrolowac za ich pomoca dzialanie aplikacji)
Natomiast przykladem komponentu jest np.
DataSet, DataSource, ktory kladziesz na formie/formatce ale
nie widac ich podczas dzialania programu i nie moze bezposrednio sterowac aplikacja.
Czy kontrolka zawsze dziedziczy po TControl?
Dobre pytanie. Mysle, ze na poziomie WinApi kontrolka bedzie zawsze miala dostep
do komunikatow (message) ,natomiast komponent nie.
Tak, chyba troche musze odpuscic z browcem
bo widze, ze faktycznie robie literowki.
Pozdrawiam
Do minie nic nie dociera... Kod ktory napisalem
jest fajny, optymistyczny i poprawny:
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
StringGrid1->Cells[1][0]=FloatToStr(4000);
for(int i=1; i<21;i++)
{
StringGrid1->Cells[0][i]=FloatToStr(2010+i);
StringGrid1->Cells[1][i]=FloatToStr
(
StrToFloat(StringGrid1->Cells[1][i-1])
+StrToFloat(StringGrid1->Cells[1][i-1])*0.1
);
}
}
Jezeli potrafisz napisac to lepiej to jestem bardzo ciekawy, Twojego rozwiazania.
...
> StrToFloat(StringGrid1->Cells[1][i-1])
dopisujemy *1.1
> +StrToFloat(StringGrid1->Cells[1][i-1])*0.1
a ta linijka sru w niebyt
...
I juz o jakies 30% lepiej,
> Jezeli potrafisz napisac to lepiej to jestem bardzo ciekawy, Twojego rozwiazania.
Podawalem juz kod ktory wypelnia ta tabelke tak samo
a nie mazga bez sensu strtofloat. Uzywa az jednej zmiennej
dla dowolnie dlugiej tabeli (a mimo to zapewne takze zuzywa
mniej pamieci bo ine ma tylu tymczasowego smiecia).
Kazdy grupowicz ma Ci napisac lepszy kod?
pzdr
bartekltg
Ten pajac chwali si� ile to b�dzie zarabia� jako klepacz_w_bcb i mia�
nadziej�, �e wszyscy zaczn� mu zazdro�ci�... Nie dociera, �e tylko da� o
sobie �wietne �wiadectwo, a jego zarobki wszyscy maj� gdzie�.
Proponuj� ola� - na pocz�tku by� zabawny, ale ka�dy wioskowy g�upek po
d�u�szym czasie nu�y.
--
Pozdrawiam
Michoo
Zauwaz, ze na tej grupie glownie dyskutujemy.
Chamskie odzywki sa rzadkosica.
Trzymaj sie standardow.
Mog�e� napisa� "Jestem kiepskim programist� a b�d� mi p�aci� w kolejnych
n miesi�cach 4k*(1.1)^n, mo�ecie mi zazdro�ci�" - by�oby to tylko
�a�osne, ale ty wrzuci�e� bardzo kiepski kod, a jak ci� zjechano za jego
jako�� pr�bowa�e� si� nieudolnie broni� pogr��aj�c jeszcze bardziej -
tak zachowuj�cych si� ludzi okre�la si� cz�sto mianem wioskowych g�upk�w.
A poniewa� wi�kszo�� grupowicz�w nie za�apa�a twojej przechwa�ki
postanowi�e� znowu odgrza� to samo co na pocz�tku - ja to nazywam
pajacowaniem.
P.S.
1.
Tak si� podniecasz tym 4k PLN - jeste� na 4 roku studi�w, czy co?
2.
Aleby�my mieli ubaw jakby Ci� wylali po 2 miesi�cach za kod kt�rego
wsp�pracownicy nie s� w stanie czyta�, ale obawiam si� �e na post:
"M�j znienawidzony kod"
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
UznanieSzefaTextBox->Text=FloatToStr(StrToFloat(FloatToStr(StrToFloat(FloatToStr(StrToFloat("0"))))));
StringGrid1->Cells[1][0]=FloatToStr(4000*StrToFloat(UznanieSzefaTextBox->Text));
for(int i=1; i<21;i++)
{
StringGrid1->Cells[0][i]=FloatToStr(2010+i);
StringGrid1->Cells[1][i]=FloatToStr
(
StrToFloat(StringGrid1->Cells[1][i-1])
+StrToFloat(StringGrid1->Cells[1][i-1])*0.1
);
}
}
Nie mamy co liczyďż˝.
--
Pozdrawiam
Michoo
Z punktu widzenia składni tak.
> Jezeli potrafisz napisac to lepiej to jestem bardzo ciekawy, Twojego rozwiazania.
>
Nie trzymałbym danych do obliczeń w warstwie prezentacji.
Przy okazji ustaw MIME, bo wysyłasz śmieci: http://www.grush.one.pl/mime
--
[ Artur M. Piwko : Pipen : AMP29-RIPE : RLU:100918 : From == Trap! : SIG:239B ]
[ 08:12:52 user up 12351 days, 20:07, 1 user, load average: 0.50, 0.81, 0.99 ]
I refuse to answer that question on the grounds that I don't know the answer.
>> Kolego, ja tak nie pisze tylko przedstawiam rozwiazanie pewnego
>> problemu. Laskawie pochyl glowe i zastanow sie jak w 5 linijkach kodu
>> lepiej mozna zwizualizowac rozwiazanie. Czekam na kod...
>
> Zacznijmy od tego, �e nawet nie zabiera�bym si� do projektowania aplikacji
> my�l�c panicznie, �eby zmie�ci� si� w n linijkach. P�acisz podatek od ka�dej
> napisanej linii kodu? Je�li rado�� sprawia Ci upychanie programu w
> niewielkiej przestrzeni, to raczej wy�lij Tw�j pomys� na IOCCC ni� chwal si�
> na grupach.
Pami�tam czasy gdy upychanie kodu wynika�o z konieczno�ci, czasem
upycha�o si� dwie zmienne w jednym bajcie bo z g�ry wiedzia�o si� ile
bit�w zajm� maksymalnie. Ale tego nie zrozumie nikt kto nie startowa� w
czasach gdy komputery mia�y mniej ni� 64 kilobajty pami�ci :)
Taki g�os dziadka kt�ry postanowi� ostatnio przy��czy� si� do grupy by
podszkoliďż˝ siďż˝ w nowoczesnym programowaniu (bo obecnie jestem Fortranowy
i zaczyna mi to lekko przeszkadza� :) (oczywi�cie stare zabawki z 8
bitowc�w te� mam w zanadrzu tyle �e obecnie s� ca�kiem nie przydatne )
Pozdrawiam
Qbab
> Pami�tam czasy gdy upychanie kodu wynika�o z konieczno�ci, czasem
> upycha�o si� dwie zmienne w jednym bajcie bo z g�ry wiedzia�o si� ile
> bit�w zajm� maksymalnie. Ale tego nie zrozumie nikt kto nie startowa�
> w czasach gdy komputery mia�y mniej ni� 64 kilobajty pami�ci :)
W�a�nie znikn��e� segment embedded rynku. Gdzie te� cz�sto wa�niejsza
jest czytelno�� i przeno�no�� (testowalno�� i inne -no�ci) ni�
zaoszcz�dzony bajt RAMu.
> Taki g�os dziadka kt�ry postanowi� ostatnio przy��czy� si� do grupy
> by podszkoliďż˝ siďż˝ w nowoczesnym programowaniu (bo obecnie jestem
> Fortranowy i zaczyna mi to lekko przeszkadza� :) (oczywi�cie stare
> zabawki z 8 bitowc�w te� mam w zanadrzu tyle �e obecnie s� ca�kiem
> nie przydatne )
Czy ja wiem? Zale�y czym si� zajmujesz - czasem paranoja zasobowa si�
przydaje (ale IMNSHO cz�ciej przeszkadza. Jak to sz�o? "Premature
optimization"?)
--
<:> Roger, MoonWolf Out <:>|These are the looks that
(::) (::)|chill to the bone
(:) JID:moon...@jabberpl.org(:)| http://karakkhaz.prv.pl
Nie "znikn��em", zdaj� sobie spraw� z istnienia a nawet z powod�w
istnienia r�nych obszar�w programistycznych, tak mi si� po prostu ta
dyskusja skojarzy�a z ostatni� dyskusj� z koleg� z pracy o technologi
CUDA gdzie pad� argument, �e jak na razie ma�o przydatna bo zazwyczaj ma
si� oko�o jednego giga RAM'u do dyspozycji a to przecie� ma�o :)
>
>> Taki g�os dziadka kt�ry postanowi� ostatnio przy��czy� si� do grupy
>> by podszkoliďż˝ siďż˝ w nowoczesnym programowaniu (bo obecnie jestem
>> Fortranowy i zaczyna mi to lekko przeszkadza� :) (oczywi�cie stare
>> zabawki z 8 bitowc�w te� mam w zanadrzu tyle �e obecnie s� ca�kiem
>> nie przydatne )
>
> Czy ja wiem? Zale�y czym si� zajmujesz - czasem paranoja zasobowa si�
> przydaje (ale IMNSHO cz�ciej przeszkadza. Jak to sz�o? "Premature
> optimization"?)
Nie mam paranoi zasobowej, na szcz�cie problemy kt�re rozwi�zuj�
(fizyka) zazwyczaj maj� ograniczenia wydajno�ciowe a nie pami�ciowe (w
sensie zapotrzebowania na pami��).
Pozdr
Qbab
--
Pozdrawiam
Michoo
chyba nie przesadzam, bo obstawiam �e nie robi�e� na tym jakiego�
skomplikowanego dema z grafikďż˝ wektorowďż˝, muzykďż˝ itp. a o takie rzeczy
mi chodzi�o. Wrzu� sobie na youtube i poszukaj dem z 8 bitowc�w, albo
choďż˝ rzuďż˝ okiem na pecetowďż˝ produkcjďż˝ z cyklu intro 64kb
http://www.youtube.com/watch?v=tCMo-bJQC8A
lub tďż˝:
http://www.youtube.com/watch?v=SmVCfWjiVKo
obie mnie powalajďż˝ :)
pozdr
Qbab
>>> Pamiętam czasy gdy upychanie kodu wynikało z konieczności, czasem
>>> upychało się dwie zmienne w jednym bajcie bo z góry wiedziało się ile
>>> bitów zajmą maksymalnie. Ale tego nie zrozumie nikt kto nie startował
>>> w czasach gdy komputery miały mniej niż 64 kilobajty pamięci :)
>> Nie przesadzasz trochę? Niedawno pisałem na ATiny2313, który ma 128
>> bajtów ramu. W C++. Z klasami.
>>
>
> chyba nie przesadzam, bo obstawiam że nie robiłeś na tym jakiegoś
> skomplikowanego dema z grafiką wektorową, muzyką itp. a o takie rzeczy
> mi chodziło.
Nawet biorac pod uwage takie rzeczy rozwiazanie autora watku jest
nieekonomiczne :) Pomysl o tej calej masie konwersji FloatToStr(StrToFloat()
+ StrToFloat()). Toz to paskudnie niewydajne jest :)
--
Michal Schulz
>
> Nawet biorac pod uwage takie rzeczy rozwiazanie autora watku jest
> nieekonomiczne :) Pomysl o tej calej masie konwersji FloatToStr(StrToFloat()
> + StrToFloat()). Toz to paskudnie niewydajne jest :)
>
i pieprzy zaokrągleniami, ale 'prawdziwy programista' itd...