Está en la página 1de 17

Dasar-dasar Algoritma

Konsep Algoritma dan Pemrograman


• Pengertian Algoritma:

- Langkah-langkah yang tersusun secara logis dan sistematis untuk mneyelesaikan suatu
masalah logika ataupun matematika.
- Suatu prosedur yang jelas untuk menyelesaikan suatu persoalan logika.
- Mentransformasi data input menjadi output berupa informasi

• Hubungan antara algoritma dan pemrograman komputer.

• Perkembangan bahasa pemrograman.

- Instruksi standar untuk memerintah komputer.


- Suatu himpunan dari aturan sintaks dan semantik yang dipakai untuk mendefinisikan
program komputer.
- Programmer dapat menentukan langkah-langkah untuk mengolah (data) suatu program
dalam berbagai situasi.

• Bahasa pemrograman terdiri dari:

1. Bahasa Mesin.

Perintah kepada komputer dengan memakai kode bahasa biner.

* Contohnya: 01100101100110

2. Bahasa Tingkat Rendah.

Bahasa rakitan/Assembly, yaitu memberikan perintah kepada komputer dengan memakai kode-
kode singkat (kode mnemonic).

* Contohnya: kode mesin -- MOV, SUB, CMP, JMP, JGE, JL, LOOP, dsb. –

3. Bahasa Tingkat Menengah.

Bahasa komputer yang memakai campuran instruksi dalam kata-kata bahasa manusia (lihat
contoh Bahasa Tingkat Tinggi di bawah) dan instruksi yang bersifat simbolik.

* Contohnya: {, }, ?, <<, >>, &&, ||, dsb.

4. Bahasa Tingkat Tinggi.

Bahasa komputer yang memakai instruksi berasal dari unsur kata-kata bahasa manusia.

* Contohnya: begin, end, if, for, while, and, or, dsb.

Komputer dapat mengerti bahasa manusia itu diperlukan program compiler atau interpreter.
Notasi Algoritma
• Pseudocode:

- Merupakan deskripsi tingkat tinggi informal dan ringkas atas algoritma pemrograman
komputer yang menggunakan konvensi struktural atas suatu bahasa pemrograman.
- Ditujukan untuk dibaca oleh manusia dan bukan oleh mesin.
- Biasanya tidak menggunakan elemen detail yang tidak diperlukan untuk kebutuhan
pemahaman manusia atas suatu algoritma, seperti deklarasi variabel, kode ataupun subrutin
untuk sistem yang bersifat spesifik.

* Contoh Pseudocode: Mencari luas persegi panjang

• Flow chart:

- Sebuah diagram dengan simbol-simbol grafis yang menyatakan aliran algoritma atau proses.
- Menampilkan langkah-langkah yang disimbolkan dalam bentuk kotak, beserta urutannya
dengan menghubungkan masing masing langkah tersebut menggunakan tanda panah.

* Contoh Flow chart


Review
• Runtutan / sequential

• Pemilihan (if-then-else, case)

• Perulangan (repetition)

* Contoh Runtutan / sequential

Menukarkan nilai A dan B. Diketahui A = 8, B = 5. Maka hasil setelah pertukaran A = 5 dan B = 8

- Algoritma program pertukaran /* Program Pertukaran dengan C++*/


DEKLARASI #include <iostream>
A, B, temp : integer using namespace std;
ALGORITMA int main()
read (A, B) {
{Proses pertukaran} int A, B, temp; /*DEKLARASI*/
cout << "A = " ;
temp <– A
cin >> A;
A <– B
cout << "B = " ; /*ALGORITMA*/
B <– temp cin >> B;
write (A, B)
temp = A;
A = B; /*Proses Pertukaran*/
B = temp;
cout << "A = " << A << endl;
cout << "B = " << B << endl;
}
* Contoh Pemilihan

Program pemilihan kelas dengan simple condition

#include <iostream>
using namespace std;
int main()
{
int A;
cout<<"Anda termasuk siswa di kelas mana?";
cin>>A;
if (A <= 1)
cout<<“Anda siswa kelas A";
else
cout<<“Anda siswa kelas B";
return 0;
}
* Contoh Perulangan

Program perulangan bilangan genap antara bilangan 20-120

#include <iostream>
#include <conio.h>
using namespace std;
int main ()
{
int i;//deklarasi
for (i=20; i<=120; i++) // pengulangan data dari 21 sampai dengan 119
{
if(i%2==0) // jika i habis dibagi 2 maka tampilkan
{
cout << i << endl;
} //tampilkan
}
getch ();
}

Latihan Soal_

