Anda di halaman 1dari 25

T

U
G
A
S
LOGIKA DAN ALGORITMA

NAMA : AYU TARISA PUTRI


NPM :2020020027
KELAS: TI-A
Apa Itu Pemograman Berorientasi Objek (Object Oriented Programming)?

Pemograman Berorientasi Object atau dalam bahasa inggris lebih dikenal dengan
Object Oriented Programming (OOP) adalah sebuah paradigma dalam pemograman
yang menyelesaikan masalah program dengan menyediakan objek-objek(terdiri dari
beberapa attribute dan method) yang saling berkaitan dan disusun kedalam satu
kelompok atau yang disebut dengan class. Nantinya objek-objek tersebut akan
saling berinteraksi untuk menyelasaikan masalah program yang rumit.

Apa itu objek?

dan

Apa itu class?

Konsep diatas mungkin akan lebih mudah dipahami apabila kita melihat contoh
nyata dalam kehidupan. Misalkan saat anda duduk dibangku sekolah, anda pasti
ditempatkan dalam satu kelas yang berisikan siswa lainnya yang sama dengan anda.
Kita dapat menyimpulkan bahwa kelas itu sama dengan class yang kita gunakan
dalam OOP dan siswa-siswi yang berada dalam kelas tersebut sama dengan objek-
objek yang ada didalam class itu juga.
Untuk memahami topik ini dengan sedikit lebih baik, terdapat beberapa istilah
ataupun konsep dasar yang dapat dipahami dengan sedikit penjelasan dan
contohnya. Konsep-konsep tersebut adalah :

Encapsulation

Encapsulation adalah proses dalam menciptakan sebuah objek dimana terdapat


beberapa bagian atau attribute yang terbagi berdasarkan sifat yakni public(umum)
dan private (khusus). Sebagaimana yang kita ketahui dalam definisi OOP, objek
akan selalu berinteraksi dengan objek lain untuk menyelesaikan masalah dengan
mengakses proses dari objek tersebut. Untuk menghindari redundansi atau
ketidakakuratan program, maka diberikan batasan akses setiap objek terhadap objek
lain. Saat objek bisa mengakses method dari objek lain, maka kita
menyebutnya method bersifat public. Sedangkan saat suatu attribute hanya mampu
diakses oleh objek itu sendiri, maka kita menyebutnya sebagai attribute bersifat
private.

Inheritance

Saat membuat objek-objek dalam sebuah class, mungkin kita sering menemukan
sifat yang sama antar objek dan menulisnya berulang kali sebanyak objek yang
memiliki sifat tersebut. Hal itu tentu terlalu merepotkan dan memerlukan waktu
yang lebih lama. Oleh karena itu terdapat suatu konsep dalam OOP yang mampu
membantu kita dalam mengatasi masalah tersebut. Inheritance merupakan
hubungan antara dua objek atau lebih dimana akan terdapat sebuah objek utama
yang mewariskan attribute atau method yang dimilikinya kepada objek lain, baik
itu keseluruhan atau sebagian.
Misalkan saat kita membuat sebuah sistem informasi kampus yang akan diakses
oleh Dosen dan Mahasiswa. Kedua objek tersebut pasti memiliki attribut yang sama
seperti nama, umur, alamat, dan lainnya. Untuk menghindari penulisan ulang ketiga

attribut tersebut disetiap objek, ada baiknya kita membuat objek baru yang mampu
menyimpan ketiga attribute tersebut dan nantinya akan diwariskan kepada objek
Dosen dan Mahasiswa seperti gambar disamping. Lalu bagaimana objek Person
mengetahui apakah objek Dosen atau objek Mahasiswa yang mengaksesnya? Untuk
menghindari kebingungan saat diakses maka Objek Dosen dan Mahasiswa memiliki
attribute pembeda yang didefinisikan dalam masing-masing objek yaitu IdDosen
dan NIM mahasiswa. Pengaksesan ini juga erat kaitannya
dengan Polymorphism dimana sebuah objek yang diakses menggunakan konsep
inheritance juga memiliki attribute-attribute pembeda untuk mengedintifikasi setiap
objek tersebut.

