Halaman

Halaman

Halaman

Minggu, 10 November 2019

Daftar Pustaka

Daftar Pustaka
Terima Kasih kepada situs yang saya pakai ilmunya disitus saya

https://www.google.com/amp/s/teknojurnal.com/pengertian-algoritma-pemrograman/amp/ (algoritma)

https://pelajarindo.com/pengertian-pseudocode-dan-contohnya/ (pseudocode)

https://www.musbikhin.com/konversi-bilangan/ (konversi)

https://www.logicgates.id/blogs/news/pengertian-dan-jenis-gerbang-logika-logic-gates (gerbang logika)

https://www.google.com/amp/s/informatikalogi.com/pengertian-flowchart-dan-jenis-jenisnya/ (flowchart)

https://www.google.com/amp/s/elvandri.wordpress.com/2016/01/22/algoritma-penjadwalan-fcfs-sjf-rr/amp/
(Penjadwalan FCFS,SJF,RR)

https://www.google.com/amp/s/deny873.wordpress.com/2017/08/01/cara-membuat-kalkulator-menggunakan-bahsa-c/amp/
(Modularitas Kalkulator)

Tugas Algoritma 4

Modularitas Kalkulator

Membuat kalkulator dengan bahasa c++


#include <iostream>
#include <conio>
int a, b, c;
void fungsi_input()
{
cout<<“Masukkan 3 angka:”<<endl;
cout<<“Masukkan angka pertama= “; cin>>a;
cout<<“Masukkan angka kedua  = “; cin>>b;
cout<<“Masukkan angka ketiga = “; cin>>c;
}
void fungsi_tambah()
{
int hasil;
fungsi_input();
hasil=a+b+c;
cout<<“Hasil pertambahan= “<<hasil;
cout<<endl;
}

void fungsi_kurang()
{
int hasil;
fungsi_input();
hasil=a-b-c;
cout<<“Hasil pengurangan= “<<hasil;
cout<<endl;
}
void fungsi_kali()
{
int hasil;
fungsi_input();
hasil=a*b*c;
cout<<“Hasil perkalian= “<<hasil;
cout<<endl;
}
void fungsi_bagi()
{
int hasil;
fungsi_input();
hasil=a/b/c;
cout<<“Hasil pembagian= “<<hasil;
cout<<endl;
}

void fungsi_pilih()
{
int pilih;
clrscr();
cout<<“Program Kalkulator”<<endl;
cout<<“Pilih Operasi yang Anda Inginkan”<<endl;
cout<<“1. Penjumlahan.”<<endl;
cout<<“2. Pengurangan.”<<endl;
cout<<“3. Perkalian.”<<endl;
cout<<“4. Pembagian.”<<endl<<endl;
cout<<“Masukkan Pilihan: “; cin>>pilih;
switch(pilih)
{
case 1:
fungsi_tambah();
break;
case 2:
fungsi_kurang();
break;
case 3:
fungsi_kali();
break;
case 4:
fungsi_bagi();
break;
default:
cout<<“Input salah”<<endl;
}
}

void main()
{
char y;
do
{
fungsi_pilih();
cout<<“Apakah anda ingin mengulang? (y/n) “; cin>>y;
}
while(y==’y’||y==’Y’);
getch();
}

Algoritma Penjadwalan

Algoritma Penjadwalan
(FCFS,SJF,FF)
FCFS (First Come First Served)
Algoritma ini merupakan algoritma penjadwalan yang paling sederhana yang digunakan CPU. Dengan menggunakan algoritma ini setiap proses yang berada pada status ready dimasukkan kedalam FIFO queue atau antrian dengan prinsip first in first out, sesuai dengan waktu kedatangannya. Proses yang tiba terlebih dahulu yang akan dieksekusi.

Contoh

Ada tiga buah proses yang datang secara bersamaan yaitu pada 0 ms, P1 memiliki burst time 24 ms, P2 memiliki burst time 3 ms, dan P3 memiliki burst time 3 ms. Hitunglah waiting time rata-rata danturnaround timeburst time + waiting time) dari ketiga proses tersebut dengan menggunakan algoritma FCFS. Waiting time untuk P1 adalah 0 ms (P1 tidak perlu menunggu), sedangkan untuk P2 adalah sebesar 24 ms (menunggu P1 selesai), dan untuk P3 sebesar 27 ms (menunggu P1 dan P2 selesai).
Gambar 14.1. Gantt Chart Kedatangan Proses
Urutan kedatangan adalah P1, P2 , P3; gantt chart untuk urutan ini adalah:
Waiting time rata-ratanya adalah sebesar(0+24+27)/3 = 17ms. Turnaround time untuk P1 sebesar 24 ms, sedangkan untuk P2 sebesar 27 ms (dihitung dari awal kedatangan P2 hingga selesai dieksekusi), untuk P3 sebesar 30 ms. Turnaround time rata-rata untuk ketiga proses tersebut adalah (24+27+30)/3 = 27 ms.
Kelemahan dari algoritma ini:
  1. Waiting time rata-ratanya cukup lama.
  2. Terjadinya convoy effect, yaitu proses-proses menunggu lama untuk menunggu 1 proses besar yang sedang dieksekusi oleh CPU. Algoritma ini juga menerapkan konsep non-preemptive, yaitu setiap proses yang sedang dieksekusi oleh CPU tidak dapat di-interrupt oleh proses yang lain.
