SlideShare a Scribd company logo
UJIAN AKHIR SEMESTER GANJIL 2007/2008                            NIM:
    ALGORITMA & STRUKTUR DATA /                                   Nama :
                CS2014
     HARI               :   Sabtu, 19 Januari 2008                Tanda tangan:
     WAKTU              :   135 Menit
     DOSEN              :   KMA, RIE, RMB, ZKA
     SIFAT              :   Tutup Buku



Petunjuk
   • Baca dengan teliti setiap petunjuk soalnya.
   • Soal ujian terdiri atas lima bagian. Jawaban seluruh bagian soal dituliskan pada lembar ini.
   • Periksa kelengkapan halaman soal sebelum Anda mengerjakan soal ujian.


BAGIAN I : Data Abstraction (notasi bahasa C) [20]

              Anda bekerja di sebuah perusahaan pada bagian gudang yang menyimpan automobile part
              (onderdil mobil). Perusahaan tsb menyimpan data banyaknya onderdil yang terdapat pada
              gudang. Basic operational perusahaan dapat dikatakan ada dua, yaitu pemesanan onderdil ke
              supplier dan pengiriman onderdil ke bengkel-bengkel.

              Pemilik bengkel biasanya akan marah jika perusahaan automobile part tersebut tidak
              memiliki onderdil yang dipesannya, karena pelanggan-pelanggannya akan menunggu lama
              agar mobil mereka dapat segera diperbaiki.

              Anda harus menulis program agar pengadaan barang (inventory) di gudang selalu tersedia.
              Inti program Anda adalah menuliskan ADT INVENTORY yang menangani bookkeeping.
              Primitif-primitif yang harus dimiliki adalah
                   • Menghitung banyaknya onderdil yang ada di gudang
                   • Melakukan update data jika ada pengiriman onderdil baru dari supplier ke gudang
                   • Melakukan update data jika ada pengiriman onderdil ke bengkel-bengkel.
                   • Pimpinan perusahaan juga ingin mengetahui kuantitas onderdil yang telah dibawah
                      standar minimum perusahaan (istilah: low, asumsi standar minimum adalah 10
                      unit/onderdil) sehingga perusahaan dapat melakukan pemesanan onderdil ke supplier
                      sebelum onderdil tsb habis di gudang. (dalam hal ini Anda harus mempunyai
                      parameter kuantitas)

              Untuk menyederhanakan persoalan, Anda boleh berasumsi bahwa setiap ada pengiriman dan
              pemesanan onderdil hanya untuk satu jenis onderdil dan banyaknya item tidak dibatasi.
              Dalam hal ini, Anda tidak tahu ada berapa jenis onderdil di dalam gudang dan terkadang
              Anda menerima pengiriman onderdil yang jenisnya belum ada di gudang.

    1.        Lengkapilah tabel ADT Inventory di bawah ini dengan menerapkan List, berdasarkan
              atribut-atribut yang disediakan.


                             Parameter names and                                     Return type and
     Primitive name                                      Transform process
                                    type                                                  value

         constructor              --------------          Create empty list            List kosong




                                                                                            Hal 1 dari 15
Jika part belum ada maka
                                Int Idpart
         Order                                      insert, selain itu tambahkan       --------------
                               Int quantity
                                                      pada quantity yang ada

                                Int Idpart         Quantity part tsb berkurang
        Delivery                                                                        -------------
                               Int quantity        sesuai amount yang dipesan.


                                                                                   Quantity part tsb yg
        howMany                 Int Idpart                  --------------
                                                                                     tdp di gudang

                                                                                     Daftar Idpart yg
                                                                                      menunjukkan
         Low                  Int minimum                    ------------           seluruh part yang
                                                                                   quantity-nya telah <
                                                                                        minimum




   2.      Tuliskan representasi fisik (berkait pointer, berkait tabel, atau kontigu) dan struktur data
           yang akan digunakan untuk implementasi ADT Inventory sesuai dengan representasi
           fisiknya.
           Jawaban:
           Representasi fisik: berkait pointer (contoh yg lain blm dibuat ☺ )

           Struktur data:

           #define   idPart(p) (p)->idPart
           #define   qty(p)      (p)->qty
           #define   next(p) (p)->next
           #define   first(L) ((L).first)

           typedef int infotype;
           typedef struct tElmtList *address;
           typedef struct tElmtList
           {
                  char idPart[20];
                  infotype qty;
                  address next;
           }ElmtList;

           typedef struct
           {
                  address first;
           }List;

   3.      Tuliskan lengkap realisasi setiap primitive names untuk ADT Inventory tsb dengan mengacu
           pada tabel di atas. Asumsi: primitif standar list sudah terdefinisi.
           Jawaban:


void createEmpty(List *L)
/* I.S. sembarang */
/* F.S. terbentuk list kosong */
{
       first(*L)=nil;
}
void order(List *L,char part[],infotype quantity)
/* I.S. */
/* F.S. */
/* proses: searching */


                                                                                              Hal 2 dari 15
{
      address item,p;

      item=first(*L);
      /*cari apakah part ada dalam list*/
      while (strcmp(idPart(item),part)!=0 && next(item)!=nil)
      {
             item=next(item);
      }

       /*cek elemen terakhir*/
       if (strcmp(idPart(item),part)==0)
       {
              qty(item)+=quantity; /*part sudah ada di gudang, qty-nya saja yg
bertambah*/
       }
       else
              InsVLast(&(*L),part,quantity); /*part blm ada di gudang, tambahkan*/
}

void delivery(List *L,char part[],infotype quantity)
/* I.S. part quantity selalu > 1 */
/* F.S. */
/* proses: searching */
{
       address item;

      item=first(*L);
      while (strcmp(idPart(item),part)!=0 && next(item)!=nil)
      {
             item=next(item);
      }

      /*cek elemen terakhir*/
      if (strcmp(idPart(item),part)==0)
      {
             qty(item)-=quantity;
      }
}

infotype HowMany(List L,char part[])
/* I.S. */
/* F.S. */
/* proses: */
{
       address item;

      item=first(L);
      while (strcmp(idPart(item),part)!=0 && next(item)!=nil)
      {
             item=next(item);
      }
      if (strcmp(idPart(item),part)==0)
      {
             return qty(item);
      }
      else
             return 0;
}

void low(List L,int min)
/* I.S. */
/* F.S. */
/* proses: searching */
{
       address item;

      item=first(L);


                                                                              Hal 3 dari 15
while (item!=nil)
         {
                if (qty(item)<min)
                {
                       printf("nt Id Part = %sn",idPart(item)," unit");
                }
                item=next(item);
         }
 }


BAGIAN II. MULTILIST (Notasi Algoritmik) [20]
Diketahui data pengarang dan buku. Aturan yang berlaku adalah : seorang pengarang dapat
mengarang lebih dari satu buku, dan satu buku dapat dikarang oleh lebih dari satu pengarang.
Pengarang dan buku memiliki identitas yang unik

     Contoh :
      Buku       Pengarang
      B1         P1 P2 P3
      B2         P2
      B3         P1 P3

     Representasi :




Lengkapilah struktur data di bawah ini berdasarkan representasi di atas.
       Kamus

                  type   adrPengarang = ^ElmtPengarang
                  type   adrBuku = ^ElmtBuku
                  type   adrRelasi = ^ElmtRelasi
                  type   ElmtPengarang = <IdPengarang: string;
                                        Mengarang: adrRelasi;
                                        Next: adrPengarang>
                  type   ElmtBuku = <KodeBuku: string;
                                   Next: adrBK>
                  type   ElmtRelasi = <Pengarang: adrPengarang;
                                     Next: adrRelasi>
                  type   ListDosen = <First: adrDosen>
                  type   ListMatakuliah = <First: adrMK>




                                                                                       Hal 4 dari 15
