Akhmad Dul Ikhsan

Engineer

Developer

Freelancer

Coder

I'm Akhmad Dul Ikhsan,
Student & Ordinary People
from Banjarnegara, Jawa tengah, Indonesia.

I have rich experience in web site design & building and customization. I am study in Stimik Tunas Bangsa Banjarnegara major S1 Informatic Engineering. I love to talk with you about our unique approach. Feel free to contact me writing an email with your project idea.

What I Do
UI/UX Design

UI/UX design or interface design is the process designers use to build interfaces in software that focuses on appearance..

Brand Identity

Brand identity is the elements created by the company so that it can look different from competitors so that it can create a special perception for its users.

Web Design

Web Design is a term about visual design that is applied to digital media, namely websites. Where this is also related to what web development is, because the development of a website does not only demand the functionality of the website, but we also need an art essence called design.

Mobile Apps

Mobile applications are computer programs designed to run on mobile devices such as mobile phones/tablets or watches. Mobile apps are often thought of as the opposite of a desktop app running on a desktop computer, and with a web app running on the device's web browser.

System Analytics

Systems analyst is a job that belongs to the engineering team. This position is in charge of analyzing, designing, and implementing systems.

Cyber Security

Cyber security is the practice of protecting computers, servers, mobile devices, electronic systems, networks, and data from malicious attacks.

Recent Works
Tampilkan postingan dengan label Pemrograman. Tampilkan semua postingan
Tampilkan postingan dengan label Pemrograman. Tampilkan semua postingan

Cara memproses variabel berjenis record

 Perhatikan deklarasi variabel berikut :

TYPE nilai : RECORD
Nilai1 : real;
Nilai2 : real;
END;
VAR x,y : nilai;
Untuk memproses variabel x dan / atau y dilakukan dengan cara menyebutkan fifield designatornya, yg terdiri dari atas :
Nama_record.nama_fifield

Pada deklarasi diatas yang dimaksud dengan fifield designator-nya adalah :
x.nilai1
x.nilai2
y.nilai1
y.nilai2

Jadi jika ingin membaca variabel x atau y atau keduanya, maka bentuk statement-nya adalah :
READ (x.nilai1, x.nilai2, y.nilai1, y.nilai2);

Cara memahami record

 Bentuk umum deklarasi suatu variabel berjenis record adalah sbb :

TYPE identififier = RECORD
Nama_fifield_1 : jenis;
Nama_fifield_2 : jenis;
……………………..
……………………..
nama_fifield_n : jenis;
END;

Contoh :
VAR nilai : RECORD
Nilai_1 : integer;
Nilai_2 : integer;
END;


Record

 merupakan Struktur data yang menampung beberapa data yang tipenya dapat berlainan.

Record dapat dikatakan sebagai suatu kumpulan data item yang masing-masing mempunyai jenis data berbeda. Data item yang merupakan elemen record biasanya disebut dengan FIELD.

Jadi secara sederhana record merupakan tipe data tersetruktur yang terdiri dari beberapa data.

Kemudian masing-masing data tersebut disebut sebagai fifield. Namun yang menarik adalah masing-masing data fifield dapat berupa satu atau beberapa nama pengenal.

Tanda Semi Colon

 Tanda semicolon “ ; ” digunakan untuk mengakhiri sebuah pernyataan.

Setiap pernyataan harus diakhiri dengan sebuah tanda semicolon.E. 

Mengenal cout (dibaca : C out) Pernyataan cout merupakan sebuah objek di dalam C++, yang digunakan untuk mengarahkan data ke dalam standar output (cetak pada layar).

Jenis Jenis Komentar dalam C++

 Komentar tidak pernah dicompile oleh compiler. Dalam C++ terdapat 2 jenis komentar, yaitu:

Jenis 1
/* Komentar anda diletakkan di dalam ini bisa mengapit lebih dari satu baris */
Jenis 2 :
// Komentar anda diletakkan disini ( hanya bisa perbaris )

Fungsi Main

 Fungsi ini menjadi awal dan akhir eksekusi program C++. main adalah nama judul fungsi. 

Melihat bentuk seperti itu dapat kita ambil kesimpulan bahwa batang tubuh program utama berada didalam fungsi main().

Berarti dalam setiap pembuatan program utama, maka dapat dipastikan seorang pemrogram menggunakan minimal sebuah fungsi.