Misalkan proses dibalik sehingga urutan kedatangan adalah P3, P2, P1. Waiting time adalah P1=6; P2=3; P3=0. Average waiting time: (6+3+0)/3=3.
Gambar 14.2. Gantt Chart Kedatangan Proses Sesudah Urutan Kedatangan Dibalik

SJF (Shortest Job First)

Pada algoritma ini setiap proses yang ada di ready queue akan dieksekusi berdasarkan burst time terkecil. Hal ini mengakibatkan waiting time yang pendek untuk setiap proses dan karena hal tersebut makawaiting time rata-ratanya juga menjadi pendek, sehingga dapat dikatakan bahwa algoritma ini adalah algoritma yang optimal.
Tabel 14.1. Contoh Shortest Job First

ProcessArrival TimeBurst Time
P10.07
P22.04
P34.01
P45.04

Contoh: Ada 4 buah proses yang datang berurutan yaitu P1 dengan arrival timepada 0.0 ms dan burst time 7 ms, P2 dengan arrival time pada 2.0 ms dan burst time 4 ms, P3 dengan arrival time pada 4.0 ms dan burst time 1 ms, P4 dengan arrival time pada 5.0 ms dan burst time 4 ms. Hitunglah waiting time rata-rata dan turnaround time dari keempat proses tersebut dengan mengunakan algoritma SJF.
Average waiting time rata-rata untuk ketiga proses tersebut adalah sebesar (0 +6+3+7)/4=4 ms.
Gambar 14.3. Shortest Job First (Non-Preemptive)

Average waiting time rata-rata untuk ketiga prses tersebut adalah sebesar (9+1+0+2)/4=3 ms.
Ada beberapa kekurangan dari algoritma ini yaitu:
  1. Susahnya untuk memprediksi burst time proses yang akan dieksekusi selanjutnya.
  2. Proses yang mempunyai burst timeyang besar akan memiliki waiting timeyang besar pula karena yang dieksekusi terlebih dahulu adalah proses dengan burst time yang lebih kecil.
Algoritma ini dapat dibagi menjadi dua bagian yaitu :
  1. Preemptive . Jika ada proses yang sedang dieksekusi oleh CPU dan terdapat proses di ready queue dengan burst time yang lebih kecil daripada proses yang sedang dieksekusi tersebut, maka proses yang sedang dieksekusi oleh CPU akan digantikan oleh proses yang berada di ready queuetersebut. Preemptive SJF sering disebut juga Shortest-Remaining- Time-First scheduling.
  2. Non-preemptive . CPU tidak memperbolehkan proses yang ada di ready queue untuk menggeser proses yang sedang dieksekusi oleh CPU meskipun proses yang baru tersebut mempunyai burst timeyang lebih kecil.

Round Robin(RR)

Algoritma ini menggilir proses yang ada di antrian. Proses akan mendapat jatah sebesar time quantum. Jika time quantum-nya habis atau proses sudah selesai, CPU akan dialokasikan ke proses berikutnya. Tentu proses ini cukup adil karena tak ada proses yang diprioritaskan, semua proses mendapat jatah waktu yang sama dari CPU yaitu (1/n), dan tak akan menunggu lebih lama dari (n-1)q dengan q adalah lama 1 quantum.
Algoritma ini sepenuhnya bergantung besarnya time quantum. Jika terlalu besar, algoritma ini akan sama saja dengan algoritma first come first served. Jika terlalu kecil, akan semakin banyak peralihan proses sehingga banyak waktu terbuang.
Permasalahan utama pada Round Robinadalah menentukan besarnya time quantum. Jika time quantum yang ditentukan terlalu kecil, maka sebagian besar proses tidak akan selesai dalam 1 quantum. Hal ini tidak baik karena akan terjadi banyak switch, padahal CPU memerlukan waktu untuk beralih dari suatu proses ke proses lain (disebut dengan context switches time). Sebaliknya, jika time quantum terlalu besar, algoritma Round Robin akan berjalan seperti algoritma first come first servedTime quantum yang ideal adalah jika 80% dari total proses memiliki CPU burst time yang lebih kecil dari 1 time quantum.

