Monday, 24 August 2015

Menginstall Raspberry Pi Operating System

Untuk Menginstall operating system pada RPi (di SD card), kita masih menggunakan sebuah komputer PC atau Laptop.  SD card yang direkomendasikan paling tidak adalah 8GB class 4 untuk menginstall dengan NOOBS, dan bila dengan image cukup dengan 4 GB (OpenElec dan Arch)

Cara Install:
  1. Download image Operating Systemnya di sini, Rekomendasi dari produsen adalah NOOBS, tapi kita pake RASPBIAN aja. penggunaan NOOBS untuk mempermudah instalasi RASBIAN juga.  Dan dilink tersebut ada juga operating system yang lain (pihak ketiga).
  2. Menuliskan image ke SD Card. Pengguna Windows , Linux, Mac.
Pengguna window:
  1. Masukan SD card ke card reader. Pastikan drive card reader terbaca oleh PC.
  2. Gunakan Win32DiskImager (Bila belum terinstall, download disini). 
  3. Lalu jalankan file .exe nya. Bila diperlukan, kita menjalankannya sebagai administrator (klik kanan pada file dan 'Run as administrator').
  4. Pilih image (File NOOBS atau RASBIAN) yang telah didownload (Lihat gambar dibawah no.1). Dan Drive card reader pada no.2. 
  5. Klik Write, tunggu sampai selesai. 
  6. Exit, dan keluarkan SD card dari card reader.
  7. Masukan SD card ke RPi.

Tunggu belum selesai.

Untuk pertama kali boot (Dengan NOOBS):

  1. Pastikan kabel-kabel keyboard, mouse dan monitor telah terpasang dengan baik.
  2. Pasang power usb ke RPi
  3. Rpi akan mem-boot dan tampilan akan keluar baris tulisan, setelah itu, centang OS yang akan diinstall, rekomendasi RASPBIAN dan klik install. 
  4. Installasi sedang dilakukan. 
  5. Setelah proses instalasi selesai maka, kita bisa mengkonfigurasi, ketika raspi-config dikeluarkan. 
  6. Sekarang kita bisa mengkonfigurasi waktu, region, user, camera. 
  7. Bila dirasa telah cukup tinggal klik Finish.
  8. Default User adalah 'pi' dan password adalah 'raspberry'. Ketika kita mengetikan password, kita tidak melihat adanya tulisan pada monitor, ini adalah salah satu keamanan dari Linux.
  9. Untuk masuk kedalam graphical user interface kita tinggal menuliskan 'startx'.


Sunday, 23 August 2015

Tentang Raspberry Pi

Raspberry pi (RPi) adalah sebuah komputer yang seukuran kartu ATM, tidak semua bisa dilakukan oleh raspberry pi bila kita bandingkan dengan sebuah komputer PC sekarang ini.

Tapi yang menarik dari sebuah raspberry pi adalah, kira bisa mempergunakannya untuk belajar sebuah program, atau bila kita telah mengetahui program maka kita bisa membuat projek elektronik, dengan harga yang ekonomis (bila dibandingkan dengan komputer pc sekarang ini).

Kita akan menggunakan Raspberry Pi dengan menggunakan Python. Python bukanlah satu-satunya program yang bisa digunakan dengan raspberry pi, tetapi python adalah awal yang baik untuk belajar program. Raspberry pi bisa menggunakan program Scratch, C, Basic, ataupun Assembler. Biasanya programer memiliki multilingual program, untuk mendapatkan kelebihan dan menutup kekurangan dari sebuah program, dan python juga sama seperti program-program lainnya ada kekurangan dan kelebihan sendiri, dengan penderitaan yang berbeda-beda. 

Python yang digunakan adalah yang versi 3.x dan saya menggunakan versi 3.4.3. Python 2.x masih digunakan karena library-nya lebih banyak dari versi 3.x, tapi sedikit-sedikit semua library akan ada untuk versi 3.x nya.

Dan saat ini raspberry pi telah tersedia dengan "RASPBERRY PI 2 Model B" yang merupakan generasi kedua dari raspberry pi, yang dikeluarkan sekitar Febuari 2015. 

Bila dibandingkan dengan generasi sebelumnya Raspberry pi 2 memiliki: 

  1. RPi2 prosessor 900MHz quar-core, yang diperkirakan 6X lebih cepat dari RPi generasi sebelumnya yang hanya memiliki 700 MHz single core. 
  2. RPi2 1GB dengan 450 MHz RAM dan RPi 512MB dengan 400 MHz.

FeatureRaspberry PiRaspberry Pi 2
Model AModel BModel A+Model B+Model B
CPUSingle-core 700Mhz BCM2835Quad-core 900Mhz BCM2836
RAM256512*2565121024
LANNoYesNoYesYes
GPIO Port2640
USB Ports12144
USB Hot-PlugNoYes
StorageSDmicroSD
CVBS VideoRCA Connector4-pole 3.5mm Jack
3.3v PowerLinear RegulatorSwitching Converter



Penampakan RPi2

Display menggunakan HDMI yang juga dapat menggunakan sebuah TV HDMI, yang beresolusin 1080p dan audio dapat didengarkan pada TV. Masih bisa juga menggunakan monitor DVI atau colokan monitor biasa, tapi harus menggukan konverter, dan kalau bisa menggunakan konverter yang ada audionya. Tapi soal audio tidak terlalu masalah, masih bisa menggunakan yang ada pada RPi2 boardnya.



Tinggal pilih aja mana yang cocok dengan displaynya.

SD Card adalah untuk menyimpan data, seperti layaknya sebuah harddisk pada PC. 

USB 2.0 port digunakan seperti pada PC, untuk keyboard, mouse, dan lain-lain. Untuk "dan lain-lain" harus ada drivernya.

Dengan RPi kita hanya memerlukan:

  1. RPi nya sendiri,
  2. Keyboard
  3. Mouse
  4. Display (bisa menggunakan TV HDMI, ataupun monitor.)
  5. SD card 8Gb cukup
  6. USB Power supply. Bisa menggunakan charger handphone, setidaknya yang 1A.

Thursday, 13 August 2015

32. Tanggal dan Waktu

Pada python dapat menangani tanggal dan waktu dengan beberapa cara. Penanggalan dan waktu pada format aslinya adalah sebuah perhitungan dari tanggal 1 (satu) Januari 1970. Pada tanggal tersebut merupakan waktu awal (jam 0, menit 0,detik 0 atau 0:00,00)yang disebut epoch. Karena waktu awalnya adalah 01 Januari 1970, maka python tidak bisa membuat tanggal sebelum tanggal tersebut, dan akan berakhir pada tahun 2038 (Pada kebanyakan waktu Unix), tetapi bila menggunakan C maka waktu akan berakhir tergantung pada C librarynya.

Python masih bergantung pada platform C library, sehingga tidak memiliki masalah dengan Y2K (Year 2000). Sehingga waktu yang diproses oleh python merupakan detik dari tahun 1970.
  1. >>> import time
  2. >>> aa=time.time()
  3. >>> aa
  4. 1439365167.0752
  5. >>> 


Untuk mendapatkan waktu variable aa kita bisa gunakan perintah time.localtime(aa).
  1. >>> waktulokal=time.localtime(aa)
  2. >>> print(waktulokal)
  3. time.struct_time(tm_year=2015, tm_mon=8, tm_mday=12, tm_hour=14, tm_min=39, tm_sec=27, tm_wday=2, tm_yday=224, tm_isdst=0)
  4. >>> 


waktu yang ditunjukan pada variable waktulokal bukanlah waktu saat ini, tetapi waktu ketika variable aa dibuat. Bila ingin realtime kita pergunakan:
  1. >>> print(time.localtime(time.time()))
  2. time.struct_time(tm_year=2015, tm_mon=8, tm_mday=12, tm_hour=14, tm_min=52, tm_sec=55, tm_wday=2, tm_yday=224, tm_isdst=0)
  3. >>> 


Format waktu yang ditunjukan diatas, bukan format yang kita lihat sehari-hari. Sekarang kita buat format yang biasa kita lihat sehari-hari:
  1. >>> formatbiasa=time.asctime(time.localtime())
  2. >>> print(formatbiasa)
  3. Wed Aug 12 14:58:52 2015
  4. >>> 


Walaupun tidak sama dengan format indonesia kita masi bisa lihat yang mana tahun, bulan, hari, dan jamnya. Bila ingin kostum format, kita gunakan:
  1. >>> time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.localtime())
  2. 'Wed, 12 Aug 2015 08:08:13 +0000'
  3. >>> 


%a Singkatan nama hari
%A Nama hari
%b Singkatan nama bulan
%B Nama bulan
%c Format lokal
%d Tanggal 01 sampai 31
%H Jam, 24 jam, dari 00 - 24
%I Jam, 12 jam, dari 01 - 12
%j Tanggal dalam tahun, 001 - 366
%m Bulan, 1 - 12
%M Menit, 00 - 59
%p AM - PM *1
%S Detik, 00 - 59 *2
%U Minggu dalam tahun, 00 – 53, Minggu 0 adalah hari minggu pertama *3
%w Minggu, 0 (minggu) – 6 (sabtu)
%W '= %U *3
%x Tanggal lokal
%X Waktu lokal
%y Tahun, 00 - 99
%Y Tahun
%z Selisih waktu dari UTC/GMT -23:59 - +23:59
%Z Nama zona waktu
%% Karakter '%'


keterangan *:



  1. Ketika digunakan dengan strptime () fungsi,% p direktif hanya mempengaruhi bidang output jam, jika % I direktif digunakan untuk mengurai jam.
  2. Kisaran 0-61; nilai 60 berlaku di timestamp mewakili lompatan detik dan nilai 61 didukung untuk alasan historis.
  3. Ketika digunakan dengan strptime () fungsi,% U dan W% hanya digunakan dalam perhitungan ketika hari minggu dan tahun yang ditentukan.
Pada modul time juga terdapat:


time.altzone :
Offset zona DST (Daylight saving time) lokal, dalam detik positip di barat dari UTC,dan negatif jika zona waktu DST lokal timur dari UTC (seperti di Eropa Barat, termasuk Inggris).
Digunakan untuk daylight yang tidak nol (0).
time.asctime([t]):
Mengkonversi tupel atau struct_time mewakili waktu yang dikembalikan oleh gmtime() atau localtime() menjadi string: 'Sun Jun 2023: 21: 05 1993'.
Jika t tidak disediakan, waktu akan dikembalikan sebagai localtime().
Lokal tidak digunakan oleh asctime ().
time.clock():
Pada Unix, waktu prosesor sekarang sebagai angka floating point dinyatakan dalam detik. Ketepatannya sangat tergantung pada "waktu prosesor" pada  fungsi C dengan nama yang sama.
Pada Windows, fungsi ini mengembalikan detik jam berlalu sejak panggilan pertama melalui fungsi ini, yang merupakan angka floating, berdasarkan fungsi Win32 QueryPerformanceCounter().
Resolusi biasanya lebih baik dari satu mikrodetik.
Tidak ada update sejak versi 3.3.
Perilaku fungsi ini tergantung pada platform: Gunakan perf_counter() atau process_time() dan bukan tergantung pada kebutuhan anda, untuk memiliki perilaku yang didefinisikan dengan baik. 
time.clock_getres(clk_id) :
Mengkembalikan resolusi (ketepatan) dari jam clk_id ditentukan. Tersedia untuk: Unix. Baru di versi 3.3.
time.clock_gettime(clk_id)
Mengembalikan saat jam clk_id ditentukan. Ketersediaan: Unix. Baru di versi 3.3.
time.clock_settime(clk_id, time)
Mengatur waktu dari jam clk_id ditentukan. Ketersediaan: Unix. Baru di versi 3.3.
time.CLOCK_HIGHRES
Pada Solaris OS memiliki timer CLOCK_HIGHRES yang mencoba untuk menggunakan sumber hardware optimal, dan dapat memberikan mendekati nanodetik resolusi. CLOCK_HIGHRES adalah tidak dapat diatur.
Ketersediaan: Solaris. Baru di versi 3.3.
time.CLOCK_MONOTONIC
Jam yang tidak bisa diatur dan merupakan waktu monoton karena beberapa titik awal yang tidak ditentukan.
Ketersediaan: Unix.
Baru di versi 3.3.
time.CLOCK_MONOTONIC_RAW
Mirip dengan CLOCK_MONOTONIC, tetapi menyediakan akses ke waktu berbasis hardware yang tidak melakukan penyesuaian NTP.
Ketersediaan: Linux 2.6.28 atau yang lebih baru.
Baru di versi 3.3.
time.CLOCK_PROCESS_CPUTIME_ID
Resolusi tinggi per-proses waktu dari CPU.
Ketersediaan: Unix. Baru di versi 3.3.
time.CLOCK_REALTIME
Seluruh sistem real-time clock. Pengaturan jam ini membutuhkan privileges yang sesuai.
Ketersediaan: Unix. Baru di versi 3.3.
time.CLOCK_THREAD_CPUTIME_ID
Thread khusus waktu jam CPU.
Ketersediaan: Unix. Baru di versi 3.3.
time.ctime([secs])
Mengkonversi waktu dinyatakan dalam detik sejak epoch ke string yang mewaili waktu setempat. Jika detik ini tidak disediakan atau None, waktu saat ini dikembalikan oleh time(). ctime(detik) setara dengan asctime(localtime (detik)). Lokal tidak digunakan oleh ctime().
time.daylight
Jika DST digunakan
time.get_clock_info(name)
Mendapatkan informasi pada jam yang ditentukan sebagai objek namespace.
Nama jam didukung dan fungsi yang sesuai, untuk membaca nilai mereka adalah: 'clock':time.clock(), 'monotonic': time.monotonic(), 'perf_counter': time.perf_counter(), 'process_time': time.process_time(), 'waktu': time.time().
Hasilnya memiliki atribut sebagai berikut: adjustable: True jika jam dapat diubah secara otomatis (misalnya dengan daemon NTP) atau secara manual oleh administrator sistem, False jika tidak, pelaksanaan: Nama fungsi C yang mendasari digunakan untuk mendapatkan nilai jam monotonic : True jika jam tidak bisa mundur, False jika resolusi: resolusi jam di detik (float).
Baru di versi 3.3.
time.gmtime([secs])
Konversi waktu dinyatakan dalam detik sejak epoch untuk struct_time di UTC di mana dst selalu nol. Jika detik ini tidak disediakan atau None, waktu saat ini akan dikembalikan oleh time(). Sepersekian detik diabaikan.
time.localtime([secs])
Seperti gmtime(), tetapi mengkonversi ke waktu lokal. Jika detik ini tidak disediakan atau None, waktu saat ini sebagai dikembalikan oleh time(). dst diset dengan 1. Sebab DST berlaku untuk waktu yang diberikan.
time.mktime(t)
Ini adalah fungsi kebalikan dari localtime(). Argumennya adalah struct_time atau 9-tuple (karena dst diperlukan; menggunakan -1 sebagai bendera dst jika tidak diketahui) yang menyatakan waktu lokal, bukan UTC.
Ia mengembalikan floating point, untuk kompatibilitas dengan time(). Jika nilai masukan tidak dapat direpresentasikan sebagai waktu yang valid, baik OverflowError atau ValueError akan nyalakan (yang tergantung pada apakah nilai yang tidak valid ditangkap oleh Python atau C libarary). Tanggal lebih awal yang dapat menghasilkan suatu waktu tergantung platform.

time.monotonic()
Mengembalikan nilai (dalam detik pecahan) dari jam monotonic, yaitu sebuah jam yang tidak bisa mundur ke belakang. Jam tidak terpengaruh oleh pembaruan sistem jam. Titik referensi dari nilai yang dikembalikan tidak terdefinisi, sehingga hanya perbedaan antara hasil panggilan berturut-turut adalah valid.
Pada versi Windows yang lebih tua dari Vista, monotonic() mendeteksi GetTickCount() bilangan bulat overflow (32 bit, roll-over setelah 49,7 hari). Hal ini meningkatkan epoch intern (referensi waktu) oleh 232 setiap kali overflow terdeteksi. Epoch disimpan di negara-proses lokal dan nilai ofmonotonic() mungkin berbeda dalam dua Python proses yang berjalan selama lebih dari 49 hari.
Pada versi yang lebih baru dari Windows dan di sistem operasi lain, monotonic() adalah sistem.
Ketersediaan: Windows, Mac OS X, Linux, FreeBSD, OpenBSD, Solaris. Baru di versi 3.3.
time.perf_counter()
Mengembalikan nilai (dalam detik pecahan) dari counter kinerja, yaitu sebuah jam dengan resolusi tertinggi yang tersedia untuk mengukur durasi singkat. Ini termasuk waktu berlalu selama sleep() dan seluruh sistem.
Titik referensi dari nilai yang dikembalikan tidak terdefinisi, sehingga hanya perbedaan antara hasil panggilan berturut-turut adalah valid.
Baru di versi 3.3.
time.process_time()
Mengembalikan nilai (dalam detik pecahan) dari jumlah sistem dan pengguna CPU waktu proses saat ini. Ini tidak termasuk waktu berlalu selama sleep(). Ini adalah proses-lebar definisi. Titik referensi dari nilai yang dikembalikan tidak terdefinisi, sehingga hanya perbedaan antara hasil panggilan berturut-turut adalah valid.
Baru di versi 3.3.
time.sleep(secs)
Menangguhkan eksekusi thread dalam satuan detik. Argumen memungkinkan sejumlah floating point untuk menunjukkan waktu tidur yang lebih tepat. Waktu suspensi yang sebenarnya, kurang dari waktu yang minta karena sinyal tertangkap akan mengakhiri sleep() diikuti eksekusi penangkapan sinyal rutin. Juga, saat suspensi dapat lebih lama dari yang waktu diminta dikarenakan banyaknya aktivitas pada sistem.
time.strftime(format[, t])
Mengkonversi tupel atau struct_time dan dikembalikan oleh gmtime() atau localtime() menjadi string yang ditentukan oleh format argumen. Jika tis tidak disediakan, waktu saat ini sebagai dikembalikan oleh localtime(). Format harus string.
ValueError dinyalakan jika ada celah di t berada di luar jangkauan yang diperbolehkan.

time.strptime(string[, format])
mengurai sebuah string yang mewakili waktu sesuai dengan format. mengembalikan nilai dengan struct_time oleh gmtime() atau localtime().
Parameter format menggunakan teknik yang sama dengan strftime(); defaultnya "% a% b% d% H:% M:% S% Y" yang sama dengan format dikembalikan oleh ctime(). Jika string yang tidak dapat diurai menurut format, atau jika memiliki kelebihan data setelah diurai.
ValueError dinaikkan. Nilai-nilai default digunakan untuk mengisi data hilang ketika nilai-nilai yang lebih akurat tidak dapat disimpulkan adalah (1900, 1, 1, 0, 0, 0, 0, 1, -1). Keduanya (string dan format) harus string.


contoh:
time.altzone :
  1. >>>  a=time.altzone #waktu bagian menghasilkan detik
  2. >>>  a
  3. -28800
  4. >>> print(a/3600)  # a/3600 detik, menjadi satuan jam
  5. -8.0
  6. >>> 

time.asctime([t]):

  1. >>> b=time.localtime()
  2. >>> print(b)
  3. time.struct_time(tm_year=2015, tm_mon=8, tm_mday=15, tm_hour=16, tm_min=57, tm_sec=46, tm_wday=5, tm_yday=227, tm_isdst=0)
  4. >>> print(time.asctime(b))
  5. Sat Aug 15 16:57:46 2015
  6. >>> 


time.clock():
  1. >>> import time
  2. >>> print(time.clock())
  3. 2.108956421578983e-06
  4. >>> print(time.clock())
  5. 13.797055475044191
  6. >>> print(time.clock())
  7. 14.838135837180129
  8. >>> a=time.clock()
  9. >>> print(time.clock()-a)
  10. 14.869220908542275
  11. >>> 
time.ctime([secs]):
  1. >>> time.ctime(785415)
  2. 'Sat Jan 10 09:10:15 1970'
  3. >>> time.ctime(100000000)
  4. 'Sat Mar  3 16:46:40 1973'
  5. >>> aa=time.time()
  6. >>> aa
  7. 1439706269.77
  8. >>> time.ctime(aa)
  9. 'Sun Aug 16 13:24:29 2015'
  10. >>> 







Monday, 10 August 2015

31. Membuat Konverter Farenheit ke Celcius (Bagian 2)


Mungkin kita pernah menggunakan dos untuk sesuatu yang rasanya baru pas digunakan, atau ada yang salah dengan penggunaan user friendly nya window, lalu kita menggunakan dos sebagai penggantinya. 
Perintah basic dos adalah 'dir' atau 'dir/w', atau 'cd c:\', dan 'copy c:\folder\file1.exe d:' misalnya. Kita bisa membuatnya dengan python (pake program yang lain juga bisa sih).

kita buat sebuah file, sebagai contoh program konverter Farenheit ke Celcius, di drive c: (jangan masuk ke folder apa-apa) atau di drive d:, untuk memudahkan kita saat menjalankan programnya.
  1. import sys

  2. def konCel(num):
  3.      vFlo=float(num)
  4.      Far=(vFlo*9.0/5.0)+32
  5.      print('temperature =',Far,'°F')

  6. def konFar(num):
  7.      vFlo=float(num)
  8.      Celcius=(vFlo-32)*5.0/9.0
  9.      print('temperature =',Celcius,'°C')

  10. def vError():
  11.      print('systax konverter [parameter] [nilai]')
  12.      print('parameter cf untuk konversi dari celsius ke farenheit')
  13.      print('          fc untuk konversi dari farenheit ke celsius')

  14. aa=[]
  15. nilaiFloat=False
  16. nilaiInt=False
  17. for x in sys.argv:
  18.      aa.append(x)

  19. if len(aa)<= 2:
  20.      vError()
  21. elif aa[1] == 'cf':
  22.      try:
  23.           float(aa[2])
  24.           nilaiFloat=True
  25.      except ValueError as err:
  26.           print ('float gagal')

  27.      if not nilaiFloat:
  28.           try:
  29.                int(aa[2])
  30.                nilaiInt=True
  31.           except ValueError as err:
  32.                print ('int gagal')

  33.      if nilaiFloat or nilaiInt :
  34.           konCel(float(aa[2]))
  35.      else:
  36.           print('nilai \'',aa[2],'\' bukan integer atau float')

  37. elif aa[1]== 'fc':
  38.      try:
  39.           float(aa[2])
  40.           nilaiFloat=True
  41.      except ValueError as err:
  42.           print ('float gagal')

  43.      if not nilaiFloat:
  44.           try:
  45.                int(aa[2])
  46.                nilaiInt=True
  47.           except ValueError as err:
  48.                print ('int gagal')

  49.      if nilaiFloat or nilaiInt :
  50.           konFar(aa[2])
  51.      else:
  52.           print('nilai \'',aa[2],'\' bukan integer atau float')
  53. else:
  54.      vError()
Save di c:\konverter.py Sekarang kita gunaakan command prompt, dan arahkan ke drive c: (dengan menggunakan perintah cd c:\), dan ketikan :
c:\> konverter fc 88


contoh diatas kita mengkonversikan dari farenheit ke celcius dengan nilai 88 derajat farenheit, yang menghasilkan 31.11 celsius

30. Membuat Konverter Farenheit ke Celcius

Untuk membuat konverter dari Farenheit ke Celcius, kita lihat dahulu rumusnya:
°C=(°F-32)*5/9
Jadi untuk Celcius ke Farenheit:
°F=(°C*9/5)+32


Jadi untuk program dari Farenheit ke Celcius:

  1. Farenheit=int(input('masukan temperatur Farenheit:'))
  2. Celcius=(Farenheit-32)*5.0/9.0
  3. print ('Temperature',Farenheit,'°F = ',Celcius,'°C')
Dan untuk konversi dari Celciuis ke Farenheit adalah:
  1. Cel=int(input('masukan temperatur Celcius:'))
  2. Far=(Cel*9.0/5.0)+32
  3. print ('Temperatur',Cel,' °C = ',Far,' °F')
Pada contoh pertama dan kedua, merupakan hal yang sama, cuma dibalik saja rumusnya, jadi penjelasannya untuk contoh yang pertama saja.

Pada baris pertama kita membuat variable yang bernama 'Farenheit' yang berisi data dari input dari keyboard, yang merupakan sebuah integer.

Pada baris kedua, kita membuat variable yang bernama 'Celcius' yang isinya adalah rumus dari konverter.

Pada baris ketiga kita mencetak hasilnya pada layar monitor.

Sekarang kita buat satu buah program dengan kedua rumus diatas, sedikit lebih komplek.
  1. def konCel(num):
  2.      vFlo=float(num)
  3.      Far=(vFlo*9.0/5.0)+32
  4.      print('temperature =',Far,'°F')

  5. def konFar(num):
  6.      vFlo=float(num)
  7.      Celcius=(vFlo-32)*5.0/9.0
  8.      print('temperature =',Celcius,'°C')
  9.      
  10. print('1.Konversi Celcius ke Farenheit')
  11. print('2.Konversi Farenheit ke Celcius')
  12. print('3.Keluar')

  13. masukan=int(input('pilih yang akan dilakukan :'))

  14. if masukan ==1:
  15.      Cel=input('masukan angka Celcius :')
  16.      konCel(Cel)

  17. if masukan==2:
  18.      Cel=input('masukan angka Farenheit :')
  19.      konFar(Cel)

  20. if masukan==3:
  21.      print('Selesai \nTerima Kasih')

Pada baris pertama sampai keempat merupakan fungsi dari konversi Celcius ke Farenheit.
Baris pertama 'def konCel(num):' def adalah statement dari fungsi, konCel adalah nama dari fungsi dan num adalah variable yang dilempar dari program utama (pada baris ke 19)

Pada baris kedua 'vFlo=float(num)', kita membuat variable float dan mengkonversikan integer num menjadi float.


Pada baris ketiga, merupakan rumusan dari konversi.



Pada baris keempat , kita mencetak hasil dari konversi



Untuk fungsi konFar juga sama seperti fungsi konCel hanya berbeda di rumusannya saja.



Baris ke-11 sampai ke-13 kita memberitahukan pengguna apa akan dikerjakan.



Baris ke-15, kita mengambil input dari user dan menkonversikan string input menjadi integer.



Baris ke-17 sampai ke-19, dan baris-21 sampai ke-23, kita memanggil fungsi.