Logika Pemrograman yang Wajib Dimiliki Programmer [PART 2]

Logika Pemrograman yang Wajib Dimiliki Programmer [PART 2]

Pada artikel kali ini, melanjutkan pembahasan sebelumnya pada artikel yang berjudul Logika Pemrograman yang Wajib Dimiliki Programmer [PART 1]. Pada pembahasan kali ini, akan lebih dibahas ke permasalahan atau kode yang lebih sering digunakan pada pemrograman bahasa C.

6. Repetition

Repetition merupakan konsep pemrograman untuk membuat struktur kendali perulangan jika memenuhi suatu kondisi. Perulangan dalam bahasa C dapat menggunakan 3 cara, yaitu :

1. FOR

Perulangan FOR digunakan jika jumlah perulangan sudahdiketahui.

Struktur code :

for ( <<ekspresi1>>; <<ekspresi2>>; <<ekspresi3>>)
{
<<statement>>;
}

Penjelasan:

  1. Ekspresi1 dijalankan.
  2. Ekspresi2 diperiksa apakah true atau false. Jika true maka statement dijalankan, jika false maka statement tidak
  3. dijalankan.
  4. Setelah statement dijalankan, maka ekspresi3 dijalankan.
  5. Kemudian kembali ke poin nomor 2.

Contoh:

for (int i=0; i<5; i++)
{
printf(“%dn”, i);
}

Hasil :

0
1
2
3
4

2. WHILE

WHILE digunakan jika jumlah perulangan belum diketahui dan disesuaikan terhadap kondisi. Perulangan WHILE akan tidak dijalankan sama sekali jika kondisi tidak terpenuhi sejak awal.

Struktur code:

while ( <<kondisi>> )
{
<<statement>>;
}

Penjelasan:

  1. Kondisi akan dicek apakah true atau false. Jika true maka statement dijalankan, jika false maka statement tidak dijalankan.
  2. Setelah statement dijalankan, kembali ke poin 1.
  3. Jika kondisi selalu bernilai true, maka akan terjadi infinite loop atau looping forever.

Contoh:

int angka = 1;
while (angka<4)
{
printf(“%dn”, angka);
angka++;
}

Hasil:

1
2
3

3. DO WHILE

DO WHILE digunakan jika jumlah perulangan belum diketahui dan disesuaikan terhadap kondisi. Perulangan DO WHILE akan menjalankan statement terlebih dahulu sebelum memeriksa kondisi.

Struktur code:

do
{
<<statement>>;
}while ( <<kondisi>> );

Penjelasan:

  1. Statement akan dijalankan terlebih dahulu.
  2. Kemudian dilanjutkan cek kondisi.
  3. Jika kondisi true, maka kembali ke poin 1. Jika false maka DO WHILE selesai.

Contoh:

int angka = 1;
do
{
printf(“%dn”, angka);
angka++;
}while (angka<5);

Hasil:

1
2
3
4

7. Array

Array adalah sekumpulan data dengan tipe data dan nama variabel yang sama. Elemen dalam array diakses melalui indeks. Indeks dalam array dimulai dari indeks ke-0.

Array dapat dibuat dalam 1 dimensi dan lebih dari 1 dimensi. Contoh kasus penggunaan array adalah penyimpanan nilai 30 mahasiswa. Jika menggunakan array, kita dapat menampung nilai 30 mahasiswa tersebut dalam 1 variabel. Array juga diterapkan dalam pembentukan string yaitu menggunakan array of char.

Contoh :

int nilai [30];
nilai[0] = 90;
nilai[1] = 100;
int angka[2][3] = {{1,2,3}, {4,5,6}};
angka [1][2]=100;
char nama[50] = “Anto”;

Penjelasan:

  • Varibel nilai dapat tersedia 30 elemen. Namun hanya terisi elemen ke 0 dan 1 dengan nilai 90 dan 100.
  • Variabel angka terdiri dari 2 dimensi, yaitu 2 baris dan 3 kolom. Baris pertama berisi angka 1, 2, 3. Sedangkan baris kedua berisi angka 4, 5, 6.
  • Elemen indeks ke [1][2] yaitu angka 6 akan diganti dengan angka 100.
  • Varibel nama bertipe data array of char (string) dan menampung kata “Anto”.

8. Pointer

Ketika membuat variabel, maka variabel tersebut akan dialokasikan dalam memori komputer. Di dalam memori komputer, setiap variabel memiliki alamat.

Pointer adalah tipe data yang berisi alamat variabel lain. Pointer ditunjukkan dengan simbol *, sedangkan alamat variabel menggunakan simbol &.

Contoh:

Nama variabel

 

angka

 

ptr

Isi variabel

 

100

 

123

Alamat

 

123

 

789

Code:

int angka = 100;
int *ptr;
ptr = &angka;
*ptr = 30;

Penjelasan:

  1. Variabel angka berisi nilai 100 dengan alamat memori 123.
  2. Varibel ptr berisi alamat variabel angka (123).
  3. Alamat dari variabel ptr adalah 789.
  4. Isi variabel angka dapat diubah dengan menggunakan *ptr.

9. Function

Function adalah modul-modul dari code. Function memiliki return type, parameter dan isi. Return type merupakan tipe data yang akan dikembalikan dari function tersebut. Parameter digunakan untuk passing data antar function.

Parameter terdiri dari 2 jenis yaitu parameter formal dan aktual.

Parameter formal adalah parameter pada saat pembuatan function.

Parameter aktual adalah parameter pada saat pemanggilan function.

Passing parameter dalam function terdiri dari 3 jenis, yaitu:

1. Passing by value.

Passing by value yaitu tipe passing parameter yang hanya mengirimkan nilai pada parameter aktual tanpa mengubah isi dari data yang terdapat pada parameter aktual.

Contoh:

void print (int a)
{
a = 10;
printf (“%dn”, a);
}
void main ()
{
int a = 5; print(a);
printf(“%dn”, a);
}

Hasil:

10
5

Penjelasan:

  1. Pada saat printf di dalam function print, hasil yang dicetak yaitu angka 10, karena a telah diganti menjadi angka 10 dalam function print.
  2. Pada saat printf di dalam function main, hasil yang dicetak yaitu angka 5. Hal ini dikarenakan passing by value tidak dapat mengubah nilai variabel melalui parameter aktual.

2. Passing by pointer.

Passing by pointer adalah mengirimkan alamat dari suatu variabel, parameter aktual menggunakan simbol “&” dan parameter formal menggunakan simbol pointer *. Passing by pointer dapat mengubah nilai dari variabel.

Contoh:

void print (int *a)
{
*a = 10;
printf (“%dn”, *a);
}

void main ()
{
int a = 5; print(&a); printf(“%dn”, a);
}

Hasil:

10
10

Penjelasan:

  1. Hasil cetak a di function main dan print sama-sama memberikan angka 10. Hal ini dikarenakan passing by pointer, sehingga penggantian nilai variabel a di function print juga akan mengganti nilai variabel a yang terdapat di dalam function main.

3. Passing by reference.

Passing by value adalah mengirimkan varibel melalui parameter aktual, alamat dari variabel akan diakses di parameter formal dengan penggunaan simbol “&”.

Contoh:

void print (int &a)
{
a = 10;
printf (“%dn”, a);
}

void main ()
{
int a = 5; print(a);
printf(“%dn”, a);
}

Hasil:

10
10

Penjelasan:

Hasil cetak a di function main dan print sama-sama memberikan angka 10. Hal ini dikarenakan passing by reference, sehingga penggantian nilai variabel a di function print juga akan mengganti nilai variabel a yang terdapat di dalam function main.

10. Built-in Function

Built-in function adalah function yang telah disediakan oleh bahasa pemrograman. Dalam bahasa C, function dipanggil dengan melakukan include header file.

Beberapa contoh built-in function yang sering digunakan seperti:

Built-in

 

Include

Fungsi

function

 

 

 

printf

 

stdio.h

Mencetak

scanf

 

stdio.h

Menerima input

strlen

 

string.h

Panjang string

strcpy

 

string.h

Copy string

strcmp

 

string.h

Compare string

strcat

 

string.h

Menambahkan string ke string lain

rand

 

stdlib.h

Random angka

pow

 

math.h

Perhitungan pangkat

isdigit

 

ctype.h

Memeriksa apakah angka

isalpha

 

ctype.h

Memeriksa apakah alfabet

11. Recursion

Recursion adalah function yang memanggil dirinya sendiri. Recursion dapat digunakan untuk menyelesaikan masalah seperti bilangan fibonacci dan faktorial.

Contoh:

int faktorial (int angka)
{
if (angka==0 || angka==1)
{
return 1;
}
else
{
Return n*faktorial(n-1);
}
}

void main()
{
int angka = 5;
printf(“%dn”, faktorial(angka));
}

Penjelasan:

  1. Function faktorial merupakan function yang recursive.
  2. Angka akan dikurangi 1 terus menerus ketika pemanggilan ulang function faktorial.
  3. Jika angka mencapai 1 atau 0, maka function faktorial akan berakhir dan mengembalikan nilai ke function main.

12. File

Operasi file yang akan dibahas yaitu baca dan tulis file. File tersebut akan disimpan dalam bentuk teks. File tersebut akan dibaca dan ditulis melalui program C yang dikembangkan.

Function-function dalam operasi file yang sering digunakan yaitu :

Function

 

Kegunaan

fopen

 

Mengaktifkan / membuka file

fclose

 

Menutup file

fscanf

 

Membaca isi dari file

fprintf

 

Mencetak ke file

feof

 

Mendeteksi akhir dari file

Jenis operasi file :

Operasi

 

Kegunaan

r

 

read file.

w

 

write file, jika file ada isi maka akan ditimpa.

a

 

append file, jika file ada isi maka akan dilanjutkan

 

 

di bawah.

Baca file :

FILE *read = fopen (“data.txt”, “r”);
char nama[50];
while (!feof(read))
{
fscanf(read, “%[^n]n”, nama);
printf(“%sn”, nama);
}

Penjelasan:

  1. FILE akan melakukan open terhadap data.txt di folder project.
  2. Ketika tidak terdeteksi akhir file, maka akan dilakukan pembacaan file per baris dan mencetaknya.

Tulis file :

FILE *write = fopen (“data.txt”, “w”); 
fprintf(write, “Anto”);
fclose(write);

Penjelasan:

  1. FILE akan melakukan open terhadap data.txt di folder project.
  2. Program akan mencetak kata “Anto” ke dalam file tersebut.
  3. Karena jenis operasinya adalah w (write), maka data.txt akan ditimpa dengan kata “Anto”.
  4. Jika menggunakan jenis operasi a (append), maka kata “Anto” akan ditambahkan di baris terakhir.

13. Sorting

Sorting adalah algoritma untuk menempatkan data sesuai urutan, baik ascending (kecil ke besar) maupun descending (besar ke kecil). Salah satu tujuan sorting yaitu mempercepat pencarian data.

Algoritma sorting terdiri dari beberapa jenis, yaitu :

  1. Buble sorting
  2. Selection sorting
  3. Insertion sorting
  4. Merge sorting
  5. Quick sorting

Contoh code (Bubble sort ascending) :

void print (int a)
{
a = 10;
printf (“%dn”, a);
}

void main ()
{
int a = 5;
print(a);
printf(“%dn”, a);
}

Penjelasan:

  1. Variabel angka terdiri dari 5 elemen integer yang tidak berurutan.
  2. Looping dimulai dari varibel i 0-4 untuk dijadikan elemen.
  3. Setiap looping i, variabel j juga dilooping sejumlah i sampai 4.
  4. Angka ke-i akan dibandingkan dengan angka ke-j.
  5. Jika angka ke-i lebih besar daripada angka ke-j, maka akan diswap angka ke-i dan ke-j.
  6. Setelah looping i dan j selesai, maka data telah disorting secara ascending. Jika ingin menjadi descending, cukup mengganti simbol > yang terdapat di dalam kondisi IF menjadi <.
  7. Isi variabel angka dilooping untuk mencetak hasil dari indeks ke-0 hingga indeks ke-4.