DISUSUN Oleh :
Nama : MUSTOPA
NPM : 1061815
A. Dasar Teori
Defensive programming adalah suatu proses penulisan kode (programming)
di mana programmer sebisa mungkin untuk mengantisipasi terjadinya failure
terhadap suatu kode.
Exception handling terdapat pada hampir semua bahasa aras tinggi. Pada Phyton,
error yang muncul disebabkan oleh 2 penyebab, yaitu kesalahan sintak dan
exception. Kesalahan sintak terjadi saat ada kekeliruan dalam penulisan sintak
Phyton, sedangkan exception muncul karena peristiwa internal terjadi sehingga
mengubah aliran program
NameError
Pengecualian ini muncul ketika sebuah fungsi dilewatkan ke sebuah objek dari
tipe yang tidak tepat sebagai sebuah argumen. Detil lengkapnya disediakan
melalui pesan error.
ValueError
NotImplementedError
ZeroDivisionError
FileNotFoundError
Exception ini muncul ketika berkas atau direktori yang program minta
tidak ditemukan atau tidak ada.
B. Kegiatan Praktikum
1. Percobaan 1
Source code
nilai=10
try:
hasilbagi=nilai/0
print(hasilbagi)
except ZeroDivisionError:
print("An error ocurred")
Output
Penjelasan
Dalam percobaan 1, kode program menggunakan exception handling
ZeroDivisionError yaitu kondisi dimana ketika user tidak dapat
membagi bilangan dengan penyebut bernilai 0. Ketika kondisi pada
try terpenuhi maka akan dilemparkan pada except ZeroDivisionError
untuk menampilkan error.
2. Percobaan 2
Source code
nilai=[100,40,30]
try:
print("Elemen ke dua = "+str(nilai[1]))
print("Elemen ke 4 = "+str(nilai[3]))
except IndexError:
print("Sebuah erorr muncul")
Output
Penjelasan
Pada percobaan kedua menggunakan exception handling IndexError
dimana biasanya error handling ini digunakan untuk
meminimalisirkan error ketika pengguna salah dalam penampilan
jumlah index dari suatu array.
3. Percobaan 3
Source code
nilai = int(input("Masukan sembarang nilai = "))
try:
k = 5//nilai
except ZeroDivisionError:
print("\n Can't divide by zero")
else:
print(k)
finally:
print("This is always executed")
Output
Penjelasan
Dalam percobaan 3, kode program menggunakan exception handling
Zero Division Error yaitu kondisi Ketika user tidak dapat membagi
bilangan dengan penyebut bernilai 0. Ketika kondisi pada try
terpenuhi maka akan dilemparkan pada except ZeroDivisionError
untuk menampilkan error.
4. Percobaan 4
Source code
nilai=[1,2,3,4,5]
try:
kontak=open("contact.txt",'r')
print (nilai[1])
except (IOError):
print("Terjadi Error IO : ")
print(nilai)
Output
Penjelasan
Percobaan 4 menggunakan IOError yaitu digunakan saat
programmer meminimalisir kesalahan dalam input dan output ketika
user menginput.
5. TUGAS EXCEPTION HANDLER
Source code
try:
nilai = int(input("Masukan nilai = "))
print(nilai)
except ValueError:
print("itu bukan tipe integer")
Output
Penjelasan
Percobaan 4 menggunakan ValueError yaitu digunakan saat
programmer meminimalisir kesalahan saat user salah memasukan
nilai berupa integer.
C. Kesimpulan
Kesimpulannya adalah bahwa exception merupakan teknik pengkodean
untuk meminimalisir programmer melakukan failure terhadap kode. Biasanya
exception ini kondisi yang menyebabkan program menjadi error dari alur normal
yang telah ditentukan. Ada banyak sekali exception handle yang bisa dilihat disini
https://docs.python.org/2/library/exceptions.html#exception-hierarchy .
PRAKTIKUM
FRAMEWORK CODE IGNITER
A. Dasar Teori
Framework bahasa pemrograman adalah kerangka kerja yang disediakan
untuk membantu developer dalam mengembangkan aplikasi yang berbasis web,
desktop, ataupun mobile. Framework memudahkan dan mempercepat pekerjaan
developer karena developer tidak perlu membuat aplikasi dari 0. Framework juga
menyediakan library-library yang dapat digunakan untuk mempercepat proses
pengembangan perangkat lunak. Selain itu, Framework juga dapat membuat kode
program yang lebih terstruktur sehingga lebih mudah untuk dimengerti dan
dikembangkan oleh developer yang lain. Tanpa menggunakan framework, kegiatan
pengembangan perangkat lunak menjadi tidak efisien, tidak fleksibel, dan aplikasi
yang dihasilkan lebih sulit untuk dimaintanaance dan dikembangkan lebih lanjut.
}
public function getAll()
{
return $this->db->get($this->_table)->result();
// perintah di atas kurang lebih sama dengan
// Select * from printer
}
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Printer extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->model("Printer_model");
$this->load->library('form_validation');
}
public function index()
{
$data["printer"] = $this->Printer_model->getAll();
$this->load->view("admin/printer/list", $data);
}
public function add()
{
$printer = $this->Printer_model;
$validation = $this->form_validation;
$validation->set_rules($printer->rules());
if ($validation->run()) {
$printer->save();
$this->session->set_flashdata('success', 'Berhasil
disimpan');
header("location: ../printer");
}
$this->load->view("admin/printer/new_form");
}
public function edit($no = null)
{
if (!isset($no)) redirect('admin/printer');
$printer = $this->Printer_model;
$validation = $this->form_validation;
$validation->set_rules($printer->rules());
if ($validation->run()) {
$printer->update();
$this->session->set_flashdata('success', 'Berhasil
disimpan');
header("location: ..");
}
$data["printer"] = $printer->getById($no);
if (!$data["printer"]) show_404();
$this->load->view("admin/printer/edit_form", $data);
}
public function delete($no=null)
{
if (!isset($no)) show_404();
if ($this->Printer_model->delete($no)) {
// redirect(site_url('admin/printer'));
header("location: ..");
}
}
}
5. Membuat View
View merupakan bagian yang bertugas mengurus tampilan. Ada tiga
view yang akan dibuat dalam aplikasi ini:
1. list.php untuk menampilkan data;
2. new_form.php untuk menampilkan form tambah data;
3. dan edit_form.php untuk menampilkan form edit data.
<!DOCTYPE html>
<html>
<head>
<style>
table {
font-family: arial, sans-serif;
border-collapse: collapse;
width: 100%;
}
td, th {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
tr:nth-child(even) {
background-color: #dddddd;
}
</style>
</head>
<body>
<h2>Daftar Printer</h2>
<table>
<tr>
<th>Merk Printer</th>
<th>Warna</th>
<th>Jumlah</th>
<th>Action</th>
</tr>
<?php foreach ($printer as $printer):
?>
<tr>
<td><?php echo $printer->nama_merk ?></td>
<td><?php echo $printer->warna ?></td>
<td><?php echo $printer->jumlah ?></td>
<td>
<a href="printer/edit/<?php echo $printer->no ?> " >Edit</a> ||
<a href="printer/delete/<?php echo $printer->no ?>">Delete</a>
</td>
</tr>
<?php endforeach; ?>
</table>
<br></br>
<a href="printer/add">Add New</a>
</body>
</html>
Output
<!DOCTYPE html>
<html>
<body>
<h2>Tambah Printer</h2>
<form action="add" method="post" enctype="multipart/form-data" >
<label for="fname">Merk Printer:</label><br>
<input type="text" id="nama_merk" name="nama_merk"
value=""><br>
<label for="lname">Warna Printer:</label><br>
<input type="text" id="warna" name="warna" value=""><br><br>
<label for="lname">Jumlah:</label><br>
<input type="text" id="jumlah" name="jumlah" value=""><br><br>
Output
<!DOCTYPE html>
<html>
<body>
<h2>HTML Forms</h2>
<form action="" method="post" enctype="multipart/form-data">
<input type="hidden" name="no" value="<?php echo $printer->no?>"
/>
<label for="fname">Merk Printer:</label><br>
<input type="text" id="nama_merk" name="nama_merk"
value="<?php echo $printer->nama_merk ?>"><br>
<label for="lname">Warna Printer:</label><br>
<input type="text" id="warna" name="warna" value="<?php
echo $printer->warna ?>"><br><br>
<label for="lname">jumlah:</label><br>
<input type="text" id="jumlah" name="jumlah" value="<?php
echo $printer->jumlah ?>"><br><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
Output:
C. Kesimpulan
Tutorial ini tidak mencakup semua hal yang diharapkan dari content
management system, tetapi memperkenalkan ke topik yang lebih penting
tentang routing, menulis controller, dan model. CodeIgniter memiliki konsep MVC
memudahkan dalam script program yang terstruktur dengan adanya pemisahan antara
model yang berinteraksi denngan database. View sebagai penerima data dan
merepresentasikan data kepada user, dan controller yang berfungsi sebagai penerima
request data dari user untuk menentukan proses yang diambil.