Tuliskan procedure output() untuk mencetak setiap buku beserta pengarang-pengarangnya
 Procedure Output (input LBuku:ListBuku; input LPengarang:ListPengarang)
    {I.S. LBuku adalah list buku dan LPengarang list Pengarang, keduanya
    terdefinisi dan tidak kosong}
    {F.S. Kode setiap buku beserta kode pengarang-pengarangnya telah
 dicetak}
 Kamus
   pBuku: adrBuku
   pPengarang: adrPengarang
   pRel: adrRelasi
 Algoritma
   pBuku ← LBuku.First
   while pBuku<>NIL do
       output(pBuku^.KodeBuku)
       pPengarang ← LPengarang.First
       while pPengarang<>NIL do
          pRel ← pPengarang^.Mengarang
          while pRel<>NIL do
              if pRel^.MK=pBuku then
                  output(pPengarang^.IdPengarang)
              pRel ← pRel^.Next
         {EndWhile}
         pPengarang ← pPengarang^.Next
       {EndWhile}
       pBuku ← pBuku^.Next
   {EndWhile}

Petunjuk : Selain perintah output yang ada di template soal, tidak ada perintah output lagi

Tuliskan procedure Jumlah() untuk mencetak jumlah buku yang sudah dikarang oleh masing-
masing penulis
Procedure Jumlah(input LPengarang :ListPengarang; input LBuku:ListBuku)
   {I.S. ListPengarang adalah list Pengarang dan LBuku list buku,
   keduanya terdefinisi dan tidak kosong}
{F.S. Kode setiap pengarang beserta jumlah buku yang dikarangnya telah
dicetak}
Kamus
  pPengarang: adrPengarang
  pRel: adrRelasi
  JumBuku : integer {Jumlah buku}
Algoritma
  pPengarang ← LPengarang.First
  while pPengarang<>NIL do
      output(pPengarang^.IdPengarang)
      pRel ← pPengarang^.Mengarang
      JumBuku ← 0
      while pRel<>NIL do
           JumBuku ← JumBuku + 1
           pRel ← pRel^.Next
      {pRel=NIL}
      Output(JumBuku)
      pPengarang ← pPengarang^.Next
  {pMK=NIL}

Petunjuk : Selain perintah output yang ada di template soal, tidak ada perintah output lagi



                                                                                         Hal 5 dari 15
BAGIAN III. PILIHAN GANDA [10]
Petunjuk: pilihlah satu jawaban yang paling benar

   1. Manakah tahapan aksi yang tepat untuk menghapus node P dari List L, jika diketahui kamus
       datanya sebagai berikut :

                  Type Address = pointer to Elmt
                  Type Infotype = integer
                  Type Elmt = <Info : Infotype,
                               Prev, Next : address>
                  Type List = <first : Address >
                  Var L : list
                      P : Address




              A. Next (P) Nil
                 Prev(P) Nil
                 Next(Prev (P))    Next (P)
                 Prev(Next (P))    Prev(P)

              B. Next(Next (P))    Next (P)
                 Prev(Prev (P))    Prev(P)
                 Next(P) Nil
                 Prev(P) Nil

              C. Next(Prev (P))    Next (P)
                 Next(P) Nil
                 Prev(Next (P))    Prev(P)
                 Prev(P) Nil

              D. Prev(Next (P))    Prev (P)
                 Prev(P) Nil
                 Next(Prev (P))    Next (P)
                 Next(P) Nil

            E. Next(Prev (P))      Next (P)
                Prev(P) Nil
                Prev(Next (P))     Prev(P)
                Next(P) Nil
       Jawaban : E

   2. Diketahui stack S1 dan S2 memiliki elemen bertipe integer, dan variabel C dan i bertipe
      integer. Pada stack S1 dan S2 dilakukan serangkaian operasi sebagai berikut :


                      i traversal [1..5]
                           push (S1,i^2)


                                                                                  Hal 6 dari 15
repeat
                       pop (S1, C)
                       push (S2, C Div 2)
                  until (S1 = Nil)




   Manakah diantara statement di bawah ini yang tidak tepat, mengenai kondisi stack S1 dan
   S2 :
   A. Setelah seluruh aksi dijalankan, stack S1 menjadi kosong, dan S2 berisi 5 elemen
   B. Sebelum aksi repeat dijalankan, S1 berisi hasil pangkat dua dari tiap bilangan i, mulai
       dari 1 sampai 5
   C. Hasil yang sama pada S2 akan didapatkan, meskipun Stack S1 diganti dengan queue Q,
       dengan mengganti operasi push(S1, i ^2) diganti dengan AddQ(Q, i^2), dan Pop (S1, C)
       dengan DelQ(Q, C)
   D. Pada akhir proses S2 tidak Nil
   E. Nilai Top(S2) = 0
       Jawaban : C

3. Jika stack S dideklarasikan secara berkait pointer dengan deklarasi sebagai berikut :

                Type Address = pointer to Elmt
                Type Infotype = character
                Type Elmt = <Info : Infotype,
                             Next : address>
                Type Stack = <Top : Address >
                S : Stack
                P : address



   Maka aksi yang dilakukan untuk menambah elemen R (bertipe character) pada stack S
   adalah :
          A. Next (P) Top(S)
             Top(S) P

           B. Next (P) Top(S)
              Top(S) P
              Alokasi (P)
              Info (P) R

           C. Alokasi (P)
              Next (P) Top(S)
              Top(S) P

           D. Alokasi (P)
              Info (P) R
              Next (P) Top(S)
              Top(S) P

                                                                                     Hal 7 dari 15
E. Alokasi (P)
            Info (P) R
            Top(S) P
            Next (P) Top(S)
   Jawaban : E

4. Suatu array sirkular direpresentasikan menggunakan array, dengan deklarasi :


     Const Nmaks             : integer =   25   {jml maksimum elemen Queue}
     type address            : integer
     type Queue              : < Head :    address,{elemen terdepan Queue}
                                 Tail :    address,{elemen terakhir Queue}
                                 Count :   address,{jml elemen pd Queue}
                                 TabElmt   : array[1..NMaks]of integer >
     Var
           Q                 : Queue


   Manakah dari pernyataan berikut ini yang sesuai dengan Queue sirkular tersebut :
A. Operasi insert elemen pada antrian pasti dapat dilakukan selama Q.Tail ≠ NMaks
B. Alamat Head antrian selalu lebih kecil dari alamat Tail antrian
C. Operasi insert elemen x (x bertipe integer) pada Queue dilakukan dengan tahapan:
           If (Q.Count ≠ Nmaks) then
                  Q.Tail Q.Head + Q.Count +1
                  If (Q.Tail > Nmaks) then
                       Q.Tail    Q.Tail – Nmaks
                  Q.TabElmt[Q.Tail]   x

D. Perlu dilakukan operasi pergeseran elemen setiap kali selesai dilakukan operasi delete pada
   antrian.

E. Jika
                     function IsFull (Q:Queue)          Boolean
   merupakan fungsi yang mengembalikan nilai true jika antrian penuh, maka algoritma fungsi
   tersebut berisi aksi (Q.Tail = NMaks)
   Jawaban : E

5. Perhatikan graf berikut:


                     A



           B                      C




     D           E            F        G




                         H




                                                                                   Hal 8 dari 15
Pernyataan manakah yang benar ?
   A. Hasil penelusuran BFS dan DFS sama untuk graf di atas sama
   B. Hasil DFS untuk graf di atas: A-B-D-H-E-F-G-C
   C. Hasil BFS untuk graf di atas: A-B-C-D-E-F-G-H
   D. Penelusuran BFS menggunakan struktur data stack
   E. Penelusuran DFS memerlukan struktur data queue
   Jawaban : C

6. Perhatikan Pohon T di bawah ini :

                                                     A



                                           B                 C



                              D                  E       F       G



                         H             I

function                                       function F2(P:BinaryTree) integer;
F1(P:BinaryTree) integer;
                                               if (P=Nil)then
if (P<>Nil)then                                      0
     1+F1(Left(P))+F1(Right(P))                else
