Oznámení

Sbalit
Aktuálně žádná oznámení.

Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

Sbalit
X
 
  • Filtr
  • Čas
  • Zobrazit
Vymazat vše
new posts

    O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

    Autorem citovaného textu je DJM Přejít na původní příspěvek
    Som rad !!! Pointer = tzv. ukazatel = adresa v pamati a nie obsah na tej adrese..
    Ano toto som si presne včera čítal (a preto to musíme prekladaču dať vedieť pomocou dereferenčného "*", alebo referenčného "&" operátora). Mám tu o pointeroch tak 30 strániek, tak sa na to niekedy pozriem.
    Naposledy upravil Lisiak; 28.06.2015, 04:04:48.
    Amiga - PMD 85

    Komentovat


      O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

      No keď sme u toho, tak som teraz narýchlo prebehol príklady na struct a všetky sú v bloku {}. Na 1 riadok neni treba takto blok označovať? Nenašiel som toto narýchlo v učebnici. Taktiež som si včera prečítal, že // pre poznámku je prebrané z C++ a že s takto označovanou poznámkou može mať nejaký kompiler problém. Ale kompiler GCC je z C++, takže ten je OK. Snáď som nič nepoplietol, všetko to píšem, ako som si zapamatal... .
      Amiga - PMD 85

      Komentovat


        O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

        Struktura musi mat vzdy { }, aj ked je na 1 riadok. Poznamku mozes mat bud medzi znakmi /* poznamka */ alebo // poznamka.
        Amiga 1200T (E/Box)+BlizzardPPC 603p/363+060/66+BVision PPC+256MB+KS3.1+Cocolino+Lyra 2+Fast Ata MK-IV+320GB WD Blue 3200AAJB PATA HDD(PFS3)+dvdrw+dvd+cf2ide
        Amiga 1200+BlizzardPPC 603e/210+040/25+128MB+KS3.1+CF4GB(PFS3)

        Komentovat


          O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

          A čo je toto?

          Code:
                   .....
                   struct Screen *screen;
          
                   struct TextAttr tattr;
                   struct TextFont *tfont=NULL;
          Amiga - PMD 85

          Komentovat


            O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

            Autorem citovaného textu je DJM Přejít na původní příspěvek
            Poznamku mozes mat bud medzi znakmi /* poznamka */ alebo // poznamka.
            Ale pozor, myslím že nemůžeš mít v /*....*/ vnořenou poznámku //. Pak ti to bude hazet chybu při kompilaci. Alespoň pod AROSem to tak je, na 68k GCC jsem to nezkoušel.
            Minimig 4MB/ARM ; FPGA Arcade ; Amiga 500 ; Amiga 2000 ; Amiga 1200 ; AOS 4.1 FE -> WinUAE

            Komentovat


              O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

              Autorem citovaného textu je Lisiak4 Přejít na původní příspěvek
              A čo je toto?

              Code:
                       .....
                       struct Screen *screen;
              
                       struct TextAttr tattr;
                       struct TextFont *tfont=NULL;
              To je deklaracia premennych troch roznych struktur. Ked si pozries inkludy - napr. intuition/screens.h, tak tam najdes definiciu struktury struct Screen {...} aj so zatvorkami. Tu uz sa len deklaruje, ze premenna *screen je typu struct Screen a kedze je tam aj hviezdicka ( * ), tak sa jedna o ukazatel.

              Priklad:

              Ked chces zadefinovat nejaku strukturu, tak to co ma obsahovat musi byt vzdy medzi { } a konci ; .

              struct Hodiny
              {
              int hodina;
              int minuta;
              int sekunda;
              };

              moze to byt aj v jednom riadku:

              struct Hodiny { int hodina,minuta,sekunda; };

              Potom ked chces pouzit premennu typu struct Hodiny,tak zadas:

              struct Hodiny cas;

              To znamena, ze premenna cas je nami zadefinovana struktura a mozes zadat:

              cas.hodina=21;
              cas.minuta=9;
              cas.sekunda=38;
              Amiga 1200T (E/Box)+BlizzardPPC 603p/363+060/66+BVision PPC+256MB+KS3.1+Cocolino+Lyra 2+Fast Ata MK-IV+320GB WD Blue 3200AAJB PATA HDD(PFS3)+dvdrw+dvd+cf2ide
              Amiga 1200+BlizzardPPC 603e/210+040/25+128MB+KS3.1+CF4GB(PFS3)

              Komentovat


                O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

                Autorem citovaného textu je bigmac Přejít na původní příspěvek
                Ale pozor, myslím že nemůžeš mít v /*....*/ vnořenou poznámku //. Pak ti to bude hazet chybu při kompilaci. Alespoň pod AROSem to tak je, na 68k GCC jsem to nezkoušel.
                Teoreticky myslim ze to nevadi, pretoze to je len text v poznamke /* ... */ , aj ked sa jedna o // poznamku.
                Prakticky to StormC kompileru tiez nevadi.
                Amiga 1200T (E/Box)+BlizzardPPC 603p/363+060/66+BVision PPC+256MB+KS3.1+Cocolino+Lyra 2+Fast Ata MK-IV+320GB WD Blue 3200AAJB PATA HDD(PFS3)+dvdrw+dvd+cf2ide
                Amiga 1200+BlizzardPPC 603e/210+040/25+128MB+KS3.1+CF4GB(PFS3)

                Komentovat


                  O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

                  Super, díky, ja som struct v tej deklarácii bral ako príkaz, čo bola základná chyba (stupidné chyby začiatočníka ).
                  Amiga - PMD 85

                  Komentovat


                    O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

                    Autorem citovaného textu je DJM Přejít na původní příspěvek
                    Teoreticky myslim ze to nevadi, pretoze to je len text v poznamke /* ... */ , aj ked sa jedna o // poznamku.
                    Prakticky to StormC kompileru tiez nevadi.
                    Asi máš pravdu , možná jsem si něco zafixoval v hlavě a ono je to jinak.
                    Je ale pravdou, že od té doby když potřebuji zaremovat delší kód, tak raději použiji "if nebo ifdef".

                    Už se těším až Lišák dojde k HOOKs makrům, protože těm já také moc nerozumím a potřeboval bych to vysvětlit
                    Minimig 4MB/ARM ; FPGA Arcade ; Amiga 500 ; Amiga 2000 ; Amiga 1200 ; AOS 4.1 FE -> WinUAE

                    Komentovat


                      O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

                      pokouším se správně přečíst pointer z programu:
                      Code:
                      char *lmb=(char *)0xbfe001;
                      Když tak koukám do knihy tak se identifikátoru lmb přidělila adresa 0xbfe001. lmb je asi "left mouse button". Adresa 0xbfe001 se používá dle netu na přerušení. Tady asi aby mi program zareagoval na stisk tlačítka na myši.

                      Stručně, dle knihy se pointer správně čte od identifikátoru doprava až kým nenarazíme na samostatnou pravou kulatou závorku. U ní se vracíme zpět na levou kulatou závorku, od ní čteme doprava s tím, že se přeskakuje již přečtené. Pokud narazíme na středník, vracíme se na nejlevější doposud zpracované místo a od něj se čte doleva.

                      Jak tenhle řádek tedy čte debil jako já bez zkušeností s C:

                      Proměnná lmb, která je hodnoty typu char je pointer ( *)vracím se zpět na ( a čtu doprava nepřečtené ) na adresu 0xbfe001 ( ; u středníku jdu na nejlevější nepřečtené místo) vracející pointer ukazující na hodnotu typu char

                      Počítám s tím, že jsem to přečetl špatně, potřebuji se správně naučit číst pointery. Prosím tedy o správné přečtení pointeru z programu. Pokud jsem to pochopil správně, tak začínám číst u lmb. To uspořádání hvězdiček mne plete. V knize mám tenhle příklad, který byl použit na přečtení složitějšího pointeru:

                      Code:
                      int *(*v)()
                      dle knihy to že v je pointer určuje až vrácení se po dosažení pravé kulaté závorky na levou kulatou závorku (* a čteme je pointer. V pointeru, co ale potřebuji přečíst v programu od DJM je hvězdička v *lmb před levou kulatou závorkou, tedy tuhle hvězdičku čtu až když se vracím od středníka a začínám číst od nejlevějšího doposud zpracovaného místa?

                      Tedy adresa 0xbfe001 mi vrátí adresu a až na ní bude hodnota/proměnná typu char? (to se mi zdá zbytečně složité...)

                      Omlouvám se za pitomosti a prosím o správné přečtení pointeru z programu od DJM, tedy:

                      Code:
                      char *lmb=(char *)0xbfe001;
                      Děkuji!
                      Amiga - PMD 85

                      Komentovat


                        O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

                        Moc ti nerozumiem co tym citanim vlavo a vpravo od zatvorky myslis ?

                        K tej predposlednej vete:
                        Adresa 0xbfe001 ti nevrati ziadnu adresu, lebo adresa je adresa. Datovy typ char v Cecku urcuje ze z tej adresy budes citat po byte,alebo zapisovat. (byte = char).

                        Trochu odbocim pre lepsie pochopenie:
                        Predstav si, ze zadeklarujes premennu a typu char (bez hviezdicky):

                        char a;

                        Cecko alokuje pre tuto premennu 1 byte na adrese vo volnej pamati. Adresa alokovanej premennej je vzdy ina.
                        Ked dalej napises napr. a=32; , tak zmenis hodnotu na tej adrese.

                        Ked chces vediet na akej adrese je alokovana premenna a, mozes napisat:

                        printf("Adresa premennej a=%d a obsah bytu na tej adrese=%d \n",&a,a);

                        Teraz k pointeru (pointer=adresa):

                        char *lmb=(char *)0xbfe001;

                        Tento zapis znamena (ako si sam uviedol v prvej vete zacinajucej velkym pismenom), ze do lmb sa zapise adresa 0xbfe001 (co je nemenliva adresa hardwaroveho registru,pomocou ktoreho mozes testovat left mouse button (kontrolou 6-teho bitu) ), char znamena ze budes citat alebo zapisovat po bytoch.

                        Predpokladam, ze ti robi problem pochopit (char *).
                        Ked mas hocijaky datovy typ v zatvorke, tak sa jedna o tzv. pretypovanie - mozes si to niekde nastudovat.

                        Priklad:

                        int a;
                        short b;

                        a=(int) b;

                        alebo

                        b=(short) a;

                        a podobne aj ked sa jedna o ukazatele:

                        Mal by si zadefinovanu funkciu, napr.:

                        void ClearChunkyScreen( ULONG *adresa ) { ... };

                        dalej by si mal premennu pre bufer:

                        UBYTE *bufer;

                        Kedze bufer je typu UBYTE * a funkcia pozaduje ako vstup ULONG *, tak by si to mohol "pretypovat" takto:

                        ClearChunkyScreen( (ULONG *) bufer );

                        a tak, dufam ze ti to trochu pomohlo..
                        Naposledy upravil DJM; 06.07.2015, 16:00:38.
                        Amiga 1200T (E/Box)+BlizzardPPC 603p/363+060/66+BVision PPC+256MB+KS3.1+Cocolino+Lyra 2+Fast Ata MK-IV+320GB WD Blue 3200AAJB PATA HDD(PFS3)+dvdrw+dvd+cf2ide
                        Amiga 1200+BlizzardPPC 603e/210+040/25+128MB+KS3.1+CF4GB(PFS3)

                        Komentovat


                          O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

                          Super, toto ma zase na nejaký čas zabaví
                          Amiga - PMD 85

                          Komentovat


                            O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

                            Tady už to je erfektní vyučování céčka. Sakra, že bych to také zkusil? Ale jen tak polehoučku, a protože momentálně flashuji můj nový mobil, tak snad příště.
                            Amiga 600, Fúria EC020 OS 3.1.4, eX601, Indivision ECS, Powerbook G4, 1.67GHz, MOS3.15, Asus UX32VD Xubuntu 21.04

                            Komentovat


                              O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

                              Autorem citovaného textu je Dedy Přejít na původní příspěvek
                              a protože momentálně flashuji můj nový mobil, tak snad příště
                              Ty se zase v nečem hrabeš? Ten tvůj poslední experiment se ZenBookem museli dávat dohromady dva lidi z opačných koutů republiky
                              Pegasos II (1266MHz), 2048MB RAM, Radeon 9250 (256MB), HDD 200GB, USB 2.0, ZIP250 USB, USB floppy, SB Live!, HP LaserJet 1100, AmigaOS 4.1 Final Edition

                              Komentovat


                                O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

                                Code:
                                char *lmb=(char *)0xbfe001;
                                Takýmto sposobom sa testuje aj stisk klávesy? Len zmením adresu? Pokiaľ áno, kde nájdem tabuľku týchto adries?
                                Amiga - PMD 85

                                Komentovat

                                Zpracovávám...
                                X