PEMROGRAMAN TERSTRUKTUR PENDAHULUAN By Nia Saurina SST M
PEMROGRAMAN TERSTRUKTUR PENDAHULUAN By Nia Saurina SST. , M. Kom
Konsep Pemrograman • Mem-program komputer, secara teknis bertujuan : Memasukkan/ menyusun sejumlah instruksi dan data ke memory, yang selanjutnya akan diambil satu persatu oleh CPU/Processor untuk dilaksanakan Perkembangan (cara) mem-program komputer : 1. Pemrograman dengan mengatur/menyambung titik jumper di rangkaian komputer 2. Pemrograman dengan langsung menulis kode biner ke memory, direpresentasikan melalui kode hexa, kode biner disebut juga bahasa mesin komputer 3. Pemrograman dengan bahasa assembler : Perintah-perintahnya 4. Pemrograman dengan bahasa tingkat tinggi/menengah : Perintah berkaitan langsung dengan struktur internal hardware -perintahnya mirip dengan bahasa manusia/english
Ilustrasi Pemrograman Komputer Instruksi A Programmer Data D Instruksi B Tool Instruksi C Data A Sejumlah Instruksi dan data CPU 0001 ………. 0002 ………. Hexa 0100 00011100 0101 00000101 0102 00111101 0103 00010010 3 C 05 3 D 12 2 D 00101101 ………. Susunan instruksi dan data dalam memory Assembly Mov A, 05 Mov B, 12 Add A, B High/Medium Level A = 05 + 12
Sejarah bahasa Pemrograman
Generasi dan Jenis Bahasa Pemrograman Generasi bahasa pemrograman: • Generasi I : machine language Jenis bahasa pemrograman berdasarkan bentuk (corak kode) nya : • Generasi II : assembly language : Asssembler • Pemrograman prosedural : Pascal, C, … • Generasi III : high-level programming language: C, PASCAL, dsb. • Pemrograman deklaratif : Prolog • Generasi IV : 4 GL (fourth-generation language): Prolog, SQL, Visual tool, dsb • Pemrograman prosedural sekaligus berorientasi objek : C++ Jenis bahasa pemrograman berdasarkan metodanya : • Pemrograman tidak terstruktur : Basica, Fortran, … • Pemrograman terstruktur : Pascal, C/C++, … • Pemrograman berorientasi objek : C++, Java, … • Pemrograman visual : VB, Delphi, … • Pemrograman fungsional : Lisp • Pemrograman berorientasi objek : Java 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++, …
Perbandingan Bahasa Pemrograman (Umum) Berdasarkan tujuan tertentu : 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 Menggunakan memori dinamis 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 Bahasa Rasio Assembler 1: 1 ADA 1 : 4. 5 Quick / Turbo / Basic 1 : 5 C 1 : 2. 5 FORTRAN 1 : 3 PASCAL 1 : 3. 5 Berdasarkan kriteria pemrograman terstruktur : Kriteria (Mc. Connell) Bahasa Pemrograman Basic Pascal C Foxpro 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 bahwa program membutuhkan 2 input dan 1 output. Misal kedua input yang dibutuhkan disebut A dan N dan output disebut C. Maka secara matematis hubungan input dan output dapat dimodelkan dengan : C=A/N Contoh data : Jika A = 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 diatasi dengan membuatkan aplikasinya. 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 (X 1) = … Solusi 2 (X 2) = … Dari dialog tersebut diketahui bahwa program membutuhkan 3 input dan 2 output. Misal kedua input yang dibutuhkan disebut A, B dan C dan output disebut X 1 dan X 2. Maka secara matematis, dengan menggunakan rumus abc yang telah baku, proses mendapat X 1 dan X 2 dapat dihitung seperti berikut : X 1 = (-b+ D)/2 A X 2 = (-b- D)/2 A Dimana D = b 2 – 4 AC Sebelum menghitung X 1 dan X 2 perlu diselidiki apakah nilai A=0 atau tidak, sebab pada persamaan kuadrat nilai A tidak boleh 0 Juga harus dihitung terlebih dahulu nilai D, dan diselidiki : Jika D>0; Penyelesaian (X 1 dan X 2) merupakan nilai real dan berbeda Jika D = 0; penyelesaian (X 1 dan X 2) merupakan nilai real dan sama (X 1=X 2) Jika D<0; penyelesaian (X 1 dan X 2) merupakan nilai imajiner
Lanjutan Proses pemecahan tersebut urutannya (algoritma) adalah : AWAL : - Memasukkan nilai ke A - Memasukkan nilai ke B - Memasukkan nilai ke C - Selidiki apakah A=0, jika YA melompat ke AKHIR - Menghitung nilai D = b 2 – 4 AC - 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 : - X 1 = (-b+ D)/2 A - X 2 = (-b- D)/2 A - Mencetak hasilnya - Melompat ke AKHIR REAL_SAMA : - X 1 = -b / 2 A - X 2 = X 1 - Mencetak hasilnya - Melompat ke AKHIR IMAJINER : - D = absolute(D) - X 1 = -b/2 A + D/2 A i - X 2 = -b/2 A - D/2 A I - Mencetak hasilnya AKHIR : - Menanyakan apakah ingin menghitung lagi, jika YA 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 satu bagian program ke bagian program 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 perintah untuk melompat ke bagian program tertentu. Untuk melompat ke bagian program tertentu dapat menggunakan perintah GOTO atau dapat juga dengan menggunakan metoda 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 Digunakan untuk proses, pengolahan arithmatik, dan pemindahan data Digunakan untuk mewakili operasi perbandingan logika yang dibutuhkan pada Selection dan Looping Digunakan untuk menyatakan operasi memasukkan data/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 Masukkan nilai koefisien A ke var A Masukkan nilai koefisien B ke var B Masukkan nilai koefisien C ke var C Permasalahan 1 : Start A=0 Masukkan data jumlah apel ke var A Masukkan data jumlah anak ke var N D = b 2 – 4 AC 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
Ide Pemrograman terstruktur 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 Pemrograman Terstruktur berarti : ……………………………………………………… Orang pertama yang mencetuskan ide pemrograman terstruktur adalah Profesor Edsger W. Dijkstra dari University of Eindhoven, Nederland. Ide utamanya adalah bahwa statemen GOTO sebaiknya tidak digunakan di dalam pemrograman terstruktur, sebab bisa membuat program menjadi ruwet. Ide ini ditanggapi oleh HD Milis, yang beranggapan bahwa pemrograman terstruktur semestinya tidak hanya dihubungkan dengan tanpa penggunaan GOTO, tetapi yang lebih utama adalah struktur program itulah yang menentukan apakah suatu pemrograman terstruktur atau tidak 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 Tujuan utama pemrograman terstruktur adalah : 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 - Statemen untuk kebutuhan Selection dan Looping; lengkap - Fasilitas menyatakan berbagai type data (struktur data); lengkap dan tegas - Fasilitas pemberian komentar; lengkap - Fasilitas instruksi yang tersedia (operasi arithmatik/matematik, string, …); lengkap - Fasilitas modular (baik internal maupun eksternal); lengkap - Fasilitas debugging, mudah dan jelas
Filosofis Terstruktur 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 yaitu dengan menghindari penggunaan GOTO untuk melompat ke bagian program tertentu Kegunaan GOTO untuk melompat ke baris program tertentu, secara umum dapat dibagi ke dalam 2 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; Jika ada kebutuhan melompat ke bagian bawah, dapat digantikan dengan perintah Selection (If, Case, Select, Switch, …) Jika ada kebutuhan melompat ke bagian atas, dapat digantikan dengan perintah Looping (for, While, repeat-until, …) Prinsip utamanya adalah, program tidak boleh melompat ke atas, kecuali untuk keperluan pengulangan Untuk itu dalam pemrograman terstruktur hanya dikenal 3 struktur : 1. Sekuensial, yaitu program yang tidak memiliki lompatan. Baris program dijalankan secara normal (lurus) satu persatu dari atas ke bawah 2. Selection, yaitu program yang memiliki pilihan apakah harus menjalankan baris program sesuai dengan urutannya atau melompati sejumlah baris program tersebut 3. Looping, yaitu program yang juga mengandung pilihan apakah akan mengulangi program yang sudah pernah dijalankan sebelumnya atau tidak
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 : 4 a. Struktur banyak pilihan dengan IF-THEN-ELSEIF 4 b. Struktur banyak pilihan dengan CASE
Lanjutan : 5. Struktur perulangan FOR 6. Struktur perulangan WHILE For 7. Struktur perulangan UNTIL
Statemen kontrol terstruktur : menyembunyikan goto IF-THEN Proses 1 Kondisi false Proses 2 true Proses 1 a Proses 1 If {kondisi=false } then goto lompat Proses 1 a Lompat: Proses 2 Proses 1 If {kondisi } then Proses 1 a End if Proses 2 Analisa : Jika kondisi=true, urutan pelaksanaan : Jika kondisi=false, urutan pelaksanaan : Proses 1 a Proses 2 Proses 1 Proses 2
Lanjutan menyembunykan goto IF-THEN-ELSE Proses 1 Kondisi false true Proses 1 b Proses 1 a Proses 2 Analisa : Proses 1 If {kondisi=true } then goto lompat 1 else goto lompat 2 Lompat 1: Proses 1 b goto lompat 3 Lompat 2: Proses 1 a Lompat 3: Proses 2 Proses 1 If {kondisi=true } then Proses 1 b else proses 1 a end if Proses 2 Jika kondisi=true, urutan pelaksanaan : Jika kondisi=false, urutan pelaksanaan : Proses 1 b Proses 2 Proses 1 a Proses 2
Lanjutan menyembunykan goto IF-THEN-ELSE-IF Proses 1 Kondisi 1 false true Proses 2 a Kondisi 2 Proses 2 b Kondisi 3 Proses 2 c Proses 2 d Proses 3 Proses 1 If {kondisi 1=true } then goto lompat 1 If {kondisi 2=true } then goto lompat 2 If {kondisi 3=true } then goto lompat 3 Goto lompat 4 Lompat 1: Proses 2 a goto habis Lompat 2: Proses 2 b goto habis Lompat 3: Proses 2 c goto habis Lompat 4: proses 2 d Habis: proses 3 Proses 1 If {kondisi 1=true } then Proses 2 a else if {kondisi 2=true } then Proses 2 b else if {kondisi 3=true } then Proses 2 c else Proses 2 d end if Proses 3 Proses 1 Case of var Kondisi 1: Proses 2 a Kondisi 2: Proses 2 b Kondisi 3: Proses 2 c else Proses 2 d end case Proses 3
Lanjutan menyembunykan goto Looping : FOR I=1 to 5 Proses 1 For I=1 to 5 Proses 1 Proses 2 Next I Proses 3 Proses 2 Proses 3 I=1 Ulang : Proses 1 Proses 2 I=I+1 If I<=5 then goto Ulang Proses 3
Lanjutan menyembunykan goto Looping : WHILE While {kondisi} While {kondisi=true} Proses 1 Proses 2 Wend Proses 3 Proses 1 Proses 2 Proses 3 Ulang : If {kondisi=true} then Proses 1 Proses 2 goto Ulang Proses 3
Lanjutan menyembunykan goto Looping : UNTIL Proses 1 do Proses 1 Proses 2 Loop Until {kondisi=true} Proses 3 Proses 1 Until {kondisi} Proses 3 Ulang : Proses 1 Proses 2 If {kondisi=true} then goto Ulang Proses 3
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 - Type data pada Basic : • Bahasa pemrograman yang tidak memiliki fasilitas untuk mengungkapkan struktur data tertentu cendrung mengarahkan kode program ke bentuk yang kurang teratur - Type data pada Pascal : • Kemampuan struktur data suatu bahasa pemrograman ditentukan oleh kemampuan fasilitas type data yang dimilikinya • Type data secara umum terdiri dari : - Type data dasar standar : Integer, real, string, charakter, dan logic - Type data dasar tidak standar : sub range, enumerate - Type data majemuk : set, array, record, file - Type data dinamis : pointer ………………………………………………. - Type data pada C : ………………………………………………. - Type data pada Foxpro : ……………………………………………….
Tabel Perbandingan Bahasa Pemrograman (Berdasarkan kriteria pemrograman terstruktur) Kriteria Sub kriteria Kelengkapan deklarasi elemen program Struktur programnya; jelas dan tegas Fasilitas penulisan kode program; jelas dan tegas Ketegasan susunan deklarasi Kelengkapan simbol untuk penulisan kode Ketegasan penggunaan simbol (case sensitif – non case sensitif) 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 Operator aritmatik (+, -, *, /, ^), operator relasi (<, <=, >, >=, <>), operator logika (AND, OR, NOT), assignment (=) Fungsi-fungsi built-in (string, matematik, grafis, …) Fasilitas modular (baik internal maupun eksternal); lengkap Fasilitas debugging, mudah dan jelas Modular internal (procedure, function) Modular external (file kode terpisah) Kemudahan memahami pesan kesalahan Kelengkapan pesan (Syntex error, Compile error, Run-time error) TOTAL 4=Baik sekali 3=Baik 2=Cukup 1=Kurang Bahasa Pemrograman Basic Pascal C Foxpro
Metoda Desain Pemrograman Terstruktur Untuk membantu dan menjamin dihasilkannya program yang terstruktur, dapat digunakan beberapa metoda/alat berikut : Metode Perancangan Top-down Metada Perancangan Modular Implementasi internal : Procedure/Subprogram, Function Implementasi eksternal : file Unit/Header/Modul Diagram Nassi-Schneiderman Tabel Decision
Metode Perancangan Top-down Masalah Besar Sub Masalah A 1 Sub Masalah B Sub Masalah C Sub Masalah A 2 Masalah utama B C A 1 A Strategi umum dalam penyelesaian masalah besar; kompleks; rumit A 2
Contoh Top-down : Sistem Informasi Akademis Mahasiswa Perkuliahan Dosen Entry data Hapus data Laporan data
Metode Modular : Bagian Utama ……. . Call A ……. . Implementasi Top-down A ……. Call A 1 ……. Call A 2 ……. . B Call B ……. A 1 ……. A 2 ……. C Call C ……. Dapat diterapkan secara : - Internal : sub program, procedure, function - Eksternal : file unit, header, modul
Diagram Chart Nassi-Schneiderman Statemen 1 While kondisi Statemen 2 proses 2 Stateme 3 proses 2 Until kondisi ya if Contoh : tdk Mulai Masukkan Nilai koefisien A proses 1 Masukkan Nilai koefisien B Masukkan Nilai Koefisien C ya proses 1 if D = B*B-4*A*C tdk ya D<0 proses 2 Imajiner ya tdk D=0 Real sama tdk Real berbeda
Tabel Decision Rules 1 2 3 Langkah Pembuatan : - Menentukan kondisi yang akan diseleksi 4 - Menentukan jumlah kejadian yang mungkin terjadi untuk di-isi pada bagian kondisi Kondisi - Menentukan tindakan yang akan dilakukan untuk di-isi pada bagian aksi Aksi Contoh : Latihan : 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 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) Rules 1 2 3 4 Apakah nilai rata 2>=85 Y Y N N Apakah jumlah kehadiran>=90% Y N Mendapat bonus x x Tidak mendapat bonus
start C=2, M=3 Konversi flow chart ini ke bahasa pemrograman : a. Basic atau foxpro b. Pascal atau C C=C*M C=C+1 FF T C>12 C=C-M F C>M T F For I=M to C T I>M (I*C)>M F C<=M M=C+5 M=M+1 Next I C=C+M T C=M+1 M=C+1 P=C+M Cetak C Cetak M end M=P+2 C = 37 M = 25
Terima Kasih
- Slides: 36