UJI TULIS
Menjelaskan konsep data dan struktur data
data merupakan suatu objek, kejadian, atau fakta yang terdokumentasikan dengan memiliki
kodifikasi terstruktur untuk suatu atau beberapa entitas.
Struktur Data merupakan suatu cara untuk menyimpan data di suatu program sehingga
memungkinkan seorang programmer dapat menggunakan data tersebut secara efesien.
Tipe data numerik antara lain : integer, long, single, double, byte. Integer dan long digunakan
untuk menyimpan bilangan bulat. Sedangkan single dan double digunakan untuk menyimpan
Tipe data teks antara lain : Nama, alamat dan lain-lain adalah contoh data teks yang sering kita
gunakan dalam program komputer. Kumpulan huruf (boleh kosong) yang dianggap sebagai satu
Tipe ini digunakan untuk menyimpan suatu informasi yang hanya memiliki dua kemungkinan
Variabel Tipe Object dapat dipakai untuk menggantikan objek- objek control.
Tipe ini digunakan untuk menyimpan semua jenis tipe data lain. Namun kerugiannya adalah tipe
Struktur Kontrol
Dengan menggunakan statemen kondisional dan statemen looping (juga disebut struktur
kontrol), anda dapat menulis kode Visual Basic yang membuat pilihan dan aksi pengulangan.
Struktur kontrol lain yang berguna, statemen With, menjadikan anda dapat me-run serangkaian
atau lebih statemen berdasarkan hasil pemeriksaaan kondisi. Biasanya, kondisi berupa ekspresi
yang menggunakan operator pembanding untuk membandingkan satu nilai atau variabel dengan
3. Array : tipe data berindeks yang terdiri dari satu atau lebih elemen / komponen yang
memiliki tipe data yang sama.Posisi masing – masing komponen dalam larik dinyatakan
sebagai nomor index.Array dapat didefinisikan sebagai suatu himpunan hingga elemen yang
terurut dan homogen.Terurut dapat diartikan bahwa elemen tersebut diidentifikasikan sebagai
elemen pertama, elemen kedua dan seterusnya sampai elemen ke-n.
4. Method : dapat memiliki banyak argumen dengan tipe data yang berbeda. Method juga dapat
memiliki nama yang sama asal parameter / tipe datanya berbeda (Method Overloading).
Untuk mencegah kesalahan ini sebenarnya cukup mudah yaitu lakukan antisipasi jika anda
membuat program yang mengandung perhitungan- perhitungan matematis yang bisa
menghasilkan nilai yang tidak mungkin.
3. Kesalahan pembulatan (Rounding Errors).
Kesalahan akibat ketepatan yang terbatas dari hasil perhitungan yang dilakukan oleh
komputer.
Tidak semua bilangan real bisa dikonversikan menjadi kode biner secara tepat, terutama
bilangan pecahan.
Ketelitian komputer dalam memberikan nilai dari suatu angka dalam kode biner
tergantung dari besarnya memori yang dialokasikan untuk menyimpan angka tersebut.
Rounding Errors ==> Kesalahan pembulatan.
Cara mengatasi kesalahan Rounding Errors :
1. Penguasaan terhadap permasalahan yang dihadapi dan akan dibuat programnya, meliputi
penyusunan langkah-langkah penyelesaian masalah / algoritmanya.
2. Cari contoh kasus dari permasalahan yang anda hadapi dan selesaikan secara manual.
Kemudian periksa dan koreksi jika ada kesalahan.
3. Coba jalankan program yang sudah di ketik berdasarkan algoritma yang sudah dibuat
berdasar contoh kasus yang telah dicoba sebelumnya
4. Cek antara hasil yang didapat dari program dengan hasil penyelesaian secara manual dari
kasus-kasus yang sudah dicoba. Jika semua hasil yang didapat antara program dan cara
manual relatif sama, maka program sudah tidak mengandung kesalahan logika.
5.
5. Syntax Error
Syntax Error terjadi merupakan jenis kesalahan yang terjadi akibat perintah atau statement yang
diketik menyalahi aturan pengkodean oleh bahasa pemrograman yang digunakan. Setiap bahasa
pemrograman memiliki aturan pengkodean tersendiri yang harus dipatuhi. Contohnya pada
bahasa pemrograman Pascal atau delphi, setiap statement diwajibkan untuk diakhiri dengan
tanda titik koma (;), jika tidak menuliskannya, maka program akan menampilkan pesan Syntax
Error saat dijalankan. Selain itu setiap bahsa pemrograman juga memiliki keyword yaitu
perintah2 baku yang sering digunakan seperti if, perulangan for atau while, penulisan fungsi
dan lambang aritmatikaseprti modulus, pangkat dan lain-lain, hal ini juga merupakan Syntax
Error.
Kesalahan penulisan parameter pada sebuah fungction/procedure juga termasuk Syntax Error,
misalnya jika function yang anda gunakan memerlukan parameter, sementara anda lupa
menuliskan parameter tersebut.
Meskipun Syntax Error merupakan jenis kesalahan yang paling sering ditemui, tapi pada
umumnya juga mudah untuk diatasi. Syntax Error mudah diperbaiki jika bahasa pemrograman
yang anda gunakan menunjukkan baris kesalahan yang tepat, dan menampilkan pesan
kesalahan yang benar. Pada beberapa bahasa pemrograman disediakan fasilitas Auto Sytax
Check, dimana muncul sebuh peringatan ketika anda mengetikkan syntax yang salah.
6. Arithmetic Error
7. Resource Errors
Untuk level error yang lebih lengkap, silakan merujuk ke dokumentasi manual PHP.
Setiap kali menulis kode program, kita harus selalu membuat pemeriksaan pada setiap
kemungkinan terjadinya error. Sehingga jika memang terjadi error pada tempat tersebut, kita bisa
memberikan aksi yang tepat.
1. Menggunakan fungsi die()
2. Memusatkan penanganan error pada satu fungsi khusus
3. Menggunakan exception
Menggunakan Fungsi die()
Misalkan kita akan membuka dan membaca suatu file dengan PHP, kita harus memeriksa
terlebih dahulu apakah file tersebut tersedia atau tidak. Jika ternyata file tidak tersedia, kita bisa
menghentikan run-time program dengan memanggil fungsi die().
$namaFile = "/web/documents/histori.txt";
if (!file_exists($namaFile)) {
die("File tidak ditemukan");
} else {
$file = fopen($namaFile, "r");
echo "File berhasil dibaca.";
}
Selain cara menggunakan if else seperti di atas, kita bisa melakukan cara yang lebih umum yaitu
dengan memusatkan error handling dalam satu fungsi saja.
Sehingga setiap kali ada error dari setiap level, fungsi tersebut akan otomatis dipanggil. Setelah
itu, kita bisa memutuskan apa yang akan kita lakukan dengan error yang terjadi tersebut.
Langkah-langkahnya adalah:
1. Membuat fungsi
Langkah yang pertama adalah membuat fungsi khusus untuk menangani error.
Sebelum itu, jangan lupa kita non aktifkan semua pesan error. Karena beberapa pengaturan
bawaan PHP di sistem operasi tertentu pesan error akan ditampilkan secara default. Sehingga
kita harus mengaturnya mandiri dengan mengubah nilai di file php.ini mau pun dengan
memanggil fungsi error_reporting().
<?php
/**
* Fungsi untuk menangai error.
*
* Fungsi ini wajib memiliki 4 paramter dan nama parameter bisa bebas.
*/
function tanganiError ($level, $message, $file, $line) {
echo "<div style='padding: 2rem; background: rgba(200, 0, 0, 0.5); color: white'>" ;
echo "<b>Terjadi Error</b>";
echo "<p>[{$level}] {$message} - {$file}:{$line}</p>";
echo "</div>";
}
Yang harus kita lakukan selanjutnya adalah mengatur fungsi tersebut sebagai error handler.
Sehingga jika terjadi error apa pun pada saat run-time, fungsi tersebut akan dieksekusi.
<?php
set_error_handler('tanganiError');
3. Testing error
Kita coba memicu sebuah error dengan memanggil variabel yang tidak pernah kita definisikan
sebelumnya.
<?php
Cara di atas memang sekilas berhasil, akan tetapi cara tersebut tidak berfungsi untuk semua jenis
error.
Kita telah berusaha memanggil suatu variabel yang belum pernah kita definisikan sebelumnya.
Akan tetapi jika kita memanggil sebuah fungsi yang tidak pernah didefinisikan, level error yang
dihasilkan adalah: E_ERROR. Dan level ini tidak didukung oleh set_error_handler. Sehingga
fungsi tanganiError() tidak pernah dipanggil.
<?php
Agar kita bisa menangani error level E_ERROR, kita punya pilihan untuk
menggunakan shutdown function.
Shutdown function adalah fungsi yang akan dipanggil sesaat ketika program PHP akan selesai.
Entah terjadi error E_ERROR atau tidak.
Berikut ini contoh untuk mendaftarkan sebuah fungsi anonim sebagai shutdown function. Fungsi
ini akan mengambil error terakhir yang terjadi pada saat run-time, lalu akan memanggil
fungsi tanganiError() jika memang ada error.
<?php
register_shutdown_function(function () {
if (error_get_last()) {
# ambil error terakhir
$error = (object) error_get_last();
tanganiError(
$error->type, $error->message, $error->file, $error->line
);
}
});
Hasilnya:
<?php
<?php
ob_start();
echo "<h1>Selamat Datang</h1>";
echo "<h2>Ini adalah halaman utama</h2>";
ob_end_flush();
Setelah itu, kita bisa memanggil fungsi ob_end_clean() untuk menghapus semua output yang
terisimpan dalam internal buffer. Dalam artian output tersebut tidak jadi ditampilkan.
<?php
register_shutdown_function(function () {
if (error_get_last()) {
# ambil error terakhir
$error = (object) error_get_last();
tanganiError(
$error->type, $error->message, $error->file, $error->line
);
}
});
Ketika program kita jalankan lagi, kita akan dapati semua output sebelum terjadi error, ia tidak
ditampilkan.
Menangani Sintaks Error
Kita sejauh ini telah berhasil menangani berbagai macam jenis error bahkan sampai fatal error
sekalipun.
Akan tetapi, kode program yang telah kita buat di atas tidak bisa menangani sintaks error.
Misalkan kita menghapus satu tanda titik koma (;), program kita akan error dan fungsi
penanganan error yang sudah kita buat tidak akan pernah dipanggil meskipun kita sudah
membuat shutdown function.
Langsung saja kita praktikkan, kita akan pecah kode program yang telah kita buat sebelumnya
menjadi 3 file sebagai berikut:
├── src/
| ├── file-yang-error.php
| ├── index.php
| └── penanganan-error.php
├── ...
Penjelasan:
1. File index.php adalah file utama, yang artinya file tersebut adalah file yang kita request
(melalui browser)
2. Semua error handling kita sendirikan di dalam file penanganan-error.php
3. File yang berisi sintaks error (atau error apa pun lainnya) kita letakkan pada file-yang-
error.php
<?php
ob_start();
require 'file-yang-error.php'; /* <-- file yang berisi error */
ob_end_flush();
Nah ketika di file-yang-error.php terdapat error secara sintaks, PHP masih tetap bisa
menjalankan file utama yaitu index.php dan shutdown function yang telah kita definisikan di
file penanganan-error.php bisa dijalankan.
<?php
Untuk kode program lengkap pada pertemuan ini bisa anda akses di sini.
Kesimpulan
Di dalam PHP terdapat berbagai jenis level error. Mulai dari yang fatal hingga menghentikan
program. Ada yang tidak sampai level tersebut sehingga program masih memungkinkan untuk
dilanjutkan.
Untuk menangani error pada PHP, terdapat berbagai macam pendekatan. Dalam pertemuan di
atas kita telah menggunakan setidaknya 2 buah pendekatan inti:
Menggunakan set_error_handler()
Dan Menggunakan register_shutdown_function()
Tidak hanya itu, kita juga telah berhasil menyembunyikan semua output yang di-echo sebelum
terjadinya error memanfaatkan fungsi ob_start() dan ob_end_clean()
HINT :
<!DOCTYPE html>
<html>
<head>
<title>Membuat Kuitansi Sederhana</title>
</head>
<body>
<?php
$no = isset($_GET['no']) ? $_GET['no'] : "";
$nama = isset($_GET['nama']) ? $_GET['nama'] : "";
$pembayaran = isset($_GET['pembayaran']) ? $_GET['pembayaran'] : "";
$kota = isset($_GET['kota']) ? $_GET['kota'] : "";
$tanggal = isset($_GET['tanggal']) ? $_GET['tanggal'] : "";
$tgl = explode("-", $tanggal);
$tglbaru = "$tgl[2]/$tgl[1]/$tgl[0]";
$nominal = isset($_GET['nominal']) ? $_GET['nominal'] : "0";
if ($nominal)
{
$uang = number_format($nominal, 0, ',','.') ."</br>";
$terbilang = ucwords(''.Terbilang($nominal).'')." Rupiah";
}
?>
<h2>Aplikasi Kuitansi Sederhana</h2>
<hr>
<?php if (empty($nominal)) { ?>
<form action="" method="get">
<table width="100%" border="0">
<tr>
<td width="100">No.</td>
<td><input type="text" name="no"></td>
</tr>
<tr>
<td width="100">Diterima dari</td>
<td><input type="text" name="nama" required></td>
</tr>
<tr>
<td width="100">Nominal Uang</td>
<td><input type="text" name="nominal" required></td>
</tr>
<tr>
<td width="100">Untuk Pembayaran</td>
<td>
<textarea name="pembayaran" cols="40" rows="3"></textarea>
</td>
</tr>
<tr>
<td width="100">Kota</td>
<td><input type="text" name="kota" required></td>
</tr>
<tr>
<td width="100">Tanggal</td>
<td><input type="date" name="tanggal" required></td>
</tr>
<tr>
<td width="100"></td>
<td><input type="submit" value="Buat Kuitansi"></td>
</tr>
</table>
</form>
<?php } ?>
<?php if (!empty($nominal)) { ?>
<table width="800" border="0" cellpadding="4" cellspacing="0" style="border: 1px
solid #000;">
<tr>
<td rowspan="6" width="120" style="border-right:1px solid #000;"> </td>
<td width="150" valign="top" > No </td>
<td valign="top" > : <?php echo $no;?> </td>
</tr>
<tr>
<td valign="top" > Telah Diterima Dari </td>
<td valign="top" > : <?php echo $nama;?> </td>
</tr>
<tr>
<td valign="top" > Uang Sejumlah </td>
<td valign="top" > : <?php echo $terbilang;?></td>
</tr>
<tr>
<td valign="top" > Untuk Pembayaran </td>
<td valign="top" > : <?php echo $pembayaran;?></td>
</tr>
<tr>
<td valign="bottom"> <h3>Rp <?php echo $uang;?> </h3> </td>
<td valign="top" align="right" height="100"> <?php echo "$kota, $tglbaru";?>
</td>
</tr>
</table>
<style>
a { text-decoration: none; color: #0903E8; font-family: verdana; }
a:hover { color: #FA3C3C; }
</style>
<a href="index.php">Kembali</a>
<?php } ?>
</body>
</html>
<?php
//thanks to miswanphp10.blogspot.co.id
function Terbilang($x)
{
$bilangan = array("", "Satu", "Dua", "Tiga", "Empat", "Lima", "Enam", "Tujuh",
"Delapan", "Sembilan", "Sepuluh", "Sebelas");
if ($x < 12)
return " " . $bilangan[$x];
elseif ($x < 20)
return Terbilang($x - 10) . "belas";
elseif ($x < 100)
return Terbilang($x / 10) . " Puluh" . Terbilang($x % 10);
elseif ($x < 200)
return " seratus" . Terbilang($x - 100);
elseif ($x < 1000)
return Terbilang($x / 100) . " Ratus" . Terbilang($x % 100);
elseif ($x < 2000)
return " seribu" . Terbilang($x - 1000);
elseif ($x < 1000000)
return Terbilang($x / 1000) . " Ribu" . Terbilang($x % 1000);
elseif ($x < 1000000000)
return Terbilang($x / 1000000) . " Juta" . Terbilang($x % 1000000);
}
?>
• Jika kita ingat alamat teman tersebut, maka tulis alamat surat pada sampul
• Jika tidak ingat, lihat buku alamat, kemudian tulis alamat surat pada sampul
2. Menentukan apakah suatu bilangan merupakan bilangan ganjil atau bilangan genap:
• Bila sisa hasil sama dengan 0, maka bilangan itu adalah bilangan genap
• Jika hasil bagi sama dengan 1, maka bilangan itu adalah bilangan ganjil
Buatlah flowcahartnya
Apa pertimbangan pemilihan platform dari aplikasi yang kamu buat untuk UKK