else                                             if (left(P)=Nil and right(P)=NIL)then
     0;                                              1
                                                 Else
                                                    F2(Left(P))+F2(Right(P));



Manakah pernyataan yang salah:
  A. F1 adalah fungsi untuk menghitung jumlah simpul pada sebuah pohon
  B. F1 dan F2 tidak mungkin menghasilkan nilai yang sama pada pohon yang tidak kosong
  C. Untuk pohon T di atas hasil F1 adalah 9
  D. Untuk pohon T di atas hasil F2 adalah 5
  E. Untuk pohon dengan 1 simpul hasil F2 adalah 1
     Jawaban : B

7. Sebuah Complete Binary Tree A direpresentasikan dengan representasi kontigu sebagi
   berikut :




   Manakah pernyataan berikut ini yang salah :
   A. Simpul H adalah root
   B. Pada tree tersebut terdapat 6 leaf node


                                                                                Hal 9 dari 15
C. Simpul A merupakan internal node
   D. Anak kiri dari simpul K adalah J
   E. Simpul J hanya memiliki satu anak
   Jawaban : C

8. Perhatikan pohon biner berikut ini :

                                                                 A


                                                         I           O


                                                 E           L


                                         G           H           J
   A.   A I E G H J L           O
   B.   G E H I J L A           O
   C.   G E H I L J A           O
   D.   G H E L J I O           A
   E.   G E I A H L J           O
   Jawaban : C

9. Perhatikan Pohon T berikut ini :
                                                         A



                                             B                   C



                                     D               E       F        G



                            H            I

Procedure F1(P:BinTree)             Procedure                        Procedure F3(P:BinTree)
if (P<>Nil)then                     F2(P:BinTree)                    if (P<>Nil)then
    Proses(P)                       if (P<>Nil)then                      F3(Left(P))
    F1(Left(P))                         F2(Left(P))                      Proses(P)
    F1(Right(P))                        F2(Right(P))                     F3(Right(P))
                                        Proses(P)

 Manakah pernyataan yang salah:
 A. F1 merupakan prosedur penelusuran tree PreOrder
 B. F3 merupakan prosedur penelusuran tree InOrder
 C. Hasil F2 untuk pohon T di atas: H-I-D-E-B-F-G-C-A
 D. Hasil F3 untuk pohon T di atas: H-D-I-B-E-A-F-C-G
 E. F1, F2, F3 tidak mungkin memberikan hasil yang sama
   Jawaban : E

10. Struktur stack umumnya digunakan pada proses-proses berikut ini, kecuali :


                                                                                      Hal 10 dari 15
A.
         Backtracking
          B.
         Implementasi Rekursif
          C.
         Pemanggilan Prosedur
          D.
         Simulasi penjadwalan
          E.
         Implementasi operasi2 aritmatika seperti konversi infix to postfix dan evaluasi ekspresi
         postfix
Jawaban: D

BAGIAN IV : Konsep [30]
Tuliskan jawaban T/F (true/false) pada ruang yang disediakan.
__T__ Status memori menjadi “bebas” pada saat pointer diset NULL

__T__ Dua variabel pointer dapat menunjuk lokasi memori yang sama.
__F__ Sebuah stack tidak akan pernah FULL jika diimplementasikan menggunakan dynamic
          memory.

__T__ Stack dan Queues dapat diimplementasikan menggunakan array.
__T__ Stack dan Queue lebih tepat diimplementasikan menggunakan array.
__T__ Pada queue, data dilayani dengan aturan first-in-first-out order.

__T__ Stack dapat digunakan untuk evaluasi ekspresi aritmatika dalam notasi postfix.
__F__ Queue dapat digunakan untuk mensimulasikan kelakuan suatu fungsi rekursif.
__T__ Semua fungsi rekursif harus memiliki terminating condition.

__T__ Semua fungsi rekursif dapat ditransform menjadi iteratif.
__F__ Sebuah linked list dengan 100 node membutuhkan memori lebih sedikit dibandingkan array
          dengan 100 elemen.

__T__ Lebih mudah menyisipkan elemen pada linked list yang tidak terurut dibandingkan linked
          list yang elemennya terurut.
__T__ Pencarian elemen pada linked list yang terurut membutuhkan waktu lebih cepat

          dibandingkan linked list yang tidak terurut.
__T__ Menyisipkan data pada BST membutuhkan waktu lebih cepat dibandingkan pada array
          yang terurut.

__T__ Heap tree dapat digunakan sebagai ilustrasi priority queue.

Pada bagian kiri, tuliskan nomor jawaban dari istilah yang sesuai dengan definisi
Tabel 1
 __4_ a linked list in which the rear item refers back to the head item       1.linked list
                                                                              2.object
 __9_ reduction of a problem to a smaller instance of the same problem
                                                                              3.stack

                                                                                       Hal 11 dari 15
__12_ a repeated computation                                                     4.circular list
                                                                                  5.loop
 _1__ a data structure of values linked together in memory by a chain of
                                                                                  6.primitive data
 references                                                                       7.queue
                                                                                  8.expression tree
 _3__ a data structure with last-in first-out behavior, supporting push and pop
                                                                                  9.recursion
 _10_ how to carry out a computation, may be implemented as a procedure           10. algorithm
                                                                                  11. reduction
 _7__ a data structure with first-in first-out behavior
                                                                                  12. iteration
 _15_ a predicate that becomes true when a computation ends                       13. semantic
                                                                                  14. abstraction
 _5__ a programming language construct that supports iteration
                                                                                  15. termination
 _8__ a diagram showing the operators and operands of an expression                 condition
 _6__, such as numbers and symbols, that are built into the language

Isian Singkat.

Telusuri dua algoritma di bawah ini kemudian tuliskan nama proses yang dilakukan algoritma-
algoritma tersebut.

                           Procedure ProcessX(T:BinTree)
                           Kamus
                           S: stack
                           N: BinTree
                           Algoritma

                           CreateEmpty(S);
                           Push(S,T);
                           While (not(Empty(S))) do
                               Pop(S,N);
                               If (N<>nil) then
                                   Output(info(N));
                                   Push(S,right(N));
                                   Push(S,left(N));

Algoritma tersebut melakukan proses: Preorder traversal

Ekivalen terhadap proses DFS pada graf.

                           Procedure ProcessY(T:BinTree)
                           Kamus
                           Q: Queue
                           N: BinTree
                           Algoritma

                           CreateEmpty(Q);
                           Insert(Q,T);
                           While (not(Empty(Q))) do
                               Remove(Q,N);
                               If (N<>nil) then
                                   Output(info(N));
                                   Insert(Q,left(N));
                                   Insert(Q,right(N));



                                                                                       Hal 12 dari 15
Algoritma tersebut melakukan proses: Level Order Traversal

Ekivalen terhadap proses BFS pada graf.


BAGIAN V : GRAPH (Notasi Bahasa C) [20]

Berikut adalah program dalam bahasa C yang digunakan untuk merepresentasikan graph berarah
dalam bentuk array dengan jumlah node maksimum 10. Adapun fungsionalitas utama yang dimiliki
oleh program tersebut yaitu :
    a. Meminta jumlah node yang akan dipergunakan
    b. Menghubungkan antar node
    c. Menampilkan isi matrix
    d. Menampilkan keterhubungan antar node dengan node yang lain.


Ilustrasi matrix beserta graph hasil dapat dilihat pada gambar berikut ini.

                              Jumlah Node=4                          Graph
                          1     2    3   4
                    1     0     0    0   0
                    2     0     0    0   0
                    3     0     0    0   0
                    4     0     0    0   0


                          1     2     3     4
                    1     0     1     1     0
                    2     0     0     0     0
                    3     0     1     0     0
                    4     1     0     0     0


Lengkapi program dibawah ini sehingga menghasilkan program yang utuh.
Aturan : Tidak perlu menambahkan variabel ataupun baris program.

#include<stdio.h>
#include<conio.h>

int max,graph[10][10],n1,n2;
char pil;