Flowchart

Flowchart

1. Pengertian Flowchart

Flowchart adalah adalah suatu bagan dengan simbol-simbol tertentu yang menggambarkan urutan proses secara mendetail dan hubungan antara suatu proses (instruksi) dengan proses lainnya dalam suatu program.
Dalam perancangan flowchart sebenarnya tidak ada rumus atau patokan yang bersifat mutlak (pasti). Hal ini didasari oleh flowchart (bagan alir) adalah sebuah gambaran dari hasil pemikiran dalam menganalisa suatu permasalahan dalam komputer. Karena setiap analisa akan menghasilkan hasil yang bervariasi antara satu dan lainnya. Kendati begitu secara garis besar setiap perancangan flowchart selalu terdiri dari tiga bagian, yaitu input, proses dan output.

2. Simbol Flowchart


Berikut ini adalah beberapa simbol yang digunakan dalam menggambar suatu flowchart :

Gerbang Logika


Gerbang Logika
Gerbang Logika (Logic Gates) adalah sebuah entitas untuk melakukan pengolahan input-input yang berupa bilangan biner (hanya terdapat 2 kode bilangan biner yaitu, angka 1 dan 0) dengan menggunakan Teori Matematika Boolean sehingga dihasilkan sebuah sinyal output yang dapat digunakan untuk proses berikutnya.
Pengertian Gerbang Logika (Logic Gates) berdasarkan wikipedia :
"Gerbang logika atau gerbang logik adalah suatu entitas dalam elektronika dan matematika Boolean yang mengubah satu atau beberapa masukan logik menjadi sebuah sinyal keluaran logik. Gerbang logika terutama diimplementasikan secara elektronis menggunakan diode atau transistor, akan tetapi dapat pula dibangun menggunakan susunan komponen-komponen yang memanfaatkan sifat-sifat elektromagnetik (relay), cairan, optik dan bahkan mekanik."
2. JENIS-JENIS GERBANG LOGIKA (LOGIC GATES)
  7 jenis gerbang logika :
  1. Gerbang AND : Apabila semua / salah satu input merupakan bilangan biner (berlogika) 0, maka output akan menjadi 0. Sedangkan jika semua input adalah bilangan biner (berlogika) 1, maka output akan berlogika 1.
  2. Gerbang OR  : Apabila semua / salah satu input merupakan bilangan biner (berlogika) 1, maka output akan menjadi 1. Sedangkan jika semua input adalah bilangan biner (berlogika) 0, maka output akan berlogika 0.
  3. Gerbang NOT : Fungsi Gerbang NOT adalah sebagai Inverter (pembalik). Nilai output akan berlawanan dengan inputnya.
  4. Gerbang NAND : Apabila semua / salah satu input bilangan biner (berlogika) 0, maka outputnya akan berlogika 1. Sedangkan jika semua input adalah bilangan biner (berlogika) 1, maka output akan berlogika 0.
  5. Gerbang NOR : Apabila semua / salah satu input bilangan biner (berlogika) 1, maka outputnya akan berlogika 0. Sedangkan jika semua input adalah bilangan biner (berlogika) 0, maka output akan berlogika 1.
  6. Gerbang XOR : Apabila input berbeda (contoh : input A=1, input B=0) maka output akan berlogika 1. Sedangakan jika input adalah sama, maka output akan berlogika 0.
  7. Gerbang XNOR : Apabila input berbeda (contoh : input A=1, input B=0) maka output akan berlogika 0. Sedangakan jika input adalah sama, maka output akan berlogika 1. 



Bilangan Konversi

Konversi
Konversi bilangan adalah suatu proses dimana satu system bilangan dengan basis tertentu akan dijadikan bilangan dengan basis yang lain.

