SlideShare a Scribd company logo
1 of 34
DATABASE SEKRETARIS BOW-
                         LING DENGAN R:BASE5000


     Bab ini berisikan tiga bagian infonnasi dan pembahasan utama: 1. daftar
sampel empat relasi yang menentukan bentuk database sekretaris jika digunakan
R:base 5000; 2. contoh tentang cara kerja perintah-perintah R:base 5000 yang dapat
digunakan dengan relasi-relasi ini untuk menjawab query yang banyak; dan 3.
pembahasan yang mendalam tentang satu set modul program yang dikendalikan
dengan menu yang menjawab query kompleks dengan menggunakan perintah R:base
5000 yang terdapat pada bahasa pemrograman R:base 5000. Implementasi data ini
dikembangkan oleh IBM PCdengan memori 320 K, dua doubled sided disk drive, dan
satu monitor monochrome. Disket sistem R:base 5000 selalu berada di drive A.
Sedangkan file database dan modul program terdapat di B.

10. 1   STUDI KASUS DATABASE R:BASE 5000
     Sebelum memulai pembahasan queri khusus dan berbagai modul pemro-
graman, rela-sidatabase yang sesungguhnya akan kita bahas terlebih dahulu. Data
yang diuji dalam database dikembangkan dengan asumsi yang sarna seperti pada
Bab 9. Asumsi tersebut adalah :
1. Liga bowling mempunyai enam team.
2. Masing-masing team mempunyai empat anggota

134
3. Masa pertandingan hanya empat minggu
4. Data untuk keempat minggu dimasukkan dalam R:base 5000 yang standar.
5. Semua bowler bermain tiap kali perlombaan
     Perubahan-perubahan yang mungkin dalam asumsi ini dibahas dalam latihan
masalah yang terdapat pada akhir bab ini.
   R>list sched                                         tnumb      week         lane
                                                             1         1             1
   Table: schoo                                              2         1             2
   Read Password: NO                                         3         1             4
   Modify Password: NO                                       4         1             3
                                                             5         1             6
   Column definitions                                        6         1             5
                                                             I         2             4
   # Name     Type         Length         Key                2         2             5
                                                             3         2             2
   Itnumb     INTEGER      I value(s)     yes                4         2             6
   2 week     INTEGER      I value(s)                        5         2             1
   3 lane     INTEGER      I value(s)                        6         2             3
                                                             1         3             3
   Current number of rows: 24                                2         3             6
              (a)                                            3         3            .1
                                                             4         3             4
                                                             5         3             5
                                                             6         3             2
                                                             I         4             5
                                                             2         4             I
                                                         tnumb      week         lane
                                                             3         4             3
                                                             4         4             2
                                                             5         4            4
                                                             6         4            6
                                                                     (b)

     Gambar 10.1 (a) Struktur dan                                  (b) isi relasi SCHED
      R>list team                                     tnumb     tname                  captn
      Table: team                                        1      AlleyCats              Ann Jones
      Read Password: NO                                  2      Inconsistents          Bill Black
      Modify Password: NO                                3      TenPins                Lisa Moore.
                                                         4      HighRollers            Jill Miller
      Column definitions                                 5      Splitters.             Roy Lane
                                                         6      SandBaggers            Cindy Fox
      # Name      Type           Length         Key
                                                                        (b)
      I tnumb INTEGER            I value(s)   yes
      2 tname TEXT              15 characters
      3 captn TEXT              15 characters

      Current number of rows: 6
      R>
                 (a)

     Gambar 10.2 (a)Struktur dan (b) isi dari relasi TEAM

                                                                                                135
Garnbar 10.1 sarnpai 10.4 rnenunjukkan struktur dan data tes yang sebenarnya
untuk rnasing-rnasing relasi. Data yang disirnpan dalarn relasi-relasi ~nisarnadengan
data yang ada pada Bab 9, sehingga hasil dari dua pelaksanaan (irnplernentasi) ini
dapat dibandingkan.Narna database dalam pelaksanaan R:base 5000 adalah SDB.
      Dengan rnelihatkernbali data dalam relasi BOWLER, (sepertidalarn Bab9) kita
ketahui bahwa akan muncul duplikat tentang data alarnatjalan dan nomor telpon. Hal
yang rnenarik adalah keinginan untuk menentukan bahwa telepon - > stret merupakan
FD yang benar. Kita hendaknya mengkaji kembali hal-hal yang menyebabkan FD
tidak benar, serta tidak teIjadinya pengulangan tentang data stret dan telepon seperti
pada Bagian 9.1

10.2         MENJAWAB QUERY SEKRETARIS DENGAN R:BASE
             5000
      Contoh-contoh pada bagian ini dimaksudkan untuk menggarnbarkan bahwa
query sederhana yang berhubungan dengan data dalam database sekretaris bowling
dapat dibuat dengan rnenggunakan perintah R:base 5000, tanpa harus rnenyisipkan
perintah tersebut ke dalam bahasa penerirna. Semua query dalam bagian ini meliputi
relasi spesifik yang terdapat dalam Gambar 10.1 sampai 10.4. Kita hendaknya
melaksanakan database dan mengisinya dengan data percobaan serta rnemeriksa
query yang tengah dibahas. Dalam banyak kasus dua atau tiga perintah secara
berturut-turut diperlukan untuk menjawab query yang nampak relatif sederhana.
      Contoh-contoh berikut merupakan contoh bahwa pemakai menggunakan
tingkatan perintah R:base 5000 dengan R> prompt.
R>lislleam                                             bname           Lnumb   phone                 Slrel            slaavg
Table: learn                                           Jeam adams       5      689-1234         10   Robin St           III
Read Password: NO                                      Slcve adams      5      689-1234         10   Robin Sl           130
                                                       Bill Black       2      689-2345         15   Bluebird Ln        149
Modify Password: NO                                    Bonnie Black                                                     120
                                                                        2      689-2345         15   Bluebird Ln
Column definitions                                     Bo Blow          2      689-3456         12   Meadowbrook Ln     143
                                                       Jo Blow          2      689-3456         12   Meadowbrook Ln      95
                                                       Joe Brown        3      689-4567         18   Bluebird Ln        132
#    Name    Type          Lenglh                Key   Sue Brown        3      689-4567         18   Bluebird Ln        124
I    bname TEXT                                        Cindy Fox        6      689-5678         19   Cardmal St         103
                           15       characters   yes
2    Lnumb INTEGER                                     Randy Fox        6      689-5678         19   Cardinal St        147
                            I       value(s)                                                                            105
                            8       characters         Ann Jones        I      689-4365         12   Finch Dr
3    phone TEXT .                                      John Jones                                                       143
4    stret TEXT.           20       characters                          I      689-4365         12   Finch Dr
           INTEGER                                     Joy Lane         5      689--6789        21   Sparrow Ct         125
5    Slavg                  1       value(s)
                                                       Roy Lane         5      689--6789        21   Sparrow Ct         167
Current number of rows :        6                      Jill Miller      4      689-7890         12   Robin St           108
                                                       Paul Miller      4      689-7890         12   Robin St           170
R>                                                     Lisa Moore       3      689-890 I        11   Lark Dr            110
                                                       Mike Moore       3      689-8901         11   Lark Dr            140
             (a)                                                                                13   Finch Dr
                                                       Jim Smith        I      689-9<)12                                152
                                                       Mary Smith       1      689-9012         13   Finch Dr           115
                                                       bname        Lnumb      phone                 stret            Slavg
                                                       Ruth Taylor        6    89-0123          20   Cardinal St        119
            Garnbar 10. 3                              Dan White          4    689-2134         16   Robin St           158
                                                       Jan While          4    689-2143         16   Robin Sl           121
             (a) Struktur                                                 6                     20   Cardinal St        161
                                                       Russel Taylor           689--{)   I 23
    (b) Isi dari relasi BOWLER                                                 (b)


136
R>list scores                                     bname           week   gamel          game2   game3
                                                  Jeams Adams        I     119            120      94
Table: scores
                                                  Steve Adams        1     112            140     138
Read Password: NO
                                                  Bill Black         1     137            155     155
Modify Password: NO                               Bonnie Black       1     120            125     115
                                                  Bo Blow            1     160            145     125
Column definitions
                                                  Jo Blow            I     101             91      93
                                                  Jim Smith          1     160            150     146
# Name          Type      Length            Key                                           110
                                                  Mary Smith         1     120                    115
                          15   characters         Ann Jones          I      98            110     107
     bname      TEXT                        yes   John Jones         1     145            150     134
2    week       INTEGER    I   value(s)
                INTEGER    I                      Joe Brown          1     140            127     129
3    game I                    value(s)
                                                  Sue Brown          I     121            128     124
4    game2      INTEGER    I   value(s)
                INTEGER    I                      Cindy Fox          I     119            110      83
5    game2                     value(s)
                                                  Randy Fox          I     143            150     148
                               96                 Russel Taylor      ]     167            150     166
Current number of rows:
                                                  Ruth Taylor        ]     110            125     122
                                                  Joy Lane           I     ]26            127     122
R>
                                                  Roy Lane           I     ]45            180     176
                (a)                               Jill Miller        I     III            101     112
                                                  Paul Miller        I     180            196     134
                                                  bname           week   game I         game2   game3
                                                  Dan White          I     156            163     154
                                                  Jan White          I     130            125     108
                                                  Lisa Moore         I      99            120     III
                                                  Mike MOore         I     150            149     121

                                                                                  (b)


       Gambar 10.4 (a) Struktur dan (b) isi relasi SCORES. (Hanya nilai dalam satu
minggu. Lihat Gambar 9.4 untuk mengetahui isi selama empat minggu.)
Juga diasumsikan bahwa database sekretaris bowling dibuka dengan perintah:
                   R> OPEN b:sdb
QUERY #1: "Daftar nama semua team dalam kelompok."
       Query ini sangat mudah untuk dijawab karena dua hal: pertama, semua
informasi yang diperlukan untuk menjawab query terletak pada satu relasi; kedua,
tidak terdapat kualifikasi (klausa WHERE) yang diperlukan. Jawaban query ini dapat
diperoleh dengan perintah berikut:
                   R> SELECT tname FROM team
       atau
                   R> SELECT tname +
                   R> FROM team
     Untuk jenis kedua, perintah tunggal telah berada pada dua baris sehingga
memungkinkan untuk menggunakan karakter "+" sebagai simbol kontinuitas.
Sedangkan pelaksanaan jenis lainnya akan berpengaruh terhadap pendaftaran nama-
nama keenam team dalam liga tersebut.
QUERY #2: "Siapakah nama kapten team nomor empat?"
     Penyelesaian terhadap query ini hanya sedikit lebih sukar dibandingkan Query
#1 hal ini disebabkan dalam Query #2 diperlukan klausa WHERE.
                                                                                                  137
R> SELECT captn +
         R> FROM team +
         R> WHERE TNUMB = 4
Respon DBMS adalah =Jill Miller

QUERY #3:          "Carilah nama semua pemain bowling yang mempunyai rata-rata
                   permulaankurangdari 100."   .

Bentuk penyelesaian query ini sangat mirip dengan penyelesaian Query#2:
          R> select bname +
          R> FROM bowler +
          R> WHERE stavg < 100
Jawabannya adalah nama tunggal: Jo Blow

QUERY #4:      "Siapakah nama serta berapa nOnlor telepon semua anggota team
               nomor tiga?"
     Solusinya adalah
          R> SELECT bname,phone +
          R> FROM bowler +
          R> WHERE tnumb = 3
Responsenya adalah:
               I    bname               phone      I




               ,    Joe Brown           689-4567
                    Sue Brown           689-4567
                    Lisa Moore          689-8901
                    Mike Moore          689-8901

QUERY #5:     "Pada jalur manakah team nomor lima bermain selama minggu ke
              tiga dalam masa pertandingan tersebut?"
    Pemecahan query ini menuntut klause WHERE dengan suatu set yang
menggunkan beberapa syarat:
         R> SELECT lane +
         R> FROM sched +
         R> WHERE tnumb = 5 AND week = 3
    Respon terhadap query ini adalah = 5
QUERY #6:     "Cari semua nama pemain yang tinggal di Robin St."
 .    Olehkarenaalamatdalamdatabasedisimpandalambentukstring"21 Robin
St" maka solusi dari QUERY #6 memerlukan suatu pencarian, di dalam field stret
pada n:tasing-masingtupel yang terdapat dalam relasi BOWLER, untuk mengetahui

138
apakah karakter string "Robin St" telah muncul. Pencarian ini dapat dilakukan
dengan menggunakan operator CONTAINS dalam klausa WHERE. Bet>erapa
kemungkinan pemecahannya adalah
           R> SELECT bname +
           R> FROM bowler +
           R> WHERE stret CONTAINS "Robin St"
      atau
             R> SELECT bname +
             R> FROM bowler +
             R> WHERE stret CONTAINS "Robin St"
      atau
             R> SET VAR subsrt TO Robin & St
             R> SELECT bname +
             R> FROM bowler +
             R> WHERE stret CONTAINS .substr
Respon terhadap ketiga kasus di atas memberikan hasil yang sarna:
           bname
           Jean Adams
           Steve Adams
           Jill Miller
           Paul Miller
           Dan White
           Jan White
      Perbedaan antara ke tiga solusi itu meliputi cara membuat spesifikasi "Robin
St". Dalam dua solusi pertama, pemakai harus meyakinkan bahwa satu tempat yang
tepat terdapat di antara dua string "Robin" dab "S1". Beginilah cara menyimpan
alamat jalan dalam database. Dalam kasus terakhir operator "&" menyebabkan
sistem meduduki hanya satu tempat antara dua string. Satu keuntungan dari bentuk
terakhir ini adalah bahwa bentuk tersebut menekankan kondisi satu tempat bagi kita
yang mengkaji ulang solusi ini.
QUERY#7 ;        "Berapa banyak tiga seri permainan yang lebih besar dari pada 550
                 dilakukan sampai sekarang?"
     Solusi ini rumit, karena R:base 5000 hanya menunjukkan operasi aritmatik
tunggal dalam suatu ekpresi. Sebagai contoh ekspresi dari bentuk umum:
            varl+var2
dapat ditempatan ke dalam bentuk legal dengan R:base 5000, sementara tidak
terdapat cara ekspresi dengan dua operator seperti:


                                                                              139
varl + var2 +var3
dapat ditempatkan dalam satu perintah. Ramifikasi pembatasan terhadap query
khusus ini adalah bahwa satu set lokasi temporer harus dibuat dengan menyimpan
kalkulasi intennediate. Salah satu cara untuk membuat lokasi temporer ini adalah
dengan menambahkan satu kolom ke relasi yang datanya sedang dianalisis. Jika
jawaban akhir telah didapat maka kolom itu dihilangkan dari relasi. Total solusi
memerlukan urutan tatap-tahap:

            R> EXPAND scores WITH total INTEGER
            R>   ASSIGWtotal TO gamel + game2 IN scores
            R>   ASSIGN total TO total + game3 IN scores
            R>   COMPUTE number AS COUNT total +
            R>   FROM scores +
            R>   WHERE tatal > 550
            R>   SHOW VAR number
            R>   REMOVE COLUMN total FROM scores

      Perintah EXPAND akan menambah kolom barn ke ralasi SCORES, memberi
nama total kolom, sena menuliskannya sebagai integer. Dua perintah ASSIGN akan
menghitungjumlah (game 1+ game 2 + game 3) untuk tiap-tiap tupel dalam SCORES
dan menempatkan masing-masing jumlah dalam total field yang berhubungan.
Dalam posisi ini total field pada tiap-tiap tupel be:risikanjumlah tiga nilai pennainan
tunggal. Tiga baris berikutnya dalam sofusi ini adalah perintah: "COMPUTE-
FROM-WHERE". Perintah ini akan menghitung jumlah tupel dumana total nilai
lebih besar dari 550 dan menempatkan hitungan ini dalam angka variabel. Nilai ini
kemudian dicetak dengan perintah SHOW VAR. Akhimya kolom yang ditambahkan
ke relasi SCORES dihilangkan dengan perintah REMOVE COLUMN. Jawaban
akhir terhadap-query ini adalah angka = 2
      Solusi yan'gJuga diajukan untuk Query #7 ini mempunyai satu solusi. Selain
solusi itu dapat menyebabkan kerugian yang serius: solusi akan mengubah struktur
dasar dari relasi SCORES dengan menambah dan kemudian menghilangkan kolom
yang baru. Banyak pemakai tidak menyukai query yang mengubah struktur relasi
dalam database, jika database telah dibuat. Mereka beralasan bahwa relasi temporer
dalam satu kolom atau lebih (atribut) hendaknya dibuat untuk menampung data
temporer selama kalkulasi berlangsung, dari pada harus membuat kolom barn dalam
salah satu relasi disain. pengan cara ini, jika selama pelaksanaan solusi terdapat
sesuatu yang hHangmaka database yang asli masih ada. Dengan posisi demikian kita
punya keuntungan namun kita hendaknya merencanakan cara memecahkan query
terakhir dengan c.arayang tidak mengubah struktur dasar relasi SCORES



140
QUERY #8 :       "Siapakah pemimpin lawan team nomor lima selama minggu ke
                 tiga?"
      Query ini paling tepat dijawab dengan proses dua tahap. Pertama, Query #5
dapat dipakai untuk menentukan bahwa team nomor lima ada pada jalur=5 selama
minggu ke tiga. Ini berarti bahwa lawan pada malam tersebut akan bermain padajalur
6. Dengan menggunakan informasi ini nomor team yang bermain pada jalur enam
selama minggu ke tiga dapat ditemukan dan disimpan dalam sebuah variabel,
misalnya "team".
           R> SETVAR ternTO tnumbIN sched+
           R> WHERE lane = 6 and week= 3
      Nilai yang disimpan dalam variabel tern sekarang dapat dipakai untuk menep-
tukan nama pemimpin.
            R> SET VAR ans TO captn IN team +
            R> WHERE tnumb = .tem
            R> SHOW VAR ans
            Jawabannya adalah = Bill Black

QUERY #9:          "Buat daftar nama semua anggota liga bowling yang bukan anggota
                   Sand Baggers".
       Solusi ini, seperti solusi yang terakhir, menuntut adanya daftar informasi yang
 diperoleh dari satu relasi ke relasi ke dua untuk memperoleh jawaban yang benar.
 Dalam contoh ini operator aljabar relasional JOIN akan digunakan.
             R> PROJECTtempr FROM team USING tnumb +
            R> WHERE tname <> SandBaggers
            R> RENAME COLUMN tnumb TO ttnumb IN tempr
            R> JOIN tempr USING ttnJlmb +
            R> WITH bowler USING tnumb +
            R> FORMING result
            R> SELECT bname +
            R> FROM result
            R> REMOVE result
            R> REMOVE tempr
       Keluaran ini akan berupa daftar dua puluh nama. Solusi terakhir adalah sebagai
berikut: (1) Relasi baru disebut TEMPR adalah hasil dari relasi TEAM. TEMPR
hanya mempunyai satu kolom, tnum. TEMPR memuat nomor team dari semua team
kecuali Sand Baggers. (2) Hanya kolom TEMPR diberi nama kembali ke ttnumb,
sehingga akan berbeda dengan kolom nomor team dalam relasi BOWLER. Selama
operasi JOIN, R:base 5000 menghendaki kolom-kolom yang sedang digabungkan/
joined dengan nomor-nomor yang berbeda. (3) TEMPR dan digabungkan/JOIN
untuk membentuk relasi ke tiga, RESULT. Kolom bname dalam RESULT memuat

                                                                                  141
nama-nama anggota liga yang dikehendaki. (4) Perintah SELECT menunjukkan
solusipada query tersebut. (5) Dua relasi temporer, RESULT dan TEMPR dihi-
langkan dari database.
QUERY # 10: "Berapa total pin yang diperoleh Bill Black pada akhir minggu ke
                 tiga?"
Solusi query ini dapat berupa sebagai berikut:
            R> COMPUTE tot AS SUM game 1 FROM scores +
            R> WHERE week <= 3 and bname = "Bill Black"
            R> COMPUTE s2 AS SUM game 2 FROM scores +
            R> WHERE week <= 3 AND bname = "Bill Black"
            R> COMPUTE s3 AS SUM game 3 FROM scores +
            R> WHERE week <= 3 AND bname = "Bill Black"
            R> SET VAR tot TO .tot + .s2
            R> SET VAR tot TO .tot + .s3
            R> SHOW VAR tot
      Keluaran   akhir di sini adalah tot   = 1381
      Dalam solusi ini, perintah COMPUTE pertama menambah semua nilai game1
