PROCENTYOtrzymałem kiedyś do oceny program. Po jego uruchomieniu na ekranie ukazało się "Please wait", co w wolnym tłumaczeniu oznacza "Proszę czekać". Poczekałem więc nieco, ale nic się nie wydarzyło. Poczekałem jeszcze trochę, bez efektu. Wreszcie, po pięciu minutach, uznałem, że program się zawiesił, przeto z westchnieniem zawodu wyłączyłem komputer. Jakiś czas później okazało się, że program ten rozpoczynał normalne działanie po pięciu minutach i dziesięciu sekundach. Po tym pouczającym doświadczeniu przyjęło się nazywać pewien gatunek programów programami typu "please wait" (czytane fonetycznie po polsku). Typowy przedstawiciel tego gatunku przepisuje generator znakówz pamięci ROM do RAM dla uzyskania pewnych ciekawych efektów: 10 CHB1=57344:CHB2=38912:N=1023 20 CHBA=756:POKE 752,1:LIST 30 FOR I=0 TO N 40 POKE CHB2+I,PEEK(CHB1+I)*Z:Z=1-Z 50 NEXT I:POKE CHBA,CHB2/256 60 POKE 752,0:ENDAby przekonać użytkownika, że program żyje i czyni w swej pracy postępy, proponuje dopisać wywołanie procedury informującej o stopniu zaawansowania prac: 35 GOSUB 100 Poniższa procedura służy jako taki własnie wskaźnik wykonania pracochłonnej pętli w programie. Zakłada ona, że zmienną licznikową jest I (z wartościa początkową O lub 1), N zawiera wartośc końcowa, zaś K i Q$nie są używane w głównym programie. 100 ON K<>0 GOTO 130:DIM Q$(50):? 110 Q$="o":Q$(50)="":Q$(2)=Q$ 120 Q$(25,25)=".":Q$(26)=Q$(25) 130 ? INT(I/N*100);"% ";CHR$(28) 140 K=25-INT(24*I/N) 150 ? CHR$(127);Q$(K,K+24-1);CHR$(28) 160 RETURN Teraz oczywiście program wykonuje się nieco wolniej, ale przynajmniej widać, na co da śię wykorzystać czas oczekiwania: na ziewnięcie, na obiad, czy może na dłużsy spacer? Jeżeli pętla w programie (jak w tym) wykonuje się setki lub tysiące razy, wystarczy zwykle wywoływać procedurę co któryś raz, np. 35 P=P+1:IF P>15 THEN P=0:GOSUB 100 Janusz B. Wiśniewski
|