Konversi dari bilangan Desimal
1. Konversi dari bilangan Desimal ke biner
Yaitu dengan cara membagi bilangan desimal dengan dua kemudian diambil sisa pembagiannya.
Contoh :
45 (10) = …..(2)
45 : 2 = 22 + sisa 1
22 : 2 = 11 + sisa 0
11 : 2 = 5 + sisa 1
5 : 2 = 2 + sisa 1
2 : 2 = 1 + sisa 0 101101(2) ditulis dari bawah ke atas
2. Konversi bilangan Desimal ke Oktal
Yaitu dengan cara membagi bilangan desimal dengan 8 kemudian diambil sisa pembagiannya
Contoh :
385 ( 10 ) = ….(8)
385 : 8 = 48 + sisa 1
48 : 8 = 6 + sisa 0
601 (8)
3. Konversi bilangan Desimal ke Hexadesimal
Yaitu dengan cara membagi bilangan desimal dengan 16 kemudian diambil sisa pembagiannya
Contoh :
1583 ( 10 ) = ….(16)
1583 : 16 = 98 + sisa 15
96 : 16 = 6 + sisa 2
62F (16)
Konversi dari system bilangan Biner
1. Konversi ke desimal
Yaitu dengan cara mengalikan masing-masing bit dalam bilangan dengan position valuenya.
Contoh :
1 0 0 1
1 x 2 pangkat 0 = 1
0 x 2 pangkat 1 = 0
0 x 2 pangkat 2 = 0
1 x 2 pangkat 3 = 8
—+
9 (10)
2. Konversi ke Oktal
Dapat dilakukan dengan mengkonversikan tiap-tiap tiga buah digit biner yang dimulai dari bagian belakang.
Contoh :
11010100 (2) = ………(8)
11 010 100
3 2 4
diperjelas :
100B = 4D
0 x 2 pangkat 0 = 0
0 x 2 pangkat 1 = 0
1 x 2 pangkat 2 = 4
—+
4
Begitu seterusnya untuk yang lain.
3. Konversi ke Hexademial
Dapat dilakukan dengan mengkonversikan tiap-tiap empat buah digit biner yang dimulai dari bagian belakang.
Contoh :
11010100
1101 0100
D 4
Konversi dari system bilangan Oktal
1. Konversi ke Desimal
Yaitu dengan cara mengalikan masing-masing bit dalam bilangan dengan position valuenya.
Contoh :
12(8) = …… (10)
2 x 8 pangkat 0 = 2
1 x 8 pangkat 1 = 8
–+
Jadi 10 (10)
2. Konversi ke Biner
Dilakukan dengan mengkonversikan masing-masing digit octal ke tiga digit biner.
Contoh :
6502 (8) ….. = (2)
2 = 010
0 = 000
5 = 101
6 = 110
jadi 110101000010
3. Konversi ke Hexadesimal
Dilakukan dengan cara merubah dari bilangan octal menjadi bilangan biner kemudian dikonversikan ke hexadesimal.
Contoh :
2537 (8) = …..(16)
2537 (8) = 010101011111
010101010000(2) = 55F (16)
Konversi dari bilangan Hexadesimal
1. Konversi ke Desimal
Yaitu dengan cara mengalikan masing-masing bit dalam bilangan dengan position valuenya.
Contoh :
C7(16) = …… (10)
7 x 16 pangkat 0 = 7
C x 16 pangkat 1 = 192
—+
199
Jadi 199 (10)
2. Konversi ke Oktal
Dilakukan dengan cara merubah dari bilangan hexadesimal menjadi biner terlebih dahulu kemudian dikonversikan ke octal.
Contoh :
55F (16) = …..(8)
55F(16) = 010101011111(2)
Kesimpulan:
1. Dari desimal ke biner, oktal, hexa adalah bilangan desimal dibagi dengan radix bilangan yang ditanyakan.
desimal 13=….(2)–> biner radixnya adalah 2 maka dibagi 2
13 : 2 = 6 sisa 1 ^
6 : 2 = 3 sisa 0 |
3 : 2 = 1 sisa 1 |
1 : 2 = 0 sisa 1 |
sisa ditulis dari bawah ke atas sehingga desimal 13 = 1101 B
Desimal ke hexadesimal
desimal 33 = …..H
33 : 16 = 2 sisa 1
2 : 16 = 0 sisa 2
sisa ditulis dari bawah ke atas sehingga desimal 33 = 21H
2. Dari biner, oktal, hexa ke desimal
misal –> 1101B =1.2 pangkat 3 + 1.2 pangkat 2 + 1.2 pangkat 1 + 1.2 pangkat 0 = 13. n=3n=2n=1n=0
21H = 2.16 pangkat 1 + 2. 16 pangkat 0 = 33D
3. Biner ke hex ==> 2 log 16 = 4, bilangan biner dipisahkan masing2 4 bit dari kiri.
misal 11011001 B = D9H.
4. Biner ke Oktal.
misal 011010101110B = 3256(8)
011 = 3,010=2,101=5,110=6.
5. Oktal ke Hex ===> oktal dirubah ke biner terlebih dhulu baru ke hex

Pseudocode