Bill Black pada tiga minggu pertama, dan menyimpanjumlah tersebutdalam variabel
tot. Dua perintah COMPUTE berikutnya akan mengulangi proses untuk permainan
2 dan permainan 3,dengan menyimpan masing-masingjumlah dalam variabel s2 dan
s3. Perintah SET VAR akan menambahkan nilai ke tiga variabel ini bersama-sama
untuk mendapatkan hasil akhir. Perintah SHOW VAR akan menghasilkan jawaban
akhir.
QUERY # 11 : "Berapa anggota liga bowling yang telah bermain paling tidak satu
                  permainan .lebih 50?"
            R> PROJECT tempr FROM scores USING bname+
            R> WHERE game 1 > 150 OR game3 > 150
             R> DELETE DUPLICATES FROM tempr
             R> COMPUTE ans AS ROWS FROM tempr
             R> SHOW VAR ams
             R:> RMOVE tempr
       Solusi terhadap query ini adalah ans= 11
       Dalam solusi ini ralsi temporei-,TEMPR, di-PROJEK-kan dari relasi nilai.
TEMPR hanya mempunyai satu kolom dan bname. Terdapat satu tupel dalam relasi
ini untuk tiap tupel dalam relasi SCORES dimana terdapat paling tidak satu nilai
tunggal di atas 150. Oleh karena satu orang yang sa,madapat bermain lebih dari 150
pada malam yang berbeda, maka mungkin bahwa nama yang sarna akan muncul
beberapa kali dalam TEMPR. Perintah DELETE DUPLICATES akan menghi-
langkan semua nama duplikat dari TEMPR. Nama-nama lainnya kemudian dihitung
dengan menggunakan perintah COMPUTE untuk memperoleh jawaban terakhir.

142
Dalam TEMPR, mungkin terdapat adanya tupel duplikat, ini berarti bahwa
R:base 5000's PROJECf bukan merupakan operator aljabarrelasional yang sesung-
guhnya, dan TEMPR pun demikian. Seperti yang dinyatakan dalam bab sebelumnya
bahwa tak ada sistem manajemen database relasional yang didasarkan mikro kom-
puter yang semuanya relasional, dan ini harus kita pertimbangkan pada saat membuat
query. R:base 5000 lebih mendekati DBMS yang benar-bnar relasional dari pada
sebagian besar sistem manajemen yang didasarkan pada mikrokomputer.
      Dalam solusi query di atas, hendaknya perlu kita perhatikan bahwa solusi ini
tidak bersifat unik. Biasanya terdapat beberapa cara untuk memperoleh solusi query.
Beberapa solusi dapat dipakai dengan kecepatan yangjauh lebih tinggi dari pada yang
lainnya, dan beberapa solusijuga mempunyai logika yangjauh lebih gampang untuk
diikuti. Cara terbaik untuk mempelajari cara menulis solusi yang baik adalah dengan
mempelajari solusi yang ditulis oleh orang lain dan kemudian kita tulis beberapa
solusi kita sendiri dengan menggunakan beberapa metode yang berbeda untuk
masing-masing masalah


10. 3    MENU    UT AMA                UNTUK           SOL US I        QUERY
         TERPROGRAM
       Query pada bagian 10.2 merupakan query yang ditanyakan oleh sekretaris
bowling yang khusus dan, kebanyakan, solusi query mudah dipahami dan jumlah
pernyataan R:base 5000 tidak terlalu panjang yang digunakn untuk menjawab
pertanyaan. Kita asumsikan bahwa sekretaris bowling akan memasukkan solusi
secara manual, meskipun panjang dari beberapa solusi dapat dengan mudah menim-
bulkan kesalahan dalam memasukkannya. Lebih lanjut sekretaris bowling hen-
daknya mempunyai pengetahuan yang cukup tentang teori database, dan sintak
R:base 5000 untuk menjabarkan solusi tersebut, bukan hanya sekedar menyalin.
Untuk membantu sekretaris dari kesulitan menjabarkan kembali sebuah solusi query
tiap waktu query tertcacahkan, sebuah menu yang sering digunakan query disimpan,
dan penyelesaian yang telah diprogram untuk setiap permintaan yang dilaksanakan
setiap saat untuk permintaan yang telah dipilih. Bagian berikut pada bab ini meru-
pakan kerangka yang rinci tentang menu khusus serta program yang berhubungan
dengan menu itu.
       Seperti yang terlihat oleh sekretaris, menu ini disajikan dalam Gambar 10.5.
Sedangkan modul program yang menguraikan menu, menerima pilihan menu, dan
kemudian mentransfer kontrol ke modul program terdapatpada Gambar 10.6:modul
ini dinamakan secdb.app.




                                                                               143
MONDAY NIGHT IRREGULAR BOWLING LEAGUE QUERY MENU
           (1)   DISPLAY STATISTICS FOR AN INDIVIDUAL BOWLER
           (2)   DISPLAY TOTAL PINS FOR EACH TEAM
           (3)   DISPLAY TEAM STANDING
           (4)   DISPLAY SCHEDULE FOR A GIVEN WEEK
           (5)   GENERATE AN END-OF-SEASON REPORT
           (6)   RETURN TO RBASE 5000

      Gambar 10.5 Menu utama yang dijabarkan oleh secdb.apx.

      .COMMAND
      SECDB
      SETMESSAGE OFF
      OPEN SDB
      SET ERROR MESSAGE OFF
      SET BAR PICKI INT
      LABEL STARTAPP
            NEWPAGE
            CHOOSE PICK] ('J{OMsdbmain IN SECDB. APX
            IF PICKI EQ                  I THEN
                    J{UNbwlrsl. com
                    GO TO STARTAPP
            ENDIF
            IF PICKI EQ                  2 THEN
                    RUN leampns IN SECOR. APX
                    GOTOSTARTAPP
            ENDIF
            IF PICKI EQ                  3 THEN
                    RUN teampns IN SECDB. APX
                    GOTO STARTAPP
            ENDIF
            IF PICKI EQ                  4 THEN
                    RUN wkschdl IN SECDB. APX
                    GO TO STARTAPP
            ENDIF
            IF PICKI EQ                  5 THEN
                    RUN eosrpt. com
                    GOTO STARTAPP
            ENDIF
            IF PICKI EQ                  6 THEN
                    GOTO ENDAPP
              ENDIF
              GOTO STARTAPP
      LABEL ENDAPP
      CLEAR PICK I
      RETURN
      -MENU
      sdbmain
      COLUMN MONDAY NIGHT IRREGULARS BOWLING LEAGUE QUERY MENU
      DISPLA Y STATISTICS FOR AN INDIVIDUAL BOWLER
      DISPLA Y TOTAL I'INS FOR EACH TEAM
      DISPLA Y TEAM STANDINGS
      DISPLA Y SCHEDULE FOR A GIVEN WEEK
      GENERATE AN END-OF-SESAON     REPORT
      RETURN TO RBASE 5000



                Gambar 10.6 Modul program menu utama


144
Secdb.app dikembangkan dengan menggunakan APPLICATION EXPRESS,
paket utilitas perangkat lunak yang merupakan bagian dari R:base 5000. Untuk
menambah kecepatan, secdb.app dipadukan ke dalam modul yang mudah pela-
ksanaannya dengan nama secdb.apx. Jika R: base 5000 dibawa ke tingkat perintah
program menu ctilaksanakandengan urutan perintah sbb:
             R>B:
            R> RUN secdb IN secdb.apx
      Jika salah satu dari 5pilihan pertama diambil, maka modul program yang ditulis
dalam bahasa pemprograman R: 5000 akan dilaksanakan. Pada gilirannya sebagian
dari modul ini akan memanggil submodullainnya. Modul program yang dipanggil ini
akan dibahas secara rinei pada bagian berikut. Pelaksanaan program yang dipakai
untuk menjabarkan keluaran yang ada pada bagian ini adalahjenis & program sumber
yang digabungkan.

10. 4    R: BASE 5000 PROGRAM MODUL BWLRST.PRG
       Modul ini dipanggil oleh program menu utama pada saat pilihan menu adalah
"DISPLAY STATISTICS FOR AN INDIVIDUAL BOWLER". Pelaksanaan modul
ini mempengaruhi perhitungan dan keluaran berupa statistic untuk pemain individ-
ual. Statistik ini dapat diperoleh pada setiap minggu dalam masa perlombaan, sampai
dan meliputi minggu ke akhir dimana nilai di masukkan ke dalam database (logika
yang terdapat dalam modul ini ada pada gambar 10.7 programnya terdapat pada
gambar 10.8sedangkan keluaran khusus dari modul ini ada pada gambar 10.9)hanya
bagian logika BWRST.PRG yang perlu di tekankan adalah bagian kalkulasi ham-
batan (handicap) yang berisi dua peryataan.
              SET VAR hndkp TO 200 - .bavg
              SET VAR hndkp TO .hndkp X 0.75
"hndkp" Merupakan variabel yang dinyatakan sebagai I N T E G E R dan dipakai
untuk menampung hambatan yang ada sekarang untuk tiap individual "baug" juga
variabel INTEGER menampung rata-rata akhir pemain. Kedua peryataan tersebut
akan memecahkan persamaan tersebut dimana TRUNC merupakan fungsi trunkasi
(truncation)
             handicap =TRUNC«200-currencaverage)*0.75)




                                                                                145
1.   Determine the last week for which scores have been entered into the
               SCORES relation. Store the week as "max_wk".
         2.    Input the weekof the season for which statistics are desired as "wk", and
               check the value for validity.
         3.    Input the name ofthe bowler for which statistics are desired as "name,"
               and check the name for validity.
         4.    Using the SET POINTER feature of R:base 5000, identify aUtuples in
               the SCORES relation that will be used in the calculations. (The
               condition is that bname =name AND week <=wk.).
         5.    For each tuple in the group selected via SET PqITER :
               (a) Check each individual game score to find the highest game
                    bowled by this bowler as "hiJame."
               (b) Check the sum of ech three game series to find the highest series
                    score as "hi_series."
               (c)  Add aU the idividual game scores to find the total number of
                    scratch pinss as "tot-pins."
          6.   Calculate this bowler's current average and handicap as "bavg" and
               "hndkp," respectively.
          7.   Output the results.
                  Gambar 10.7 Logik urnurn dalam bwlrst.prg
      Meskipun hndhp merupakan variabel integer perkalian hndkp dengan 0.75
mempengaruhi nilai riil. nilai riil ini kemudian bisa namakan sebagai hndkp variabel
integer R: base 5000 secara otomatis akan melaksanakan trukasi (memperpendek
denagn mengurangi ujung-ujungnya) angkariil yang ditunjuk sebagai variabel yang
dinyatakan sebagai integer Jika nilai riil ini dikumpulkan untuk mendapatkan
handicap/hambatan, sttistik individual maupun team akan sangat dipengaruhi.

10. 5    R: BASE 5000 MODUL PROGRAM TEAMPNS.PRG
      Menu ini dipanggil ketika pilihan menu utamanya adalah " DISPLAYTOTAL
PINS FOR EACH TEAM" total angka pin yang dihitung adalah pin "scatch" (tanpa
hambatan) yaitu hitungan pin tanpa mempertimbangkan hambatan. Penambahan
modul ini ditujukan untuk mencakup total pin ynag dihitung bersama hambatan.
Penambahan modul ini dikembangkan denagn asumsi bahwa jumlah pin yang
dikehendaki rneliputi minggu terakhir nilai-nialai perlombaan di masukkan dalam
database pada bagian ini.




