Bahan Kuliah Teori: Pemrograman Terstruktur Cover
Sistematika Materi Sistematika Materi Konsep pemrograman secara umum: Perkembangan pemrograman komputer Sejarah bahasa pemrograman Jenis bahasa pemrograman Perbandingan bahasa pemrograman Ide Pemrograman terstruktur: Defenisi, Tujuan, Kriteria Metoda dasar pemrograman terstruktur GOTOLess: Sekuensial, Selection, Looping Perbandingan bahasa pemrograman (Berdasarkan kriteria pemrograman terstruktur) Metoda desain pemrograman terstruktur Modular, TopDown, OOP, Pemrograman berorientasi objek (Lebih terstuktur dari ide pemrograman terstruktur?) Struktur pemrograman visual
Konsep Pemrograman Mem Mem-program program komputer, secara teknis bertujuan: Memasukkan/ menyusunsejumlahinstruksidandata kememory, yang selanjutnyaakandiambilsatupersatuolehcpu/processor untuk dilaksanakan Perkembangan(cara cara) mem-program komputer: 1. Pemrograman dengan mengatur/menyambung titik jumper di rangkaian komputer 2. Pemrogramandenganlangsungmenuliskodebinerkememory, direpresentasikan melalui kode hexa, kode biner disebut juga bahasa mesin komputer 3. Pemrograman dengan bahasa assembler : Perintah-perintahnya berkaitan langsung dengan struktur internal hardware 4. Pemrogramandenganbahasatingkattinggi/menengah: Perintah-perintahnya mirip dengan bahasa manusia/english
Ilustrasi Pemrograman Komputer Programmer Tool Instruksi A Data D Instruksi D Instruksi B Instruksi C Data A Sejumlah Instruksi dan data CPU 0001 0002 0100 0101 0102 0103... 00011100 00000101 00111101 00010010 00101101 Hexa 3C 05 3D 12 2D Assembly Mov A,05 Mov B,12 Add A,B High/Medium Level A = 05 + 12... Susunan instruksi dan data dalam memory
Sejarah bahasa Pemrograman
Generasi dan Jenis Bahasa Pemrograman Generasi bahasa pemrograman: Generasi I : machine language GenerasiII :assembly language : Asssembler GenerasiIII :high-level programming language: C, PASCAL, dsb. GenerasiIV :4 GL (fourth-generation language): Prolog, SQL, Visual tool, dsb Jenis bahasa pemrograman berdasarkan metodanya: Pemrogramantidakterstruktur: Basica, Fortran, Pemrogramanterstruktur: Pascal, C/C++, Pemrogramanberorientasiobjek: C++, Java, Pemrograman visual : VB, Delphi, Jenis bahasa pemrograman berdasarkan bentuk(corak kode) nya: Pemrograman prosedural: Pascal, C, Pemrograman fungsional: Lisp Pemrograman deklaratif: Prolog Pemrograman berorientasi objek: Java Pemrograman prosedural sekaligus berorientasi objek: C++ Jenis bahasa pemrograman berdasarkan tujuan(hasil) : Pemrograman stand-alone Pemrograman client/server Pemrograman web : HTML, Script Pemrograman jaringan Jenis bahasa pemrograman berdasarkan cara penterjemahan: Interpreter : Basica, Foxpro, Matlab, Compiler : Turbo Basic, Pascal, C/C++,
Berdasarkan tujuan tertentu: Perbandingan Bahasa Pemrograman (Umum) Jenis Program Bahasa Terbaik Bahasa Terburuk Data terstruktur ADA, C /C++, PASCAL Assembler, BASIC Proyek cepat BASIC PASCAL, ADA, Assembler Eksekusi cepat Assembler, C BASIC, Intrepreter Language Kalkulasi matematika FORTRAN PASCAL Menggunakanmemoridinamis PASCAL, C BASIC Lingkungan bermemori terbatas BASIC, Assembler, C FORTRAN Program real-time ADA, Assembler, C BASIC, FORTRAN Manipulasi string BASIC, PASCAL C Program mudah dikelola PASCAL, ADA C, FORTRAN (Mc. Connell) Berdasarkan jumlah instruksi dibandingkan dengan assembler Berdasarkan kriteria pemrograman terstruktur: Bahasa Assembler 1: 1 ADA 1 : 4.5 Rasio Kriteria Basic Bahasa Pemrograman Pascal C Foxpro Quick / Turbo / Basic 1 : 5 C 1 : 2.5 FORTRAN 1 : 3 PASCAL 1 : 3.5 (Mc. Connell) Tabel ini akan dilengkapi selama perkuliahan berlangsung
Proses Pembuatan Aplikasi
Contoh Proses Pembuatan Aplikasi(1) : Permasalahan 1 : Si Upik selalu membeli buah apel untuk dibagikan ke beberapa orang anak yatim Ia kesulitan untuk membagi secara adil berapa buah apel setiap anak mendapatkan jika ia beli N buah. Karena sering ia lakukan, ia membutuhkan aplikasi untuk menghitung kebutuhan tersebut. Proses pemecahan: Permasalahan di atas dapat disederhanakan dengan menggambarkan bagaimana dialog di layar komputer yang diharapkan terjadi terhadap aplikasi yang dibutuhkan tersebut: Contoh dialog yang diharapkan: Aplikasi pembagian buah apel Ketik jumlah buah apel yang dibeli : {ENTER} Ketik jumlah anak yang akan diberi : {ENTER} Solusi : Setiap anak mendapatkan : buah apel Dari gambaran tersebut dapat ditentukan bahwaprogram membutuhkan2 input dan1 output. Misalkeduainput yang dibutuhkandisebuta dann danoutput disebutc. Maka secara matematis hubungan input dan output dapat dimodelkan dengan: C = A / N Contoh data : JikaA = 25 dan N = 5, maka secara manual dapat dihitung: C = 25 / 5 C = 5 Urutan perhitungan tersebut(algoritma) jika dilakukan komputer adalah: -Memasukkan nilai ke A -Memasukkan nilai ke N -Menghitung C = A / N -Mencetak hasil C
Contoh Proses Pembuatan Aplikasi (2) : Permasalahan 2 : Si Buyung kelas 2 SMU. Oleh guru matematik-nya ia sering diminta menghitung soal-soal persamaan kuadrat yang jumlahnya lumayan banyak. Si Buyung memang jago matematik, tapi dia juga sedang mendalami pemrograman komputer. Dia tahu kalau masalah di atas dapat diatasidenganmembuatkanaplikasinya. Proses pemecahan: Permasalahan di atas juga dapat disederhanakan dengan menggambarkan bagaimana dialog di layar komputer yang diharapkan terhadap aplikasi tersebut: Contoh dialog yang diharapkan: Aplikasi menghitung persamaan kuadrat Masukkan nilai koefisien A : {ENTER} Masukkan nilai koefisien B : {ENTER} Masukkan nilai koefisien C : {ENTER} Penyelesaian : Solusi merupakan 2 akar real yang berbeda Solusi 1 (X1) = Solusi 2 (X2) = Dari dialog tersebutdiketahuibahwaprogram membutuhkan 3 input dan 2 output. Misalkeduainput yang dibutuhkandisebuta, B danc danoutput disebutx1 danx2. Maka secara matematis, dengan menggunakanrumusabcyang telahbaku, proses mendapat X1 dan X2 dapat dihitung seperti berikut: X1 = (-b+ D)/2A X2 = (-b- D)/2A DimanaD = b 2 4AC Sebelum menghitung X1 dan X2 perlu diselidiki apakah nilai A=0 atau tidak, sebab pada persamaan kuadrat nilai A tidak boleh 0 JugaharusdihitungterlebihdahulunilaiD, dan diselidiki: JikaD>0; Penyelesaian(X1 danx2) merupakan nilai real dan berbeda JikaD = 0; penyelesaian(x1 danx2) merupakan nilai real dan sama(x1=x2) JikaD<0; penyelesaian(x1 danx2) merupakan nilai imajiner
Lanjutan Proses pemecahan tersebut urutannya (algoritma) adalah: AWAL : -MemasukkannilaikeA -MemasukkannilaikeB -MemasukkannilaikeC -SelidikiapakahA=0, jikaya melompatkeakhir -MenghitungnilaiD = b 2 4AC - Menyelidiki nilai D, - Jika D>0 melompat ke REAL_BEDA - Jika D=0 melompat ke REAL_SAMA - JIKA D<0 melompat ke IMAJINER REAL_BEDA : -X1 = (-b+ D)/2A -X2 = (-b- D)/2A - Mencetak hasilnya - Melompat ke AKHIR REAL_SAMA : -X1 = -b / 2A -X2 = X1 - Mencetak hasilnya - Melompat ke AKHIR IMAJINER : -D = absolute(d) -X1 = -b/2a + D/2A i -X2 = -b/2a - D/2A I - Mencetak hasilnya AKHIR : -Menanyakanapakahinginmenghitunglagi, jikaya melompat ke AWAL Pembuatan Kode Program : Setelah kita dapatkan algoritma dari permasalahan, maka langkah selanjutnya adalah membuat kode programnya Kode program permasalahan 1 Kode program dari permasalahan 1 di atas bersifat sekuensial murni. Artinya tidak membutuhkan perintah untuk melompat dari satubagianprogram kebagianprogram lain. Kode program seperti ini sangat mudah untuk membuatnya menggunakan bahasa pemrograman apa pun Kode Program permasalahan 2 Kode program dari permasalahan 2 tidak lagi bersifat sekuensial murni, karena membutuhkan perintahuntukmelompatkebagianprogram tertentu. Untukmelompatkebagianprogram tertentudapatmenggunakanperintahgoto atau dapat juga dengan menggunakanmetoda PEMROGRAMAN TERSTRUKTUR
Simbol-simbol untuk menggambarkan Flow Chart Digunakan untuk menunjukkan awal dan akhir program Digunakan untuk memberikan nilai awal(inisial) pada suatu variabel atau counter Digunakanuntukproses, pengolahan arithmatik, dan pemindahan data Digunakan untuk mewakili operasi perbandingan logika yang dibutuhkan pada Selection dan Looping Digunakan untuk menyatakan operasimemasukkandata/input dan menampilkan data/output Digunakan untuk proses yang detailnya dijelaskan terpisah, misalkan untuk menyatakan prosedur, atau sub program Digunakan untuk hubungan arus proses yang terputus masih di halaman yang sama Digunakan untuk hubungan arus proses yang terputus di halaman yang berbeda Digunakan untuk menghubungan antar simbol/elemen yang lain dan sekaligus menyatakan arah aliran
Contoh Flow Chart : Permasalahan 2 : Start Permasalahan 1 : Start MasukkannilaikoefisienA kevara MasukkannilaikoefisienB kevarb MasukkannilaikoefisienC kevarc A=0 Masukkandata jumlahapelkevara Masukkandata jumlahanakkevarn D = b 2 4AC C = A / N D>0 Hitung penyelesaian real Dengan akar berbeda Tampilkan: Setiap anak mendapat C apel D=0 Hitung penyelesaian real Dengan akar sama end Hitung penyelesaian Bilangan imajiner Menanyakan apakah ingin menghitung lagi? LG LG=Ya end
Pemrograman yaitu aktivitas membuat program, yaitu menyusun sejumlah perintah yang dikenal komputer Terstruktur dapat berarti terpola, bentuk yang mengikuti aturan tertentu, juga berarti sesuatu yang sistematis PemrogramanTerstrukturberarti: Orang pertama yang mencetuskan ide pemrograman terstruktur adalah Profesor EdsgerW. DijkstradariUniversity of Eindhoven, Nederland. Ide utamanya adalah bahwa statemen GOTO sebaiknya tidak digunakan di dalam pemrograman terstruktur, sebab bisa membuat program menjadi ruwet. IdeiniditanggapiolehHD Milis, yang beranggapan bahwa pemrograman terstruktur semestinya tidak hanya dihubungkan dengan tanpa penggunaan GOTO, tetapi yang lebih utamaadalahstrukturprogram itulahyang menentukan apakah suatu pemrograman terstruktur atau tidak Ide Pemrograman terstruktur Ide pemrograman terstruktur muncul karena jumlah baris program semakin lama semakin besar, tentu saja hal ini terjadi karena diinginkan aplikasi yang lengkap dan lebih berkualitas Dengan ide pemrograman terstruktur diharapkan dapat membantu manajemen source code(kode program) sehingga program mudah untuk dikelola bagi kepentingan selanjutnya Tujuanutamapemrogramanterstrukturadalah: agar program-program besar menjadi lebih mudah ditelusuri alur logikanya, mudah untuk dimodifikasi (dikembangkan) dan mudah pula untuk ditemukan bagian yang salah ketika program sedang diuji. Kriteria pemrograman terstruktur: - Struktur programnya; jelas dan tegas - Fasilitas penulisan kode program; jelas dan tegas - StatemenuntukkebutuhanSelection danlooping; lengkap - Fasilitas menyatakan berbagai type data (struktur data); lengkap dan tegas - Fasilitas pemberian komentar; lengkap - Fasilitas instruksi yang tersedia(operasi arithmatik/matematik, string, ); lengkap - Fasilitasmodular (baikinternal maupuneksternal); lengkap - Fasilitas debugging, mudah dan jelas
FilosofisTerstruktur a b c d - Mana yang susunannya terstruktur (teratur, ) - Mana yang lebih mudah anda hafalkan - Jika akan ditambah satu batang lagi, dimana harus diletakkan agar posisinya dapat dinilai benar - Jika susunannya dirombak, mana yang lebih mudah untuk disusun kembali
Metoda dasar pemrograman terstruktur Ide awal penerapan pemrograman terstruktur yaitudenganmenghindaripenggunaangoto untuk melompat ke bagian program tertentu Kegunaan GOTO untuk melompat ke baris program tertentu, secara umum dapat dibagi ke dalam2 kelompok: 1. Melompat ke bagian bawah program dari posisi program saat ini 2. Melompat ke bagian atas program dari posisi program saat ini Dengan pemrograman terstruktur; Jikaadakebutuhanmelompatkebagianbawah, dapatdigantikandenganperintahselection (If, Case, Select, Switch, ) Jikaadakebutuhanmelompatkebagianatas, dapatdigantikandenganperintahlooping (for, While, repeat-until, ) Untuk itu dalam pemrograman terstruktur hanya dikenal 3 struktur: 1. Sekuensial, yaitu program yang tidak memilikilompatan. Barisprogram dijalankan secara normal (lurus) satu persatudariataskebawah 2. Selection, yaitu program yang memiliki pilihan apakah harus menjalankan baris program sesuai dengan urutannya atau melompatisejumlahbarisprogram tersebut 3. Looping, yaitu program yang juga mengandung pilihan apakah akan mengulangi program yang sudah pernah dijalankan sebelumnya atau tidak Prinsip utamanya adalah, program tidak boleh melompat ke atas, kecuali untuk keperluan pengulangan
Beberapa bentuk logika terstruktur dengan flow chart 1. Struktur urut sederhana(simple sequence) 3. Struktur 2 pilihan dengan IF-THEN-ELSE 2. Struktur 1 pilihan dengan IF-THEN
Lanjutan: 4a. Struktur banyak pilihan denganif-then-elseif 4b. Struktur banyak pilihan dengancase
Lanjutan: 5. StrukturperulanganFOR 6. Struktur perulangan WHILE For 7. Struktur perulangan UNTIL
IF-THEN Statemen kontrol terstruktur: menyembunyikan goto Proses 1 Kondisi false Proses 2 true Proses 1a Proses1 If {kondisi=false } then goto lompat Proses1a Lompat: Proses2 Proses1 If {kondisi} then Proses1a End if Proses2 Analisa: Jikakondisi=true, urutan pelaksanaan: Jikakondisi=false, urutan pelaksanaan: Proses1 Proses1a Proses2 Proses1 Proses2
Lanjutan menyembunykan goto IF-THEN-ELSE Proses 1 Kondisi true Proses1 If {kondisi=true } then goto lompat1 else goto lompat2 Lompat1: Proses1b goto lompat3 Lompat2: Proses1a Lompat3: Proses2 false Proses 1a Proses 2 Proses 1b Analisa: Jikakondisi=true, urutan pelaksanaan: Proses1 If {kondisi=true } then Proses1b else proses1a end if Proses2 Jikakondisi=false, urutan pelaksanaan: Proses1 Proses1b Proses2 Proses1 Proses1a Proses2
Lanjutan menyembunykan goto IF-THEN-ELSE-IF Proses 1 Kondisi1 false Kondisi2 Kondisi3 Proses 2d Proses 3 true Proses 2a Proses 2b Proses 2c Proses1 If {kondisi1=true } then gotolompat1 If {kondisi2=true } then goto lompat2 If {kondisi3=true } then goto lompat3 Goto lompat4 Lompat1: Proses2a goto habis Lompat2: Proses2b goto habis Lompat3: Proses2c goto habis Lompat4: proses2d Habis: proses3 Proses1 If {kondisi1=true }then Proses2a else if {kondisi2=true } then Proses2b else if {kondisi3=true } then Proses2c else Proses2d end if Proses3 Proses1 Caseof var Kondisi1: Proses2a Kondisi2: Proses2b Kondisi3: Proses2c else Proses2d end case Proses3
Lanjutan menyembunykan goto Looping : FOR FOR I=1 to 5 Proses1 Proses2 For I=1 to 5 Proses 1 Proses2 Next I Proses 3 Proses3 I=1 Ulang: Proses1 Proses2 I=I+1 If I<=5 then gotoulang Proses3
Lanjutan menyembunykan goto Looping : WHILE While {kondisi} While {kondisi=true} Proses 1 Proses2 Wend Proses 3 Proses1 Proses2 Proses3 Ulang: If {kondisi=true} then Proses1 Proses2 goto Ulang Proses3
Lanjutan menyembunykan goto Looping : UNTIL Proses1 Proses1 Until {kondisi} do Proses 1 Proses2 Loop Until {kondisi=true} Proses 3 Ulang: Proses1 Proses2 If {kondisi=true} then goto Ulang Proses3 Proses3
Contoh flow chart dengan kontrol lengkap: start C=2 C=C=1 C>12 end
Contoh flow chart dengan beberapa lompatan tidak terstruktur: start Lompatan tidak terstruktur: a. Melompat ke bagian yang belum tentu dilewati b. Melompat keluar dari daerah induknya end
Struktur Data dan Pemrograman terstruktur Bahasa pemrograman dengan kemampuan meng-ekspresi-kan semua kebutuhan struktur data akan lebih mendukung pencapaian tujuan dari pemrograman terstruktur Bahasa pemrograman yang tidak memiliki fasilitas untuk mengungkapkan struktur data tertentu cendrung mengarahkan kode program ke bentuk yang kurang teratur Kemampuan struktur data suatu bahasa pemrograman ditentukan oleh kemampuan fasilitas type data yang dimilikinya Type data secaraumumterdiridari: -Type data dasarstandar: Integer, real, string, charakter, dan logic -Type data dasartidakstandar: sub range, enumerate -Type data majemuk: set, array, record, file -Type data dinamis: pointer -Type data padabasic :.. -Type data padapascal :.. -Type data padac :.. -Type data padafoxpro:..
Tabel Perbandingan Bahasa Pemrograman (Berdasarkan kriteria pemrograman terstruktur) Kriteria Struktur programnya; jelas dan tegas Ketegasan susunan deklarasi Sub kriteria Kelengkapan deklarasi elemen program Bahasa Pemrograman Basic Pascal C Foxpro Fasilitas penulisan kode program; jelas dan tegas Kelengkapan simbol untuk penulisan kode Ketegasanpenggunaansimbol(case sensitif non case sensitif) IF-THEN IF-THEN-ELSE Statemen untuk kebutuhan Selection dan Looping; lengkap IF-THEN-ELSEIF CASE FOR WHILE UNTIL Type dasar(integer, real,char, string, boolean) Fasilitas menyatakan berbagai type data Set, enumerate, array, record, file Pointer Komentar 1 baris Fasilitas pemberian komentar; lengkap Komentar banyak baris Komentar di tengah baris Fasilitas instruksi/operasi yang tersedia Fasilitas modular (baik internal maupun eksternal); lengkap Fasilitas debugging, mudah dan jelas 4=Baik sekali 3=Baik 2=Cukup 1=Kurang Operator aritmatik(+,-,*,/,^), operator relasi(<, <=, >, >=, <>),operator logika(and, OR, NOT),assignment(=) Fungsi-fungsi built-in (string, matematik, grafis, ) Modular internal (procedure, function) Modular external (file kode terpisah) Kemudahan memahami pesan kesalahan Kelengkapan pesan(syntex error, Compile error, Run-time error) TOTAL
Metoda Desain Pemrograman Terstruktur Untukmembantudanmenjamindihasilkannyaprogram yang terstruktur, dapat digunakan beberapa metoda/alat berikut: Metode Perancangan Top-down MetadaPerancanganModular Implementasi internal : Procedure/Subprogram, Function Implementasi eksternal: file Unit/Header/Modul Diagram Nassi-Schneiderman Tabel Decision
Metode Perancangan Top-down Masalah Besar Sub MasalahA Sub MasalahB Sub MasalahC Sub Masalah A1 Sub Masalah A2 B Masalah utama Strategi umum dalam penyelesaian masalah besar; kompleks; rumit A A1 A2 C
Contoh Top-down : Sistem Informasi Akademis Mahasiswa Dosen Perkuliahan Entry data Entry data Entry data Hapus data Hapus data Hapus data Laporan data Laporan data Laporan data
Metode Modular : Implementasi Top-down Bagian Utama.. Call A.. Call B.. Call C.. A. Call A1. Call A2.. B.. C.. A1.. A2.. Dapat diterapkan secara: -Internal : sub program, procedure, function -Eksternal: file unit, header, modul
Diagram Chart Nassi-Schneiderman Statemen1 Statemen2 Stateme3 While kondisi proses2 proses2 Until kondisi ya if tdk proses1 ya if tdk proses1 proses2 Contoh: ya Imajiner Mulai Masukkan Nilai koefisien A Masukkan Nilai koefisien B Masukkan Nilai Koefisien C D = B*B-4*A*C D<0 tdk D=0 ya tdk Real sama Real berbeda
Tabel Decision Rules Langkah Pembuatan: Kondisi 1 2 3 4 - Menentukan kondisi yang akan diseleksi - Menentukan jumlah kejadian yang mungkin terjadi untuk di-isi pada bagian kondisi Aksi - Menentukan tindakan yang akan dilakukan untuk di-isi pada bagian aksi Contoh: Jika nilai rata-rata >=85 dan jumlah kehadiran mencapai >=90% maka siswa tersebut akan mendapat bonus, jika nilai rata-rata<85 walaupun jumlah kehadiran mencapai >=90% maka siswa tersebut tidak mendapat bonus Apakah nilai rata2>=85 Apakah jumlah kehadiran>=90% Mendapat bonus Tidak mendapat bonus 1 Y Y x 2 Y N x Rules 3 N Y x 4 N N x Latihan : Jika unit yang dipesan untuk barang tertentu sama dengan atau melebihi jumlah minimum dan pemesannya adalah agen, maka akan mendapat potongan. Sebaliknya jika kurang dari jumlah minimum, walaupun pemesannya adalah agen, maka tidak mendapat potongan. Jika persediaan di gudang mencukupi maka unit pesanan dikirim sepenuhnya. Jika persediaan di gudang tidak mencukupi jumlah pesanan, maka unit yang ada akan dikirim sedangkan kekurangannya akan dibuatkan catatan (back order)
start C=2, M=3 Konversi flow chart ini ke bahasa pemrograman: a. Basic atau foxpro b. PascalatauC C=C*M C=C+1 FF C>12 T C=C-M C>M F T For I=M to C F I > M T (I*C)>M M=M+1 F C<=M T M=C+5 C=C+M Next I C=M+1 M=C+1 Cetak C Cetak M P=C+M end M=P+2 C = 37 M = 25