012812 Modul 3 Praktikum Teknik Komputasi EE

16
MODUL 3 PROGRAM TERSTRUKTUR 3. Struktur Pemrograman Pada praktikum 1 dan 2, telah dipelajari tentang teknik penulisan program Scilab yang berupa script maupun fungsi dengan bantuan editor Scilab (Scinotes). Penulisan program dengan cara tersebut menjadi sangat efektif jika program yang ditulis sudah mulai kompleks. Dengan menggunakan script serta fungsi, pemrogram dapat menyelesaikan penulisan program lebih dahulu, baru kemudian mengeksekusi setiap baris program tersebut dan menganalisisnya. Tingkat kompleksitas suatu program dapat diukur dari strukturnya. Semakin banyak kombinasi struktur pada program, maka semakin tinggi kompleksitasnya. Pada umumnya, kompleksitas suatu program menggambarkan tingkat kompleksitas dari kasus yang harus diselesaikan oleh program tersebut. Secara garis besar, struktur program dikelompokkan menjadi tiga struktur utama yaitu Struktur berurutan Struktur percabangan Struktur pengulangan 3.1. Struktur Berurutan Tabel 3.1. Struktur Berurutan Format Diagram Alir Mulai perintah ke 1 perintah ke 2 perintah ke 3 perintah ke ...n Selesai

