Prawdziwe oblicze Informatyki. Tysiące linijek kodu i kompilatory które nigdy nie wybaczają.
Awatar użytkownika

TheMediator95

Posty: 468
Rejestracja: 29 kwie 2010, 9:35
Kontakt:
    Windows 7 Opera

Post27 lip 2012, 22:32

Zmiana planów (Brawa urban :trollface: ):
Wszystko jest w załączniku liczę na jakieś rady, z etykietami byłoby o wiele prościej - ale zmiana sterowania nie chce mi działać :(

Awatar użytkownika

lolasher

Zasłużony użytkownik
Posty: 2384
Rejestracja: 10 paź 2008, 18:28
Lokalizacja: Zadupie pod Siedlcami ;)
Kontakt:
    Windows 8 Opera

Post27 lip 2012, 23:46

Panie, jak ma ci wracać do menu, jak menu nie jest w pętli?
Po drugie, dlaczego nie wstawisz deklaracji pytań zaraz za deklaracją zmiennych, tylko gdzieś w case'ie, tak że kod nieczytelny?
Może ci napiszę taką bezpośrednią "przekładnię" do etykiet to ogarniesz.
Konstrukcję

Kod: Zaznacz cały

etykieta
   costamcostam;
   if warunek then
         goto etykieta

zastępujesz

Kod: Zaznacz cały

repeat
   cośtamcośtam;
until warunek


W praktyce potrzebujesz pętlę od początku do końca programu i przełącznik, który ją kończy po wybraniu z menu "Koniec".

Awatar użytkownika

TheMediator95

Posty: 468
Rejestracja: 29 kwie 2010, 9:35
Kontakt:
    Windows 7 Opera

Post28 lip 2012, 10:50

lolasher pisze:Panie, jak ma ci wracać do menu, jak menu nie jest w pętli?

Na razie nic nie jest w pętli :), z wyjątkiem pętli odpowiedzialnej za losowanie pytań której teraz już nie mogę użyć ponieważ jak ktoś odpowie na pytanie to już nie powróci do gry tylko będzie zmuszony odpowiadać na pytania w wieczność.

lolasher pisze:Po drugie, dlaczego nie wstawisz deklaracji pytań zaraz za deklaracją zmiennych, tylko gdzieś w case'ie, tak że kod nieczytelny?

Gdzieś przeczytałem że procedury lepiej niech są przed funkcjami, bo później jak coś dodam to będę się pocił i nie wiedział o co chodzi że nie działa.

lolasher pisze:Może ci napiszę taką bezpośrednią "przekładnię" do etykiet to ogarniesz.
Konstrukcję

Kod: Zaznacz cały

etykieta
   costamcostam;
   if warunek then
         goto etykieta

zastępujesz

Kod: Zaznacz cały

repeat
   cośtamcośtam;
until warunek


Nie nie ogarnę bo niby skąd pętla ma wiedzieć kiedy użytkownik chce coś zrobić ?? Na pdst. twojego przykładu:
załóżmy że warunek się skończy (Pętla się skończy) i użytkownik będzie chciał wykonać zawartość pętli dwa lub więcej razy to co? (Np. sytuacja gdy użytkownik wchodzi dwa (lub więcej razy) w ustawienia sterowania czy grafiki) Będę w ciemno dawał tyle pętli ile użytkownik będzie chciał zmienić jakieś ustawienie? (Widzimisię użytkownika są nieprzewidywalne więc nie wiem ile takich pętli mam zrobić...).

lolasher pisze:W praktyce potrzebujesz pętlę od początku do końca programu i przełącznik, który ją kończy po wybraniu z menu "Koniec".

Co masz na myśli mówiąc przełącznik?

Awatar użytkownika

pc.qwerty

Zasłużony użytkownik
Posty: 3272
Rejestracja: 01 lip 2010, 11:28
    Series 60 Opera

Post28 lip 2012, 10:58

Przecież można pętlę opuścić przez break; a w moim przykładzie poprzez fakju :=true;
There is no cloud. It's just someone else's computer.

Awatar użytkownika

TheMediator95

Posty: 468
Rejestracja: 29 kwie 2010, 9:35
Kontakt:
    Windows 7 Opera

Post28 lip 2012, 11:12

Opuścić można, ale jak potem do niej wrócić gdy zostanie opuszczona? Tak wiem: continnue, ale to nie rozwiąże problemu chyba że nie umiem używać tej procedury :P

Awatar użytkownika

pc.qwerty

Zasłużony użytkownik
Posty: 3272
Rejestracja: 01 lip 2010, 11:28
    Windows 7 Opera

Post28 lip 2012, 11:23

No to zadawanie pytań ładujesz w procedurę którą w razie potrzeby wywołujesz.
There is no cloud. It's just someone else's computer.

Awatar użytkownika

TheMediator95

Posty: 468
Rejestracja: 29 kwie 2010, 9:35
Kontakt:
    Windows 7 Opera

Post28 lip 2012, 11:27

Co mi to da? jak i tak po zadaniu pytania procedura nie wróci do momentu ruchu użytkownika.

Awatar użytkownika

lolasher

Zasłużony użytkownik
Posty: 2384
Rejestracja: 10 paź 2008, 18:28
Lokalizacja: Zadupie pod Siedlcami ;)
Kontakt:
    Windows 8 Opera

Post28 lip 2012, 12:10

Mediator14 pisze:Gdzieś przeczytałem że procedury lepiej niech są przed funkcjami, bo później jak coś dodam to będę się pocił i nie wiedział o co chodzi że nie działa.


ŻE SZO? Nie wiem jakie ty brednie czytasz, a mi i tak nie chodzi o żadne procedury czy funkcje, tylko przypisanie wartości.

Chyba ci muszę to napisać w pascalu bardzo dokładnie, bo ty nie chcesz nawet przez chwilę pomyśleć w inny sposób niż przez etykiety.

//Nie rób wcięć na przemian tabem i spacjami, bo mi się to tam rozsuwa strasznie dziwnie to wszystko, ładnie poprzesuwałem równiutko, a wraz na wklejce się popsuło :(

http://pastebin.com/1rrTn2pn

Przesuwanie pionka daj do procedury, Dobrze i Zle wstaw do wszystkich Pytaj i zamień je na procedury. Cały case na końcu zamień w procedurę losuj wyświetlającą jedno pytanie. Postaraj się maksymalnie skrócić kod w głównej pętli programu, łatwiej będzie ci później dodawać nowe rzeczy.

Awatar użytkownika

TheMediator95

Posty: 468
Rejestracja: 29 kwie 2010, 9:35
Kontakt:
    Windows 7 Opera

Post28 lip 2012, 12:57

lolasher pisze:ŻE SZO? Nie wiem jakie ty brednie czytasz, a mi i tak nie chodzi o żadne procedury czy funkcje, tylko przypisanie wartości.

Napisałeś:
lolasher pisze:Po drugie, dlaczego nie wstawisz deklaracji pytań zaraz za deklaracją zmiennych, tylko gdzieś w case'ie, tak że kod nieczytelny?

yy a o tym nie mówiłem? Chyba coś ci się pokręciło [Przypominam]:
Deklarowanie zmiennej = to nazwanie zmiennej i zarejestrowanie dla niej miejsca w pamięci,
Definiowanie zmiennej = nadanie zmiennej jakiejś wartości.
W przypadku tego programu deklarowanie zmiennej danego typu (rekordowego) jest zapisane po słowie kluczowym var i type (Tablica rekordów). A zdefiniowane są wartości w treści programu, więc nie wiem o co tobie chodzi,

lolasher pisze:Chyba ci muszę to napisać w pascalu bardzo dokładnie, bo ty nie chcesz nawet przez chwilę pomyśleć w inny sposób niż przez etykiety.

Nie myśl sobie że nic innego nie próbowałem - ja nie zapisuje nieudanych prób, bo to nie ma sensu, tylko odbiegnę od punktu wyjścia.

lolasher pisze://Nie rób wcięć na przemian tabem i spacjami, bo mi się to tam rozsuwa strasznie dziwnie to wszystko, ładnie poprzesuwałem równiutko, a wraz na wklejce się popsuło

Używając Geaniego nie ma takich problemów, a ty z jakiego kompilatora w ogóle korzystasz, masz jakąś nakładkę na niego?

lolasher pisze:http://pastebin.com/1rrTn2pn

Przesuwanie pionka daj do procedury, Dobrze i Zle wstaw do wszystkich Pytaj i zamień je na procedury. Cały case na końcu zamień w procedurę losuj wyświetlającą jedno pytanie. Postaraj się maksymalnie skrócić kod w głównej pętli programu, łatwiej będzie ci później dodawać nowe rzeczy.

Zrobię tak, ale już przewiduje problemy dotyczące zmian o jakich mówisz - ale o tych problemach powiem Ci jak już faktycznie będą. A co do tego kodu co tam wpisałeś "Repeat Until (x=26) and (y=21)" już tak zrobiłem tylko niestety ale nie działa pisałem o tym już wcześniej.

Awatar użytkownika

lolasher