void main()
{
  //inisialisasi array
  for(n1=0;n1<10;n1++)
     for(n2=0;n2<10;n2++)
       graph[n1][n2]=0;



                                                                                Hal 13 dari 15
clrscr();
 //masukkan jumlah node maksimum yang akan dipakai
 printf("nMasukan jumlah node : ");
 scanf("%d",&max);

 do
 { clrscr();
    printf("nMenu :");
    printf("n1. Hubungkan graph");
    printf("n2. Cek Keterhubungan Node");
    printf("n3. Display Array");
    printf("n0. Exit");
    printf("nPilihan : ");
    pil=getche();

     if (pil=='1')
       {
          printf("nMasukkan Node awal : ");
          scanf("%d",&n1);
          n1--;
          printf("Masukan Node Akhir : ");
          scanf("%d",&n2);
          n2--;
          //cek jangan sampai node yang dipilih diatas nilai
maksimum
          if ((n1<=max)&&(n2<=max))
            {
               graph[n1][n2]=1;
            }

      }
    else
    if (pil=='2')
      {
         for (n1=0;n1<max;n1++)
          {
             printf("nNode %d terhubung dengan : ",n1+1);
             for (n2=0;n2<max;n2++)
                {
                  if (graph[n1][n2]==1)
                     printf("%d ",n2+1);
                }
          }
      }
    else
    if (pil=='3')
      {
         printf("n");
         for (n1=0;n1<max;n1++)
            {
             for(n2=0;n2<max;n2++)

                                                             Hal 14 dari 15
printf("%d ",graph[n1][n2]);
               printf("n");
              }
        }
        getche();

    } while (pil!='0');
}




                                                 Hal 15 dari 15

More Related Content

Recently uploaded

