Anda di halaman 1dari 12

TUGAS-1 REVIU

DRAFT DIKTAT KULIAH DASAR PEMROGRAMAN

(Bagian Pemrograman Prosedural) OLEH INGGRIANI LIEM

Tugas ini diajukan untuk memenuhi nilai mata kuliah Pemrograman Dasar

Dosen pengampu:

Taufik Ridwan, S.T., M.T.

DISUSUN OLEH:

NAMA : MARDANI MASTIAR

NIM : 2009009

KELAS : 3B PSTI

PROGRAM STUDI PENDIDIKAN SISTEM TEKNOLOGI DAN INFORMASI

UNIVERSITAS PENDIDIKAN INDONESIA

KAMPUS DAERAH PURWAKARTA

2021
PENDAHULUAN

Komputer merupakan alat untuk menyelesaikan suatu masalah. Namun, untuk mencapai tujuan
tersebut komputer memerlukan suatu strategi pemecahan masalah untuk menghasilkan solusi.
Strategi tersebut merupakan program yang ditanamkan di komputer yang dihasilkan melalui
berbagai pendekatan paradigma. Komponen dasar dari semua pemrograman adalah sama,
kendati implementasi dan cara konstruksinya tergantung paradigma dan bahasa pemrograman.

Paradigma Pemrograman

Paradigma adalah unsur tertentu yang diutamakan terhadap suatu masalah yang membatasi
jalan berpikir kita pada atribut tertentu dan memberikan pandangan terbatas terhadap suatu
realitas. Oleh karena itu, fanatisme paradigmatik bisa mempersempit wawasan dan kadang
berbahaya.

“… fanatisme paradigmatik bisa mempersempit wawasan dan kadang berbahaya.”

Masing-masing paradigma dalam pemrograman memiliki prioritas analisis dan pendekatan


khusus untuk mencapai solusi dari masalah keseluruhan. Beberapa masalah dapat diatasi
dengan paradigma ‘A’, sedangkan masalah lain tidak. Maka, diperlukan paradigma lain untuk
memperluas strategi pemrograman, karena satu paradigma tak bisa mengatasi semua kelas
persoalan. Ilmu pemrograman yang dihasilkan dari proses pemahaman permasalahan, analisis,
sintesis dan dituangkan menjadi kode dalam bahasa komputer secara sistematis dan
metodologis menggantikan seni memrogram trial and error (penyelesaian masalah melalui
berbagai percobaan yang diulang hingga sukses).

1. Paradigma Prosedural / Imperatif


Berdasarkan stored program concept Von Newmann, yaitu memori yang dibedakan
menjadi instruksi dan data (strukturasi informasi dan manipulasi); masing-masing
dapat diberi nama dan harga(?). Instruksi dieksekusi satu per satu, diperiksa, dan
dimodifikasi secara sekuensial oleh pemroses tunggal. Beberapa instruksi menentukan
instruksi berikutnya yang akan dieksekusi (percabangan kondisional).
Algoritma + Struktur Data = Program
Kekurangan paradigma ini harus berpikir dalam batasan mesin yang terkadang lebih
mengikat dari batasan problematik, sedangkan kelebihannya pada efisiensi eksekusi
karena dekat dengan mesin.

1
2. Paradigma Fungsional
Didasari pemetaan dan fungsi matematika, baik fungsi primitif maupun yang telah
terdefinisi. Penyelesaian masalah bersifat transformasional, yaitu didasari aplikasi dan
asumsi fungsi-fungsi dasar tersebut dapat dilakukan. Dalam arti lain, program tersebut
adalah rantai transformasi keadaan awal, (mungkin melalui) antara, dan keadaan akhir.
Fokus perhatian pada keadaan awal dan akhir dengan fungsi sebagai ‘kotak hitam’ yang
dirakit dan menghasilkan program besar. Kelebihan paradigma ini pemrogram tidak
harus mengetahui proses eksekusi dan penyimpanan informasi dalam memori.
Sedangkan kekurangannya adalah kinerja dan efisiensi karena pemroses bahasa
program fungsional harus bekerja ekstra dibandingkan paradigma prosedural.
3. Paradigma Deklaratif, Predikatif, atau Lojik
Didasari oleh predikat (relasi antar individu) yang merupakan kumpulan aksioma
(fakta dan aturan deduksi). Pemrogram menguraikan inference rules (fakta dan aturan-
aturan). Saat program dieksekusi, pemakai mengajukan query dan program akan
menjawab dengan aturan deduksi dan mencocokkan pertanyaan dengan aturan dan
fakta yang ada.
4. Paradigma Berorientasi Objek (Object Oriented)
Didasari oleh objek yang mempunyai atribut dan kelakuan. Objek dapat saling
berkomunikasi melalui ‘pesan’. Kelas adalah objek beratribut sama. Hierarki kelas
menurunkan atribut ke kelas dibawahnya. Konsep class, generic, inheritance,
polymorphism, dan urgensi pendefinisian statik kelas untuk menciptakan objek ketika
runtime (memungkinkan penurunan kelas, objek ‘berubah’ bentuk dengan kelakuan
disesuaikan), yang kemudian dimanipulasi / saling berinteraksi. Definisi kelakuan
masih terdapat paradigma imperatif (sekuensial, assignment, analisis kondisional, dan
pengulangan). Konstruksi program dari objek dan kelas berbeda dengan konstruksi
program dari struktur data dan algoritma, karena menggunakan bahasa
prosedural/fungsional yang ditambahi ciri orientasi objek.
5. Paradigma Konkuren
Arsitektur hardware memungkinkan pemrosesan paralel / software sisrem terdistribusi
yang memngelola akses konkuren.
6. Paradigma Relasional
Didasari entity dan relasi, serta pemrograman dalam bahasa query yang memungkinkan
diperolehnya suatu himpunan nilai.

2
Bahasa Pemrograman

3
Ada banyak sekali bahasa pemrograman, mulai dari bahasa tingkat rendah (bahasa mesin dalam
biner), bahasa assembler (dalam kode mnemonik), bahasa tingkat tinggi, sampai bahasa
generasi keempat (4GL). Bahasa Pemrograman berkembang cepat sejak 60-an, seringkali
dianalogikan dengan menara Babel (untuk mewakili kumpulan besar bahasa pemrograman)
yang berakibat manusia menjadi tidak lagi saling mengerti bahasa masing-masing. Untuk
setiap paradigma, tersedia bahasa pemrograman yang mempermudah implementasi rancangan
penyelesaian masalahnya. Contoh bahasa-bahasa pemrograman yang ada:

1. Prosedural: Algol, Pascal, Fortran, 5. Konkuren: OCCAM, Ada, Java.


Basic, Cobol, C.
6. Relasional: SQL pada basisdata
2. Fungsional: LOGO, APL, LISP. relasional.

3. Deklaratif/lojik: Prolog. 7. Object oriented : Turbo Pascal (ver.


5.5), C++, LISP, Prolog
4. Object oriented murni: Smalltalk, Eifel,
Jaca, C++.

Program dalam bahasa pemrograman akan diproses oleh pemroses bahasa. Kategori pemroses
bahasa = kompilator dan interpreter. Bahasa pemrograman = visual atau tekstual.

Belajar Pemrograman ≠ Belajar Bahasa Pemrograman


 Pemrograman
o Mempelajari strategi pemecahan masalah, metodologi, sistematika pemecahan
masalah, serta pengetahuan tentang kelas persoalan dan dituangkan dalam
notasi yang disepakati bersama.
o Esensi pemrograman adalah tidak mengulang hal yang sama dengan cara
strategi pengenalan masalah (dekomposisi, modul, dan sintesa) dan metologi
penting untuk memakai rutin orang lain, karena kehadiran algoritma baru relatif
lebih sedikit dibandingkan modifikasi yang sudah ada.
o Pemahaman persoalan, analisis, sintesis
o Memerlukan kepakaran, dan berakhir secara konkrit dalam bentuk program
yang ditulis dan dieksekusi dalam bahasa target
o Program = produk dengan rancangan yang baik (metologis, sistematis,
executionable, functionable, input possibility, dan documentation supported)
o Designer Program
 Bahasa Pemrograman
o Memakai suatu bahasa, sintaks, instruksi, dan tata cara operasi kompilator
bahasa bahasa yang bersangkutan pada mesin tertentu.
o Memanfaatkan metode yang dapat dipakai spesifik pada bahasa tertentu,
bersifat keterampilan
o Beberapa bahasa dapat termasuk dalam sebuah paradigma, pemecahan masalah
satu paradigma bisa diterjemahkan pada berbagai bahasa.
o Urgensi notasi agar masalah dapat diterjemahkan dalam salah satu bahasa yang
masih dalam lingkup paradigma yang sama.

4
o Proses koding (semi otomatik dengan aturan pengkodean)
o Coder Program

Design harus dapat dicode agar bisa di execute, maka pemrograman dan bahasa
pemrograman itu komplementer.

Metode contoh tipikal = contoh program ‘pola solusi’ dari kelas-kelas persoalan yang dapat
diselesaikan, yang dikembangkan dan dipakai sesuai paradigma pemrograman.

Program : Produk vs. Proses


- Product Oriented, produk yang baik bisa dihasilkan dari proses yang semrawut.
- Process Oriented, proses yang baik menjamin hasil produk yang baik pula
(Proses pembuatan program sesuai prosedur standard).

Program Skala Kecil dan Program Skala Besar


- Analogi perbandingan pembangunan gedung skyscraper dan rumah kecil sederhana.
- Sesuatu yang besar terdiri dari komponen-komponen kecil. Elektronik canggih terdiri
dari komponen ‘standard’ yang dirakit.
- Produsen komponen (produk yang difabrikasi terpisah) dan perakit yang memakai
komponen.
- Program yang besar dan baik terdiri dari modul/komponen kecil yang dikerjakan
banyak orang. Maka, ada penyedia modul dan pemakai modul.
- Skala komponen,
o Setara ‘suku cadang’
o Komponen utama
o Engine (library, framework, platform, dll.)

Pemrogam Individu dan Pemrogram dalam Tim


- Zaman dulu, banyak programer yang bekerja sendirian
- Sekarang, skala program yang dibutuhkan jauh lebih besar. Ibarat orkestra, yang
dipimpin konduktor agar pertunjukan sukses. Kerja keras dan kemauan individu untuk
selaras dengan konduktor.
- Urgensi standard (pola kerja, aturan main, koordinasi) untuk menghasilkan produk
yang diharapkan, maka pemrogram dan perancang program harus mampu bekerja sama
dengan orang lain.

Aktifitas Mahasiswa
- Analogi penyanyi dan olahragawan
- Aktivitas mahasiswa yang belajar pemrograman;
o Simulasi
Sensibilitas terhadap masalah dan kemungkinan solusi (ex. Permainan
mengurut dokumen atau kartu)

5
MENCERMINKAN PERAN-PERAN SESEORANG DALAM SIKLUS

o Analisis Requirement dan Desain


Terhadap masalah secara formal, membuat dokumen spesifikasi dan rancangan
HIDUP DALAM SEBUAH PERANGKAT LUNAK

algoritma dalam notasi standar (fokus pada kerangka pemecahan masalah,


bukan detil aturan penulisan)
o Menulis Program
Menerjemahkan algoritma ke program secara ‘setia’ sesuai aturan
penerjemahan
o Debugging dan Menguji Coba Program
Dua kali ‘run’; pertama untuk membersihkan salah sintaks, dan kedua untuk
mendapatkan program benar. Kesalahan lojik jarang terjadi jika analisis benar.
o Mengamati Peristiwa Eksekusi
Analisis yang benar memudahkan sisa pekerjaan.
- Pada paradigma prosedural untuk memahami fenomena eksekusi dan
perubahan nilai suatu struktur data.
- Pada paradigma lain = mekanisme eksekusi dan pemroses bahasa
- P. Fungsional = mekanisme aplikasi fungsi
- P. Deklaratif = menunjukkan proses deduksi dan inferensi
- OOP = kaitan suatu objek dengan objek lain saat runtime, dan
mekanisme encapsulation, inheritance, memory management.
o Membaca Program
Dialektika (saling menukar dan mengkritik) algoritma dengan teman
o Membuktikan Kebenaran Program Secara Formal, pembuktian program lima
baris dapat memenuhi satu halaman. Satu-satunya hal yang menjamin
kebenaran, namun kontradiktif dan sulit diterapkan dalam kehidupan sehari-hari

Tujuan Kuliah Pemrograman Prosedural


Membekali mahasiswa cara berpikir dan pemecahan persoalan prosedural, modul dasar dari
algoritma pemrograman, menghasilkan solusi tanpa tergantung bahasa pemrograman, mampu
mengeksekusi program dengan salah satu bahasa pemrograman prosedural sederhana
menggunakan mesin yang tersedia.

1. Solusi paradigma prosedural, menuliskan spesifikasi, dan algoritma tanpa tergantung


bahasa pemrograman apapun
2. Menulis algoritma dari suatu masalah dengan metodologi skema standard
3. Menulis program yang baik dalam bahasa pemrograman dengan aturan translasi,
program harus terstruktur walaupun bahasanya bukan yang terstruktur

Mahasiswa mencoba algoritma terlebih dahulu sebelum dibahas di kelas, mencoba dengan
bahasa tingkat tinggi, memiliki pustaka yang lengkap, praktikum komputer dibimbing pada
awal perkuliahan.

6
PENGERTIAN DASAR
Dalam Pemrograman Prosedural
- Aksi

Kejadian pada selang waktu terbatas dan menghasilkan efek neto yang telah terdefinisi
dengan baik dan memang direncanakan. Dimulai pada T0 dan berakhir pada T1 . Efek neto =
membandingkan keadaan pada saat T0 dan saat T1

Contoh;

Ibu Tati yang MENGUPAS KENTANG untuk mempersiapkan makan malam.


Luas ruang lingkup harus dibatasi, agar dapat merencanakan titik tolak mengupas kentang dan
keadaan akhir yang ingin dicapai demi efek neto yang diinginkan.

- Initial state (I.S) : T0, adalah kentang sudah ada di kantong kentang, yang ditaruh di rak
di dapur, di mana Ibu Tati akan mengupasnya
- Final state (F.S.) : T1, kentang dalan keadaan terkupas di panci, siap untuk dimasak dan
kantong kentangnya harus dikembalikan ke rak lagi.

Suatu kejadian dapat diurakan lagi = sub aksi sekuensial, efek kumulatif = efek neto seluruh
kejadian. -> Sequential process / proses.

Kejadian = aksi atau proses, relatif. Kejadian sebagai proses, menitikberatkan pada efek neto
(keadaan sebelum dan sesudah).

sub-aksi awal sub-aksi awal sub-aksi awal


T0 T1
sub-aksi akhir sub-aksi akhir sub-aksi akhir
Figure 1 Proses

Penggolongan proses atau aksi tidak mempengaruhi sifat kejadian, tapi cara peninjauan.

Peninjauan A Peninjauan B

• Ambil kantong kentang dari rak • Ambil kantong kentang dari rak dan
• Ambil panci dari almari panci dari almari
• Kupas kentang • Kupas kentang
• Kembalikan kantong kentang dari rak • Kembalikan kantong kentang ke rak

Ada kejadian yang memiliki pola. Efek neto seluruhnya dipengaruhi pola atau kejadian awal,
jika dua kejadian dengan pola yang sama menghasilkan efek neto yang berbeda, maka dapat
dipastikan kejadian awalnya pun berbeda. Analogi pola yang sama dengan berbagai kejadian;
teman = pola, ekspresi = kejadian.

Persepsi aksi mengenai ‘hal yang sama’; mengupas kentang di hari sabtu dan minggu, seragam
anak sd. Kejadian berbeda karena kentang hanya dapat dikupas satu kali, dan seragam masing-
masing anak berbeda ukuran. Kejadian sama karena kentang dikupas untuk makan malam, dan
seragam dibuat dari bahan dan model yang sama.

7
- Algoritma

Deskripsi dapat terdiri dari suatu pola, dinyatakan primitif (aksi-aksi yang didefinisikan
sebelumnya dan diberi nama), dan diasumsikan sebelumnya bahwa aksi-aksi tersebut dapat
dkerjakan sehingga dapat menyebabkan kejadian yang diamati. Suatu algoritma dapat berisi
sub-algoritma, harus merupakan aksi primitif yang dapat dikerjakan, urutan langkah harus
dimengerti baik oleh pembuat maupun yang menjalankan, dan instruksi yang jelas/detail.

Algoritma = menyatakan cara-cara untuk melakukan sesuatu (sederet aksi-aksi bernama yang
harus dikerjakan dengan urutan tertentu), laporan pengamatan = kejadian itu sendiri.

- Jika aksi kondisional, maka diberi notasi;


if …(Kondisi)… then
Aksi
- Jika aksi pengulangan sampai dijumpai keadaan tertentu, diberi notasi;
while …(Kondisi)… do
Aksi
- Algoritma dapat dibangun dari aksi primitif dan gabungan notasi standard;
• Ambil kantong kentang dari rak
• Ambil panci dari almari
• depend on baju
berwarna muda : pakai celemek
tidak berwarna muda : -
• while jumlah kentang terkupas belum cukup do
depend on kantong kentang
ada isinya : Kupas 1 kentang
tidak ada isinya : Ambil kantong kentang lain dari rak
Kupas 1 kentang
- Error looping terjadi jika kondisi dan aksi tidak terjadi pada selang waktu terbatas
- Tanggung jawab moral pembuat algoritma untuk mempersiapkan bukti bahwa
algoritma yang dibuatnya adalah sebuah algoritma yang benar

- Mesin

Pengeksekusi / pelaku algoritma yang ber-mekanisme dapat menyebabkan aksi terjadi


mengikuti pola yang dijelaskan algoritma yang urutan pelaksanaan dinyatakan dalam aksi
primitif mesin tersebut. Algoritma dinyatakan dalam primitif dan melahirkan teks ‘pengamatan
kejadian’ Siapapun yang mampu;

- Mengerjakan aksi primitif tersebut


- Menerima algoritma yang dinyatakan primitif tersebut, dan
- Akan melaksanakan langkah-langkah dengan patuh, disebut sebagai mesin.
- Aksi sekuensial, menerima pola dan berkelakuan sesuai pola tersebut.

Algoritma pengontrol pola mesin = program.

8
Latihan Soal
I. Periksalah apakah masing-masing algoritma “mengupas kentang” berikut benar: Pada
algoritma ini kita hanya tertarik pada aksi mengambil kentang dan kantong dan
mengupas kentang.

1. while jumlah kentang terkupas belum cukup do


depend on kantong
kantong berisi 1 kentang : Kupas 1 kentang
BENAR

2. while kantong tidak kosong do


Kupas 1 kentang
Kupas 1 kentang
ERROR, LOOPING

3. while kantong tidak kosong do


while jumlah kentang terkupas belum cukup do
Kupas 1 kentang
BENAR

4. while (kantong tidak kosong) dan (jumlah kentang terkupas belum cukup) do
Kupas 1 kentang
BENAR

5. while jumlah kentang terkupas belum cukup do


depend on kantong
kantong tidak kosong : kupas 1 kentang kantong
kosong : ambil kantong lain
BENAR

6. while jumlah kentang terkupas belum cukup do while


kantong tidak kosong do
Kupas 1 kentang
BENAR

7. while jumlah kentang terkupas belum cukup do


depend on kantong
kantong tidak kosong : Kupas 1 kentang
kantong kosong :-
BENAR

8. while kantong ada isinya do


depend on jumlah kentang terkupas
jumlah kentang terkupas belum cukup : Kupas 1 kentang jumlah
kentang terkupas cukup : Ambil kantong lain
Kupas 1 kentang
ERROR, LOOPING

9
9. while kantong ada isinya do
depend on jumlah kentang terkupas
jumlah kentang terkupas belum cukup : Kupas 1 kentang
jumlah kentang terkupas cukup : Stop
BENAR

10. depend on kantong


kantong tidak kosong : while jumlah kentang terkupas belum cukup do kupas
1 kentang
kantong kosong : beli kentang lagi
ERROR(?)

11. Pada algoritma ini berlaku hipotesis: mula-mula kantong penuh


Kupas 1 kentang
depend on jumlah kentang terkupas
jumlah kentang terkupas belum cukup : kupas 1 kentang
jumlah kentang terkupas cukup : kembalikan kantong ke raknya
BENAR

12. while kantong ada isinya do


Kupas 1 kentang
depend on jumlah kentang terkupas
jumlah kentang terkupas belum cukup : cari kentang lagi
jumlah kentang terkupas cukup : -
ERROR

13. while (jumlah kentang terkupas belum cukup) dan (kantong ada isinya) do kupas
1 kentang
BENAR

14. depend on kantong


kantong ada isinya :
while jumlah kentang terkupas belum cukup do
Kupas 1 kentang
kantong tidak ada isinya :
Taruh kentang dalam kantong
while jumlah kentang terkupas belum cukup do
Kupas 1 kentang
BENAR(?)
II. Distribusi gula-gula

a. Ada sekantong gula-gula, hendak dibagikan merata ke empat orang anak. Tiap anak
harus mendapat jumlah yang sama, dan jika sisanya tidak cukup untuk dibagikan ke empat
anak tersebut, maka sisanya tidak dibagikan. Tuliskanlah algoritmanya.

 Ambil gula dari kantong


 Bagikan gula ke empat orang anak dengan jumlah yang sama
 if sisa gula cukup then
bagikan

10
b. Jika gula-gula tersebut mempunyai rasa jeruk, mentol, arbei dan durian, dan setiap anak
harus mendapat jumlah dan rasa yang sama, tuliskan pula algoritma untuk membaginya.

 Ambil gula dari kantong


 Bagikan gula ke empat orang anak dengan jumlah yang sama
 if sisa gula cukup then
bagikan

Catatan: Definisikan dahulu aksi primitif untuk persoalan ini.

11

Anda mungkin juga menyukai