DISUSUN
Oleh
RAFIK
2105903040063
Puji syukur atas kehadiran Tuhan Yang Maha Esa atas rahmat dan petunjuk-Nya
sehingga saya dapat menulis makalah dengan judul” Rangkuman Algoritma Pemograman 02”
yang mana makalah ini disusun bertujuan untuk memenuhi tugas mata kuliah Algoritma
Pemograman 02, dalam menempuh pendidikan di Universitas Teuku Umar.
Saya menyadari bahwa masih banyak kekurangan dan keterbatasan dalam penyajian
data dalam makalah ini. Oleh karena itu, saya mengharapkan kritik dan saran yang membangun
dari semua pembaca demi kesempurnaan makalah ini. Semoga makalah ini berguna dan dapat
menambah pengetahuan pembaca.
Demikian makalah ini saya susun, apabila ada kata-kata yang kurang berkenan dan
banyak terdapat kekurangan, penulis mohon maaf yang sebesar-besarnya.
Rafik
Daftar Isi
Kata Pengantar.....................................................................................................................
Daftar Isi .............................................................................................................................
Bab 1 : Pendahuluan............................................................................................................
1.1 Latar belakang..............................................................................................................
1.2 Masalah .........................................................................................................................
1.3 Tujuan...........................................................................................................................
Bab 2 : Pembahasan............................................................................................................
2.1 Pegertian Algoritma......................................................................................................
2.2 Pengertian Array...........................................................................................................
2.3 Fungsi ..........................................................................................................................
2.4 Struct.............................................................................................................................
2.5 Rekrusif.........................................................................................................................
2.6 Searching......................................................................................................................
2.7 Sorting...........................................................................................................................
Bab 3 : Penutup ..................................................................................................................
Bab 1 :
Pendahuluan
1.1 Latar belakang
Algoritma dan Pemrograman adalah jantung dari pemahaman mengenai pemrograman
dan merupakan fondasi awal bagi ilmu komputer dan informatika (Rossa, 2010, hlm. v).
Banyak cabang ilmu komputer yang diacu dalam terminologi algoritma (Budiyanto, 2003, hlm.
2). Algoritma pemrograman ini, dipelajari pada mata pelajaran pemrograman dasar kelas X.
Hasil studi pendahuluan di salah satu kelas XI SMK di Cimahi menunjukkan bahwa sebanyak
36.67% siswa menganggap bahwa materi pada mata pelajaran Pemrograman Dasar sulit untuk
dipahami dan 23.33% menyatakan materi yang sulit dipahami adalah materi algoritma
pemrograman. Padahal algoritma adalah dasar dari pemrograman, yang harus dipelajari dan
dipahami sejak awal. Program yang baik tidak akan tercipta tanpa adanya algoritma yang
baik.Jadi, untuk bisa menciptakan sebuah program yang baik, dibutuhkan kemampuan untuk
membuat algoritma yang baik pula. Untuk membuat algoritma yang baik, dibutuhkan
pemahaman yang kuat mengenai algoritma pemrograman.
1.2 Masalah
Berdasarkan latar belakang yang telah diuraikan di atas, maka rumusan masalah dalam
penelitian ini adalah:
1. Bagaimana pengertian algoritma ?
2. pengertian Array
3. Pengertian Fungsion
4. Pengertian Struct
5. pengertian Rekrusif
1.3 Tujuan
1. Mengetahui pengertian dari algoitma
2. Mempelajari array dan kodingan nya
3. Mempelajari dan memahami fungsion
4. Mempelajari dan memahami struck
5. Mempelajari dan memahami rekrusif
Bab 2:
PEMBAHASAN
2.1 Pegertian Algoritma
Algoritma adalah Urutan langkah-langkah untuk memecahkan masalah yang disusun
secara sistematis dan logis. Algoritma dibutuhkan untuk memerintah komputer mengambil
langkah-langkah tertentu dalam menyelesaikan masalah.
Contoh sederhana algoritma:
membuat kopi dimulai dengan membuka bungkus kopi, masukan kopi kedalam
cangkir, menambahkan gula, memasak air hingga mendidih, memasukan air mendidih kedalam
cangkir, mengaduk hingga tercampur, dan selesai.
Psidoucode
Deskripsi
Implementasi
panjang ← 100;
lebar ← 64;
luas ← panjang*lebar;
2.2 Pengertian Array
Biasa disebut larik adalah koleksi data dimana setiap elemen memakai nama yang
sama dan bertipe sama dan setiap elemen diakses dengan membedakan indeks arraynya. Setiap
rinci data disebut dengan elemen array. Setiap array dapat dioperasikan menggunakan pemilih
elemen yang disebut indeks. Karena itu indeks harus bertipe yang mempunyai keterurutan (ada
suksesor dan ada predesor) misal Integre, Boolean,char.
Array di bagi menjadi tiga bagian yaitu,array 1 dimensi,2dimensi,dan array dimensi banyak.
Array 1 dimensi
Bentuknya psidoucode Bentuk c++
Array 2 dimensi
Deklarasi pseudocode Deklarasi c++
nama_var : array
tipe nama_var[ukuran1][ukuran2];
[rangeindeks1,rangeindeiks2] of tipe
Contoh array 2 dimensi :
#include<iostream>
using namespace std;
int main()
{
int x[2][5]={6,6,4,3,5,6,7,8,6,5,};
int i,j;
for(i=0; i<2; i++)
{
for(j=0; j<5; j++)
{
cout<<x[i][j]<<" ";
cout<<endl;
}
}
}
Contoh:
#include <iostream>
using namespace std;
int main()
{
int arr[2][2][2];
arr[0][0][0] = 10;
arr[0][0][1] = 20;
arr[0][1][0] = 30;
arr[0][1][1] = 40;
arr[1][0][0] = 11;
arr[1][0][1] = 22;
arr[1][1][0] = 33;
arr[1][1][1] = 44;
cout << "Isi variabel arr:" << endl;
cout << "=================" << endl;
cout << endl;
cout << "Element di [0][0][0]: "<< arr[0][0][0] << endl;
cout << "Element di [0][0][1]: "<< arr[0][0][1] << endl;
cout << "Element di [0][1][0]: "<< arr[0][1][0] << endl;
cout << "Element di [0][1][1]: "<< arr[0][1][1] << endl;
cout << "Element di [1][0][0]: "<< arr[1][0][0] << endl;
cout << "Element di [1][0][1]: "<< arr[1][0][1] << endl;
cout << "Element di [1][1][0]: "<< arr[1][1][0] << endl;
cout << "Element di [1][1][1]: "<< arr[1][1][1] << endl;
return 0;
}
2.3 Fungsi
Program merupakan kumpulan dari fungsi-fungsi baik yang didefinisikan langsung maupun
yang disimpan dalam file header. Dalam program C++ selalu terdapat fungsi utama yang
disebut fungsi main( ) Kompiler akan menjalankan perintah yang terdapat dalam fungsi main
( ) ini. Ilustrasi keberadaan fungsi dalam sebuah program.
Suatu proses yang tidak mengembalikan nilai, untuk itu fungsi yang dibuat bertipe void
yang berarti tidak mempunyai nilai balik (RETURN VALUE)Adapun bentuk umumnya adalah
:
……….
Contoh program :
#include <iostream>
using namespace std;
void salam(){
string nama;
cout<<"Masukkan nama anda : ";cin>>nama;
cout<<"Halo "<<nama<<", apa kabar ?"<<endl;
cout<<"Selamat datang di program saya"<<endl;
}
main(){
salam();
}
Fungsi dengan nilai umpan balik
Fungsi ini melakukan proses yang dapat mengembalikan sebuah nilai. Definisikan tipe data
dari nilai yang akan dikembalikan terlebih dulu. Bentuk umum fungsi ini:
Bentuk umum
Contoh :
#include <iostream>
using namespace std;
Parameter keluaran
Parameter ini dipergunakan untuk menampung nilai yang dihasilkan dari
proses didalam fungsi Digunakan didalam fungsi void Berguna sebagai nilai
keluaran sebuah fungsi Dilewatkan berdasarkan alamat atau referensinya
Contoh :
#include<iostream>
using namespace std;
int main ()
{
int nilai1,nilai2;
cout<<"Input Nilai 1 :";
cin>>nilai1;
cout<<"Input Nilai 2 :";
cin>>nilai2;
cout<<"Hasil Penjumlahannya :"<<NilaiRataRata(nilai1,nilai2);
}
2.5 Rekrusif
Rekursif berarti bahwa suatu proses bisa memanggil dirinya sendiri. Rekursif adalah
kemampuan suatu rutin untuk memanggil dirinya sendiri. Dalam Rekursif sebenarnya
terkandung pengertian prosedur dan fungsi. Perbedaannya adalah bahwa rekursif bisa
memanggil ke dirinya sendiri, tetapi prosedur dan fungsi harus dipanggil lewat pemanggil
prosedur dan fungsi. Rekursif merupakan teknik pemrograman yang penting dan beberapa
bahasa pemrograman mendukung keberadaan proses rekursif ini. Dalam prosedur dan fungsi,
pemanggilan ke dirinya sendiri bisa berarti proses berulang yang tidak bisa diketahui kapan
akan berakhir.
Bilangan fibonacci adalah bilangan yang melakukan penambahan terhadap dirinya sendiri
dari nilai penjumlahan dari bilangan pada dirinya
Contoh :
#include <iostream>
using namespace std;
int fibonacci(int n)
{ if (n == 0 || n ==1){
return n; } else
{return (fibonacci(n-1) + fibonacci(n-2));}
}
int main()
{
int n, i, j = 0;
cout << "Masukkan batas jumlah bilangan fibonacci: ";cin >> n;
cout << "Hasil bilangan fibonacci: \n";
for (i = 1; i <= n; i++){
cout << "fibonacci ke-"<< i <<": " << fibonacci(j) << endl;
j++;
} return 0;
}
Fungsi bilangan prima
Bilangan prima ini adalah bilangan utama pembentuk bilangan bulat, jadi semua
bilangan bulat bisa dibentuk dari bilangan prima. Lewat bilangan prima, kita bisa
menentukan pohon faktor dari sebuah bilangan untuk menentukan faktorisasi primanya.
#include <iostream>
int main(){
int bil;
cout<<"Menampilkan Deret Bilangan Prima 1-100";
cout<<endl;
for(int i=1;i<=100;i++){
bil=0;
for(int j=1;j<=i;j++){
if(i%j==0){
bil=bil+1;
}
}
if (bil==2)
cout<<i<<" ";
}
}
2.6 searching
Searching(mencari)adalah kegiatan atau cara memindai data dari kumpulan data. Algoritma
pencarian (searching algorithm) adalah algoritma yang menerima sebuah argumen kunci dan dengan
langkah-langkah tertentu akan mencari rekaman dengan kunci tersebut. Setelah proses pencarian
dilaksanakan, akan diperoleh salah satu dari dua kemungkinan, yaitu data yang dicari ditemukan
(successful) atau tidak ditemukan (unsuccessful)
Pencarian berurutan sering disebut pencarian linear merupakan metode pencarian yang paling
sederhana. Pencarian berurutan menggunakan prinsip sebagai berikut : data yang ada dibandingkan
satu per satu secara berurutan dengan yang dicari sampai data tersebut ditemukan atau tidak
ditemukan.
Pada dasarnya, pencarian ini hanya melakukan pengulangan dari 1 sampai dengan jumlah data.
Pada setiap pengulangan, dibandingkan data ke-i dengan yang dicari. Apabila sama, berarti data telah
ditemukan. Sebaliknya apabila sampai akhir pengulangan tidak ada data yang sama, berarti data tidak
ada. Pada kasus yang paling buruk, untuk N elemen data harus dilakukan pencarian sebanyak N kali
pula.
for (i=1;i<=n;i++)
{
cout<<"Masukan Data Ke-"<<i<<" : ";
cin>>A[i];
}
cout<<endl;
cout<<"Input Bilangan yang dicari : ";
cin>>cari;
cout<<"--------------------------"<<endl;
cout<<endl;
for(i=0;i<=n;i++)
{
if (A[i]==cari)
{
ketemu=1;
cout<<"Data Ditemukan Pada Indeks Ke-"<<i;
}
}
if (ketemu==0)
{
cout<<"Data tidak ditemukan";
}
}
II. PENCARIAN BINER (BINARY SEARCH)
Pencarian biner adalah proses mencari data dengan membagi data atas dua bagian secara terus
menerus sampai elemen yang dicari sudah ditemukan, atau indeks kiri lebih besar dari indeks kanan.
Algoritma ini lebih efisien daripada algoritma pencarian sekuensial, tetapi pencarian ini
mempunyai syarat yaitu bahwa kumpulan data yang harus dilakukan pencarian harus sudah terurut
terlebih dahulu. Karena data sudah terurut, algoritma dapat menentukan apakah nilai data yang dicari
berada sebelum atau sesudah elemen larik yang sedang dibandingkan pada suatu saat. Dengan cara
ini, algoritma dapat lebih menghemat waktu pencarian.
2. kemudian dicari posisi data tengah dengan rumus (posisi awal + posisi akhir) / 2.
4. Jika lebih kecil, proses dilakukan kembali tetapi posisi akhir dianggap sama dengan posisi tengah
–1.
5. Jika lebih besar, porses dilakukan kembali tetapi posisi awal dianggap sama dengan posisi
tengah + 1. Demikian seterusnya sampai data tengah sama dengan yang dicari.
contoh
#include <iostream>
using namespace std;
int main(){
int array[5] = {1,2,3,4,5};
int cari;
int posisiTerendah=1, posisiTertinggi=5, posisiTengah;
for(int i=0;i<5;i++){
cout<<"Data "<<array[i]<<" Tersimpan Pada Urutan Ke-"<<i+1<<endl;
}
cout<<endl;
if (cari == array[posisiTengah]){
cout<<"Data Di Temukan Pada Urutan Ke-"<<posisiTengah+1<<endl;
}
else{
cout<<"Data Yang Anda Cari Tidak Ada."<<endl;
}
}
output
2.7 sorting
Sort adalah suatu proses pengurutan data yang sebelumnya di susun secara acak atau tifdak
teratur menjadi urut atau teratur menurut suatu aturan tertentu.
Biasanya pengurutan dibangi menjadi dua yaitu:
Ascending (penurutan dari kecil ke besar)
Descending (pengurutan dari besar ke kecil)
Ada banyak cara atau metode untuk melakukan pengurutan ascending ataupun
descending.
Dalam proses pengurutan kita akan memerlukan proses penukaran data.
Proses penukaram data tidak bias kita lakukan secara langsung dengan menukar
variable.
Pengurutan data dilakukan dengan metode swap.
a) Bubble Sort
Bubble sort adalah suatu metode pengurutan yang membandingkan elemen sekarang
dengan elemen berikutnya.Apabila elemen sekarang > elemen berikutnya maka
posisinya ditukar, jika tidak maka tidak perlu ditukar.
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int data[5] = {7, 19, 33, 48, 88};
int swap;
cout<<"data sebelum diurutkan : "<<endl;
for(int i=0; i<5; i++)
{
cout<<setw(3)<<data[i];
}
cout<<endl;
for(int i=0; i<4; i++)
{
for(int j=0; j<4; j++)
{
if(data[j] > data[j+1])
{
swap = data[j];
data[j = data[j+1]
data[j+1] = swap;
}
}
}
cout<<"data setelah diurutkaan : "<<endl;
for(int i=0; i<5; i++)
{
cout<<setw(3)<<data[i];
}
}
b).selection short
adalah suatu metode pengurutan yang membandingkan elemen sekarang dengan elemen
berikutnya sampai ke elemen yang terakhir.jika ditemukan elemen lain yang lebih kecil dari
elemen sekarang maka dicatat posisinya dan langsung ditukar.
#include <iostream> }
cout<<setw(3)<<data[i];
int swap, terkecil;
}
cout<<"Data sebelum diurutkan : "<<endl;
}
for(int i=0; i<8; i++)
cout<<setw(3)<<data[i];
cout<<endl;
terkecil = i;
cout<<setw(3)<<terkecil;
terkecil = j;
swap = data[i];
data[i] = data[terkecil];
data[terkecil] = swap;
Output:
c).insertion sort
adalah metode pengurutan yang mirip dengan cara mengurutkan kartu ,kartu diambil
selembar demi selembar dan disisipkan (insert) pada posisi seharusnya.proses pengurutan di
mulai dari darta ke 2 sampai data terakhir,data akan di bandingan dengan posisi sebelumnya
dan disisipkan pada posisi yang sesuai.pada proses penyisipan data ,maka data data yang lain
akan bergeser ke belakang (kanan).
#include <iostream> }
int main()
{ insertion_sort(data);
data[j+1] = temp;
}
outputnya:
Bab 3
PENUTUP
Algoritma adalah langkah-langkah yang disusun secara tertulis dan berurutan untuk
menyelesaikan suatu masalah. Sedangkan Algoritma Pemrograman adalah langkah-langkah
yang ditulis secara berurutan untuk menyelesaikan masalah pemrograman komputer.
Dalam pemrograman yang sederhana, algoritma merupakan langkah pertama yang harus
ditulis sebelum menuliskan program. Masalah yang dapat diselesaikan dengan pemrograman
komputer adalah masalah-masalah yang berhubungan dengan perhitungan matematik.