Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag , tetapi bisa juga diletakkan dalam tag ...

42
Pemrograman Web AJAX MAHARDEKA TRI ANANTA DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 [email protected] 1

Transcript of Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag , tetapi bisa juga diletakkan dalam tag ...

Page 1: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

Pemrograman WebAJAX

M AHARDEKA TRI A NANTA

DISUSUNOLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015

[email protected]

1

Page 2: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

PengantarAJAX = Asynchronous JavaScript And XML.

AJAX != programming language

AJAX adalah suatu teknik pertukaran data dengan server dan meng-update bagian dari halaman web tanpa melakukan reload keseluruhan halaman

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 2

Page 3: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

JavascriptJavascript adalah sebuah bahasa pemrograman yang dapat memberikan fituranimasi, data dinamis, interaktivitas, dan efek visual pada dokumen HTML.

Javascript != Java

Javascript Netscape Inc.

Java SUN Microsystems (sekarang ORACLE)

Javascript dahulu dikenal sebaga ECMAScript

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 3

Page 4: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

Contoh Aplikasi Javascript

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 4

Page 5: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

Penggunaan JSJS diidentifikasi oleh browser dengan menggunakan tag <script>

Pada umumnya JS diletakkan di dalam tag <head> , tetapi bisa juga diletakkan dalam tag<body> html

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 5

Page 6: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

File Javascript Eksternal

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 6

Page 7: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

JS Grammar StructurePada dasarnya struktur bahasa JS serupa dengan baha perograman C atau C++ dengan sedikitperbedaan.

Statement Setiap statement diakhiri dengan tanda titik koma (semicolon) ;

Built-in Function perintah yang dapat digunakan untuk berinteraksi antara web browser, program JS, dan HTML. Contoh : alert() document.write() isNan()

Tipe-tipe data JS :var length = 16; // Numbervar lastName = "Johnson"; // Stringvar cars = ["Saab", "Volvo", "BMW"]; // Arrayvar x = {firstName:"John", lastName:"Doe"}; // Object

jawaban = true; // Boolean

if( jawaban == true ) alert( "Jawabannya benar!" );

else alert( "jawabannya salah!");

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 7

Page 8: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

Penamaan Variabel (Unique Identifiers)The general rules for constructing names for variables (unique identifiers) are:◦ Names can contain letters, digits, underscores, and dollar signs.

◦ Names must begin with a letter

◦ Names can also begin with $ and _ (but we will not use it in this tutorial)

◦ Names are case sensitive (y and Y are different variables)

◦ Reserved words (like JavaScript keywords) cannot be used as names ex: alert, window, document, etc. [ read more in https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Keywords

http://www.ecma-international.org/ecma-262/5.1/Ecma-262.pdf ]

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 8

Page 9: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

Penggabungan VariabelBeberapa variabel dengan tipe data yang berbeda dalam JS dapat digabungkan secara langsung

dengan menggunakan operator tambah +

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 9

Page 10: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

Kontrol Logika

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 10

var nilai;

var hasil;

nilai = 82;

if (nilai>80) {

hasil = "Baik";

} else {

hasil = "Kurang";

}

// variabel hasil akan bernilai "Baik"

var skor;

skor = "A";

switch (skor){

case "A": alert("Istimewa");

break;

case "B+": alert("Sangat Memuaskan")

break;

case "B": alert("Memuaskan")

break;

case "C+": alert("Lebih dari cukup")

break;

case "C": alert("Cukup")

break;

case "D": alert("Kurang")

break;

default : alert("Nggak komentar deh...");

}

// pesan yang ditampilkan pada kotak dialog adalah "Istimewa!"

IF - ELSESWITCH - CASE

Page 11: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

Perulangan

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 11

for looping do-while looping

while looping

Page 12: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

Fungsi

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 12

Page 13: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

DOM (Document Object Model)Merupakan cara pandang JavaScript didalam melihat struktur data daridokumen markup yang terdiri dari tag, ID dan atribut.

Sebuah dokumen HTML direpresentasikan oleh DOM dalam bentuk sebuahstruktur hirarkis pohon. Misalkan sebuah dokumen HTML sederhana sepertiberikut:

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 13

Page 14: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

DOM (Document Object Model)

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 14

Selengkapnya (sumber) = http://bertzzie.com/knowledge/javascript/Document-Object-Model.html

Page 15: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

DOM Function

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 15

Page 16: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

DOM Object

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 16

Page 17: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

DOM Property

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 17

Page 18: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

Contoh Aplikasi AJAX

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 18

Page 19: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

Asynchronous VS SynchronousSynchronous Metode request HTTP yang sering digunakan dengan cara iniadalah metode POST dan GET.

Pada saat client mengirimkan request terhadap server,client akan menunggusampai proses yang diminta selesai dikerjakan, kemudian server akanmengembalikan hasil proses tersebut kepada client.

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 19

Source, Ajax.R. A. Yunmar, S.Kom

Page 20: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

Asynchronous VS Synchronous

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 20

Page 21: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

Asynchronous VS SynchronousAsynchronous Sebagian besar interaksi dan pertukaran data dilakukandibelakang layar.

Halaman web tidak harus selalu dimuat ulang secara keseluruhan setiap kali pengguna melakukan perubahan.

Meningkatkan interaktifitas, kecepatan dan usability.

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 21

Source, Ajax.R. A. Yunmar, S.Kom

Page 22: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

Asynchronous VS Synchronous

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 22

Page 23: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

Web Model

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 23

Page 24: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

AJAX Component XMLHttpRequest Object.

DOM (Document Object Model).

XML.

JSON dapat menjadi pilihan alternatif sebagai dokumen transfer, mengingatJSON adalah bagian dari JavaScript, sehingga pengolahannya akan lebih mudah.

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 24

Page 25: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

XMLHttpRequestSebuah object JavaScript yang digunakan untuk menangani request browser kepada web server tanpa perlu melakukan reload (background request) terhadap halaman web.

Sebagian besar web browser mendefinisikan XMLHttpRequest sebagaiJavaScript object.

Internet Explorer mendefinisikan object ini sebagai ActiveX Control.

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 25

Page 26: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

XMLHttpRequestGeneral Browser

◦ xmlhttp = new XMLHttpRequest();

Internet Explorer 7 Above

◦ xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");

Internet Explorer 6 Below

◦ xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 26

Page 27: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 27

<!DOCTYPE html>

<html>

<head>

<script>

function loadXMLDoc()

{

var xmlhttp;

if (window.XMLHttpRequest)

{// code for IE7+, Firefox, Chrome, Opera, Safari

xmlhttp=new XMLHttpRequest();

}

else

{// code for IE6, IE5

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

}

xmlhttp.onreadystatechange=function()

{

if (xmlhttp.readyState==4 && xmlhttp.status==200)

{

document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

}

}

xmlhttp.open("GET",'isi.txt',true);

xmlhttp.send();

}

</script>

</head>

<body>

<div id="myDiv"><h2>Let AJAX change this text</h2></div>

<button type="button" onclick="loadXMLDoc()">Change Content</button>

</body>

</html>

<h1>we are trying AJAX </h1>

<p> aaaaaaa </p>

isi.txt

Page 28: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

XMLHttpRequestXMLHttpRequest Method

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 28

Page 29: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

readyState - XMLHttpRequest PropertyDigunakan untuk mengetahui status perubahan dari request yang dikirimkan ke web server.

Properti ini diubah melalui event onreadystatechange.

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 29

Page 30: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

Status – XMLHttpRequest Property

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 30

Page 31: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

statusText – XMLHttpRequest PropertySama halnya seperti properti status, properti statusText digunakan untukmenyatakan response status dari server.

Status yang diberikan dalam bentuk keterangan.

Misalnya: respon 404 akan disampaikan dalam bentuk "Not Found", 403 dalambentuk "Forbidden" dan seterusnya.

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 31

Page 32: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

responseText – XMLHttpRequest PropertyProperti ini berisi data yang merupakan hasil komunikasi / respon request dari server dalam format plaint text (teks murni).

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 32

Page 33: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

responseXML – XMLHttpRequest PropertyProperti ini berisi data yang merupakan hasil komunikasi / respon request dari server dalam format XML.

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 33

Page 34: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

onreadystatechange - XMLHttpRequestEventDigunakan untuk mengetahui status dari request yang telah dikirimkan.

Ketika terjadi perubahan pada status request, event ini akan dijalankan dan mengupdate nilai dari property readyState yang terdapat pada object XMLHttpRequest.

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 34

Page 35: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

onreadystatechange - XMLHttpRequestEventKetika metode open() berhasil dijalankan, nilai dari properti readyState akan diubah menjadi 1.

Ketika metode send() berhasil dijalankan dan response header telah diterima, nilai dari properti readyState akan diubah menjadi 2

Ketika browser mendapat perintah dari server untuk memulai memuat data yang diinginkan, event onreadystatechange akan mengubah nilai dari property readyState menjadi 3.

Ketika data yang diinginkan telah berhasil didownload dengan lengkap, event onreadystatechange akan mengubah nilai dari properti readyState menjadi 4.

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 35

Page 36: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

Object innerHTMLObject innerHTML merupakan turunan dari object document.

innerHTML berisi content dari element HTML, yaitu nilai / value yang terletak diatara tag pembuka dan tag penutup.

Contoh:

<div id="divContent">innerHTML disini</div>

<span id="element_2">innerHTML disini</span>

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 36

Page 37: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

Object innerHTMLUntuk dapat mengambil atau mengubah data secara on the fly (tanpamelakukan reload) pada sebuah element HTML, diperlukan sebuah pengenalyang melekat pada element tersebut. Pengenal ini dapat didefinisikan melaluiatribut ID.

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 37

Page 38: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

XML•XML merupakan singkatan dari eXtensible Markup Language.

•Seperti halnya HTML, XML tersusun dari element-element.

•Element-element ini terdiri dari dari tag pembuka dan tag penutup serta mempunyai ID danatribut.

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 38

Page 39: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

HTML vs XML•HTML• Element penyusunnya sudah terstandarisasi.

•XML• Memungkinkan element-element XML dideklarasikan dengan lebih fleksibel. Dengan begitu,

setiap orang dapat menentukan element yang akan dibuat sesuai keinginannya.

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 39

Page 40: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

HTML vs XML

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 40

Page 41: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

ReferencesJavascript http://www.w3schools.com/js/default.asp

Document Object Model http://bertzzie.com/knowledge/javascript/Document-Object-Model.html

AJAX http://www.w3schools.com/ajax/default.asp

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 41

Page 42: Pemrograman Web PTI15010 umumnyaJS diletakkan di dalam tag  , tetapi bisa juga diletakkan dalam tag  html DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB

DISUSUN OLEH : TIM AJAR MATA KULIAH PEMROGRAMAN WEB 2014-2015 42

TERIMA KASIHSEMOGA BERMANFAAT