DataMuseum.dk

Presents historical artifacts from the history of:

Jet Computer Jet80

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Jet Computer Jet80

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦693654248⟧ TextFile

    Length: 4224 (0x1080)
    Types: TextFile
    Names: »BINTRAE2.PAS«

Derivation

└─⟦092727b26⟧ Bits:30005927 Demoprogrammer til Pascal bog (Jet-80)
    └─ ⟦this⟧ »BINTRAE2.PAS« 

TextFile

        PROGRAM bintrae2;
        
          TYPE
            str30 = STRING(.30.);
            pointer = ^ knude;
            knude = RECORD
                      venstre, hoejre : pointer;
                      data : str30;
                    END;
          
          VAR
            rod : pointer;
            ord_ : str30;
            ch : CHAR;
            
          PROCEDURE indsaet(VAR trae : pointer; nytord : str30);
            
            VAR
              ch : CHAR;
              
            BEGIN (* indsaet *)
              IF trae = NIL
                THEN (* opret ny forgrening *)
                  BEGIN
                    NEW(trae);
                    WITH trae^ DO
                      BEGIN
                        venstre := NIL;
                        hoejre := NIL;
                        data := nytord;
                      END
                  END
                ELSE
                  WITH trae^ DO
                    IF nytord < data (* Søg i venstre forgrening *)
                      THEN indsaet(venstre, nytord)
                    ELSE IF nytord > data (* Søg i højre forgrening *)
                      THEN indsaet(hoejre, nytord)
                    ELSE 
                      BEGIN
                        WRITELN(nytord, ' findes i forvejen');
                        WRITE('Tast <RETURN>'); READLN(ch);
                      END;
            END; (* indsaet *)
          
          PROCEDURE udskriv(rod : pointer);
          
            BEGIN (* udskriv *)
              IF rod <> NIL
                THEN
                  WITH rod^ DO
                    BEGIN
                      udskriv(venstre);
                      WRITELN(data);
                      udskriv(hoejre);
                    END;
            END; (* udskriv *)
          
          FUNCTION find(trae : pointer; soegeord : str30) : pointer;
          
            VAR
              slut : BOOLEAN;
            
            BEGIN (* find *)
              slut :=FALSE;
              REPEAT
                IF trae = NIL
                  THEN slut := TRUE
                  ELSE
                    WITH trae^ DO
                      IF soegeord < data
                        THEN trae := venstre
                      ELSE IF soegeord > data
                        THEN trae := hoejre
                      ELSE slut := TRUE;
              UNTIL slut;
              find := trae;
            END; (* find *)
          
          BEGIN (* bintrae2 *)
            WRITE(CLRHOM);
            rod := NIL;
            REPEAT
              WRITE(CLRHOM);
              WRITELN('     I. Indsæt ord');
              WRITELN;
              WRITELN('     U. Udskriv');
              WRITELN;
              WRITELN('     F. Find ord');
              WRITELN;
              WRITELN('     A. Afslut');
              REPEAT
                READ(KBD, ch)
              UNTIL ch IN (.'I', 'i', 'U', 'u', 'F', 'f', 'A', 'a'.);
              CASE ch OF
                'I', 'i' : BEGIN
                             WRITE('Tast ord: '); READLN(ord_);
                             IF ord_ <> ''
                               THEN indsaet(rod, ord_);
                           END;
                'U', 'u' : BEGIN
                             WRITELN;
                             WRITELN('De indtastede ord :');
                             WRITELN;
                             udskriv(rod);
                             WRITE('Tast <RETURN>');
                             READLN(ch);
                           END;
                'F', 'f' : BEGIN
                             WRITE('Hvilket ord skal søges: ');
                             READLN(ord_);
                             IF find(rod, ord_) <> NIL
                               THEN WRITELN(ord_, ' findes')
                               ELSE WRITELN(ord_, ' findes ikke');
                               WRITE('Tast <RETURN>');
                               READLN(ch);
                           END;
              END;
            UNTIL ch IN (.'A', 'a'.);
          END. (* bintrae2 *)
«eof»