Pembahasan lebih lanjut mengenai fungsi akan diterangkan kemudian. Yang sekarang coba ditekankan adalah kita menuliskan program utama kita didalam sebuah fungsi main().

Include

 Adalah salah satu pengarah prepocessor directive yang tersedia pada C++.Preprocessor selalu dijalankan terlebih dahulu pada saat proses kompilasi terjadi.

Bentuk umumnya :
# include <nama_file>

tidak diakhiri dengan tanda semicolon, karena bentuk tersebut bukanlah suatu bentuk pernyataan, tetapi merupakan prepocessor directive. Baris tersebut menginstrusikan kepada kompiler yang menyisipkan file lain dalam hal ini file yang
berakhiran .h(fileheader) yaitu file yang berisi sebagai deklarasi. contohnya:
#include <iostream.h>: diperlukan pada program yang melibatkan objek cout
#include <conio.h>: diperlukan bila melibatkan clrscr(),yaitu perintah
untukmembersihkan layar.
#include <iomanip.h>: diperlukan bila melibatkan setw() yang bermanfaatuntuk
mengatur lebar dari suatu tampilan data.
# include <math.h>: diperlukan pada program yang menggunkan operasi sqrt()
yang bermanfaat untuk operasi matematika kuadrat.

Sejarah singkat C dan C++

Bahasa C merupakan pengembangan dari bahasa B yang ditulis oleh Ken Thompson pada tahun 1970. Bahasa C untuk pertama kali ditulis oleh Brian W. Kernighan dan Denies M.Ricthie pada tahun 1972. Bahasa C, pada awalnya dioperasikan diatas sistem operasi UNIX.

Bahasa C adalah merupakan bahasa pemrograman tingkat menengah yaitu diantara bahasa tinggat rendah dan tingkat tinggi yang biasa disebut dengan Bahasa Tingkat Menengah.

Berbicara tentang C++ biasanya tidak lepas dari C, sebagai bahasa pendahulunya. Pencipta C adalah Brian W.Kerninghan dan Dennis M.Ritchie pada sekitar tahun 1972, dan sekitar satu dekade setelahnya di ciptakanlah C++, oleh Bjarne Stroustrup dari Laboratorium Bell, AT&T,pada tahun 1983. C++ cukup kompatibel dengan bahasa pendahulunya C. 

Pada mulanya C++ disebut “ a better C “. Nama C++ sendiri diberikan oleh Rick Mascitti pada tahun 1983, yang berasal dari operator increment pada bahasa C. Keistimewaan yang sangat berari dari C++ ini adalah karena bahasa ini mendukung pemrograman yang berorientasi objek ( OOP / Object Oriented Programming).

Loop

 Loop atau perulangan proses merupakan bagian yang sangat penting dalam teknik pemrograman. Loop digunakan untuk menghindari penulisan statemen yang berulang-ulang. Semua bahasa pemrograman memiliki statemen berkaitan dengan loop. Selain itu loop merupakan salah satu struktur logika dalam pemrograman.

Suatu konsep dasar yag harus dipahami dengan baik dalam teknik looping adalah berapa jumlah perulangan proses yang terjadi harus diketahui dengan baik, karena kekurangan atau kelebihan langkah akan mengakibatkan tidak validnya suatu perhitungan dalam sebuah loop.

Dalam sebuah perulangan yang harus ditentukan pertama kali adalah kapan sebuah loop harus mulai atau start, dan kapan suatu loop harus berakhir atau dengan kata lain loop sudah berhenti berproses. Untuk pergerakan dari titik awal sampai pada titik akhir, maka diperlukan suatu step untuk mengontrol nilai pergerakan dari suatu loop. Step yang diijinkan boleh bernilai positif ataupun negative.

Persyaratan lain adalah jika menggunakan step naik atau positif, maka nilai awal harus lebih kecil daripada nilai akhirnya dan sebaliknya jika menggunakan step negative atau menurun harus menggunakan nilai awal lebih besar daripada nilai akhirnya. Hal ini disebabkan jika persyaratan tersebut tidak dipenuhi maka loop tidak akan pernah berakhir, artinya algoritma tersebut tidak akan pernah berakhir dan ini menyalahi dari definisi algoritma. Dengan kata lain jika dikodekan dalam bahasa pemrograman, maka proses tidak akan pernah berhenti.

Jika sudah dapat menentukan nilai awal, nilai akhir dan stepnya, maka langkah berikutnya harus dapat menghitung berapa jumlah perulangan yang terjadi. Dalam banyak kasus nilai awal loop tidak selalu bernilai satu dan tidak selalu berakhir dengan angka fixed yang kadang justru berakhir dengan suatu variabel yang menunjukkan fleksibilitasnya.

Misalkan:

Untuk nilai awal 1, dan nilai akhir 5, dengan step +1, maka dapat diketahui jumlah perulangan sebanyak 5 kali.

Untuk nilai awal 1 dan untuk nilai akhir n, dengan step +1, dapat diketahui jumlah perulangan sebanyak n.

Jika nilai awal adalah 5 dan nilai akhir adalah n, maka berapakah jumlah perulangan yang terjadi ?

Untuk menjawab permasalahan tersebut, maka yang harus diasumsikan nilai awal harus selalu nol dengan melakukan manipulasi penjumlahan dan atau pengurangan. Tentu saja tanpa mengubah batasan loop yang sesungguhnya, ini hanya asumsi saja.

Jadi jika nilai awal berubah menjadi 1, maka itu hasil dari 5-4, sehingga batas akhirnya n-4 juga. Oleh karena nilai awal 1 dan nilai akhir n-4, maka jumlah perulangan yang terjadi adalah n-4 kali, demikian juga untuk kasus – kasus yang lainnya.

SOAL :

1.     Jika nilai awal adalah 4 dan nilai akhirnya adalah n-3, maka hitung jumlah perulangannya jika stepnya +1?

2.     Jika nilai awal adalah m dan nilai akhir adalah n-2, maka tentukan jumlah perulangannya jika stepnya +1 ?

Dalam bahasa pemrograman memiliki beberapa teknik loop baik menggunakan decision ataupun menggunakan loop standar seperti Loop for, loop while, loop repeat dan seterusnya tergantung dari jenis bahasa pemrograman yang digunakan. Tetapi secara prinsip konsep logika loop untuk tiap bahasa pemrograman berbeda adalah sama.

Jenis jenis Loop

1. Loop dengan decision.

2. Loop for.

3. Loop while.

4. Loop repeat.

5. Nested loop for.

6. Nested loop compound.

MACAM-MACAM STRUKTUR SELEKSI

 Struktur seleksi dibagi menjadi 4  bagian yaitu :

1.     Sruktur seleksi sederhana (if-then)

2.     Sruktur seleksi umum (if – then – else)

3.     Sruktur seleksi tersarang (nested if )

4.     Struktur Case-of

Struktur seleksi sederhana (if-then)

Bentuk ini merupakan bentuk yang paling sederhana dari keseluruhan struktur seleksi yang ada. Pada bentuk ini, hanya jika komparasi memiliki nilai true saja yang akan diikuti oleh suatu proses khusus.

Syntax :

If (kondisi) then

     Blok statemen untuk kondisi bernilai true

Endif

Contoh:

If ( masa_kerja > 5 ) then

     Bonus := 50000

     Gapok := gapok+bonus

Cetak gapok

Endif

Cetak gapok

Dari contoh tersebut dapat dijelaskan, jika masa kerja karyawan lebih besar 5 tahun, maka akan mendapatkan bonus sebesar 50000 dan gaji pokok yang didapatkan merupakan jumlahan dari gaji pokoknya dengan bonus yang dia peroleh, tetapi jika komparasi menghasilkan false, maka gaji pokok yang didapatkan karyawan hanya gaji pokok saja.

Untuk lebih detilnya diberikan contoh dalam bahasa pascal berikut ini:


Struktur seleksi umum ( if-then-else)

Pada bentuk kedua ini, baik pada kondisi bernilai true ataupun false diikuti oleh proses khusus tetapi yang harus diperhatikan bahwa roses khusus pada keadaan true tidak mungkin akan diproses pada keadaan false dan sebaliknya.

Syntax :

If (kondisi) then

     Blok statemen untuk kondisi bernilai true

Else

     Blok statetemn untuk kondisi bernilai false

endif

Contoh:

If ( masa_kerja > 5 ) then

     Bonus := 150000

Else

     Bonus := 0

ENDIF

     Gapok := gapok+bonus

Cetak gapok

Dengan mengacu pada contoh sebelumnya terlihat bahwa penggunaan bentuk yang kedua lebih terlihat luwes dalam struktur algoritmanya dibandingkan dengan penggunaan pada struktur pertama.

Pada kasus ini jika masa kerja lebih besar 5 tahun bernilai true maka karyawan akan mendapatkan bonus sebesar 50000 sedangkan karyawan dengan masa kerja kurang dari atau sama dengan 5 tahun tidak mendapatkan bonus, sehingga begitu keluar dari struktur decision maka akan terlihat isi variabel bonus dapat 0 atau 50000 tergantung dari masa kerja karyawan.

Algoritma tersebut dapat dimodifikasi dengan bentuk alternatifnya seperti berikut ini :

If ( masa_kerja <= 5 ) then

     Bonus := 0

Else

     Bonus := 150000

ENDIF

     Gapok := gapok+bonus

Cetak gapok

Maka terlihatlah bahwa kedua algoritma tersebut memiliki kesamaan nilai logika. Sehingga setiap orang bebas memilih menggunakan algoritma yang akan digunakan.

Lebih jelasnya akan dijabarkan dalam suatu program dalam bahasa pascal berikut ini:

uses wincrt;

var

   nama  : string;

   masa_kerja, gapok,tmk, bonus  : real;

 

begin

     clrscr;

     write('Masukkan nama Karyawan : ');

     readln(nama);

     write('Masukkan tahun masuk kerja : ');

     readln(tmk);

     write('Masukkan gaji pokok : ');

     readln(gapok);

     masa_kerja := 2005 - tmk;

 

     if (masa_kerja > 5 ) then

        bonus := 50000

     else

         bonus := 0;

 

     gapok := gapok + bonus;

 

     writeln('Gaji Total : ',gapok:8:0);

     readln;

end.

Eksekusi dari program tersebut di atas akan menghasilkan keluaran seperti berikut ini :


Atau kalau dirubah dalam bentuk alternatifnya program menjadi :

uses wincrt;

 

var

   nama                          : string;

   masa_kerja, gapok,tmk, bonus  : real;

 

begin

     clrscr;

     write('Masukkan nama Karyawan : ');

     readln(nama);

     write('Masukkan tahun masuk kerja : ');

     readln(tmk);

     write('Masukkan gaji pokok : ');

     readln(gapok);

     masa_kerja := 2005 - tmk;

 

     if (masa_kerja <= 5) then

        bonus := 0

     else

         bonus := 50000;

 

     gapok := gapok + bonus;

 

     writeln('Gaji Total : ',gapok:8:0);

     readln;

end.

Dan keluarannya adalah :

Dari program terlihat jelas bahwa kedua algoritma tersebut memberikan hasil yang sama, artinya keduanya dapat dipilih salah satu sebagai suatu solusi penyelesaian masalah.

Kasus :

Sebuah perusahaan akan menghitung gaji karyawan dengan ketentuan sebagai berikut:

a.     Gaji pokok berdasarkan golongan.

GOLONGAN

GAJI POKOK

1

1000000

2

750000

3

500000

b.     Bonus diberikan pada karyawan yang masa kerjanya minimal 5 tahun sebesar 150000.

c.     Gaji = gaji pokok + bonus.

Solusi :

Read(nama,nip,tahun_masuk_kerja,golongan)

If golongan = 1 then

     Gaji_pokok := 1000000

Else

     If golongan = 2 then

                 Gaji_pokok := 750000

     Else

                 Gaji_pokok := 500000

     Endif

Endif

Masa_kerja = 2005 – tahun_masuk_kerja

If masa_kerja >= 5 then

     Bonus := 150000

Else

     Bonus := 0

Endif

Gaji:=gaji_pokok + bonus

Write(nama,nip,gaji_pokok,bonus,gaji)

Dari Algoritma tersebut dapat dijabarkan dalam pengkodean Bahasa Pascal sebagai berikut :

uses wincrt;

 

var

   nama, nip                                   : string;

   masa_kerja, gapok,tmk, bonus  : real;

   gol                                             : integer;

 

begin

     clrscr;

     write('Masukkan nama Karyawan : ');

     readln(nama);

     write('MAsukkan NIP           : ');

     readln(nip);

     write('Masukkan Golongan 1/2/3: ');

     readln(gol);

     write('Masukkan tahun masuk kerja : ');

     readln(tmk);

     if ( gol =1 ) then

        gapok := 1000000

     else

         if (gol=2) then

            gapok := 750000

         else

             gapok := 500000;

 

     masa_kerja := 2005 - tmk;

 

     if (masa_kerja > 5 ) then

        bonus := 150000

     else

         bonus := 0;

 

     gapok := gapok + bonus;

 

     writeln('Gaji Total : ',gapok:8:0);

     readln;

end.

Sedangkan untuk keluarannya adalah sebagai berikut :


Pada kasus terakhir untuk bentuk decision sebenarnya sudah menggunakan struktur seleksi tersarang untuk lebih detailnya akan dibahas berikut ini.

Struktur seleksi tersarang (nested if )

Bentuk ketiga merupakan bentuk yang tidak memiliki struktur khusus, artinya keadaannya sangat bergantung dari kasus atau permasalahan yang terjadi.

Yang dapat digunakan sebagai sandaran adalah apabila salah satu pohon keputusan baik true ataupun false diikuti oleh struktur seleksi lainnya maka bentuk itulah yang dikatakan struktur seleksi tersarang. Artinya suatau struktur seleksi akan diproses apabila struktur seleksi di atasnya ada.

Contoh 1 :

If  (kondisi 1) then

     If (kondisi 2) then

                 Statemen 1

     Else

                 Statemen 2

     Endif

Else

     Statemen 3

Endif

Bentuk kondisi 2 tersarang pada kondisi 1 artinya bahwa kondisi 2 akan dikerjakan sangat bergantung dari kondisi 1 khususnya jika bernilai true.

Contoh 2 :

If (kondisi 1 ) then

     Statemen 1

Else

     If (kondisi 2) then

                 Statemen 2

     Else

                 Statemen 3

     Endif

Endif

Kondisi 2 tersarang pada kondisi 1 khususnya jika kondisi 1 bernilai false, artinya kondisi 2 akan diroses atau tidak bergantung pada hasil komparasi pada kondisi 1. Untuk lebih jelasnya statemen 3 akan diproses jika kondisi 1 false dan kondisi 2 false. Statemen 2 akan diproses jika kondisi 1 false dan kondisi 2 true dan seterusnya.

Contoh 3:

If (kondisi 1 ) then

     If (kondisi 2) then

                 Statemen 1

     Else

                 Statemen 2

     Endif

Else

     If (kondisi 3) then

                 Statemen 3

     Else

                 Statemen 4

     Endif

Endif

Kondisi 2 tersarang dengan kondisi 1 untuk keadaan bernilai true dan kondisi 3 tersarang dengan kondisi 1 untuk keadaan bernilai false. Statemen 4 akan dikerjakan jika kondisi 1 false dan kondisi 3 false, statemen 1 akan dikerjakan jika kondisi 1 true dan kondisi 2 true dan seterusnya.

Contoh 4:

If (kondisi 1 ) then

     Statemen 1

Else

     Statemen 2

Endif

If (kondisi 2) then

     Statemen 3

Else

     Statemen 4

Endif

Dari kedua decision tersebut keduanya adalah saling bebas, artinya tidak tersarang meskipun kedua decision berdekatan.

Decision tersarang jika suatu decision berada dalam decision yang lainnya.

KASUS :

Sebuah perusahaan akan menghitung gaji karyawan dengan ketentuan sebagai berikut:

1.     Gaji pokok berdasarkan golongan :

GOLONGAN

GAJI POKOK

1

1000000

2

750000

3

500000

 

2.     Status 1 artinya menikah, 2 artinya janda atau duda dan 3  belum menikah.

3.     Bonus diberikan pada karyawan yang masa kerjanya minimal 5 tahun sebesar 150000.

4.     Tunjangan menikah diberikan pada karyawan yang menikah sebesar 10 % dari gaji Pokok bagi karyawan yang statusnya menikah.

5.     Tunjangan anak diberikan pada karyawan yang statusnya menikah dan maksimal jumlah anak 3 sebesar 12.5 % dari gaji pokok per anak.

6.     Gaji = gaji pokok + bonus + tunjangan menikah + tunjangan anak.

Solusi :

Read(nama,nip,status,janak,tahun_masuk_kerja,golongan)

If golongan = 1 then

     Gaji_pokok := 1000000

Else

     If golongan = 2 then

                 Gaji_pokok := 750000

     Else

                 Gaji_pokok := 500000

     Endif

Endif

Masa_kerja = 2005 – tahun_masuk_kerja

If masa_kerja >= 5 then

     Bonus := 150000

Else

     Bonus := 0

Endif

If status 3 then

     T_menikah := 0

     T_anak := 0

Else

     If janak > 3 then

                 T_anak := 0.125 * 3 * gaji_pokok

                 T_menikah := 0.1 * gaji_pokok

     Else

                 T_anak := janak * 0.125 * gaji_pokok

                 T_menikah := 0.1 * gaji_pokok

ENDIF

ENDIF

 

Gaji:=gaji_pokok + bonus +T_menikah + T_anak

Write(nama,nip,gaji_pokok,bonus,t_menikah,t_anak,gaji)

Algoritma tersebut dapat dikodekan dalam bahasa pascal sebagai berikut ini :

uses wincrt;

 

var

   nama, nip                     : string;

   masa_kerja, gapok,tmk, bonus  : real;

   t_menikah,t_anak              : real;

   gol,status,janak              : integer;

 

begin

     clrscr;

     write('Masukkan nama Karyawan : ');

     readln(nama);

     write('MAsukkan NIP           : ');

     readln(nip);

     write('Masukkan Golongan 1/2/3: ');

     readln(gol);

     write('Masukkan tahun masuk kerja : ');

     readln(tmk);

     write('MAsukkan status 1/2/3 : ');

     readln(status);

     write('Masukkan jumlah anak : ');

     readln(janak);

 

     if ( gol =1 ) then

        gapok := 1000000

     else

         if (gol=2) then

            gapok := 750000

         else

             gapok := 500000;

 

     masa_kerja := 2005 - tmk;

 

     if (masa_kerja >= 5 ) then

        bonus := 150000

     else

         bonus := 0;

 

     if (status = 3) then

        begin

             t_menikah  := 0;

             t_anak     :=0;

        end

     else

         if (janak > 3 ) then

            begin

                 t_menikah := 0.1 * gapok;

                 t_anak    := 3 * gapok * 0.125;

            end

         else

             begin

                 t_menikah := 0.1 * gapok;

                 t_anak    := janak * gapok * 0.125;

             end;

 

       gapok := gapok + bonus + t_menikah + t_anak;

 

     writeln('Gaji Total : ',gapok:8:0);

     readln;

end.

Sedangkan hasil eksekusinya dapat dilihat seperti gambar berikut ini :

Pada kasus di atas, program dapat disederhanakan, khususnya dalam inputan jumlah anak. Idealnya jika statusnya belum menikah maka jumlah anak tidak perlu diinputkan dan secara otomatis jumlah anak terisi 0.

Algoritmanya menjadi sebagai berikut ini:

Read(nama,nip,tahun_masuk_kerja,golongan)

Read(status)

If status = 3 then

     Write(janak =0)

                       Else

                             Read(janak)

                       endif

If golongan = 1 then

     Gaji_pokok := 1000000

Else

     If golongan = 2 then

                 Gaji_pokok := 750000

     Else

                 Gaji_pokok := 500000

     Endif

Endif

Masa_kerja = 2005 – tahun_masuk_kerja

If masa_kerja >= 5 then

     Bonus := 150000

Else

     Bonus := 0

Endif

If status 3 then

     T_menikah := 0

     T_anak := 0

Else

     If janak > 3 then

                 T_anak := 0.125 * 3 * gaji_pokok

                 T_menikah := 0.1 * gaji_pokok

     Else

                 T_anak := janak * 0.125 * gaji_pokok

                 T_menikah := 0.1 * gaji_pokok

ENDIF

ENDIF

 

Gaji:=gaji_pokok + bonus +T_menikah + T_anak

Write(nama,nip,gaji_pokok,bonus,t_menikah,t_anak,gaji)

Sedangkan pengkodean dalam bahasa pascal menjadi seperti berikut ini :

uses wincrt;

 

var

   nama, nip                     : string;

   masa_kerja, gapok,tmk, bonus  : real;

   t_menikah,t_anak              : real;

   gol,status,janak              : integer;

 

begin

     clrscr;

     write('Masukkan nama Karyawan : ');

     readln(nama);

     write('MAsukkan NIP           : ');

     readln(nip);

     write('Masukkan Golongan 1/2/3: ');

     readln(gol);

     write('Masukkan tahun masuk kerja : ');

     readln(tmk);

     write('MAsukkan status 1/2/3 : ');

     readln(status);

     if (status=3) then

         writeln('Jumlah anak = 0')

     else

         begin

              write('Masukkan jumlah anak : ');

              readln(janak);

         end;

 

 

     if ( gol =1 ) then

        gapok := 1000000

     else

         if (gol=2) then

            gapok := 750000

         else

             gapok := 500000;

 

     masa_kerja := 2005 - tmk;

 

     if (masa_kerja >= 5 ) then

        bonus := 150000

     else

         bonus := 0;

 

     if (status = 3) then

        begin

             t_menikah  := 0;

             t_anak     :=0;

        end

     else

         if (janak > 3 ) then

            begin

                 t_menikah := 0.1 * gapok;

                 t_anak    := 3 * gapok * 0.125;

            end

         else

             begin

                 t_menikah := 0.1 * gapok;

                 t_anak    := janak * gapok * 0.125;

             end;

       

     gapok := gapok + bonus + t_menikah + t_anak;

 

     writeln('Gaji Total : ',gapok:8:0);

     readln;

end.

Hasil eksekusinya sebagai berikut ini :


Bentuk Case-of

Bentuk lain dari suatu model seleksi adalah bentuk case-of, di mana pada bentuk ini tidak dilakukan pengujian true atau false, tetapi suatu proses sudah dikelompokkan berdasarkan pilihan yang sudah ditetapkan.

Syntax :

Case pilihan of

     1:   statemen 1

     2 : statemen 2

     3 : statemen 3

 

dan seterusnya.

ENDCASE

KASUS:

Sebuah perusahaan akan menghitung gaji karyawan dengan ketentuan sebagai berikut:

a.     Gaji pokok berdasarkan golongan

GOLONGAN

GAJI POKOK

1

1000000

2

750000

3

500000

 

b.     Status 1 artinya menikah, 2 artinya janda atau duda dan 3  belum menikah.

c.     Bonus diberikan pada karyawan yang masa kerjanya minimal 5 tahun sebesar 150000

d.    Tunjangan menikah diberikan pada karyawan yang menikah sebesar 10 % dari gaji Pokok bagi karyawan yang statusnya menikah

e.     Tunjangan anak diberikan pada karyawan yang statusnya menikah dan maksimal jumlah anak 3 sebesar 12.5 % dari gaji pokok per anak

f.     Gaji = gaji pokok + bonus + tunjangan menikah + tunjangan anak

Solusi :

Read(nama,nip,status,janak,tahun_masuk_kerja,golongan)

CASE  golongan OF

     1 : gaji_pokok := 1000000

     2 : gaji_pokok := 750000

     3 : gaji_pokok := 500000

endcase

Masa_kerja = 2005 – tahun_masuk_kerja

If masa_kerja >= 5 then

     Bonus := 150000

Else

     Bonus := 0

Endif

If status 3 then

     T_menikah := 0

     T_anak := 0

Else

     If janak > 3 then

                 T_anak := 0.125 * 3 * gaji_pokok

     Else

                 T_anak := janak * 0.125 * gaji_pokok

ENDIF

ENDIF

 

Gaji:=gaji_pokok + bonus +T_menikah + T_anak

Write(nama,nip,gaji_pokok,bonus,t_menikah,t_anak,gaji)

Pengkodean algoritma tersebut dalam pascal menjadi :

uses wincrt;

var

   nama, nip                     : string;

   masa_kerja, gapok,tmk, bonus  : real;

   t_menikah,t_anak              : real;

   gol,status,janak              : integer;

 

begin

     clrscr;

     write('Masukkan nama Karyawan : ');

     readln(nama);

     write('MAsukkan NIP           : ');

     readln(nip);

     write('Masukkan Golongan 1/2/3: ');

     readln(gol);

     write('Masukkan tahun masuk kerja : ');

     readln(tmk);

     write('MAsukkan status 1/2/3 : ');

     readln(status);

     write('Masukkan jumlah anak : ');

     readln(janak);

       

 

     case gol of

          1 : gapok := 1000000;

          2 : gapok := 750000;

          3 : gapok := 500000;

     end;

 

     masa_kerja := 2005 - tmk;

 

     if (masa_kerja >= 5 ) then

        bonus := 150000

     else

         bonus := 0;

 

     if (status = 3) then

        begin

             t_menikah  := 0;

             t_anak     :=0;

        end

     else

         if (janak > 3 ) then

            begin

                 t_menikah := 0.1 * gapok;

                 t_anak    := 3 * gapok * 0.125;

            end

         else

             begin

                 t_menikah := 0.1 * gapok;

                 t_anak    := janak * gapok * 0.125;

             end;

 

 

     clrscr;

     writeln('Nama Karyawan     : ',nama);

     writeln('N I P             : ',nip);

     writeln('Gaji Pokok        : ',gapok:7:0);

     writeln('Bonus             : ',bonus:5:0);

     writeln('Tunjangan Menikah : ',t_menikah:7:0);

     writeln('Tunjangan Anak    : ',t_anak:7:0);

     gapok := gapok + bonus + t_menikah + t_anak;

     writeln('Gaji Total : ',gapok:8:0);

     readln;

end.

Hasil eksekusi terlihat seperti berikut ini:

Algoritma tersebut dimodifikasi menjadi bentuk seperti berikut ini :

Read(nama,nip,tahun_masuk_kerja,golongan)

Read(status)

If status = 3 then

     Janak := 0

Else

     Read(janak)

endif

CASE  golongan OF

     1 : gaji_pokok := 1000000

     2 : gaji_pokok := 750000

     3 : gaji_pokok := 500000

endcase

Masa_kerja = 2005 – tahun_masuk_kerja

If masa_kerja >= 5 then

     Bonus := 150000

Else

     Bonus := 0

Endif

If status 3 then

     T_menikah := 0

     T_anak := 0

Else

     If janak > 3 then

                 T_anak := 0.125 * 3 * gaji_pokok

     Else

                 T_anak := janak * 0.125 * gaji_pokok

ENDIF

ENDIF

 

Gaji:=gaji_pokok + bonus +T_menikah + T_anak

Write(nama,nip,gaji_pokok,bonus,t_menikah,t_anak,gaji)

Kemudian dikodekan dalam bahasa pascal menjadi:

uses wincrt;

 

var

   nama, nip                     : string;

   masa_kerja, gapok,tmk, bonus  : real;

   t_menikah,t_anak              : real;

   gol,status,janak              : integer;

 

begin

     clrscr;

     write('Masukkan nama Karyawan : ');

     readln(nama);

     write('MAsukkan NIP           : ');

     readln(nip);

     write('Masukkan Golongan 1/2/3: ');

     readln(gol);

     write('Masukkan tahun masuk kerja : ');

     readln(tmk);

     write('MAsukkan status 1/2/3 : ');

     readln(status);

     if (status=3) then

         writeln('Jumlah anak = 0')

     else

         begin

              write('Masukkan jumlah anak : ');

              readln(janak);

         end;

 

     case gol of

          1 : gapok := 1000000;

          2 : gapok := 750000;

          3 : gapok := 500000;

     end;

 

     masa_kerja := 2005 - tmk;

 

     if (masa_kerja >= 5 ) then

        bonus := 150000

     else

         bonus := 0;

 

     if (status = 3) then

        begin

             t_menikah  := 0;

             t_anak     :=0;

        end

     else

         if (janak > 3 ) then

            begin

                 t_menikah := 0.1 * gapok;

                 t_anak    := 3 * gapok * 0.125;

            end

         else

             begin

                 t_menikah := 0.1 * gapok;

                 t_anak    := janak * gapok * 0.125;

             end;

     

     clrscr;

     writeln('Nama Karyawan     : ',nama);

     writeln('N I P             : ',nip);

     writeln('Gaji Pokok        : ',gapok:7:0);

     writeln('Bonus             : ',bonus:5:0);

     writeln('Tunjangan Menikah : ',t_menikah:7:0);

     writeln('Tunjangan Anak    : ',t_anak:7:0);

     gapok := gapok + bonus + t_menikah + t_anak;

     writeln('Gaji Total : ',gapok:8:0);

     readln;

end.

Hasil eksekusi Program sebagai berikut ini:


















Contact Me

Adress/Street

Adipasir Rakit Banjarnegara Jawa Tengah Indonesia

Phone number

+(62) 8966 9374 430

Website

www.akhmaddulikhsan29.blogspot.com