Transcript of 012812 Modul 3 Praktikum Teknik Komputasi EE

  • MODUL 3 PROGRAM TERSTRUKTUR

    3. Struktur Pemrograman

    Pada praktikum 1 dan 2, telah dipelajari tentang teknik penulisan program Scilab yang berupa script maupun fungsi dengan bantuan editor Scilab (Scinotes). Penulisan program dengan cara tersebut menjadi sangat efektif jika program yang ditulis sudah mulai kompleks. Dengan menggunakan script serta fungsi, pemrogram dapat menyelesaikan penulisan program lebih dahulu, baru kemudian mengeksekusi setiap baris program tersebut dan menganalisisnya.

    Tingkat kompleksitas suatu program dapat diukur dari strukturnya. Semakin banyak kombinasi struktur pada program, maka semakin tinggi kompleksitasnya. Pada umumnya, kompleksitas suatu program menggambarkan tingkat kompleksitas dari kasus yang harus diselesaikan oleh program tersebut.

    Secara garis besar, struktur program dikelompokkan menjadi tiga struktur utama yaitu

    Struktur berurutan Struktur percabangan Struktur pengulangan

    3.1. Struktur Berurutan

    Tabel 3.1. Struktur Berurutan

    Format Diagram Alir

    Mulai

    perintah ke 1

    perintah ke 2

    perintah ke 3

    perintah ke ...n

    Selesai

  • Struktur ini menunjukkan bahwa mesin komputer mengeksekusi baris-baris program dilakukan secara berurutan. Hampir seluruh program pasti mengandung struktur ini meskipun dengan bahasa pemrograman yang berbeda. Hal ini juga berlaku untuk Scilab.

    Pada umumnya, model struktur berurutan ditampilkan melalui diagram alir (flow chart) seperti pada Tabel 3.1. Berhubung struktur ini telah digunakan pada praktikum 1 dan

    2, maka contoh program dengan struktur berurutan tidak diberikan lagi pada praktikum ini.

    3.2. Struktur Pencabangan

    Ketika membuat suatu program, dapat terjadi situasi di mana eksekusi program menghadapi pencabangan. Itu artinya data yang diolah program dapat mengalami kondisi yang berbeda, dan karenanya akan menempuh cabang program pengolahan data yang berbeda pula. Karena itu, diperlukan sistem pemilihan cabang yang sesuai dengan kondisi yang dihadapi oleh program. Untuk mengakomodasi keperluan tersebut, Scilab menyediakan fasilitas untuk penyataan kondisi data, serta struktur pencabangan if-else dan if-elseif-else.

    3.2.1. Pernyataan Kondisi

    Percabangan dalam alur eksekusi program terjadi karena data memenuhi kondisi tertentu. Dalam Scilab, kondisi tersebut dinyatakan dengan menggunakan operator-operator logika seperti yang ditulis pada Tabel 3.2.

    Tabel 3.2. Jenis-Jenis Operator Logika

    Operasi Arti Contoh Pemakaian

    == sama dengan X == 0

    ~= tidak sama dengant X ~= m

    < lebih kecil dari X < 0

    > lebih besar dari X > t

    = 0

    ~ not / negasi / bukan ~X

    & and / dan X & Y

    | or / atau X | Y

  • Status logika data yang memenuhi kondisi yang disyaratkan adalah true (benar). Pada Scilab, lambang status logika ini adalah T. Sebaliknya bila data tersebut tidak memenuhi kondisi yang disyaratkan, maka status logikanya adalah false (salah), dan lambangnya adalah F.

    Untuk memahaminya gunakan jendela kerja Scilab untuk menjalankan operasi-operasi logika pada Tabel 3.3.. Catat dan analisis hasilnya pada Tabel 3.3. Gunakan juga Tabel

    Kebenaran pada Tabel 3.4 untuk membantu analisis tersebut.

    Tabel 3.3. Operasi Logika

    No Prosedur Hasil Analisis

    1 -->a = -1; -->b = 2;

    2 -->a*b>0

    3 -->b (a > 1)

    5 -->~(a > 1)

    5 -->(a > 1) & (b(a > 1) | (b

  • 3.2.2. Percabangan1: 'If-Else'

    Percabangan ini digunakan untuk mengeksekusi suatu perintah apabila suatu kondisi dipenuhi. Jika kondisi tersebut tidak dipenuhi, perintah lainlah yang dieksekusi. Format penulisan umum pada Scilab serta diagram alir struktur ini ditunjukkan pada Tabel 3.5.

    Tabel 3.5. Struktur Pencabangan If - Else

    Format Diagram Alir

    Mulai

    perintah1

    if kondisi then

    perintah2

    else

    perintah3

    end

    Selesai

    *kondisi = ekspresi logika yang nilainya benar atau salah.

    Untuk memahami penggunaan struktur ini dalam Scilab, buatlah fungsi menggunakan Scinotes seperti pada Contoh 3.1.

    Contoh 3.1. Percabangan1: If-Else

    // Contoh 3.1 Praktikum Pemrograman Terstruktur

    // TF - 2202 Teknik Komputasi

    // Oleh : ......

    // NIM : ........

    function fungsiPenilai(nilai)

    if nilai > 60 then

    printf(Anda lulus dengan nilai %.2f,nilai);

    else

    printf(Anda tidak lulus);

    end

    endfunction

  • Selanjutnya, jalankan perintah Execute agar fungsi tersebut agar bisa dikenali pada jendela kerja Scilab. Kemudian, jalankan fungsi tersebut pada jendela kerja sesuai Tabel 3.6 serta catat hasilnya.

    Tabel 3.6. Hasil Fungsi Contoh 3.1

    No Prosedur Hasil

    1 -->fungsiPenilai(70)

    2 -->fungsiPenilai(40)

    Tulislah analisis jalannya fungsi ini pada Tabel 3.7. Untuk membantu analisis,

    perhatikan diagram alir program tersebut pada Gambar 3.1.

    Gambar 3.1. Diagram Alir Program Contoh 3.1

  • Tabel 3.7. Analisis Fungsi Contoh 3.1

    3.2.3. Percabangan3: If-Elseif-Else

    Sejauh ini percabangan yang dicoba hanya terdiri dari dua percabangan. Sekarang saatnya untuk mempelajari kasus yang lebih kompleks, yaitu kasus percabangan yang lebih dari dua. Format yang digunakan dan bentuk diagram alirnya ditunjukkan pada Tabel 3.8.

    Tabel 3.8. Struktur Pencabangan If Elseif - Else

    Format

    Mulai program

    perintah1

    if kondisi1 then

    perintah2

    elseif kondisi2 then

    perintah3

    elseif kondisi3 then

    perintah4

    else

    perintah5

    end

  • Diagram Alir

    Untuk memahaminya, tulislah progam Contoh 3.2 pada Scinotes.

    Contoh 3.2. Percabangan3: If-Elseif-Else

    // Contoh 3.3

    // Praktikum Pemrograman Terstruktur

    // TF - 2202 Teknik Komputasi

    // Oleh : ......

    // NIM : ........

    function kelas=klasifikasiAngka(x)

    clc;

    if x-4 & x0 & x

  • Tabel 3.9. Hasil Program Contoh 3.2

    No Prosedur Hasil

    1 --> klasifikasiAngka (-10)

    2 --> klasifikasiAngka (-1)

    3 --> klasifikasiAngka (2)

    4 --> klasifikasiAngka (5)

    Tabel 3.10. Diagram Alir dan Analisis Program Contoh 3.2

  • 3.3. Struktur Pengulangan

    Setelah memahami struktur percabangan, sekarang saatnya mempelajari struktur pengulangan. Dalam membuat program, sering kali diinginkan eksekusi suatu baris program diulang beberapa kali. Namun, sangat tidak praktis jika untuk keperluan itu dibuat program yang berisi barisan perintah yang berulang-ulang. Perhatikan program pada Contoh 3.3

    Contoh 3.3. Program dengan Perintah yang Berulang-Ulang

    Pada program di atas, ditulis perintah 'printf (Hello World\n)' sebanyak tiga kali. Pengulangan sebanyak ini belum jadi masalah dalam sebuah rangkaian program. Namun kondisi ini akan berbeda jika harus menampilkan 'Hello World' sebanyak 10 kali, 100, atau 1000 kali. Tentu saja akan merepotkan jika kita harus mengulang baris tersebut sebanyak yang diminta.

    Oleh karena itu, Scilab menyediakan metode pengulangan (looping). Untuk melakukan pengulangan, Scilab menyediakan dua cara yaitu, for-end dan while-end.

    3.3.1. Pengulangan1: For End

    Apabila diinginkan pengulangan terhadap beberapa perintah dan jumlah pengulangan tersebut bernilai tetap, maka metode yang paling tepat adalah dengan menggunakan for-end. Format pemakaian dan bentuk diagram alirnya ditunjukkan pada Tabel 3.11.

    Diagram alir dan format pada Tabel 3.11 menunjukkan bahwa 'perintah2' dan

    'perintah3' dieksekusi berulang sampai nilai indeks melewati batas nilai 'akhir'. Pada setiap perulangan, maka nilai 'indeks' akan bertambah sebesar nilai 'delta'. Untuk memahaminya, tulislah progam Contoh 3.4 pada Scinotes.

    Selanjutnya Execute dan jalankan fungsi tersebut pada jendela kerja. Catat hasilnya, kemudian buatlah diagram alir program dan analisislah jalannya program tersebut pada Tabel 3.12.

    //File: tulisHelloWorld.sce

    clc; clear;

    printf(Hello World \n);

    printf(Hello World \n);

    printf(Hello World \n);

  • Tabel 3.11. Struktur Pengulangan For - End

    Format Diagram Alir

    Mulai program

    Inisialisasi awal, delta, akhir

    For indeks = awal:delta:akhir

    perintah2

    perintah3

    end

    Contoh 3.4. Struktur Perulangan

    // Contoh 3.4

    // File : belajarFor.sce

    // Praktikum Pemrograman Terstruktur

    // TF - 2202 Teknik Komputasi

    // Oleh : ......

    // NIM : ........

    clc;

    for i=1:1:5

    printf(\n);

    printf(Nilai i: %d,i)

    end

    printf(\n);

    for j=10:-1:-2

    printf(\n);

    printf(Nilai j: %d,j)

    end

  • Tabel 3.12. Diagram Alir dan Analisis Program Contoh 3.4

    Selanjutnya, tulislah fungsi Contoh 3.4 pada Scinotes. Fungsi ini menghitung nilai

    faktorial suatu angka.

    Contoh 3.5. Fungsi Perhitungan Faktorial

    // Contoh 3.5

    // File : fungsiFaktorial.sci

    // Praktikum Pemrograman Terstruktur

    // TF - 2202 Teknik Komputasi

    // Oleh : ......

    // NIM : ........

    function hasil=faktorial(x)

    x = round(x);

    //fungsi untuk pembulatan angka

    if x==0 then //kontrol 'jika x=0'

    hasil = 1;

    elseif x

  • Tabel 3.13. Diagram Alir dan Analisis Program Contoh 3.5

    Setelah mempelajari struktur for-end, timbul pertanyaan apa perbedaan penggunaan struktur tersebut dengan memanggil variabel yang berupa matriks / vektor secara langsung? Untuk mendapatkan jawabannya, jalankan prosedur pada Tabel 3.14,

    kemudian tulis hasil dan analisis perbandingannya.

    Tabel 3.14. Perbandingan Struktur For End dengan Teknik Vektorisasi 1

    No Prosedur Hasil Analisis

    1 t=0:0.02:5;

    for i =1:1:length(t)

    y(i)=cos(t(i))

    end

    BANDINGKAN DENGAN

    2 t=[0:0.02:5];

    y=cos(t)

  • 3.3.2. Pengulangan2: While End

    Setelah belajar struktur pengulangan menggunakan for-end, sekarang saatnya mempelajari struktur pengulangan dengan memanfaatkan metode lainnya, yaitu while-end. Struktur ini digunakan untuk mengeksekusi blok pernyataan selama suatu kondisi yang kita tetapkan terus dipenuhi. Jika kondisi tersebut tidak dipenuhi maka blok pernyataan tidak akan dieksekusi lagi. Format dan diagram alir struktur while-end ditunjukkan pada Tabel 3.15.

    Selanjutnya, tulislah fungsi Contoh 3.6 pada Scinotes. Fungsi ini juga menghitung nilai

    faktorial suatu angka, namun menggunakan struktur while-end. Pada saat menulis fungsi ini, perhatikan perbedaannya dengan fungsi pada Contoh 3.5 yang

    menggunakan struktur for end.

    Tabel 3.15. Struktur Pengulangan While - End

    Format Diagram Alir

    Mulai program

    Inisialisasi kondisisekarang,

    kondisibreak

    While kondisisekarang ~=

    kondisiakhir

    perintah1

    update kondisisekarang

    end

  • Contoh 3.6. Fungsi Perhitungan Faktorial dengan Struktur While-End

    // Contoh 3.6 fungsiFaktorial2.Sci

    // Praktikum Pemrograman Terstruktur

    // TF - 2202 Teknik Komputasi

    // Oleh : ......

    // NIM : ........

    clc; clear

    function faktor=fungsiFaktorial2(n)

    if n==0 then

    faktor=1;

    elseif n < 0 then

    error('Input Angka tidak boleh negatif');

    else

    i = 1;

    faktor = 1;

    while(i

  • 3.3.3. Pengulangan3: While Break End

    Selama proses pengulangan berlangsung, adakalanya terjadi suatu kondisi khusus dimana mengharuskan ekesekusi yang masih berlangsung tersebut harus berhenti dan keluar dari looping saat itu. Hal tersebut dapat dilakukan dengan menyisipkan suatu percabangan dan pernyataan break di dalam salah satu cabang.

    Jika pernyataan break ditemui dalam perulangan, maka proses perulangan akan berhenti. Pernyataan break dapat digunakan pada semua struktur perulangan maupun fungsi dalam Scilab. Namun, gunakanlah break untuk hal sangat khusus saja. Pada keadaan normal, maksimalkan penggunaan struktur pencabangan. Format penulisan dan diagram alirnya ditunjukkan pada Tabel 3.17.

    Tabel 3.17. Struktur Pengulangan While Break - End

    Format Diagram Alir

    Mulai program

    Inisialisasi kondisi sekarang,

    kondisiakhir, kondisibreak

    While kondisi sekarang ~=

    kondisi akhir

    perintah1

    if kondisibreak then break

    end

    update kondisi sekarang

    end

    Mulai

    Perintah 1

    Selesai

    Kondisisekarang ~= kondisiakhir?

    Perintah 2

    Inisialisasi kondisisekarang, kondisiakhir

    Update kondisisekarang

    ya ya

    Kondisi break ?

    ya

    Seperti biasa, tulislah fungsi pada Tabel 3.18 pada Scinotes, dan jalankan pada jendela

    kerja. Bandingkan hasil kedua fungsi ini dan analisis hasilnya.

  • Tabel 3.18. Fungsi dengan Struktur While-Break-End

    // Contoh 3.6

    // File : belajarBreak1.sce

    // Praktikum Pemrograman Terstruktur

    // TF - 2202 Teknik Komputasi

    // Oleh : ......

    // NIM : ........

    clc;

    clear;

    x = 25;

    while (1)

    disp(x);

    x = x-5;

    if x