of 24/24
MODUL PRAKTIKUM ALGORITMA DAN PEMROGRAMAN II Tim Penyusun: Dosen Teknik Informatika JURUSAN TEKNIK INFORMATIKA FAKULTAS TEKNIK UNIVERSITAS PALANGKARAYA 2015

Algoritma Pemrograman 2

  • View
    273

  • Download
    8

Embed Size (px)

Text of Algoritma Pemrograman 2

  • MODUL PRAKTIKUM

    ALGORITMA DAN PEMROGRAMAN II

    Tim Penyusun:

    Dosen Teknik Informatika

    JURUSAN TEKNIK INFORMATIKA

    FAKULTAS TEKNIK

    UNIVERSITAS PALANGKARAYA

    2015

  • 1

    MODUL I

    DASAR PEMROGRAMAN BERORIENTASI OBJEK

    I. TUJUAN

    Setelah menyelesaikan modul ini, mahasiswa diharapkan mampu:

    memahami dasar-dasar pemrograman berorientasi obyek

    Memahami enkapsulasi

    membuat kelas dan objek

    II. DASAR TEORI

    Perbedaan pemrograman tradisional dan berorientasi objek adalah pada

    cara menelesaikan suatu permasalahan. Pada pemrograman tradisional dalam

    memecahkan suatu masalah, masalah akan dibagi menjadi fungsi-fungsi yang

    lebih kecil, sedangkan pada pemrograman berorientasi objek (PBO) setiap

    masalah diselesaikan dengan cara dibagi ke dalam objekobjek.

    Pada PBO dilakukan pembungkusan data (attributes) dan fungsi (behavior)

    ke paket yang disebut kelas. Attributes merupakan data yang menggambarkan

    status internal sebuah objek dan biasanya merupakan member variables pada

    C++, tidak dapat diakses dari luar (enkapsulasi), dan juga sebagai state.

    Methods merupakan fungsi yang mengakses status internal sebuah objek dan

    biasanya merupakan member functions pada C++, dapat diakses dari luar,

    memanipulasi atribut, dan disebut juga behavior. Berikut ini merupakan

    gambaran mengenai objek.

    Kelas (Class) terdiri dari model objek yang memiliki atribut (data

    members) dan Behaviors (member functions), dan Member functions yaitu

    Methods yang dipanggil sebagai response terhadap pesan. Kelas didefinisikan

    dengan keyword class.

    Mode Akses akses yang ada pada kelas ada tiga yaitu private yang

    merupakan default mode akses dan dapat diakses oleh member functions, public

  • 2

    yang dapat diakses oleh setiap Accessible fungsi dalam program, dan protected

    yang biasanya digunakan untuk pewarisan .

    Fungsi Constructor merupakan member function khusus yang

    menginisialisasi data members dan memiliki nama yang sama dengan nama kelas.

    Fungsi Constructor dipanggil saat membuat objek dari kelas dan tidak memiliki

    tipe balikan.

    Member functions yang didefinisikan di luar kelas dilakukan dengan

    menggunakan binary scope resolution operator (::) yang berfungsi untuk

    mengikat nama fungsi ke nama kelas dan mengindentifikasi fungsi dari suatu

    kelas tertentu.

    Berikut ini merupakan format dari member functions. NilaiBalikan NamaKelas::NamaFungsi( ){

    }

    Member functions yang didefinisikan di dalam kelas tidak membutuhkan scope

    resolution operator dan nama kelas

    III. LANGKAH KERJA

    1. Buatlah program seperti di bawah ini!

    #include

    #include

    class Sepeda {

    public:

    Sepeda(int, int, int);

    void mengubahPutaran(int);

    void mengubahGir(int);

    void mengerem();

    void tampilInfo();

    private:

    int kecepatan;

    int putaran;

    int gir;

    };

    Sepeda::Sepeda(int k, int p, int g)

    {

    kecepatan = k;

    putaran = p;

    gir = g;

    }

    void Sepeda::mengubahPutaran(int p)

    {

    putaran = p;

    }

    void Sepeda::mengubahGir(int g)

    {

    gir = g;

    }

    void Sepeda::mengerem()

  • 3

    {

    cout

  • 4

  • 5

    MODUL II

    PEWARISAN

    I. TUJUAN

    Setelah menyelesaikan modul ini, mahasiswa diharapkan mampumembuat

    kelas baru dari kelas yang sudah ada dengan pewarisan

    II. DASAR TEORI

    Dalam PBO, kita mengambil realita kehidupan sehari-hari. Kita melakukan

    pengamatan bahwa manusia secara alami sering melakukan pengelompokan atas objek

    atau benda.Sejauh ini kita mengetahui cara untuk melakukan pengelompokan

    pengelompokan atas objek-objek yang serupa (menjadi kelas objek).

    Selain melakukan katagorisasi terhadap objek yang memiliki sekumpulan atribut

    dan perilaku yang sama, manusia sering melakukan pengelompokan terhadap objek yang

    memiliki kesamaan atas beberapa (tidak semua) atribut/perilaku. Contoh:

    Pengelompokan atas kendaraan bermotor, kemudian menggrupkannya berdasarkan suatu

    tipe atau jenis (mobil, truk, sepeda motor, dll.). Setiap subkatagori ini merupakan kelas

    atas objek-objek yang serupa.

    Ada beberapa karakteristik yang di-share oleh semua kelompok. Relasi antar

    kelas-kelas ini disebut dengan relasi is-a. Dalam setiap kasus, objek yang

    dikelompokkan bersama dalam satu sub-katagori merupakan anggota dari kategori yang

    lebih umum.Contohnya adalah seperti di bawah ini.

    Mobil adalah (is-a) kendaraan bermotor.

    Truk adalah (is-a) kendaraan bermotor

    Sepeda Motor adalah (is-a) kendaraan bermotor

    Objek yang dikelompokkan dalam satu kelas men-share sekumpulan atribut dan

    perilaku. Jadi, seluruh objek kendaraan bermotor memiliki sekumpulan atribut dan

    perilaku yang juga dimiliki oleh objek dari mobil. Keterkaitan antar kelas dalam relasi

    is-a berasal dari kenyataan bahwa sub kelas memiliki atribut dan perilaku yang dimiliki

    kelas induk, ditambah atribut dan perilaku yang dimiliki oleh sub kelas tersebut.

    Superclass (kelas dasar atau kelas induk) merupakan kelas yang lebih general

    dalam relasi is-a. Subclass ( kelas turunan atau kelas anak) merupakan kelas yang

    lebih spesifik dalam relasi is-a. Objek yang dikelompokkan dalam sub kelas memiliki

    atribut dan perilaku kelas induk, dan juga atribut dan perilaku tambahan. (Jadi, kumpulan

    atribut dan perilaku sub kelas lebih besar dari super kelas-nya). Relasi is-a antar

    superclass dan subclasses-nya disebut dengan pewarisan atau inheritance.

    Subclass mewarisi suatu superclass (atau juga bisa dikatakan sebuah subclass

    turunan dari suatu superclass) karena reusabilitas Perangkat Lunak, membuat kelas

    baru (kelas turunan) dari kelas yang sudah ada (kelas dasar), kelas turunan mewarisi kelas

    induk yang mendapatkan data dan perilaku, merupakan bentuk spesial dari kelas induk,

    dan diperluas dengan perilaku tambahan,

    Pewarisan ada dua jenis yaitu pewarisan tunggal dan pewarisan jamak. Pada

    protected access, protected members dapat diakses oleh member kelas dasar, friend kelas

  • 6

    dasar, member kelas turunan, dan friend kelas turunan. Kelas turunan dapat

    merujuk/mengakses langsung public dan protected data member kelas induk dengan

    menggunakan nama atribut yang yang diakses.

    III. LANGKAH KERJA

    1. Buatlah program seperti di bawah ini!

    #include

    #include

    class Point {

    public:

    Point(float = 0.0, float = 0.0);

    void cetakPoint();

    protected:

    float x,y;

    };

    Point::Point(float a, float b)

    {

    cout

  • 7

    Cylinder(float h = 0.0, float r = 0.0, float a = 0.0, float b

    = 0.0);//konstruktor

    float area();

    float vol();

    void cetakPoint();

    protected:

    float height,l,v;

    };

    Cylinder::Cylinder(float h, float r, float a, float b)

    : Circle(r, a, b)

    {

    cout

  • 8

    MODUL III

    POLIMORFISME

    I. TUJUAN

    Setelah menyelesaikan modul ini, mahasiswa diharapkan mampu membuat

    polimorfisme.

    II. DASAR TEORI

    PolimorfismeMemiliki arti banyak bentuk, melakukan hal yang sama untuk

    berbagai data yang berbeda, mengirimkan pesan yang sama ke berbagai objek yang

    berbeda karena tiap objek memberi respons dengan cara yang berbeda. Berikut ini

    merupakan contoh polimorfisme.

    Polimorfisme memiliki syarat-syarat sebagai berikut:

    Ada hirarki pewarisan

    Kelas dalam hirarki pewarisan harus memiliki fungsi virtual (virtual method) dengan

    signature yang sama

    Menggunakan pointer atau rujukan ke kelas induk. Pointer digunakan untuk

    memanggil fungsi virtual

    Polimorfisme dapat diimplementasikan dengan menggunakan dasar function

    overriding (melakukan redefinisi suatu fungsi di kelas anak, fungsi yang di-override

    memiliki signature sama, signature sama : tipe balik, nama fungsi, parameter sama) dan

    pewarisan.

    Suatu kelas disebut abstrak apabila memiliki minimal satu fungsi abstrak.Fungsi

    abstrak merupakan fungsi yang tidak memiliki definisi (hanya deklarasi

    fungsi)/menggunakan fungsi virtual (pure virtual).

    virtual balikan namaFungsi (parameter) = 0

    III. LANGKAH KERJA

    1. Buatlah program seperti di bawah ini!

    #ifndef MANUSIA_H

  • 9

    #define MANUSIA_H

    class Manusia {

    public:

    virtual void Hello();

    };

    class Pelajar : public Manusia {

    public:

    void Hello();

    };

    class Pegawai : public Manusia {

    public:

    void Hello();

    };

    #endif

    Manusia.cpp

    #include "Manusia.h"

    #include

    void Manusia::Hello() {

    cout

  • 10

    public:

    virtual float cariLuas()=0;

    };

    class Segiempat : public Bentuk2D {

    protected:

    float panjang, lebar;

    public:

    Segiempat(float, float);

    float cariLuas();

    };

    class Lingkaran : public Bentuk2D {

    private:

    float jejari;

    public:

    Lingkaran (float);

    float cariLuas();

    };

    class Segitiga : public Bentuk2D {

    private:

    float alas, tinggi;

    public:

    Segitiga(float, float);

    float cariLuas();

    };

    #endif

    Bentuk2D.cpp

    #include

    #include "Bentuk2D.h"

    Segiempat::Segiempat(float p, float l)

    {

    panjang = p;

    lebar = l;

    }

    float Segiempat:: cariLuas()

    {

    cout

  • 11

    float Segitiga:: cariLuas()

    {

    cout 3 );

    switch ( pilihan ) {

    case 1: b2d = new Segiempat(4.0, 5.0); break;

    case 2: b2d = new Lingkaran (7.0); break;

    case 3: b2d = new Segitiga (2.0, 10.0); break;

    case 4: loop = false;

    }

    b2d->cariLuas();

    delete b2d;

    return 0;

    }

    3. Buatlah program seperti di bawah ini!

    shape.h

    #ifndef SHAPE_H

    #define SHAPE_H

    class Shape {

    public:

    virtual double area() const { return 0.0; }

    virtual double volume() const { return 0.0; }

    virtual void printShapeName() const = 0;

    virtual void print() const = 0;

    };

    #endif

    point1.h

    #ifndef POINT1_H

    #define POINT1_H

    #include

    #include "shape.h"

    class Point : public Shape {

    public:

    Point( int = 0, int = 0 );

    void setPoint( int, int );

  • 12

    int getX() const { return x; }

    int getY() const { return y; }

    virtual void printShapeName() const { cout

  • 13

    void Circle::print() const

    {

    Point::print();

    cout

  • 14

    MODUL IV

    RELASI KELAS

    I. TUJUAN

    Setelah menyelesaikan modul ini, mahasiswa diharapkan mampu membuat

    berbagai jenis relasi antara kelas.

    II. DASAR TEORI

    Jenis Relasi antar kelas terdiri dari pewarisan, agregasi, asosiasi. Pewarisan

    merupakan hubungan antar satu kelas dengan kelas lain dalam suatu hirarki kelas induk

    dan kelas turunan. Superclass (kelas dasar atau kelas induk) merupakan kelas yang

    lebih general dalam relasi is-a. Subclass ( kelas turunan atau kelas anak)

    merupakan kelas yang lebih spesifik dalam relasi is-a. Objek yang dikelompokkan

    dalam sub kelas memiliki atribut dan perilaku kelas induk, dan juga atribut dan perilaku

    tambahan. Kita mengatakan subclass mewarisi suatu superclass (atau juga bisa

    dikatakan sebuah subclass turunan dari suatu superclass).

    Agregasi merupakan hubungan antar kelas yang menyatakan suatu kelas

    merupakan bagian dari kelas yang lain atau hubungan antar kelas yang menyatakan suatu

    kelas memiliki kelas lain [sebagai atribut]. Agregasi merupakan relasi has a. Contoh:

    Mobil memiliki mesin

    Fakultas terdiri atas jurusan

    Rumah memiliki dapur

    Mobil, Fakultas dan Rumah dinyatakan sebagai kelas agregat.Mesin, Jurusan dan Dapur

    merupakan kelas penyusun.

    Kardinalitas menyatakan jumlah objek penyusun yang terlibat dalam

    pembentukan relasi agregasi.Suatu KelasAgregat dibentuk dari beberapa (disimbolkan

    dengan *) objek Kelas Penyusun.

    Asosiasi menggambarkan hubungan struktural antar kelas.Setiap kelas memiliki

    kedudukan yang sama (tidak merupakan bagian dari kelas lain).Pada saat merancang

    relasi antar kelas, ada dua hal yang perlu diperhatikan yaitu berapa objek yang terlibat

    dari masing-masing kelas yang ber-relasi dan apakah relasi tersebut bersifat wajib

    (mandatory) atau opsional.

    III. LANGKAH KERJA

    1. Buatlah program seperti di bawah ini!

    agregasi.cpp

    #include

    #include

    class Titik

    {

    private:

    float sbX, sbY;

  • 15

    public:

    Titik()

    {

    sbX = sbY = 0.0f;

    }

    Titik(float x, float y)

    {

    sbX = x; sbY = y;

    }

    void posisiTitik()

    {

    cout

  • 16

    public:

    MataKuliah(char* kode, char* nm, int sks)

    {

    kodeMK = kode;

    namaMK = nm;

    sksMK = sks;

    }

    void cetakMK()

    {

    cout

  • 17

    MODUL V

    OPERATOR OVERLOADING DAN EXCEPTION HANDLING

    I. TUJUAN

    Setelah menyelesaikan modul ini, mahasiswa diharapkan mampu:

    mengimplementasikan Exception Handling

    mengimplementasikan operator overloading

    II. DASAR TEORI

    Jarang sekali sebuah program dibuat dapat berjalan dengan sukses pada saat

    pertama sekali dijalankan. Kesalahan sering terjadi pada saat perancangan atau

    pemrograman.Kesalahan tersebut dikatagorikan menjadi tiga bagian, yaitu:

    syntax errors mengakibatkan kesalahan kompilasi.

    semantic errors program menghasilkan keluaran yang tidak sesuai dengan harapan.

    runtime errors kebanyakan mengakibatkan terminasi program secara tidak normal

    atau bahkan sistem crash

    Berikut ini merupakan contoh runtime error.

    Pembagian bilangan dengan nol.

    Akses elemen yang berada di luar indeks array

    Menggunakan nilai negatif untuk ukuran array

    Setiap program dalam berada dapat suatu kondisi yang tidak normal Error

    Conditions.Program yang baik harus dapat menangani kondisi ini.Exception merupakan

    suatu keadaan yang disebabkan oleh runtime error dalam program. Memungkinkan

    kesalahan ditangani tanpa harus mengotori program (dengan rutin yang menangani

    kesalahan). Memungkinkan pemisahan penanganan kesalahan dengan program utama

    (main business logic).

    Suatu fungsi dapat memberi tanda suatu kesalahan dengan melempar suatu

    exception throws. Fungsi pemanggil dapat menyerahkan kendali ke exception handler

    dengan menangkap (catching) exception - try, catch. Berikut ini merupakan blok try-

    catch.

    try{

    instruksi yang berpotensi menghasilkan exception

    }

    catch(tipe_exception e){

    instruksi untuk menangani exception

    }

    Seperti bahasa tingkat tinggi yang lain, C++ memiliki beberapa operator +, -, \, *,

    , &, [], =, dll. Operator ini telah didefinisikan (pre-defined) dan digunakan untuk

    tipe tertentu. Misal: operator + hanya dapat digunakan untuk tipe dasar seperti integer,

    float, dll. Kadang-kadang diperlukan untuk meredefinisi operator ini untuk digunakan

    untuk tipe bentukan. Misalnya Kelas Complex a dan b, apakah bisa dilakukan a+b?

  • 18

    Manipulasi bilangan kompleks lebih mudah apabila dapat memperlakukannya seperti

    pada tipe dasar. Sehingga dapat dilakukan, hal-hal seperti

    Complex a(2,4);

    Complex b(4,5);

    . . .

    Complex c = a + b;

    Bukannya

    Complex a(2,4);

    Complex b(4,5);

    . . .

    Complex c = a.tambah(b);

    Operator yang digunakan pada kelas dalam C++ dinyatakan dalam pemanggilan

    fungsi. Jenis operator ada dua yaitu operator uner dan operator biner.Operator uner hanya

    membutuhkan satu argument,misalnya ++, --, ~. Operator biner membutuhkan dua

    argument, misalnya +, -, /, *.

    Operator dalam C++ diimplementasikan dengan pemanggilan fungsi. User dapat

    meredefinisikan arti suatu operator pada suatu kelas dengan melakukan redefinisi method

    yang berkaitan dengan operator tersebut. Tidak semua operator bisa di-overload. Ada

    batasan-batasan yang bisa dilakukan dalam operator overloading.

    Berikut ini merupakan daftar operator yang dapat di-overload dan yang tidak

    dapat di-overload.

    III. LANGKAH KERJA

    1. Buatlah program seperti di bawah ini!

    Complex.cpp #include

    #include

    class complex

    {

    double real;

    double imaginer;

    Operator yang tidak dapat di-overload

    . .* :: ?: sizeof

    Operator yang dapat di-overload

    + - * / % ^ & |

    ~ ! = < > += -= *=

    /= %= ^= &= |= > >>=

    [] () new delete

    new[] delete[]

  • 19

    public:

    complex(double re=0, double im=0)

    {

    real = re;

    imaginer = im;

    }

    complex operator-()

    {

    complex result;

    result.real = -real;

    result.imaginer = -imaginer;

    return result;

    }

    complex operator+(complex c)

    {

    complex result;

    result.real = real + c.real;

    result.imaginer = imaginer + c.imaginer;

    return result;

    }

    complex operator-(complex c)

    {

    complex result;

    result.real = real - c.real;

    result.imaginer = imaginer - c.imaginer;

    return result;

    }

    void display()

    {

    cout

  • 20

    MODUL VI

    TEMPLATE CLASS

    I. TUJUAN

    Setelah menyelesaikan modul ini, mahasiswa diharapkan mampu

    mengimplementasikannya template fungsi dan kelas.

    II. DASAR TEORI

    Template merupakan cara untuk mendefinisikan fungsionalitas generik pada

    parameter tanpa perlu mendeklarasikan tipenya. Abstraksi definisi fungsi dalam bentuk

    pseudo code sehingga tipe yang digunakan dapat diganti merupakan konsep dari

    template. Penerapan template pada fungsi akan menghasilkan definisi fungsi. Berikut ini

    merupakan langkah-langkah untuk mendefinisikan fungsi, yaitu:

    1. Mulai dengan keyword template

    2. Nyatakan dalam kurung segitiga, nama placeholder untuk tipe yang akan digunakan.

    3. Ikuti dengan nama fungsi

    4. Ikuti nama fungsi dengan daftar parameter.

    III. LANGKAH KERJA

    1. Buatlah program seperti di bawah ini! #include

    template

    void CetakArray(T *array, const int count)

    {

    for (int i=0; i

  • 21

    2. Buatlah template untuk melakukan insertion sort sehingga dapat digunakan

    untuk masukan dengan tipe data integer, float, dan double!

    Algoritma insertion sort adalah sebagai berikut:

    DEKLARASI

    Var

    I, J, N : integer

    X : integer

    DESKRIPSI

    For I 2 to N Do X Larik[I] Larik[0] X J I 1 While X

  • 22

    TATA TERTIB DAN TATA LAKSANA PRAKTIKUM

    TATA TERTIB

    1. Praktikan WAJIB mengikuti semua modul praktikum. 2. Praktikan hanya boleh tidak mengikuti praktikum 1 (satu) kali DENGAN

    ATAU TANPA SURAT IZIN dari jumlah pertemuan praktikum.

    3. Praktikan yang berhalangan mengikuti praktikum, diwajibkan melaporkan ke dosen praktikum untuk menentukan jadwal praktikum sebagai

    pengganti jadwal yang berhalangan.

    4. Praktikan yang lebih dari 1 (satu) kali tidak mengikuti praktikum, tidak diperbolehkan untuk mengikuti praktikum untuk modul-modul praktikum

    selanjutnya dan NILAI AKHIR PRAKTIKUM adalah NOL.

    5. Praktikan diberikan toleransi waktu keterlambatan selama 15 menit dan tidak ada penambahan waktu praktikum.

    6. Tidak diperbolehkan saling bekerja sama. 7. Dilarang menggunakan kaos oblong dan sendal selama praktikum. Bagi

    yang melanggar poin ini, tidak diperbolehkan mengikuti praktikum.

    TATA LAKSANA :

    1. Sebelum praktikum di mulai, setiap praktikum wajib mengumpulkan LAPORAN HASIL PRAKTIKUM modul sebelumnya.

    2. Jika praktikan tidak melaksanakan Tata Laksana poin 1, maka tidak diperbolehkan mengikuti praktikum.

    3. Setiap modul praktikum, akan dilakukan Pre-Test. 4. Format laporan meliputi :

    Laporan Hasil Praktikum :

    Halaman Depan

    BAB I. Tujuan dan Landasan Teori

    BAB II. Langkah Kerja

    BAB III. Pembahasan

    BAB IV. Kesimpulan

    BAB V. Daftar Pustaka

    BAB VI. Lampiran (disertai laporan rencana praktikum modul sebelumnya)

    5. Format Penulisan

    Spasi : 1,5

    Font : Times New Roman

    Font Size : 12

    Margins : Top 3, Left 4, Right 3, Bottom 3

    Kertas : A4

  • 23

    6. Penilaian Laporan Hasil Praktikum

    BAB I. Tujuan dan Landasan Teori Nilai 20

    BAB II. Langkah Kerja Nilai 10

    BAB III. Pembahasan Nilai 40

    BAB IV. Kesimpulan Nilai 15

    BAB V. Daftar Pustaka Nilai 5

    BAB VI. Lampiran Nilai 10 Total 100

    7. Praktikan yang mengabaikan format penulisan poin 5, akan dikurangi 5 setiap kesalahan.

    8. Penilaian Akhir Praktikum :

    Pre-Test : 15 %

    Praktikum : 30 %

    Laporan Praktikum : 20 %

    Responsi : 35 %

    Total 100 %

    9. Penilaian Akhir Mata Kuliah Algoritma dan Pemrograman II :

    Tugas : 20 %

    UTS : 30 % 50 %

    Praktikum : 50 %

    UAS : 50 %

    Nilai Akhir : 100 %