1 Ostatnio edytowany przez Iron (2011-01-09 10:58:08)

Piszę sobie takie g warte badziewie z nudów, no i pojawił się problem, za cholerę nie wiem co jest grane, daje screen z listingiem bo mi się nie chciało przepisywać :P

http://img3.imageshack.us/img3/9186/atariscreen.jpg

Uploaded with ImageShack.us

Na logikę biorąc gdy A<150 to B=B+1 czyli za każdym obrotem o jeden rosnąć o jeden, niestety efekt jest taki że gdy A<150 to B=0 i koniec, ani nie rośnie ani nic, nic się nie dzieje, reszta drukowanych puntów idzie prawidłowo, więc pytam co jest grane, przyglądałem się listingowi ze sto razy no i jestem głupi czemu dzieje się tak a nie inaczej.

P.S. Dodam że zmienna Z również stoi w miejscu, ale trzyma swoją wartość 90 jak na początku jest to zadeklarowane.

2

nie znam basica ale sprobuj w linii 910 zamiast "AND" wpisac ":".

http://atari.pl/hsc/ad.php?i=1.

3

Spóbuj dodać nawiasy - w zwykłym Atari Basicu chyba są wymagane, o ile dobrze pamiętam. 100 lat nie pisałem w Atari Basicu - Turbo Basic wiele pomaga w składni ;) Czyli linia 910 coś w ten deseń:

910 IF (A<150) THEN (B=B+1 AND Z=Z-1)

LUB:

910 IF (A<150) THEN (B=B+1) AND (Z=Z-1)

JAK NIE POMOŻE - WKLEJ KOD, BO NIE CHCE MI SIĘ TERAZ PRZEPISYWAĆ ;p (sorki, caps)

Sikor umarł...

4

A co to ma robić :
  IF A<150 THEN B=B+1 AND Z=Z-1
?

1. Zwiększyć B i zmniejszyć Z gdy A< 150
2. Przypisać do B wynik działania B+1 AND Z=Z-1

5

BartoszP napisał/a:

A co to ma robić :
  IF A<150 THEN B=B+1 AND Z=Z-1
?

1. Zwiększyć B i zmniejszyć Z gdy A< 150
2. Przypisać do B wynik działania B+1 AND Z=Z-1

Opcja pierwsza ;)

xxl napisał/a:

nie znam basica ale sprobuj w linii 910 zamiast "AND" wpisac ":".

I to zadziałało ;)

Nawiasy za THEN każdorazowo wywalały błąd :P

Jedyne mnie zastanawia to to że Z=Z-1 będąc po dwukropku nie jest już w składzie z instrukcją IF....THEN..., tylko osobną instrukcją, i się zastanawiam czy z tej okazji w dalszej rzeźbie w g***** nie będzie problemów.

A tak ogólnie, to wielkie thx za pomoc ;)

6 Ostatnio edytowany przez Sikor (2011-01-09 12:31:00)

A to coś źle Atari Basic pamiętam, a sposób XXL-a niewątpliwie Z wyrzuca za warunek. Najprościej powtórzyć całego IF-a na Z teraz - czyli dać drugi warunek...
====>
No tak, instrukcja IF może mieć warunek złożony, ale daje jeden wynik. Czyli można napisać na przykład:

10 IF (A=0 AND B=7) THEN ?"DUPA"
20 IF A<100 OR B>1000 THEN "PUPA"

Ale zawsze (w Atari Basicu) mamy jedną instrukcję po then.
Można też wykorzystać czasem pewną właściwość instrukci if:

10 IF A THEN ?"BLABLABLA"

Co spełnia warunek zawsze, gdy A jest różne od zera. W Twoim przypadku widzę conajmniej 2 wyjścia:
1. Dać dwa warunki jeden po drugim
2. Wywołać podprogram - na przykład przez:

90 IF A<150 THEN GOSUB 200
..
200 B=B+1:Z=Z-1:REM TRYLION INNYCH PARAMETRÓW
210 RETURN

Który sposób lepszy? Nie wiem, przy 2 warunkach pewnie działają podobnie, przy wielu - pewnie gosub/goto wydajniejszy. Powodzenia.

Sikor umarł...

7

zmienna "Z" nie jest wyrzucona poza warunek bo znajduje sie w tym samym wierszu (nawet po ":")...

http://atari.pl/hsc/ad.php?i=1.

8

XXL: hmm, o takiej właściwości Atari Basica nie wiedziałem, zawsze mnie uczono, że ":" jest równoznaczny z końcem linii. Ale skoro tak twierdzisz - to  może być prawda. Przyda się ta wiadomość na przyszłość.

Sikor umarł...

9

Eeee, ja tam zawsze pamiętałem iż ":" używamy, by wpakować więcej instrukcji, i w pszypadku if ...then wszystkie instrukcje po then są wykonywane jesli warunek jest prawdziwy. And to tylko logiczny operator koniunkcji, nie używa się go do łączenia instrukcji, które mają być wykonane.

Iron, taka rada na przyszłość - rozkaz "LIST Dx:nazwa.lst" (x - numer stacji, nazwa.lst - jakaś nazwa), zapisze ci program w Basicu w rozczytywalnej formie tekstowej. Potem tylko wyciągnąć z ATR'a, zmienic znaki końca wiersza (konwerter jest w emu) i można wkleić na forum :)

grzybson/SSG^NG

10

Grzybson,

jeśli plik jest *.BAS (stokenizowany) jest zapisany w ATRze, to pod WC i pluginem wciskasz na pliku F3 i masz View listingu odtokenizowanego.

jeśli jest to plik *.LST to tak samo.... plugin przemieni ATASCII na ASCII automatycznie....

11

grzybson: P:
pajero: nie wszyscy uzywaja windy...

The UNIX Guru`s view of Sex:
unzip; strip; touch; finger; mount; fsck; more; yes; umount; sleep

12

no, niektorzy wola schody.

13

jellonek napisał/a:

grzybson: P:
pajero: nie wszyscy uzywaja windy...

albo JELLONEK dostał status admina (bo wyedytował swój post bez info o takiej operacji na dole - a znikła docinka do Sikora by nie brał się za porady dot. programowania)
albo tu się dzieją cuda....

14

tamten post zostal usuniety przez delego, bo "nie trzymal poziomu".

The UNIX Guru`s view of Sex:
unzip; strip; touch; finger; mount; fsck; more; yes; umount; sleep

15

bo nie trzymal
nawiasem mowiac, ja moge sobie szerzyc "defetyzm", ale przynajmniej cos robie
nawet sikor cos robi
ale co ty robisz? mortal kombat nie napisany, kontiki kto inny ciagnie, a wasc jedynie smuci na forum - zeby liczniczek sie krecil

przechodze na tumiwisizm

16

tak, obwieszczasz miljony projektow, pokazujesz screeny po czym obwieszczasz ze za maly odzew i ci sie nie chce.

rozgryzles mnie z tym liczniczkiem - no po prostu musialem Ciebie przegonic...

The UNIX Guru`s view of Sex:
unzip; strip; touch; finger; mount; fsck; more; yes; umount; sleep

17

Heh, zwykle się z Candlem nie zgadzam "bo tak", ale tu nie mogę tego zrobić. Sorry Winnetou. :P

A wracając do tematu:
w linii 910 AND zamień na dwukropek (jak Xxl napisał) - zadziała na 100%.

Jell: ortografia cię kładzie, też może już się połóż.

I Ty zostaniesz big endianem...