Zasłużony użytkownik
Posty: 2384
Rejestracja: 10 paź 2008, 18:28
Lokalizacja: Zadupie pod Siedlcami ;)
Kontakt:
    Windows 8 Opera

Post28 lip 2012, 13:06

No dobrze, w treści programu, ale nie może być zaraz po begin, tylko w jakiś case'ach nie wiadomo gdzie, żebym musiał przewijać i gubić wątek? Co do kompilatora, to wcale nie korzystam :P Jak już naprawdę muszę to otwieram w Free Pascalu kod wcześniej napisany w Notepad++.

A co do warunku w until, to sprawdziłeś czy moje działa? Bo u ciebie było tak, że pionek przesuwał się raz i zaczynała się pętla. No i to było oczywiste, że nie ma prawa się skończyć, bo nigdzie nie było miejsca, gdzie zmieniałeś wartości x i y. A ja "poszerzyłem" pętle tak, żeby na przemian zadawać pytanie i przesuwać pionek.

I ja jestem ciekawy jakie ty widzisz problemy dla zaproponowanych przeze mnie poprawek. Bo przecież one tylko i wyłącznie poprawiają czytelność, kod się będzie wykonywał identycznie.

Mediator14 pisze:Gdzieś przeczytałem że procedury lepiej niech są przed funkcjami, bo później jak coś dodam to będę się pocił i nie wiedział o co chodzi że nie działa.


O co w tym chodzi? Podejrzewam, że ktoś tak napisał o ironio tylko po to, żeby mieć czytelniejszy kod i akurat takiej bzdetnej rady słuchasz, a z poważnymi się kłócisz ;)

Awatar użytkownika

TheMediator95

Posty: 468
Rejestracja: 29 kwie 2010, 9:35
Kontakt:
    Windows 7 Opera

Post28 lip 2012, 13:21

lolasher pisze:
Mediator14 pisze:Gdzieś przeczytałem że procedury lepiej niech są przed funkcjami, bo później jak coś dodam to będę się pocił i nie wiedział o co chodzi że nie działa.

O co w tym chodzi? Podejrzewam, że ktoś tak napisał o ironio tylko po to, żeby mieć czytelniejszy kod i akurat takiej bzdetnej rady słuchasz, a z poważnymi się kłócisz ;)

Już Ci mówię dlaczego procedury daje się przed funkcją: Ponieważ procedury mogą być później używane w funkcjach, a funkcje w procedurach nie - taka w tym logika :P

PS...dobra później wprowadzę zmiany w kodzie bo aktualnie nie bardzo mam czas.

Awatar użytkownika

lolasher

Zasłużony użytkownik
Posty: 2384
Rejestracja: 10 paź 2008, 18:28
Lokalizacja: Zadupie pod Siedlcami ;)
Kontakt:
    Windows 8 Opera

Post28 lip 2012, 13:27

Mediator14 pisze:Już Ci mówię dlaczego procedury daje się przed funkcją: Ponieważ procedury mogą być później używane w funkcjach, a funkcje w procedurach nie - taka w tym logika


Yyyy a kto mi zabroni? Naczytasz się bredni, a potem marnuj tydzień, żeby ci przetłumaczyć :P

Awatar użytkownika

TheMediator95

Posty: 468
Rejestracja: 29 kwie 2010, 9:35
Kontakt:
    Windows 7 Opera

Post28 lip 2012, 13:30

Ku*wa nie wierzy... To sobie napisz Procedurę zawierającą funkcję (Nie wywołanie funkcji tylko funkcję) Ja pie*dole :wsciekly: , naczytam się bredni - z tym że te brednie stosuje już od początku mojego programowania i jeszcze ani razu się na nich nie zawiodłem (Przynajmniej jeśli chodzi o procedury i funkcje).

Awatar użytkownika

lolasher

Zasłużony użytkownik
Posty: 2384
Rejestracja: 10 paź 2008, 18:28
Lokalizacja: Zadupie pod Siedlcami ;)
Kontakt:
    Windows 8 Opera

Post28 lip 2012, 14:11

A napisz funkcję zawierającą procedurę (nie wywołanie procedury, tylko procedurę) :P Tak samo się nie da. Bronisz tego swojego dziwnego poglądu trochę na siłę :P

Awatar użytkownika

TheMediator95

Posty: 468
Rejestracja: 29 kwie 2010, 9:35
Kontakt:
    Windows 7 Opera

Post28 lip 2012, 14:57

Funkcję zawierającą procedurę można napisać... Ale jak się nadal upierasz że nie to sobie sprawdź jak mi nie wierzysz ;)
A i to nie jest dziwy pogląd tylko prawda. :rotfl:

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość