<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Studiawan</title>
	<atom:link href="http://studiawan.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://studiawan.com</link>
	<description>^_^</description>
	<lastBuildDate>Mon, 06 Feb 2012 23:45:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>KBBI Daring</title>
		<link>http://studiawan.com/kbbi-daring/</link>
		<comments>http://studiawan.com/kbbi-daring/#comments</comments>
		<pubDate>Mon, 06 Feb 2012 23:45:46 +0000</pubDate>
		<dc:creator>stu</dc:creator>
				<category><![CDATA[Perjuangan]]></category>

		<guid isPermaLink="false">http://studiawan.com/?p=443</guid>
		<description><![CDATA[Daring adalah bahasa Indonesia dari online . Seringkali dalam menulis ilmiah, kita harus mengetahui kata-kata baku yang digunakan dalam Bahasa Indonesia yang benar. Kalau jaman dulu, kita harus membuka Kamus Besar Bahasa Indonesia yang sangat tebal itu, sekarang telah ada&#8230;  <a href="http://studiawan.com/kbbi-daring/">continue reading</a> &#187;]]></description>
			<content:encoded><![CDATA[<p>Daring adalah bahasa Indonesia dari online <img src='http://studiawan.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> . Seringkali dalam menulis ilmiah, kita harus mengetahui kata-kata baku yang digunakan dalam Bahasa Indonesia yang benar. Kalau jaman dulu, kita harus membuka Kamus Besar Bahasa Indonesia yang sangat tebal itu, sekarang telah ada KBBI online. Kamus tersebut bisa diakses pada link ini: <a href="http://pusatbahasa.kemdiknas.go.id/kbbi/">http://pusatbahasa.kemdiknas.go.id/kbbi/</a></p>
<p>Selamat menulis ilmiah <img src='http://studiawan.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://studiawan.com/kbbi-daring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mengganti User Profile pada LibreOffice</title>
		<link>http://studiawan.com/mengganti-user-profile-pada-libreoffice/</link>
		<comments>http://studiawan.com/mengganti-user-profile-pada-libreoffice/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 08:50:33 +0000</pubDate>
		<dc:creator>stu</dc:creator>
				<category><![CDATA[Office]]></category>

		<guid isPermaLink="false">http://studiawan.com/?p=438</guid>
		<description><![CDATA[Saya mengalami stuck karena LibreOffice terus-menerus menampilkan kotak dialog Document Recovery seperti tampilan di bawah ini. Dan saya ingin menghapus kotak dialog tersebut. Bagaimana caranya? Karena lagi malas ngoprek , saya rename saja direktori user profile pada LibreOffice. Caranya adalah&#8230;  <a href="http://studiawan.com/mengganti-user-profile-pada-libreoffice/">continue reading</a> &#187;]]></description>
			<content:encoded><![CDATA[<p>Saya mengalami <em>stuck</em> karena LibreOffice terus-menerus menampilkan kotak dialog <em>Document Recovery</em> seperti tampilan di bawah ini. Dan saya ingin menghapus kotak dialog tersebut. Bagaimana caranya?<span id="more-438"></span></p>
<p><a href="http://studiawan.com/wp-content/uploads/2012/01/LibreOffice-3.3-Document-Recovery.png"><img class="aligncenter size-full wp-image-439" title="LibreOffice 3.3 Document Recovery" src="http://studiawan.com/wp-content/uploads/2012/01/LibreOffice-3.3-Document-Recovery.png" alt="LibreOffice 3.3 Document Recovery" width="666" height="430" /></a></p>
<p>Karena lagi malas ngoprek <img src='http://studiawan.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> , saya <em>rename</em> saja direktori <em>user profile</em> pada LibreOffice. Caranya adalah sebagai berikut. Cari direktori .libreoffice/3 di home folder Anda, misalnya</p>
<pre>cd /home/hudan/.libreoffice/3</pre>
<p>Lalu <em>rename</em> folder user dan jalankan kembali LibreOffice. Aplikasi <em>office</em> ini akan membuat direktori baru untuk <em>user profile</em> kita.</p>
<pre>mv user user.old</pre>
<p>Sudah begitu saja <img src='http://studiawan.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://studiawan.com/mengganti-user-profile-pada-libreoffice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lokasi Cache Google Chrome di Mint Katya</title>
		<link>http://studiawan.com/lokasi-cache-google-chrome-di-mint-katya/</link>
		<comments>http://studiawan.com/lokasi-cache-google-chrome-di-mint-katya/#comments</comments>
		<pubDate>Wed, 04 Jan 2012 15:41:37 +0000</pubDate>
		<dc:creator>stu</dc:creator>
				<category><![CDATA[Mint]]></category>

		<guid isPermaLink="false">http://studiawan.com/?p=431</guid>
		<description><![CDATA[Tips klasik anak-anak yang senang ngoprek Linux: mencari lokasi cache suatu browser . Saya menggukan Linux Mint Katya dan dua browser: Firefox dan Chrome. Terkadang lebih suka menggunakan Chrome karena tidak perlu tool khusus untuk download video. Tinggal buka folder&#8230;  <a href="http://studiawan.com/lokasi-cache-google-chrome-di-mint-katya/">continue reading</a> &#187;]]></description>
			<content:encoded><![CDATA[<p>Tips klasik anak-anak yang senang <em>ngoprek</em> Linux: mencari lokasi <em>cache</em> suatu browser <img src='http://studiawan.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> . Saya menggukan Linux Mint Katya dan dua browser: Firefox dan Chrome. Terkadang lebih suka menggunakan Chrome karena tidak perlu <em>tool</em> khusus untuk <em>download</em> video. Tinggal buka folder <em>cache</em> Chrome, <em>copy</em>, dan <em>paste</em> <img src='http://studiawan.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> .<span id="more-431"></span></p>
<p>Lalu di mana letak <em>cache browser</em> Google Chrome ini? Di laptop saya, di sini lokasinya: /home/hudan/.cache/google-chrome/Default/Cache. Coba lihat di folder Home Anda masing-masing. Karena harus mengakses folder yang <em>hidden</em>, kita harus mengaktifkan menu &#8220;<em>Show hidden files</em>&#8221; terlebih dulu. Menu ini bisa diaktifkan dengan memilih View &gt; Show Hidden Files pada Nautilus atau tekan Ctrl + H.</p>
<p>Penasaran? Atau sudah tahu? Haha&#8230; Blog ini sebagai pengingat saja kalau lupa <img src='http://studiawan.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://studiawan.com/lokasi-cache-google-chrome-di-mint-katya/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tentang Kompresi</title>
		<link>http://studiawan.com/tentang-kompresi/</link>
		<comments>http://studiawan.com/tentang-kompresi/#comments</comments>
		<pubDate>Tue, 03 Jan 2012 02:29:44 +0000</pubDate>
		<dc:creator>stu</dc:creator>
				<category><![CDATA[Perjuangan]]></category>

		<guid isPermaLink="false">http://studiawan.com/?p=427</guid>
		<description><![CDATA[Beberapa hari terakhir, saya mencoba membaca-baca modul standar Python untuk kompresi. Setelah browsing kesana kemari, ternyata ada beberapa teknik kompresi dasar yang telah didukung oleh Python secara default. Kompresi yang didukung antara lain: zlib, gzip, bz2, zip, dan tar. Saya&#8230;  <a href="http://studiawan.com/tentang-kompresi/">continue reading</a> &#187;]]></description>
			<content:encoded><![CDATA[<p>Beberapa hari terakhir, saya mencoba membaca-baca modul standar Python untuk kompresi. Setelah browsing kesana kemari, ternyata ada beberapa teknik kompresi dasar yang telah didukung oleh Python secara <em>default</em>. Kompresi yang didukung antara lain: zlib, gzip, bz2, zip, dan tar. Saya coba baca langsung <em>source code</em> gzip atau bz2 tapi ternyata kedua metode ini harus mengimpor zlib. Sepertinya zlib ini modul dasar yang digunakan oleh teknik kompresi yang lain.<span id="more-427"></span></p>
<p>Akhirnya saya <em>browsing</em> lagi, dan menemukan <em>source code</em> zlib di <a href="http://hg.python.org/cpython/file/355466216029/Modules/zlib" target="_blank">sini</a>. Selanjutnya, saya print file zlib.h dan zconf.h. Saya baca satu per satu baris <em>source code</em>-nya. Dan ternyata? <em>Enggak</em> paham <img src='http://studiawan.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> . Selanjutnya, saya coba <em>print</em> juga RFC untuk zlib ini (<a href="http://www.ietf.org/rfc/rfc1950.txt" target="_blank">RFC 1950</a>). Setelah dibaca-baca, sering disinggung-singgung juga metode deflate dan gzip. Akhirnya, saya <em>print</em> juga <a href="http://www.ietf.org/rfc/rfc1951.txt" target="_blank">RFC 1951</a> untuk deflate dan <a href="http://www.ietf.org/rfc/rfc1952.txt" target="_blank">RFC 1952</a> untuk gzip. Selain itu, sepertinya saya juga harus membaca kembali buku fundamental bahasa pemrograman C klasik, sudah banyak sintaks yang lupa <img src='http://studiawan.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> . <em>Official site </em>zlib bisa juga diakses di <a href="http://www.zlib.net/" target="_blank">sini</a>.</p>
<p>Kesimpulannya? Ya tidak ada cara lain selain dibaca RFC, manual, dan <em>source code</em> untuk memahami pustaka dasar yang digunakan untuk kompresi di protokol HTTP ini. <em>Have a nice Tuesday</em>! <img src='http://studiawan.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://studiawan.com/tentang-kompresi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kalkulator Sederhana Client-Server</title>
		<link>http://studiawan.com/kalkulator-sederhana-client-server/</link>
		<comments>http://studiawan.com/kalkulator-sederhana-client-server/#comments</comments>
		<pubDate>Sat, 24 Dec 2011 15:52:01 +0000</pubDate>
		<dc:creator>stu</dc:creator>
				<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://studiawan.com/?p=399</guid>
		<description><![CDATA[Kita telah mencoba operasi aritmetika sederhana dengan dan tanpa fungsi. Kita juga telah mencoba aplikasi sederhana client-server yang mengirimkan sebuah pesan sederhana. Bagaimana jika operasi aritmetika ini dilakukan dengan arsitektur client-server? Kita akan menggabungkan konsep dasar dari dua contoh yang&#8230;  <a href="http://studiawan.com/kalkulator-sederhana-client-server/">continue reading</a> &#187;]]></description>
			<content:encoded><![CDATA[<p>Kita telah mencoba operasi aritmetika sederhana dengan dan tanpa fungsi. Kita juga telah mencoba aplikasi sederhana <em>client-server</em> yang mengirimkan sebuah pesan sederhana. Bagaimana jika operasi aritmetika ini dilakukan dengan arsitektur <em>client-server</em>? Kita akan menggabungkan konsep dasar dari dua contoh yang telah kita coba tentang arsitektur <em>client-server</em> sederhana dan fungsi. Mari kita lihat.<span id="more-399"></span></p>
<p>Kita akan membuat sebuah perhitungan aritmetika sederhana (kita coba penjumlahan saja) seperti yang dijelaskan di tulisan <a href="http://studiawan.com/fungsi-dengan-return-value-di-python/" target="_blank">sebelumnya</a>. Namun, akan ada sedikit modifikasi yaitu operasi ini dilakukan di arsitektur <em>client-server</em>. <em>Client </em>akan mengirim dua operand dan <em>server</em> akan memproses dan mengirim hasil perhitungan ke <em>client</em>.</p>
<p>Langkah-langkahnya secara ringkas adalah sebagai berikut:</p>
<ol>
<li>Client <strong>mengirim</strong> dua operand</li>
<li>Server <strong>menerima</strong> dua operand</li>
<li>Server melakukan <strong>parsing</strong> dua operand ini</li>
<li>Server melakukan <strong>perhitungan</strong> dan <strong>mengirim</strong> hasilnya ke client</li>
</ol>
<p>Kita mulai dari <em>client </em>terlebih dulu. Agar input dua operand ini bersifat dinamis, maka kita akan memanfaatkan teknik <a href="http://studiawan.com/argument-value-di-python/" target="_blank">mendapatkan <em>argumen value</em></a> di Python. Selanjutnya, <em>client </em>akan mengirim dua operand yang masih direpresentasikan dalam satu string ini ke server (perhatikan bahwa di sini dua operand masih digabung menjadi satu string, belum dipisah)</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># mengimpor modul socket dan sys</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">socket</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">sys</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># mendapatkan semua operand</span>
operand = <span style="color: #483d8b;">' '</span>.<span style="color: black;">join</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">sys</span>.<span style="color: black;">argv</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span>:<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># menentukan alamat server</span>
server_address = <span style="color: black;">&#40;</span><span style="color: #483d8b;">'localhost'</span>, <span style="color: #ff4500;">5000</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># ukuran buffer ketika menerima pesan</span>
SIZE = <span style="color: #ff4500;">1024</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># membuat socket</span>
s = <span style="color: #dc143c;">socket</span>.<span style="color: #dc143c;">socket</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">socket</span>.<span style="color: black;">AF_INET</span>, <span style="color: #dc143c;">socket</span>.<span style="color: black;">SOCK_STREAM</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># koneksi ke server</span>
s.<span style="color: black;">connect</span><span style="color: black;">&#40;</span>server_address<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># mengirim operand ke server</span>
s.<span style="color: black;">send</span><span style="color: black;">&#40;</span>operand<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># menerima hasil penjumlahan dari server</span>
result = s.<span style="color: black;">recv</span><span style="color: black;">&#40;</span>SIZE<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># mencetak hasil penjumlahan dari server</span>
<span style="color: #ff7700;font-weight:bold;">print</span> result
&nbsp;
<span style="color: #808080; font-style: italic;"># menutup socket</span>
s.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></div></div>

<p>Operand yang dikirimkan ke server masih seperti ini: &#8220;2 3&#8243;. Sehingga, server harus memisahkannya (<em>split</em>) baru bisa dioperasikan. Proses mengolah atau memanipulasi data sebelum diproses lebih lanjut biasa disebut dengan <em>parsing</em>. Dalam contoh ini, parsing dilakukan untuk memisahkan dua operand yang masih berupa satu string &#8220;2 3&#8243;  menjadi &#8220;2&#8243; dan &#8220;3&#8243;. Python menyediakan fungsi split yang sangat memudahkan kita melakukan pekerjaan ini. Mari kita mulai kode untuk server.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># mengimpor modul socket</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">socket</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># menentukan alamat server</span>
server_address = <span style="color: black;">&#40;</span><span style="color: #483d8b;">'localhost'</span>, <span style="color: #ff4500;">5000</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># ukuran buffer ketika menerima pesan</span>
SIZE = <span style="color: #ff4500;">1024</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># membuat objek socket</span>
s = <span style="color: #dc143c;">socket</span>.<span style="color: #dc143c;">socket</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">socket</span>.<span style="color: black;">AF_INET</span>, <span style="color: #dc143c;">socket</span>.<span style="color: black;">SOCK_STREAM</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># bind ke alamat server</span>
s.<span style="color: black;">bind</span><span style="color: black;">&#40;</span>server_address<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># mendengarkan koneksi dari client</span>
s.<span style="color: black;">listen</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">5</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># siap menerima pesan terus-menerus dari client</span>
<span style="color: #ff7700;font-weight:bold;">while</span> <span style="color: #ff4500;">1</span>:
	<span style="color: #808080; font-style: italic;"># menerima koneksi dari client</span>
	client, client_address = s.<span style="color: black;">accept</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;"># menerima pesan dari client</span>
	message = client.<span style="color: black;">recv</span><span style="color: black;">&#40;</span>SIZE<span style="color: black;">&#41;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;"># jika tidak ada pesan, keluar dari while</span>
	<span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #ff7700;font-weight:bold;">not</span> message:
		<span style="color: #ff7700;font-weight:bold;">break</span>
&nbsp;
	<span style="color: #808080; font-style: italic;"># parsing operand</span>
	operand = message.<span style="color: black;">split</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
	operand1 = <span style="color: #008000;">float</span><span style="color: black;">&#40;</span>operand<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
	operand2 = <span style="color: #008000;">float</span><span style="color: black;">&#40;</span>operand<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;"># operasi penjumlahan</span>
	result = operand1 + operand2
&nbsp;
	<span style="color: #808080; font-style: italic;"># mengirimkan hasil penjumlahan ke client</span>
	client.<span style="color: black;">send</span><span style="color: black;">&#40;</span><span style="color: #008000;">str</span><span style="color: black;">&#40;</span>result<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># menutup socket</span>
s.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></div></div>

<p>Pesan dari <em>client </em>di-<em>split </em>dan <em>return value</em> dari proses <em>split </em>ini berupa list. <em>By default</em>, jika tidak diberikan input eksplisit, <em>split</em> dilakukan berdasarkan tanda spasi. Sehingga, operand1 dan operand2 bisa didapatkan dari <em>return value</em> split yang berupa list ini. Setelah itu, hasil penjumlahan dikonversi ke string agar bisa dikirim ke <em>client</em> (fungsi <em>send</em> dan <em>recv</em> hanya menerima string). Silakan langsung dicoba saja <img src='http://studiawan.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://studiawan.com/kalkulator-sederhana-client-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Argument Value di Python</title>
		<link>http://studiawan.com/argument-value-di-python/</link>
		<comments>http://studiawan.com/argument-value-di-python/#comments</comments>
		<pubDate>Sat, 24 Dec 2011 15:16:33 +0000</pubDate>
		<dc:creator>stu</dc:creator>
				<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://studiawan.com/?p=401</guid>
		<description><![CDATA[Seringkali kita harus memberikan input dinamis ke script Python yang dijalankan. Salah satu teknik yang bisa digunakan adalah menggunakan argument value dari modul sys di Python. Bagaimana ceritanya? Kita menjalankan sebuah script Python yang melakukan operasi penjumlahan dengan cara seperti&#8230;  <a href="http://studiawan.com/argument-value-di-python/">continue reading</a> &#187;]]></description>
			<content:encoded><![CDATA[<p>Seringkali kita harus memberikan input dinamis ke <em>script </em>Python yang dijalankan. Salah satu teknik yang bisa digunakan adalah menggunakan <em>argument value</em> dari modul sys di Python. Bagaimana ceritanya?<span id="more-401"></span></p>
<p>Kita menjalankan sebuah script Python yang melakukan operasi penjumlahan dengan cara seperti ini</p>
<pre>python penjumlahan.py</pre>
<p>Kita bisa menambahkan argumen di belakang perintah tersebut, misalnya dua operand yang akan dijumlahkan</p>
<pre>python penjumlahan.py 2 3</pre>
<p>Bagaimana menangkap dua argumen tambahan (nilai 2 dan 3) di atas? Kita mengimpor modul sys terlebih dulu dan dilanjutkan dengan mengambil nilai argumen kemudian melakukan operasi penjumlahan</p>
<pre>#!/usr/bin/env python
import sys

# mendapatkan nilai operand
operand1 = float(sys.argv[1])
operand2 = float(sys.argv[2])

# operasi penjumlahan dan cetak hasilnya ke layar
hasil_penjumlahan = operand1 + operand2
print hasil_penjumlahan</pre>
<p>Argumen dikonversi ke float untuk mengonversi tipe data string ke float agar bisa dilakukan perhitungan (by default, <em>argument value </em>bertipe data string). Pada contoh di atas, sys.argv dimulai dengan indeks 1, ke mana indeks yang ke-0? Mari kita cek urutan indeks <em>argument value</em> ini</p>
<ol>
<li>sys.argv[0] -&gt; penjumlahan.py</li>
<li>sys.argv[1] -&gt; 2</li>
<li>sys.argv[2] -&gt; 3</li>
</ol>
<p>Sudah jelas bukan? Silakan jalankan contoh di atas dengan perintah sebagai berikut</p>
<pre>python penjumlahan.py 2 3</pre>
<p>Sebenarnya, contoh di atas bisa kita persingkat lagi sehingga hanya menghasilkan beberapa baris. Coba simak contoh di bawah ini.</p>
<pre>#!/usr/bin/env python
import sys

# mendapatkan nilai operand
operand1, operand2 = sys.argv[1:]

# cetak hasil operasi penjumlahan ke layar
print float(operand1) + float(operand2)</pre>
<p>Indeks pada sys.argv ditunjukkan dengan [1:], artinya semua <em>argument value</em> dari indeks 1 sampai terakhir (ditunjukkan dengan tanda &#8220;:&#8221;) disimpan dalam variabel-variabel di ruas kiri (dua variabel yaitu operand1 dan operand2). Kemudian, konversi ke tipe data float  dilakukan pada saat operasi penjumlahan dan hasilnya langsung dicetak ke layar. <em>Happy coding </em>^_^</p>
]]></content:encoded>
			<wfw:commentRss>http://studiawan.com/argument-value-di-python/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Pemrograman Jaringan Sederhana di Python</title>
		<link>http://studiawan.com/pemrograman-jaringan-sederhana-di-python/</link>
		<comments>http://studiawan.com/pemrograman-jaringan-sederhana-di-python/#comments</comments>
		<pubDate>Sun, 18 Dec 2011 14:32:40 +0000</pubDate>
		<dc:creator>stu</dc:creator>
				<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://studiawan.com/?p=365</guid>
		<description><![CDATA[Oke, mari kita masuk ke acara inti. Kita akan membuat sebuah program client-server sederhana di Python. Pemrograman semacam ini biasanya disebut dengan pemrograman socket. Jadi nanti kita akan menggunakan modul Python yang bernama socket. Sebuah modul di Python bisa di-load&#8230;  <a href="http://studiawan.com/pemrograman-jaringan-sederhana-di-python/">continue reading</a> &#187;]]></description>
			<content:encoded><![CDATA[<p>Oke, mari kita masuk ke acara inti. Kita akan membuat sebuah program <em>client-server</em> sederhana di Python. Pemrograman semacam ini biasanya disebut dengan pemrograman <em>socket</em>. Jadi nanti kita akan menggunakan modul Python yang bernama <em>socket</em>. Sebuah modul di Python bisa di-<em>load </em>pada program kita dengan menggunakan perintah <em>import</em>. Jika lupa beberapa istilah pemrograman jaringan, <em>client</em>, atau <em>server</em>, silakan baca kembali <a href="http://studiawan.com/terminologi-dasar-dalam-pemrograman-jaringan/" target="_blank">tulisan</a> sebelumnya. Sebelum melanjutkan membaca, atur posisi duduk Anda dulu, buat senyaman mungkin <img src='http://studiawan.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> . Lalu bagaimana contoh programnya?<span id="more-365"></span></p>
<p>Ada sebuah video menarik tentang bagaimana sebenarnya jaringan komputer bekerja. Sepertinya pemahaman tentang jaringan ini akan mempermudah kita dalam memprogram nantinya. Silakan dicek videonya di <a href="http://www.youtube.com/watch?v=H760U3QZocs" target="_blank">YouTube</a>. Jadi YouTube bisa buat belajar juga <em>lho</em>, tidak cuma untuk melihat Shinta &amp; Jojo, Nurman Kamaru, atau Ayu Ting Ting <img src='http://studiawan.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> .</p>
<p>Oke, sebelum memprogram, kita harus tahu <strong>alur ceritanya</strong> dulu bukan? Begini ceritanya. <em>Client </em>akan mengirimkan sebuah pesan dengan tipe data string kepada <em>server</em>. Kemudian <em>server </em>akan menerimanya, kemudian mengirimkannya kembali ke <em>client</em>. Perhatikan bahwa di sini ada tiga proses utama: <em>client </em><strong>mengirim</strong>, <em>server </em><strong>menerima</strong>, dan <em>server</em> <strong>mengirim kembali</strong> pesan.</p>
<p>Mari kita mulai melihat <strong>proses utama</strong> dari sisi <em>client </em>terlebih dulu.</p>
<ol>
<li>Pertama, <em>client </em><strong>membuat objek socket</strong> terlebih dulu</li>
<li>Kedua, <em>client </em><strong>mengoneksikan </strong>dirinya<strong> ke server</strong></li>
<li>Baru kemudian melakukan proses <strong>mengirim</strong> (<em>send</em>) atau <strong>menerima </strong>(<em>receive</em>) pesan dari <em>server</em></li>
</ol>
<p>Oke, kita lihat program <em>client </em>sederhana ini.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># mengimpor modul socket</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">socket</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># menentukan alamat server</span>
server_address = <span style="color: black;">&#40;</span><span style="color: #483d8b;">'localhost'</span>, <span style="color: #ff4500;">5000</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># ukuran buffer ketika menerima pesan</span>
SIZE = <span style="color: #ff4500;">1024</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># membuat objek socket (proses pertama)</span>
s = <span style="color: #dc143c;">socket</span>.<span style="color: #dc143c;">socket</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">socket</span>.<span style="color: black;">AF_INET</span>, <span style="color: #dc143c;">socket</span>.<span style="color: black;">SOCK_STREAM</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># koneksi ke server (proses kedua)</span>
s.<span style="color: black;">connect</span><span style="color: black;">&#40;</span>server_address<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># mengirim pesan ke server (proses ketiga)</span>
s.<span style="color: black;">send</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Hi server ... &quot;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># menerima pesan dari server</span>
message = s.<span style="color: black;">recv</span><span style="color: black;">&#40;</span>SIZE<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># mencetak pesan dari server</span>
<span style="color: #ff7700;font-weight:bold;">print</span> message
&nbsp;
<span style="color: #808080; font-style: italic;"># menutup socket</span>
s.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></div></div>

<p>Mari kita lihat satu per satu bagian program ini. Sebelumnya, ada catatan menarik tentang notasi &#8220;#!&#8221; di baris pertama program ini. Silakan disimak lebih lanjut di halaman <a href="http://en.wikipedia.org/wiki/Shebang_%28Unix%29" target="_blank">Wikipedia</a> ini. Tahap pertama adalah mengimpor modul <em>socket</em>. Modul ini digunakan untuk memanipulasi berbagai hal yang berkaitan dengan <em>socket</em>.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;"># mengimpor modul socket</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">socket</span></pre></div></div>

<p>Selanjutnya, adalah inisialisasi dua variabel yaitu alamat server (server_address) dan ukuran <em>buffer </em>(SIZE). Perhatikan bahwa alamat <em>server </em>dibuat dengan tipe data tuple.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;"># menentukan alamat server</span>
server_address = <span style="color: black;">&#40;</span><span style="color: #483d8b;">'localhost'</span>, <span style="color: #ff4500;">5000</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># ukuran buffer untuk menerima pesan</span>
SIZE = <span style="color: #ff4500;">1024</span></pre></div></div>

<p>Elemen pertama variabel server_address menunjukkan alamat <em>server </em>dengan tipe data string, sedangkan elemen kedua adalah <em>port </em>yang digunakan pada <em>server </em>dengan tipe data integer. &#8220;localhost&#8221; menunjukkan bahwa <em>server </em>berada di komputer yang sama dengan <em>client</em>. Jika alamat ini dikosongi seperti ini: &#8220;&#8221; , maka artinya sama dengan &#8220;localhost&#8221;. Nomor <em>port </em>dipilih sesuai dengan nomor <em>port </em>yang kosong di komputer Anda. Ukuran <em>buffer </em>mempunyai satuan <em>byte</em>. Anda bisa mengubahnya sesuai dengan kebutuhan. Bisa mulai dari 256, 512, 1024, 2048, dan seterusnya asalkan masih dalam kelipatan dua.</p>
<p>Proses selanjutnya adalah membuat objek <em>socket</em>. Ini adalah <strong>proses pertama</strong> yang merupakan bagian proses utama yang terjadi di sisi <em>client</em>.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;"># membuat objek socket (proses pertama)</span>
s = <span style="color: #dc143c;">socket</span>.<span style="color: #dc143c;">socket</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">socket</span>.<span style="color: black;">AF_INET</span>, <span style="color: #dc143c;">socket</span>.<span style="color: black;">SOCK_STREAM</span><span style="color: black;">&#41;</span></pre></div></div>

<p>AF_INET adalah keluarga <em>socket </em>untuk komunikasi antara <em>client </em>dan <em>server </em>yang bisa berada di <em>host </em>yang sama atau berbeda. AF_INET hanya mendukung IPv4. Parameter kedua adalah SOCK_STREAM yang artinya adalah program ini menggunakan protokol TCP bukan UDP. Jika menggunakan UDP, maka parameternya adalah SOCK_DGRAM. Dokumentasi lengkap tentang <em>socket </em>bisa dilihat di <a href="http://docs.python.org/library/socket.html" target="_blank">sini</a>. Di sisi <em>client</em>, <em>s</em> disebut dengan <em><strong>socket client</strong></em>.</p>
<p>Langkah selanjutnya adalah mengoneksikan <em>client</em> ke <em>server</em>.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;"># koneksi ke server (proses kedua)</span>
s.<span style="color: black;">connect</span><span style="color: black;">&#40;</span>server_address<span style="color: black;">&#41;</span></pre></div></div>

<p>Koneksi ke <em>server </em>dilakukan sesuai dengan alamat dan <em>port</em> yang telah didefinisikan sebelumnya. Perhatikan bahwa ini adalah <strong>proses kedua</strong> dari proses utama yang terjadi di sisi <em>client</em>. Setelah itu, <em>client </em>mengirim pesan ke <em>server</em>.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;"># mengirim pesan ke server (proses ketiga)</span>
s.<span style="color: black;">send</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Hi server ... &quot;</span><span style="color: black;">&#41;</span></pre></div></div>

<p>Perhatikan juga bahwa ini adalah <strong>proses ketiga</strong> dari bagian proses utama pada <em>client</em>. Sintaks Python memang dirancang untuk mudah sekali dimengerti. Misalnya sintaks mengirim adalah <em>send</em>, sedangkan menerima sintaksnya adalah <em>recv</em>. Tidak ada alasan untuk susah mengerti sintaks Python bukan? <img src='http://studiawan.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> .</p>
<p>Pesan yang diterima dari <em>server </em>disimpan di variabel <em>message </em>untuk selanjutnya dicetak.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;"># menerima pesan dari server</span>
message = s.<span style="color: black;">recv</span><span style="color: black;">&#40;</span>SIZE<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># mencetak pesan dari server</span>
<span style="color: #ff7700;font-weight:bold;">print</span> message</pre></div></div>

<p>Terakhir adalah menutup socket yang telah digunakan.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;"># menutup socket</span>
s.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></div></div>

<p>Sampai di sini ada pertanyaan? Silakan <em>post </em>komentar atau mengirim ke email saya atau boleh juga ditanyakan di kelas <img src='http://studiawan.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> .</p>
<p>Kita lanjutkan ke sisi <em>server</em>. Sedikit berbeda dengan <em>client</em>, program dari sisi <em>server </em>harus melakukan <em><strong>bind</strong></em>, <em><strong>listen</strong></em>, dan <em><strong>accept</strong></em>. Secara umum, <strong>proses utama</strong> yang terjadi di sisi server adalah sebagai berikut</p>
<ol>
<li><em>Server </em><strong>membuat objek socket</strong> terlebih dulu</li>
<li><strong>Bind </strong>ke alamat yang ditentukan</li>
<li>Mendengarkan (<strong>listen</strong>) apakah ada koneksi yang masuk</li>
<li>Menerima koneksi (<strong>accept</strong>) dari client</li>
<li>Menerima pesan dari <em>client </em>(<strong>recv</strong>)</li>
<li>Melakukan suatu <strong>proses</strong></li>
<li>Mengirimkan hasil proses ke <em>client </em>(<strong>send</strong>)</li>
</ol>
<p>Kita lihat dulu contoh programnya, baru kita cek satu per satu bagian programnya.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># mengimpor modul socket</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">socket</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># menentukan alamat server</span>
server_address = <span style="color: black;">&#40;</span><span style="color: #483d8b;">'localhost'</span>, <span style="color: #ff4500;">5000</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># ukuran buffer ketika menerima pesan</span>
SIZE = <span style="color: #ff4500;">1024</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># membuat objek socket</span>
s = <span style="color: #dc143c;">socket</span>.<span style="color: #dc143c;">socket</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">socket</span>.<span style="color: black;">AF_INET</span>, <span style="color: #dc143c;">socket</span>.<span style="color: black;">SOCK_STREAM</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># bind ke alamat server</span>
s.<span style="color: black;">bind</span><span style="color: black;">&#40;</span>server_address<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># mendengarkan koneksi dari client</span>
s.<span style="color: black;">listen</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># siap menerima pesan terus-menerus dari client</span>
<span style="color: #ff7700;font-weight:bold;">while</span> <span style="color: #ff4500;">1</span>:
	<span style="color: #808080; font-style: italic;"># menerima koneksi dari client</span>
	client, client_address = s.<span style="color: black;">accept</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;"># menerima pesan dari client</span>
	message = client.<span style="color: black;">recv</span><span style="color: black;">&#40;</span>SIZE<span style="color: black;">&#41;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;"># jika tidak ada pesan, keluar dari while</span>
	<span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #ff7700;font-weight:bold;">not</span> message:
		<span style="color: #ff7700;font-weight:bold;">break</span>
&nbsp;
	<span style="color: #808080; font-style: italic;"># mengirimkan kembali pesan ke client</span>
	client.<span style="color: black;">send</span><span style="color: black;">&#40;</span>message<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># menutup socket</span>
s.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></div></div>

<p>Di sisi <em>server </em>ini, program diawali dengan cara yang sama seperti di sisi <em>client</em>. Mulai dari impor modul <em>socket</em>, menentukan alamat <em>server</em>, menentukan ukuran <em>buffer</em>, dan membuat objek <em>socket</em>. Kita langsung ke bagian yang berbeda. Pertama adalah proses <em>bind </em>ke alamat dan port yang telah ditentukan</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;"># bind ke alamat server</span>
s.<span style="color: black;">bind</span><span style="color: black;">&#40;</span>server_address<span style="color: black;">&#41;</span></pre></div></div>

<p>Istilah <em>bind </em>di sini bisa diartikan sebagai pengaturan alamat dan port server.  Jadi, alamat dan <em>port </em>yang telah dideklarasikan tersebut, &#8220;ditempelkan&#8221; pada objek <em>socket server</em>. Di sisi <em>server</em>, <em>s</em> disebut dengan <strong>socket server</strong>. Langkah selanjutnya adalah &#8220;mendengarkan&#8221; koneksi dari <em>client</em>.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;"># mendengarkan koneksi dari client</span>
s.<span style="color: black;">listen</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span></pre></div></div>

<p>Terdapat satu parameter pada <em>listen</em> yang biasa disebut dengan <em>backlog </em>yang artinya adalah jumlah maksimum antrian koneksi. Karena di sini kita masih mencoba contoh yang sederhana, jadi kita <em>set </em>jumlah antriannya satu saja. Berikutnya adalah menerima koneksi dari <em>client</em>.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;"># menerima koneksi dari client</span>
client, client_address = s.<span style="color: black;">accept</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></div></div>

<p><em>Return value</em> dari <em>accept </em>ada dua yaitu objek <em>socket client</em> (ditunjukkan dengan variabel <em>client</em>) dan alamat <em>client</em> (variabel <em>client_address</em>). Jadi di sisi <em>server</em>, <strong>socket server</strong> ditunjukkan dengan variabel <em>s</em> dan <strong>socket client</strong> ditunjukkan oleh variabel <em>client</em>. Ingat-ingat konsep ini karena akan kita gunakan pada bagian berikutnya <img src='http://studiawan.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> .</p>
<p>Berikutnya adalah <em>server </em>menggunakan <em>infinite loop</em> untuk menerima pesan dari <em>client</em>. Kemudian <em>server </em>mengirimkan pesan kembali ke <em>client</em>.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;"># siap menerima pesan terus-menerus dari client</span>
<span style="color: #ff7700;font-weight:bold;">while</span> <span style="color: #ff4500;">1</span>:
	<span style="color: #808080; font-style: italic;"># menerima pesan dari client</span>
	message = client.<span style="color: black;">recv</span><span style="color: black;">&#40;</span>SIZE<span style="color: black;">&#41;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;"># jika tidak ada pesan, keluar dari while</span>
	<span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #ff7700;font-weight:bold;">not</span> message:
		<span style="color: #ff7700;font-weight:bold;">break</span>
&nbsp;
	<span style="color: #808080; font-style: italic;"># mengirimkan kembali pesan ke client</span>
	client.<span style="color: black;">send</span><span style="color: black;">&#40;</span>message<span style="color: black;">&#41;</span></pre></div></div>

<p>Jika tidak ada lagi pesan yang diterima, maka keluar dari <em>looping </em>dan <em>socket server</em> ditutup.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;"># menutup socket</span>
s.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></div></div>

<p>Silakan langsung dicoba <img src='http://studiawan.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://studiawan.com/pemrograman-jaringan-sederhana-di-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fungsi dengan Return Value di Python</title>
		<link>http://studiawan.com/fungsi-dengan-return-value-di-python/</link>
		<comments>http://studiawan.com/fungsi-dengan-return-value-di-python/#comments</comments>
		<pubDate>Sun, 18 Dec 2011 13:26:03 +0000</pubDate>
		<dc:creator>stu</dc:creator>
				<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://studiawan.com/?p=339</guid>
		<description><![CDATA[Pada tulisan sebelumnya, fungsi yang digunakan tidak memberikan nilai kembalian (return value). Kita juga bisa membuat sebuah fungsi yang memberikan return value. Return value bisa bertipe data apa saja. Mari kita coba. Pertama kita akan membuat fungsi dengan return value&#8230;  <a href="http://studiawan.com/fungsi-dengan-return-value-di-python/">continue reading</a> &#187;]]></description>
			<content:encoded><![CDATA[<p>Pada tulisan sebelumnya, fungsi yang digunakan tidak memberikan nilai kembalian (<em>return value</em>). Kita juga bisa membuat sebuah fungsi yang memberikan <em>return value</em>. <em>Return value</em> bisa bertipe data apa saja. Mari kita coba. <span id="more-339"></span>Pertama kita akan membuat fungsi dengan <em>return value</em> sebuah list. Fungsi yang digunakan sama dengan contoh yang sebelumnya yaitu sebuah operasi aritmetika dasar. Sebuah list digunakan untuk menyimpan hasil penjumlahan, pengurangan, perkalian, dan pembagian. Mengenai bagaimana deklarasi, menambah dan mengurangi elemen pada list bisa dibaca di <a href="http://studiawan.com/beberapa-tipe-data-di-python/" target="_blank">tulisan </a>sebelumnya.</p>
<p>Berikut ini adalah fungsi untuk menghitung operasi dasar aritmetika pada Python</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">def</span> operasi<span style="color: black;">&#40;</span>operand1, operand2<span style="color: black;">&#41;</span>:
	<span style="color: #808080; font-style: italic;"># operasi aritmetika dasar</span>
	hasil_jumlah = operand1 + operand2
	hasil_kurang = operand1 - operand2
	hasil_kali = <span style="color: #008000;">float</span><span style="color: black;">&#40;</span>operand1<span style="color: black;">&#41;</span> <span style="color: #66cc66;">*</span> <span style="color: #008000;">float</span><span style="color: black;">&#40;</span>operand2<span style="color: black;">&#41;</span>
	hasil_bagi = <span style="color: #008000;">float</span><span style="color: black;">&#40;</span>operand1<span style="color: black;">&#41;</span> / <span style="color: #008000;">float</span><span style="color: black;">&#40;</span>operand2<span style="color: black;">&#41;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;"># menyusun return value</span>
	hasil = <span style="color: black;">&#91;</span><span style="color: black;">&#93;</span>
	hasil.<span style="color: black;">append</span><span style="color: black;">&#40;</span>hasil_jumlah<span style="color: black;">&#41;</span>
	hasil.<span style="color: black;">append</span><span style="color: black;">&#40;</span>hasil_kurang<span style="color: black;">&#41;</span>
	hasil.<span style="color: black;">append</span><span style="color: black;">&#40;</span>hasil_kali<span style="color: black;">&#41;</span>
	hasil.<span style="color: black;">append</span><span style="color: black;">&#40;</span>hasil_bagi<span style="color: black;">&#41;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;"># memberikan return value</span>
	<span style="color: #ff7700;font-weight:bold;">return</span> hasil</pre></div></div>

<p>Kemudian, fungsi ini dipanggil dan <em>return value</em>-nya disimpan dalam sebuah variabel list juga. Kali ini variabel list boleh tidak dideklarasikan karena langsung mendapatkan nilai dari <em>return value</em> fungsi operasi. Sebuah list bisa diakses dengan cara seperti ini: nama_variabel[indeks]. Python masih menganut <em>zero-based index</em>, jadi indeks suatu tipe data secara <em>default </em>masih dimulai dari nol.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;"># pemanggilan fungsi</span>
nilai = operasi<span style="color: black;">&#40;</span><span style="color: #ff4500;">2</span>, <span style="color: #ff4500;">3</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># mencetak hasil operasi</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Hasil penjumlahan:&quot;</span>, nilai<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Hasil pengurangan:&quot;</span>, nilai<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Hasil perkalian  :&quot;</span>, nilai<span style="color: black;">&#91;</span><span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Hasil pembagian  :&quot;</span>, nilai<span style="color: black;">&#91;</span><span style="color: #ff4500;">3</span><span style="color: black;">&#93;</span></pre></div></div>

<p>Sehingga, secara keseluruhan fungsinya akan terlihat seperti di bawah ini.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">def</span> operasi<span style="color: black;">&#40;</span>operand1, operand2<span style="color: black;">&#41;</span>:
	<span style="color: #808080; font-style: italic;"># operasi aritmetika dasar</span>
	hasil_jumlah = operand1 + operand2
	hasil_kurang = operand1 - operand2
	hasil_kali = <span style="color: #008000;">float</span><span style="color: black;">&#40;</span>operand1<span style="color: black;">&#41;</span> <span style="color: #66cc66;">*</span> <span style="color: #008000;">float</span><span style="color: black;">&#40;</span>operand2<span style="color: black;">&#41;</span>
	hasil_bagi = <span style="color: #008000;">float</span><span style="color: black;">&#40;</span>operand1<span style="color: black;">&#41;</span> / <span style="color: #008000;">float</span><span style="color: black;">&#40;</span>operand2<span style="color: black;">&#41;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;"># menyusun return value</span>
	hasil = <span style="color: black;">&#91;</span><span style="color: black;">&#93;</span>
	hasil.<span style="color: black;">append</span><span style="color: black;">&#40;</span>hasil_jumlah<span style="color: black;">&#41;</span>
	hasil.<span style="color: black;">append</span><span style="color: black;">&#40;</span>hasil_kurang<span style="color: black;">&#41;</span>
	hasil.<span style="color: black;">append</span><span style="color: black;">&#40;</span>hasil_kali<span style="color: black;">&#41;</span>
	hasil.<span style="color: black;">append</span><span style="color: black;">&#40;</span>hasil_bagi<span style="color: black;">&#41;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;"># memberikan return value</span>
	<span style="color: #ff7700;font-weight:bold;">return</span> hasil
&nbsp;
<span style="color: #808080; font-style: italic;"># pemanggilan fungsi</span>
nilai = operasi<span style="color: black;">&#40;</span><span style="color: #ff4500;">2</span>, <span style="color: #ff4500;">3</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># mencetak hasil operasi</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Hasil penjumlahan:&quot;</span>, nilai<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Hasil pengurangan:&quot;</span>, nilai<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Hasil perkalian  :&quot;</span>, nilai<span style="color: black;">&#91;</span><span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Hasil pembagian  :&quot;</span>, nilai<span style="color: black;">&#91;</span><span style="color: #ff4500;">3</span><span style="color: black;">&#93;</span></pre></div></div>

<p>Tipe data fungsi bisa saja berupa tuple, dictionary, atau tipe data yang lain. Jangan lupa perhatikan <strong>indentasi </strong>dari bagian program yang berupa fungsi dan bukan fungsi. Silakan langsung dicoba saja <img src='http://studiawan.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> . Jika dijalankan, hasilnya adalah sebagai berikut.</p>
<pre>Hasil penjumlahan: 5
Hasil pengurangan: -1
Hasil perkalian  : 6.0
Hasil pembagian  : 0.666666666667</pre>
]]></content:encoded>
			<wfw:commentRss>http://studiawan.com/fungsi-dengan-return-value-di-python/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Membuat Fungsi di Python</title>
		<link>http://studiawan.com/membuat-fungsi-di-python/</link>
		<comments>http://studiawan.com/membuat-fungsi-di-python/#comments</comments>
		<pubDate>Sun, 18 Dec 2011 09:38:33 +0000</pubDate>
		<dc:creator>stu</dc:creator>
				<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://studiawan.com/?p=309</guid>
		<description><![CDATA[Setelah mencoba Python di interactive mode, kali ini kita akan mencoba di scripting mode. Teknik yang akan digunakan adalah fungsi. Bagaimana membuat fungsi di Python? Berikut cara sederhananya. Ingat, tidak perlu dibuat susah, buat hal yang kompleks menjadi sederhana saja&#8230;  <a href="http://studiawan.com/membuat-fungsi-di-python/">continue reading</a> &#187;]]></description>
			<content:encoded><![CDATA[<p>Setelah mencoba Python di <em>interactive mode</em>, kali ini kita akan mencoba di <em>scripting mode</em>. Teknik yang akan digunakan adalah fungsi. Bagaimana membuat fungsi di Python? Berikut cara sederhananya. Ingat, tidak perlu dibuat susah, buat hal yang kompleks menjadi sederhana saja <img src='http://studiawan.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> .<span id="more-309"></span></p>
<p>Sebenarnya di Python program bisa saja ditulis secara sekuensial. Namun, kita juga bisa membuatnya menjadi modul-modul kecil dalam bentuk fungsi. Mari kita coba bandingkan satu per satu.</p>
<p>Kita akan membuat sebuah program sederhana operasi aritmetika dasar: penjumlahan, pengurangan, perkalian, dan pembagian dengan dua operand (bilangan yang dioperasikan). Pertama kita akan mencoba menulis program secara sekuensial pada <em>scripting mode</em>. Komentar di Python diawali dengan tanda &#8220;#&#8221;.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;"># deklarasi variabel operand</span>
operand1 = <span style="color: #ff4500;">2</span>
operand2 = <span style="color: #ff4500;">3</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># operasi aritmetika dasar</span>
hasil_jumlah = operand1 + operand2
hasil_kurang = operand1 - operand2
hasil_kali = operand1 <span style="color: #66cc66;">*</span> operand2
hasil_bagi = operand1 / operand2
&nbsp;
<span style="color: #808080; font-style: italic;"># menampilkan hasil operasi</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Hasil penjumlahan:&quot;</span>, hasil_jumlah
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Hasil pengurangan:&quot;</span>, hasil_kurang
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Hasil perkalian  :&quot;</span>, hasil_kali
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Hasil pembagian  :&quot;</span>, hasil_bagi</pre></div></div>

<p>Jika Anda menjalankan script ini di Linux, tambahkan satu baris seperti di bawah ini di awal <em>script</em>. Maksud dari perintah ini adalah <em>environment </em>yang digunakan untuk menjalankan atau mengeksekusi <em>script </em>ini adalah Python. Lihat <a href="http://stackoverflow.com/questions/2429511/why-do-people-write-usr-bin-env-python-on-the-first-line-of-a-python-script" target="_blank">ini</a> atau <a href="http://stackoverflow.com/questions/1352922/why-is-usr-bin-env-python-supposedly-more-correct-than-just-usr-bin-pyt" target="_blank">ini</a> untuk keterangan lebih lengkap.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span></pre></div></div>

<p>Jalankan program pendek tersebut. Hasilnya akan seperti ini.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">Hasil penjumlahan: <span style="color: #ff4500;">5</span>
Hasil pengurangan: -<span style="color: #ff4500;">1</span>
Hasil perkalian  : <span style="color: #ff4500;">6</span>
Hasil pembagian  : <span style="color: #ff4500;">0</span></pre></div></div>

<p>Ada satu hasil yang aneh yaitu hasil pembagian. Bukankah seharusnya hasil 2/3 adalah 0.667 &#8230; ? Python tidak bisa mengoperasikan ini karena tipe data operand1 dan operand2 adalah integer, sehingga tidak menghasilkan float. Untuk bisa menghasilkan hasil yang diinginkan, kita harus melakukan <em>casting</em> tipe data dengan cara yang cukup sederhana. Ganti baris operasi hasil bagi dengan baris sebagai berikut:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">hasil_bagi = <span style="color: #008000;">float</span><span style="color: black;">&#40;</span>operand1<span style="color: black;">&#41;</span> / <span style="color: #008000;">float</span><span style="color: black;">&#40;</span>operand2<span style="color: black;">&#41;</span></pre></div></div>

<p>Maka hasilnya sudah sesuai yang kita harapkan.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">Hasil penjumlahan: <span style="color: #ff4500;">5</span>
Hasil pengurangan: -<span style="color: #ff4500;">1</span>
Hasil perkalian  : <span style="color: #ff4500;">6</span>
Hasil pembagian  : <span style="color: #ff4500;">0.666666666667</span></pre></div></div>

<p>Lalu masalahnya adalah bagaimana jika kita harus menjalankan operasi ini sebanyak 5 kali, 10 kali, atau bahkan ratusan kali? Maka kita sebaiknya membuat fungsi. Bagaimana membuat fungsi? Secara umum, untuk membuat fungsi di Python adalah seperti ini.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">def</span> nama_fungsi<span style="color: black;">&#40;</span>parameter1, parameter2, ...<span style="color: black;">&#41;</span>:
	operasi</pre></div></div>

<p>Jangan lupa menyisipkan tanda &#8220;:&#8221; di akhir nama fungsi, dan baris program dalam operasi <strong>harus diindentasi</strong> sebanyak satu tab. Python adalah program yang sangat <em>strict </em>dalam hal indentasi. Bagian subprogram harus diindentasi <em>increment </em>(masuk ke dalam). Sedangkan untuk kembali ke subprogram sebelumnya, harus diindentasi sebaliknya (<em>decrement</em>). Kita akan mengenal ini sambil berjalan ngoprek Python.</p>
<p>Sekarang kita akan membuat fungsi untuk mengoperasikan aritmetika dasar yang sudah dicoba sebelumnya.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">def</span> operasi<span style="color: black;">&#40;</span>operand1, operand2<span style="color: black;">&#41;</span>:
	<span style="color: #808080; font-style: italic;"># operasi aritmetika dasar</span>
	hasil_jumlah = operand1 + operand2
	hasil_kurang = operand1 - operand2
	hasil_kali = <span style="color: #008000;">float</span><span style="color: black;">&#40;</span>operand1<span style="color: black;">&#41;</span> <span style="color: #66cc66;">*</span> <span style="color: #008000;">float</span><span style="color: black;">&#40;</span>operand2<span style="color: black;">&#41;</span>
	hasil_bagi = <span style="color: #008000;">float</span><span style="color: black;">&#40;</span>operand1<span style="color: black;">&#41;</span> / <span style="color: #008000;">float</span><span style="color: black;">&#40;</span>operand2<span style="color: black;">&#41;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;"># menampilkan hasil operasi</span>
	<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Hasil penjumlahan:&quot;</span>, hasil_jumlah
	<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Hasil pengurangan:&quot;</span>, hasil_kurang
	<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Hasil perkalian  :&quot;</span>, hasil_kali
	<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Hasil pembagian  :&quot;</span>, hasil_bagi</pre></div></div>

<p>Fungsi ini bisa dipanggil dengan cara sebagai berikut</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">operasi<span style="color: black;">&#40;</span><span style="color: #ff4500;">2</span>, <span style="color: #ff4500;">3</span><span style="color: black;">&#41;</span></pre></div></div>

<p>Sehingga, program secara keseluruhan bisa disimak seperti di bawah ini</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">def</span> operasi<span style="color: black;">&#40;</span>operand1, operand2<span style="color: black;">&#41;</span>:
	<span style="color: #808080; font-style: italic;"># operasi aritmetika dasar</span>
	hasil_jumlah = operand1 + operand2
	hasil_kurang = operand1 - operand2
	hasil_kali = <span style="color: #008000;">float</span><span style="color: black;">&#40;</span>operand1<span style="color: black;">&#41;</span> <span style="color: #66cc66;">*</span> <span style="color: #008000;">float</span><span style="color: black;">&#40;</span>operand2<span style="color: black;">&#41;</span>
	hasil_bagi = <span style="color: #008000;">float</span><span style="color: black;">&#40;</span>operand1<span style="color: black;">&#41;</span> / <span style="color: #008000;">float</span><span style="color: black;">&#40;</span>operand2<span style="color: black;">&#41;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;"># menampilkan hasil operasi</span>
	<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Hasil penjumlahan:&quot;</span>, hasil_jumlah
	<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Hasil pengurangan:&quot;</span>, hasil_kurang
	<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Hasil perkalian  :&quot;</span>, hasil_kali
	<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Hasil pembagian  :&quot;</span>, hasil_bagi
&nbsp;
operasi<span style="color: black;">&#40;</span><span style="color: #ff4500;">2</span>, <span style="color: #ff4500;">3</span><span style="color: black;">&#41;</span></pre></div></div>

<p>Perhatikan bahwa penulisan pemanggilan fungsi mengalami <em>decrease indent</em>. Selamat mencoba!</p>
]]></content:encoded>
			<wfw:commentRss>http://studiawan.com/membuat-fungsi-di-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Berkenalan dengan Pemrograman Scratch</title>
		<link>http://studiawan.com/berkenalan-dengan-pemrograman-scratch/</link>
		<comments>http://studiawan.com/berkenalan-dengan-pemrograman-scratch/#comments</comments>
		<pubDate>Sat, 17 Dec 2011 08:47:25 +0000</pubDate>
		<dc:creator>stu</dc:creator>
				<category><![CDATA[Perjuangan]]></category>

		<guid isPermaLink="false">http://studiawan.com/?p=306</guid>
		<description><![CDATA[Kali ini kita akan belajar bahasa pemrograman Scratch. Jangan khawatir, ini mudah kok . Silakan unduh artikel pertamanya di sini.]]></description>
			<content:encoded><![CDATA[<p>Kali ini kita akan belajar bahasa pemrograman Scratch. Jangan khawatir, ini mudah kok <img src='http://studiawan.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> . Silakan unduh artikel pertamanya di <a href="http://studiawan.com/wp-content/uploads/2011/12/scratch.pdf" target="_blank">sini</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://studiawan.com/berkenalan-dengan-pemrograman-scratch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

