486 Matching Annotations
  1. Last 7 days
    1. 9Kelebihan Exception

      Kelebihan yang ga disebutin: bisa buat checked exception dan unchecked exception.

      check exception akan membuat program jadi lebih safe sehingga tiap method akan punya throw swhingga selalu ada handline error yg dicegah saat COMPILE void pop( ) throws Exception

      kalo unchecked gaada dan akan terjadi saat runtime void pop( )

    2. throw new SampleException("Other IOException", e);}

      kelas baru yang di extend dari Exception

    3. Method bisa merespon terjadinya exceptiondengan melempar exception lagi

      try, catch, di throw lagi

    4. rowable Class & Subclas
      • Error:
      • Menandakan masalah serius pada sistem (misal: kehabisan memori, stack overflow).
      • Biasanya tidak perlu dan tidak bisa ditangani oleh program.
      • Contoh: OutOfMemoryError, StackOverflowError.
      • Turunan dari class Error.

      • Exception:

      • Menandakan masalah yang masih bisa ditangani oleh program (misal: file tidak ditemukan, input salah).
      • Bisa ditangani dengan try-catch.
      • Contoh: IOException, NullPointerException, ArithmeticException.
      • Turunan dari class Exception.

      • Kesimpulan:

      • Error = masalah sistem, tidak untuk ditangani program.
      • Exception = masalah aplikasi, bisa dan sebaiknya ditangani program.

    Annotators

    1. 7Finally Block

      Bedanya finally sama ngecall fungsi setelah try-catch kelar:

      • finally:
      • Kode di dalam finally selalu dijalankan setelah try-catch, apapun hasilnya (ada error/tidak).
      • Cocok untuk hal yang harus dilakukan, misal: nutup file, bersihin resource.
      • Tidak perlu dipanggil manual, Java otomatis menjalankan finally.

      • Ngecall fungsi setelah try-catch:

      • Fungsi hanya dijalankan kalau program masih lanjut (tidak ada error fatal).
      • Kalau error tidak tertangani, kode setelah try-catch tidak dijalankan.
      • Harus dipanggil manual setelah blok try-catch.

      • Kesimpulan:

      • finally lebih aman untuk kode yang harus selalu dijalankan.
      • Ngecall fungsi setelah try-catch tidak selalu dijalankan, tergantung error.

      • Contoh kode: java public class ContohFinally { public static void main(String[] args) { try { System.out.println("Mulai try"); int hasil = 10 / 0; // Ini akan error (ArithmeticException) System.out.println("Setelah pembagian"); // Tidak dijalankan } catch (ArithmeticException e) { System.out.println("Terjadi error: " + e.getMessage()); } finally { System.out.println("Ini selalu dijalankan (finally)"); } System.out.println("Kode setelah try-catch-finally"); } }

      • Output:

        • "Mulai try"
        • "Terjadi error: / by zero"
        • "Ini selalu dijalankan (finally)"
        • "Kode setelah try-catch-finally"
      • Penjelasan:

        • Kode di finally tetap dijalankan walau ada error.
        • Kode setelah try-catch-finally juga dijalankan karena error sudah tertangani.
        • Kalau error tidak tertangani, kode setelah try-catch-finally tidak dijalankan, tapi finally tetap jalan.
    2. Finally Block

      dijalankan regardless error atau engga

    3. throw new SampleException(e)

      ini diteruskan, berarti pemanggil fungsi baru ini harus nge catch lagi

    4. IOException
      • FileNotFoundException dan IOException adalah bawaan Java (built-in).
      • Keduanya ada di package java.io.
      • FileNotFoundException adalah turunan dari IOException.
      • Digunakan untuk menangani error saat operasi file/input-output.
      • Tidak perlu membuat sendiri, cukup import dari Java.
      • Contoh import: java import java.io.FileNotFoundException; import java.io.IOException;
      • Kesimpulan:
      • Keduanya bawaan Java, bukan bikinan sendiri.
    5. FileNotFoundException
      • FileNotFoundException dan IOException adalah bawaan Java (built-in).
      • Keduanya ada di package java.io.
      • FileNotFoundException adalah turunan dari IOException.
      • Digunakan untuk menangani error saat operasi file/input-output.
      • Tidak perlu membuat sendiri, cukup import dari Java.
      • Contoh import: java import java.io.FileNotFoundException; import java.io.IOException;
      • Kesimpulan:
      • Keduanya bawaan Java, bukan bikinan sendiri.
    6. ystem.err.println("FileNotFoundException: "+ e.getMessage())

      sesimple dikasih tau terjadi error aja

    7. Try Block

      kalo gaada try, gabisa ada catch dan final

    8. catch and finally statements
      • try diisi kode utama yang diasumsikan berjalan normal/tanpa error.
      • Jika terjadi error/exception di dalam try, eksekusi langsung lompat ke catch.
      • catch menangani error yang terjadi di try.
      • finally (jika ada) selalu dijalankan, baik ada error atau tidak (biasanya untuk cleanup).
      • Dengan try-catch, kode utama jadi lebih bersih dan fokus pada alur normal, error ditangani terpisah.
      • Lebih rapi dibanding if-else yang harus cek error di setiap langkah.
      • try-catch cocok untuk kasus error yang tidak sering terjadi, atau error yang sulit diprediksi.
      • if-else lebih cocok untuk validasi sederhana yang bisa dicek sebelum proses utama.
      • Kesimpulan:
      • try-catch membuat kode lebih terstruktur dan mudah dibaca saat menangani error.
      • Error handling terpisah dari logika utama, tidak tercampur seperti di if-else.

    Annotators

    1. Exceptions Handler
      • return:
      • Setelah dieksekusi, langsung keluar dari method saat itu juga.
      • Nilai hasil return dikirim ke pemanggil (turun satu level di stack).
      • Proses berhenti di pemanggil, tidak lanjut ke atas lagi.
      • exception handler (throw):
      • Setelah throw, program mencari handler ke atas (naik di stack).
      • Jika tidak ada handler di method pemanggil, naik terus ke atas sampai ketemu handler atau sampai ke main.
      • Jika tidak ada handler sama sekali, program berhenti/error.
      • Kesimpulan:
      • return: keluar method, stack turun satu level, proses berhenti.
      • throw/exception: stack naik terus sampai ketemu handler atau sampai ke main.
    2. Setelah method melempar exception, runtimesystem akan mencari sesuatu untuk meng-handle itu (disebutexception handler)

      kalo yang biasa, bukan exception yang handle itu pemanggil fungsi. kalo exception ada exception handler

    3. hrowing an exception
      • return digunakan untuk mengembalikan nilai dari sebuah fungsi/method ke pemanggilnya.
      • Setelah return dieksekusi, fungsi langsung berhenti dan keluar.
      • throw digunakan untuk melempar (menghasilkan) error/exception.
      • Setelah throw dieksekusi, program langsung lompat ke blok penanganan error (catch/except), bukan ke pemanggil fungsi.
      • return = mengirim hasil, throw = mengirim error.
      • Contoh:
      • return 5; → fungsi selesai, hasilnya 5.
      • throw new Error("Terjadi error"); → fungsi berhenti karena error, program cari penanganan error.
      • return dipakai di fungsi normal, throw dipakai saat ada masalah/error.
    4. method tersebut akan menciptakan sebuahobjek dan dilempar ke runtime system

      object tersebut bernama exceptional object

    5. sebuah event yang terjadi saat eksekusiprogram, yang mengganggu alur normal dariinstruksi program

      artinya pengecualian, seharusnya jarang terjadi

    Annotators

  2. Apr 2025
    1. Contoh

      ini visibility dari pov alpha

    Annotators

    1. Packages
      • Package adalah cara mengelompokkan kode Java seperti class, interface, dan objek ke dalam satu wadah atau folder.
      • Tujuannya adalah untuk mengorganisasi kode agar lebih rapi dan mudah dikelola yang bisa diatur pula visibilitasnya dengan access modifier.
      • Proteksi akses: Package membantu mengatur visibilitas (aksesibilitas) antar kelas, misalnya dengan modifier seperti public, protected, atau default (package-private).

    Annotators

    1. int i = 500;float gpa = 3.65f;byte mask = 0xff;

      karna ketiganya primitif, java menyediakan class untuk ketiganya yaitu Number

      tambahan, float perlu akhiran f karena kalo ngga bakal dianggap double (dan akan error)

    2. char toUpperCase(char ch)char toLowerCase(char ch)toString(char ch)

      konversi

    3. isLowerCase

      apakah huruf kecil

    4. isUpperCase

      apakah huruf besar

    5. isWhiteSpace

      apakah spasi

    6. isDigit

      apakah digit 0-9?

    7. isLetter

      apakah alfabet

    8. ch = 'a';

      ch object a primitf

      nanti compiler akan melakukan boxing a jadi object baru di assign

    9. boolean equals(Object obj)

      membandingkan current object dengan object yang ada di parameter

    10. int compareTo(Byte anotherByte)int compareTo(Double anotherDouble)int compareTo(Float anotherFloat)int compareTo(Integer anotherInteger)int compareTo(Long anotherLong)int compareTo(Short anotherShort)

      perbandingan ke int dan hasil nya lebih besar,kecil, dll

    11. byte byteValue()short shortValue()int intValue()long longValue()float floatValue()double doubleValue()

      menghasilkan value dengan tipe datanya masing2 (disebelah paling kiri)

    12. MIN_VALUE atau MAX_VALUE

      ini number object juga

    13. Wrapper Class

      ini ada hierarki nya juga

    14. x+y

      x dan y tipe objek. penjumlahan hanya bisa dilakukan ke tipe primitf sehingga harus di unboxing dulu, baru bisa dijumlahkan

    15. 15

      ini juga

    16. 12

      ini konstanta primitif di assign ke x yang class Integer, maka harus di boxing sehingga 12 di bungkus ke kelas x, sehingga ga perlu instansiasi new dll

    17. primitif yang ada sedangkan objekyang diharapkan maka kompilator akanboxesprimitif

      contoh int di wrap ke int, float ke float, dll

    Annotators

    1. Erasure

      cara compiler menerapkan generic

    2. Kode berikut bisa digunakan

      buat write

    3. upper bound

      jadi yang tadi itu cuman upper bound

      somecage = lion/bfCage

      add itu beda lagi.

      upper bound cuman untuk baca/get doang

    4. omeCage.add(king); // compiler-time errorsomeCage.add(monarch); // compiler-time err

      masalahnya blm kelar 😊

    5. Apakah Box<Integer> atauBox<Double> boleh?

      gabisa karna supertypenya salah (berarti ini juga harusnya: ? extends Number)

    6. animalCage = lionCage; // compile-time erroranimalCage = butterflyCage

      ini gabisa karena lion ya harus ke lionCage, butterfly juga, kalo ini bisa, lion bisa jadi bfly berantakan lah.

      so harus presisi karena supertypenya bukan Cage<Animal> tapi Cage<? extends Animal>

    7. body

      ya ini bisa Double dll

    8. Integer

      nge pass anaknya bisa juga

    9. U extends Number & MyInterfac

      multiple interface

    10. extends Number

      dia boleh tetep bebas tapi dalam scope number (integer, double, float, dll)

    Annotators

    1. U

      intinya ini bakal menyesuaikan, compiler akan menentukan tipe generic itu gimana masukannya, kalo dikasus ini red berarti tipenya crayon.

      intinya U ini biar list nya bisa tipe object apa aja ga eksak saatu tipe doang

    2. Box.<Crayon>fillBoxes(red, crayonBoxes);Box.fillBoxes(red, crayonBoxes);

      ada 2 cara manggil

    3. Generic
      • Ini contoh type inference di Java, yaitu compiler menebak tipe generic otomatis
      • Ada method generic:<br /> java public static <U> void fillBoxes(U u, List<Box<U>> boxes)
      • Method ini menerima satu data bertipe U dan list berisi Box<U>
      • Dalam method, setiap box diisi data u dengan box.add(u)

      • Saat dipanggil:<br /> java Crayon red = ...; List<Box<Crayon>> crayonBoxes = ...;

      • red bertipe Crayon
      • crayonBoxes adalah list berisi Box<Crayon>

      • Ada dua cara panggil method:

      • Secara eksplisit:<br /> java Box.<Crayon>fillBoxes(red, crayonBoxes);
        • Kita sebutkan tipe genericnya (Crayon) secara langsung
      • Secara implisit:<br /> java Box.fillBoxes(red, crayonBoxes);

        • Compiler menebak sendiri bahwa U adalah Crayon
        • Karena red bertipe Crayon dan crayonBoxes bertipe List<Box\<Crayon>>
      • Manfaat type inference:

      • Lebih ringkas
      • Tidak perlu tulis tipe generic secara eksplisit
      • Compiler otomatis cocokkan tipe data yang dipakai

      • Intinya:

      • Java bisa menebak tipe generic dari parameter yang diberikan
      • Bikin kode lebih simpel dan bersih
    4. Integer

      ini T nya Integer

    5. T>

      type parameter

    6. Generic
      • Betul, class Box di sini dideklarasikan secara umum (pakai tipe Object)
      • Jadi, Box bisa menyimpan objek tipe apa saja (Integer, String, dll)
      • Tapi, saat ambil datanya, kita harus casting ke tipe asli (misal Integer)
      • Ini kurang aman, karena kalau salah casting bisa error saat runtime

      • Dengan generics, kita bisa buat Box yang khusus untuk tipe tertentu

      • Contoh:<br /> java Box<Integer> integerBox = new Box<>();
      • Java tahu Box ini hanya untuk Integer
      • Saat ambil data, tidak perlu casting lagi:<br /> java Integer someInteger = integerBox.get();
      • Lebih aman dan jelas tipe datanya
      • Intinya, generics bikin class lebih spesifik dan mengurangi error saat runtime
    7. Box
      • Betul, class Box di sini dideklarasikan secara umum (pakai tipe Object)
      • Jadi, Box bisa menyimpan objek tipe apa saja (Integer, String, dll)
      • Tapi, saat ambil datanya, kita harus casting ke tipe asli (misal Integer)
      • Ini kurang aman, karena kalau salah casting bisa error saat runtime

      • Dengan generics, kita bisa buat Box yang khusus untuk tipe tertentu

      • Contoh:<br /> java Box<Integer> integerBox = new Box<>();
      • Java tahu Box ini hanya untuk Integer
      • Saat ambil data, tidak perlu casting lagi:<br /> java Integer someInteger = integerBox.get();
      • Lebih aman dan jelas tipe datanya
      • Intinya, generics bikin class lebih spesifik dan mengurangi error saat runtime
    8. Integer someInteger = (Integer)integerBox.get()

      tapi kalo string bakal error disini

    9. integerBox.add(new Integer(10));

      ini Integer nya dianggap object, so kalo masukin string pun masih bisa

    10. Box integerBox = new Box()

      khusus integer doang

    11. Object

      nenek moyang dari seluruh tipe di java

    Annotators

    1. variable length array yang berisiserangkaian karakter

      diperlakukan speerti array yang punya panjang variabel yang berisi serangkaian karakter

    2. Mirip dengan String tapi bisa dimodifikasi secarainternalnya

      karena string immutable, kalo stringbuilder ga sehingga bisa dimanipulasi

    3. Integer.toString(i);String s4 = Double.toString

      method konversi ke string

    4. int i;String s1 = "" + i;

      string kosong + i dan di assign ke String s1 untuk konvert int ke string

    5. parseFloat

      konversi string -> float ini method static yang dipunyai class Float

    6. palindrome.length

      panjg kata

    7. imuttable

      gabisa diubah nilainya, kalo mau diubah maka dibuang dulu objeknya baru dibuat objek baru

    8. char[] helloArray = { 'h', 'e', 'l', 'l', 'o', '.’}

      buat array of char lalu di assign ke string

    9. String greeting = "Hello world!"

      langsung

    Annotators

    1. Deer d = new Deer();Animal a = d;Vegetarian v = d;Object o = d;

      Intinya: Tanpa baris-baris itu, class Deer tetap: subclass dari Animal implementasi dari Vegetarian subclass dari Object (secara implisit) Baris-baris itu hanya contoh bahwa polimorfisme di Java memungkinkan objek Deer diperlakukan sebagai: Animal Vegetarian Object

    2. Dynamic Binding

      basically dia akan pilih ngebind ke class yang mana saat runtime pake if else

    Annotators

    1. Bicycle

      bisa instansiasi jadi Bicycle karena ngeextend class itu

    2. bike01, bike02, bike03

      3 reference ke bicycle.

    3. super.printDescription();

      manggil dari outerclas

    4. public void printDescription(

      merupakan method dengan signature yang sama dengan parent classnya

    5. Polymorphism

      kemampuan sebuah objek untuk memerankan banyak bentuk

    6. Subclass

      bisa memerankan dirinya sendiri atau parent kelasnya

    7. Polymorphism

      kemampuan sebuah objek untuk memerankan banyak bentuk

    Annotators

    1. public abstract class GraphicObject

      gamasuk akal kita buat objek graphicobject tanpa tau objeknya apa (persegi atau apa)

    2. Kelas Abstrak: kelas yang tidak bisa diinstansiasi

      ini biasanya secara logika ada tapi gaada objek yang cocok untuk abstrak kelas tsb.

      gabisa dibuat objek untuk kelas ini.

      class Mobil { // atribut dan method }

      // instansiasi: Mobil m = new Mobil();

    3. kelas basisnya merupakan turunan darikelas yang sama

      misal ada 2 kelas basis, sebenernya di turunkan dari 2 kelas yang sama. di java gabisa juga?

    4. kelas yang diturunkandari 2 atau lebih kelas basis

      bahasa java ga mendukung multiple inheritance, bisanya di c++

    5. kelas turunan membuatulang (mendefinisikan ulang) method dari kelasbasis

      override akan gagal compile kalo ga semua method di redefine

    6. bisa memilihkonstruktor kelas basis yang akan dieksekusi

      karena bisa saja kelas basis punya konstruktor lebih dari satu

    7. super.printMethod(

      ini akan manggil method yang dari superclass, kalo bukan main, in heritance emg pake super

      super ini kalo bukan dalam main? betul

    Annotators

    1. implisit

      konstruktor yang tidak ber parameter

    2. Memanfaatkan atribut kelas basis

      karena atribut basis kelas pasti terwarisi ke subclass

    3. setHeight

      bisa tambah method baru

    4. super

      untuk meneruskan parameter yang ada dalam kurung ke parent class nya

    5. private int seatHeight

      field tambahan yang beda dari Bicycle

    6. elasturunan “is-a” kelas basis

      Misal: mountainbike itu isa/kindof bicycle

    Annotators

    1. iterator

      inner class

    2. even

      genap

    3. Instans inner class hanya exist dalam instansouter class-nya

      kita ga mungkin membuat instance inner class tanpa membuat outer class nya

    4. Inner class

      jatohnya mirip atribut/method dari outer class

    Annotators

    1. what about this?

      ini gabisa karna shapename bukan static

    2. can we do this?

      bisa karena classname itu atribut static

    3. Static Nested Class
      1. Inner Class Non-Static:
      2. Kelas ini adalah kelas yang didefinisikan di dalam kelas lain (outer class) dan tidak dideklarasikan sebagai static.
      3. Kelas ini memiliki akses ke semua metode dan atribut dari outer class, termasuk yang bersifat private. Artinya, inner class dapat menggunakan dan memodifikasi data dari outer class secara langsung.

      4. Static Nested Class:

      5. Kelas ini juga didefinisikan di dalam kelas lain, tetapi dideklarasikan sebagai static.
      6. Kelas ini tidak memiliki akses langsung ke metode atau atribut dari outer class, termasuk yang bersifat private. Untuk mengakses data dari outer class, Anda harus membuat objek dari outer class terlebih dahulu.

      Secara ringkas, perbedaan utama antara inner class non-static dan static nested class terletak pada aksesibilitas terhadap anggota dari outer class. Inner class non-static memiliki akses penuh, sedangkan static nested class tidak.

    4. static nested class diasosiasikandengan outer class-nya

      Static variable/method dimiliki oleh class bukan objek

    5. enkapsulasi

      nested class yang berada dalam class hanya dapat dikenali dalam class tersebut tidak bisa dari class luar

    6. NestedClass

      kita bisa mendefinisikan kelas dari outer class

    Annotators

  3. Mar 2025
    1. ackage-private

      default, hanya bisa diakses di package tersebut.

    2. protected

      diakses class inheritance package yang sama

    3. Member level

      di atributnya

    4. op level: public,package-private

      ada satu lagi default.

      Top level berarti di tipe class, interface, enum, dll

    Annotators

    1. d.ac.itb.stei.graphic

      kalo dari url dibalik

    Annotators

    1. pengelompokkan kelas daninterface ke dalam paket

      terus disini di satukan dalam satu package

    2. Contoh Packages

      ini sebelum di masukkan ke package

    3. Packages

      Ya, package di Java memang mirip dengan konsep library, tapi ada perbedaan penting:

      • Package adalah cara untuk mengorganisasi kode dalam proyek Java. Ini lebih seperti "folder" yang mengelompokkan kelas, interface, dll., agar rapi dan modular.
      • Library adalah kumpulan package atau kode yang sudah jadi, biasanya digunakan untuk menambahkan fitur tertentu ke proyek. Contoh library di Java adalah JAR file seperti java.util atau library eksternal seperti Apache Commons.

      Perbedaan utama: - Package: Fokus pada pengorganisasian kode dalam proyek. - Library: Kumpulan package atau kode yang bisa digunakan kembali di berbagai proyek.

      Contoh: - Package: java.util (berisi kelas seperti ArrayList, HashMap, dll.) - Library: Apache POI (digunakan untuk membaca/mengolah file Excel, yang terdiri dari banyak package).

      Jadi, package adalah bagian dari library, tapi tidak semua package adalah library. 😊

    Annotators

    1. Relatable

      di casting biar method is larger bisa dipanggil lagi.

      yg bisa di casting itu kalo implement Relatable

      Relatable r = new RectanglePlus()

      bisa masuk ke array realatable r[] sebenernya kalo depannya RectanglePlus pun bisa, tapi ini plusnya kalo ditengah tbtb di casting ganti, ex: r = CirclePlus() tetep works

    2. Interface

      Di Java, list, linkedlist dll itu pake Interface. Semua metode yang harus ada kaya insert delete dll pake interface di implementasikannya

    3. isLargerThan

      Disini itu bisa muncul masalah, RectanglePlus ketika dipanggil ke isLargerThen bisa runtime error kalo parameternya bukan panjang tapi point.

      Ganti parameternya dari isLargerThan(Object obj1) jadi (Relatable r1) biar p1 gabisa masuk dan lgsg compile error.

    4. Object

      Object biar semua bisa masuk di parameter ini

    5. Relatable

      di casting biar method is larger bisa dipanggil lagi

    6. Object

      Object biar semua bisa masuk di parameter ini

    Annotators

  4. Dec 2024
    1. isUnerLeft

      Apa sih perbedaan IsUnerLeft dengan IsSkewLeft?

      • isUnerLeft:
      • Hanya mengecek hubungan akar dan anak langsungnya.
      • Fokus pada apakah akar memiliki anak kiri saja, tanpa memedulikan keseluruhan struktur pohon.
      • Contoh: A / B

        • isUnerLeft(A): True, karena A hanya punya anak kiri (B).

        A / B / \ C D - isUnerLeft(A): Tetap True, karena hanya A yang dicek, dan A hanya punya anak kiri (B), tanpa memperhatikan apa yang ada di bawah B.


      • isSkewLeft:
      • Memeriksa seluruh pohon.
      • Pastikan semua simpul dalam pohon hanya memiliki anak kiri, secara rekursif.
      • Contoh: A / B / C
        • isSkewLeft(A): True, karena semua simpul hanya memiliki anak kiri. A / B \ C
        • isSkewLeft(A): False, karena B punya anak kanan (C).

      Kesimpulan:

      • isUnerLeft: Hanya fokus pada simpul akar dan anak langsungnya (lokal).
      • isSkewLeft: Mengevaluasi keseluruhan pohon biner secara rekursif, memastikan miring ke kiri sepenuhnya.
    2. Penting

      WOY BACA HIGHLIGHT IS UNER LEFT

    Annotators

    1. Penambahan Relasi Baru

      ini berarti untuk MK_DOS

    2. MK_DOS
      • relasi ⟨Dosen, MataKuliah⟩ {atau relasi mengajar}.
      • struktur nodenya, elemen satu nunjuk ke matkul, 2 ke dosen, 3 next
    3. relasi⟨Dosen, MataKuliah⟩

      INI MK_DOS

    4. Relasi sebagai list terpisah

      relasi hubungan mengajar dipisah

    5. MataKuliah

      Sebuah mata kuliah bisa diajar lebih dari 1 dosen

    6. Dosen
      • List biru: list dosen
      • List hijau: penghubung yang menunjukkan hubungan "mengajar" ke mata kuliah
      • List merah: mata kuliah

    Annotators

    1. Mendaftarkan anak yang baru lahir

      kinerja sama aja

    2. Alternatif-2

      kinerja lebih baik

    3. Alternatif-1:

      akan memberikan kinerja yg lebih baik untuk fitur ini

    4. if father(anak)=pegawai then

      ada kondisional cek apakah ortu nya sama dengan pegawai yang lagi di iterasi

    5. FirstPeg: ListPegFirstAnak: ListAnak

      first ada dua biji

    6. father: AdrPeg

      ada pointer ke ayah

    7. FirstPeg: ListPeg

      FirstPeg menunjuk ke pegawai pertama

    8. List Pegawai
      • Pegawai A akan mempunyai anak X dan Y, maka list anak akan kebawah muncul dari list pegawai
      • Jadi ada dua pointer, satu buat hubungan dan satu buat next. Tapi list disatukan
    9. List Pegawai dengan 3 elemen

      Kalo ini list anak dan pegawai dipisahkan, list anak akan menunjuk ke list pegawai yang sesuai. Jadi ada dua pointer, satu buat hubungan dan satu buat next.

    Annotators

  5. Local file Local file
    1. Regular graphs

      REgular graph dan graph lain yang ga ngestate jenis directed/undirected berarti APPLY KE KEDUA JENIS TERSEBUT.

    2. newGraphNode

      alokasi node

    3. 3

      ada 3 node yang masuk ke no 5

    4. 0

      tidak ada 1 busur yang masuk ke node 1

    5. Latihan Graph
      • karena simpul ada 5, maka punya leader list yang elemennya ada 5. trailer list itu kotak dua kbawah yang ada 4 dan 1 di paling bawah.

      • trailer list akan menyatakan seluruh busur yang menghubungkan antara node tersebut ke node yang lain

      • contohnya node 1, nunjuk ke 2 dan 3. maka akan punya 2 trailer list yang menunjuk ke 2 dan 3
    6. Simpul dan busur disimpan sebagai objek/record yang memuat informasi tentangsimpul/busur tersebutSetiap simpul menyimpan list dari busur yang terhubung dengannya

      meyimpan simpul dan list simpul yang terhubung dengannya

    7. node

      jumlah simpul ada 6, maka node ada 6

    8. node

      karna banyak node 6, maka matriks nya 6x6

    9. list of nodes

      menghasilkan list of node yang berisi daftar simpul yang bertetangga dengan v

    10. v1, v2

      parameter

    11. [vs undirected graphs]

      kebalikan dari undirected graph (ga ada arah), a->k k->a diasumsikan sama aja

    Annotators

    1. char *s = "(A()())";

      contoh string

    2. (*idx)++;

      setelah selesai buat phon kanan akan menunjuk kurung tutup, dan harus di advance lagi

    3. BuildTreeFromString(&LEFT(*t),st,idx);BuildTreeFromString(&RIGHT(*t),st,idx);

      kalo udh ketemu kurung buka sudah siap memanggil fungsi yang sama dengan parameter left dari T, setelah left terbentuk panggil dengan parameter right

    4. (*idx)++;

      maju ke idx slanjutnya, dalam representasi list ini setelah abjad adalah karakter kurung buka,

    5. t = newTreeNode(st[*idx])

      ciptakan node dengan abjad yang ditunjuk idx

    6. else

      abjad

    7. (*idx)++

      mirip ADV

    8. int *idx

      idx menunjuk ke index dari string st, index akan berada di awal string. seiring dipanggilnya void yg sama, idx bergerak ke kanan dan pohon dibangun secara rekursif

    9. char *st

      string yg digunakan

    10. start

      yg tadi ya jadi diluar build tree

    11. BuildTree(&(LEFT(*t)));BuildTree(&(RIGHT(*t)))

      akan memanggil prosedur yg sama dengan parameter Left dari T dan setelah selesai untuk Right dari T.

    12. else

      abjad

    13. BuildTree

      start mesin karakter akan dipanggil oleh prosedur yang memanggil build tree (di kode lain sblm fungsi ini)

    14. Struktur data yang digunakan adalah tree biasa (tidak memerlukan pointer keBapak)

      dalam typedef gaada parent: Address

    15. *t = ptr;

      currentParrent == Nil artinya ptr akan menjadi akar dari pohon kita

    16. currParent != NIL

      awal pembangunan pohon

    17. currParent = PARENT(CurrParent);

      naik

    18. if (c1 != '(') {

      sebenarnya sudah selesai dengan subpohon kanan, waktunya naik

    19. insKi = ( c1 != ')')

      kondisi insertkiri, C1 != ')' kalo kanan berarti sama dengan

    20. default

      abjad

    21. insKi

      apakah node akan disisipkan sebagai subpohon kiri atau subpohon kanan

    22. ElType x

      valuenya x

    23. newTreeNode

      alokasi

    24. dibutuhkan informasi karakter sebelumnya → karena itu digunakan mesin couple (C1, CC)

      jadi ada dua window di mesin karakter (mesin couple)

    25. parent: Address

      TAMBAHAN

    26. (K()())))

      BARIS KEDUA

    27. (J()()))

      subpohon kanan DIBARIS KEDUA

    28. Contoh - 2IF2110/IF2111 Pohon Biner (Bagian 2) 15(A(B(C(D()())(E()()))

      pokonya kalo baris pertama selalu kiri, max ada 2 baris dan di baris kedua itu sub pohon kanan

    29. (C()())

      subpohon kanan A

    30. (B()())

      subphon kiri A

    31. ()

      sub phon kanan kosong

    32. ()

      subpohon kiri kosong

    33. q↑.info.count ← p↑.info.count

      janlup ini juga

    34. q↑.info.key ← p↑.info.key { salin info p ke q }

      ketika dah ditemukan anak terbesar

    35. p↑.right  NIL: delNode(p↑.right)

      supaya dapat anak terbesar

    36. delNode(q↑.left)

      akan mencari anak terbesar dari subpohon kiri yang dimiliki oleh q

    37. isUnerLeft(q) : p ← q↑.left

      q punya subpohon kiri, set p jadi kiri dari q (anak dari subpohon kiri dari q akan dimasukkan kedalam p)

    38. isUnerRight(q): p ← q↑.right

      q punya subpohon kanan, set p jadi right dari q (anak dari subpohon kanan dari q akan dimasukkan kedalam p)

    39. depend on q

      cek apakah q dgn kondisi dibawah

    40. isOneElmt(q) : p ← NIL

      kalo daun, set p jadi NIL

    41. x.key < p↑.info.key : delBTree(p↑.left, x)

      kiri mas

    42. input x: ElType

      node yang akan dihapus

    43. DelBTree(p,10)

      copy nilai 8 ke 10 lalu hapus node 8

    44. DelBTree(p,5)

      sama, node 3 dicopy ke posisi 5, lalu yg node 3 dihapus

    45. DelBTree(p,15)53 813181013

      lebih rumit karena 13 harus dipindah menggantikan posisi node bervalue 15, caranya 1. copy nilai node 13 ke 15 2. hapus node 13

    46. x.key < p↑.info.key : insSearchTree(x, p↑.left)x.key > p↑.info.key : insSearchTree(x, p↑.right)

      p itu akar, kiri kalo lebih kecil dari p, kanan kalo lebih gede dari p

    47. x.key = p↑.info.key : p↑.info.count ← p↑.info.count + 1

      kalo sama (muncul lebih dari sekali) count di increment

    48. input x: ElType

      value dari node

    49. insSearchTree

      melakukan insert node pada BST

    50. Banyak kemunculan suatunilai key disimpan dalam field “count”

      kalau key muncul > 1 ada field count yang akan mencatat banyaknya kemunculan nilai tersebut

    51. Nilai simpul (key)

      value

    52. • semua simpul pada subpohon kiri < Akar p• semua simpul pada subpohon kanan >= Akar p

      urutan isi elmen itu kiri < akar <= kanan

    53. Subpohon kiri dan subpohon kanan merupakan BST

      jadi definisi rekursif

    54. p

      pohon biner

    55. p↑.left ← l; p↑.right ← r

      Menyambungkan dengan elemen akar yang dibuat setelah subpohon terbuat

    56. nR ← n – nL - 1
      • 1 (akar)
    57. if (p  NIL)

      alokasi berhasil

    58. nL, nR

      banyak node di sisi kiri L dan sisi kanan R

    59. if (n = 0) then { Basis-0 }

      basis0

    60. n: integer

      banyak node yang akan dibuat

    Annotators