146
* (Procedure name is : "bwlrst. prg"
* (Written by Glenn A. Jackson
* (Oakland University, Rochester, MI 48063
* (
* (This procedure calculates and outputs the following
* (statistics on an individual bowler: High game, High series,
* (Total Pins and Handicap. all statistics include all games
* (bowled to date.
* (
* (This procedure is called by : sdbmain menu.
* (This procedure calls no other modules.
* (
NEWPAGE
SET VAR hU;ame INTEGER
SET VAR hi_ser INTEGER
SET VAR bavg INTEGER
SET VAR hndkp INTEGER
SET VAR max_wk INTEGER
SET VAR temp INTEGER
SET YAR tot pins INTEGER
SET YAR name TEXT
SET YAR done TEXT
SET VAR check INTEGER
SET VAR tot3 INTEGER
SET VAR totgam INTEGER
* ( )
* (Find the last week for which scores were entered as max_wk
* ( )
COMPUTE max_wk AS MAX week FROM scores
* ( )
* Onput the week for which statistics are desired as wk
* ( )
SET VAR done TO "false"
WHILE done EXISTS THEN
      WRITE "IF YOU WISH THE STATISTICS FOR THE SEASON TO DATE" AT 7.15
      WRITE "ENTER" AT 8.15
      SHOWVARmax_wk=l              AT8.21
      WRITE ", THE LAST WEEK FOR WHICH DATA WERE ENTERED" AT 8.23
     FILLINwk USING"OTHERWISE,
                             ENTERTHEWEEKDESIRED: " AT9.15
     IF wk GE 1 AND wk LE. max_wk THEN
              BREAJ
     ENDIF
     WRITE 'THE WEEK INPUT IS INYALlD" AT 15. 15
     WRITE "Press any key to continue       AT 17.15: PAUSE
     NEWPAG~
ENDWHILE
* ( )
* (Enter the bowler's name and make certain it is valid
* ( )
NEWPAGE
WHILE done EXISTS THEN
  FILLIN name USING "ENTER THE BOWLER'S NAME, e. g. Joe Jones. " AT 10. 15
 COMPUTE check AS COUNT bname FROM bowler WHERE bname      = .name
 IF check GT 0 THEN

       Gambar 10. 8 (a) Bagian pertama dari modul program bwlrst. prg.

                                                                             147
BREAK
     ENDIF
     WRITE" THE NAME ENTERED IS NOT IN THE DATABASE" AT 12 15
     WRITE "Press any key... then enter anotname." AT 14 15; PAUSE
     NEWPAGE
ENDWHILE
NEWPAGE
.   ( )
· (Calculate this bowler's statistics)
. ( )
SET VAR hi...,game 0     TO
SET VAR hUer TO 0
SET VAR 10tpins TOO
SET POINTER # 1 errl FOR scores WHERE bname EQ. name AND week LE. wk
WHILE errl EQ 0 THEN
       SET VAR temp TO gamel IN #1
       IF temp GT. hi...,game  THEN
                SET VAR hi...,gameTO. temp.
       ENDIF
       SET VAR 1013TO .temp
       SET VAR temp TO game2 IN #1
       IF temp GT .hi...,gameTHEN
                SET VAR hi...,gameTO . temp
       ENDIF
       SET VAR tot3 TO . temp + . to13
       SET VAR temp TO game3 IN #1
       IF temp GT .hi...,gameTHEN .
                SET VAR hi...,gameTO .temp
       ENDIF
       SET VAR 1013TO .temp + .to13
       IF to13 GT .hi_ser THEN
                SET VAR hi_ser TO . 1013
       ENDIF
       SET VAR 10tpins TO .totpins + . to13
       NEXT #1 errl
ENDWHILE
.   ( )
· (Calculate this bowler's handicap)
. ( )
SET VAR 10tgam TO . wk x 3
SET VAR bavg TO .1otpinsI .1otgam
IF bavg LT 200 THEN
          SET     VAR      hndkp TO 200         -   .bavg
          SET     VAR      hndkp TO .hndkp x O.75
ELSE
          SET     VAR      hndkp TO 0
ENDIF
.   ( )
·   (OUTPUTTHERESULTS)
. ( )         .
WRITE "STATISTICS FOR" AT 7 20
SHOW VAR name =15 AT7 36
WRITE "THRU WEEK" AT 7 51
SHOW VAR wk=1 AT 7 61
WRITE'    +++++   I I I I I I I +t++++   I I I I I I I I I I I I I I +"   AT 8 20

            Gambar 10. 8 (b) Bagian kedua dari modul program bwlrst. prg

148
WRITE      "AVERAGE PINS PER GAME:" AT 10 20
                   SHOW BAR bavg = 3 AT 1043
                   WRITE      'TOTALPINS- WITHOUT HANDICAP: " AT 12 20
                   SHOW VAR totpins =4 AT 12 50        .
                   WRITE      "HIGH GAME SCORE TO DATE: " AT 14 20
                   SHOW BAR hi-&ame=3 AT 14 45
                   WRITE      "HIGH SERIES TO DATE: " AT 16 20
                   SHOW VAR hi_ser=3 AT 16 41
                   WRITE      "CURRENT HANDICAP: " AT 18 20
                   SHOW VAR hndkp=2 AT 1838
                   WRITE      "Press any key to continue.. " AT 23 20: PAUSE
                   CLEAR ALL VAR
                   RETURN

        Gambar 10.8 (c) Bagian terakhir dari mOOulprogram bwlrst.prg
                STATISTICS FOR bill Black        THRU WEEK 3
                ++++1111111++++++11 I 1 1 1 1 1 1 1 1 1 I 1++++++
                AVERAGE PINS PER GAME: 153
                TOTAL PINS - WITHOUT HANDICAP: 1381
                HIGH GAME SCORE TO DATE: 165
                HIGH SERIES TO DATE: 483
                CURRENT HANDICAP : 35

                     Gambar 10.9 Macam output dari bwlrst.prg
     Sebuah keluaran sampel di pelaksanaan mOOulprogram ini terdapat pada
gambar 10.10 logika umum yang terdapat dalam mOOulini ada dalam gambar 10.11
dan kOOenilai untuk mOOulini terdapat dalam gamabar 10.12.
                        TOTAL SCRATCH PINS THROUGH WEEK 4

         TEAM NO.                    TEAM NAME                      TOTAL PINS.
               1                     alleyCats                            6257
               2                     Inconsistents                        6172
               3                     TenPins                              6147
               4                     HinghRollers                         6798
               5                     Slitters                             6580
               6                     SandBaggers                          6534


           Gambar 10.10 Tipe output dari pelaksanaan teampns.prg




                                                                                  149
1.   Determine the last week for which scores have been entered into the
               SCORES relation. Save the week value as "max_wk."
          2.   Print out the header for the table of data that wiil be output later.
          3.   Use an outer WHILE-THEN loop to find the variable "ctr" as loop as a
               1000variable, to cycle through each of the six teams in the league. for
               each team, use SET POINTER #1 to locate all the vowlers on that team :
               a) Use an inner WHILE - THEN loop to find the total number of pinds
                    for one team. Save the total as "totpins."
               b) Check the TEAM relation to find the name of the team for this team
                    number. Save the team name as "name_I."
               c)   Output the data on this team. adjusting the line count on tohe output
                    accordingly.
                     Gambar 10.11 Logik umum dari teampns.prg
       Jika logika lama versi R: base 5000 teampns.prg di bandingkan dengan versi
dBase IIIdari modul yang sarna (bag .tb 9.4), maka dapat kita ketahui bahwa dalam
dBase III dipakai operasi Join untuk mengumpulkan semua nilai pemain dan satu
team ke dalam bagian informasi umum. Informasi ini disimpan dalam relasi temporer
yaitu TEMP2. Meskipun JOIN dapat di pakai dengan cara yang sarna dalam R:base
5000, namun dari sudut pemprograman, akan lebih sederhana dalam R:base 5000
untuk mengidenfikasikan semua anggota dalam suatu team, dan kemudian jumlah
nilai permainan untuk team ini digunakan loop WHILE - THEN. Belum ada usaha
untuk membandingkan mana yang lebih cepat antara SET POINTER dengan JOIN
dalam R: base 5000.

10. 6   MODUL PROGRAM R: BASE 5000 TEAM STD. PRG
      Modul program ini dipanggil oleh program menu utama ketika pilihan menu
"DISPLAY SCHEDULEFOR A GIVEN WEEK." Modul ini akan kepengaruh
terhadap keluaran tabel yang memberikan nama-nama team dan jalur-jalur yang
ditentukan pada minggu masa perlombaan. Modul ini memalukan informasi yang
minggu keberapajadwal dimulai keluaran yang khas dipelaksanaa modul ini terdapat
dalam gambar 10.13, logika umumnya yang terdapat dalam modul ini ada pada
gambar 10.14, dan modul itu sendiri terdapat dalam gambar 10.15.
      Pusat logika dalam WKSCHDL.PRG. Dilaksakan dengan perintah set pointer
yang diikuti oleh WHILE-THEN untuk menggantikan operasi JOIN yang mungkin.
Penggunaan JOIN dalam algoritma di bicarakan dalam peablema di akhir bab ini.




150
*   (Procedure name is : "teampns"
 *   (Written by Glenn A, Jackson
 *   (Oakland University, Rochester, MI 48063
 *   (
 ·   (This procedure print out the total number of "scratch"
 ·   (pins for each team for the season to date,
 .   (
.* (This procedure is called by : sdbmain menu.
 * (This procedure calls :
 * (
 * (No parameters are passed into or out of this module
 NEWPAGE
 SET    V AR     max_ wk INTEGER
 COMPUTE max_wk AS MAC week FROM scores
 * (Print out the header for the output data
 WRITE "TOTAL SCRATCH PINS TIlROUGH WEEK" AT 5 20
 SHOWVARmax_wk=1            AT 5 53
 WRITE "++++++++++++++++++++++++++++++++"               AT 6 20
 WRITE "TEAM NO. TEAM NAME                        TOTAL PINS" AT               7 20
 WRITE        "__.nnnnn.     00     00.000000.          00     00000000.    AT 8 20
 * (

 .
 · (Calculate and print out the total pins for each team.
     (
 SET VAR ctr INTEGER
 SET VAR Iyne INTEGER
 SET VAR gsuml INTEGER
 SET VAR gsum 2 INTEGER
 SET VAR gsum3 INTEGER
 SET VAR name_t TEXT
 SET VAR name_b TEXT
 SET VAR totpins INTEGER
 SET VAR erl INTEGER
 SET VAR ctr TO I
 * ( )
 · (Outer loop picks the team
 * (      )
 WHILE ctr LE 6 THEN
       SET POINTER #1 errl FOR bowler WHERE tnumb EQ. ctr
 * ( )
 * (Inner loop picks the bowlers on a team
 * ( )
       SET BAR totpins TO 0
       WHILE err I EQ 0 TIlEN
              SET BAR        name_b TO bname IN #1
              COMPUTE        gsum AS SUM            gameI FORM                      scores   WHERE   bname   .name_b
              COMPUTE        gsum AS SUM            game2 FORM                      scores   WHERE   bname   .name_b
              COMPUTE        gsum AS       SUM      game3 FORM                      scores   WHERE   bname   ,name_b
              SET VAR        totpins TO    ,totpins +     ,gsuml
              SET VAR        totpins TO    .totpins +     ,gsum2
              SET VAR        totpins TO    .totpins +     ,gsum3

 .   (
     )
       ENDWHILE

     SET  VAR name_t TO tname IN team WHERE tnumb                          = ,ctr
     SET V AR Iyne TO ,ctr +8
     SHOW V AR ctr =. I AT .lyne 23
     SHOW V AR name_t = 15 AT ,Iyne 30
     SHOW V AR totpins = 5 AT .lyne 49
     SET V AR ctr TO ,ctr + I
 ENDWHILE
 WRITE "Press any key to continue            .,,"   AT 20 20; PAUSE
 CLEAR ALL V AR
 REruRN

                                  Gambar            10. 12 Modul program teampns. prg

                                                                                                                 151
THE SCHEDULE FOR WEEK NUMBER 3

               TEAM                                       LANE NUMBER

               AlIeyCats                                          3
               Inconsistents                                      6
               TenPins                                            1
               HighRollers                                        4
               Splitters                                          5
               SandBaggers                                        2

       Gambar 10.13 Tipe output dari modul program wkschd1.prg
          1.     Detennine the last week of the bowling season. Assign'this value to
                 variable "max_wk".
          2.     Input the week of the season for which the schedule is desired as
                 "in_val", and check to make cenain that the value is valid.
          3.     Output the header for the table of values that is to follow.
          4.     Use a SET POINTER command in the SCHED relation to identify all of
                 the tuples that have week values equal to the value in in_val.
          5.     Use a WHILE -THEN loop to cycle through all of the teams that are in
                 the set of teams linked together via the SET POINTER coommand in 4.
                 Output the team name (tname) found in the TEAM relation. and the lane
                 number (lane) found in the CHED relaition for each team.


      Gambar 10.14 Logik Umum untuk modul program wkschd1.prg




152
COMMAND
wkschdl
· (Procedure name is : "wkschdl"                                )
· (Written by Glenn A. Jackson                                  )
· (Oakland University, Rochester, MI 48063                      )
.   (                                                           )
· (This procedure prints out the schedule for a given week      )
· (The week for which the schedule is desired is input from     )
· (the terminal.                                                )
.(                                                              )
· (This procedure is catled by : sdbmain menu.                  )
· (Thisprocedurecalls :delay                                    )
.(                                                              )
NEWP AGE
· (Find the last week of the season as max_wk
SET VAR done TEXT
SET VAR done TO "false".
SET VAR in_val INTEGER
WHILE done EXISTS THEN
    WRITE "ENTER WEEK FPR SCHEDULE IS DESIRED" AT 710
        WRITE "ONLYVALUESBETWEEN1AND " AT 8 10
        SHOE VAR max_wk = 1 AT 836
        FILLIN in_val USING "ALLOWED" AT 8 38
        IF in_val LE .max_wk AND in_val GE I THEN
                BREAK
        ENDIF
        WRITE'THE WEEKINPUTIS INVAUD " AT 5 10
    WRITE "Press any key to continue" AT 16 10; PAUSE
    NEWPAGE
ENDWHILE
.(
· (Output header
NEWPAGE
WRITE 'THE SCHEDULE FOR WEEK NUMBER "AT 5 10
SHOW VAR in_val = I AT 546
WRITE"      ++++++++++++++++     IIIIIIIIIIIIII "     AT 6 10
WRITE" TEAM                      LANE NUMBER " AT 7 10
WRITE" mum                       um___mmmm_       " AT 8 10
· (Determine and output the schedule
SET POINTER #1 errl FOR sched WHERE week EQ .in_val
SET VAR in INTEGER
SET VAR lyne INTEGER
SET VAR Iyne TO 9
WHILE errl EQTHEN
     SET VAR numb TO tnumb IN #1
     SET VAR name TO tname In team WHERE tnumb EQ .numt-
     SET VAR in TO lane IN #1
     SHOWVARname=15           AT .lyne17
     SHOW VAR In =1 AT .lyne41
     SET VAR Iyne TO . Iyne + 1
     NEXT #1 errl
ENDWHILE
WRITE "Press and key to continue... " AT 20 17; PAUSE
CLEAR ALL VAR
RETURN        .

                       Gambar 10. 15 Modul program wkschdl.prg



                                                                    153
10. 7   MODUL PROGRAM              R:5000 EOSRPT.PRG

      MW~Ini~iFftn9BiI minW
            i          Vlih     Wftmft
                                     Vftift~ftft
                                               vilibftnmin~ftQNfth
                                                                 "QijtmR-
ATEANEND-OF-SEASON          REPORT".Pelaksanaanmodulini akanmempengar-
uhi dalam penentuandan keluarantetangnamapemainyang (1) mempunyainilai
perlombaantunggaltertinggi(2) mempunyainilai seritigapemaintertinggiselama
naikpertandingan(3)mengakhirimasperlombaandenganrata-ratatiapperlombaan
yangtertinggi.Keluaranmoduliniuntukdatadalamdatabasesampelterdapatdalam
gambar 10.16 logika umum untuk modul ini terdapat dalam gambar 10.17 dan
sedangkanmodulnyaada dalamgambar10.18

10. 8   M~PROG R: BASE 5000 TEAMSTD.PRG
      Modul program ini dipanggil oleh program menu utama pada saat pilihan
menu adalah "DISPLAY TEAM STANDINGS" Pelaksanaan program ini akan
menentukan kalkulasi dan tampilan record menangkah bagi semua team dalam liga
tersebut. Selama satu minggu dalam masa perlombaan. lalah angka pins yang tanpa
hambatan untuk tiap-tiap team selam minggu tersebut juga merupakan keluaran.
Modul dimulai dengan menunjukan informasi minggu kapan. Untuk mana posisi
diharapkan setelah yakin bahwa minggu yang dikenhendaki benar, program mualai
menhitung posisi dan mencetak hasil dalam bentuk tabular gambar 10.19 menunjuk-
kan keluaran di program ini sedangkan gambar 10.20 menunjukkan logika umum
model, sedangkan kode nilai terdapat pada gambar 10.21.


                           END-OF-SEASON REPORT

                 IDGHEST SINGLE GAME SCORE OF 202
                 WAS BOWLED BY THE FOLLOWING BOWLER(S)
                            Roy Lane
                            Russel Taylor
                            Paul Miller

                 IDGHEST THREE-GAME SERIES SCORE OF 559
                 WAS BOWED BY THE FOLLOWING BOWLER(S)
                            Roy Lane
                            Riussel Taylor
                            Paul Miller

                 HIGHEST AVERAGE GAME SCORE OF 179
                 WAS BOWLED BY THE FOLLOWING BOWLER(S)
                            Paul Miller.



           Gambar 10.16 Output dari eosrpt.prg untuk contoh database




154
1. Detennine the laSl week ofthe season from the SCHED relation. Save this value as "max_wk."
2. Detennine   the highest single game score for the season. Save this score as "best~am."
3. Output the high game score infonnation        :
   a) PROJECf a nuary temporary relation TEMPR from SCORES that holds the names (bname) of all bowlers
      who have bowled at least one game score equal to the value in best~am.
   b) Print out the end-of-season   repon header followed by the names of all those people who bowled the
      highest single game score.
   c) REMOVE the temporary relation TEMPR from the database.
4. Determine the highest three-game    series score as "best_ser" as follows :
   a) EXPAND the SCORES relation with the addition of a new column named total.
   b) Fill the total field value in each tuple with the sum gamel~ame2+game3       fonn that tuple
   c) Find the best_ser value using the COMPUTE        - MAX   command on the total field in SCORES.
   d) PROJECf a temporary relation TEMPR from SCORES that holds the names of all bowlers with a
      three-game score of bescser.
   e) Output the infonnation   on best series.
S. Detennine   the season's best average game score as "best_avg" as follows:
   a) PROJECf a temporary relation, TEMP2, from the BOWLER relation thatholds each bowler's name
      (bname) and staning average (stavg)
   b) OIange the column name stavg to avg in TEMP2.
   c) Calculate the average game score for each bowler and fill in the avg field value in TEMP2 with this value.
   d) Compute the value for best_avg using a COMPUTE-MAX            command and output the final results.
   e) Output the infonnation on best average.
6. REMOVE COLUMN total from SCORES.
7. REMOVE TEMP2 from the database.


                               Gambar 10.17 Logik umum untuk eospt.prg




                                                                                                                   155
· (Procedure name is : "eosprt. prg"                                           )
· (Written by Glenn A. Jackson                                                 )
· (Oakland University, Rochester, MI 48063                                     )
.   (                                                                          )

.
·
·
    (fhis procedure calculates and print out the end-of-season report
    (
  (fhis procedure is called by: sdbmain menu.
                                                                               )
                                                                               )
                                                                                )
· (fhis procedure calls no other modules.                                       )
.   (                                                                           )
NEWP AGE
SET MESSAGE OFF
SET ERROR MESSAGE OFF
.   (
· (Find the last week of the season as max_wk
SET VAR max_wk INTEGER
COMPUTE max_wk AS MAX week FROM schoo
· (Initialize variables required for the raport
SET VAR besuer INTEGER
SET VAR best_avg INTEGER
SET VAR best~am INTEGER
SET VAR name TEXT
SET VAR hgl INTEGER
SET VAR hg2 INTEGER
SET VAR hg3 INTEGER
SET VAR linect INTEGER
.   (   )
· (Findseason's high game score as best~am.
.   (   )
COMPUTE hg} AS MAX game} J;'ROMscores
COMPUTE hg2 AS MAX game2 FROM scores
COMPUTE hg3 AS MAX game3 FROM scores
IF hgl > = .hg2 THEN
  SET VAR best~am TO .hgI
ELSE
  SET VAR best~am TO .hg2
ENDIF
IF hg3 > .best~am THEN
  SET VAR best~am TO .best~am + .hg3
ENDIF
.   (   )
·   (Place the names of all those who got bcst~am in TEMPR
.   (   )
PROJECTtemprFROMscoresUSINGbname+                                       .
WHERE game} = .best~am OR game2 = .best~am OR game3                     =.best~am
DELETE DUPLICATES FROM tempr
.   (   )
· (Print otu the end~f-season report header and high game data
. ( )
WRITE "END-OF-SEASON REPORT" AT} 26
WRITE "+ I I I I I I I I I I I I I I+++++++"   AT 2 26
WRITE "HIGHEST SINGLE GAME SCORE OF" AT 4 20
SHOW VAR best-8am = 3 AT 4 49
WRITE "WAS BOWLED BY THE FOLLOWING BOWLER(S)" AT 5 20
SET VAR linect TO 6

            Gambar 10. 18 (a) Bagian pertama dari modul program eosrpt. prg.

156
SET POINTER #1 errlforb tenpr
WHILE errl =0 THEN
    SET VAR name TO bname in #1
    SHOW VAR name= 15 At .Iinect +1
    SETVAR linect TO .Iinect +1
NECf #1 errl
ENDWHILE
REMOVE Tempr
*()
* (Find the season's high three game series score as best _ser)
* ( and output the results )
*()
EXPANDscores WITH total INTEGER
ASSIGN total TO gamel + ganle2 IN scores
ASSIGN total TO total + game3 IN scores
COMPUTE best _ser AS MAX total FROM scores
PROJECf tempr FROM scores USING bnanle +
WHEREtotal =,best _sar
DELETE DUPLCATES FROM lcmpr'
SET VAR linect TO .Iinecl + 2
WRITE"HIGHEST THREE-GAME SERIES SCORE OF" AT linCCl 0           2
SHOW VAR best_ser=3 AT .Iinect + 1
WRITE "WAWSA BOWLED BY THE FOLLOWING BOWLER (S):" AT .Iinect 20
SET VAR linect TO .Iineect + I
SET POINTER #1 errl FOR tempr
WHILE   errl   = oTHEN
    SET VAR name =TO bname IN#1
    SHOW VAR name =15 AT .Iinect 30
    SET VAR linect TO . 1inect+ 1
    NEXT #1 errl
ENDWHILE
REMOVE tempr
*0
* (Find the highestseason's average as best_avg)
* ( and output the result)
*()
SET VAR tgames INTEGER
SET VAR totpins INTEGER
SET VAR tgames INTEGER
SET VAR errl INTEGER
SET VAR ERR2 INTEGER
PROJECf temp2 FROM bowler USING bname stavg
CHANGE COLUMN stavg IN temp2 TOavg
SET VAR tgames TO .max_wk x 3
SET POINTER#1 err1 FOR temp2
WHILE err 1 = 0 THEN
   SET VAR name TObname IN31
   COMPUTE totpins AS SUM total FROM scores +
   WHERE bname     = .name
    ASSIGN avg TO .totpins I .tgame INtemp2 WHERWE bname = .name
    NEXT #1 errl
ENDWHILE
COMPUTE best_avg AS MAX avg FROM temp2
*()

          Gambar 10. 18 (b) Bagian kedua daTimodul program eosrpt.prg

                                                                        157
SET VAR linect TO .linect + 2
WRITE "HIGHEST AVERAGE GAME SCORE OF" AT .1incct 20
SHOW VAR best_avg = 3 AT .1inect 50
SET VAR linect TO .linect + 1
WRITE "WAS BOWLED BY THE FOLLOWING BOWLER(S)" AT .linect 20
SET VAR linect TO .linect + 1
SET POINTER #2 crr2 FOR temp2 +
WHEREavg = .best_avg
WHILE err2 = 0 THEN
     SET VAR name TO bname IN #2
     SHOW VAR name = 15 AT .lincct 30
     SET VAR Iinect TO . linect + 1
     NEXT #2 eI1"2
ENDWHILE
REMOVE temp2
REMOVE COLUMN total FROM scores
SET MESSAGE ON
WRITE "Press any key to continue ..." AT 21 20;PAUSE
            Gambar         10. 18 (c) Bagian akhir dari modul program eosrpt.prg
       Dalam pelaksanaan logika teamstd.prg lebih rumit dari pada modul-modul
lainnya oleh karena keputusan desain dalam Bab 5 maka jumlah menang, kalah dan
total pin untuk masing-masing team pada akhir tiap minggu tidak disimpan dalam
database. Hal ini dilakukan unruk menghindari kemungkinan adanya data yang tidak
tetapl inkonsisten dalam database. Oalam kasus ini dimana seseorang dapat men-
gubah nilai perlombaan anggota liga tanpa menghitung kembali akibatnya, akan ada
pada kemenangan, kalah total pin salah satu akibat dari keputusan disain ini adalah
jika posisi team dihitung tiap minggu, kedudukan harus dihitung kembali untuk setiap
minggu diawali dengan pertanyaan, dimulai dengan minggu pertama. Hal ini tak saja
mengakibatkan rumitnya logika dalam teamstd.prg tetapi juga secara dratis menam-
bah waktu yang diperlukan untuk menghitung hasil waktu perhitungannya untuk
menjabarkan posisi team bertambambah secara linier dengan jumlah minggu dalam
masa penandingan dimana posisi ini dikehendaki yaitu akan membutuhkan waktu
kurang lebih 3 minggu lamanya untuk menghitung posisi minggu ketiga seperti
 halnya pada minggu pertama .
1. Detennine the last week of the season for which scores have been entered into the SCORES relation. Save this value as
   "m8Jl_ wk."
2. Input the week for which the standings are desired as "in_wk." and make cenain that value inpul is valid.
3. Zero the wins: losses, and lOlpins values in aillupies in the extra relation TST A TS.
4. For each lane (noted as In), do the following for each week (noted as wk) :
   a) Use the SET POINTER #2, WHILE-THEN combination to operale on the scores for each bowler on the team
       bowling on this lane for this week. The following things are done for each bowler: (I) their current hindicap is
       calculated and slored in "hndkp"; (2) each individual game score is added to the learn lotal for lhal game for lhat
       night (including handicap); (3) lhe lOlpins value in TSTATS for this learn is replaced wilh the current value plus the
       sum of this bowler's lhree game lOlal (wilhoUl handicap),
       The coding used here is thal g I a is lhe lOlal pin counl for game I for the team on thc odd numbered lane, while g I b
       is the total pin counl for gamc I for the learn on thc even numbered lane. g I a, g3a, g2b, and g3b have similar
       meanings..
   b) Adjust lhe won-Iosl record (inTSTATS) of lhe lasllwo learns analY/.ed, The codmg here IS lhallhe lcam on the odd
       numbered lane has ils idenlifier names ending wilh "a," while lhe team on lhe even nembered lane has identifiers
       that end in "b,"
5, Output the le"gue slandings by merely SELECTing all the dala lhal are in TS1'A 1'S, afler a proper heading has been
   output.
                          Gambar 10. 20 Logik umum untuk teamstd.prg

158
Oleh karena menang kalah dan hasil pin tidak disimpan sebagai bagian dari set
relasi utama dari database, relasi temporer dikembangkan untuk menampung data
ini hanya selamapenghitungan dibuat dalam menghasilkan kedudukan team. Relasi
ini adalah
            TSTATS(tnumb, wins,losses,totpins)
dan isi TSTATS yang ada pada saat kalkulasi posisi tiem dimulai, terdapat pada
gambar 10.22.
·
·   (Procedure   name   is : "teamstd.prg"
    (Written by Glenn A. Jackson

.
· (Oakland University, Rochester, MI 48063

·   (
  (This procedure calculates and prints out the league standings

.
· (for any week. The week desired is input from the terminal.

· (

. (This procedure is called by : sdbmain menu.
  (
NEWPAGE
SET VAR max_wk INTEGER
SET VAR in_wk INTEGER
SET VAR done TEXT
· (Determine the last week for which scores have been entered as max_wk

.
COMPUTE max_wk AS MAX week FROM scores

·   (    )

.   (Enter week for which the standings are desired...
  ( )
SET VAR           done TO "false"
                                                         and verify


WHILE done         EXISTS THEN
    WRITE         "ENTER WEEK FOR WHICH LEAGUE STANDINGS ARE DESIRED" AT 7 10
    WRITE         "ONLY VALUES BETWEEN 1 AND" AT 8 10
         SHOW V AR max_wk           =1       AT   8 36
    ALLIN in_ wk USING "aUowed" at 15 10
    IF in_wk LE . max_wk AND in_wk GE 1 THEN
           BREAK
    ENDIF
    WRITE "THE WEEK INPUT IS INVALID" AT 15 10
    WRITE "Press any key to continue AT 16 10; PAUSE
    NEWPAGE

.
ENDWHILE

SET
    (    )
         VAR      err I INTEGER
SET      VAR      err2 INTEGER
SET      VAR      err3 INTEGER
SET      VAR      tot INTEGER
SET      VAR      avg INTEGER
SET      VAR      tnb INTEGER
SET      VAR      hndkp INTEGER
SET      VAR      teama INTEGER
SET      VAR      teamb INTEGER
SET      VAR      tota INTEGER
SET      VAR      totb INTEGER
SET      VAR      name TEXT
SET      VAR      gla TO 0
SET      VAR      g2a TO 0
SET      VAR      g3a TO 0
SET      VAR      glb TO 0
SET      VAR      g2b TO 0
SET      VAR      g3b TO 0
SET      VAR      In    TOO

.
SET
    <
         VAR
         )
                  wk TOO


·
·   (Make cenain than wins, losses and totpins auribute values
    <areaUzero in the scratch-pad relation TSTATS, before new
                                                                          )
                                                                          )
             Gambar         10.21 (a) Bagian pertama dari modul program teamstd.prg.
                                                                                       159
* (team slanding calculations begin.)
* ( )
ASSIGN      wins    TO 0.0 + O. 0 IN tstats
ASSIGN      losses TO O. 0 + O. 0 IN lSlats
ASSIGN      totpins TO O. 0 + O. 0 IN tstals
* ( )
                                      -
* (Calculation of slandings begins here calculalions go a week)
      - -                =
    (at a time from wk I to in_wk. )
    ( )
WIIILE wk <= .in_wk TIIEN
    SET     POINTER # I errl FOR sched WIIERE week = .wk AND lane =.In
    SET     VAR tnb TO lnumb IN #]
    SET     POINTER #2 err2 FOR bowler WI(ERE tnumb = .lnb
    WIIILE err2  =  0 TIIEN
        SET VAR name TO bname IN #2
        )
        IF wk = I 'I'll EN
            SET VAR avg TO slavg 1: #2
        ELSE
            RUi'i gelavg.prg * (FI"'D TilE avg TO USE FOR TillS WEEK)
        ENDIF
        IF avg < 200 TIIEN
                 SET VAR hndkp TO 2(X) - . avg
                 SET VAR hndkp TO .hndkp x O.75
        ELSE
                SET V AR hndkp TO ()
         ENDIF
*        )
         SET POINTER #3 FOR scores WIIERE bname        =      .name AND week   = .wk
         SET VAR gl TO game! IN #3
         SET VAR g2 TO game2 IN #3
         SET VAR g3 TO game3 IN #3
         IF In = I OR In = 3 OR In = 5 'I'll EN
              SET     VAR gla TO .gla + .gl
              SET     VAR gla TO .gla + .hndkp
              SET     VAR g2a TO .g2a + .g2
              SET     VAR g2a TO .g2a + .hndkp
              SET     VAR g3a TO .g3a + .g3
              SET     VAR g3a TO .g3a + .hndkp
         ELSE
              SET     VAR       glb TO .glb    + .gl
              SET     VAR       glb TO .glb    + .hndkp
              SET     VAR       g2b TO .g2b + .g2
              SET     VAR       g2b TO .g2b + .hndkp
              SET     VAR       g3b TO .g3b + .g3
              SET     VAR       g3b TO .g3b .. .hndkp
         ENDIF
         SET      VAR 101 TO .gl .. .g2
         SET      VAR 101 TO 101 .. .g3
         ASSIG!' tolpins TO tolpins .. .101 1' Islals WIIERE lnumb = .ulb
         NEXT 1/2 err2
    ENDWHILE
*
    (    )
*
    (When an even numbered lane is pres,-,"I,calculate wins and losses)
*
    (for the team on this lane and the team on the odd numbered lane)

          Gambar 10.21 (b) Bagian kedua dari modul program teamstd.prg




160
·
.   (bfore it.)
    ( )
    IF In = 2 OR    In     =
                       6 THEN
       SET VAR teamb TO.tnb
       IF gla > .glb THEN
          ASSIGN wins TOwins + 1.0 IN tstats WHERE !numb = .teamb
          ASSIGN losses TOlosses + 1.0 IN tstats WHERE !numb  =.teama
        ELSE            .
          IF glb   > .gla THEN
             ASSIGN wins TOwins + 1.0 IN !Slats          WHERE !numb    = .teama
             ASSIGN losses TOlosses + 1.0 IN tstats      WHERE !numb    = .teamb
           ELSE
             ASSIGN wins TOwins + 0.5 IN tstats          +
                 WHERE !numb    =.teama OR tnumb = .teamb
             ASSIGN losses TOlosses + 0.5 IN tstats      +
                 WHERE !numb    =.teama OR tnumb = .teamb
          ENDIF

.   (
        ENDIF
        )
      IF g2a > .g2b THEN
          ASSIGN wins TOwins + 1.0 IN tstats WHERE !numb = .teamb
          ASSIGN losses TO losses + 1.0 IN tstats WHERE !numb = .teama
      ELSE
          IF g2b > .g2a TII EN
              ASSIGN wins TOwins + 1.0 IN tslats        WHERE     !numb = .teama
              ASSIGN losses TO losses + 1.0 IN lslats   WHERE     tnumb = .teamb
          ELSE
              ASSIGN wins TOwins + 0.5 1:' lstats      +
                WHERE tnumb = .tcama OR tnumb = .leamb
              ASSIGN losses TO losses + 0.5 1] tstals  +
                WIIERE tnumb= .teama OR tnumb = .teamb
          ENDIF         .
.     ENDIF
    ( )
      IF g3a > .g3b THBN
                                                              =
          ASSIGN wins TOwins + 1.0 IN !Slats WHERE tnumb .teamb
          ASSIGN losses TOlosses + 1.0 IN !SIalS WHERE !numb  = .teama
      ELSE
          IF g3b > .g3a THEN
              ASSIGN wins TO wins + 1.0 IN lstats       WHERE !numb = .leama
              ASSIGN losses TOlosses + 1.0 IN tstats                    =
                                                        WHERE !numb :teamb
          ELSE
              ASSIGN wins TOwins + 0.5 IN tstats        +
                WHERE !numb = .teama OR tnumb = .teamb
              ASSIGN losses TOlosses + 0.5 IN tstats    +
                WHERE !numb = .teama OR tnumb = .leamb
          ENDIF

.     ENDIF
    ( )
      SET VAR IOta TO .gla + .g2a
      SET VAR tota TO .tota + .g3a
      SET VAR tota TO .gIb + .g2b
      SET VAR tota TO .totb + .g3b
       IF tota > .totb THEN
          ASSIGN wins TO wins + 1.0 Ub tstats WHERE tnumb = .teama


                  Gambar   10.21 (c) Bagian ketiga dari modul program teamstd.prg




                                                                                    161
ASSIGNlosses TO losses + 1.0 IN tstats WHEREtnumb = .teamb
          ELSE
             IF totb > .tota THEN
                   ASSIGN wins TO wins + 1.0 IN tstats WHEREtnumb = .teamb
                   ASSIGNlosses TO losses + 1.0 IN tstats WHEREtnumb = .teamb
          ELSE
             ASSIGN wins TO wins + 0.5 IN tstats +
                WHERE tnumb                  =
                                 .teama OR tnumb = .teamb
             ASSIGN losses TO losses + 0.5 IN tstats +
                WHERE tnumb                  =
                                 .teamaOR tnumb .teamb          =
          ENDIF

.  ( )
       ENDIF

       SET VAR gla TO 0
       SET VAR g2a TO 0
       SET VAR g3a TO 0
       SET VAR glb TO 0
       SET VAR g2b TO 0
       SET VAR g3b TO 0
   ELSE
       SET VAR teama TO .tnb
   ENDIF
   IF In    =
          6 THEN
       SET VAR In TO I
       SET VAR wk TO .wk + I
   ELSE
       SET VAR gla TO 0
   ENDIF

.
ENDWHILE

·  ( )
      (Output the league standings for the week value input above.)
. ( )
NEWPAGE
WRITE "MONDAY NIGHT IRREGULARS BOWLING LEAGUE"                        AT 5 I
WRITE"  STANDINGS AT THE END OF WEEK" AT 6 1
SHOW VAR in_wk = I AT 6 36
WRITE     " "
SELECT ALL FROM tstats
WRITE "Press and key to continue         '   AT 22 5; PAUSE

          Gambar 10.21 (d) Bagian akhir dari modul program teamstd.prg
      Untuk menyakinkan bahwa nilai menang, kalah dan totpin merupakan set nol
pada perlombaan pelaksanaan teamstd.prg salah satu cara untuk mempercepat
pelaksanaan modul ini adalah salah satu cara untuk mempercepat pelaksanaan modul
ini adalah dengan mengamankan data dalam relasi ini dari minggu ke minggu. Namun
hal ini merupakan metode pemprograman untuk mencegah pelaksanaan rencana
keputusan desain yang menyebabkan nilai ini berada diluar database pada bagian
pertama.                                           .


       Titik utama yang membingungkan dimana mungkin dialami oleh pembaca
dalam melihat 10gikadidalam teamstd.prg, adalah cara dimana teams padajalur yang
berdekatan dapat berpasangan. Logika pertama akan menentukan trumb team yang
ditunjuk nke jalur satu pad suatu minggu dengan menggunakan SET POINTER # 1
pada relasi SCHED (lihat Gambar 10.23) Tnumb yang diperoleh dari pointer # 1 di
pakai untuk mencari tempat dari semua anggota team ini dengan menggunakan set
POINTER # 2 pada relasi BOWLER. Niali pemain individu dicari dengan pointer #2
dari team pointer # 1 di peroleh dengan SET POINTER #3 pada nilai SCORES.


162
R > list tst.ats

     Table: tst.ats
     Read Password: NO                              R > scect all from lstats
     Modify Password: NO
                                                    tnumb         wins            losses        tOlpins
     Column definitions

     1/ Name                                  Key           I         0.00000         0.00000
                   Type        Length
                                                            2         0.00000         0.00000
     I   tnumb     INTEGER     I   value(s)                 3         0.00000         0.00000
     2   wins      REAL        I   value(s)                 4         0.00000         0.00000
     3   losses    REAL        I   value(s)                 5         0.00000         0.00000
     4   totpins   INTEGER     I   value(s)                 6         0.00000         0.00000
     Current number of rows:   6
                                                    Ib
R>                                                                          (b)

                      (a)

          Gambar 10.22    (a) Struktur dari TSTATS, dan
                          (b) isi dari TSTATS pada awal pelaksanaan dari teamstd.prg
        Nilai perlombaan dari semua anggota team pada lajur satu disimpan dalam
variabel yang terakhirdengan "a" seperti91a. Huruf"a" menunjukkan team yang ada
 pada bagian yang bernomor ganjil jika variabel jalur (1") diubah ke jalur dua, nilai
 dari team anggota team disimpan dalam variabel yang berakhir dengan "b" seperti
 91b. Huruf"b" menunjukkan bahwa team tersebut ada pada bagian yang bernama
 genap dari 2 team yang sedang diperhimbangkan. Jika semua nilai dari seluruh
 anggota ke dua team telah dianalisis menang dan kalah untuk minggu itu dapat
 dipakai untuk team yang ditunjuk ke dua jalur berikutnya.Proses inidilanjutkan
 sampai semua team dianalisa.
        RelasiTSTATS harusdibuat sebelumteam SID.PRG dapatdigunakan meskipun
relasi ini dalain database berjalan dari proses yang satu ke proses lainnya, namun ini
 bukan relasi yang reguler sebab .isinya diasumsikan salah' pada awal tiap-tiap
 pelaksanaan team std.prg. Relasi ini temporer dalam arti bahwa data dan outputnya
'dibuatkemudian dihapuskan. Nilai yangditemukandalam relasi ini tidakdimaksudkan
 untuk dipakai dengan menggunakan proses yang satu ke proses yang lain. Beberapa
 sistem manajemen database memiliki perintah untuk membuat struktur relasi tem-
 porer selama pelaksanaan suatu program. Relasi temprorer ini ada, dan dapat
 digunakan seperti relasi lain. Pada saat program pembuatan mengakhiri suatu
 pelaksanan, relasi temporer akan menghilang.
        Teamstd.prg menianggil prosedur : getarg.prg. Modul yang terdapat dalam
 gambar 10.24 menghitung rata-rata yang diperlukan untuk perhitungan hambatan
 pada suatu minggu, bagi seorang pemain. Sebagai contoh, jika team Std.prg meng-
 hitung menag dan kalah yang ada selama minggu ke empat, hambatan yang dipakai
 dalam penghitungan ini menggunakan rata-rata tiga minggu pertama dalam masa
 pertandingan. Geiavg.prg menghitung rata-rata tiap pemain.




                                                                                                          163
SCHED
                                        !numb            week             lane


           Pointer    # 1 ~            ....5             2                1
                              /'
                                   "
                      I                  week   = 1 and lane = 2      sets Pointer #1
                     I                   to tnumb   =5
                                        BOWLER
                                                                                 ..
                                        bname                     !numb
                         "-
                               "       --
           Pointer    # 1 ~              Jean Adams          :. 5

                     /
                              /'
                                   .     !numb = 5 from Pointer #1 sets Pointer #2 to tnumb
                                                                                            ,

                                                                                                          =5   to get a

                     I                   bname; Jean Adams is one possibility.

                                         SCORES
                                        bname           week        game 1      game2          game3

                     
           Pointer    # 1 ~
                              "          Jean Adams           2           120         125        100

                                   <:                                                                     .
                                         bnamc = Jean Adams from Pointer #2, plus week             = 2,   sets Pointer #3
                                         to locate the desired game scores.


 ,Gambar   10. 23             Contoh Bagaimana Pointerdigunakan dalam modul program
                              teamstd.prg




]64
·   (Procedure name is "gelavg.prg"       )

          ·
          ·

          .
              (Wrinem by Glenn A. Jackson       )
              (Oakland University, Rochesler, MI 48063 )

          ·
          ·
              ( )
              (This procedure calculates the average to be used to calculate)
              (the handicap for a given bowler for a given week in the season.)

          ·
          ·

          ·
              (The week is input via the global variable "wk"; the bowler's)
              (name is input via the global variable "name", and the average)

          ·
          ·
              (is output via the global variable "avg". Input and output)
              (variables are defined as integers in the calling program.)
              (This module is caUed only when the week input is greater)
          ·   (than one. )
          . ( )
          · (Procedure is called by teamstd.prg)
            ( )
          SET VAR sum          INTEGER
          SET VAR sl           INTEGER
          SET VAR s2           INTEGER
          SET VAR s3           INTEGER

          .
          SET VAR numgams INTEGER
              (
          COMPliTE
                  )
                         sl AS SliM gamel FROM scores +
            WIIERE       bname   =.name AND week < .wk
          COMPCTE        s2 AS SCM game2 FROM scores +
             WIIERE      bname   =.name AND week < .wk
          COMPUTE        s3 AS SUM game3 FROM scores +
             WHERE       bname = .name AND week < .wk
          SET VAR        sum    TO. sI + .s2
          SET VAR        sum    TO. sum + .s3
          SET VAR        numgams TO .wk - I
          SET VAR        numgams TO .numgams x 3
          SET VAR        avg. TO .sllm I .numgams
          RETURN
                         Gambar 10.24 Modul program getavg.prg

10. 9   MASALAH DALAM MEMASUKKAN                                                  DATA BARU KE
        DALAM             DATABASE
      Menu dari item yang ada dalam gamabar 10.5membicarakan data yang akan
ditampilkan dari database. Seperti yang telah kita bicarakan dalam bab sebelumnya
bahwa data yang ada dalam database dimasukkan dengan perintah LOAD dan EDIT
R : base 5000 standar akan membantu seketaris liga bowling jika menu masukan
dikembangkan sehingga akan membantunyadalam memas.lkkansemua nilai pemain
pada minggu berikutnya dalam masa pertandingan tersebut. Masalah ini terdapat
dalam latihan di akhir bab ini untuk membantu dalam menjaga keutuhan data dalam
database R: 5000 menggabungkan perintah RULES. Perintah ini dipakai untuk
kondisi yang membuat DBMS mencek pembatasab tertentu yang diset oleh pemakai
pada data dalam database. Jika suatu aturan ditentukan untuk relasi khusus, sistem
ini akan mencek taiap modifikasi data dan tiap tambahan data ke relsi tersebut,
Sebagai contoh jika tupel dalam relasi team dengan-nomor team yang ada (tnumb
adalah kunci primair), Kemudian aturan berikut harus ditempatkan pada relasi
TEAM dengan perintah RUES.
                  "Duplicate Key" tnumb IN team NEA thumb IN team


                                                                                            165
" Duplicate Key" adalah pesan yang salah akan dicetak tiap kali suatu usaha
dibuat untuk menghilangkan/memaksa kondisi ini, dan NEA singkatan "NOT
EQUAL TO ANY" Masalah 10 pada akhir bab membahas kondisi jenis ini.

10. 10 RINGKASAN BAB 10
      Oleh karena query hanya mencakup pemerolehan informasi dari database,
solusi query dapat diselesaikan dengan menggunakan perintah R: base 5000.
Sebagian dari so~usi ini tidak dapat dikembangkan oleh seseorang yang tidak
konpeten dalam bidang ini.
.    Jikaquery mencakuppengambilan
                                 daripenggolahandatadaridatabase,solusi
ini dapat tercakup dan harus dikembangkan oleh seseorang yang telah berpengala-
man dengan filosofy databse, yang mempunyai kemampuan pemprograman.

10. 11 . MASALAH-MASALAH BAB 10

1. Implementasi menu R:base 5000diberikan pada babini semuaoutputdikirimke
   terminal komputer. Tambahkan suatu pilihan pada menu akan memperbolehkan
   sekretaris untuk memilih peralatan output yang digunakan untuk pelaksanaan
   yang sedang berlangsung. Pilihan-pilihan yang beralasan hanya terminal, printer
   dan keduanya printer dan terminal.
2. Perluas menu yang diberikan pada Gambar 10.5 sampai dengan penambahan
   modul-modul program baru yang akan menjawab beberapa penyelesaian per-
   tanyaan yang lebih panjang diberikan pada bagian 10.2.
3. Ulangi Masalah 1 dari Bab 9 menggunakan implementasi R:base 5000
                                                             .
4. Ulangi Masalah 3 dari Bab 9 menggunakan implementasi R:base 5000.
5. Modifikasi teamstd.prg sehingga kedudukan akhir adalah output dalam format
   yang terlihat profesional. Pada implementasi yang sekarang kedudukan adalah
   output menggunakan suatu perintah SELECT ALL.
6. Modifikasi bwlrst.prg se~ingga TATAL PINS WITH HANDICAP tennasuk
   dalam output.
7. Keluaran teampns.prg yang sekarang menghasilkan jumlah total "scratc.hpins"
   untuk setiap team. Modifikasi program sehingga"TOTAL PINS WIlli HANDI-
   CAP" juga keluaran.
8. Porsi utamadari logikdalammodulwkschdCprgdiimplementasikanmenggunakan
   SET POINTER diikuti suatu konstruksi WHILE-THEN. Tulis kembali bagian
   ini menggunakan JOIN dan tentukan apakah ada catatan setiap perubahan dalam
   kecepatan dari pelaksanaan modul. Penyelesaian mana yang lebih mudah ?
9. Ulangi masalah 9 pada Bab 9 menggunakan implementasi R:base 5000
10. Gunakan perintah-perintah aturan untuk sekelompok batasan pada setiap relasi
    dimana kunci-kunci primer dari setiap relasi unik.
11. Tulislah suatu kelompok modul program driven menu yang mengizinkan
    kumpulan sekretaris, yang tidak memiliki pengetahuan tentangdatabase, untuk
    menambahkaJl score permainan ke database untuk semua team setiap minggu.
    Module harus harus memberikan sekretaris sekumpulan prompt yang mungkin,
    dan suatu template untuk isidari data yang tepaLMemiliki modul membuat setiap
    pengujian yang tepat pada data yang dimasukkan belum diperiksa melallui
    Aturan-atllran pada Masalah 10.
12. Periksa modul-modul yang lambat dalam pelaksanaan, seperti teamstd.prg, dan
    selidiki berbagai macam cara memperkecil waktll pekaksanaan. (Suatu kontes
    kelas yang baik adalah untuk melihat siapa yang dapat menghasilkan modul
    program yang waktu pelaksanaannya tercepat).
13. Ulangi Masalah 5 pada Bab 9 menggllnakan implementasi R:base 5000.




                                                                             167

More Related Content

Recently uploaded

Tugas 1 pembaruan dlm pembelajaran jawaban tugas tuton 1.docx
Tugas 1 pembaruan dlm pembelajaran jawaban tugas tuton 1.docxTugas 1 pembaruan dlm pembelajaran jawaban tugas tuton 1.docx
Tugas 1 pembaruan dlm pembelajaran jawaban tugas tuton 1.docxmawan5982
 
LAPORAN PKP KESELURUHAN BAB 1-5 NURUL HUSNA.pdf
LAPORAN PKP KESELURUHAN BAB 1-5 NURUL HUSNA.pdfLAPORAN PKP KESELURUHAN BAB 1-5 NURUL HUSNA.pdf
LAPORAN PKP KESELURUHAN BAB 1-5 NURUL HUSNA.pdfChrodtianTian
 
Materi Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptxMateri Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptxRezaWahyuni6
 
PPT Materi Jenis - Jenis Alat Pembayaran Tunai dan Non-tunai.pptx
PPT Materi Jenis - Jenis Alat Pembayaran Tunai dan Non-tunai.pptxPPT Materi Jenis - Jenis Alat Pembayaran Tunai dan Non-tunai.pptx
PPT Materi Jenis - Jenis Alat Pembayaran Tunai dan Non-tunai.pptxHeruFebrianto3
 
Karakteristik Negara Brazil, Geografi Regional Dunia
Karakteristik Negara Brazil, Geografi Regional DuniaKarakteristik Negara Brazil, Geografi Regional Dunia
Karakteristik Negara Brazil, Geografi Regional DuniaNadia Putri Ayu
 
AKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptx
AKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptxAKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptx
AKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptxWirionSembiring2
 
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...Kanaidi ken
 
Lembar Observasi Pembelajaran di Kelas.docx
Lembar Observasi Pembelajaran di  Kelas.docxLembar Observasi Pembelajaran di  Kelas.docx
Lembar Observasi Pembelajaran di Kelas.docxbkandrisaputra
 
Prakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptx
Prakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptxPrakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptx
Prakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptxSyaimarChandra1
 
TUGAS GURU PENGGERAK Aksi Nyata Modul 1.1.pdf
TUGAS GURU PENGGERAK Aksi Nyata Modul 1.1.pdfTUGAS GURU PENGGERAK Aksi Nyata Modul 1.1.pdf
TUGAS GURU PENGGERAK Aksi Nyata Modul 1.1.pdfElaAditya
 
Materi Bimbingan Manasik Haji Tarwiyah.pptx
Materi Bimbingan Manasik Haji Tarwiyah.pptxMateri Bimbingan Manasik Haji Tarwiyah.pptx
Materi Bimbingan Manasik Haji Tarwiyah.pptxc9fhbm7gzj
 
Kesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptx
Kesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptxKesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptx
Kesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptxDwiYuniarti14
 
aku-dan-kebutuhanku-Kelas 4 SD Mapel IPAS
aku-dan-kebutuhanku-Kelas 4 SD Mapel IPASaku-dan-kebutuhanku-Kelas 4 SD Mapel IPAS
aku-dan-kebutuhanku-Kelas 4 SD Mapel IPASreskosatrio1
 
Modul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docx
Modul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docxModul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docx
Modul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docxherisriwahyuni
 
demontrasi kontekstual modul 1.2.a. 6.pdf
demontrasi kontekstual modul 1.2.a. 6.pdfdemontrasi kontekstual modul 1.2.a. 6.pdf
demontrasi kontekstual modul 1.2.a. 6.pdfIndri117648
 
Kelompok 2 Karakteristik Negara Nigeria.pdf
Kelompok 2 Karakteristik Negara Nigeria.pdfKelompok 2 Karakteristik Negara Nigeria.pdf
Kelompok 2 Karakteristik Negara Nigeria.pdftsaniasalftn18
 
MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATAS
MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATASMATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATAS
MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATASKurniawan Dirham
 
BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptx
BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptxBAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptx
BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptxJamhuriIshak
 
Jurnal Dwi mingguan modul 1.2-gurupenggerak.pptx
Jurnal Dwi mingguan modul 1.2-gurupenggerak.pptxJurnal Dwi mingguan modul 1.2-gurupenggerak.pptx
Jurnal Dwi mingguan modul 1.2-gurupenggerak.pptxBambang440423
 
Model Manajemen Strategi Public Relations
Model Manajemen Strategi Public RelationsModel Manajemen Strategi Public Relations
Model Manajemen Strategi Public RelationsAdePutraTunggali
 

Recently uploaded (20)

Tugas 1 pembaruan dlm pembelajaran jawaban tugas tuton 1.docx
Tugas 1 pembaruan dlm pembelajaran jawaban tugas tuton 1.docxTugas 1 pembaruan dlm pembelajaran jawaban tugas tuton 1.docx
Tugas 1 pembaruan dlm pembelajaran jawaban tugas tuton 1.docx
 
LAPORAN PKP KESELURUHAN BAB 1-5 NURUL HUSNA.pdf
LAPORAN PKP KESELURUHAN BAB 1-5 NURUL HUSNA.pdfLAPORAN PKP KESELURUHAN BAB 1-5 NURUL HUSNA.pdf
LAPORAN PKP KESELURUHAN BAB 1-5 NURUL HUSNA.pdf
 
Materi Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptxMateri Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptx
 
PPT Materi Jenis - Jenis Alat Pembayaran Tunai dan Non-tunai.pptx
PPT Materi Jenis - Jenis Alat Pembayaran Tunai dan Non-tunai.pptxPPT Materi Jenis - Jenis Alat Pembayaran Tunai dan Non-tunai.pptx
PPT Materi Jenis - Jenis Alat Pembayaran Tunai dan Non-tunai.pptx
 
Karakteristik Negara Brazil, Geografi Regional Dunia
Karakteristik Negara Brazil, Geografi Regional DuniaKarakteristik Negara Brazil, Geografi Regional Dunia
Karakteristik Negara Brazil, Geografi Regional Dunia
 
AKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptx
AKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptxAKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptx
AKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptx
 
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
 
Lembar Observasi Pembelajaran di Kelas.docx
Lembar Observasi Pembelajaran di  Kelas.docxLembar Observasi Pembelajaran di  Kelas.docx
Lembar Observasi Pembelajaran di Kelas.docx
 
Prakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptx
Prakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptxPrakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptx
Prakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptx
 
TUGAS GURU PENGGERAK Aksi Nyata Modul 1.1.pdf
TUGAS GURU PENGGERAK Aksi Nyata Modul 1.1.pdfTUGAS GURU PENGGERAK Aksi Nyata Modul 1.1.pdf
TUGAS GURU PENGGERAK Aksi Nyata Modul 1.1.pdf
 
Materi Bimbingan Manasik Haji Tarwiyah.pptx
Materi Bimbingan Manasik Haji Tarwiyah.pptxMateri Bimbingan Manasik Haji Tarwiyah.pptx
Materi Bimbingan Manasik Haji Tarwiyah.pptx
 
Kesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptx
Kesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptxKesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptx
Kesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptx
 
aku-dan-kebutuhanku-Kelas 4 SD Mapel IPAS
aku-dan-kebutuhanku-Kelas 4 SD Mapel IPASaku-dan-kebutuhanku-Kelas 4 SD Mapel IPAS
aku-dan-kebutuhanku-Kelas 4 SD Mapel IPAS
 
Modul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docx
Modul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docxModul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docx
Modul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docx
 
demontrasi kontekstual modul 1.2.a. 6.pdf
demontrasi kontekstual modul 1.2.a. 6.pdfdemontrasi kontekstual modul 1.2.a. 6.pdf
demontrasi kontekstual modul 1.2.a. 6.pdf
 
Kelompok 2 Karakteristik Negara Nigeria.pdf
Kelompok 2 Karakteristik Negara Nigeria.pdfKelompok 2 Karakteristik Negara Nigeria.pdf
Kelompok 2 Karakteristik Negara Nigeria.pdf
 
MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATAS
MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATASMATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATAS
MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATAS
 
BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptx
BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptxBAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptx
BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptx
 
Jurnal Dwi mingguan modul 1.2-gurupenggerak.pptx
Jurnal Dwi mingguan modul 1.2-gurupenggerak.pptxJurnal Dwi mingguan modul 1.2-gurupenggerak.pptx
Jurnal Dwi mingguan modul 1.2-gurupenggerak.pptx
 
Model Manajemen Strategi Public Relations
Model Manajemen Strategi Public RelationsModel Manajemen Strategi Public Relations
Model Manajemen Strategi Public Relations
 

Featured

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Featured (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Bab10 database sekretaris-bowling_dengan_rbase5000

  • 1. DATABASE SEKRETARIS BOW- LING DENGAN R:BASE5000 Bab ini berisikan tiga bagian infonnasi dan pembahasan utama: 1. daftar sampel empat relasi yang menentukan bentuk database sekretaris jika digunakan R:base 5000; 2. contoh tentang cara kerja perintah-perintah R:base 5000 yang dapat digunakan dengan relasi-relasi ini untuk menjawab query yang banyak; dan 3. pembahasan yang mendalam tentang satu set modul program yang dikendalikan dengan menu yang menjawab query kompleks dengan menggunakan perintah R:base 5000 yang terdapat pada bahasa pemrograman R:base 5000. Implementasi data ini dikembangkan oleh IBM PCdengan memori 320 K, dua doubled sided disk drive, dan satu monitor monochrome. Disket sistem R:base 5000 selalu berada di drive A. Sedangkan file database dan modul program terdapat di B. 10. 1 STUDI KASUS DATABASE R:BASE 5000 Sebelum memulai pembahasan queri khusus dan berbagai modul pemro- graman, rela-sidatabase yang sesungguhnya akan kita bahas terlebih dahulu. Data yang diuji dalam database dikembangkan dengan asumsi yang sarna seperti pada Bab 9. Asumsi tersebut adalah : 1. Liga bowling mempunyai enam team. 2. Masing-masing team mempunyai empat anggota 134
  • 2. 3. Masa pertandingan hanya empat minggu 4. Data untuk keempat minggu dimasukkan dalam R:base 5000 yang standar. 5. Semua bowler bermain tiap kali perlombaan Perubahan-perubahan yang mungkin dalam asumsi ini dibahas dalam latihan masalah yang terdapat pada akhir bab ini. R>list sched tnumb week lane 1 1 1 Table: schoo 2 1 2 Read Password: NO 3 1 4 Modify Password: NO 4 1 3 5 1 6 Column definitions 6 1 5 I 2 4 # Name Type Length Key 2 2 5 3 2 2 Itnumb INTEGER I value(s) yes 4 2 6 2 week INTEGER I value(s) 5 2 1 3 lane INTEGER I value(s) 6 2 3 1 3 3 Current number of rows: 24 2 3 6 (a) 3 3 .1 4 3 4 5 3 5 6 3 2 I 4 5 2 4 I tnumb week lane 3 4 3 4 4 2 5 4 4 6 4 6 (b) Gambar 10.1 (a) Struktur dan (b) isi relasi SCHED R>list team tnumb tname captn Table: team 1 AlleyCats Ann Jones Read Password: NO 2 Inconsistents Bill Black Modify Password: NO 3 TenPins Lisa Moore. 4 HighRollers Jill Miller Column definitions 5 Splitters. Roy Lane 6 SandBaggers Cindy Fox # Name Type Length Key (b) I tnumb INTEGER I value(s) yes 2 tname TEXT 15 characters 3 captn TEXT 15 characters Current number of rows: 6 R> (a) Gambar 10.2 (a)Struktur dan (b) isi dari relasi TEAM 135
  • 3. Garnbar 10.1 sarnpai 10.4 rnenunjukkan struktur dan data tes yang sebenarnya untuk rnasing-rnasing relasi. Data yang disirnpan dalarn relasi-relasi ~nisarnadengan data yang ada pada Bab 9, sehingga hasil dari dua pelaksanaan (irnplernentasi) ini dapat dibandingkan.Narna database dalam pelaksanaan R:base 5000 adalah SDB. Dengan rnelihatkernbali data dalam relasi BOWLER, (sepertidalarn Bab9) kita ketahui bahwa akan muncul duplikat tentang data alarnatjalan dan nomor telpon. Hal yang rnenarik adalah keinginan untuk menentukan bahwa telepon - > stret merupakan FD yang benar. Kita hendaknya mengkaji kembali hal-hal yang menyebabkan FD tidak benar, serta tidak teIjadinya pengulangan tentang data stret dan telepon seperti pada Bagian 9.1 10.2 MENJAWAB QUERY SEKRETARIS DENGAN R:BASE 5000 Contoh-contoh pada bagian ini dimaksudkan untuk menggarnbarkan bahwa query sederhana yang berhubungan dengan data dalam database sekretaris bowling dapat dibuat dengan rnenggunakan perintah R:base 5000, tanpa harus rnenyisipkan perintah tersebut ke dalam bahasa penerirna. Semua query dalam bagian ini meliputi relasi spesifik yang terdapat dalam Gambar 10.1 sampai 10.4. Kita hendaknya melaksanakan database dan mengisinya dengan data percobaan serta rnemeriksa query yang tengah dibahas. Dalam banyak kasus dua atau tiga perintah secara berturut-turut diperlukan untuk menjawab query yang nampak relatif sederhana. Contoh-contoh berikut merupakan contoh bahwa pemakai menggunakan tingkatan perintah R:base 5000 dengan R> prompt. R>lislleam bname Lnumb phone Slrel slaavg Table: learn Jeam adams 5 689-1234 10 Robin St III Read Password: NO Slcve adams 5 689-1234 10 Robin Sl 130 Bill Black 2 689-2345 15 Bluebird Ln 149 Modify Password: NO Bonnie Black 120 2 689-2345 15 Bluebird Ln Column definitions Bo Blow 2 689-3456 12 Meadowbrook Ln 143 Jo Blow 2 689-3456 12 Meadowbrook Ln 95 Joe Brown 3 689-4567 18 Bluebird Ln 132 # Name Type Lenglh Key Sue Brown 3 689-4567 18 Bluebird Ln 124 I bname TEXT Cindy Fox 6 689-5678 19 Cardmal St 103 15 characters yes 2 Lnumb INTEGER Randy Fox 6 689-5678 19 Cardinal St 147 I value(s) 105 8 characters Ann Jones I 689-4365 12 Finch Dr 3 phone TEXT . John Jones 143 4 stret TEXT. 20 characters I 689-4365 12 Finch Dr INTEGER Joy Lane 5 689--6789 21 Sparrow Ct 125 5 Slavg 1 value(s) Roy Lane 5 689--6789 21 Sparrow Ct 167 Current number of rows : 6 Jill Miller 4 689-7890 12 Robin St 108 Paul Miller 4 689-7890 12 Robin St 170 R> Lisa Moore 3 689-890 I 11 Lark Dr 110 Mike Moore 3 689-8901 11 Lark Dr 140 (a) 13 Finch Dr Jim Smith I 689-9<)12 152 Mary Smith 1 689-9012 13 Finch Dr 115 bname Lnumb phone stret Slavg Ruth Taylor 6 89-0123 20 Cardinal St 119 Garnbar 10. 3 Dan White 4 689-2134 16 Robin St 158 Jan While 4 689-2143 16 Robin Sl 121 (a) Struktur 6 20 Cardinal St 161 Russel Taylor 689--{) I 23 (b) Isi dari relasi BOWLER (b) 136
  • 4. R>list scores bname week gamel game2 game3 Jeams Adams I 119 120 94 Table: scores Steve Adams 1 112 140 138 Read Password: NO Bill Black 1 137 155 155 Modify Password: NO Bonnie Black 1 120 125 115 Bo Blow 1 160 145 125 Column definitions Jo Blow I 101 91 93 Jim Smith 1 160 150 146 # Name Type Length Key 110 Mary Smith 1 120 115 15 characters Ann Jones I 98 110 107 bname TEXT yes John Jones 1 145 150 134 2 week INTEGER I value(s) INTEGER I Joe Brown 1 140 127 129 3 game I value(s) Sue Brown I 121 128 124 4 game2 INTEGER I value(s) INTEGER I Cindy Fox I 119 110 83 5 game2 value(s) Randy Fox I 143 150 148 96 Russel Taylor ] 167 150 166 Current number of rows: Ruth Taylor ] 110 125 122 Joy Lane I ]26 127 122 R> Roy Lane I ]45 180 176 (a) Jill Miller I III 101 112 Paul Miller I 180 196 134 bname week game I game2 game3 Dan White I 156 163 154 Jan White I 130 125 108 Lisa Moore I 99 120 III Mike MOore I 150 149 121 (b) Gambar 10.4 (a) Struktur dan (b) isi relasi SCORES. (Hanya nilai dalam satu minggu. Lihat Gambar 9.4 untuk mengetahui isi selama empat minggu.) Juga diasumsikan bahwa database sekretaris bowling dibuka dengan perintah: R> OPEN b:sdb QUERY #1: "Daftar nama semua team dalam kelompok." Query ini sangat mudah untuk dijawab karena dua hal: pertama, semua informasi yang diperlukan untuk menjawab query terletak pada satu relasi; kedua, tidak terdapat kualifikasi (klausa WHERE) yang diperlukan. Jawaban query ini dapat diperoleh dengan perintah berikut: R> SELECT tname FROM team atau R> SELECT tname + R> FROM team Untuk jenis kedua, perintah tunggal telah berada pada dua baris sehingga memungkinkan untuk menggunakan karakter "+" sebagai simbol kontinuitas. Sedangkan pelaksanaan jenis lainnya akan berpengaruh terhadap pendaftaran nama- nama keenam team dalam liga tersebut. QUERY #2: "Siapakah nama kapten team nomor empat?" Penyelesaian terhadap query ini hanya sedikit lebih sukar dibandingkan Query #1 hal ini disebabkan dalam Query #2 diperlukan klausa WHERE. 137
  • 5. R> SELECT captn + R> FROM team + R> WHERE TNUMB = 4 Respon DBMS adalah =Jill Miller QUERY #3: "Carilah nama semua pemain bowling yang mempunyai rata-rata permulaankurangdari 100." . Bentuk penyelesaian query ini sangat mirip dengan penyelesaian Query#2: R> select bname + R> FROM bowler + R> WHERE stavg < 100 Jawabannya adalah nama tunggal: Jo Blow QUERY #4: "Siapakah nama serta berapa nOnlor telepon semua anggota team nomor tiga?" Solusinya adalah R> SELECT bname,phone + R> FROM bowler + R> WHERE tnumb = 3 Responsenya adalah: I bname phone I , Joe Brown 689-4567 Sue Brown 689-4567 Lisa Moore 689-8901 Mike Moore 689-8901 QUERY #5: "Pada jalur manakah team nomor lima bermain selama minggu ke tiga dalam masa pertandingan tersebut?" Pemecahan query ini menuntut klause WHERE dengan suatu set yang menggunkan beberapa syarat: R> SELECT lane + R> FROM sched + R> WHERE tnumb = 5 AND week = 3 Respon terhadap query ini adalah = 5 QUERY #6: "Cari semua nama pemain yang tinggal di Robin St." . Olehkarenaalamatdalamdatabasedisimpandalambentukstring"21 Robin St" maka solusi dari QUERY #6 memerlukan suatu pencarian, di dalam field stret pada n:tasing-masingtupel yang terdapat dalam relasi BOWLER, untuk mengetahui 138
  • 6. apakah karakter string "Robin St" telah muncul. Pencarian ini dapat dilakukan dengan menggunakan operator CONTAINS dalam klausa WHERE. Bet>erapa kemungkinan pemecahannya adalah R> SELECT bname + R> FROM bowler + R> WHERE stret CONTAINS "Robin St" atau R> SELECT bname + R> FROM bowler + R> WHERE stret CONTAINS "Robin St" atau R> SET VAR subsrt TO Robin & St R> SELECT bname + R> FROM bowler + R> WHERE stret CONTAINS .substr Respon terhadap ketiga kasus di atas memberikan hasil yang sarna: bname Jean Adams Steve Adams Jill Miller Paul Miller Dan White Jan White Perbedaan antara ke tiga solusi itu meliputi cara membuat spesifikasi "Robin St". Dalam dua solusi pertama, pemakai harus meyakinkan bahwa satu tempat yang tepat terdapat di antara dua string "Robin" dab "S1". Beginilah cara menyimpan alamat jalan dalam database. Dalam kasus terakhir operator "&" menyebabkan sistem meduduki hanya satu tempat antara dua string. Satu keuntungan dari bentuk terakhir ini adalah bahwa bentuk tersebut menekankan kondisi satu tempat bagi kita yang mengkaji ulang solusi ini. QUERY#7 ; "Berapa banyak tiga seri permainan yang lebih besar dari pada 550 dilakukan sampai sekarang?" Solusi ini rumit, karena R:base 5000 hanya menunjukkan operasi aritmatik tunggal dalam suatu ekpresi. Sebagai contoh ekspresi dari bentuk umum: varl+var2 dapat ditempatan ke dalam bentuk legal dengan R:base 5000, sementara tidak terdapat cara ekspresi dengan dua operator seperti: 139
  • 7. varl + var2 +var3 dapat ditempatkan dalam satu perintah. Ramifikasi pembatasan terhadap query khusus ini adalah bahwa satu set lokasi temporer harus dibuat dengan menyimpan kalkulasi intennediate. Salah satu cara untuk membuat lokasi temporer ini adalah dengan menambahkan satu kolom ke relasi yang datanya sedang dianalisis. Jika jawaban akhir telah didapat maka kolom itu dihilangkan dari relasi. Total solusi memerlukan urutan tatap-tahap: R> EXPAND scores WITH total INTEGER R> ASSIGWtotal TO gamel + game2 IN scores R> ASSIGN total TO total + game3 IN scores R> COMPUTE number AS COUNT total + R> FROM scores + R> WHERE tatal > 550 R> SHOW VAR number R> REMOVE COLUMN total FROM scores Perintah EXPAND akan menambah kolom barn ke ralasi SCORES, memberi nama total kolom, sena menuliskannya sebagai integer. Dua perintah ASSIGN akan menghitungjumlah (game 1+ game 2 + game 3) untuk tiap-tiap tupel dalam SCORES dan menempatkan masing-masing jumlah dalam total field yang berhubungan. Dalam posisi ini total field pada tiap-tiap tupel be:risikanjumlah tiga nilai pennainan tunggal. Tiga baris berikutnya dalam sofusi ini adalah perintah: "COMPUTE- FROM-WHERE". Perintah ini akan menghitung jumlah tupel dumana total nilai lebih besar dari 550 dan menempatkan hitungan ini dalam angka variabel. Nilai ini kemudian dicetak dengan perintah SHOW VAR. Akhimya kolom yang ditambahkan ke relasi SCORES dihilangkan dengan perintah REMOVE COLUMN. Jawaban akhir terhadap-query ini adalah angka = 2 Solusi yan'gJuga diajukan untuk Query #7 ini mempunyai satu solusi. Selain solusi itu dapat menyebabkan kerugian yang serius: solusi akan mengubah struktur dasar dari relasi SCORES dengan menambah dan kemudian menghilangkan kolom yang baru. Banyak pemakai tidak menyukai query yang mengubah struktur relasi dalam database, jika database telah dibuat. Mereka beralasan bahwa relasi temporer dalam satu kolom atau lebih (atribut) hendaknya dibuat untuk menampung data temporer selama kalkulasi berlangsung, dari pada harus membuat kolom barn dalam salah satu relasi disain. pengan cara ini, jika selama pelaksanaan solusi terdapat sesuatu yang hHangmaka database yang asli masih ada. Dengan posisi demikian kita punya keuntungan namun kita hendaknya merencanakan cara memecahkan query terakhir dengan c.arayang tidak mengubah struktur dasar relasi SCORES 140
  • 8. QUERY #8 : "Siapakah pemimpin lawan team nomor lima selama minggu ke tiga?" Query ini paling tepat dijawab dengan proses dua tahap. Pertama, Query #5 dapat dipakai untuk menentukan bahwa team nomor lima ada pada jalur=5 selama minggu ke tiga. Ini berarti bahwa lawan pada malam tersebut akan bermain padajalur 6. Dengan menggunakan informasi ini nomor team yang bermain pada jalur enam selama minggu ke tiga dapat ditemukan dan disimpan dalam sebuah variabel, misalnya "team". R> SETVAR ternTO tnumbIN sched+ R> WHERE lane = 6 and week= 3 Nilai yang disimpan dalam variabel tern sekarang dapat dipakai untuk menep- tukan nama pemimpin. R> SET VAR ans TO captn IN team + R> WHERE tnumb = .tem R> SHOW VAR ans Jawabannya adalah = Bill Black QUERY #9: "Buat daftar nama semua anggota liga bowling yang bukan anggota Sand Baggers". Solusi ini, seperti solusi yang terakhir, menuntut adanya daftar informasi yang diperoleh dari satu relasi ke relasi ke dua untuk memperoleh jawaban yang benar. Dalam contoh ini operator aljabar relasional JOIN akan digunakan. R> PROJECTtempr FROM team USING tnumb + R> WHERE tname <> SandBaggers R> RENAME COLUMN tnumb TO ttnumb IN tempr R> JOIN tempr USING ttnJlmb + R> WITH bowler USING tnumb + R> FORMING result R> SELECT bname + R> FROM result R> REMOVE result R> REMOVE tempr Keluaran ini akan berupa daftar dua puluh nama. Solusi terakhir adalah sebagai berikut: (1) Relasi baru disebut TEMPR adalah hasil dari relasi TEAM. TEMPR hanya mempunyai satu kolom, tnum. TEMPR memuat nomor team dari semua team kecuali Sand Baggers. (2) Hanya kolom TEMPR diberi nama kembali ke ttnumb, sehingga akan berbeda dengan kolom nomor team dalam relasi BOWLER. Selama operasi JOIN, R:base 5000 menghendaki kolom-kolom yang sedang digabungkan/ joined dengan nomor-nomor yang berbeda. (3) TEMPR dan digabungkan/JOIN untuk membentuk relasi ke tiga, RESULT. Kolom bname dalam RESULT memuat 141
  • 9. nama-nama anggota liga yang dikehendaki. (4) Perintah SELECT menunjukkan solusipada query tersebut. (5) Dua relasi temporer, RESULT dan TEMPR dihi- langkan dari database. QUERY # 10: "Berapa total pin yang diperoleh Bill Black pada akhir minggu ke tiga?" Solusi query ini dapat berupa sebagai berikut: R> COMPUTE tot AS SUM game 1 FROM scores + R> WHERE week <= 3 and bname = "Bill Black" R> COMPUTE s2 AS SUM game 2 FROM scores + R> WHERE week <= 3 AND bname = "Bill Black" R> COMPUTE s3 AS SUM game 3 FROM scores + R> WHERE week <= 3 AND bname = "Bill Black" R> SET VAR tot TO .tot + .s2 R> SET VAR tot TO .tot + .s3 R> SHOW VAR tot Keluaran akhir di sini adalah tot = 1381 Dalam solusi ini, perintah COMPUTE pertama menambah semua nilai game1 Bill Black pada tiga minggu pertama, dan menyimpanjumlah tersebutdalam variabel tot. Dua perintah COMPUTE berikutnya akan mengulangi proses untuk permainan 2 dan permainan 3,dengan menyimpan masing-masingjumlah dalam variabel s2 dan s3. Perintah SET VAR akan menambahkan nilai ke tiga variabel ini bersama-sama untuk mendapatkan hasil akhir. Perintah SHOW VAR akan menghasilkan jawaban akhir. QUERY # 11 : "Berapa anggota liga bowling yang telah bermain paling tidak satu permainan .lebih 50?" R> PROJECT tempr FROM scores USING bname+ R> WHERE game 1 > 150 OR game3 > 150 R> DELETE DUPLICATES FROM tempr R> COMPUTE ans AS ROWS FROM tempr R> SHOW VAR ams R:> RMOVE tempr Solusi terhadap query ini adalah ans= 11 Dalam solusi ini ralsi temporei-,TEMPR, di-PROJEK-kan dari relasi nilai. TEMPR hanya mempunyai satu kolom dan bname. Terdapat satu tupel dalam relasi ini untuk tiap tupel dalam relasi SCORES dimana terdapat paling tidak satu nilai tunggal di atas 150. Oleh karena satu orang yang sa,madapat bermain lebih dari 150 pada malam yang berbeda, maka mungkin bahwa nama yang sarna akan muncul beberapa kali dalam TEMPR. Perintah DELETE DUPLICATES akan menghi- langkan semua nama duplikat dari TEMPR. Nama-nama lainnya kemudian dihitung dengan menggunakan perintah COMPUTE untuk memperoleh jawaban terakhir. 142
  • 10. Dalam TEMPR, mungkin terdapat adanya tupel duplikat, ini berarti bahwa R:base 5000's PROJECf bukan merupakan operator aljabarrelasional yang sesung- guhnya, dan TEMPR pun demikian. Seperti yang dinyatakan dalam bab sebelumnya bahwa tak ada sistem manajemen database relasional yang didasarkan mikro kom- puter yang semuanya relasional, dan ini harus kita pertimbangkan pada saat membuat query. R:base 5000 lebih mendekati DBMS yang benar-bnar relasional dari pada sebagian besar sistem manajemen yang didasarkan pada mikrokomputer. Dalam solusi query di atas, hendaknya perlu kita perhatikan bahwa solusi ini tidak bersifat unik. Biasanya terdapat beberapa cara untuk memperoleh solusi query. Beberapa solusi dapat dipakai dengan kecepatan yangjauh lebih tinggi dari pada yang lainnya, dan beberapa solusijuga mempunyai logika yangjauh lebih gampang untuk diikuti. Cara terbaik untuk mempelajari cara menulis solusi yang baik adalah dengan mempelajari solusi yang ditulis oleh orang lain dan kemudian kita tulis beberapa solusi kita sendiri dengan menggunakan beberapa metode yang berbeda untuk masing-masing masalah 10. 3 MENU UT AMA UNTUK SOL US I QUERY TERPROGRAM Query pada bagian 10.2 merupakan query yang ditanyakan oleh sekretaris bowling yang khusus dan, kebanyakan, solusi query mudah dipahami dan jumlah pernyataan R:base 5000 tidak terlalu panjang yang digunakn untuk menjawab pertanyaan. Kita asumsikan bahwa sekretaris bowling akan memasukkan solusi secara manual, meskipun panjang dari beberapa solusi dapat dengan mudah menim- bulkan kesalahan dalam memasukkannya. Lebih lanjut sekretaris bowling hen- daknya mempunyai pengetahuan yang cukup tentang teori database, dan sintak R:base 5000 untuk menjabarkan solusi tersebut, bukan hanya sekedar menyalin. Untuk membantu sekretaris dari kesulitan menjabarkan kembali sebuah solusi query tiap waktu query tertcacahkan, sebuah menu yang sering digunakan query disimpan, dan penyelesaian yang telah diprogram untuk setiap permintaan yang dilaksanakan setiap saat untuk permintaan yang telah dipilih. Bagian berikut pada bab ini meru- pakan kerangka yang rinci tentang menu khusus serta program yang berhubungan dengan menu itu. Seperti yang terlihat oleh sekretaris, menu ini disajikan dalam Gambar 10.5. Sedangkan modul program yang menguraikan menu, menerima pilihan menu, dan kemudian mentransfer kontrol ke modul program terdapatpada Gambar 10.6:modul ini dinamakan secdb.app. 143
  • 11. MONDAY NIGHT IRREGULAR BOWLING LEAGUE QUERY MENU (1) DISPLAY STATISTICS FOR AN INDIVIDUAL BOWLER (2) DISPLAY TOTAL PINS FOR EACH TEAM (3) DISPLAY TEAM STANDING (4) DISPLAY SCHEDULE FOR A GIVEN WEEK (5) GENERATE AN END-OF-SEASON REPORT (6) RETURN TO RBASE 5000 Gambar 10.5 Menu utama yang dijabarkan oleh secdb.apx. .COMMAND SECDB SETMESSAGE OFF OPEN SDB SET ERROR MESSAGE OFF SET BAR PICKI INT LABEL STARTAPP NEWPAGE CHOOSE PICK] ('J{OMsdbmain IN SECDB. APX IF PICKI EQ I THEN J{UNbwlrsl. com GO TO STARTAPP ENDIF IF PICKI EQ 2 THEN RUN leampns IN SECOR. APX GOTOSTARTAPP ENDIF IF PICKI EQ 3 THEN RUN teampns IN SECDB. APX GOTO STARTAPP ENDIF IF PICKI EQ 4 THEN RUN wkschdl IN SECDB. APX GO TO STARTAPP ENDIF IF PICKI EQ 5 THEN RUN eosrpt. com GOTO STARTAPP ENDIF IF PICKI EQ 6 THEN GOTO ENDAPP ENDIF GOTO STARTAPP LABEL ENDAPP CLEAR PICK I RETURN -MENU sdbmain COLUMN MONDAY NIGHT IRREGULARS BOWLING LEAGUE QUERY MENU DISPLA Y STATISTICS FOR AN INDIVIDUAL BOWLER DISPLA Y TOTAL I'INS FOR EACH TEAM DISPLA Y TEAM STANDINGS DISPLA Y SCHEDULE FOR A GIVEN WEEK GENERATE AN END-OF-SESAON REPORT RETURN TO RBASE 5000 Gambar 10.6 Modul program menu utama 144
  • 12. Secdb.app dikembangkan dengan menggunakan APPLICATION EXPRESS, paket utilitas perangkat lunak yang merupakan bagian dari R:base 5000. Untuk menambah kecepatan, secdb.app dipadukan ke dalam modul yang mudah pela- ksanaannya dengan nama secdb.apx. Jika R: base 5000 dibawa ke tingkat perintah program menu ctilaksanakandengan urutan perintah sbb: R>B: R> RUN secdb IN secdb.apx Jika salah satu dari 5pilihan pertama diambil, maka modul program yang ditulis dalam bahasa pemprograman R: 5000 akan dilaksanakan. Pada gilirannya sebagian dari modul ini akan memanggil submodullainnya. Modul program yang dipanggil ini akan dibahas secara rinei pada bagian berikut. Pelaksanaan program yang dipakai untuk menjabarkan keluaran yang ada pada bagian ini adalahjenis & program sumber yang digabungkan. 10. 4 R: BASE 5000 PROGRAM MODUL BWLRST.PRG Modul ini dipanggil oleh program menu utama pada saat pilihan menu adalah "DISPLAY STATISTICS FOR AN INDIVIDUAL BOWLER". Pelaksanaan modul ini mempengaruhi perhitungan dan keluaran berupa statistic untuk pemain individ- ual. Statistik ini dapat diperoleh pada setiap minggu dalam masa perlombaan, sampai dan meliputi minggu ke akhir dimana nilai di masukkan ke dalam database (logika yang terdapat dalam modul ini ada pada gambar 10.7 programnya terdapat pada gambar 10.8sedangkan keluaran khusus dari modul ini ada pada gambar 10.9)hanya bagian logika BWRST.PRG yang perlu di tekankan adalah bagian kalkulasi ham- batan (handicap) yang berisi dua peryataan. SET VAR hndkp TO 200 - .bavg SET VAR hndkp TO .hndkp X 0.75 "hndkp" Merupakan variabel yang dinyatakan sebagai I N T E G E R dan dipakai untuk menampung hambatan yang ada sekarang untuk tiap individual "baug" juga variabel INTEGER menampung rata-rata akhir pemain. Kedua peryataan tersebut akan memecahkan persamaan tersebut dimana TRUNC merupakan fungsi trunkasi (truncation) handicap =TRUNC«200-currencaverage)*0.75) 145
  • 13. 1. Determine the last week for which scores have been entered into the SCORES relation. Store the week as "max_wk". 2. Input the weekof the season for which statistics are desired as "wk", and check the value for validity. 3. Input the name ofthe bowler for which statistics are desired as "name," and check the name for validity. 4. Using the SET POINTER feature of R:base 5000, identify aUtuples in the SCORES relation that will be used in the calculations. (The condition is that bname =name AND week <=wk.). 5. For each tuple in the group selected via SET PqITER : (a) Check each individual game score to find the highest game bowled by this bowler as "hiJame." (b) Check the sum of ech three game series to find the highest series score as "hi_series." (c) Add aU the idividual game scores to find the total number of scratch pinss as "tot-pins." 6. Calculate this bowler's current average and handicap as "bavg" and "hndkp," respectively. 7. Output the results. Gambar 10.7 Logik urnurn dalam bwlrst.prg Meskipun hndhp merupakan variabel integer perkalian hndkp dengan 0.75 mempengaruhi nilai riil. nilai riil ini kemudian bisa namakan sebagai hndkp variabel integer R: base 5000 secara otomatis akan melaksanakan trukasi (memperpendek denagn mengurangi ujung-ujungnya) angkariil yang ditunjuk sebagai variabel yang dinyatakan sebagai integer Jika nilai riil ini dikumpulkan untuk mendapatkan handicap/hambatan, sttistik individual maupun team akan sangat dipengaruhi. 10. 5 R: BASE 5000 MODUL PROGRAM TEAMPNS.PRG Menu ini dipanggil ketika pilihan menu utamanya adalah " DISPLAYTOTAL PINS FOR EACH TEAM" total angka pin yang dihitung adalah pin "scatch" (tanpa hambatan) yaitu hitungan pin tanpa mempertimbangkan hambatan. Penambahan modul ini ditujukan untuk mencakup total pin ynag dihitung bersama hambatan. Penambahan modul ini dikembangkan denagn asumsi bahwa jumlah pin yang dikehendaki rneliputi minggu terakhir nilai-nialai perlombaan di masukkan dalam database pada bagian ini. 146
  • 14. * (Procedure name is : "bwlrst. prg" * (Written by Glenn A. Jackson * (Oakland University, Rochester, MI 48063 * ( * (This procedure calculates and outputs the following * (statistics on an individual bowler: High game, High series, * (Total Pins and Handicap. all statistics include all games * (bowled to date. * ( * (This procedure is called by : sdbmain menu. * (This procedure calls no other modules. * ( NEWPAGE SET VAR hU;ame INTEGER SET VAR hi_ser INTEGER SET VAR bavg INTEGER SET VAR hndkp INTEGER SET VAR max_wk INTEGER SET VAR temp INTEGER SET YAR tot pins INTEGER SET YAR name TEXT SET YAR done TEXT SET VAR check INTEGER SET VAR tot3 INTEGER SET VAR totgam INTEGER * ( ) * (Find the last week for which scores were entered as max_wk * ( ) COMPUTE max_wk AS MAX week FROM scores * ( ) * Onput the week for which statistics are desired as wk * ( ) SET VAR done TO "false" WHILE done EXISTS THEN WRITE "IF YOU WISH THE STATISTICS FOR THE SEASON TO DATE" AT 7.15 WRITE "ENTER" AT 8.15 SHOWVARmax_wk=l AT8.21 WRITE ", THE LAST WEEK FOR WHICH DATA WERE ENTERED" AT 8.23 FILLINwk USING"OTHERWISE, ENTERTHEWEEKDESIRED: " AT9.15 IF wk GE 1 AND wk LE. max_wk THEN BREAJ ENDIF WRITE 'THE WEEK INPUT IS INYALlD" AT 15. 15 WRITE "Press any key to continue AT 17.15: PAUSE NEWPAG~ ENDWHILE * ( ) * (Enter the bowler's name and make certain it is valid * ( ) NEWPAGE WHILE done EXISTS THEN FILLIN name USING "ENTER THE BOWLER'S NAME, e. g. Joe Jones. " AT 10. 15 COMPUTE check AS COUNT bname FROM bowler WHERE bname = .name IF check GT 0 THEN Gambar 10. 8 (a) Bagian pertama dari modul program bwlrst. prg. 147
  • 15. BREAK ENDIF WRITE" THE NAME ENTERED IS NOT IN THE DATABASE" AT 12 15 WRITE "Press any key... then enter anotname." AT 14 15; PAUSE NEWPAGE ENDWHILE NEWPAGE . ( ) · (Calculate this bowler's statistics) . ( ) SET VAR hi...,game 0 TO SET VAR hUer TO 0 SET VAR 10tpins TOO SET POINTER # 1 errl FOR scores WHERE bname EQ. name AND week LE. wk WHILE errl EQ 0 THEN SET VAR temp TO gamel IN #1 IF temp GT. hi...,game THEN SET VAR hi...,gameTO. temp. ENDIF SET VAR 1013TO .temp SET VAR temp TO game2 IN #1 IF temp GT .hi...,gameTHEN SET VAR hi...,gameTO . temp ENDIF SET VAR tot3 TO . temp + . to13 SET VAR temp TO game3 IN #1 IF temp GT .hi...,gameTHEN . SET VAR hi...,gameTO .temp ENDIF SET VAR 1013TO .temp + .to13 IF to13 GT .hi_ser THEN SET VAR hi_ser TO . 1013 ENDIF SET VAR 10tpins TO .totpins + . to13 NEXT #1 errl ENDWHILE . ( ) · (Calculate this bowler's handicap) . ( ) SET VAR 10tgam TO . wk x 3 SET VAR bavg TO .1otpinsI .1otgam IF bavg LT 200 THEN SET VAR hndkp TO 200 - .bavg SET VAR hndkp TO .hndkp x O.75 ELSE SET VAR hndkp TO 0 ENDIF . ( ) · (OUTPUTTHERESULTS) . ( ) . WRITE "STATISTICS FOR" AT 7 20 SHOW VAR name =15 AT7 36 WRITE "THRU WEEK" AT 7 51 SHOW VAR wk=1 AT 7 61 WRITE' +++++ I I I I I I I +t++++ I I I I I I I I I I I I I I +" AT 8 20 Gambar 10. 8 (b) Bagian kedua dari modul program bwlrst. prg 148
  • 16. WRITE "AVERAGE PINS PER GAME:" AT 10 20 SHOW BAR bavg = 3 AT 1043 WRITE 'TOTALPINS- WITHOUT HANDICAP: " AT 12 20 SHOW VAR totpins =4 AT 12 50 . WRITE "HIGH GAME SCORE TO DATE: " AT 14 20 SHOW BAR hi-&ame=3 AT 14 45 WRITE "HIGH SERIES TO DATE: " AT 16 20 SHOW VAR hi_ser=3 AT 16 41 WRITE "CURRENT HANDICAP: " AT 18 20 SHOW VAR hndkp=2 AT 1838 WRITE "Press any key to continue.. " AT 23 20: PAUSE CLEAR ALL VAR RETURN Gambar 10.8 (c) Bagian terakhir dari mOOulprogram bwlrst.prg STATISTICS FOR bill Black THRU WEEK 3 ++++1111111++++++11 I 1 1 1 1 1 1 1 1 1 I 1++++++ AVERAGE PINS PER GAME: 153 TOTAL PINS - WITHOUT HANDICAP: 1381 HIGH GAME SCORE TO DATE: 165 HIGH SERIES TO DATE: 483 CURRENT HANDICAP : 35 Gambar 10.9 Macam output dari bwlrst.prg Sebuah keluaran sampel di pelaksanaan mOOulprogram ini terdapat pada gambar 10.10 logika umum yang terdapat dalam mOOulini ada dalam gambar 10.11 dan kOOenilai untuk mOOulini terdapat dalam gamabar 10.12. TOTAL SCRATCH PINS THROUGH WEEK 4 TEAM NO. TEAM NAME TOTAL PINS. 1 alleyCats 6257 2 Inconsistents 6172 3 TenPins 6147 4 HinghRollers 6798 5 Slitters 6580 6 SandBaggers 6534 Gambar 10.10 Tipe output dari pelaksanaan teampns.prg 149
  • 17. 1. Determine the last week for which scores have been entered into the SCORES relation. Save the week value as "max_wk." 2. Print out the header for the table of data that wiil be output later. 3. Use an outer WHILE-THEN loop to find the variable "ctr" as loop as a 1000variable, to cycle through each of the six teams in the league. for each team, use SET POINTER #1 to locate all the vowlers on that team : a) Use an inner WHILE - THEN loop to find the total number of pinds for one team. Save the total as "totpins." b) Check the TEAM relation to find the name of the team for this team number. Save the team name as "name_I." c) Output the data on this team. adjusting the line count on tohe output accordingly. Gambar 10.11 Logik umum dari teampns.prg Jika logika lama versi R: base 5000 teampns.prg di bandingkan dengan versi dBase IIIdari modul yang sarna (bag .tb 9.4), maka dapat kita ketahui bahwa dalam dBase III dipakai operasi Join untuk mengumpulkan semua nilai pemain dan satu team ke dalam bagian informasi umum. Informasi ini disimpan dalam relasi temporer yaitu TEMP2. Meskipun JOIN dapat di pakai dengan cara yang sarna dalam R:base 5000, namun dari sudut pemprograman, akan lebih sederhana dalam R:base 5000 untuk mengidenfikasikan semua anggota dalam suatu team, dan kemudian jumlah nilai permainan untuk team ini digunakan loop WHILE - THEN. Belum ada usaha untuk membandingkan mana yang lebih cepat antara SET POINTER dengan JOIN dalam R: base 5000. 10. 6 MODUL PROGRAM R: BASE 5000 TEAM STD. PRG Modul program ini dipanggil oleh program menu utama ketika pilihan menu "DISPLAY SCHEDULEFOR A GIVEN WEEK." Modul ini akan kepengaruh terhadap keluaran tabel yang memberikan nama-nama team dan jalur-jalur yang ditentukan pada minggu masa perlombaan. Modul ini memalukan informasi yang minggu keberapajadwal dimulai keluaran yang khas dipelaksanaa modul ini terdapat dalam gambar 10.13, logika umumnya yang terdapat dalam modul ini ada pada gambar 10.14, dan modul itu sendiri terdapat dalam gambar 10.15. Pusat logika dalam WKSCHDL.PRG. Dilaksakan dengan perintah set pointer yang diikuti oleh WHILE-THEN untuk menggantikan operasi JOIN yang mungkin. Penggunaan JOIN dalam algoritma di bicarakan dalam peablema di akhir bab ini. 150
  • 18. * (Procedure name is : "teampns" * (Written by Glenn A, Jackson * (Oakland University, Rochester, MI 48063 * ( · (This procedure print out the total number of "scratch" · (pins for each team for the season to date, . ( .* (This procedure is called by : sdbmain menu. * (This procedure calls : * ( * (No parameters are passed into or out of this module NEWPAGE SET V AR max_ wk INTEGER COMPUTE max_wk AS MAC week FROM scores * (Print out the header for the output data WRITE "TOTAL SCRATCH PINS TIlROUGH WEEK" AT 5 20 SHOWVARmax_wk=1 AT 5 53 WRITE "++++++++++++++++++++++++++++++++" AT 6 20 WRITE "TEAM NO. TEAM NAME TOTAL PINS" AT 7 20 WRITE "__.nnnnn. 00 00.000000. 00 00000000. AT 8 20 * ( . · (Calculate and print out the total pins for each team. ( SET VAR ctr INTEGER SET VAR Iyne INTEGER SET VAR gsuml INTEGER SET VAR gsum 2 INTEGER SET VAR gsum3 INTEGER SET VAR name_t TEXT SET VAR name_b TEXT SET VAR totpins INTEGER SET VAR erl INTEGER SET VAR ctr TO I * ( ) · (Outer loop picks the team * ( ) WHILE ctr LE 6 THEN SET POINTER #1 errl FOR bowler WHERE tnumb EQ. ctr * ( ) * (Inner loop picks the bowlers on a team * ( ) SET BAR totpins TO 0 WHILE err I EQ 0 TIlEN SET BAR name_b TO bname IN #1 COMPUTE gsum AS SUM gameI FORM scores WHERE bname .name_b COMPUTE gsum AS SUM game2 FORM scores WHERE bname .name_b COMPUTE gsum AS SUM game3 FORM scores WHERE bname ,name_b SET VAR totpins TO ,totpins + ,gsuml SET VAR totpins TO .totpins + ,gsum2 SET VAR totpins TO .totpins + ,gsum3 . ( ) ENDWHILE SET VAR name_t TO tname IN team WHERE tnumb = ,ctr SET V AR Iyne TO ,ctr +8 SHOW V AR ctr =. I AT .lyne 23 SHOW V AR name_t = 15 AT ,Iyne 30 SHOW V AR totpins = 5 AT .lyne 49 SET V AR ctr TO ,ctr + I ENDWHILE WRITE "Press any key to continue .,," AT 20 20; PAUSE CLEAR ALL V AR REruRN Gambar 10. 12 Modul program teampns. prg 151
  • 19. THE SCHEDULE FOR WEEK NUMBER 3 TEAM LANE NUMBER AlIeyCats 3 Inconsistents 6 TenPins 1 HighRollers 4 Splitters 5 SandBaggers 2 Gambar 10.13 Tipe output dari modul program wkschd1.prg 1. Detennine the last week of the bowling season. Assign'this value to variable "max_wk". 2. Input the week of the season for which the schedule is desired as "in_val", and check to make cenain that the value is valid. 3. Output the header for the table of values that is to follow. 4. Use a SET POINTER command in the SCHED relation to identify all of the tuples that have week values equal to the value in in_val. 5. Use a WHILE -THEN loop to cycle through all of the teams that are in the set of teams linked together via the SET POINTER coommand in 4. Output the team name (tname) found in the TEAM relation. and the lane number (lane) found in the CHED relaition for each team. Gambar 10.14 Logik Umum untuk modul program wkschd1.prg 152
  • 20. COMMAND wkschdl · (Procedure name is : "wkschdl" ) · (Written by Glenn A. Jackson ) · (Oakland University, Rochester, MI 48063 ) . ( ) · (This procedure prints out the schedule for a given week ) · (The week for which the schedule is desired is input from ) · (the terminal. ) .( ) · (This procedure is catled by : sdbmain menu. ) · (Thisprocedurecalls :delay ) .( ) NEWP AGE · (Find the last week of the season as max_wk SET VAR done TEXT SET VAR done TO "false". SET VAR in_val INTEGER WHILE done EXISTS THEN WRITE "ENTER WEEK FPR SCHEDULE IS DESIRED" AT 710 WRITE "ONLYVALUESBETWEEN1AND " AT 8 10 SHOE VAR max_wk = 1 AT 836 FILLIN in_val USING "ALLOWED" AT 8 38 IF in_val LE .max_wk AND in_val GE I THEN BREAK ENDIF WRITE'THE WEEKINPUTIS INVAUD " AT 5 10 WRITE "Press any key to continue" AT 16 10; PAUSE NEWPAGE ENDWHILE .( · (Output header NEWPAGE WRITE 'THE SCHEDULE FOR WEEK NUMBER "AT 5 10 SHOW VAR in_val = I AT 546 WRITE" ++++++++++++++++ IIIIIIIIIIIIII " AT 6 10 WRITE" TEAM LANE NUMBER " AT 7 10 WRITE" mum um___mmmm_ " AT 8 10 · (Determine and output the schedule SET POINTER #1 errl FOR sched WHERE week EQ .in_val SET VAR in INTEGER SET VAR lyne INTEGER SET VAR Iyne TO 9 WHILE errl EQTHEN SET VAR numb TO tnumb IN #1 SET VAR name TO tname In team WHERE tnumb EQ .numt- SET VAR in TO lane IN #1 SHOWVARname=15 AT .lyne17 SHOW VAR In =1 AT .lyne41 SET VAR Iyne TO . Iyne + 1 NEXT #1 errl ENDWHILE WRITE "Press and key to continue... " AT 20 17; PAUSE CLEAR ALL VAR RETURN . Gambar 10. 15 Modul program wkschdl.prg 153
  • 21. 10. 7 MODUL PROGRAM R:5000 EOSRPT.PRG MW~Ini~iFftn9BiI minW i Vlih Wftmft Vftift~ftft vilibftnmin~ftQNfth "QijtmR- ATEANEND-OF-SEASON REPORT".Pelaksanaanmodulini akanmempengar- uhi dalam penentuandan keluarantetangnamapemainyang (1) mempunyainilai perlombaantunggaltertinggi(2) mempunyainilai seritigapemaintertinggiselama naikpertandingan(3)mengakhirimasperlombaandenganrata-ratatiapperlombaan yangtertinggi.Keluaranmoduliniuntukdatadalamdatabasesampelterdapatdalam gambar 10.16 logika umum untuk modul ini terdapat dalam gambar 10.17 dan sedangkanmodulnyaada dalamgambar10.18 10. 8 M~PROG R: BASE 5000 TEAMSTD.PRG Modul program ini dipanggil oleh program menu utama pada saat pilihan menu adalah "DISPLAY TEAM STANDINGS" Pelaksanaan program ini akan menentukan kalkulasi dan tampilan record menangkah bagi semua team dalam liga tersebut. Selama satu minggu dalam masa perlombaan. lalah angka pins yang tanpa hambatan untuk tiap-tiap team selam minggu tersebut juga merupakan keluaran. Modul dimulai dengan menunjukan informasi minggu kapan. Untuk mana posisi diharapkan setelah yakin bahwa minggu yang dikenhendaki benar, program mualai menhitung posisi dan mencetak hasil dalam bentuk tabular gambar 10.19 menunjuk- kan keluaran di program ini sedangkan gambar 10.20 menunjukkan logika umum model, sedangkan kode nilai terdapat pada gambar 10.21. END-OF-SEASON REPORT IDGHEST SINGLE GAME SCORE OF 202 WAS BOWLED BY THE FOLLOWING BOWLER(S) Roy Lane Russel Taylor Paul Miller IDGHEST THREE-GAME SERIES SCORE OF 559 WAS BOWED BY THE FOLLOWING BOWLER(S) Roy Lane Riussel Taylor Paul Miller HIGHEST AVERAGE GAME SCORE OF 179 WAS BOWLED BY THE FOLLOWING BOWLER(S) Paul Miller. Gambar 10.16 Output dari eosrpt.prg untuk contoh database 154
  • 22. 1. Detennine the laSl week ofthe season from the SCHED relation. Save this value as "max_wk." 2. Detennine the highest single game score for the season. Save this score as "best~am." 3. Output the high game score infonnation : a) PROJECf a nuary temporary relation TEMPR from SCORES that holds the names (bname) of all bowlers who have bowled at least one game score equal to the value in best~am. b) Print out the end-of-season repon header followed by the names of all those people who bowled the highest single game score. c) REMOVE the temporary relation TEMPR from the database. 4. Determine the highest three-game series score as "best_ser" as follows : a) EXPAND the SCORES relation with the addition of a new column named total. b) Fill the total field value in each tuple with the sum gamel~ame2+game3 fonn that tuple c) Find the best_ser value using the COMPUTE - MAX command on the total field in SCORES. d) PROJECf a temporary relation TEMPR from SCORES that holds the names of all bowlers with a three-game score of bescser. e) Output the infonnation on best series. S. Detennine the season's best average game score as "best_avg" as follows: a) PROJECf a temporary relation, TEMP2, from the BOWLER relation thatholds each bowler's name (bname) and staning average (stavg) b) OIange the column name stavg to avg in TEMP2. c) Calculate the average game score for each bowler and fill in the avg field value in TEMP2 with this value. d) Compute the value for best_avg using a COMPUTE-MAX command and output the final results. e) Output the infonnation on best average. 6. REMOVE COLUMN total from SCORES. 7. REMOVE TEMP2 from the database. Gambar 10.17 Logik umum untuk eospt.prg 155
  • 23. · (Procedure name is : "eosprt. prg" ) · (Written by Glenn A. Jackson ) · (Oakland University, Rochester, MI 48063 ) . ( ) . · · (fhis procedure calculates and print out the end-of-season report ( (fhis procedure is called by: sdbmain menu. ) ) ) · (fhis procedure calls no other modules. ) . ( ) NEWP AGE SET MESSAGE OFF SET ERROR MESSAGE OFF . ( · (Find the last week of the season as max_wk SET VAR max_wk INTEGER COMPUTE max_wk AS MAX week FROM schoo · (Initialize variables required for the raport SET VAR besuer INTEGER SET VAR best_avg INTEGER SET VAR best~am INTEGER SET VAR name TEXT SET VAR hgl INTEGER SET VAR hg2 INTEGER SET VAR hg3 INTEGER SET VAR linect INTEGER . ( ) · (Findseason's high game score as best~am. . ( ) COMPUTE hg} AS MAX game} J;'ROMscores COMPUTE hg2 AS MAX game2 FROM scores COMPUTE hg3 AS MAX game3 FROM scores IF hgl > = .hg2 THEN SET VAR best~am TO .hgI ELSE SET VAR best~am TO .hg2 ENDIF IF hg3 > .best~am THEN SET VAR best~am TO .best~am + .hg3 ENDIF . ( ) · (Place the names of all those who got bcst~am in TEMPR . ( ) PROJECTtemprFROMscoresUSINGbname+ . WHERE game} = .best~am OR game2 = .best~am OR game3 =.best~am DELETE DUPLICATES FROM tempr . ( ) · (Print otu the end~f-season report header and high game data . ( ) WRITE "END-OF-SEASON REPORT" AT} 26 WRITE "+ I I I I I I I I I I I I I I+++++++" AT 2 26 WRITE "HIGHEST SINGLE GAME SCORE OF" AT 4 20 SHOW VAR best-8am = 3 AT 4 49 WRITE "WAS BOWLED BY THE FOLLOWING BOWLER(S)" AT 5 20 SET VAR linect TO 6 Gambar 10. 18 (a) Bagian pertama dari modul program eosrpt. prg. 156
  • 24. SET POINTER #1 errlforb tenpr WHILE errl =0 THEN SET VAR name TO bname in #1 SHOW VAR name= 15 At .Iinect +1 SETVAR linect TO .Iinect +1 NECf #1 errl ENDWHILE REMOVE Tempr *() * (Find the season's high three game series score as best _ser) * ( and output the results ) *() EXPANDscores WITH total INTEGER ASSIGN total TO gamel + ganle2 IN scores ASSIGN total TO total + game3 IN scores COMPUTE best _ser AS MAX total FROM scores PROJECf tempr FROM scores USING bnanle + WHEREtotal =,best _sar DELETE DUPLCATES FROM lcmpr' SET VAR linect TO .Iinecl + 2 WRITE"HIGHEST THREE-GAME SERIES SCORE OF" AT linCCl 0 2 SHOW VAR best_ser=3 AT .Iinect + 1 WRITE "WAWSA BOWLED BY THE FOLLOWING BOWLER (S):" AT .Iinect 20 SET VAR linect TO .Iineect + I SET POINTER #1 errl FOR tempr WHILE errl = oTHEN SET VAR name =TO bname IN#1 SHOW VAR name =15 AT .Iinect 30 SET VAR linect TO . 1inect+ 1 NEXT #1 errl ENDWHILE REMOVE tempr *0 * (Find the highestseason's average as best_avg) * ( and output the result) *() SET VAR tgames INTEGER SET VAR totpins INTEGER SET VAR tgames INTEGER SET VAR errl INTEGER SET VAR ERR2 INTEGER PROJECf temp2 FROM bowler USING bname stavg CHANGE COLUMN stavg IN temp2 TOavg SET VAR tgames TO .max_wk x 3 SET POINTER#1 err1 FOR temp2 WHILE err 1 = 0 THEN SET VAR name TObname IN31 COMPUTE totpins AS SUM total FROM scores + WHERE bname = .name ASSIGN avg TO .totpins I .tgame INtemp2 WHERWE bname = .name NEXT #1 errl ENDWHILE COMPUTE best_avg AS MAX avg FROM temp2 *() Gambar 10. 18 (b) Bagian kedua daTimodul program eosrpt.prg 157
  • 25. SET VAR linect TO .linect + 2 WRITE "HIGHEST AVERAGE GAME SCORE OF" AT .1incct 20 SHOW VAR best_avg = 3 AT .1inect 50 SET VAR linect TO .linect + 1 WRITE "WAS BOWLED BY THE FOLLOWING BOWLER(S)" AT .linect 20 SET VAR linect TO .linect + 1 SET POINTER #2 crr2 FOR temp2 + WHEREavg = .best_avg WHILE err2 = 0 THEN SET VAR name TO bname IN #2 SHOW VAR name = 15 AT .lincct 30 SET VAR Iinect TO . linect + 1 NEXT #2 eI1"2 ENDWHILE REMOVE temp2 REMOVE COLUMN total FROM scores SET MESSAGE ON WRITE "Press any key to continue ..." AT 21 20;PAUSE Gambar 10. 18 (c) Bagian akhir dari modul program eosrpt.prg Dalam pelaksanaan logika teamstd.prg lebih rumit dari pada modul-modul lainnya oleh karena keputusan desain dalam Bab 5 maka jumlah menang, kalah dan total pin untuk masing-masing team pada akhir tiap minggu tidak disimpan dalam database. Hal ini dilakukan unruk menghindari kemungkinan adanya data yang tidak tetapl inkonsisten dalam database. Oalam kasus ini dimana seseorang dapat men- gubah nilai perlombaan anggota liga tanpa menghitung kembali akibatnya, akan ada pada kemenangan, kalah total pin salah satu akibat dari keputusan disain ini adalah jika posisi team dihitung tiap minggu, kedudukan harus dihitung kembali untuk setiap minggu diawali dengan pertanyaan, dimulai dengan minggu pertama. Hal ini tak saja mengakibatkan rumitnya logika dalam teamstd.prg tetapi juga secara dratis menam- bah waktu yang diperlukan untuk menghitung hasil waktu perhitungannya untuk menjabarkan posisi team bertambambah secara linier dengan jumlah minggu dalam masa penandingan dimana posisi ini dikehendaki yaitu akan membutuhkan waktu kurang lebih 3 minggu lamanya untuk menghitung posisi minggu ketiga seperti halnya pada minggu pertama . 1. Detennine the last week of the season for which scores have been entered into the SCORES relation. Save this value as "m8Jl_ wk." 2. Input the week for which the standings are desired as "in_wk." and make cenain that value inpul is valid. 3. Zero the wins: losses, and lOlpins values in aillupies in the extra relation TST A TS. 4. For each lane (noted as In), do the following for each week (noted as wk) : a) Use the SET POINTER #2, WHILE-THEN combination to operale on the scores for each bowler on the team bowling on this lane for this week. The following things are done for each bowler: (I) their current hindicap is calculated and slored in "hndkp"; (2) each individual game score is added to the learn lotal for lhal game for lhat night (including handicap); (3) lhe lOlpins value in TSTATS for this learn is replaced wilh the current value plus the sum of this bowler's lhree game lOlal (wilhoUl handicap), The coding used here is thal g I a is lhe lOlal pin counl for game I for the team on thc odd numbered lane, while g I b is the total pin counl for gamc I for the learn on thc even numbered lane. g I a, g3a, g2b, and g3b have similar meanings.. b) Adjust lhe won-Iosl record (inTSTATS) of lhe lasllwo learns analY/.ed, The codmg here IS lhallhe lcam on the odd numbered lane has ils idenlifier names ending wilh "a," while lhe team on lhe even nembered lane has identifiers that end in "b," 5, Output the le"gue slandings by merely SELECTing all the dala lhal are in TS1'A 1'S, afler a proper heading has been output. Gambar 10. 20 Logik umum untuk teamstd.prg 158
  • 26. Oleh karena menang kalah dan hasil pin tidak disimpan sebagai bagian dari set relasi utama dari database, relasi temporer dikembangkan untuk menampung data ini hanya selamapenghitungan dibuat dalam menghasilkan kedudukan team. Relasi ini adalah TSTATS(tnumb, wins,losses,totpins) dan isi TSTATS yang ada pada saat kalkulasi posisi tiem dimulai, terdapat pada gambar 10.22. · · (Procedure name is : "teamstd.prg" (Written by Glenn A. Jackson . · (Oakland University, Rochester, MI 48063 · ( (This procedure calculates and prints out the league standings . · (for any week. The week desired is input from the terminal. · ( . (This procedure is called by : sdbmain menu. ( NEWPAGE SET VAR max_wk INTEGER SET VAR in_wk INTEGER SET VAR done TEXT · (Determine the last week for which scores have been entered as max_wk . COMPUTE max_wk AS MAX week FROM scores · ( ) . (Enter week for which the standings are desired... ( ) SET VAR done TO "false" and verify WHILE done EXISTS THEN WRITE "ENTER WEEK FOR WHICH LEAGUE STANDINGS ARE DESIRED" AT 7 10 WRITE "ONLY VALUES BETWEEN 1 AND" AT 8 10 SHOW V AR max_wk =1 AT 8 36 ALLIN in_ wk USING "aUowed" at 15 10 IF in_wk LE . max_wk AND in_wk GE 1 THEN BREAK ENDIF WRITE "THE WEEK INPUT IS INVALID" AT 15 10 WRITE "Press any key to continue AT 16 10; PAUSE NEWPAGE . ENDWHILE SET ( ) VAR err I INTEGER SET VAR err2 INTEGER SET VAR err3 INTEGER SET VAR tot INTEGER SET VAR avg INTEGER SET VAR tnb INTEGER SET VAR hndkp INTEGER SET VAR teama INTEGER SET VAR teamb INTEGER SET VAR tota INTEGER SET VAR totb INTEGER SET VAR name TEXT SET VAR gla TO 0 SET VAR g2a TO 0 SET VAR g3a TO 0 SET VAR glb TO 0 SET VAR g2b TO 0 SET VAR g3b TO 0 SET VAR In TOO . SET < VAR ) wk TOO · · (Make cenain than wins, losses and totpins auribute values <areaUzero in the scratch-pad relation TSTATS, before new ) ) Gambar 10.21 (a) Bagian pertama dari modul program teamstd.prg. 159
  • 27. * (team slanding calculations begin.) * ( ) ASSIGN wins TO 0.0 + O. 0 IN tstats ASSIGN losses TO O. 0 + O. 0 IN lSlats ASSIGN totpins TO O. 0 + O. 0 IN tstals * ( ) - * (Calculation of slandings begins here calculalions go a week) - - = (at a time from wk I to in_wk. ) ( ) WIIILE wk <= .in_wk TIIEN SET POINTER # I errl FOR sched WIIERE week = .wk AND lane =.In SET VAR tnb TO lnumb IN #] SET POINTER #2 err2 FOR bowler WI(ERE tnumb = .lnb WIIILE err2 = 0 TIIEN SET VAR name TO bname IN #2 ) IF wk = I 'I'll EN SET VAR avg TO slavg 1: #2 ELSE RUi'i gelavg.prg * (FI"'D TilE avg TO USE FOR TillS WEEK) ENDIF IF avg < 200 TIIEN SET VAR hndkp TO 2(X) - . avg SET VAR hndkp TO .hndkp x O.75 ELSE SET V AR hndkp TO () ENDIF * ) SET POINTER #3 FOR scores WIIERE bname = .name AND week = .wk SET VAR gl TO game! IN #3 SET VAR g2 TO game2 IN #3 SET VAR g3 TO game3 IN #3 IF In = I OR In = 3 OR In = 5 'I'll EN SET VAR gla TO .gla + .gl SET VAR gla TO .gla + .hndkp SET VAR g2a TO .g2a + .g2 SET VAR g2a TO .g2a + .hndkp SET VAR g3a TO .g3a + .g3 SET VAR g3a TO .g3a + .hndkp ELSE SET VAR glb TO .glb + .gl SET VAR glb TO .glb + .hndkp SET VAR g2b TO .g2b + .g2 SET VAR g2b TO .g2b + .hndkp SET VAR g3b TO .g3b + .g3 SET VAR g3b TO .g3b .. .hndkp ENDIF SET VAR 101 TO .gl .. .g2 SET VAR 101 TO 101 .. .g3 ASSIG!' tolpins TO tolpins .. .101 1' Islals WIIERE lnumb = .ulb NEXT 1/2 err2 ENDWHILE * ( ) * (When an even numbered lane is pres,-,"I,calculate wins and losses) * (for the team on this lane and the team on the odd numbered lane) Gambar 10.21 (b) Bagian kedua dari modul program teamstd.prg 160
  • 28. · . (bfore it.) ( ) IF In = 2 OR In = 6 THEN SET VAR teamb TO.tnb IF gla > .glb THEN ASSIGN wins TOwins + 1.0 IN tstats WHERE !numb = .teamb ASSIGN losses TOlosses + 1.0 IN tstats WHERE !numb =.teama ELSE . IF glb > .gla THEN ASSIGN wins TOwins + 1.0 IN !Slats WHERE !numb = .teama ASSIGN losses TOlosses + 1.0 IN tstats WHERE !numb = .teamb ELSE ASSIGN wins TOwins + 0.5 IN tstats + WHERE !numb =.teama OR tnumb = .teamb ASSIGN losses TOlosses + 0.5 IN tstats + WHERE !numb =.teama OR tnumb = .teamb ENDIF . ( ENDIF ) IF g2a > .g2b THEN ASSIGN wins TOwins + 1.0 IN tstats WHERE !numb = .teamb ASSIGN losses TO losses + 1.0 IN tstats WHERE !numb = .teama ELSE IF g2b > .g2a TII EN ASSIGN wins TOwins + 1.0 IN tslats WHERE !numb = .teama ASSIGN losses TO losses + 1.0 IN lslats WHERE tnumb = .teamb ELSE ASSIGN wins TOwins + 0.5 1:' lstats + WHERE tnumb = .tcama OR tnumb = .leamb ASSIGN losses TO losses + 0.5 1] tstals + WIIERE tnumb= .teama OR tnumb = .teamb ENDIF . . ENDIF ( ) IF g3a > .g3b THBN = ASSIGN wins TOwins + 1.0 IN !Slats WHERE tnumb .teamb ASSIGN losses TOlosses + 1.0 IN !SIalS WHERE !numb = .teama ELSE IF g3b > .g3a THEN ASSIGN wins TO wins + 1.0 IN lstats WHERE !numb = .leama ASSIGN losses TOlosses + 1.0 IN tstats = WHERE !numb :teamb ELSE ASSIGN wins TOwins + 0.5 IN tstats + WHERE !numb = .teama OR tnumb = .teamb ASSIGN losses TOlosses + 0.5 IN tstats + WHERE !numb = .teama OR tnumb = .leamb ENDIF . ENDIF ( ) SET VAR IOta TO .gla + .g2a SET VAR tota TO .tota + .g3a SET VAR tota TO .gIb + .g2b SET VAR tota TO .totb + .g3b IF tota > .totb THEN ASSIGN wins TO wins + 1.0 Ub tstats WHERE tnumb = .teama Gambar 10.21 (c) Bagian ketiga dari modul program teamstd.prg 161
  • 29. ASSIGNlosses TO losses + 1.0 IN tstats WHEREtnumb = .teamb ELSE IF totb > .tota THEN ASSIGN wins TO wins + 1.0 IN tstats WHEREtnumb = .teamb ASSIGNlosses TO losses + 1.0 IN tstats WHEREtnumb = .teamb ELSE ASSIGN wins TO wins + 0.5 IN tstats + WHERE tnumb = .teama OR tnumb = .teamb ASSIGN losses TO losses + 0.5 IN tstats + WHERE tnumb = .teamaOR tnumb .teamb = ENDIF . ( ) ENDIF SET VAR gla TO 0 SET VAR g2a TO 0 SET VAR g3a TO 0 SET VAR glb TO 0 SET VAR g2b TO 0 SET VAR g3b TO 0 ELSE SET VAR teama TO .tnb ENDIF IF In = 6 THEN SET VAR In TO I SET VAR wk TO .wk + I ELSE SET VAR gla TO 0 ENDIF . ENDWHILE · ( ) (Output the league standings for the week value input above.) . ( ) NEWPAGE WRITE "MONDAY NIGHT IRREGULARS BOWLING LEAGUE" AT 5 I WRITE" STANDINGS AT THE END OF WEEK" AT 6 1 SHOW VAR in_wk = I AT 6 36 WRITE " " SELECT ALL FROM tstats WRITE "Press and key to continue ' AT 22 5; PAUSE Gambar 10.21 (d) Bagian akhir dari modul program teamstd.prg Untuk menyakinkan bahwa nilai menang, kalah dan totpin merupakan set nol pada perlombaan pelaksanaan teamstd.prg salah satu cara untuk mempercepat pelaksanaan modul ini adalah salah satu cara untuk mempercepat pelaksanaan modul ini adalah dengan mengamankan data dalam relasi ini dari minggu ke minggu. Namun hal ini merupakan metode pemprograman untuk mencegah pelaksanaan rencana keputusan desain yang menyebabkan nilai ini berada diluar database pada bagian pertama. . Titik utama yang membingungkan dimana mungkin dialami oleh pembaca dalam melihat 10gikadidalam teamstd.prg, adalah cara dimana teams padajalur yang berdekatan dapat berpasangan. Logika pertama akan menentukan trumb team yang ditunjuk nke jalur satu pad suatu minggu dengan menggunakan SET POINTER # 1 pada relasi SCHED (lihat Gambar 10.23) Tnumb yang diperoleh dari pointer # 1 di pakai untuk mencari tempat dari semua anggota team ini dengan menggunakan set POINTER # 2 pada relasi BOWLER. Niali pemain individu dicari dengan pointer #2 dari team pointer # 1 di peroleh dengan SET POINTER #3 pada nilai SCORES. 162
  • 30. R > list tst.ats Table: tst.ats Read Password: NO R > scect all from lstats Modify Password: NO tnumb wins losses tOlpins Column definitions 1/ Name Key I 0.00000 0.00000 Type Length 2 0.00000 0.00000 I tnumb INTEGER I value(s) 3 0.00000 0.00000 2 wins REAL I value(s) 4 0.00000 0.00000 3 losses REAL I value(s) 5 0.00000 0.00000 4 totpins INTEGER I value(s) 6 0.00000 0.00000 Current number of rows: 6 Ib R> (b) (a) Gambar 10.22 (a) Struktur dari TSTATS, dan (b) isi dari TSTATS pada awal pelaksanaan dari teamstd.prg Nilai perlombaan dari semua anggota team pada lajur satu disimpan dalam variabel yang terakhirdengan "a" seperti91a. Huruf"a" menunjukkan team yang ada pada bagian yang bernomor ganjil jika variabel jalur (1") diubah ke jalur dua, nilai dari team anggota team disimpan dalam variabel yang berakhir dengan "b" seperti 91b. Huruf"b" menunjukkan bahwa team tersebut ada pada bagian yang bernama genap dari 2 team yang sedang diperhimbangkan. Jika semua nilai dari seluruh anggota ke dua team telah dianalisis menang dan kalah untuk minggu itu dapat dipakai untuk team yang ditunjuk ke dua jalur berikutnya.Proses inidilanjutkan sampai semua team dianalisa. RelasiTSTATS harusdibuat sebelumteam SID.PRG dapatdigunakan meskipun relasi ini dalain database berjalan dari proses yang satu ke proses lainnya, namun ini bukan relasi yang reguler sebab .isinya diasumsikan salah' pada awal tiap-tiap pelaksanaan team std.prg. Relasi ini temporer dalam arti bahwa data dan outputnya 'dibuatkemudian dihapuskan. Nilai yangditemukandalam relasi ini tidakdimaksudkan untuk dipakai dengan menggunakan proses yang satu ke proses yang lain. Beberapa sistem manajemen database memiliki perintah untuk membuat struktur relasi tem- porer selama pelaksanaan suatu program. Relasi temprorer ini ada, dan dapat digunakan seperti relasi lain. Pada saat program pembuatan mengakhiri suatu pelaksanan, relasi temporer akan menghilang. Teamstd.prg menianggil prosedur : getarg.prg. Modul yang terdapat dalam gambar 10.24 menghitung rata-rata yang diperlukan untuk perhitungan hambatan pada suatu minggu, bagi seorang pemain. Sebagai contoh, jika team Std.prg meng- hitung menag dan kalah yang ada selama minggu ke empat, hambatan yang dipakai dalam penghitungan ini menggunakan rata-rata tiga minggu pertama dalam masa pertandingan. Geiavg.prg menghitung rata-rata tiap pemain. 163
  • 31. SCHED !numb week lane Pointer # 1 ~ ....5 2 1 /' " I week = 1 and lane = 2 sets Pointer #1 I to tnumb =5 BOWLER .. bname !numb "- " -- Pointer # 1 ~ Jean Adams :. 5 / /' . !numb = 5 from Pointer #1 sets Pointer #2 to tnumb , =5 to get a I bname; Jean Adams is one possibility. SCORES bname week game 1 game2 game3 Pointer # 1 ~ " Jean Adams 2 120 125 100 <: . bnamc = Jean Adams from Pointer #2, plus week = 2, sets Pointer #3 to locate the desired game scores. ,Gambar 10. 23 Contoh Bagaimana Pointerdigunakan dalam modul program teamstd.prg ]64
  • 32. · (Procedure name is "gelavg.prg" ) · · . (Wrinem by Glenn A. Jackson ) (Oakland University, Rochesler, MI 48063 ) · · ( ) (This procedure calculates the average to be used to calculate) (the handicap for a given bowler for a given week in the season.) · · · (The week is input via the global variable "wk"; the bowler's) (name is input via the global variable "name", and the average) · · (is output via the global variable "avg". Input and output) (variables are defined as integers in the calling program.) (This module is caUed only when the week input is greater) · (than one. ) . ( ) · (Procedure is called by teamstd.prg) ( ) SET VAR sum INTEGER SET VAR sl INTEGER SET VAR s2 INTEGER SET VAR s3 INTEGER . SET VAR numgams INTEGER ( COMPliTE ) sl AS SliM gamel FROM scores + WIIERE bname =.name AND week < .wk COMPCTE s2 AS SCM game2 FROM scores + WIIERE bname =.name AND week < .wk COMPUTE s3 AS SUM game3 FROM scores + WHERE bname = .name AND week < .wk SET VAR sum TO. sI + .s2 SET VAR sum TO. sum + .s3 SET VAR numgams TO .wk - I SET VAR numgams TO .numgams x 3 SET VAR avg. TO .sllm I .numgams RETURN Gambar 10.24 Modul program getavg.prg 10. 9 MASALAH DALAM MEMASUKKAN DATA BARU KE DALAM DATABASE Menu dari item yang ada dalam gamabar 10.5membicarakan data yang akan ditampilkan dari database. Seperti yang telah kita bicarakan dalam bab sebelumnya bahwa data yang ada dalam database dimasukkan dengan perintah LOAD dan EDIT R : base 5000 standar akan membantu seketaris liga bowling jika menu masukan dikembangkan sehingga akan membantunyadalam memas.lkkansemua nilai pemain pada minggu berikutnya dalam masa pertandingan tersebut. Masalah ini terdapat dalam latihan di akhir bab ini untuk membantu dalam menjaga keutuhan data dalam database R: 5000 menggabungkan perintah RULES. Perintah ini dipakai untuk kondisi yang membuat DBMS mencek pembatasab tertentu yang diset oleh pemakai pada data dalam database. Jika suatu aturan ditentukan untuk relasi khusus, sistem ini akan mencek taiap modifikasi data dan tiap tambahan data ke relsi tersebut, Sebagai contoh jika tupel dalam relasi team dengan-nomor team yang ada (tnumb adalah kunci primair), Kemudian aturan berikut harus ditempatkan pada relasi TEAM dengan perintah RUES. "Duplicate Key" tnumb IN team NEA thumb IN team 165
  • 33. " Duplicate Key" adalah pesan yang salah akan dicetak tiap kali suatu usaha dibuat untuk menghilangkan/memaksa kondisi ini, dan NEA singkatan "NOT EQUAL TO ANY" Masalah 10 pada akhir bab membahas kondisi jenis ini. 10. 10 RINGKASAN BAB 10 Oleh karena query hanya mencakup pemerolehan informasi dari database, solusi query dapat diselesaikan dengan menggunakan perintah R: base 5000. Sebagian dari so~usi ini tidak dapat dikembangkan oleh seseorang yang tidak konpeten dalam bidang ini. . Jikaquery mencakuppengambilan daripenggolahandatadaridatabase,solusi ini dapat tercakup dan harus dikembangkan oleh seseorang yang telah berpengala- man dengan filosofy databse, yang mempunyai kemampuan pemprograman. 10. 11 . MASALAH-MASALAH BAB 10 1. Implementasi menu R:base 5000diberikan pada babini semuaoutputdikirimke terminal komputer. Tambahkan suatu pilihan pada menu akan memperbolehkan sekretaris untuk memilih peralatan output yang digunakan untuk pelaksanaan yang sedang berlangsung. Pilihan-pilihan yang beralasan hanya terminal, printer dan keduanya printer dan terminal. 2. Perluas menu yang diberikan pada Gambar 10.5 sampai dengan penambahan modul-modul program baru yang akan menjawab beberapa penyelesaian per- tanyaan yang lebih panjang diberikan pada bagian 10.2. 3. Ulangi Masalah 1 dari Bab 9 menggunakan implementasi R:base 5000 . 4. Ulangi Masalah 3 dari Bab 9 menggunakan implementasi R:base 5000. 5. Modifikasi teamstd.prg sehingga kedudukan akhir adalah output dalam format yang terlihat profesional. Pada implementasi yang sekarang kedudukan adalah output menggunakan suatu perintah SELECT ALL. 6. Modifikasi bwlrst.prg se~ingga TATAL PINS WITH HANDICAP tennasuk dalam output. 7. Keluaran teampns.prg yang sekarang menghasilkan jumlah total "scratc.hpins" untuk setiap team. Modifikasi program sehingga"TOTAL PINS WIlli HANDI- CAP" juga keluaran. 8. Porsi utamadari logikdalammodulwkschdCprgdiimplementasikanmenggunakan SET POINTER diikuti suatu konstruksi WHILE-THEN. Tulis kembali bagian ini menggunakan JOIN dan tentukan apakah ada catatan setiap perubahan dalam kecepatan dari pelaksanaan modul. Penyelesaian mana yang lebih mudah ? 9. Ulangi masalah 9 pada Bab 9 menggunakan implementasi R:base 5000
  • 34. 10. Gunakan perintah-perintah aturan untuk sekelompok batasan pada setiap relasi dimana kunci-kunci primer dari setiap relasi unik. 11. Tulislah suatu kelompok modul program driven menu yang mengizinkan kumpulan sekretaris, yang tidak memiliki pengetahuan tentangdatabase, untuk menambahkaJl score permainan ke database untuk semua team setiap minggu. Module harus harus memberikan sekretaris sekumpulan prompt yang mungkin, dan suatu template untuk isidari data yang tepaLMemiliki modul membuat setiap pengujian yang tepat pada data yang dimasukkan belum diperiksa melallui Aturan-atllran pada Masalah 10. 12. Periksa modul-modul yang lambat dalam pelaksanaan, seperti teamstd.prg, dan selidiki berbagai macam cara memperkecil waktll pekaksanaan. (Suatu kontes kelas yang baik adalah untuk melihat siapa yang dapat menghasilkan modul program yang waktu pelaksanaannya tercepat). 13. Ulangi Masalah 5 pada Bab 9 menggllnakan implementasi R:base 5000. 167