PELAKSANAAN (13-14 Juni'24) + Link2 Materi BimTek _"PTK 007 Rev-5 Thn 2023 (P...
PELAKSANAAN (13-14 Juni'24) + Link2 Materi BimTek _"PTK 007 Rev-5 Thn 2023 (P...PELAKSANAAN (13-14 Juni'24) + Link2 Materi BimTek _"PTK 007 Rev-5 Thn 2023 (P...
PELAKSANAAN (13-14 Juni'24) + Link2 Materi BimTek _"PTK 007 Rev-5 Thn 2023 (P...
Kanaidi ken
 
LAPORAN GUrU PIKET laporan piket lap.pdf
LAPORAN GUrU PIKET laporan piket lap.pdfLAPORAN GUrU PIKET laporan piket lap.pdf
LAPORAN GUrU PIKET laporan piket lap.pdf
kompdua2
 
Modul Ajar Fisika Kelas 11 Fase F Kurikulum Merdeka [abdiera.com]
Modul Ajar Fisika Kelas 11 Fase F Kurikulum Merdeka [abdiera.com]Modul Ajar Fisika Kelas 11 Fase F Kurikulum Merdeka [abdiera.com]
Modul Ajar Fisika Kelas 11 Fase F Kurikulum Merdeka [abdiera.com]
Fathan Emran
 
Modul Ajar PAI dan Budi Pekerti Kelas 5 Fase C Kurikulum Merdeka
Modul Ajar PAI dan Budi Pekerti Kelas 5 Fase C Kurikulum MerdekaModul Ajar PAI dan Budi Pekerti Kelas 5 Fase C Kurikulum Merdeka
Modul Ajar PAI dan Budi Pekerti Kelas 5 Fase C Kurikulum Merdeka
Fathan Emran
 
Modul Projek - Yuk Makan Ketupat (Kearifan Lokal) Fase C - Fase C.pdf
Modul Projek  - Yuk Makan Ketupat (Kearifan Lokal) Fase C - Fase C.pdfModul Projek  - Yuk Makan Ketupat (Kearifan Lokal) Fase C - Fase C.pdf
Modul Projek - Yuk Makan Ketupat (Kearifan Lokal) Fase C - Fase C.pdf
ShintaKurniawatiSs
 
Materi Geografi Kelas 11 Mitigasi Bencana
Materi Geografi Kelas 11 Mitigasi BencanaMateri Geografi Kelas 11 Mitigasi Bencana
Materi Geografi Kelas 11 Mitigasi Bencana
AyuniDwiLestari
 
Modul Ajar PJOK Kelas 4 Fase B Kurikulum Merdeka
Modul Ajar PJOK Kelas 4 Fase B Kurikulum MerdekaModul Ajar PJOK Kelas 4 Fase B Kurikulum Merdeka
Modul Ajar PJOK Kelas 4 Fase B Kurikulum Merdeka
Fathan Emran
 
KONEKSI ANTAR MATERI MODUL 2.1 SRI WAHYUNI.pdf
KONEKSI ANTAR MATERI MODUL 2.1 SRI WAHYUNI.pdfKONEKSI ANTAR MATERI MODUL 2.1 SRI WAHYUNI.pdf
KONEKSI ANTAR MATERI MODUL 2.1 SRI WAHYUNI.pdf
SriWahyuni58535
 
SABDA MLC - Kelas Bedah Kitab Wahyu (BKW)
SABDA MLC - Kelas Bedah Kitab Wahyu (BKW)SABDA MLC - Kelas Bedah Kitab Wahyu (BKW)
SABDA MLC - Kelas Bedah Kitab Wahyu (BKW)
SABDA
 
Materi Khotbah Bercerita Untuk Anak Sekolah Minggu
Materi Khotbah Bercerita Untuk Anak Sekolah MingguMateri Khotbah Bercerita Untuk Anak Sekolah Minggu
Materi Khotbah Bercerita Untuk Anak Sekolah Minggu
BOWLNChannel
 
Modul Ajar PAI dan Budi Pekerti Kelas 4 Fase B Kurikulum merdeka
Modul Ajar PAI dan Budi Pekerti Kelas 4 Fase B Kurikulum merdekaModul Ajar PAI dan Budi Pekerti Kelas 4 Fase B Kurikulum merdeka
Modul Ajar PAI dan Budi Pekerti Kelas 4 Fase B Kurikulum merdeka
Fathan Emran
 
UNIT 3 PB 1 MODUL AJAR PPKn KELAS 5 - modulguruku.com.docx
UNIT 3 PB 1 MODUL AJAR PPKn KELAS 5 - modulguruku.com.docxUNIT 3 PB 1 MODUL AJAR PPKn KELAS 5 - modulguruku.com.docx
UNIT 3 PB 1 MODUL AJAR PPKn KELAS 5 - modulguruku.com.docx
nengenok23
 
KIAN karya ilmiah akhir ners keperawatan medikal bedah.ppt
KIAN karya ilmiah akhir ners keperawatan medikal bedah.pptKIAN karya ilmiah akhir ners keperawatan medikal bedah.ppt
KIAN karya ilmiah akhir ners keperawatan medikal bedah.ppt
WAYANDARSANA1
 
Free Handout 200 Soal UKMPPAI Ed. Giveaway XV.pdf
Free Handout 200 Soal UKMPPAI Ed. Giveaway XV.pdfFree Handout 200 Soal UKMPPAI Ed. Giveaway XV.pdf
Free Handout 200 Soal UKMPPAI Ed. Giveaway XV.pdf
Roni Setiawan
 
Materi MATSAMA Pengenalan Kurikulum.pptx
Materi MATSAMA  Pengenalan Kurikulum.pptxMateri MATSAMA  Pengenalan Kurikulum.pptx
Materi MATSAMA Pengenalan Kurikulum.pptx
ssuseraf5f2e
 
PELAKSANAAN + Link2 Materi BimTek _(Ketentuan TERBARU) "PTK 007 Rev-5 Tahun 2...
PELAKSANAAN + Link2 Materi BimTek _(Ketentuan TERBARU) "PTK 007 Rev-5 Tahun 2...PELAKSANAAN + Link2 Materi BimTek _(Ketentuan TERBARU) "PTK 007 Rev-5 Tahun 2...
PELAKSANAAN + Link2 Materi BimTek _(Ketentuan TERBARU) "PTK 007 Rev-5 Tahun 2...
Kanaidi ken
 
Modul AJar Rekayasa Perangkat Lunak 2024
Modul AJar Rekayasa Perangkat Lunak 2024Modul AJar Rekayasa Perangkat Lunak 2024
Modul AJar Rekayasa Perangkat Lunak 2024
Herry Prasetyo
 
Aksi Nyata Buku Non Teks Bermutu Dan Manfaatnya .pdf
Aksi Nyata Buku Non Teks Bermutu Dan Manfaatnya .pdfAksi Nyata Buku Non Teks Bermutu Dan Manfaatnya .pdf
Aksi Nyata Buku Non Teks Bermutu Dan Manfaatnya .pdf
DenysErlanders
 
1. Sosialisasi_Serdos_2024_PSD_PTU dan Peserta.pdf
1. Sosialisasi_Serdos_2024_PSD_PTU dan Peserta.pdf1. Sosialisasi_Serdos_2024_PSD_PTU dan Peserta.pdf
1. Sosialisasi_Serdos_2024_PSD_PTU dan Peserta.pdf
denny404455
 
UNIT 4 PB 3 MODUL AJAR PPKn KELAS 5 - modulguruku.com.docx
UNIT 4 PB 3 MODUL AJAR PPKn KELAS 5 - modulguruku.com.docxUNIT 4 PB 3 MODUL AJAR PPKn KELAS 5 - modulguruku.com.docx
UNIT 4 PB 3 MODUL AJAR PPKn KELAS 5 - modulguruku.com.docx
nengenok23
 

Recently uploaded (20)

PELAKSANAAN (13-14 Juni'24) + Link2 Materi BimTek _"PTK 007 Rev-5 Thn 2023 (P...
PELAKSANAAN (13-14 Juni'24) + Link2 Materi BimTek _"PTK 007 Rev-5 Thn 2023 (P...PELAKSANAAN (13-14 Juni'24) + Link2 Materi BimTek _"PTK 007 Rev-5 Thn 2023 (P...
PELAKSANAAN (13-14 Juni'24) + Link2 Materi BimTek _"PTK 007 Rev-5 Thn 2023 (P...
 
LAPORAN GUrU PIKET laporan piket lap.pdf
LAPORAN GUrU PIKET laporan piket lap.pdfLAPORAN GUrU PIKET laporan piket lap.pdf
LAPORAN GUrU PIKET laporan piket lap.pdf
 
Modul Ajar Fisika Kelas 11 Fase F Kurikulum Merdeka [abdiera.com]
Modul Ajar Fisika Kelas 11 Fase F Kurikulum Merdeka [abdiera.com]Modul Ajar Fisika Kelas 11 Fase F Kurikulum Merdeka [abdiera.com]
Modul Ajar Fisika Kelas 11 Fase F Kurikulum Merdeka [abdiera.com]
 
Modul Ajar PAI dan Budi Pekerti Kelas 5 Fase C Kurikulum Merdeka
Modul Ajar PAI dan Budi Pekerti Kelas 5 Fase C Kurikulum MerdekaModul Ajar PAI dan Budi Pekerti Kelas 5 Fase C Kurikulum Merdeka
Modul Ajar PAI dan Budi Pekerti Kelas 5 Fase C Kurikulum Merdeka
 
Modul Projek - Yuk Makan Ketupat (Kearifan Lokal) Fase C - Fase C.pdf
Modul Projek  - Yuk Makan Ketupat (Kearifan Lokal) Fase C - Fase C.pdfModul Projek  - Yuk Makan Ketupat (Kearifan Lokal) Fase C - Fase C.pdf
Modul Projek - Yuk Makan Ketupat (Kearifan Lokal) Fase C - Fase C.pdf
 
Materi Geografi Kelas 11 Mitigasi Bencana
Materi Geografi Kelas 11 Mitigasi BencanaMateri Geografi Kelas 11 Mitigasi Bencana
Materi Geografi Kelas 11 Mitigasi Bencana
 
Modul Ajar PJOK Kelas 4 Fase B Kurikulum Merdeka
Modul Ajar PJOK Kelas 4 Fase B Kurikulum MerdekaModul Ajar PJOK Kelas 4 Fase B Kurikulum Merdeka
Modul Ajar PJOK Kelas 4 Fase B Kurikulum Merdeka
 
KONEKSI ANTAR MATERI MODUL 2.1 SRI WAHYUNI.pdf
KONEKSI ANTAR MATERI MODUL 2.1 SRI WAHYUNI.pdfKONEKSI ANTAR MATERI MODUL 2.1 SRI WAHYUNI.pdf
KONEKSI ANTAR MATERI MODUL 2.1 SRI WAHYUNI.pdf
 
SABDA MLC - Kelas Bedah Kitab Wahyu (BKW)
SABDA MLC - Kelas Bedah Kitab Wahyu (BKW)SABDA MLC - Kelas Bedah Kitab Wahyu (BKW)
SABDA MLC - Kelas Bedah Kitab Wahyu (BKW)
 
Materi Khotbah Bercerita Untuk Anak Sekolah Minggu
Materi Khotbah Bercerita Untuk Anak Sekolah MingguMateri Khotbah Bercerita Untuk Anak Sekolah Minggu
Materi Khotbah Bercerita Untuk Anak Sekolah Minggu
 
Modul Ajar PAI dan Budi Pekerti Kelas 4 Fase B Kurikulum merdeka
Modul Ajar PAI dan Budi Pekerti Kelas 4 Fase B Kurikulum merdekaModul Ajar PAI dan Budi Pekerti Kelas 4 Fase B Kurikulum merdeka
Modul Ajar PAI dan Budi Pekerti Kelas 4 Fase B Kurikulum merdeka
 
UNIT 3 PB 1 MODUL AJAR PPKn KELAS 5 - modulguruku.com.docx
UNIT 3 PB 1 MODUL AJAR PPKn KELAS 5 - modulguruku.com.docxUNIT 3 PB 1 MODUL AJAR PPKn KELAS 5 - modulguruku.com.docx
UNIT 3 PB 1 MODUL AJAR PPKn KELAS 5 - modulguruku.com.docx
 
KIAN karya ilmiah akhir ners keperawatan medikal bedah.ppt
KIAN karya ilmiah akhir ners keperawatan medikal bedah.pptKIAN karya ilmiah akhir ners keperawatan medikal bedah.ppt
KIAN karya ilmiah akhir ners keperawatan medikal bedah.ppt
 
Free Handout 200 Soal UKMPPAI Ed. Giveaway XV.pdf
Free Handout 200 Soal UKMPPAI Ed. Giveaway XV.pdfFree Handout 200 Soal UKMPPAI Ed. Giveaway XV.pdf
Free Handout 200 Soal UKMPPAI Ed. Giveaway XV.pdf
 
Materi MATSAMA Pengenalan Kurikulum.pptx
Materi MATSAMA  Pengenalan Kurikulum.pptxMateri MATSAMA  Pengenalan Kurikulum.pptx
Materi MATSAMA Pengenalan Kurikulum.pptx
 
PELAKSANAAN + Link2 Materi BimTek _(Ketentuan TERBARU) "PTK 007 Rev-5 Tahun 2...
PELAKSANAAN + Link2 Materi BimTek _(Ketentuan TERBARU) "PTK 007 Rev-5 Tahun 2...PELAKSANAAN + Link2 Materi BimTek _(Ketentuan TERBARU) "PTK 007 Rev-5 Tahun 2...
PELAKSANAAN + Link2 Materi BimTek _(Ketentuan TERBARU) "PTK 007 Rev-5 Tahun 2...
 
Modul AJar Rekayasa Perangkat Lunak 2024
Modul AJar Rekayasa Perangkat Lunak 2024Modul AJar Rekayasa Perangkat Lunak 2024
Modul AJar Rekayasa Perangkat Lunak 2024
 
Aksi Nyata Buku Non Teks Bermutu Dan Manfaatnya .pdf
Aksi Nyata Buku Non Teks Bermutu Dan Manfaatnya .pdfAksi Nyata Buku Non Teks Bermutu Dan Manfaatnya .pdf
Aksi Nyata Buku Non Teks Bermutu Dan Manfaatnya .pdf
 
1. Sosialisasi_Serdos_2024_PSD_PTU dan Peserta.pdf
1. Sosialisasi_Serdos_2024_PSD_PTU dan Peserta.pdf1. Sosialisasi_Serdos_2024_PSD_PTU dan Peserta.pdf
1. Sosialisasi_Serdos_2024_PSD_PTU dan Peserta.pdf
 
UNIT 4 PB 3 MODUL AJAR PPKn KELAS 5 - modulguruku.com.docx
UNIT 4 PB 3 MODUL AJAR PPKn KELAS 5 - modulguruku.com.docxUNIT 4 PB 3 MODUL AJAR PPKn KELAS 5 - modulguruku.com.docx
UNIT 4 PB 3 MODUL AJAR PPKn KELAS 5 - modulguruku.com.docx
 

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 Hubspot
Marius 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 ChatGPT
Expeed 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 Engineerings
Pixeldarts
 
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
ThinkNow
 
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
marketingartwork
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
Skeleton Technologies
 
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
Neil 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 2024
Albert 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 Insights
Kurio // 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 2024
Search 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 summary
SpeakerHub
 
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 Intent
Lily Ray
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
Rajiv Jayarajah, MAppComm, ACC
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
Christy Abraham Joy
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
Vit 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 management
MindGenius
 
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...
 

2007 2008

  • 1. UJIAN AKHIR SEMESTER GANJIL 2007/2008 NIM: ALGORITMA & STRUKTUR DATA / Nama : CS2014 HARI : Sabtu, 19 Januari 2008 Tanda tangan: WAKTU : 135 Menit DOSEN : KMA, RIE, RMB, ZKA SIFAT : Tutup Buku Petunjuk • Baca dengan teliti setiap petunjuk soalnya. • Soal ujian terdiri atas lima bagian. Jawaban seluruh bagian soal dituliskan pada lembar ini. • Periksa kelengkapan halaman soal sebelum Anda mengerjakan soal ujian. BAGIAN I : Data Abstraction (notasi bahasa C) [20] Anda bekerja di sebuah perusahaan pada bagian gudang yang menyimpan automobile part (onderdil mobil). Perusahaan tsb menyimpan data banyaknya onderdil yang terdapat pada gudang. Basic operational perusahaan dapat dikatakan ada dua, yaitu pemesanan onderdil ke supplier dan pengiriman onderdil ke bengkel-bengkel. Pemilik bengkel biasanya akan marah jika perusahaan automobile part tersebut tidak memiliki onderdil yang dipesannya, karena pelanggan-pelanggannya akan menunggu lama agar mobil mereka dapat segera diperbaiki. Anda harus menulis program agar pengadaan barang (inventory) di gudang selalu tersedia. Inti program Anda adalah menuliskan ADT INVENTORY yang menangani bookkeeping. Primitif-primitif yang harus dimiliki adalah • Menghitung banyaknya onderdil yang ada di gudang • Melakukan update data jika ada pengiriman onderdil baru dari supplier ke gudang • Melakukan update data jika ada pengiriman onderdil ke bengkel-bengkel. • Pimpinan perusahaan juga ingin mengetahui kuantitas onderdil yang telah dibawah standar minimum perusahaan (istilah: low, asumsi standar minimum adalah 10 unit/onderdil) sehingga perusahaan dapat melakukan pemesanan onderdil ke supplier sebelum onderdil tsb habis di gudang. (dalam hal ini Anda harus mempunyai parameter kuantitas) Untuk menyederhanakan persoalan, Anda boleh berasumsi bahwa setiap ada pengiriman dan pemesanan onderdil hanya untuk satu jenis onderdil dan banyaknya item tidak dibatasi. Dalam hal ini, Anda tidak tahu ada berapa jenis onderdil di dalam gudang dan terkadang Anda menerima pengiriman onderdil yang jenisnya belum ada di gudang. 1. Lengkapilah tabel ADT Inventory di bawah ini dengan menerapkan List, berdasarkan atribut-atribut yang disediakan. Parameter names and Return type and Primitive name Transform process type value constructor -------------- Create empty list List kosong Hal 1 dari 15
  • 2. Jika part belum ada maka Int Idpart Order insert, selain itu tambahkan -------------- Int quantity pada quantity yang ada Int Idpart Quantity part tsb berkurang Delivery ------------- Int quantity sesuai amount yang dipesan. Quantity part tsb yg howMany Int Idpart -------------- tdp di gudang Daftar Idpart yg menunjukkan Low Int minimum ------------ seluruh part yang quantity-nya telah < minimum 2. Tuliskan representasi fisik (berkait pointer, berkait tabel, atau kontigu) dan struktur data yang akan digunakan untuk implementasi ADT Inventory sesuai dengan representasi fisiknya. Jawaban: Representasi fisik: berkait pointer (contoh yg lain blm dibuat ☺ ) Struktur data: #define idPart(p) (p)->idPart #define qty(p) (p)->qty #define next(p) (p)->next #define first(L) ((L).first) typedef int infotype; typedef struct tElmtList *address; typedef struct tElmtList { char idPart[20]; infotype qty; address next; }ElmtList; typedef struct { address first; }List; 3. Tuliskan lengkap realisasi setiap primitive names untuk ADT Inventory tsb dengan mengacu pada tabel di atas. Asumsi: primitif standar list sudah terdefinisi. Jawaban: void createEmpty(List *L) /* I.S. sembarang */ /* F.S. terbentuk list kosong */ { first(*L)=nil; } void order(List *L,char part[],infotype quantity) /* I.S. */ /* F.S. */ /* proses: searching */ Hal 2 dari 15
  • 3. { address item,p; item=first(*L); /*cari apakah part ada dalam list*/ while (strcmp(idPart(item),part)!=0 && next(item)!=nil) { item=next(item); } /*cek elemen terakhir*/ if (strcmp(idPart(item),part)==0) { qty(item)+=quantity; /*part sudah ada di gudang, qty-nya saja yg bertambah*/ } else InsVLast(&(*L),part,quantity); /*part blm ada di gudang, tambahkan*/ } void delivery(List *L,char part[],infotype quantity) /* I.S. part quantity selalu > 1 */ /* F.S. */ /* proses: searching */ { address item; item=first(*L); while (strcmp(idPart(item),part)!=0 && next(item)!=nil) { item=next(item); } /*cek elemen terakhir*/ if (strcmp(idPart(item),part)==0) { qty(item)-=quantity; } } infotype HowMany(List L,char part[]) /* I.S. */ /* F.S. */ /* proses: */ { address item; item=first(L); while (strcmp(idPart(item),part)!=0 && next(item)!=nil) { item=next(item); } if (strcmp(idPart(item),part)==0) { return qty(item); } else return 0; } void low(List L,int min) /* I.S. */ /* F.S. */ /* proses: searching */ { address item; item=first(L); Hal 3 dari 15
  • 4. while (item!=nil) { if (qty(item)<min) { printf("nt Id Part = %sn",idPart(item)," unit"); } item=next(item); } } BAGIAN II. MULTILIST (Notasi Algoritmik) [20] Diketahui data pengarang dan buku. Aturan yang berlaku adalah : seorang pengarang dapat mengarang lebih dari satu buku, dan satu buku dapat dikarang oleh lebih dari satu pengarang. Pengarang dan buku memiliki identitas yang unik Contoh : Buku Pengarang B1 P1 P2 P3 B2 P2 B3 P1 P3 Representasi : Lengkapilah struktur data di bawah ini berdasarkan representasi di atas. Kamus type adrPengarang = ^ElmtPengarang type adrBuku = ^ElmtBuku type adrRelasi = ^ElmtRelasi type ElmtPengarang = <IdPengarang: string; Mengarang: adrRelasi; Next: adrPengarang> type ElmtBuku = <KodeBuku: string; Next: adrBK> type ElmtRelasi = <Pengarang: adrPengarang; Next: adrRelasi> type ListDosen = <First: adrDosen> type ListMatakuliah = <First: adrMK> Hal 4 dari 15
  • 5. Tuliskan procedure output() untuk mencetak setiap buku beserta pengarang-pengarangnya Procedure Output (input LBuku:ListBuku; input LPengarang:ListPengarang) {I.S. LBuku adalah list buku dan LPengarang list Pengarang, keduanya terdefinisi dan tidak kosong} {F.S. Kode setiap buku beserta kode pengarang-pengarangnya telah dicetak} Kamus pBuku: adrBuku pPengarang: adrPengarang pRel: adrRelasi Algoritma pBuku ← LBuku.First while pBuku<>NIL do output(pBuku^.KodeBuku) pPengarang ← LPengarang.First while pPengarang<>NIL do pRel ← pPengarang^.Mengarang while pRel<>NIL do if pRel^.MK=pBuku then output(pPengarang^.IdPengarang) pRel ← pRel^.Next {EndWhile} pPengarang ← pPengarang^.Next {EndWhile} pBuku ← pBuku^.Next {EndWhile} Petunjuk : Selain perintah output yang ada di template soal, tidak ada perintah output lagi Tuliskan procedure Jumlah() untuk mencetak jumlah buku yang sudah dikarang oleh masing- masing penulis Procedure Jumlah(input LPengarang :ListPengarang; input LBuku:ListBuku) {I.S. ListPengarang adalah list Pengarang dan LBuku list buku, keduanya terdefinisi dan tidak kosong} {F.S. Kode setiap pengarang beserta jumlah buku yang dikarangnya telah dicetak} Kamus pPengarang: adrPengarang pRel: adrRelasi JumBuku : integer {Jumlah buku} Algoritma pPengarang ← LPengarang.First while pPengarang<>NIL do output(pPengarang^.IdPengarang) pRel ← pPengarang^.Mengarang JumBuku ← 0 while pRel<>NIL do JumBuku ← JumBuku + 1 pRel ← pRel^.Next {pRel=NIL} Output(JumBuku) pPengarang ← pPengarang^.Next {pMK=NIL} Petunjuk : Selain perintah output yang ada di template soal, tidak ada perintah output lagi Hal 5 dari 15
  • 6. BAGIAN III. PILIHAN GANDA [10] Petunjuk: pilihlah satu jawaban yang paling benar 1. Manakah tahapan aksi yang tepat untuk menghapus node P dari List L, jika diketahui kamus datanya sebagai berikut : Type Address = pointer to Elmt Type Infotype = integer Type Elmt = <Info : Infotype, Prev, Next : address> Type List = <first : Address > Var L : list P : Address A. Next (P) Nil Prev(P) Nil Next(Prev (P)) Next (P) Prev(Next (P)) Prev(P) B. Next(Next (P)) Next (P) Prev(Prev (P)) Prev(P) Next(P) Nil Prev(P) Nil C. Next(Prev (P)) Next (P) Next(P) Nil Prev(Next (P)) Prev(P) Prev(P) Nil D. Prev(Next (P)) Prev (P) Prev(P) Nil Next(Prev (P)) Next (P) Next(P) Nil E. Next(Prev (P)) Next (P) Prev(P) Nil Prev(Next (P)) Prev(P) Next(P) Nil Jawaban : E 2. Diketahui stack S1 dan S2 memiliki elemen bertipe integer, dan variabel C dan i bertipe integer. Pada stack S1 dan S2 dilakukan serangkaian operasi sebagai berikut : i traversal [1..5] push (S1,i^2) Hal 6 dari 15
  • 7. repeat pop (S1, C) push (S2, C Div 2) until (S1 = Nil) Manakah diantara statement di bawah ini yang tidak tepat, mengenai kondisi stack S1 dan S2 : A. Setelah seluruh aksi dijalankan, stack S1 menjadi kosong, dan S2 berisi 5 elemen B. Sebelum aksi repeat dijalankan, S1 berisi hasil pangkat dua dari tiap bilangan i, mulai dari 1 sampai 5 C. Hasil yang sama pada S2 akan didapatkan, meskipun Stack S1 diganti dengan queue Q, dengan mengganti operasi push(S1, i ^2) diganti dengan AddQ(Q, i^2), dan Pop (S1, C) dengan DelQ(Q, C) D. Pada akhir proses S2 tidak Nil E. Nilai Top(S2) = 0 Jawaban : C 3. Jika stack S dideklarasikan secara berkait pointer dengan deklarasi sebagai berikut : Type Address = pointer to Elmt Type Infotype = character Type Elmt = <Info : Infotype, Next : address> Type Stack = <Top : Address > S : Stack P : address Maka aksi yang dilakukan untuk menambah elemen R (bertipe character) pada stack S adalah : A. Next (P) Top(S) Top(S) P B. Next (P) Top(S) Top(S) P Alokasi (P) Info (P) R C. Alokasi (P) Next (P) Top(S) Top(S) P D. Alokasi (P) Info (P) R Next (P) Top(S) Top(S) P Hal 7 dari 15
  • 8. E. Alokasi (P) Info (P) R Top(S) P Next (P) Top(S) Jawaban : E 4. Suatu array sirkular direpresentasikan menggunakan array, dengan deklarasi : Const Nmaks : integer = 25 {jml maksimum elemen Queue} type address : integer type Queue : < Head : address,{elemen terdepan Queue} Tail : address,{elemen terakhir Queue} Count : address,{jml elemen pd Queue} TabElmt : array[1..NMaks]of integer > Var Q : Queue Manakah dari pernyataan berikut ini yang sesuai dengan Queue sirkular tersebut : A. Operasi insert elemen pada antrian pasti dapat dilakukan selama Q.Tail ≠ NMaks B. Alamat Head antrian selalu lebih kecil dari alamat Tail antrian C. Operasi insert elemen x (x bertipe integer) pada Queue dilakukan dengan tahapan: If (Q.Count ≠ Nmaks) then Q.Tail Q.Head + Q.Count +1 If (Q.Tail > Nmaks) then Q.Tail Q.Tail – Nmaks Q.TabElmt[Q.Tail] x D. Perlu dilakukan operasi pergeseran elemen setiap kali selesai dilakukan operasi delete pada antrian. E. Jika function IsFull (Q:Queue) Boolean merupakan fungsi yang mengembalikan nilai true jika antrian penuh, maka algoritma fungsi tersebut berisi aksi (Q.Tail = NMaks) Jawaban : E 5. Perhatikan graf berikut: A B C D E F G H Hal 8 dari 15
  • 9. Pernyataan manakah yang benar ? A. Hasil penelusuran BFS dan DFS sama untuk graf di atas sama B. Hasil DFS untuk graf di atas: A-B-D-H-E-F-G-C C. Hasil BFS untuk graf di atas: A-B-C-D-E-F-G-H D. Penelusuran BFS menggunakan struktur data stack E. Penelusuran DFS memerlukan struktur data queue Jawaban : C 6. Perhatikan Pohon T di bawah ini : A B C D E F G H I function function F2(P:BinaryTree) integer; F1(P:BinaryTree) integer; if (P=Nil)then if (P<>Nil)then 0 1+F1(Left(P))+F1(Right(P)) else else if (left(P)=Nil and right(P)=NIL)then 0; 1 Else F2(Left(P))+F2(Right(P)); Manakah pernyataan yang salah: A. F1 adalah fungsi untuk menghitung jumlah simpul pada sebuah pohon B. F1 dan F2 tidak mungkin menghasilkan nilai yang sama pada pohon yang tidak kosong C. Untuk pohon T di atas hasil F1 adalah 9 D. Untuk pohon T di atas hasil F2 adalah 5 E. Untuk pohon dengan 1 simpul hasil F2 adalah 1 Jawaban : B 7. Sebuah Complete Binary Tree A direpresentasikan dengan representasi kontigu sebagi berikut : Manakah pernyataan berikut ini yang salah : A. Simpul H adalah root B. Pada tree tersebut terdapat 6 leaf node Hal 9 dari 15
  • 10. C. Simpul A merupakan internal node D. Anak kiri dari simpul K adalah J E. Simpul J hanya memiliki satu anak Jawaban : C 8. Perhatikan pohon biner berikut ini : A I O E L G H J A. A I E G H J L O B. G E H I J L A O C. G E H I L J A O D. G H E L J I O A E. G E I A H L J O Jawaban : C 9. Perhatikan Pohon T berikut ini : A B C D E F G H I Procedure F1(P:BinTree) Procedure Procedure F3(P:BinTree) if (P<>Nil)then F2(P:BinTree) if (P<>Nil)then Proses(P) if (P<>Nil)then F3(Left(P)) F1(Left(P)) F2(Left(P)) Proses(P) F1(Right(P)) F2(Right(P)) F3(Right(P)) Proses(P) Manakah pernyataan yang salah: A. F1 merupakan prosedur penelusuran tree PreOrder B. F3 merupakan prosedur penelusuran tree InOrder C. Hasil F2 untuk pohon T di atas: H-I-D-E-B-F-G-C-A D. Hasil F3 untuk pohon T di atas: H-D-I-B-E-A-F-C-G E. F1, F2, F3 tidak mungkin memberikan hasil yang sama Jawaban : E 10. Struktur stack umumnya digunakan pada proses-proses berikut ini, kecuali : Hal 10 dari 15
  • 11. A. Backtracking B. Implementasi Rekursif C. Pemanggilan Prosedur D. Simulasi penjadwalan E. Implementasi operasi2 aritmatika seperti konversi infix to postfix dan evaluasi ekspresi postfix Jawaban: D BAGIAN IV : Konsep [30] Tuliskan jawaban T/F (true/false) pada ruang yang disediakan. __T__ Status memori menjadi “bebas” pada saat pointer diset NULL __T__ Dua variabel pointer dapat menunjuk lokasi memori yang sama. __F__ Sebuah stack tidak akan pernah FULL jika diimplementasikan menggunakan dynamic memory. __T__ Stack dan Queues dapat diimplementasikan menggunakan array. __T__ Stack dan Queue lebih tepat diimplementasikan menggunakan array. __T__ Pada queue, data dilayani dengan aturan first-in-first-out order. __T__ Stack dapat digunakan untuk evaluasi ekspresi aritmatika dalam notasi postfix. __F__ Queue dapat digunakan untuk mensimulasikan kelakuan suatu fungsi rekursif. __T__ Semua fungsi rekursif harus memiliki terminating condition. __T__ Semua fungsi rekursif dapat ditransform menjadi iteratif. __F__ Sebuah linked list dengan 100 node membutuhkan memori lebih sedikit dibandingkan array dengan 100 elemen. __T__ Lebih mudah menyisipkan elemen pada linked list yang tidak terurut dibandingkan linked list yang elemennya terurut. __T__ Pencarian elemen pada linked list yang terurut membutuhkan waktu lebih cepat dibandingkan linked list yang tidak terurut. __T__ Menyisipkan data pada BST membutuhkan waktu lebih cepat dibandingkan pada array yang terurut. __T__ Heap tree dapat digunakan sebagai ilustrasi priority queue. Pada bagian kiri, tuliskan nomor jawaban dari istilah yang sesuai dengan definisi Tabel 1 __4_ a linked list in which the rear item refers back to the head item 1.linked list 2.object __9_ reduction of a problem to a smaller instance of the same problem 3.stack Hal 11 dari 15
  • 12. __12_ a repeated computation 4.circular list 5.loop _1__ a data structure of values linked together in memory by a chain of 6.primitive data references 7.queue 8.expression tree _3__ a data structure with last-in first-out behavior, supporting push and pop 9.recursion _10_ how to carry out a computation, may be implemented as a procedure 10. algorithm 11. reduction _7__ a data structure with first-in first-out behavior 12. iteration _15_ a predicate that becomes true when a computation ends 13. semantic 14. abstraction _5__ a programming language construct that supports iteration 15. termination _8__ a diagram showing the operators and operands of an expression condition _6__, such as numbers and symbols, that are built into the language Isian Singkat. Telusuri dua algoritma di bawah ini kemudian tuliskan nama proses yang dilakukan algoritma- algoritma tersebut. Procedure ProcessX(T:BinTree) Kamus S: stack N: BinTree Algoritma CreateEmpty(S); Push(S,T); While (not(Empty(S))) do Pop(S,N); If (N<>nil) then Output(info(N)); Push(S,right(N)); Push(S,left(N)); Algoritma tersebut melakukan proses: Preorder traversal Ekivalen terhadap proses DFS pada graf. Procedure ProcessY(T:BinTree) Kamus Q: Queue N: BinTree Algoritma CreateEmpty(Q); Insert(Q,T); While (not(Empty(Q))) do Remove(Q,N); If (N<>nil) then Output(info(N)); Insert(Q,left(N)); Insert(Q,right(N)); Hal 12 dari 15
  • 13. Algoritma tersebut melakukan proses: Level Order Traversal Ekivalen terhadap proses BFS pada graf. BAGIAN V : GRAPH (Notasi Bahasa C) [20] Berikut adalah program dalam bahasa C yang digunakan untuk merepresentasikan graph berarah dalam bentuk array dengan jumlah node maksimum 10. Adapun fungsionalitas utama yang dimiliki oleh program tersebut yaitu : a. Meminta jumlah node yang akan dipergunakan b. Menghubungkan antar node c. Menampilkan isi matrix d. Menampilkan keterhubungan antar node dengan node yang lain. Ilustrasi matrix beserta graph hasil dapat dilihat pada gambar berikut ini. Jumlah Node=4 Graph 1 2 3 4 1 0 0 0 0 2 0 0 0 0 3 0 0 0 0 4 0 0 0 0 1 2 3 4 1 0 1 1 0 2 0 0 0 0 3 0 1 0 0 4 1 0 0 0 Lengkapi program dibawah ini sehingga menghasilkan program yang utuh. Aturan : Tidak perlu menambahkan variabel ataupun baris program. #include<stdio.h> #include<conio.h> int max,graph[10][10],n1,n2; char pil; void main() { //inisialisasi array for(n1=0;n1<10;n1++) for(n2=0;n2<10;n2++) graph[n1][n2]=0; Hal 13 dari 15
  • 14. clrscr(); //masukkan jumlah node maksimum yang akan dipakai printf("nMasukan jumlah node : "); scanf("%d",&max); do { clrscr(); printf("nMenu :"); printf("n1. Hubungkan graph"); printf("n2. Cek Keterhubungan Node"); printf("n3. Display Array"); printf("n0. Exit"); printf("nPilihan : "); pil=getche(); if (pil=='1') { printf("nMasukkan Node awal : "); scanf("%d",&n1); n1--; printf("Masukan Node Akhir : "); scanf("%d",&n2); n2--; //cek jangan sampai node yang dipilih diatas nilai maksimum if ((n1<=max)&&(n2<=max)) { graph[n1][n2]=1; } } else if (pil=='2') { for (n1=0;n1<max;n1++) { printf("nNode %d terhubung dengan : ",n1+1); for (n2=0;n2<max;n2++) { if (graph[n1][n2]==1) printf("%d ",n2+1); } } } else if (pil=='3') { printf("n"); for (n1=0;n1<max;n1++) { for(n2=0;n2<max;n2++) Hal 14 dari 15
  • 15. printf("%d ",graph[n1][n2]); printf("n"); } } getche(); } while (pil!='0'); } Hal 15 dari 15