Pseudocode
Pseudocode adalah langkah-langkah menjelaskan permasalahan dalam kode-kode. Pseudocode menggunakan bahasa yang hampir sama dengan bahasa pemograman, tetapi Pseudocode mudah untuk dipahami.
Pseudocode bisa juga di sebut tiruan dari kode program, tetapi Pseudocode lebih mudah untuk dimengerti sehingga banyak programmer yang membuat Pseudocode terlebih dahulu sebelum mengkoding. Pseudocode adalah pemecahan kode yang sulit, menggambarkan logika-logika yang sulit sehingga dapat di terjemahkan di Pseudocode agar dapat dimengerti.

Contoh Pseudocode

Notasi-notasi pseudocode

  1. Bentuk

Pernyataan
 X <—- Y
keterangan :
X : diberi nilai
Y : Memberi Nilai
Ex : Hasil <—- Bilangan Mod 2
  1. Bentuk Percabangan
if kondisi then
      pernyataan
if kondisi 1 then
      pernyataan 1
else
      pernyataan 2
if kondisi 1 then
      pernyataan 1
else if kodisi 2 then
      pernyataan 2
else if kondisi n then
      pernyataan
else
      pernyataan else
  1. Bentuk Perulangan
for (persyaratan) do
      pernyataan for
while (persyaratan)
      pernyataan while
Repeat
      pernyataan repeat
Until (persyratan)
Contoh : Algoritma untuk menentukan bilangan Genap/Ganjil (Pseudo-code)
 Deskripsi
      hasil,bil : integer
Implementasi
      Baca (bil)
      hasil <—- bil mod 2
if hasil = 0 then
      cetak (Genap)
else
      cetak (Ganjil)
End.
Contoh Lainnya
<variable> = <expression>
if <condition>
    do stuff
else
    do other stuff
while <condition>
    do stuff
for <variable> from <first value> to <last value> by <step>
    do stuff with variable
function <function name>(<arguments>)
    do stuff with arguments
    return something
<function name>(<arguments>)    // Function call
<variabel> = <nilai>
jika <kondisi>
    lakukan sesuatu
lain
    lakukan yang lain
ketika <kondisi>
    Lakukan sesuatu
untuk <variabel> dari <awal> ke <akhir> dengan <langkah>
    lakukan dengan variabel
fungsi <nama_fungsi>(<argumen>)
    lakukan sesuatu dengan argumen
    hasilkan sesuatu
<variabel> = <nama_fungsi>(<argumen>) //Pemanggilan fungsi dengan hasil ke variabel
Atau
<nama_fungsi>(<argumen>) //Pemanggilan fungsi

Algoritma

Algoritma

Dalam matematika dan ilmu komputer, algoritma adalah urutan atau langkah-langkah untuk penghitungan atau untuk menyelesaikan suatu masalah yang ditulis secara berurutan. Sehingga, algoritma pemrograman adalah urutan atau langkah-langkah untuk menyelesaikan masalah pemrograman komputer.
Dalam pemrograman, hal yang penting untuk dipahami adalah logika kita dalam berpikir bagaimana cara untuk memecahkan masalah pemrograman yang akan dibuat. Sebagai contoh, banyak permasalahan matematika yang mudah jika diselesaikan secara tertulis, tetapi cukup sulit jika kita terjemahkan ke dalam pemrograman. Dalam hal ini, algoritma dan logika pemrograman akan sangat penting dalam pemecahan masalah.
Untuk contoh algoritma dalam matematika seperti di bawah ini:
Algoritma untuk menghitung nilai y dari persamaan y = 3x + 8
Algoritmanya adalah:

  • Mulai
  • Tentukan nilai x
  • Hitung nilai y = 3x + 8
  • Cetak nilai x dan y
  • Selesai   
Walaupun algoritma bisa dibilang jantung ilmu komputer atau informatika, tetapi jangan beranggapan bahwa algoritma selalu identik dengan ilmu komputer saja. Dalam kehidupan sehari-hari, terdapat banyak proses yang dinyatakan dalam suatu algoritma. Misal cara memasak mie, cara membuat kue, dan lainnya.
Jika kita buat algoritma memasak mie akan seperti di bawah ini:
  • Siapkan 1 bungkus mie instan, 400 ml air (2 gelas), panci, mangkok, sendok, dan garpu
  • Masukkan 400 ml air kedalam panci
  • Masak air
  • Tunggu hingga mendidih
  • Masukkan mie kedalam panci yang sudah berisi air mendidih
  • Tunggu dan aduk hingga 3 menit
  • Jika sudah matang masukkan bumbu
  • Aduk hingga rata
  • Sajikan mie