Tue
25
Mar 2008
float t;
for (uint i = 0; i < Count; i++) {
t = (float)i / (float)(Count - 1);
Foo(t);
}
Czy da się ten kod napisać lepiej? Ano da się. Zamiast wyliczać zmienną t za każdym razem na podstawie i, można ją zwiększać niezależnie:
float t = 0.0f, t_step = 1.0f / (float)(Count - 1); for (uint i = 0; i < Count; i++, t += t_step) Foo(t);
Dla niektórych to oczywiste, ale każdy musiał się tego skądś nauczyć albo samemu wymyślić. Ja mam na to nazwę "elementarne algorytmy" i uważam, że takich rzeczy nie powinno się poznawać gdzieś przy okazji, ale porządnie spisać i nauczać początkujących programistów.
Mam nawet spisane pomysły na ponad pół setki takich drobiazgów, które możnaby opisać i zacząłem to robić w czasie wakacji 2007 jako nowa wersja mojego artykułu "Struktury danych i formaty plików" (nowy tytuł to "Brakujące ogniwo"), ale dokładne opisanie i zilustrowanie tego wszystkiego przerosło moje możliwości :)
Comments | #c++ #algorithms #teaching Share