Abstraction

Abstraction adalah konsep dimana terdapat berbagai objek yang sejenis, namun
pada saat memiliki impelementasi yang berbeda-beda. Kita dapat mengambil
sebuah objek dari contoh sebelumnya seperti objek Dosen. Dosen memiliki
kepentingan yang berbeda terhadap matakuliah yang tersedia dalam satu semester
akademik, namun sistem akan selalu mengenali objek Dosen sebagai suatu entitas
yang sama walaupun memiliki kepentingan yang berbeda-beda.

Composition
Composition adalah konsep dimana sebuah class terdiri dari beberapa bagian objek
yang terpisah dan memiliki fungsi yang berbeda-beda. Contoh paling mudah untuk
kita pahami adalah kembali pada contoh pertama. Tubuh manusia disusun oleh
beberapa class seperti tangan, kaki, kepala dan sebagainya. Class tangan terdiri dari
beberapa objek seperti Jari, Siku, dan Lengan. Kumpulan dari beberapa objek akan
membangun sebuah class dan kumpulan dari beberapa class akan membangun
sebuah program yang kita inginkan.

Mengenal Pemrograman Fungsional

Ketika banyak orang berbicara tentang topik pemrograman fungsional,


mereka selalu menyebutkan kata kunci 'fungsional' yang sering membingungkan.
Mereka selalu menyebutkan fitur yang disuguhkan pemrograman fungsional
seperti data yang tidak berubah, fungsi first-class dan optimisasi tail call. Mereka
juga selalu menyebutkan teknik yang selalu digunakan dalam pemrograman
fungsional seperti mapping, reducing, pipelining, recursing, currying dan fungsi
level atas lainnya. Mereka juga selalu bilang keuntungan pemrograman fungsional
seperti parallelization, lazy evaluation, dan determinism.
Namun jangan terpaku pada istilah tersebut, pemrograman fungsional mempunyai
karakterisitik yang penting yaitu 'The absence of side effects'. Artinya bahwa
pemrograman fungsional tidak bergantung pada data yang diluar fungsi, dan tidak
merubah data yang ada di luar fungsi.
Sebagai contoh perbedaan fungsi yang termasuk ke dalam pemrograman
fungsional dan bukan diimplementasikan dalam bahasa pemrograman Python
sebagai berikut:

Fungsional

def increment(a):
return a + 1

Pada contoh lain, pemrograman fungsional tidak melakukan iterasi dalam struktur
data seperti list, stack dan lain-lain. Untuk melakukan iterasi terhadap data, teknik
yang digunakan biasanya dengan fungsi map() dan reduce().

Cara kerjanya, fungsi map() berguna mengumpulkan item sebagai elemen baru dan
disimpan dalam koleksi kosong. Fungsi map() melakukan iterasi untuk setiap
koleksi dan menyimpan setiap nilai dalam koleksi baru yang kemudian
dikembalikan sebagai koleksi baru.

Sebagai contoh, dibawah ini merupakan implementasi kuadrat.

squares = map(lambda x: x * x, [0, 1, 2, 3, 4])

print squares

# result => [0, 1, 4, 9, 16]

Apa saja sih keuntungan yang disediakan pemrograman fungsional? Ini dia.

 Pemrograman fungsional membolehkan kita untuk menulis kode dengan


potensi bug yang rendah karena setiap komponen telah diisolasi.
 Penggunaan rekursif dan fungsi first-class membolehkan kita untuk
menampilkan bukti sederhana dari struktur kode.
 Parallelization, lazy evaluation, determinism dan masih banyak lagi.

Pemrograman fungsional termasuk kedalam paradigma menulis kode tanpa


merubah state. Alasan utamanya, pemrograman fungsional melakukan
pemanggilan fungsi yang dapat menghasilkan hasil yang sama secara berturut-
turut. Untuk melakukan implementasi pemrograman fungsional, kita bisa
menggnakan berbagai bahasa pemrograman yang mendukung fungsi first-class.
Dengan demikian pemrograman fungsional adalah pemrograman yang mempunyai
karakteristik 'The absence of side effects'. Artinya fungsi yang ditulis tidak
bergantung pada data. Pemrograman fungsional juga membawa gaya baru dalam
menulis kode sehingga bisa lebih menghemat baris kode. (yp)

Pemrograman Konkuren
Sebuah sistem komputer harus menangani beberapa program (task) yang harus
dieksekusi bersama dalam sebuah lingkungan(baik mono atau multi prosesor).
Pada pemrograman konkuren, kita tidak lagi berpikir sekuensial, melainkan harus
menangani komunikasi dan sinkronisasi antar program.
Alasan Pemilihan Pemrograman Konkuren bagi Pemrogram
 Lebih memahami tentang arsitektur komputer
 Design compiler
 Beberapa permasalahan sebagian besar dipecahkan dengan menggunakan
co-operating proses
 Mengurangi waktu pengerjaan/pelaksanaan proses
Perbedaan Operasi secara Sekuensial dan Konkuren
Operasi Sekuensial Operasi Konkuren
- O ─ O – -- O ─ O ─ O ─ O → -- │ │ -- > - O ─ O –
X= 5 X=A*B+C
Y= 3 * X + 4 Y=3*A+7
Bahasa Pemrograman Konkuren Java, C#, Erlang, Occam, Limbo, SR, Ada

Sifat-sifat Konkurensi
 Sinkronisasi Dua buah proses dikatakan berkomunikasi jika aksi dari sebuah
proses sepenuhnya mendahului proses berikutnya. Sinkronisasi berhubungan
dengan komunikasi.
 Nondeterministic Sebuah program dikatakan non-deterministic bila memiliki
lebih dari satu evaluasi strategi yang memungkinkan dan bebeda, yang
memberikan hasil-hasil yang berbeda.
 Mutual Exclusion Sebuah proses kadang membutuhkan akses yang eksklusif
terhadap sumber daya. Misalnya ketika sebuah proses memperbaiki struktur data,
tidak ada proses lain yang mengakses data yang sama

 pemrograman deklaratif 

adalah paradigma pemrograman yaitu gaya membangun struktur dan elemen


program komputer yang mengekspresikan logika komputasi tanpa menjelaskan
aliran kontrolnya. Banyak bahasa yang menerapkan gaya ini berusaha untuk
meminimalkan atau menghilangkan efek samping dengan menjelaskan apa yang
harus dicapai program dalam hal domain masalah , daripada menggambarkan
bagaimana menyelesaikannya sebagai urutan primitif bahasa pemrograman
( bagaimana dibiarkan hingga implementasi bahasa). Ini berbeda dengan
pemrograman imperatif, yang mengimplementasikan algoritma dalam langkah-
langkah eksplisit.

Pemrograman deklaratif sering menganggap program sebagai teori logika formal ,


dan perhitungan sebagai pengurang dalam ruang logika itu. Pemrograman
deklaratif dapat sangat menyederhanakan penulisan program paralel .

Bahasa deklaratif umum termasuk bahasa query database (misalnya, SQL ,


XQuery ), ekspresi reguler , pemrograman logika , pemrograman fungsional , dan
sistem manajemen konfigurasi .
Pemrograman deklaratif sering didefinisikan sebagai gaya pemrograman yang
tidak penting . Sejumlah definisi umum lainnya berupaya mendefinisikannya
hanya dengan

membandingkannya dengan pemrograman imperatif.

Sebagai contoh:

 Program tingkat tinggi yang menggambarkan apa yang harus dilakukan


komputasi.
 Bahasa pemrograman apa pun yang tidak memiliki efek samping (atau lebih
spesifik, transparan referensial )
 Bahasa dengan korespondensi yang jelas dengan logika matematika .

