kategoria: AMOS
[#1] Początki programowania w Amosie
Wziąłem się w końcu za naukę programowania. Mam książki o Amosie, Asemblerze 68k oraz Sumfonie C++. Zaczynam od Amosa z tego względu, ze kiedyś programowałem w Basicu na C64.

Moim pierwszym "dużym programem: jest kalkulator :D

Dodawanie, odejmowanie, mnożenie poszło mi gładko tu nie miałem jakiś problemów.


Problemem dla mnie jest dzielnie. Zacząłem robić obsługę błędów tej części programu. Przy próbie dzielna prze zero program grzecznie informuje, że się tak nie da. Problemem dla mnie jest uzyskanie rzeczywistych wyników. Jak dzielę 20 przez 3 to dostaję 6. Szczerze powiem, ze tu nie mam żadnego pomysłu puki co jak sobie z tym poradzić.


Jakieś rady dla początkującego pseudo programisty?


Benedykt Dziubałtowski

[#2] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #1

Przejdz na C, bedzie lepiej, latwiej i wygodniej ;)

Coz, co do dzielenia to robisz je na liczbach calkowitych, wiec wynik jest jak najbardziej poprawny. Jezeli chcesz miec reszte to sprawdzaj sobie reszte dzielenia albo baw sie na liczbach zmiennoprzecinkowych. Wiecej nie pomoge bo dzieki bogu nie brudzilem sie amosem.

[#3] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #1

Nie programowałem dawno w Amosie, ale mam jeszcze książkę. Napisane jest w niej, że zmienne zawierające liczby rzeczywiste (zmiennoprzecinkowe) tworzy się poprzez dodanie znaku # na końcu nazwy np.

liczba# = 3.14

Taka zmienna powinna przechowywać prawidłowy wynik dzielenia.

[#4] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #1

Cześć

Musisz amosa poinformować, że będzie dzielenie "niecałkowite" i będziesz używał liczb zmiennopozycyjnych.
Prosta deklaracja na początku programu np: a=1.0 powinna załatwić sprawę.
Później w programie używasz nazwy zmiennej ze znakiem # na końcu nazwy.

Ooo
Minniat już mnie uprzedził :)



Ostatnia modyfikacja: 12.07.2011 21:14:12



Ostatnia modyfikacja: 12.07.2011 21:16:22
[#5] Re: Początki programowania w Amosie

@Minniat, post #3

Działa!! Bardzo dziękuję :)


Kolejny problem.


Mam taki kod który losuje 2 liczby

A= RND(20)
B=RND(20)

Print " podaj wynik dzielnie" A/B; "?"

Input C
I A*B=c Then print "dobrze" else print "źle"


Zadanie jakie sobie postawiłem to aby program zawsze losował liczby, których wynik dzielenia da liczbę całkowitą. Chodzi mi o to aby program nie losował takich kulonów jak 15 podzielone przez 8


Jak taki wyjątek obsłużyć?



Benedykt Dziubałtowski

[#6] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #1

Co do literatury to sprawdź forum retroreadrs, znajdziesz tam namiary na literaturę po polsku, do końca tygodnia będzie tam co nowego w temacie AMOSa ;).

[#7] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #5

Wylosuj liczby A i B. Następnie do A zapisz iloczyn A przez B. Wtedy zawsze w A będziesz miał wielokrotność B ;)

[#8] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #5

Twoje zadanie nie jest wcale takie proste.
Tu juz musisz uzyc instrukcji warunkowych bo bedzie trzeba rozpatrzyc kilka warunkow. Czyli ogolnie napisac mini algorytm dla zadania matematycznego.

Pytanie podstawowe kiedy wynik dzielenia dla A i B moze byc calkowity?

wypisz sobie wszystkie mozliwe sytuacje..
[#9] Re: Początki programowania w Amosie

@Minniat, post #7

Starznie długo kombinowałem dlaczego Amos nie chce przyjąć mi A*B=D. W końcu mnie oświeciło, że trzeba wpisać D=A*B. Wyjątek działa. No to zrobiłem prymitywny program do nauki dzielenia. Trzeba pomyśleć teraz na napisaniem czegoś innego.


Benedykt Dziubałtowski

[#10] Re: Początki programowania w Amosie

@selur, post #8

A to nie prościej przed pytaniem o wynik nakazać maszynie wykonanie tego dzielenia i jeżeli wynik nie będzie liczbą całkowitą dać instrukcję powrotu do losowania? Prosty IF załatwi sprawę.

[#11] Re: Początki programowania w Amosie

@mailman, post #10

Też o tym myślałem. Ale weź pod uwagę fakt, że program powiedzmy zaloguje z 500 razy zanim wylosuje odpowiedni wynik. Nie mam pojęcia jak wpłynie coś takiego na zajęcie procesora. Tutaj mamy szybkie rozwiązanie.


Benedykt Dziubałtowski

[#12] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #11

Zeby sie nie zniechecac wlasnie przez takie szopki najlepiej zapytac.

Zaczalbym od opanowania podstawowych instrukcji petli, warunku, zmiennych tekstowych i wyswietlania w trybie tekstowym a po tym zaraz najwazniejsze opanowanie tablic kilku-wymiarowych.
Po opanowaniu tych instrukcji mozna zaczac pisac proste mini-gry w trybie tekstowym.

czyli tak IF, FOR , Print At, Dim i jazda ... :)
[#13] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #11

to musisz jeszcze wlaczyc randomize timera aby za kazdym razem funkcja RND losowala ci co innego

jak chcesz cos szybko fajnego zrobic polecam zaladowac modul do banku zaladowac obraz w tle zrobic shift palet i poroszac screenem w rytm muzyki

ok 30 linijek kodu z tego co pamietam

ps.bardzo ciekawy byl AMAL w amosie



Ostatnia modyfikacja: 12.07.2011 23:12:39
[#14] Re: Początki programowania w Amosie

@mailman, post #10

Zapewne dosyć szybko wylosuje właściwy wynik, ale sama idea jest srednio elegancka, bo dopuszcza mozliwość wystąpienia nieskończonej pętli, co w praktyce jest równe zawieszeniu się programu.
A co do tego losowania, to najlepiej wylosować wynik C (czyli iloraz), oraz B (dzielnik), zaś A wyliczyć jako wynik iloczynu C x B.
Jeśli więc C i B będą całkowite, to A także. A potem pytamy nieszczęsnego ucznia (bo chyba do tego ma służyć ten program :) ) o wynik dzielenia A/B. Efekt ten sam.

PS. C.... tylko C
[#15] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #9

Starznie długo kombinowałem dlaczego Amos nie chce przyjąć mi A*B=D. W końcu mnie oświeciło, że trzeba wpisać D=A*B


jakbys musial zapisac to w ONP to dopiero byloby dlugie kombinowanie ;)

[#16] Re: Początki programowania w Amosie

@wali7, post #14

He, he... Wczoraj coś podobnego z mnożeniem kombinowałem, ale o godzinie, gdy odpisywałem na posta już nie byłem w stanie myśleć. To jest najlepsze rozwiązanie.

[#17] Re: Początki programowania w Amosie

@wali7, post #14

Czemu zniechęcacie naszego adepta do AMOSa? Toż to z mojego doświadczenia jest świetny język, dla początkującego jak znalazł. W C trzeba znać działanie kompilatora i linkera, trzeba wiedzieć jak korzystać z bibliotek. Trzeba znać wskaźniki i wiele innych rzeczy. A jeśli nasz kolega ma problemy z wyrażeniami warunkowymi to w C będzie mu bardzo trudno na początku. Dla otuchy napiszę, że ja również pisałem kalkulator jako swój pierwszy duży program w Basicu C64 :)

@Benedykt
To wyrażenie powinieneś ująć w nawiasy, pewnie wtedy AMOS to skompiluje. Czyli napisać

IF (c*b)=a THEN ...


AMOS ma setki poleceń do wyświetlania grafiki, obiektów animowanych, ikonek, odtwarzania muzyki, dźwięków. Własny system okienek oraz bardzo stylowy interfejs użytkownika (do zastosowania we własnych programach). Ma szereg programów demonstracyjnych (zawartych na dodatkowych dyskietkach do AMOSa Professional). Na przykład jest tam gotowa gra razem z edytorem plansz. Są tam też edytor sampli oraz edytor obiektów graficznych. Dla mnie ten pakiet programistyczny jest troszkę źle oceniany. Pewnie dlatego, że nie działa systemowo. Ale dzięki temu działa szybko na Amidze klasycznej.

Nie wiem co teraz porabia Francois Lionet, ale gdyby działał w środowisku Amigi to pewnie napisałby AMOSa dla MorphOSa bądź AmigaOS4.0. Wtedy pewnie AMOS wróciłby do łask dzisiejszych koderów :).



Ostatnia modyfikacja: 15.07.2011 13:51:21
[#18] Re: Początki programowania w Amosie

@Minniat, post #17

Dzięki za miłe słowa. Pełny dumy i pychy :P publikuję dwa moje pierwsze "dzieła"

http://nexus.ppa.pl/dzielenie.zip

Jeden program zajmuje się dzieleniem drugi ma szersze możliwości( dodawanie, odejmowanie, dzielenie, mnożenie i chyba najważniejsze wyjście do systemu)


Uwaga pierwszy program nie ma opcji wyjścia do systemu aby to zrobić bez resetu komputera należy wcisnąć kombinację ctrl+c


Mam kilak pytań.

Czy da się kod źródłowy Amosa wyeksportować do TXT?


Mam problem z komendą FADE. W edytorze Amosa działa ona dobrze ale po skompilowaniu już nie.


Kolejny mój problem, którego rozgryźć nie umiem to dziwne zachowanie komendy input. Gdy podaje wyniki powiedzmy dzielna w małym zakresie to jest ok ale jak wpisze coś głupiego np 38429171298569872134651234 to program się wysypuje.


Kombinowałem z dodaniem wyjątku np jak się poda liczbę większą od 10 to wyskakuje komunikat "za dużo" ale gdy coś takiego stosuję to komputer ulega zawieszeniu.




Co do reszty spostrzeżeń. Wybrałem Amos anie bez przypadku.

1. jest prosty
2. Miałem już styczność z Basicem na C64 więc jakieś tam podstawowe podstawy mam.
3. Wiele gier jest napisanych w Basicu do których kodów źródłowych mam lub mogę mieć dostęp. Dzięki temu można wyeliminować bugi zrobić poprawione wersje it itd możliwości jest dużo.
4. Może kiedyś jak opanuję C i Asemblera to wezmę się za portowanie. Kto chce Pechowego Prezenta ze wsparciem dla GFX ??
5. Marzy mi się napisanie gry na A500. Bardzo lubię grać w gry online typu Twoer Defence. Na Amigę nie ma tego za wiele.
6. Jak przeboleje Amosa to się biorę za C lub asemblera.



Benedykt Dziubałtowski

[#19] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #18

Sam sobie odpowiedziales. Program to nie czlowiek i jesli podajesz mu "glupie" wartosci on przetwarza, to co mu nakazales przetwarzac.
Mala uwaga. Nie uzywaj liczb jako etykiet bo to jest mylace. Zamiast
1
2
3
4
lepiej zapisac
jeden:
dwa:
trzy:
cztery:
no i odpowiednio
gosub jeden
gosub dwa
itd..


Akurat w amosie jest to beznadziejnie rozwiazane ale mozna wyeksportowac do ASCII.
Przesuwasz kursor na pierwsza linie programu, w zakladce BLOCK (bloki programu) wybierasz ALL TEXT. Podswietli sie caly program w edytorze. Znowu w zakladce BLOCK wybierasz opcje STORE (przechowaj w pamieci).
Po czym ponownie w zakladce BLOCK wybierasz opcje SAVE ASCII i zapisujesz plik. Z tym ze taki plik najepiej zapisac i odczytac jako *.doc (najlepiej w MS Wordzie) bo w edytorach *.txt pojawia sie dodatkowe znaki kontrolne jako czarne kwadraciki, wiec malo przejrzyste to jest.
Zanim to zrobisz "otworz" wszystkie Procedury jakie sie znajduja w programie, bo inaczej po zapisaniu takiego pliku ASCII beda one tylko jako nazwy bez ich zawartosci..chyba jakos tak.



Ostatnia modyfikacja: 15.07.2011 18:47:55
[#20] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #18

Odwiedzam PPA od 3 lat ,w sumie tylko dla ludzi rownie sympatycznych jak ty.Nie pomoge ci z programowaniem ale chcialem ci tylko powiedziec ,ze za malo cie tu ostatnio.
[#21] Re: Początki programowania w Amosie

@Aniol, post #20

Co mas zna myśli pisząc za mało? Ostatnio jestem właśnie bardzo aktywny na PPA.


Benedykt Dziubałtowski

[#22] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #1

[#23] Re: Początki programowania w Amosie

@Shoonay, post #22

Jestem ciekaw jaka minimalna konfiguracja peceta jest potrzebna, by działało to znośnie. :) Upatrywanie AROSa 68k jako przyszłości AmigaOS 68k jest w sumie dość logiczne, system robiony przez społeczność amigową ma w zasadzie nieograniczone możliwości jak pójdzie na dowolnym współczesnym pececie. Ja jakoś nadal nie jestem do tego przekonany. System jest ten cały czas na etapie rozwoju, ja proponowałbym developerom AROSa 68k wykupienie praw do źródeł AmigaOS3.x. Mieliby solidne podstawy do kontynuacji tworzenia tego systemu. Dalej mogliby rozwijać system według własnych koncepcji (zniknęłoby słowo Research z nazwy :) )

Pomysłów na kontynuację ducha Amigi jest mnóstwo, każdy widzi Amigę inaczej i ma do tego prawo. Szkoda tylko, że powszechny jest brak akceptacji innych rozwiązań. Różnorodność i zdrowa konkurencja są pozytywnymi zjawiskami o ile nie powodują podziału środowiska i wzajemnych animozji. Niestety wszystkie ze stron mają swój wkład w rozognianiu tego konfliktu. Mam nadzieję, że niedawny konkurs, w którym nagrodą była Efika pokaże, że sojusz jest możliwy, tylko przy odpowiedniej chęci i wzajemnej akceptacji.

PPA jest zaiste dowodem, że taki sojusz jest możliwy. Scalił on tak różnorodne środowiska, które mają wspólne korzenie, a zupełnie odrębną wizję przyszłości. I właśnie PPA przetrwało tak długo i ma ogromne wsparcie w użytkownikach. Wydaje pismo papierowe. Jeśli polityka PPA będzie taka jak dotychczas to wróżę portalowi nawet 100 lat istnienia ;) A moderatorom życzę dużo zdrowia.

A wracając do tematu to życzę Benedyktowi postępów w opanowywaniu języków programowania. Bardzo dobrze postępujesz zaczynając od Amosa. Pamiętaj, że jeśli będziesz miał chęci to opanujesz też Asembler 68k. Polecam jednakże najpierw przeczytanie całej książki poświęconej temu tematowi, lub głębszemu zapoznaniu się z nią. Na przykład "Rodzinę M680xx" Wojciecha Czyża). Grunt to mieć solidne podstawy do wykonywanych czynności. Uniknie się wtedy problemów. A później przychodzą lata praktyki.



Ostatnia modyfikacja: 16.07.2011 14:38:00
[#24] Re: Początki programowania w Amosie

@Minniat, post #23

Drogi Minniacie
moim skromnym zdaniem, powinni Tobie przyznac fryderyka czy tam nobla, w dziedzinie pisania powiesci science-fiction.




A swoja droga..
To chyba swego rodzaju paradoks, ze srodowisko amigowe ma wielu, wielu, nieprzecietnie uzdolnionych ludzi, posiadajacych przogromna wiedze i talent.. a softu amigowego jak nie bylo, tak nadal nie ma.
I czy to nie jest przypadkiem tak, ze im wieksza wiedze amigowiec ma tym mniej skory do dzialania?
ślimak
[#25] Re: Początki programowania w Amosie

@selur, post #24

Lubię sci-fi, zamierzam pisać opowiastki z tej dziedziny i marzy mi się taka nagroda :)

Ja nie uważam siebie za jakieś guru w dziedzinie pisania na Amidze, ale wkładam tyle wysiłku ile tylko możliwe w rozwój oprogramowania. Z niecierpliwością czekam też na rezultaty Twojej pracy.

[#26] Re: Początki programowania w Amosie

@Minniat, post #25

Wkladaj ten wysilek wkladaj, bo konkurencja nie spi..
OK
[#27] Re: Początki programowania w Amosie

@selur, post #26

Panowie, Panowie. Jeśli chcecie dyskutować o rozwiązaniach Amigowych to proszę założyć osobny wątek.

Ja pytałem wyżej o komendy fade i input.

Fade działa w edytorze ale po skompilowaniu efektu nie ma żadnego.

Z input dzieją mi się dziwne rzeczy jak skompiluje program i wpisze 237896587659823 to program wyskakuje do WB. Gdy dodam wyjątek to się zawiesza. Poza tym mnożąc 23532452345 * 3124235 wyskakuje mi e+7 czy coś w tym stylu. Też nie wiem jak to obejść.



Benedykt Dziubałtowski

[#28] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #27

Czy podałeś parametr z komendą FADE? Ta komenda ma kilka możliwych konstrukcji, zależy do czego chcesz jej użyć. Co do INPUT to napisz z jakich zmiennych korzystasz (podaj nazwy). Bo z tego zdania o "e+7" wnioskuję, że próbujesz korzystać z liczb zmiennopozycyjnych (o których była mowa w tym wątku). No bo liczba zmiennopozycyjna potrafi przechowywać bardzo duże wartości tylko, że wtedy wyświetla je w tzw. formie wykładniczej.

Sprawdź jaka jest różnica między INPUT "Podaj liczbe";x, a INPUT "Podaj liczbe";x#. Ta pierwsza pobiera liczbę całkowitą 32-bitową, a druga liczbę zmiennopozycyjną.

Podejrzewam, że Amos potrafi sobie poradzić jak wpisze się mu za dużą liczbę. Nie mam pojęcia tylko co się wtedy zapisuje w zmiennej.



Ostatnia modyfikacja: 16.07.2011 17:35:16
[#29] Re: Początki programowania w Amosie

@Minniat, post #28

Jeśli możesz to zerknij do archiwów, które umieściłem kilka postów wyżej. Jest tam kod źródłowy(teraz niestety nie mam dostępu do amigi).


Benedykt Dziubałtowski

[#30] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #27

Fade 2000 ściemnia obraz co 2000/50 sekundy, przy czym działa w przerwaniach nie zatrzymując programu. Wnioski wyciągnij sam.

Co do e+7 to poczytaj o składni Print, a konkretnie o formatowaniu.

Poza tym nie używaj takiej struktury programu, a takie używanie Gosub powinno być karalne.
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem