• Tidak ada hasil yang ditemukan

Implementasi Algoritma C4.5 Untuk Perekrutan Karyawan Berbasis Android (Studi Kasus : Blackberry Service Center Medan)

N/A
N/A
Protected

Academic year: 2017

Membagikan "Implementasi Algoritma C4.5 Untuk Perekrutan Karyawan Berbasis Android (Studi Kasus : Blackberry Service Center Medan)"

Copied!
14
0
0

Teks penuh

(1)

LAMPIRAN A : LISTING PROGRAM

// Source Code MainActivity.java

package com.kurniawan.apptes;

import android.content.Intent;

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

import android.view.View;

import android.widget.Button;

public class MainActivity extends AppCompatActivity { Button data,pengujian,help,about;

@Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

data = (Button) findViewById(R.id.bdata); pengujian = (Button) findViewById(R.id.buji); help = (Button) findViewById(R.id.bhelp); about = (Button) findViewById(R.id.babout);

data.setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View view) {

Intent intent = new Intent(MainActivity.this, Data.class); startActivity(intent);

} });

pengujian.setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View view) {

Intent intent = new Intent(MainActivity.this, Pengujian.class);

startActivity(intent); }

});

help.setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View view) {

Intent intent = new Intent(MainActivity.this, Help.class); startActivity(intent);

} });

about.setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View view) {

Intent intent = new Intent(MainActivity.this, About.class); startActivity(intent);

} }); } }

(2)

package com.kurniawan.apptes;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.widget.AdapterView;

import android.widget.ArrayAdapter;

import android.widget.ListView;

import java.util.List;

public class Data extends Activity{ private ListView listView;

@Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.data);

this.listView = (ListView) findViewById(R.id.listView);

DatabaseHandler dbHandler = DatabaseHandler.getInstance(this); dbHandler.open();

List<String> nomor = dbHandler.getNomor();

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, nomor);

this.listView.setAdapter(adapter);

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override

public void onItemClick(AdapterView<?> adapterView, View view,

int i, long l) {

Intent intent = new Intent(Data.this, Hasil.class); String nama = listView.getItemAtPosition(i).toString(); intent.putExtra("nama", nama);

startActivity(intent); }

}); } }

// Source Code Pengujian.java

package com.kurniawan.apptes;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

import android.util.Log;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.TextView;

import com.kurniawan.apptes.c45Algorithm.Atribut;

import com.kurniawan.apptes.c45Algorithm.Nilai;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

(3)

private static String[] listField = {"Pendidikan_Terakhir",

"Pengalaman_Bekerja", "Psikotes", "Intellegensi"};

private static Integer[] constAtribut = {0, 0, 0, 0, 1, 1,

2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3

};

private static String[] constNilai = {"SMA", "D1", "D3", "S1", "Ya", "Tidak",

"0", "1", "2", "3", "4", "5", "6", "7", "0", "1", "2", "3"

};

Nilai keterangan;

List<Atribut> listAtribut; List<String> field;

List<String> value;

Map<String, String> inputanUser;

private Button btnCek, btnSave, btnClear;

private EditText etNama, etAlamat, etTelp, etPendidikan, etPengalaman,

etIntellegensi, etPsikotes; private TextView tvHasil;

SQLiteDatabase database;

@Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.pengujian);

btnCek = (Button) findViewById(R.id.btn_cek); btnSave = (Button) findViewById(R.id.btn_save); btnClear = (Button) findViewById(R.id.btn_clr); etNama = (EditText) findViewById(R.id.et_nama); etAlamat = (EditText) findViewById(R.id.et_alamat); etTelp = (EditText) findViewById(R.id.et_telp);

etPendidikan = (EditText) findViewById(R.id.et_pendidikan); etPengalaman = (EditText) findViewById(R.id.et_pengalaman); etIntellegensi = (EditText) findViewById(R.id.et_intellegensi); etPsikotes = (EditText) findViewById(R.id.et_psikotes);

tvHasil = (TextView) findViewById(R.id.tv_hasilProses);

dbHelper = new DatabaseOpenHelper(this);

DatabaseHandler dbHandler = DatabaseHandler.getInstance(this); dbHandler.open();

database = dbHandler.database;

btnCek.setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View v) { try {

clear();

inputanUser.put("Pendidikan_Terakhir",

etPendidikan.getText().toString());

inputanUser.put("Pengalaman_Bekerja",

etPengalaman.getText().toString());

inputanUser.put("Psikotes",

etPsikotes.getText().toString());

inputanUser.put("Intellegensi",

etIntellegensi.getText().toString());

(4)

Atribut n = new Atribut(field); listAtribut.add(n);

}

for(int i = 0; i < constNilai.length; i++){ try {

Nilai n = new Nilai(listField[constAtribut[i]], constNilai[i]);

n.AmbilDariDataSet(database, field, value); n.HitungEntropy();

listAtribut.get(constAtribut[i]).nilai.add(n); } catch (Exception e){

} }

c45Algorithm();

btnSave.setVisibility(View.VISIBLE); btnClear.setVisibility(View.VISIBLE); } catch (Exception e){

Log.d("Exception", e.toString()); }

} });

btnSave.setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View view) {

final SQLiteDatabase db = dbHelper.getWritableDatabase(); db.execSQL("INSERT INTO DataPelamar (No, Nama, Alamat, Telp, Pendidikan_Terakhir, Pengalaman_Bekerja, Psikotes, Intellegensi, Keterangan) VALUES ('"+ nomorId() +"', '" +

etNama.getText().toString()+"', '" + etAlamat.getText().toString()+"', '"+ etTelp.getText().toString()+"', '"+ etPendidikan.getText().toString()+"', '"+ etPengalaman.getText().toString()+"', '"+ etPsikotes.getText().toString()+"', '"+ etIntellegensi.getText().toString()+"', '" + tvHasil.getText().toString()+"')");

} }); }

int nomorId() { int nomor = 0;

SQLiteDatabase db = dbHelper.getReadableDatabase();

Cursor cursor = db.rawQuery("SELECT MAX(No) FROM DataPelamar", null); if (cursor.moveToFirst()) {

nomor = cursor.getInt(0); }

return nomor + 1; }

void clear(){

inputanUser = new HashMap<String, String>(); field = new ArrayList<String>();

value = new ArrayList<String>();

listAtribut = new ArrayList<Atribut>(); }

void c45Algorithm(){

keterangan = new Nilai("*", "*");

keterangan.AmbilDariDataSet(database, field, value); keterangan.HitungEntropy();

(5)

if(keterangan.getSumYa() > 0){ tvHasil.setText("LULUS"); return;

}

else if(keterangan.getSumTidak() > 0){ tvHasil.setText("TIDAK LULUS"); return;

} }

Atribut bestGain = new Atribut();

Double maxGain = new Double(Double.MIN_VALUE); for(Atribut n : listAtribut){

n.HitungGain(keterangan.getEntropy(), keterangan.getSumNilai()); if(maxGain < n.gain || listAtribut.indexOf(n) == 0){

maxGain = n.gain; bestGain = n; }

Log.d("TRACE", n.nama + " GAIN : " + n.gain); }

String userValue = inputanUser.get(bestGain.nama);

Nilai userNilai = new Nilai(); for(Nilai n : bestGain.nilai){

if(n.getNama().equals(userValue)){ userNilai = n;

} }

if(userNilai.getEntropy() != 0){ field.add(bestGain.nama); value.add(userValue); int i = 0;

for(int index = 0; index < listAtribut.size(); index++){ if(listAtribut.get(index).nama.equals(bestGain.nama)){ i = index;

} }

listAtribut.remove(i); c45Algorithm();

} else {

if(userNilai.getSumYa() > 0){

tvHasil.setText("DATA TERSEBUT LULUS"); }

else if(userNilai.getSumTidak() > 0){

tvHasil.setText("DATA TERSEBUT TIDAK LULUS"); }

} } }

//Source Code Edit.java

package com.kurniawan.apptes;

import android.app.Activity;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

(6)

import com.kurniawan.apptes.c45Algorithm.Atribut;

import com.kurniawan.apptes.c45Algorithm.Nilai;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

public class Edit extends Activity{

private static String[] listField = {"Pendidikan_Terakhir",

"Pengalaman_Bekerja", "Psikotes", "Intellegensi"};

private static Integer[] constAtribut = {0, 0, 0, 0, 1, 1,

2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3

};

private static String[] constNilai = {"SMA", "D1", "D3", "S1", "Ya", "Tidak",

"0", "1", "2", "3", "4", "5", "6", "7", "0", "1", "2", "3"

};

Nilai keterangan;

List<Atribut> listAtribut; List<String> field;

List<String> value;

Map<String, String> inputanUser;

private Button btnCek, btnSave, btnClear; SQLiteDatabase database;

DatabaseOpenHelper dbHelper; Cursor cursor;

EditText nama, alamat, telp, pend, pengalaman, psikotes, intellegensi; TextView ket;

@Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.edit);

btnCek = (Button) findViewById(R.id.editCekBtn); btnSave = (Button) findViewById(R.id.editSaveBtn); btnClear = (Button) findViewById(R.id.editClrBtn); nama = (EditText) findViewById(R.id.editNamaTxt); alamat = (EditText) findViewById(R.id.editAlamatTxt); telp = (EditText) findViewById(R.id.editTelpTxt); pend = (EditText) findViewById(R.id.editPendTxt);

pengalaman = (EditText) findViewById(R.id.editPengalamanTxt); intellegensi = (EditText) findViewById(R.id.editIntTxt); psikotes = (EditText) findViewById(R.id.editPsikotesTxt); ket = (TextView) findViewById(R.id.editHasilTxt);

final String namaIntent = getIntent().getStringExtra("primKey");

dbHelper = new DatabaseOpenHelper(this);

final SQLiteDatabase db = dbHelper.getReadableDatabase(); cursor = db.rawQuery("SELECT * FROM DataPelamar WHERE No = '" + namaIntent + "'", null);

cursor.moveToFirst();

if (cursor.getCount() > 0) { cursor.moveToPosition(0);

(7)

pengalaman.setText(cursor.getString(5).toString()); psikotes.setText(cursor.getString(6).toString()); intellegensi.setText(cursor.getString(7).toString()); ket.setText(cursor.getString(8).toString());

}

btnCek.setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View v) { try {

clear();

inputanUser.put("Pendidikan_Terakhir",

pend.getText().toString());

inputanUser.put("Pengalaman_Bekerja",

pengalaman.getText().toString());

inputanUser.put("Psikotes",

psikotes.getText().toString());

inputanUser.put("Intellegensi",

intellegensi.getText().toString());

for(String field : listField){ Atribut n = new Atribut(field); listAtribut.add(n);

}

for(int i = 0; i < constNilai.length; i++){ try {

Nilai n = new Nilai(listField[constAtribut[i]], constNilai[i]);

n.AmbilDariDataSet(database, field, value); n.HitungEntropy();

listAtribut.get(constAtribut[i]).nilai.add(n); } catch (Exception e){

} }

c45Algorithm();

btnSave.setVisibility(View.VISIBLE); btnClear.setVisibility(View.VISIBLE); ket.setVisibility(View.VISIBLE); } catch (Exception e){

Log.d("Exception", e.toString()); }

} });

btnSave.setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View view) {

final SQLiteDatabase db = dbHelper.getWritableDatabase(); db.execSQL("UPDATE DataPelamar SET Nama = '"+

nama.getText().toString() +"'," +

" Alamat = '"+ alamat.getText().toString() +"', " + " Telp = '"+ telp.getText().toString() +"'," +

" Pendidikan_Terakhir = '"+ pend.getText().toString() +"'," +

" Pengalaman_Bekerja = '"+

pengalaman.getText().toString() +"'," +

" Psikotes = '"+ psikotes.getText().toString() +"',"

+

" Intellegensi = '"+

intellegensi.getText().toString() +"'," +

(8)

} }); }

void clear(){

inputanUser = new HashMap<String, String>(); field = new ArrayList<String>();

value = new ArrayList<String>();

listAtribut = new ArrayList<Atribut>(); }

void c45Algorithm(){

keterangan = new Nilai("*", "*");

keterangan.AmbilDariDataSet(database, field, value); keterangan.HitungEntropy();

if(listAtribut.size() == 0){ if(keterangan.getSumYa() > 0){ ket.setText("LULUS"); return;

}

else if(keterangan.getSumTidak() > 0){ ket.setText("TIDAK LULUS");

return; }

}

Atribut bestGain = new Atribut();

Double maxGain = new Double(Double.MIN_VALUE); for(Atribut n : listAtribut){

n.HitungGain(keterangan.getEntropy(), keterangan.getSumNilai()); if(maxGain < n.gain || listAtribut.indexOf(n) == 0){

maxGain = n.gain; bestGain = n; }

Log.d("TRACE", n.nama + " GAIN : " + n.gain); }

String userValue = inputanUser.get(bestGain.nama);

Nilai userNilai = new Nilai(); for(Nilai n : bestGain.nilai){

if(n.getNama().equals(userValue)){ userNilai = n;

} }

if(userNilai.getEntropy() != 0){ field.add(bestGain.nama); value.add(userValue);

int i = 0;

for(int index = 0; index < listAtribut.size(); index++){ if(listAtribut.get(index).nama.equals(bestGain.nama)){ i = index;

} }

listAtribut.remove(i);

c45Algorithm();

} else {

if(userNilai.getSumYa() > 0){

ket.setText("DATA TERSEBUT LULUS"); }

else if(userNilai.getSumTidak() > 0){

(9)

} } }

//Source Code Hasil.java

package com.kurniawan.apptes;

import android.app.Activity;

import android.app.AlertDialog;

import android.content.DialogInterface;

import android.content.Intent;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.TextView;

/**

* Created by Kurniawan on 12/30/2016. */

public class Hasil extends Activity{ DatabaseOpenHelper dbHelper; Cursor cursor;

Button edit,hapus;

TextView nomor, nama, alamat, telp, pend, pengalaman, psikotes,

intellegensi, ket; @Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.hasil);

nomor = (TextView) findViewById(R.id.tvNo); nama = (TextView) findViewById(R.id.editNamaTxt); pend = (TextView) findViewById(R.id.editPendTxt); alamat = (TextView) findViewById(R.id.editAlamatTxt); telp = (TextView) findViewById(R.id.noTelpTxt);

pengalaman = (TextView) findViewById(R.id.editPengalamanTxt); psikotes = (TextView) findViewById(R.id.editPsikotesTxt); intellegensi = (TextView) findViewById(R.id.editIntTxt); ket = (TextView) findViewById(R.id.hasilTxt);

final String namaIntent = getIntent().getStringExtra("nama"); nama.setText(namaIntent);

dbHelper = new DatabaseOpenHelper(this);

final SQLiteDatabase db = dbHelper.getReadableDatabase();

cursor = db.rawQuery("SELECT * FROM DataPelamar WHERE Nama = '" + namaIntent + "'", null);

cursor.moveToFirst();

if (cursor.getCount() > 0) { cursor.moveToPosition(0);

nomor.setText(cursor.getString(0).toString()); alamat.setText(cursor.getString(2).toString()); telp.setText(cursor.getString(3).toString()); pend.setText(cursor.getString(4).toString()); pengalaman.setText(cursor.getString(5).toString()); psikotes.setText(cursor.getString(6).toString()); intellegensi.setText(cursor.getString(7).toString()); ket.setText(cursor.getString(8).toString());

}

hapus = (Button) findViewById(R.id.deleteBtn);

(10)

@Override

public void onClick(View view) {

new AlertDialog.Builder(Hasil.this).setMessage("Hapus data?").setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override

public void onClick(DialogInterface dialog, int which) { SQLiteDatabase db = dbHelper.getWritableDatabase(); db.execSQL("DELETE FROM DataPelamar WHERE No = '"+

nomor.getText().toString() +"'");

Intent intent = new Intent(Hasil.this, Data.class); startActivity(intent);

} }).show(); }

});

edit = (Button) findViewById(R.id.editBtn);

edit.setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View view) {

Intent intent = new Intent(Hasil.this, Edit.class); String primKey = nomor.getText().toString();

intent.putExtra("primKey", primKey); startActivity(intent);

} }); } }

//Source Code Nilai.java

package com.kurniawan.apptes.c45Algorithm;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import java.util.ArrayList;

import java.util.List;

public class Nilai {

public static final String LULUS = "L";

public static final String TIDAK_LULUS = "TL";

public static final String NAMA_TABEL = "DataPelamar";

String nama, namaAtribut;

Integer sumNilai, sumYa, sumTidak; Double Entropy;

public Nilai(){ }

public Nilai(String namaAtribut, String nama){ this.nama = nama;

this.namaAtribut = namaAtribut; }

public Double getEntropy(){ return this.Entropy; }

public Integer getSumNilai(){ return this.sumNilai; }

(11)

}

public Integer getSumTidak(){ return this.sumTidak; }

public String getNama(){ return this.nama; }

public void HitungEntropy() {

if (sumYa == 0 || sumTidak == 0) { this.Entropy = 0.0;

} else {

this.Entropy = (-(sumYa / sumNilai.doubleValue()) * (Math.log(sumYa / sumNilai.doubleValue()) / Math.log(2))) + (-(sumTidak / sumNilai.doubleValue()) * (Math.log(sumTidak / sumNilai.doubleValue()) / Math.log(2))); }

}

public void AmbilDariDataSet(SQLiteDatabase database, List<String> field, List<String> value){

String query = "SELECT " + namaAtribut + " FROM " + NAMA_TABEL + " WHERE ";

List<String> _value = new ArrayList<String>(); _value.addAll(value);

List<String> _field = new ArrayList<String>(); _field.addAll(field);

for(int i = 0; i < _field.size(); i++){ query += _field.get(i) + " = ? AND "; }

if(!namaAtribut.equals("*")) {

query += " " + namaAtribut + " = ? AND "; _value.add(nama);

}

query += " Keterangan = ? "; List<String> valueYes, valueNo;

valueYes = new ArrayList<String>(); valueYes.addAll(_value);

valueYes.add(LULUS);

valueNo = new ArrayList<String>(); valueNo.addAll(_value);

valueNo.add(TIDAK_LULUS);

Cursor cursor = database.rawQuery(query, valueYes.toArray(new

String[valueYes.size()]));

sumYa = cursor.getCount();

cursor = database.rawQuery(query, valueNo.toArray(new

String[valueNo.size()]));

sumTidak = cursor.getCount();

this.sumNilai = sumYa + sumTidak; }

}

(12)

//Source Code Atribut.java

package com.kurniawan.apptes.c45Algorithm;

import java.util.ArrayList;

import java.util.List;

public class Atribut { public String nama; public List<Nilai> nilai; public Double gain;

public Atribut(){ }

public Atribut(String nama){ this.nama = nama;

this.nilai = new ArrayList<Nilai>(); }

public void HitungGain(Double totalEntropy, Integer S){ this.gain = totalEntropy;

for(Nilai n : nilai){

this.gain -= ((n.sumNilai / S.doubleValue()) * (Math.log(n.sumNilai / S.doubleValue()) / Math.log(2))); }

} }

//Source Code DatabaseOpenHelper.java

package com.kurniawan.apptes;

import android.content.Context;

import com.readystatesoftware.sqliteasset.SQLiteAssetHelper;

public class DatabaseOpenHelper extends SQLiteAssetHelper { private static final int DATABASE_VERSION = 1;

private static final String DATABASE_NAME = "DataPelamar (2)";

public DatabaseOpenHelper(Context context) {

super(context, DATABASE_NAME, null, DATABASE_VERSION); }

}

//Source Code Hasil.java

package com.kurniawan.apptes;

import android.content.Context;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

import java.util.ArrayList;

import java.util.List;

public class DatabaseHandler {

private SQLiteOpenHelper openHelper; public SQLiteDatabase database;

private static DatabaseHandler instance;

(13)

this.openHelper = new DatabaseOpenHelper(context); }

public static DatabaseHandler getInstance(Context context){ if (instance == null){

instance = new DatabaseHandler(context); }

return instance; }

public void open() {

this.database = openHelper.getWritableDatabase(); }

}

//Source Code Help.java

package com.kurniawan.apptes;

import android.app.Activity;

import android.os.Bundle;

public class Help extends Activity{ @Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.help); }

}

// Source Code About.java

package com.kurniawan.apptes;

import android.app.Activity;

import android.os.Bundle;

public class About extends Activity { @Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.about); }

(14)

CURRICULUM VITAE

Nama

:

Kurniawan Wardani AP. Hutagaol

NIM

:

101401050

Alamat Sekarang

:

Jln. Pasar III No. 103 Kel. Tegal Rejo, Kec. Medan

Perjuangan

Alamat Orangtua

:

Jln. Pasar III No. 103 Kel. Tegal Rejo, Kec. Medan

Perjuangan

Telp/Hp

:

082276336927

Email

:

hutagaol.kurniawan@gmail.com

Riwayat Pendidikan

2010

2017

:

S-1 Ilmu Komputer Universitas Sumatera Utara, Medan

2007

2010

:

SMA Negeri 3 Medan

2004

2007

:

SMP Swasta Budi Murni 1 Medan

1998

2004

:

SD Swasta Budi Murni 6 Medan

Keahlian

Bahasa Pemrograman :

Java.

Multimedia

:

Adobe Illustrator, Adobe Photoshop.

Referensi

Dokumen terkait

Saran dalam penelitian ini adalah bagi para orang tua berserta pendidik di sekolah tetap memberikan senam irama untuk tetap mengoptimalkan kemampuan motorik

Hambatan yang dihadapi dalam pelaksanaan eksekusi barang bukti tindak pidana narkotika adalah dalam hal putusan pidana, dimana putusan perdata yang diajukan pihak

Peneliti diharapkan memiliki peran yang aktif dalam menggali sedalam-dalamnya berkenaan dengan kegiatan tersebut kepada informan sehingga didapatkan lah jawaban

10 Tabel 3 menunjukkan bahwa laki-laki mempunyai rata-rata status kesehatan gigi (DMF-T/def-t) lebih tinggi (lebih buruk) daripada perempuan, artinya anak perempuan

Pada makalah ini, akan disimulasikan penggunaan algoritma Dijkstra, salah satu algoritma untuk mencari path terpendek dalam satu graf, dalam menghitung waktu yang

sektor Publik yang terkait termasuk Kepolisian Selandia Baru, Korporasi Kompensasi Kecelakaan, Kementerian Kehakiman, Imigrasi Selandia Baru dan organisasi non- pemerintah

Menurut PIC ESAP, seiring berjalannya waktu pada program ESAP, timbul berbagai permasalahan seperti peningkatan kemampuan dari para peserta berkemampuan lebih tinggi dan

Peneliti pada akhirnya mengasumsikan kemungkinan besar untuk penderita ISPA pada balita dikarenakan memiliki status gizi kurang sehingga akan memperlemah daya tahan