1. Membuat program untuk menukarkan nilai A dan B tanpa menggunakan variabel pembantu
2. Buatlah program sederhana untuk menentukan bilangan genap dan bilangan ganjil.
3. Membuat program untuk menampilkan persegi panjang

> Jawaban no.1

#include <iostream>
using namespace std;
int main()
{
int A, B;
cout << "A = " ;
cin >> A;
cout << "B = " ;
cin >> B;

A = A ^ B;
B = A ^ B;
A = A ^ B;
cout << "A = " << A << endl;
cout << "B = " << B << endl;
}
> Jawaban no.2

#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int a;
cout<<"Masukkan nilai a: ";
cin>>a;

if(a%2==0)
cout<<"Bilangan Genap!";
else
cout<<"Bilangan Ganjil!";
}

> Jawaban no.3

#include <iostream>
#include <conio.h>
using namespace std;
//Membuat persegi
int main()
{
int i,j,n;
cout<<"program membuat persegi"<<endl;
cout<<"-----------------------"<<endl<<endl;
cout<<"Masukkan ukuran persegi : ";
cin>>n;

for (i=1;i<=n;i++)
{
if ((i==1)||(i==n))
{
for (j=1;j<=n;j++)
cout<<"*";
cout<<endl;
}
else
{
for (j=1;j<=n;j++)
{
if ((j==1)||(j==n))
cout<<"*";
else
cout<<" ";
}
cout<<endl;
}}
getch();}
Prosedur dan Fungsi
Fungsi dengan nilai balikan
Prosedur
- Suatu program terpisah dalam blok sendiri yang berfungsi sebagai subprogram (program bagian).

- Bersifat suatu aktifitas. Seperti menghitung luas, meghitung faktorial, mencari nilai
maksimum/minimum, dsb.

Banyak digunakan pada program yang terstruktur, karena:

• Merupakan penerapan konsep program modular.

• Sebuah prosedur cukup dituliskan sekali saja dan dapat dipanggil atau dipergunakan sewaktu-
waktu bila diperlukan atau dipanggil berulang-ulang.

• Membuat kode program lebih mudah dibaca, dan dapat menyembunyikan detail program.

Fungsi
Fungsi sama seperti halnya dengan procedure, namun tetap ada perbedaannya yaitu fungsi
mempunyai output dengan tipe variabel yang kita tentukan.

Fungsi harus menggunakan parameter dalam penggunaannya.


Summary (related to the procedure and function)

In general “procedure” is the step to solve a problem. But in the context of specific
programming language, procedure is similar to function. In case of specific programming
language

Procedure is little bit different from function. But the differences vary among programming
language.

For example in some programming language procedure doesn’t exist, but function exist. In
some other programming language both “procedure” and “function” exist.
Oleh karena itu, prosedur disebut juga sebagai fungsi tanpa nilai balikan.

Fungsi dengan nilai balikan


- Memiliki nilai balikan dalam memproses data.

- Tipe data dari nilai yang akan dikembalikan harus didefinisikan.

- Disebut juga sebagai Fungsi Non Prosedural.

Prosedur: fungsi tanpa nilai balikan


Bentuk umum prosedur

Void NamaProsedur (DaftarParameter)


{
/*Code atau Badan Prosedur*/
}
Fungsi dengan nilai balikan
Bentuk umum fungsi

TipeData NamaFungsi (DaftarParameter)


{
/*Code atau Badan Prosedur*/
return nilaireturn;
}

Contoh prosedur / fungsi tanpa nilai balikan


//program penjualan
#include <conio.h>
#include <iostream>
using namespace std;
void penjualan (float a, float b, float c)
{
float total, temp;
temp = b * c ;
total = temp - (a * c) ;
cout << "Harga Kotor Barang : " << temp << endl ;
cout << "Harga Bersih Barang : " << total << endl ;
}
int main()
{
float diskon, harga, jumlah;
float total, temp ;
cout << "Menghitung harga barang" << endl << endl ;
cout << "Masukkan harga barang : " ;
cin >> harga ;
cout << "Masukkan jumlah barang : " ;
cin >> jumlah ;
cout << "Masukkan diskon barang (per satuan) : " ;
cin >> diskon ;
cout << "\n" ; penjualan(diskon, harga, jumlah) ;
getch();
}
Contoh fungsi dengan nilai balikan
#include <iostream>

using namespace std;

//int minimum (int x, int y);

int minimum (int x,int y)

int min;

if (x<y)

min =x;

else

min =y;

return min;

int main()

int a,b,hasil;

cout<<"masukan a :";

cin>>a;

cout<<"masukan b :";

cin>>b;

hasil= minimum (a,b);

cout<<"Nilai Minimum ="<<hasil;

}
Latihan
Buatlah program untuk menampilkan deret bilangan prima (menggunakan fungsi).

* Jawaban dari soal latihan

//program menampilkan deret bilangan prima


#include <conio.h>
#include <iostream>
using namespace std;
bool prima(int n)
{
int i, jml;
jml = 0 ;
for (i=1;i<=n;i++)
{
if (n % i == 0)
{
jml ++ ;
}
}
if (jml == 2)
{
return (true);
}
else
{
return(false) ;
}
}
//program utama
main()
{
int j, n ;
int cacah = 0 ;
cout << "Masukkan Batas bilangan : " ;
cin >> n ;
cout << "Berikut Bilangan itu : " << endl ;
for (j=1;j<=n;j++)
{
if (prima(j) == true)
{
cout << j << " " ;
cacah ++ ;
}
}
cout << "\nBanyak bilangan prima adalah : " << cacah << endl ;
getch();
}
ARRAY
- Array atau Larik adalah suatu bentuk struktur data yang menampung satu atau lebih dari
satu data yang sejenis (bertipe data sama), yang diwakili oleh satu nama variabel.

- Setiap elemen atau anggota larik dapat dikenali atau diakses melalui suatu indeks.

- Array berdimensi satu disebut vektor.

- Array berdimensi dua disebut matriks.

- Array berdimensi lebih dari dua disebut tensor.

Mendefinisikan Array
Array dapat didefinisikan dengan berbagai cara, antara lain:

1. nama_array : array[1..n] of tipe data;

contoh: A : array [1..10] of integer;

2. tipe_data nama_array [n];

contoh: integer A[10];

3. type larik : array [1..n] of tipe_data;

nama_array : larik;

contoh: type larik : array [1..10] of integer;

A : larik;

Operasi Array
• Membaca / mengisi array

• Mencetak / menampilkan array

• Menggeser isi array

• Menggabungkan beberapa array

• Menguraikan satu array

• Mengurutkan isi array

• Mencari elemen dalam array

Contoh menampilkan elemen array satu dimensi


#include <iostream>
#include <conio.h>
Using namespace std;
int main ()
{
int nilai[5];
cout<<"Masukan lima data nilai"<<endl;
cout<<"Nilai 1 : "; cin>>nilai[0];
cout<<"Nilai 2 : "; cin>>nilai[1];
cout<<"Nilai 3 : "; cin>>nilai[2];
cout<<"Nilai 4 : "; cin>>nilai[3];
cout<<"Nilai 5 : "; cin>>nilai[4];
cout<<endl;
cout<<"Data nilai yang dimasukan "<<endl;
cout<<"1 2 3 4 5"<<endl<<endl;
cout<<nilai[0]<<" ";
cout<<nilai[1]<<" ";
cout<<nilai[2]<<" ";
cout<<nilai[3]<<" ";
cout<<nilai[4]<<" "<<endl;
getch();
}

Contoh menampilakn elemen array multi dimensi


#include <iostream>
#include <conio.h>
using namespace std;
#define ROW 3 //telah ditentukan lebih dulu, kolom dan barisnya
#define COL 3
int main()
{
int x,i;
int data[ROW][COL];
for(x=0;x<ROW;x++)
{
cout<<"Baris"<<x+1<<endl;
for(i=0;i<COL;i++)
{
cout<<" Kolom "<<i+1<<" : ";
cin>>data[x][i];
}
}
cout<<"---------------------"<<endl;
cout<<"Output : "<<endl;
for(x=0;x<ROW;x++)
{
for(i=0;i<COL;i++)
{
cout<<" "<<data[x][i]<<" ";
}
cout<<endl;}getch();}
Beberapa teknik pencarian
• Pencarian secara beruntun

• Pencarian dengan sentinel

• Pencarian bagi dua

• Pencarian berbasis fungsi Hash

Jenis pencarian ini dapat digunakan dalam pencarian data dalam sebuah array.

Sesuai dengan dua contoh program sedehana di atas, anda dapat mengembangkannya sesuai
dengan kebutuhan program yang akan dibangun.

Misalnya, jika anda ingin mencari elemen sebuah array, gunakan teknik pencarian dasar secara
beruntun, yang memeriksa/mengecek setiap elemn yang ada dalam sebuah array, dan akan
menampilkan hasil ketika elemen yang diinginkan telah ditemukan.

Array merupakan teknik dasar dalam membangun sebuah program. Banyak aplikasi lanjutan yang
dapat dikembangkan dengan menggunakan array.

Diharapkan mahasiswa dapat memperbanyak latihan / praktek untuk teknik-teknik pemrograman


array.
Pointer
- Pointer adalah penunjuk dari alamat dari sebuah variabel di dalam memori

- Dua macam pointer:

• Typed (tertentu) : merupakan pointer yang menunjuk pada tipe data tertentu pada
variabel.

• Generic (umum) : merupakan pointer yang tidak menunjuk pada tipe data tertentu pada
variabel.

Definisi pointer
Suatu variabel yang berisi alamat memori (reference) dari suati variabel lain. Alamat ini merupakan
lokasi dari objek lain di dalam memori. Alamat memori tempat suatu variabel disimpan disebut
reference dari variabel tersebut. Reference suatu variabel diakses melalui suatu reference operator
(&). Secara bahasa, operator ‘&’ bisa diartikan menjadi ‘alamat dari’

Pengalamatan suatu variabel (&)

• Suatu variabel:

int a = 50;

• Variabel a mempunyai 2 parameter :

– nilai dari variabel a  50

– Alamat memori tempat variabel a disimpan: dibaca dengan perintah &a

• Alamat memori ini tidak bisa diprediksi nilainya, karena nilai alamat memori ditentukan oleh
compiler.

• address_a disebut sebagai variabel yang menyimpan reference(alamat memori) untuk


variabel a

Dereference operator (*)


Deklarasi tipe data pointer
* Contoh :
int *add;
• Deklarasi di atas menyatakan deklarasi variabel add yang bertipe pointer
untuk variabel tipe int
• Variable add digunakan untuk menyimpan suatu alamat memori suatu
variabel bertipe int
• Deklarasi suatu pointer diawali dengan tanda ‘*’ sebelum nama
variabelnya

Kegunaan pointer
- Menyimpan alamat memori dari sebuah variabel. Selain menyimpan
alamat dari variabel, pointer juga dapat digunakan untuk menyimpan
alamat dari sebuah fungsi (function pointer).
- Mengirimkan “Parameter yang berupa variabel” ke dalam fungsi, artinya
nilai
variabel bisa diubah di dalam fungsi.
- Untuk membuat variabel DINAMIS (Bukan variabel Statis).
Kekurangan pointer
- Boros memori
- Jika pointer sudah mulai mengarah ke memori sistem cadangan maka
dapat menyebabkan ketidakstabilan sistem.
- Pengaruh pada sistem
- Pointer unintialized
Pointer pada array
Isi variabel pointer (alamat) dapat menunjuk kepada variabel array sehingga
data yang ditunjuk oleh alamat pointer tersebut dapat diubah tanpa
menyentuh / menggunakan variabel array yang bersangkutan.
Perbedaan array dengan pointer

Contoh 1
#include <iostream>
using namespace std;
int main()
{
int i = 50;
cout<< "nilai i = "<< i <<endl;
cout<< "alamat dari nilai i = "<< &i <<endl;
return 0;}

Contoh 2

#include <iostream>
using namespace std;
int main()
{
int *temppointer = 0;
int nilai1 = 12345;
int nilai2 = 50;
temppointer = &nilai1;
cout<<"alamat pointer di memori : " << &temppointer << endl;
cout<<"alamat variabel nilai1 di memori adalah : " << &nilai1 << '\n' << "isi variabel nilai1 : " <<
nilai1 <<endl;
cout<<"alamat variabel nilai2 di memori adalah : " << &nilai2 << '\n' << "isi variabel nilai2 : " <<
nilai2 <<endl;
cout<<"pointer ke alamat variabel nilai2 " << &nilai2 <<'\n'<< "dan isi dari pointer adalah : " <<
*temppointer <<endl;
return 0;}

Contoh 3 (mengubah isi variabel dengan pointer)

#include <iostream>
using namespace std;
int main()
{
int nilai1 = 70;
int * pnilai = 0;
cout<<"nilai variabel nilai1 = " <<nilai1<<endl;
cout<<"nilai alamat pointer = " <<&pnilai<<endl;
pnilai=&nilai1;
*pnilai=10;
cout<<"nilai variabel nilai1 adalah = "<<nilai1<<endl;
return 0;}

Contoh 4 (Pointer pada array)

#include<conio.h>
#include<iostream>
using namespace std;
int main( )
{
int i;
int nilai[5];
int *ptrnilai;
ptrnilai = nilai;
for(i=1;i<=5;i++)
{
cout<<"Masukan Nilai Pertama = ";
cin>>nilai[i];
}
cout<<endl;
cout<<"Hasil Pengaksesan Elemen Array Lewat";
cout<<"Pointer";
cout<<endl<<endl;
for(i=1;i<=5;i++)
{
cout<<"Elemen "<<i<<". Nilai "<<nilai[i];
cout<<", Menempati Alamat Memori = ";
cout<<&ptrnilai[i];
cout<<endl;
}
getch();
}

También podría gustarte