Definisi-definisi ini tumpang tindih secara substansial. Pemrograman deklaratif


berbeda dengan pemrograman imperatif dan prosedural . Pemrograman deklaratif
adalah gaya pemrograman non-imperatif di mana program menggambarkan hasil
yang diinginkan tanpa secara eksplisit mencantumkan perintah atau langkah yang
harus dilakukan. Bahasa pemrograman fungsional dan logis ditandai oleh gaya
pemrograman deklaratif. Dalam bahasa pemrograman logis , program terdiri dari
pernyataan logis, dan program dijalankan dengan mencari bukti pernyataan.

Dalam bahasa fungsional murni , seperti Haskell , semua fungsi tanpa efek
samping , dan perubahan status hanya direpresentasikan sebagai fungsi yang
mengubah keadaan, yang secara eksplisit direpresentasikan sebagai objek kelas
pertama dalam program. Meskipun bahasa fungsional murni adalah non-imperatif,
mereka sering menyediakan fasilitas untuk menggambarkan efek fungsi sebagai
serangkaian langkah. Bahasa fungsional lainnya, seperti Lisp , OCaml dan Erlang ,
mendukung campuran pemrograman prosedural dan fungsional.

Beberapa bahasa pemrograman logis , seperti Prolog , dan bahasa query basis
data , seperti SQL , sementara pada prinsipnya deklaratif, juga mendukung gaya
pemrograman prosedural.
Menentukan Bilangan Genap atau Ganjil

Deskripsi   :  

1. Masukkan sebuah bilangan

2. Bagi bilangan tersebut dengan bilangan atau angka 2

3. Jika bilangan menghasilkan sisa pembagian 0 maka genap

4. Jika bilangan tidak menghasilkan sisa pembagian 0 maka


  ganjil

Algoritma :

Read Bilangan

 If bil mod 2 = 0  then,

Ket = “Bilangan Genap”

Else

 Ket = “Bilangan Ganjil”

Endif

Catatan : Mod adalah sisa hasil bagi 


Flowchart  :

Flow Chart Algoritma Bilangan Genap / Ganjil


Source Code Bahasa C 
1. #include <stdio.h>
2.
3. main(){
4.      int bil;
5.      printf("Masukkan bilangan : ");
6.      scanf("%d",&bil);
7.      if(bil%2==0){
8.           printf("%d adalah bilangan genap\n\n",bil);
9.      }else{
10.           printf("%d adalah bilangan ganjil\n\n",bil);
11.      }
12.      return 0;
13. }

Hasil Running Program


Running Porgram

Pertukaran dua bilangan

Pertukaran Dua Bilangan

Contoh soal pertukaran dua variable :


Temukan logika dan buatlah algoritma beserta program untuk menukarkan dua
bilangan pada variable, dengan catatan dua bilangan tersebut di masukkan oleh
user !

Untuk melakukan 2 pertukaran bilangan pada suatu variable kita membutuhkan


wadah atau variable tambahan.

Logikanya : sama seperti kita akan menukarkan 1 gelas air susu dengan 1 gelas air
kopi kita anggap gelas A berisi air susu dan gelas B berisi air kopi, gelas yang
mula mula berisi air susu ingin menjadi air kopi dan juga sebaliknya gelas yang
mula mula berisi kopi ingin menjadi berisikan air susu.
Untuk menukarkannya tentu kita membutuhkan gelas tambahan sebagai
penampung salah satu air yang akan ditukar, kita anggap gelas C yang akan
menampung sementara. Benar begitu kan ? Kalo tidak ada gelas tambaha mau
bagaimana hayoh tuh nukerinnya ? :D

A ← Air Susu {mula mula gelas A berisi Air Susu}


B ← Air Kopi {mula mula gelas B berisi Air Kopi}
C ← A {gelas C diisi Air Susu, gelas A menjadi kosong}
A ← B {gelas A diisi Air Kopi, gelas B menjadi kosong}
B ← C {gelas B diisi Air Susu dari gelas C, gelas C menjadi kosong lagi} 

Sehingga kita dapatkan Algoritma untuk menukarkan 2 bilangan pasa suatu


variable berbeda sebagai  berikut :

Pertukaran Dua Variabel


{ I.S. : mengubah variabel angka 1 menjadi variabel angka 2 dan variabel angka 2
menjadi variabel angka 1 }
{ F.S. : menampilkan output angka 1 dan angka 2 yang bertukar dengan variabel
bantuan }
Kamus :
   angka1,angka2,temp : integer
Algoritma :
   {Judul}
   Output('Pertukaran Angka Dengan Variabel Bantuan')
   Output('----------------------------------------')
   { memasukan variabel angka yang mau ditukar }
   Input(angka1)
   Input(angka2)
   { proses Pertukaran }
   temp    ← angka1 {temp sebagai variable bantuan}
   angka1 ← angka2
   angka2 ← temp
   { menampilkan hasil pertukaran angka }
   Output(angka1)
   Output(angka2)

Dan Program Pascal pertukaran dua bilangan variable sebagai berikut :

program pertukaranduavariabel;
{ I.S. : mengubah variabel angka 1 menjadi variabel angka 2 dan variabel angka 2
menjadi variabel angka 1 }
{ F.S. : menampilkan output angka 1 dan angka 2 yang bertukar dengan variabel
bantuan }
uses crt;
var
   angka1,angka2,temp : integer;
begin
   { memasukan variabel angka yang mau ditukar }
   writeln('Pertukaran Angka');
   writeln('----------------');
   write('Masukan Angka ke-1 = ');readln(angka1);
   write('Masukan Angka ke-2 = ');readln(angka2);
   writeln;
   { proses Pertukaran }
   angka1 := angka1;
   angka2 := angka2;
   temp := angka1;
   angka1 := angka2;
   angka2 := temp;
   { menampilkan hasil pertukaran angka }
   writeln('Angka ke-1 menjadi = ',angka1);
   write('Angka ke-2 menjadi = ',angka2);
   readln;
end.

Tampilan program :

Gambar 2.1 User telah memasukkan dua bilangan

Gambar 2.2 Menampilkan hasil pertukaran dua bilangan


Dan untuk 3 buah variable sampai banyak Bilangan pada Variable juga konsepnya
sangat sama dengan pertukaran untuk 2 variable, yaitu membutuhkan 1 variable
bantuan sebagai penampung sementara variable untuk dipindahkan ke variable
lainnya.
Misalnya
Buatlah algoritma untuk menukarkan 3 bilangan pada variable ! Dengan catatan
ke-3 bilangan tersebut dimasukkan oleh user !
Algorimanya sebagai berikut :

menukar_tiga_buah_bilangan_bulat
{ I.S. : user memasukan nilai x,y dan z dengan bilangan bulat }
{ F.S. : menampilkan hasil pertukaran tempat x,y,z menjadi y,z,x }
Kamus :
   x,y,z,temp : integer
Algoritma :
   Input(x)
   Input(y)
   Input(z)
   x ←x
   y ← y
   z ← z
   temp ← x {temp sebagai variable bantuan}
   x ← y
   y ← z
   z ← temp
   Output('Nilai x menjadi = ',x)
   Output('Nilai y menjadi = ',y)
   Output('Nilai z menjadi = ',z)

Bila anda tidak mempunyai aplikasi pemrograman pascalnya, bisa


Pseude code Biodata Mahasiswa

Kembali lagi kali ini saya membagikan contoh program C++ biodata


mahasiswa. Buat teman-teman yang sedang belajar bahasa pemrograman C++
kalian perlu banyak ‘jam terbang’ dimana terus belajar coding dengan contoh-
contoh program yang ada. Namun bukan hanya jago coding saja melainkan perlu
memahami algoritma dari program yang dibuat. Karena walaupun kalian bisa hafal
sintak, fungsi, class dan lainnya namun jika tidak menguasai konsep algoritma,
maka akan sangat kesulitan kedepannya untuk membuat/mengembangkan aplikasi
dengan skala yang besar.
Baca juga : Program C++ Struct Data mahasiswa
Program yang akan kita belajar kali ini adalah program dengan struktur algoritma
sekuensial dimana program mengeksekusi setiap sintak dari awal hingga akhir
tanpa ada perulangan maupun percabangan. Oleh sebab itu sebenarnya program ini
termasuk sangat sederhana, namun bagi pemula contoh program ini sudah cukup
bagus sebagai bahan pembelajaran.
Program ini akan berjalan, dimana user akan menginput beberapa field mahasiswa
seperti:
 Nama
 Alamat
 NIM (Nomor Induk Mahasiswa)
 Jurusan

Program C++ Input Data Mahasiswa

#include <iostream>

#include <string>

using namespace std;

int main (){

string nama;

string alamat;

string nim;

string jurusan;

cout<<"Masukan Data Berikut : "<<endl<<endl;

cout<<"Nama : ";
getline (cin, nama);

cout<<"Alamat : ";

getline (cin, alamat);

cout<<"NIK : ";

getline (cin, nim);

cout<<"Jurusan : ";

getline (cin, jurusan);

cout<<endl;

cout<<"DATA MAHASISWA"<<endl;

cout<<"------------------------------"<<endl;

cout<<"Nama : "<<nama<<endl;

cout<<"Alamat : "<<alamat<<endl;

cout<<"NIK : "<<nim<<endl;

cout<<"Jurusan : "<<jurusan<<endl;
}

Hasil Ouput

Penjelasan:

Pada program diatas saya include 2 header :

 Iostream : Untuk proses input/output program


 String : Untuk mengenali tipe data string
Sintak using namespace std berfungsi memanggil namespace dengan nama std.
sebagai standar untuk memanggil fungsi/class dan lainnya. Dalam hal ini
fungsi cout tidak perlu kita tambahkan kata kunci std didepannya karena sudah
kita deklarasikan diatas.

Pada program ini kita membuat 4 variabel yaitu nama, alamat,nim, jurusan
semuanya bertipe string.
Program akan meminta pengguna untuk memasukan setiap nilai dan akan disimpan
pada masing-masing variabel. Nilai yang dimasukan kita menggunakan
perintah getline. Apa itu perintah getline ?
Perintah getline sejatinya sama dengan perintah cin yang berfungsi sebagai
perintah masukan (input). Mungkin kalian sering menggunakan perintah cin saat
ingin input data (saat program running). walaupun kedua perintah tersebut pada
dasarnya sama namun terdapat perbedaan loh dari keduanya.
Artikel lainnya : Contoh program C++ sederhana

Jika kalian perhatikan fungsi cin mempunyai kelemahan dimana perintah ini akan
menganggap karakter kosong (spasi) sebagai akhir dari sebuah inputan, sehingga
tidak jarang ketika kita ingin mengetikan lebih dari 1 kata maka fungsi cin akan
menggangap inputan berakhir saat kata pertama lalu spasi kita ketikan. Dengan
demikian fungsi cin hanya dapat menampung satu kata saja tanpa spasi. Berbeda
dengan fungsi getline dimana fungsi ini dapat menampung lebih dari satu kata.

Karena kita membuat biodata mahasiswa contoh pada field nama tentu setiap


orang pasti akan mempunyai nama lebih dari satu kata sehingga kita tidak dapat
menggunakan perintah cin melainkan getline.
ALGORITMA & FLOWCHART; APLIKASI PENGHITUNG LUAS &
KELILING PERSEGI PANJANG

 Algoritma mencari luas persegi panjang ;

1. Masukkan panjang dan lebar persegi panjang


2. Hitung; l=P*L
3. Tampilkan Hasil
4. Selesai
 Algoritma mencari keliling persegi panjang ; 

1. Masukkan panjang dan lebar persegi panjang


2. Hitung; l=P*L
3. Tampilkan Hasil
4. Selesai

Anda mungkin juga menyukai