Forum strony www.multipasko.pl [Regulamin]


Dodaj wpis w tym temacie
Spis tematów
Login:

Hasło:
Strona: 1 2 3 4 ... 30 31
Wyślij wiadomość do admina

Przewiń wpisy ↓

Turbo Pascal dla zielonych

2010-04-23 (18:51)

status KURKA
Data rejestracji: 2009-01-23
Ilość postów: 2551

4098
wpis nr 315 318
[ CZCIONKA SPECJALNA ]

Aby poprawnie program wyświetlał kombinacje bez powtórzeń, musi on w pętli \"a\" przypisywać zmiennej \"a\" liczby od 1 do 37 .

Rozpoczyna pętle od a=1

W pętli \"b\" musi być zawsze o jeden więcej więc rozpoczęcie pętli od b=2 .

Albo można napisać b=a+1.



i to właśnie a+1 rozwiązuje problem, podobnie w \"c\" będzie c=b+1, w \"d\" d=c+1 .



W końcu mamy postać finalną (pierwszy etap) :

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Program MiniLotto;

Uses crt;

Var a,b,c,d,e : byte;

licznik : longint;



begin

clrscr;

writeln (\'Program MiniLotto\');

for a:=1 to 38 do begin

for b:=a+1 to 39 do begin

for c:=b+1 to 40 do begin

for d:=c+1 to 41 do begin

for e:=d+1 to 42 do begin

writeln(a,\',\',b,\',\',c,\',\',d,\',\',e,);

end;

end;

end;

end;

end;

writeln(\'Koniec programu\');

delay(3000);

end.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::



2010-04-23 (18:53)

status Pasko
Data rejestracji: 2003-08-03
Ilość postów: 4319
ADMIN
1
wpis nr 315 321
[ CZCIONKA SPECJALNA ]

Piękny temat, bo sam się uczyłem programować mając cel - zrobić narzędzie do analizy statystyk Lotto.



Mariusz od razu chce program do wybierania liczb, które padną, a przecież nie od razu taki musi być cel :)



My chcemy narzędzie do robienia statystyk. Po co? Bo niektórzy po prostu kochają się w robieniu i patrzeniu na statystyki. Oczywiście taka statystyka zawsze może prowadzić do wygranej. No bo jeśli obliczymy sobie 10 najczęściej występujących liczb w ostatnich 500 losowaniach i padnie z nich akurat 8/10, to przecież wygramy. Pewnie czysty łut szczęścia w tym wypadku i raz na 3000 losowań coś takiego się może zdarzyć, ale jednak



Co do samego tematu, to związek z Lotto ma i tutaj nie będziemy dyskutować. Programowanie można wykorzystać do tworzenia narzędzi do Lotto, co przecież sami wiecie sam praktykowałem i praktykuję.



Druga sprawa to czas, którego na pewno nie mam, żeby taki wątek prowadzić. Mariusz ma rację, że dla programistów są wspaniałe fora i strony, gdzie takie rzeczy się omawia i ja nie mogę prowadzić takiego tematu kosztem innych rzeczy, które mogę zrobić na stronie.



Nie oszukujmy się też, że każdy może być programistą. Ja polecam dobrą książkę najlepiej coś z serii \"W praktyce\" i przerabianie przykładów. Robienie tutaj podstaw programowania na przykładzie Lotto jest rzeczą dobrą, ale może się w tym realizować KURKA.



Pozdrawiam

2010-04-23 (18:58)

status KURKA
Data rejestracji: 2009-01-23
Ilość postów: 2551

4098
wpis nr 315 325
[ CZCIONKA SPECJALNA ]

Umieszczę później obraz jak to wygląda .



Z programu wyrzuciłam delay(50) -spowalniacz , ale i tak będzie on wykonywał się bardzo długo (może nawet godzinę).

Dlatego po uruchomieniu , jak rozpocznie pisanie na ekranie : 1,2,3,4,5, itd. można użyć klawisza \"break\" by zatrzymać program.



następny etap do \"zapis nie w ekranie\" a w pliku txt. który otwieramy notatnikiem.



Ale to późnym wieczorem , wcześniej dam tu obraz jak wygląda pierwszy etap.
2010-04-23 (19:14)

status KURKA
Data rejestracji: 2009-01-23
Ilość postów: 2551

4098
wpis nr 315 334
[ CZCIONKA SPECJALNA ]





http://yfrog.com/2mscreenshot003xpej

2010-04-23 (19:44)

status Marco1972
Data rejestracji: 2009-03-22
Ilość postów: 481

4343
wpis nr 315 351
[ CZCIONKA SPECJALNA ]

Kurko, pięknie to wygląda, proponuję dodać jeszcze jedną zmienną, która będzie wyrażała ilość kul. W ten sposób każdy będzie mógł sobie, że tak się wyrażę zmienić czas oczekiwania na końcowy wynik, no bo co tu ukrywać pętle te są dość czasochłonne, a i writeln też robi swoje. Tu w przykładzie ustalam na 10, ale każdy może zmienić na 42, czy 45 i odpowiednio długo czekać na rezultat. Również usuwam delay.



program minilotto;

uses crt;

var a,b,c,d,e,ilosckul:byte;

begin

qqq ilosckul:=10;

qqq writeln(\'proram wyświetla kombinacje w minilotto dla ilości kul=\',ilosckul);

qqq for a:=1 to ilosckul-4 do

qqq qqq for b:=a+1 to ilosckul-3 do

qqq qqq qqq for c:=b+1 to ilosckul-2 do

qqq qqq qqq qqq for d:=c+1 to ilosckul-1 do

qqq qqq qqq qqq qqq for e:=d+1 to ilosckul do

qqq qqq qqq qqq qqq qqq writeln(a,\',\',b,\',\',c,\',\',d,\',\',e);

qqq writeln(\'Dalej dowolny klawisz\');

qqq repeat until keypressed;

qqq clrscr;

end.
2010-04-23 (21:56)

status KURKA
Data rejestracji: 2009-01-23
Ilość postów: 2551

4098
wpis nr 315 417
[ CZCIONKA SPECJALNA ]

Marco1972 można jak piszesz, ale ja staram się jak najprościej , bo wbrew pozorom nie jest to łatwy program do nauki .



Ale nie będziemy uczyć się jak dodać dwie liczby , bo to bez sensu, nikogo nie wciągnie.



Jednak najlepsze są obrazki bo ładnie widać jak wygląda program.

My chcemy by wyniki nie pojawiały się na ekranie , ale zostały zapisane w dokumencie tekstowym.

Dlatego musimy stworzyć plik i do niego zapisać wyniki a nie na ekranie.

Plik będzie na dysku C .





2010-04-23 (22:02)

status KURKA
Data rejestracji: 2009-01-23
Ilość postów: 2551

4098
wpis nr 315 418
[ CZCIONKA SPECJALNA ]

To co jest w klamrach {tworzymy plik wynik} - nie piszecie w swym programie.

chyba , że chcecie- jest to komentarz który służy do objaśnień i stosuje się go przy nieco bardziej skomplikowanych programach , ale może na razie się przydawać w nauce.



writeln(a) czy writeln(a,\',\',b) - wyświetla na ekranie (pisze na ekranie)



writeln(wynik,a) - pisze w pliku wynik a nie na ekranie.



Teraz program działa błyskawicznie - kilka sekund i mamy na dysku C plik tekstowy o nazwie \"Wyniki MiniLotto\" o wielkości 12MB.





2010-04-23 (22:27)

status KURKA
Data rejestracji: 2009-01-23
Ilość postów: 2551

4098
wpis nr 315 427
[ CZCIONKA SPECJALNA ]

Jeszcze mała modyfikacja , dodajemy licznik tzn , numerujemy kolejne 5-tki i w ten sposób wiemy ile ich jest , jak i może to być nam później przydatne.

Nie jest to konieczne , ale jak ktoś chce to może ponumerować :







a tak wygląda po uruchomieniu Run > Run :







i wygląd pliku tekstowego :







2010-04-23 (22:44)

status KURKA
Data rejestracji: 2009-01-23
Ilość postów: 2551

4098
wpis nr 315 443
[ CZCIONKA SPECJALNA ]

Umyślnie zapisałam teraz troszkę inaczej , w innej kolejności assing ...

i writeln(\'Program.....

Nie ma to w tym przypadku znaczenia czy najpierw wyświetli napis czy najpierw utworzy plik tekstowy.



Widzę , że można licznik zrobić lepiej. Bardziej zrozumiale.



licznik:=1 ; zamieniamy na

licznik:=0;



oraz zamieniamy miejscami by najpierw zwiększał się licznik a później zapisywał do pliku tekstowego - i TU ważna jest kolejność , czyli zamiast :



writeln(wynik,licznik,\' : \',a,\',\',b,\',\',c,\',\',d,\',\',e);

licznik:=licznik+1;



będzie:



licznik:=licznik+1;

writeln(wynik,licznik,\' : \',a,\',\',b,\',\',c,\',\',d,\',\',e);





Dalej skutkiem tego będzie zmiana w tym co nie widać całego na screnie:



writeln(\'Zapisano \',licznik-1,\' wyników w pliku tekstowym \"Wyniki MiniLotto\" na dysku C\');



zmieniamy na :

writeln(\'Zapisano \',licznik,\' wyników w pliku tekstowym \"Wyniki MiniLotto\" na dysku C\');



Należy zwrócić uwagę na spacje by napisy się nie zlewały :

\'Zapisano \' a nie \'Zapisano\' - po \"o\" na końcu jest spacja.







2010-04-23 (23:11)

status KURKA
Data rejestracji: 2009-01-23
Ilość postów: 2551

4098
wpis nr 315 449
[ CZCIONKA SPECJALNA ]

Program znajduje się w folderze FPC\\2.2.4\\bin\\i386-win32.

W trakcie pisania i zapisywania Free Pascal IDE pyta o nazwę i w zależności od tego jak go nazwaliśmy , to pod taką nazwą został zapisany .

U mnie jest nazwany: mini_lotto

Zajmuje 57,8kB , czyli wysłać go znajomemu, czy innemu użytkownikowi to kwestia sekundy + klikanie myszką



Natomiast plik który on tworzy dla MiniLotto , razem z licznikiem ma już 19MB.



Po małej modyfikacji można go przerobić na Lotto .

W tym celu musimy dodać zmienną \"f\" - to jest szósta liczba i oczywiści zmienić 42 na 49 itd.

Następnie trzeba zmienić nazwę pliku tekstowego na np: Wyniki Lotto

A ten nowy plik \"Wyniki Lotto\" będzie już miał rozmiar dość duży , ponad 300MB i program będzie mielił nie sekundy a już może ponad 30s .



Raz jeszcze podaje link do programu:

FREE PASCAL :

http://www.wrzuc.to/dy8vBVEaW.wt



No i powodzenia.



Może jeszcze coś prostego zrobimy.
2010-04-23 (23:50)

status KURKA
Data rejestracji: 2009-01-23
Ilość postów: 2551

4098
wpis nr 315 452
[ CZCIONKA SPECJALNA ]

Jeszcze raz na wszelki wypadek (a od tego w sumie trzeba było zacząć , lecz nie miałam Free Pascala) screny jak po zainstalowaniu dalej uruchamiać :







jeżeli pierwszy raz otwieramy Free Pascala to będzie jak wyżej.

Kolejne otwarcia będą już od razu z oknem ostatnio przeglądanego, modyfikowanego, pisanego programu.

Gdy będziemy mieć już kilka programów i chcemy któryś edytować to naciskamy OPEN a nie NEW i dalej chyba każdy załapie.

2010-04-23 (23:54)

status KURKA
Data rejestracji: 2009-01-23
Ilość postów: 2551

4098
wpis nr 315 453
[ CZCIONKA SPECJALNA ]



tutaj widać (lub nie ) nowe okno i niżej widać (a właściwie nie widać) początek nowego programu , który zapisuje bo nie mam czasu dalej pisać go.



poniżej jest dalsza procedura zapisywania :



2010-04-24 (00:14)

status KURKA
Data rejestracji: 2009-01-23
Ilość postów: 2551

4098
wpis nr 315 454
[ CZCIONKA SPECJALNA ]

kurs TP :

http://www.pascal.eu.org/index2.htm



tu widzę że też jest kurs ale chyba bardziej zaawansowany , oraz przykładowe programy :

http://4programmers.net/Turbo_Pascal



w sieci zapewne jest wiele poradników i kursów.



ewentualnie następny prosty programik związany z grami liczbowymi w nowym temacie , by nie wydłużać i nie mieszać w tym temacie.



2010-04-24 (01:55)

status Tajemniczy Don Pedro
Data rejestracji: 2009-04-18
Ilość postów: 722

4474
wpis nr 315 458
[ CZCIONKA SPECJALNA ]

To, co by się szalenie przydało, to jakieś sposoby do przenoszenie plików do skoroszytów w kolejności według wybranych /zmiennych indeksów zmienianych przez użytkownika/ indeksów oraz sortowanie. Typowe sortowanie opisywane w podręcznikach jest prymitywne a właściwie może inaczej - nie robi tego, z czym mamy do czynienia np. w grach losowych, czy np. w hurtowniach itp. biznesach.



Wreszcie ten ciekawy program do stworzenia permutacji a właściwie kodu permutacji. Otóż jak to zrobić, żeby móc utworzony plik potem wprowadzać jako dane do excela, kiedy np. ilość danych w grze 6 z 90 jest pokaźna - 622 614 630. Ale i w DL nie mieści się w jednym arkuszu.



No i jak się to wprowadza do excela z pliku .txt. To znaczy jak to dzielić automatycznie w skoroszycie na arkusze, które byłyby otwarte jednocześnie przy takiej ilości danych, żeby kursor działał jednocześnie we wszystkich arkuszach.. U mnie excel 2007 szaleje i pisze, że zasoby komputera są za małe.



Wreszcie mam pomysł, czy nie byłoby sposobów, żeby przyspieszyć program.



>>Przetwarzanie w locie << - Mariusz o tym pisał - niech ktoś wyjaśni konkretnie jak to robić.



Dzięki za to co już za nami, ale proszę o kontynuację.



Wszystkiego Dobrego Wszystkim
2010-04-24 (06:51)

status Marco1972
Data rejestracji: 2009-03-22
Ilość postów: 481

4343
wpis nr 315 467
[ CZCIONKA SPECJALNA ]

Ja napiszę małe sprostowanie dotyczące assign , rewrite , close.

Procedury te należą do modułu system i jest to jedyny moduł, którego nie trzeba deklarować, gdyż jako jedyny dostępny jest dla wszystkich programów, że tak się wyrażę z urzędu, czy jak kto woli automatycznie każdy program, każdy moduł widzi moduł system, chodzi o deklarację uses. Moduł ten zawiera funkcje i procedury dotyczące wejścia, wyjścia, czyli obsługi zbiorów, operacji konwersji liczb i operacji łańcuchowych, porządkowych, oraz operacji służących do dynamicznego przydziału i zwalniania pamięci, ponadto w module tym opisane są wszystkie funkcje arytmetyczne i wskaźnikowe.
2010-04-24 (10:59)

status KURKA
Data rejestracji: 2009-01-23
Ilość postów: 2551

4098
wpis nr 315 500
[ CZCIONKA SPECJALNA ]

Tajemniczy Don Pedro

poruszasz kilka problemów a to za dużo by wątek był łatwy ,przejrzysty i zrozumiały dla początkującego, kogoś kto chce spróbować napisać pierwszy, czy dziesiąty programik w TP.



Możemy plik Lotto (który powstaje na wzór Minilotto) podzielić na mniejsze pliki np:

od 1,2,3,4,5,6 do 1,45,46,47,48,49

od 2,3,4,5,6,7 do 2,45,46,47,48,49

itd,

lub biorąc pod uwagę licznik od 1 do 1 000 000 ,

od 1 000 001 do 2 000 000 - i będzie 14 mniejszych plików tekstowych.



Przy dzieleniu pliku na mniejsze można poznać dodatkowe funkcje , czego w przypadku pierwszego programu Minilotto chciałam uniknąć (za dużo na raz).









2010-04-24 (16:09)

status KURKA
Data rejestracji: 2009-01-23
Ilość postów: 2551

4098
wpis nr 315 604
[ CZCIONKA SPECJALNA ]

Tutaj program Lotto , (przerobione Minilotto)

oraz niżej nieco przerobiony :



2010-04-24 (16:11)

status KURKA
Data rejestracji: 2009-01-23
Ilość postów: 2551

4098
wpis nr 315 605
[ CZCIONKA SPECJALNA ]

Dodanie kilku opisów - writeln(\'.......\'); - czyni go bardziej zrozumiałym.



Tak wykonuje się :







Ja teraz umieściłam plik z wynikami na dysku G.

2010-04-24 (16:14)

status Marco1972
Data rejestracji: 2009-03-22
Ilość postów: 481

4343
wpis nr 315 607
[ CZCIONKA SPECJALNA ]

Tajemniczy Don Pedro, wklejam Ci zakładkę, gdzie można pobrać darmową wersję excel2010 wersja beta, gdzie nie ma limitu rozmiaru pliku do 2 Gb.

Mnie plik z samymi kombinacjami gry 6/90 zajął 10 Gb na dysku jako plik txt.

http://www.microsoft.com/poland/2010/office/excel/default.aspx#

Ja również za chwilę pobiorę i zobaczymy, co się z tym fantem da zrobić.
2010-04-24 (17:12)

status 777ch
Data rejestracji: 2005-11-07
Ilość postów: 21426

1386
wpis nr 315 623
[ CZCIONKA SPECJALNA ]

Tajemniczy Don Pedro

Napisz na mój e-mal

ale.....są warunki



1/ załącz bazę gry 6/90 obojętnie czy w pliku txt. czy w excelu.

2/ czekaj CIERPLIWIE

3/ napisz mi coś o tej grze .

Odpowiedzi na Twoje pytania są baaaaaa......rdzo proste .

Jak dostosuję do 6/90 to dostaniesz :

\" NARZĘDZIE ....ZBRODNI\"



| Dodaj wpis w tym temacie | Spis tematów | Wyniki lottoStrona: 1 2 3 4 ... 30 31
Wyślij wiadomość do admina