Anda di halaman 1dari 18

LAPORAN PRAKTIKUM

MATA KULIAH KONSTRUKSI DAN EVOLUSI PERANGKAT LUNAK


“PRAKTIKUM MINGGU 11 SAMPAI MINGGU 16”

DISUSUN OLEH:
NAMA : DUHAN IFANO
NPM : 1061805
KELAS : 03 TRPL
PRODI : TRPL

POLITEKNIK MANUFAKTUR NEGERI BANGKA BELITUNG


Kawasan Industri Air Kantung Sungailiat, Bangka 33211
Telp. (0717) 93586. Fax (07170) 93585
Email : polman@polman-babel.ac.id
website : www.polman-babel.ac.id

TAHUN AJARAN 2020/2021


PRAKTIKUM

DEFENSIVE PROGRAMMING – EXCEPTION

A. Dasar Teori

Defensive programming adalah suatu proses penulisan kode (programming) di


mana programmer sebisa mungkin untuk mengantisipasi terjadinya failure
terhadap suatu kode.

Contoh defensive programming adalah dalam membuat fitur login, programmer


membuat berbagai rule, misalnya rule bahwa password harus terdiri dari minimal
8 karakter yang terdiri dari angka, huruf, dan karakter. Apabila user menginputkan
data yang tidak sesuai dengan maksud program, maka sistem akan melakukan
exception dengan menampilkan dialog box bahwa data yang diinput tidak sesuai.
Salah satu teknik dalam defensive programming adalah Exception Handling
(penanganan pengecualian).

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

Beberapa exceptions dasar yang mungkin dialami saat menulis program.

 NameError: exception ini muncul ketika program-nya tidak dapat


menemukan sebuah nama lokal atau global. Nama yang tidak dapat
ditemukan dimasukkan ke dalam pesan error-nya.
 TypeError: 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: Pengecualian ini terjadi ketika sebuah fungsi argumen memiliki
tipe yang benar namun nilai yang salah.
 NotImplementedError: Pengecualian ini muncul ketika sebuah objek
seharusnya mendukung sebuah operasi namun belum diterapkan. Kamu
seharusnya tidak menggunakan error ini ketika fungsi yang diberikan tidak
ditujukan untuk mendukung tipe dari argumen masukan-nya. Pada situasi
tersebut, memunculkan TypeError exception jauh lebih tepat.
 ZeroDivisionError: Exception ini muncul ketika kamu menyediakan angka 0
argumen kedua untuk operasi pembagian atau modulo.
 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 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.

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.

Framework dibedakan berdasarkan bahasa pemrograman yang digunakan.


Beberapa contoh framework berdasarkan bahasa pemrogramnya, antara lain:

1. PHP Framework : Code Igniter

2. CSS Framework : Bootstrap

3. Python Framework : Django

4. Javascript Framework : ReactJS, AngularJS

Setiap framework menyediakan aturan-aturan yang harus diikuti oleh semua


penggunanya. Aturan-aturan ini menyebabkan penulisan kode pada framework
menjadi konvensi umum yang harus ditaati oleh penggunanya sehingga kode pada
framework dapat dipahami oleh semua developer. Contoh aturan-aturan pada
framework: 1. Aturan dalam meletakan source code pada folder-folder tertentu 2.
Aturan dalam menuliskan code 3. Aturan dalam pola desain 4. Dan lain-lain
B. Kegiatan Praktikum

Membuat suatu sistem informasi toko printer dimana menggunakan CRUD untuk
menampilkan, menginput, mengupdate serta menghapus.

1. Membuat database

Buatlah satu buah database dan buat satu tabel. Setelah itu buat beberapa
field untuk tabel tersebut seperti gambar diatas.

2. Menghubungkan dengan CodeIgniter

Buka file pada application/config/autoload.php. Setelah itu, cari coding


$autoload[‘libraries’] dan isi dengan database. Hasilnya akan seperti ini:

Setelah itu buka Buka application/config/database.php. Setelah itu, Anda


bisa cari kode di bawah ini. Lalu, isikan username, password, dan database
Anda.
3. Membuat model untuk tabel

Model merupakan kode yang berhubungan dengan data. Di dalam model,


kita dapat memodelkan data dari database. Biasanya 1 model untuk 1
tabel. Untuk praktikum ini, kita akan mencoba membuat model untuk tabel
printer.

 Buat 1 file baru di dalam aplication/model dengan nama


Printer_model.php (nama diawali huruf kapital)

 Menulis kode program pada file Printer_model.php

<?php defined('BASEPATH') OR exit('No direct script access


allowed');

class Printer_model extends CI_Model


{
// isi sesuai dengan nama tabel kita
private $_table = "data";
//isi seusai field tabel kita
public $no;
public $nama_merk;
public $warna;
public $jumlah;
// kita buatkan rules untuk input ke tabel printer
public function rules()
{
return [
['field' => 'nama_merk',
'label' => 'Merk Printer',
'rules' => 'required'],
['field' => 'warna',
'label' => 'Warna Printer',
'rules' => 'required'],

['field' => 'jumlah',


'label' => 'Jumlah Printer',
'rules' => 'numeric']
];

}
public function getAll()
{
return $this->db->get($this->_table)->result();
// perintah di atas kurang lebih sama dengan
// Select * from printer
}

public function getById($no)


{
return $this->db->get_where($this->_table, ["no"
=> $no])->row();
// perintah di atas kurang lebih sama dengan
// Select * from printer where no - $id
}
public function save()
{
$post = $this->input->post();
$this->no = uniqid();
$this->nama_merk = $post["nama_merk"];
$this->warna = $post["warna"];
$this->jumlah = $post["jumlah"];
return $this->db->insert($this->_table, $this);
}
public function update()
{
$post = $this->input->post();
$this->no = $post["no"];
$this->nama_merk= $post["nama_merk"];
$this->warna = $post["warna"];
$this->jumlah = $post["jumlah"];
return $this->db->update($this->_table, $this,
array('no' => $post['no']));
}
public function delete($no)
{
return $this->db->delete($this->_table,
array("no" => $no));
}
}

4. Membuat controller yang menghubungkan Printer_model.php dengan view


Printer.php

 Buat sebuah file baru di dalam folder controller, yakni pada direktory
application/controllers/admin dengan nama Printer.php

 Tulis code berikut ini:

<?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.

Langkah-langkah membuat view”

1. Buatlah 1 buah folder di directory application/views/admin. Beri nama


folder dengan printer

2. Buat 3 buah file di dalam folder printer tersebut, masing-masing diberi


nama dengan list.php untuk menampilkan data; new_form.php untuk
menampilkan form tambah data; dan edit_form.php untuk menampilkan
form edit data.

3. Tulis kode pertama kita pada folder view untuk menampilkan daftar
nama printer di file list.php dengan code sebagai berikut:

<!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

 Selanjutnya kita akan mencoba menambahkan data baru ke database


melalui form Add New.

 Silahkan buat file baru di dalam folder view/admin/printer/ dengan


nama new_form.php, lalu ketikkan dengan kode sederhana berikut
ini.

<!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>

<input type="submit" value="Submit">


</form>
</body>
</html>
Output

 Selanjutnya, kita akan membuat form edit di dalam directori


application/views/admin/printer dengan nama edit_form.php.
Ketikkan kode berikut ini.

<!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.

Anda mungkin juga menyukai