- TKJ: BAHASA PROGRAM * * Blogger Widgets

BAHASA PROGRAM


5 Bahasa Pemrograman Wajib Untuk Hacker 

Dalam artikel 4 Cara Untuk Menjadi Hacker, bahasa pemrograman (programming language) adalah kemampuan dasar yang wajib dimiliki oleh seorang hacker atau seseorang yang ingin menjadi hacker. Bahasa pemrograman merupakan alat utama yang digunakan seorang hacker untuk menyelesaikan permasalahan. Mempelajari bahasa pemrograman akan membuat seseorang mengerti bagaimana sebenarnya suatu perangkat lunak bekerja. Ini adalah modal penting untuk memahami sistem komputer yang lebih luas seperti cara kerja sistem operasi. Lalu apa saja bahasa pemrograman yang sebaiknya dikuasai oleh seorang hacker?


Bahasa pemrograman
1. Python
Python diciptakan oleh seorang hacker bernama Guido van Rossum. Konon Python sangat banyak digunakan di berbagai produk Google sehingga mereka harus mempekerjakan Guido van Rossum secara eksklusif. Bahasa pemrogaman ini terbilang cukup mudah untuk dipelajari. Sangat cocok untuk pemula yang belum punya pengalaman dalam dunia pemrograman. Python dilengkapi dengan dokumentasi yang terstruktur dan sangat lengkap. Dukungan dari komunitasnya yang sangat besar juga akan sangat banyak membantu. Untuk mengetahui lebih jauh tentang bahasa pemrograman Python, situs resminya bisa menjadi rujukan yang sangat baik.
2. C/C++
Bahasa C adalah bahasa utama yang digunakan untuk menyusun Unix, BSD, dan Linux. Bahasa C dibuat oleh Dennis M Ritchie yang termasuk dalam daftar 6 hacker paling top di dunia. Bahasa C sangat efisien dalam pengelolaan resource komputer. Namun semua itu harus dilakukan secara manual sehingga sangat rentan menjadi bug.Bahasa ini termasuk dalam kategori low level programming language. Sangat cocok dipelajari untuk mulai masuk ke dunia pemrograman yang lebih serius. Bahasa C++ merupakan pengembangan dari bahasa C dan sudah mendukung konsep Object Oriented Programming (OOP). Menguasai salah satu atau kedua bahasa ini akan menjadi modal yang sangat penting untuk seorang calon hacker.
3. PERL
PERL yang merupakan singkatan dari Practical Extraction and Reporting Language dibuat oleh seorang hacker bernama Larry Wall.Perl termasuk ke dalam kategori bahasa pemrograman berbasisscript sama seperti Python.Perl sangat banyak digunakan untuk kepentingan praktis untuk melakukan otomasi berbagai tugas administrasi sistem operasi.Selain itu, Perl juga banyak digunakan untuk pengembangan halaman web interaktif dalam bentuk CGI. Perl dilengkapi dengan puluhan hingga ratusan pustaka yang siap digunakan untuk pengembangan program untuk berbagai keperluan. Di situs resminya, kita dapat menemukan dokumentasi dan tutorial untuk pemula yang cukup lengkap.
4. Java
Java dibuat oleh salah satu dari 6 hacker top di dunia, James Gosling. Namanya terinspirasi dari kopi Jawa yang memiliki rasa dan aroma yang sangat nikmat dan khas. Java memiliki prinsip WORA (Write Once Run Everywhere). Secara prinsip, program yang disusun dengan bahasa Java memang dapat berjalan di berbagai platform sistem operasi dan prosesor tanpa melakukan perubahan kode sedikitpun. Java adalah bahasa pertama yang menerapkan konsep OOP murni. Bahasa ini kurang cocok untuk dipelajari seorang pemula yang baru mengenal bahasa pemrograman. Informasi lebih lanjut tentang Java dapat dicek di situs resminya.
5. LISP
Lisp merupakan salah satu bahasa pemrograman tingkat tinggi tertua selain Fortran. Awalnya Lisp ditulis oleh John McCarthy, namun saat ini pengembangannya dilakukan oleh Steve Russel, Timothy P. Hart, dan Mike Levin. Dalam perkembangannya ada banyak dialek Lisp yang muncul, dua yang paling populer adalah Common Lisp dan Scheme. Saat ini bahasa Lisp sangat banyak digunakan dalam riset kecerdasan buatan (Artificial Inteligence). Mempelajari Lisp akan memberikan cita rasa yang berbeda bagi seorang pemrogram. Cara terbaik untuk memulai mempelajari Lisp adalah dengan mengutak-atik mode editor Emacs atau plugin Script-Fu di GIMP.
Sumber gambar: wikipedia.org

Struktur bahasa pemrograman C++

 



















Kemarin saya menerangkan mengenai apa itu bahasa C++ dan sedikit cerita mengenai kisah dari C++. Kali ini saya akan kembali mengulas artikel mengenai bahasa pemrograman C++ yaitu struktur atau bagian utama C++. Untuk mempermudah pemahaman, saya sertakan juga beberapa syntax program untuk dijadikan referensi. Syntax adalah tata kalimat atau sering disebut dengan kode. Syntax program di sini akan mewakili semua struktur dari bahasa pemrograman C++. Struktur bahasa C++ terdiri atas komentar, preprocessor directive, fungsi utama maupun tambahan, definisi fungsi dan deklarasi. Berikut ini syntax program beserta penjelasan masing-masing struktur yang ada dalam C++.

view plainprint?
  1. // Contoh komentar satu baris //  
  2.  
  3. #include <iostream>  
  4. using namespace std;  
  5.   
  6. void prosedur()  
  7. {  
  8.     char nama[20]="Fasesa";  
  9.     cout<<" Nama saya adalah "<<nama<<endl;  
  10. }  
  11.   
  12. int main()  
  13. {  
  14.     cout<<"Selamat datang di Blog Fasesa Notes"<<endl;  
  15.     prosedur();  
  16.     return 0;  
  17. }  
1.  Komentar
// Contoh komentar satu baris //
Bagian ini berisi mengenai keterangan pada program kita. Tidak akan dieksekusi dan tidak akan ditampilkan ketika program dijalankan alias nggak ngaruh. Tapi cukup penting, karena komentar akan mempermudah orang lain yang ingin mempelajari program yang kita melalui keterangan yang ada. Dan juga sangat membantu kita megingat ketika kita membuat program dengan statement yang panjang dan terdiri dari banyak fungsi. Komentar ditulis dengan 2 cara yaitu :
a.      Dimulai dengan tanda // untuk komentar 1 baris (contoh di atas)
b.      Diapit dengan tanda /* ... */ untuk komentar multi baris
2.  Preprocessore Directive (Pengarah Compiler)
#include
using namespace std;
Preprocessor directive ditandai dengan simbol #. Bertugas untuk mengarahkan prepocessor yang akan digunakan untuk membaca file header atau bisa dikatakan sebagai pengatur proses kompilasi. Contoh preprocessor directive : #include, #define, #if, #else, dan lainnya. Contoh file header : , , , dan lainnya.
3.  Fungsi Utama (main) dan Tambahan (function dan procedure)

a.      Fungsi Utama
int main()
{
    cout<<"Selamat datang di Blog Fasesa Notes"<
    prosedur();
    return 0;
}
Fungsi utama adalah bagian yang pertama kali akan dieksekusi, walaupun sebelum bagian dari fungsi utama ini ada fungsi tambahan. Sehingga fungsi utama pasti ada di dalam program C++. Fungsi utama ini tersusun atas kata main lalu diikuti dengan tanda (). Lalu diikuti lagi dengan definisi fungsi (bagian dalam tanda “{}”) yang berisi deklarasi dan perintah-perintah yang akan dieksekusi dalam program tersebut.
b.      Fungsi Tambahan
void prosedur()
{
    char nama[20]="Fasesa";
    cout<<" Nama saya adalah "<
}
Fungsi tambahan ini adalah fungsi yang mendukung dan merupakan pemecahan dari fungsi utama. Terdiri atas function dan procedure. Function merupakan fungsi dengan nilai balik, sedangkan procedure adalah fungsi tanpa nilai balik. Untuk fungsi tambahan nanti akan kita kupas lebih lebar lagi.
4.  Definisi fungsi
int main()
{
    cout<<"Selamat datang di Blog Fasesa Notes"<
    prosedur();
    return 0;
}
Definisi fungsi adalah bagian yang menyertai fungsi. Di dalamnya berisi syntax-syntax yang nantinya akan dieksekusi apabila fungsi tersebut dipanggil. Bagian definisi ini selalu diawali dengan tanda kurawal buka “{” dan diakhiri dengan tanda kurawal tutup “}”. Di dalam definisi fungsi ini terdapat beberapa statement. Statement harus diakhiri dengan tanda “;”. Tanda ini berfungsi untuk memberi tanda bahwa satu statement sudah selesai dan akan terjadi error jika tidak ditutupi dengan tanda “;”. Contoh : cout<<"Selamat datang di Blog Fasesa Notes"<
5.  Bagian deklarasi
void prosedur()
{
    char nama[20]="Fasesa";
    cout<<" Nama saya adalah "<
}
Bisa dikatakan sebagai statement tempat pengenalan variabel, konstanta, fungsi, array dan lainnya. Deklarasi yang sederhana da pada contoh di atas. Pada contoh di atas diperkenalkan tentang tipe data apa yang digunakan variabel nama dalam procedure tersebut. Kemudian diketahui pula nilai dari variabel nama adalah Fasesa. 

Demikianlah artikel kali ini mengenai struktur atau bagian-bagian utama dari bahasa pemrograman C++. Apabila ada salah mohon koreksi. Sekian dan terima kasih.
 
 

Rekursif

Salah satu konsep paling dasar dalam ilmu komputer dan pemrograman adalah pengunaan fungsi sebagai abstraksi untuk kode-kode yang digunakan berulang kali. Kedekatan ilmu komputer dengan matematika juga menyebabkan konsep-konsep fungsi pada matematika seringkali dijumpai. Salah satu konsep fungsi pada matematika yang ditemui pada ilmu komputer adalah fungsi rekursif: sebuah fungsi yang memanggil dirinya sendiri.
Kode berikut memperlihatkan contoh fungsi rekursif, untuk menghitung hasil kali dari dua bilangan:
def kali(a, b):
    return a if b == 1 else a + kali(a, b - 1)
Bagaimana cara kerja fungsi rekursif ini? Sederhananya, selama nilai b bukan 1, fungsi akan terus memanggil perintah a + kali(a, b - 1), yang tiap tahapnya memanggil dirinya sendiri sambil mengurangi nilai b. Mari kita coba panggil fungsi kali dan uraikan langkah pemanggilannya:
kali(2, 4)
  -> 2 + kali(2, 3)
  -> 2 + (2 + kali(2, 2))
  -> 2 + (2 + (2 + kali(2, 1)))
  -> 2 + (2 + (2 + 2))
  -> 2 + (2 + 4)
  -> 2 + 6
  -> 8
Perhatikan bahwa sebelum melakukan penambahan program melakukan pemanggilan fungsi rekursif terlebih dahulu sampai fungsi rekursif mengembalikan nilai pasti (2). Setelah menghilangkan semua pemanggilan fungsi, penambahan baru dilakukan, mulai dari nilai kembalian dari fungsi yang paling terakhir. Mari kita lihat contoh fungsi rekursif lainnya, yang digunakan untuk melakukan perhitungan faktorial:
def faktorial(n):
    return n if n == 1 else n * faktorial(n - 1)
Fungsi faktorial memiliki cara kerja yang sama dengan fungsi kali. Mari kita panggil dan lihat langkah pemanggilannya:
faktorial(5)
  -> 5 * faktorial(4)
  -> 5 * (4 * faktorial(3))
  -> 5 * (4 * (3 * faktorial(2)))
  -> 5 * (4 * (3 * (2 * faktorial(1))))
  -> 5 * (4 * (3 * (2 * 1)))
  -> 5 * (4 * (3 * 2))
  -> 5 * (4 * 6)
  -> 5 * 24
  -> 120
Dengan melihat kemiripan cara kerja serta kode dari fungsi faktorial dan kali, kita dapat melihat bagaimana fungsi rekursif memiliki dua ciri khas:
  1. Fungsi rekursif selalu memiliki kondisi yang menyatakan kapan fungsi tersebut berhenti. Kondisi ini harus dapat dibuktikan akan tercapai, karena jika tidak tercapai maka kita tidak dapat membuktikan bahwa fungsi akan berhenti, yang berarti algoritma kita tidak benar.
  2. Fungsi rekursif selalu memanggil dirinya sendiri sambil mengurangi atau memecahkan data masukan setiap panggilannya. Hal ini penting diingat, karena tujuan utama dari rekursif ialah memecahkan masalah dengan mengurangi masalah tersebut menjadi masalah-masalah kecil.
Setiap fungsi rekursif yang ada harus memenuhi kedua persyaratan di atas untuk memastikan fungsi rekursif dapat berhenti dan memberikan hasil. Kebenaran dari nilai yang dihasilkan tentu saja memerlukan pembuktian dengan cara tersendiri. Tetapi sebelum masuk ke analisa dan pembuktian fungsi rekursif, mari kita lihat kegunaan dan contoh-contoh fungsi rekursif lainnya lagi.

Fungsi Rekursif dan Iterasi

Pembaca yang jeli akan menyadari bahwa kedua contoh fungsi rekursif yang diberikan sebelumnya, faktorial dan kali, dapat diimplementasikan tanpa menggunakan fungsi rekursif. Berikut adalah contoh kode untuk perhitungan faktorial tanpa menggunakan rekursif:
def faktorial_iterasi(n):
    hasil = 1
    for i in range(1, n + 1):
        hasil = hasil * i
    return hasil
Dalam menghitung nilai faktorial menggunakan iterasi, kita meningkatkan nilai hasil terus menerus, sampai mendapatkan jawaban yang tepat. Yang perlu kita pastikan benar pada fungsi ini adalah berapa kali kita harus meningkatkan nilai hasil. Jika jumlah peningkatan salah, maka hasil akhir yang didapatkan juga akan salah.
Pendekatan iteratif berbeda dengan rekursif dalam hal ini: jika pendekatan rekursif memecah-mecah masalah untuk kemudian menyelesaikan masalah sedikit demi sedikit, pendekatan iteratif justru langsung mencoba menyelesaikan masalah, tanpa memecah-mecahkan masalah tersebut menjadi lebih kecil terlebih dahulu. Untungnya, baik teknik iterasi maupun rekursi sama-sama memiliki tingkat ekspresi yang sama: segala hal yang dapat diselesaikan dengan itearsi akan dapat diselesaikan dengan rekursif. Lalu, kapan dan kenapa kita harus menggunakan rekursif?
Meskipun dapat menyelesaikan masalah yang sama, terdapat beberapa permasalahan atau solusi yang lebih tepat diselesaikan dengan menggunakan fungsi rekursif. Salah satu contoh dari masalah ini adalah penelurusan data di dalam sebuah binary tree. Sebuah binary tree, yang dapat didefinisikan sebagai sebuah pohon dengan jumlah cabang yang selalu dua, secara alami adalah struktur data rekursif.
Binary Tree
Binary Tree
Sebagai struktur rekursif, tentunya penelusuran binary tree akan lebih mudah dilakukan secara rekursif dibandingkan iterasi. Hal ini sangat kontras dengan, misalnya, pencarian karakter di dalam string. Sebagai data yang disimpan secara linear, pencarian karakter dalam string akan lebih mudah untuk dilakukan secara iteratif.
Untuk mempermudah ilustrasi, mari kita lakukan perbandingan antara implementasi rekursif dan iteratif untuk masalah yang lebih cocok diselesaikan dengan masing-masing pendekatan. Misalnya, implementasi algoritma euclidean untuk menghitung faktor persekutuan terbesar (FPB) yang lebih cocok untuk diimplementasikan dengan metode rekursif seperti berikut:
def gcd(x, y):
    return x if y == 0 else gcd(y, x % y)
yang jika diimplementasikan dengan menggunakan iterasi adalah sebagai berikut:
def gcd_iterasi(x, y):
    while y != 0:
        temp = y
        y = x % temp
        x = temp
    return x
Jika dibandingkan dengan fungsi matematis dari algoritma euclidean:
gcd(x,y)={xgcd(y,remainder(x,y))if y=0if y>0
tentunya implementasi secara rekursif lebih sederhana dan mudah dimengerti dibandingkan dengan secara iterasi.
Sekarang mari kita lihat contoh algoritima yang lebih cocok diimplementasikan secara iteratif, misalnya linear search. Implementasi standar linear search secara iteratif adalah sebagai berikut:
def linear_search(lst, search):
    for i in range(0, len(lst)):
        if lst[i] == search:
            print("Nilai ditemukan pada posisi: " + str(i))
            return 0
    print("Nilai tidak ditemukan")
    return -1
yang jika diimplementasikan secara rekursif akan menjadi:
def linear_search_rec(lst, search, pos):
    if len(lst) <= pos:
        print("Nilai tidak ditemukan.")
        return -1
    elif lst[pos] == search:
        print("Nilai ditemukan di posisi: " + str(pos))
        return 0
    else:
        return linear_search_rec(lst, search, pos + 1)
Perhatikan bagaimana diperlukan lebih banyak pengecekan pada fungsi rekursif, serta tambahan parameter pos yang berguna untuk menyimpan posisi pengujian dan ditemukannya elemen yang dicari. Jika menggunakan iterasi variabel pos tidak dibutuhkan lagi karena posisi ini akan didapatkan secara otomatis ketika sedang menelusuri list. Dengan melihat jumlah argumen dan pengecekan yang harus dilakukan, dapat dilihat bahwa implementasi linear search menjadi lebih sederhana dan mudah dengan menggunakan metode iterasi.

Tail Call

Sesuai definisinya, dalam membuat fungsi rekursif pada satu titik kita akan harus memanggil fungsi itu sendiri. Pemanggilan diri sendiri di dalam fungsi tentunya memiliki konsekuensi tersendiri, yaitu pengunaan memori. Dengan memanggil dirinya sendiri, secara otomatis sebuah fungsi akan memerlukan memori tambahan, untuk menampung seluruh variabel baru serta proses yang harus dilakukan terhadap nilai-nilai baru tersebut. Penambahan memori ini seringkali menyebabkan stack overflow ketika terjadi pemanggilan rekursif yang terlalu banyak.
Untuk menanggulangi kesalahan stack overflow ini, para pengembang bahasa pemrograman mengimplementasikan apa yang dikenal dengan tail call optimization. Dalam merancang dan menganalisa algoritma rekursif, pengertian akan tail call optimization merupakan hal yang sangat penting. Jadi, apa itu tail call?
Tail call merupakan pemanggilan fungsi sebagai perintah terakhir di dalam fungsi lain. Sederhananya, ketika kita memanggil sebuah fungsi pada bagian akhir dari fungsi lain, kita melakukan tail call, seperti pada kode di bawah:
def fungsi(x):
    y = x + 10
    return fungsi_lain(y)
Pada kode di atas, pemanggilan fungsi_lain sebagai kode terakhir yang dieksekusi oleh fungsi dapat dikatakan sebagai tail call. Ingat juga bahwa pemanggilan tidak harus berada di akhir fungsi secara fisik. Yang penting adalah bahwa kode terakhir yang dieksekusi adalah pemanggilan fungsi lain:
def tail_call(n):
    if n == 0:
         return fungsi_1(n + 1)
    else:
         return fungsi_2(n)
Pada contoh fungsi tail_call di atas, pemanggilan terhadap fungsi_1 maupun fungsi_2 adalah tail call, meskipun pemanggilan fungsi_1 tidak berada pada akhri fungsi secara fisik. Bandingkan dengan kode berikut:
def bukan_tail_call(n):
    result = fungsi_lain(n % 5)
    return result * 10
yang bukan merupakan tail call, karena kode terakhir yang dieksekusi (result * 10e) adalah sebuah operasi, bukan pemanggilan fungsi. Cara kerja ini tentunya juga dibawa ke fungsi rekursif, di mana:
def faktorial(n):
    if n == 1:
         return 1
    else:
        return n * faktorial(n - 1)
bukan merupakan tail call karena baik return 1 maupun n * faktorial(n - 1) bukanlah pemanggilan fungsi. Ingat bahwa n * faktorial(n - 1) merupakan operator perkalian, bukan pemanggilan fungsi karena faktorial(n - 1) akan harus mengembalikan hasil terlebih dahulu agar bisa dikalikan dengan n. Jika ingin membuat fungsi rekursif yang memanfaatkan tail call, kita harus memastikan kode terakhir yang dieksekusi adalah fungsi lain, tanpa operasi lanjutan. Misalnya, kita dapat menyimpan hasil kalkulasi sebagai parameter, seperti berikut:
def faktorial_tc(n, r = 1):
    if n <= 1:
        return r
    else:
        return faktorial_tc(n - 1, n * r)
untuk memastikan terdapat tail call di dalam fungsi.
Implementasi algoritma rekursif disarankan untuk mengadopsi tail call, karena natur dari fungsi rekursif yang memakan banyak memori. Tail call optimization, jika diimplementasikan oleh bahasa pemrograman, akan mendeteksi adanya tail call pada sebuah fungsi untuk kemudian dijalankan sebagai perulangan untuk menghindari penggunaan memori berlebihan.
Bahasa pemrograman yang mendukung tail call optimization biasanya adalah bahasa pemrograman fungsional seperti Haskell, LISP, Scheme, dan Erlang. Python, sayangnya, tidak mendukung optimization.

Analisis Algoritma Rekursif

Melakukan analisis untuk algoritma rekursif pada dasarnya sama dengan melakukan analisis terhadap algoritma imparatif lain. Perbedaan utama pada algoritma rekursif ialah kita tidak dapat secara langsung melihat berapa kali bagian rekursif dari algoritma akan dijalankan. Pada algoritma yang menggunakan perulangan for misalnya, kita dapat langsung menghitung jumlah perulangan untuk menghitung total langkah yang dibutuhkan. Dalam algoritma rekursif, jumlah perulangan tidak secara eksplisit bisa didapatkan karena informasi yang kita miliki adalah kapan algoritma berhenti, bukan berapa kali kode dieksekusi.
Misalnya, algoritma perhitungan faktorial yang telah dibahas sebelumnya:
def faktorial(n):
    return n if n == 1 else n * faktorial(n - 1)
Salah satu informasi yang didapatkan di sini adalah kapan algoritma berhenti melakukan rekursif, yaitu n == 1. Informasi lain yang kita miliki adalah berkurangnya jumlah data pada setiap pemanggilan faktorial. Bagaimana kita melakukan analisis algoritma ini? Cara termudahnya adalah dengan menggambarkan fungsi matematika dari faktorial terlebih dahulu:
faktorial(n)={1nfaktorial(n1)remainder(x,y))if n=1if n>1
Melalui fungsi matematika ini, kita dapat mulai melakukan penurunan untuk fungsi perhitungan langkah fungsi faktorial untuk kasus n>1:
f(n)=1+f(n1)=1+1+f(n2)=1+1+1+f(n3)...=n+f(nk)
Dan tentunya kita dapat mengabaikan penambahan langkah n di awal, serta dengan syarat bahwa fungsi berhenti ketika nk=1:
nkk=1=n1
Maka dapat disimpulkan bahwa fungsi faktorial memiliki kompleksitas n1, atau O(n). Ingat bahwa kunci dari perhitungan kompleksitas untuk algoritma rekursif terdapat pada fungsi matematis algoritma dan definisi kapan berhentinya fungsi rekursif tersebut.

Kesimpulan

Fungsi rekursif merupakan fungsi yang memanggil dirinya sendiri. Terdapat dua komponen penting dalam fungsi rekursif, yaitu kondisi kapan berhentinya fungsi dan pengurangan atau pembagian data ketika fungsi memanggil dirinya sendiri. Optimasi fungsi rekursif dapat dilakukan dengan menggunakan teknik tail call, meskipun teknik ini tidak selalu diimplementasikan oleh semua bahasa pemrograman.
Selain sebagai fungsi, konsep rekursif juga terkadang digunakan untuk struktur data seperti binary tree atau list.

 Mempelajari pemrograman komputer bisa dibilang susah-susah gampang, tapi jika anda perhatikan ada beberapa konsep dan istilah yang perlu anda pahami terlebih dahulu sebelum memulai belajar pemrograman komputer.

Illustrasi programming
Konsep dan istilah ini berlaku untuk seluruh Bahasa pemrograman yang akan anda pelajari, baik itu Pascal, Delphi, Visual Basic, C++ atau sebagainya. kabar baiknya, yang akan saya bagikan sekarang akan sangat membantu anda untuk mempelajari Bahasa pemrograman.

Algoritma

Jika anda mau jadi programmer yang handal anda harus memiliki algoritma yang baik begitu kata para programmer.
Lalu apa arti algoritma itu sendiri?
Sebagai contoh perhatikan cerita berikut.
“Saya membeli sebuah Handphone tercanggih, tentunya saya tidak dapat mengoperasikannya sama sekali saking canggihnya. tapi karena di dalam paketnya terdapat buku panduan manual, maka sayapun dapat menggunakan handphone tersebut.”
Buku Manual bisa saya sebut dengan buku algoritma, di dalamnya terdapat langkah-langkah mulai dari cara menghidupkan handphone, memasang kartu, menyimpan data, cara menelfon dan banyak lagi.
Illustrasi Algoritma
Langkah-langkah tersebut disusun sedemikian rupa sehingga yang tidak tahu cara kerja handphone tersebutpun jadi tahu hanya dengan membaca langkah-langkah tersebut.
Komputer bukanlah alat yang hebat, komputer sendiri tidak tahu apa yang sedang ia lakukan. Namun karena para programmer telah memberikan panduan-panduan sebelumnya (Dalam bentuk Algoritma pemrograman) maka komputerpun menjadi alat yang berguna.
Algoritma sama halnya dengan panduan-panduan untuk melakukan sesuatu, anda belajar algoritma berarti anda belajar membuat panduan untuk komputer (hebat bukan?). camkan bahwa komputer itu tak ubahnya seperti bayi yang baru lahir, kita harus mengajarinya mulai dari nol.

Tipe Data

Dalam Matematika ada bermacam-macam bilangan, misalnya Bilangan Bulat, Bilangan Desimal dan sebagainya. Dalam bahasa pemrograman Bilangan bulat disebut dengan Integer dan Bilangan Desimal disebut dengan Real atau Double. lalu bagaimana dengan Huruf? Kumpulan beberapa huruf dan angka disebut dengan String. sebagai contoh.
10,20,3,5,100,125,175  disebut dengan Integer.
12.5, 14.75, 1.2, 1.0  disebut dengan real atau Double
"ada 3 Apel di box"    disebut String, biasanya diapit dengan tanda kutip.

Variable

Jika anda ingat pelajaran Matematika dulu, maka variable sering ditemukan disana, Variable biasa disebut dengan peubah. Tapi samakah arti variable di matematika dan bahasa pemrograman?.
Jawabannya sama, variabel di dalam bahasa pemrograman tak ada bedanya dengan yang ada di matematika. Variabel digunakan untuk menyimpan data sementara, dan dapat berubah-ubah sewaktu-waktu sesuai dengan kebutuhan.
Jika anda tidak mengerti sama sekali variabel, saya sederhanakan dengan sebuah perumpamaan. bayangkan variabel itu adalah sebuah box kardus. Anda dapat memasukkan barang apapun kedalam kardus tersebut. :).
Contoh matematisnya adalah seperti berikut:
x= 10
y = 20
x+y=30
x dan y disebut dengan variabel, untuk variabel X kita masukkan angka 10 dan untuk Y kita masukkan angka 20. jadi jika kita baca baris selanjutnya, X+Y=30 maka yang dimaksud dengan X dan Y disini adalah 10+20 Penamaan Variabel tidak harus x dan y, anda dapat memberi nama variabel sesuka anda asalkan tidak memusingkan anda jika anda membutuhkannya kembali untuk suatu operasi.



Array

Di dalam bahasa pemrograman ada yang dinamakan dengan Array, Array sama halnya dengan Variable, digunakan untuk menyimpan data. Namun berbeda dengan variable, jika variabel hanya mampu menyimpan satu tipe data, maka array dapat menyimpan berbagai macam data/tipe data sekaligus.
Illustrasi Array
Dulu saya sering mengumpamakan array dengan sebuah lemari yang memiliki beberapa tingkatan di dalamnya. misalnya kita memasukkan Kemeja dan Kaos ditingkat 1, Celana di tingkat 2, buku di tingkat 3, dan berbagai macam peralatan di tingkat 4.
Maka jika kita ubah dengan pendekatan bahasa pemrograman, informasi tersebut menjadi seperti berikut.
Lemari[1] = Baju
Lemari[2] = Celana
Lemari[3] = Buku
Lemari[4] = Perkakas
Maksud dari Lemari[1] adalah “lemari di tingkat 1″, dan 1 disini disebut dengan Index.

Percabangan

“Jika Andi belajar maka Andi akan Pintar, Jika tidak maka Andi akan bodoh”.

Ya, kalimat tersebut merupakan contoh percabangan sederhana. di dalam bahasa pemrograman, anda tidak perlu pusing dengan percabangan, anda tinggal mengkonversinya ke dalam bahasa inggris :). misalnya.
If Andi Study then
 Andi will be smart
else
 Andi will be stupid
Percabangan If-then-Else ini akan sering anda temukan dalam bahasa pemrograman apapun. Contoh pendekatan bahasa pemrogramannya :
X = 10
If x > 5 then
 x lebih besar dari 5
else
 x lebih kecil dari 5
Sebelumnya kita memasukkan angka 10 ke variabel x, lalu dengan menggunakan percabangan sebagai pengujian kita tentukan apakah x itu lebih dari 5 atau kurang dari 5. jika kita konversi ke bahasa indonesia maka menjadi seperti berikut :
x = 10
jika X lebih besar dari 5 maka x lebih besar dari 5 jika tidak maka x 

lebih kecil dari 5.

Looping/Perulangan

“Saya melakukan kesalahan disekolah, dan saya dihukum untuk menulis Saya Bersalah di papan tulis sebanyak 250 kali.”
itulah Contoh perulangan. saya akan terus menulis “Saya Bersalah” di papan tulis sebanyak 250 kali, selama belum mencapai 250 saya akan terus mengulang aktifitas menulis tersebut.
Illustrasi Looping
Dengan komputer anda bisa melakukan aktifitas tersebut dengan mudah, sayangnya saya disuruh menulis di papan tulis, kalau saja di komputer akan sangat mudah dilakukan :).
Biasanya struktur perlungan dalam bahasa pemrograman seperti berikut.
X=0
Do
 Tulis "Saya Bersalah"
 X + 1
Until X=250
Bingung? saya jelaskan, pertama-tama agar saya tidak lupa jumlah yang telah saya tulis, maka saya tulis terlebih dahulu di kertas bahwa saya belum menulis sama sekali (x=0), Setiap setelah menulis “Saya bersalah”, saya juga menuliskan di dalam kertas (Mirip dengan penghitungan suara :) ) Begitu seterusnya sampai saya selesai menulis “Saya Bersalah” sebanyak 250 kali.
Illustrasi Penghitungan
jadi aktifitas yang diulang disini adalah Menulis “Saya Bersalah” dan mencatat jumlah yang telah ditulis.

Kesimpulan

Jika anda sudah mengerti konsep dan istilah tersebut, yang perlu anda pelajari ketika mempelajari bahasa pemrograman tertentu, adalah Bagaimana cara penulisannya dengan benar. Bagaimana penulisan Percabangan (If-then-else) yang benar, bagaimana cara membuat looping, cara pendeklarasian tipe data, dan cara membuat dan menggunakan variable dan array.


Cara Kerja Program

Terjemahan dari buku Think Python - How to Think Like a Computer Scientist karangan: Allen Downey
Tujuan dari buku ini adalah untuk mengajarkan kepada anda untuk berpikir seperti layaknya seorang ilmuwan komputer atau ahli komputer. Cara berpikir yang mengkombinasikan beberapa fitur terbaik dari ilmu matematika, teknik dan ilmu pengetahuan alam. Seperti seorang matematikawan, seorang ahli komputer menggunakan bahasa baku untuk menunjukkan ide-ide (khususnya dalam perhitungan). Seperti seorang teknisi, mereka mendesain, merakit komponen-komponen menjadi sebuah sistem dan mengevaluasinya. Seperti seorang ilmuwan, mereka mengamati prilaku sistem-sistem rumit, membuat hipotesa, dan mengujinya.
Satu keterampilan terpenting yang harus dimiliki oleh seorang ahli komputer adalah Problem Solving atau keterampilan untuk memecahkan suatu masalah. Problem solving artinya kemampuan untuk merumuskan permasalahan, berpikir kreatif mengenai solusi-solusi, dan mengekspresikan sebuah solusi secara jelas dan akurat. Pada kenyataannya, proses belajar memrogram adalah merupakan kesempatan yang baik untuk melatih keterampilan problem solving. Itulah kenapa bab ini diberi nama “Cara Kerja Program.”
Dalam satu tingkat, anda akan belajar memrogram, skill anda akan terlatih dengan sendirinya. Pada tingkat yang lain, anda akan menggunakan pemrograman sebagai suatu alat untuk mencapai tujuan. Selama kita pergi bersama, tujuan itu akan menjadi lebih jelas.
1.1 Bahasa Pemrograman Python
Bahasa pemrograman yang akan anda pelajari adalah Python. Python adalah salah satu contoh dari bahasa pemrograman tingkat-tinggi; bahasa pemrograman tingkat tinggi lainnya yang mungkin anda pernah dengar adalah C, C++, Perl, dan Java
Ada juga bahasa tingkat-rendah, terkadang disebut sebagai “bahasa mesin” atau “assembly languages“. Singkat kata, komputer hanya dapat menjalankan program yang ditulis dalam bahasa tingkat-rendah. Jadi program yang ditulis dalam bahasa tingkat-tinggi harus diproses terlebih dahulu sebelum bisa dijalankan. Proses tambahan ini membutuhkan waktu, yang adalah merupakan kerugian kecil dari bahasa tingkat-tinggi.
Keunggulannya besar sekali. Pertama, lebih mudah untuk memrogram dalam bahasa tingkat-tinggi. Program yang ditulis dalam bahasa tingkat-tinggi membutuhkan sedikit waktu untuk menulisnya, lebih pendek dan lebih mudah dibaca, dan lebih cenderung untuk terhindar dari kesalahan. Kedua, bahasa tingkat-tinggi itu portable, yang artinya dapat dijalankan pada berbagai komputer yang berbeda dengan sedikit atau tanpa modifikasi. Bahasa tingkat-rendah hanya dapat jalan pada satu jenis komputer dan harus ditulis ulang agar bisa berjalan pada komputer yang lain.
001
Gambar 1.1: Sebuah interpreter memproses program sejenak, secara bergantian membaca baris dan menjalankan serangkaian perhitungan.
002
Gambar 1.2: Compiler menterjemahkan source code atau kode sumber menjadi object code, yang dijalankan oleh hardware executor.
Dikarenakan oleh keunggulan-keunggulan ini, hampir semua program ditulis dalam bahasa tingkat-tinggi. Bahasa tingkat-rendah hanya digunakan untuk beberapa aplikasi khusus.
Dua macam program yang memproses bahasa tingkat-tinggi menjadi bahasa tingkat-rendah yaitu: interpreter dan compiler. Sebuah interpreter membaca program tingkat-tinggi dan menjalankannya, artinya interpreter mengerjakan apa yang dikatakan oleh program tersebut. Interpreter memproses program sejenak, secara bergantian membaca baris-baris dalam program tersebut dan menjalankan perhitungan. Gambar 1.1 menunjukkan struktur dari sebuah interpreter.
Compiler membaca program dan menterjemahkan seluruhnya sebelum program tersebut berjalan. Dalam konteks ini, program tingkat-tinggi di sebut dengan source code, dan program yang telah diterjemahkannya disebut dengan object code atau executable. Setelah program di-compile, anda dapat menjalankannya berulang-ulang tanpa proses penterjemahan lagi. Gambar 1.2 menunjukkan struktur dari compiler.
Python dianggap sebagai interpreted language karena program Python dijalankan dengan menggunakan interpreter. Ada dua cara menggunakan interpreter: interactive mode (mode interaktif) dan script mode (mode skrip). Dalam interactive mode, anda mengetikkan program Python dan interpreter menampilkan hasilnya:
>>>1 + 1
2

Tanda chevron, >>>, adalah prompt yang digunakan interpreter untuk mengindikasikan bahwa interpreter telah siap. Jika anda mengetikkan 1 + 1 , interpreter menjawab 2.
Sebagai alternatif, anda dapat menyimpan kode dalam sebuah file dan menggunakan interpreter untuk menjalankan isi file tersebut, yang disebut dengan script. Oleh hasil kesepakatan, skrip Python harus dinamai akhirnya dengan .py.
Untuk menjalankan skrip tersebut, anda harus menyebutkan nama filenya pada interpreter. Jika anda mempunyai skrip dengan nama dinsdale.py dan anda bekerja dalam sebuah jendela UNIX command line interpreter, anda tinggal mengetikkan python dinsdale.py. Dalam development environment yang lain, rincian cara menjalankan skrip-nya berbeda. Anda bisa mencari cara-cara untuk environment anda di website Python http://python.org.
Bekerja dalam interactive mode memudahkan dalam menguji kode karena anda bisa mengetikkan dan menjalankannya segera. Tetapi untuk kode yang lebih banyak anda sebaiknya menyimpan kode anda dalam bentuk skrip dengan begitu anda bisa memodifikasi dan menjalankannya dikemudian hari.
1.2 Apa itu program?
Program adalah urutan instruksi yang menentukan bagaimana untuk melakukan perhitungan. Perhitungan mungkin saja merupakan sesuatu yang matematis, seperti memecahkan suatu sistem persamaan atau mencari akar dari polynomial, tetapi bisa juga merupakan perhitungan simbolik, seperti pencarian dan penggantian teks dalam sebuah dokumen atau (cukup aneh) meng-compile sebuah program.
Rinciannya terlihat berbeda pada bahasa yang berbeda, tetapi beberapa instruksi dasar muncul pada setiap bahasa:
input: Mengambil data dari keyboard, file, atau beberapa perangkat lain.
output: Menampilkan data pada layar atau mengirim data ke sebuah file atau perangkat lain.
math: Melakukan operasi matematika dasar seperti penjumlahan dan mengalian.
conditional execution: Cek pada kondisi tertentu dan jalankan kode yang sesuai.
repetition:  Melakukan beberapa tindakan secara berulang, biasanya dengan beberapa variasi.
Setiap program yang pernah anda gunakan, bagaimanapun rumitnya, adalah dibuat dari instruksi-instruksi yang terlihat seperti ini. Jadi anda dapat berpikir tentang pemrograman sebagai proses memecahkan pekerjaan yang besar dan kompleks menjadi subtask yang lebih kecil sampai subtask tersebut cukup sederhana untuk dikerjakan dengan salah satu dari instruksi-instruksi dasar ini.
Mungkin sedikit samar, tetapi kita akan kembali ke topik ini nanti saat kita membahas mengenai algoritma
1.3 Apa itu debugging ?
Pemrograman itu rawan kesalahan. Untuk alasan yang aneh kesalahan-kesalahan dalam pemrograman disebut dengan bugs dan proses melacak kesalahan (error) itu disebut dengan debugging.
Tiga jenis kesalahan yang dapat muncul dalam sebuah program: sintax error, runtime error, dan semantic error. Adalah berguna untuk membedakan mereka agar kita dapat dengan mudah melacaknya secara cepat.
1.3.1 Syntax error
Python hanya dapat menjalankan sebuah program jika sintaksnya benar; jika tidak, interpreter akan menampilkan sebuah error message. Sintaks mengacu pada struktur dari sebuah program dan aturan tentang struktur tersebut. Sebagai contoh, tanda kurung mesti digunakanbersama pasangannya, jadi (1 + 2) adalah legal, tetapi 8) adalah suatu syntax error.
Dalam bahasa inggris pembaca dapat mentoleransi kebanyakan syntax error, itulah mengapa kita dapat membaca puisi dari e. e. cummings tanpa mengeluarkan error message. Python tidak begitu pemaaf. Jika ada sebuah syntax error dimana saja dalam program anda, Python akan menampilkan sebuah error message dan keluar, dan anda tidak akan bisa menjalankan program anda. Selama seminggu pertama dalam karir pemrograman anda, anda mungkin akan menghabiskan banyak waktu dengan melacak syntax error. Seiring dengan berkembangnya pengalaman, anda akan membuat kesalahan lebih sedikit dan menemukannya lebih cepat.
1.3.2 Runtime error
Tipe kedua dari error adalah runtime error, dikatakan seperti itu karena error tidak muncul sampai program dijalankan. Error ini juga disebut dengan exception karena biasanya untuk mengindikasikan bahwa sesuatu yang bersifat eksepsional (dan buruk) telah terjadi.
Runtime error jarang terjadi dalam program-program sederhana yang akan anda lihat dibeberapa bab pertama, jadi mungkin sebentar lagi.
1.3.3 Semantic error
Tipe error yang ketiga yaitu semantic error. Jika ada semantic error dalam program anda, program akan berjalan secara sukses bahwa komputer tidak memberikan pesan error apapun, tetapi program anda tidak melakukan apa yang kita inginkan. Program tersebut melakukan hal yang lain. Secara khusus, program akan melakukan apa yang anda perintah.
Masalahnya adalah program yang telah anda tulis adalah bukan program yang anda inginkan untuk anda tulis. Makna dari program tersebut salah. Mengidentifikasi semantic errors bisa jadi rumit karena membutuhkan anda untuk bekerja kembali kebelakang dengan mencari output dari program dan mencoba untuk mengerti apa yang dilakukan oleh program.
1.3.4 Debugging Eksperimental
Salah satu keterampilan terpenting yang akan anda dapatkan adalah debugging. Walaupun itu bisa membuat frustasi, debuggng adalah satu dari bagian pemrograman yang paling kaya intelektual, paling menantang dan paling menarik.
Dalam beberapa hal, debugging seperti pekerjaan seorang detektif. Anda akan dihadapkan pada petunjuk dan anda harus menyimpulkan proses dan peristiwa yang mengantar pada hasil yang anda lihat.
Debugging juga seperti sebuah experimen sains. Saat anda mendapat ide tentang apa yang sedang terjadim anda memodifikasi program anda dan mencobanya kembali. Jika hipotesa anda benar, maka anda bisa memprediksi hasil dari modifikasi, dan anda telah melangkah lebih dekat untuk mendapatkan sebuah program yang berhasil. Jika hipotesa anda salah, anda harus mencoba yang baru. Seperti yang diungkapkan oleh Sherlock Holmes, “Ketika anda mengeliminasi hal yang tak mungkin, apapun yang tersisa, bagaimanapun tidak mungkin, pasti ada kebenaran.” (A. Conan Doyle, The Sign of Four)
Bagi sebagian orang, pemrograman dan debugging adalah sama. Itulah, pemrogramman adalah proses debugging program secara bertahap sampai program tersebut bekerja sesuai dengan yang anda inginkan. Idenya adalah bahwa anda harus memulai dengan membuat program yang bisa melakukan sesuatu dan lakukan modifikasi kecil, lakukan debugging sambil berjalan, dengan begitu anda akan selalu mempunyai program yang bekerja.
Sebagai contoh, Linux adalah operating system yang mengandung ribuan baris kode, tetapi itu dimulai dari program sederhana yang digunakan oleh Linus Torvalds untuk meng-eksplor chip Intel 80386. Menurut Larry Greenfield, “Satu dari proyek Linus terdahulu adalah program yang akan mengalihkan antara mencetak AAAA dan BBBB, Kemudian berkembang menjadi Linux.” (The Linux Users’ Guide Beta Version 1).
Bab selanjutnya akan membuat lebih banyak saran tentang debugging dan praktek pemrograman lainnya.
1.4 Bahasa formal dan bahasa natural
Bahasa natural adalah bahasa yang diucapkan oleh orang-orang, seperti bahasa inggris, bahasa spanyol dan bahasa prancis. Semua itu tidak didesain oleh orang-orang (walaupun orang-orang mencoba untuk memaksakan beberapa peraturan) mereka berkembang secara alami.
Bahasa formal adalah bahasa yang didesain oleh orang-orang untuk penerapan khusus. Contohnya, notasi yang digunakan oleh para ahli matematika adalah bahasa formal yang secara khusus bagus untuk menunjukkan hubungan antara nomor dan simbol. Pada ahli kimia menggunakan bahasa formal untuk merepresentasikan struktur kimia molekul. Dan yang lebih penting:
Bahasa pemrograman adalah bahasa formal yang di desain untuk mengekspresikan perhitungan
Bahasa formal cenderung mempunyai peraturan yang ketat mengenai sintaks. Sebagai contoh, 3 + 3 = 6 merupakan pernyataan matematika yang benar secara sintaktik, tetapi 3 + = 3$6 tidak. H2O merupakan rumus kimia yang benar secara sintaktik, tetapi 2Zz tidak. (masing-masing dengan angka 2 tersubskripsi)
Aturan sintaks datang dengan 2 rasa, berkaitan dengan token dan struktur. Token adalah elemen dasar dari sebuah bahasa, seperti kata, nomor, dan unsur kimia. Salah satu masalah dengan 3+ = 3$6 adalah bahwa $ bukan merupakan token yang legal dalam matematika (setidaknya sejauh yang saya tahu). Begitu juga, 2Zz adalah tidak legal karena tidak ada elemen dengan singkatan Zz.
Tipe aturan sintaks kedua berkaitan dengan struktur dari pernyataan; itu adalah, cara token tersusun. Pernyataan 3+ = 3 ilegal karena walaupun + dan = adalah token yang legal,  anda tidak boleh menempatkan salah satunya tepat setelah yang lainnya. Begitu juga, dalam rumus kimia subscript tempatnya setelah nama unsur, bukan sebelum.
Latihan 1.1. Tulis sebuah kalimat bahasa inggris yang terstruktur dengan baik dengan menggunakan token yang salah didalamnya. Kemudian tuliskan kalimat lain dengan menggunakan token yang valid tetapi dengan struktur yang salah.
Ketika anda membaca kalmat dalam bahasa inggris atau sebuah pernyataan dalam bahasa formal, anda harus mengerti apa struktur kalimatnya (walaupun dalam bahasa natural anda melakukan ini tanpa sadar). Proses ini disebut dengan parsing.
Contohnya, ketika anda mendengar kalimat, “The penny dropped,” anda mengerti bahwa “the penny” adalah subjek dan “dropped” adalah predikat. Ketika anda telah melakukan parsing pada sebuah kalimat, anda akan mengerti apa maknanya, atau semantik dari kalimatnya. Asumsi bahwa anda mengetahui apa itu “penny” dan apa maksudnya “dropped”, anda akan mengerti implikasi umum dari kalimat ini.
Walaupun bahasa formal dan natural mempunyai banyak kesamaan–token,struktur,sintaks,dan semantik–ada beberapa perbedaan:
ambiguitas: Bahasa natural penuh dengan ambiguitas, yang mana orang-orang berurusan dengan penggunaan petunjuk kontekstual dan informasi lain. Bahasa formal di desain untuk menjadi dekat atau sama sekali tidak ambigu, yang artinya pernyataan apapun mempunyai persis hanya satu makna, tanpa memperhatikan konteks.
redundansi: Untuk menutupi ambiguitas dan mengurangi kesalahpahaman, bahasa natural menggunakan banyak redundansi. Hasilnya, seringkali terinci. Hanya sedikit redundansi dalam bahasa formal dan juga lebih singkat.
literalness: Bahasa natural penuh dengan idiom dan metafora. Jika saya berkata, “the penny dropped,” mungkin tidak ada “penny” dan tidak ada apapun yang turun/terjatuh (“dropped”), idiom ini bermakna seseorang menyadari sesuatu setelah kebingungan beberapa saat. Bahasa formal memberi makna yang tepat apa yang dikatakannya.
Orang-orang yang tumbuh dewasa berbicara menggunakan bahasa natural–semua orang–sering kesulitan beradaptasi ke bahasa formal. Dalam beberapa hal, perbedaan antara bahasa formal dan bahasa natural seperti halnya perbedaan antara puisi dan prosa, akan tetapi lebih dari itu:
Puisi: Kata digunakan bukan saja karena maknanya tetapi juga karena suaranya, dan keseluruhan sajak bersama-sama menciptakan sebuah efek atau respon emosional. Ambiguitas tak hanya umum tetapi sering disengaja.
Prosa: Makna harfiah dari kata-kata itu lebih penting, dan struktur berkontribusi lebih memberikan makna. Prosa lebih amendable atau bisa dikembangkan untuk analisa dari pada puisi tetapi tetap sering kali ambigu.
Program: Makna dari sebuah program komputer adalah harfiah dan tidak ambigu, dan dapat dimengerti seluruhnya oleh analisa token dan struktur.
Ini adalah beberapa saran untuk membaca program (dan bahasa formal lainnya). Pertama, ingat bahwa bahsa formal lebih padat dari pada bahasa natural, jadi lebih memakan waktu untuk membacanya. Juga, struktur itu sangat penting, jadi biasanya bukan lah merupakan ide yang baik untuk membaca dari atas kebawah, kiri ke kanan. Melainkan, belajarlah untuk mengurai program tersebut dalam kepala anda, mengidentifikasi token dan menginterpretasikan struktur. Akhirnya, rincian masalah. Kesalahan kecil dalam pengucapan dan tanda baca, yang bisa anda hindari dalam bahasa natural, dapat membuat perbedaan yang besar dalam bahasa formal.
1.5 Program pertama
Secara tradisional, program pertama yang anda tulis dalam sebuah bahasa pemrograman baru adalah memanggil “Hello, World!” karena yang dilakukannya adalah hanya menampilkan kata-kata “Hello, World!”. Dalam python, terlihat seperti ini:
print 'Hello, World!'
Ini adalah sebuah contoh dari print statement, yang tidak benar-benar mencetak / print apapun pada selembar kertas. Print statement menampilkan sebuah value pada layar. Dalam hal ini, hasilnya adalah kata-kata:
Hello, World!
Tanda petik dalam program menandai awal dan akhir dari teks yang akan ditampilkan; mereka tidak akan muncul dihasil.
Dalam Python 3, sintaks untuk print sedikit berbeda:
print('Hello, World!')
Tanda kurung mengindikasikan bahwa print adalah sebuah fungsi. Kita akan sampai ke fungsi di Bab 3.
Untuk selanjutnya dari buku ini, Saya akan menggunakan statement print. Jika anda menggunakan Python 3, anda harus menterjemahkannya. Tapi selain itu, ada sedikit beberapa perbedaan yang harus kita pikirkan.
1.6 Debugging
Adalah merupakan ide bagus membaca buku ini didepan komputer jadi anda dapat mencoba contoh-contohnya sambil berjalan. Anda dapat menjalankan sebagian besar contoh-contohnya dalam mode interaktif, tapi jika anda menyimpan kode dalam skrip, mencoba-coba berbagai variasi akan menjadi mudah.
Kapanpun anda bereksperimen dengan fitur baru, anda sebaiknya mencoba untuk membuat kesalahan. Contohnya, dalam program “Hello, World!”, apa yang akan terjadi jika anda meninggalkan salah satu tanda petiknya ? Apa yang akan terjadi jika anda meninggalkan keduannya ? Apa yang akan terjadi jika anda salah mengetik print
Eksperimen semacam ini membantu anda untuk mengingat apa yang telah anda baca; juga membantu dalam debugging, karena anda bisa tahu apa yang dimaksudkan oleh error message yang muncul. Lebih baik membuat kesalahan sekarang secara sengaja dari pada nanti secara tidak sengaja.
Pemrograman, khususnya debugging, terkadang membawa emosi yang kuat. Jika anda begumul dengan bug yang sulit, anda mungkin merasa marah, putus asa atau malu.
Ada bukti bahwa orang-orang secara alami merespon komputer seakan-akan komputer itu adalah manusia. Ketika komputer berjalan dengan baik, kita menganggapnya sebagai rekan satu tim, dan ketika keras kepala, bandel, kita meresponnya sama seperti kita merespon pada orang yang keras kepala (Reeves dan Nass, The Media Equation: How People Treat Computers, Television, and New Media Like Real People and Places).
Mempersiapkan diri untuk reaksi-reaksi ini mungkin membantu anda berurusan dengan mereka. Satu pendekatan yaitu menganggap komputer sebagai pekerja dengan kekuatan tertentu, seperti kecepatan dan ketepatan, dengan kelemahan tertentu, seperti kurangnya empati dan ketidakmampuan untuk memahami gambaran besar.
Pekerjaan anda adalah menjadi manager yang baik: cari cara untuk mengambil manfaat dari kekuatan ini dan mengatasi kekurangannya. Dan cari cara untuk menggunakan emosi anda untuk menghadapi masalah, tanpa membiarkan reaksi anda mengganggu kemampuan anda untuk bekerja secara efektif.
Belajar untuk men-debug bisa membuat frustasi, tapi itu adalah keahlian yang berguna untuk banyak aktifitas melampaui pemrograman. Pada akhir dari tiap bab ada seksi debugging seperti ini, dengan pikiran saya tentang debugging. Semoga bisa membantu!
1.7 Glosarium
problem solving: Proses merumuskan masalah, mencari solusi, dan mengekspresikan solusi.
bahasa tingkat-tinggi atau high-level language: Bahasa pemrograman seperti Python yang di desain untuk menjadi mudah untuk dibaca dan ditulis oleh manusia.
bahasa tingkat-rendah atau low-level language: Bahasa pemrograman yang di desain agar mudah dijalankan oleh computer; disebut juga “bahasa mesin / machine language” atau “assembly language.”
portabilitas: Properti dari sebuah program yang dapat berjalan lebih dari satu jenis komputer.
interpret: Menjalankan program dalam bahasa tingkat-tinggi dengan menterjemahkannya baris demi baris.
compile: Menterjemahkan sebuah program yang ditulis dalam bahasa tingkat-tinggi kedalam bahasa tingkat-rendah sekaligus, untuk mempersiapkan untuk dijalankan nanti.
kode sumber atau source code: Program dalam bentuk bahasa tingkat-tinggi sebelum di-compile
kode objek atau object code: Output dari compiler setelah program diterjemahkan.
executable: Nama lain dari kode objek yang mana telah siap di jalankan
prompt: Karakter yang ditampilkan oleh interpreter untuk menandakan bahwa interpreter telah siap menerima input dari user.
skrip atau script: Program yang disimpan dalam bentuk file (biasanya adalah program yang akan di-interpret).
interactive mode: Cara menggunakan python interpreter dengan mengetikkan perintah dan expression pada prompt
script mode: Cara menggunakan python interpreter dengan untuk membaca dan menjalankan statement dalam skrip.
program: serangkaian instruksi yang menentukan suatu perhitungan.
algoritma: Proses umum dalam memecahkan salah satu kategori permasalahan
bug: Suatu kesalahan dalam program
debugging: Proses mencari dan menghapus setiap kesalahan dalam program (bugs)
sintaks: Struktur program
syntax error: Kesalahan dalam program yang membuatnya tidak bisa diuraikan (karena itu tidak mungkin bisa di-interpret)
exception: Kesalahan (error) yang terdeteksi pada saat program sedang berjalan.
semantics atau semantik: Makna dari suatu program
semantic error: Kesalahan dalam program yang membuatnya melakukan sesuatu yang bukan yang dimaksudkan oleh programer.
bahasa natural: Bahasa apapun yang digunakan orang, yang berkembang secara alami.
bahasa formal: Bahasa apapun yang telah di desain oleh orang untuk tujuan spesifik, seperti merepresentasikan ide-ide matematik atau program computer; semua bahasa pemrograman adalah bahasa formal.
token: Satu dari elemen dasar da ri struktur sintaksis, analog dengan kata dalam bahasa natural.
parse: Memeriksa suatu program dan menganalisa struktur sintaksisnya.
print statement: Sebuah instruksi yang membuat Python interpreter menampilkan sebuah value pada layar.
1.8 Latihan
Latihan 1.2. Gunakan web browser untuk membuka website http://python.org. Halaman ini berisi informasi tentang Python dan tautan pada halaman yang berkaitan dengan Python, dan itu memberi anda kemampuan untuk mencari dokumentasi mengenai Python.
Contoh, jika anda memasukkan print dalam jendela pencari, tautan pertama yang muncul adalah dokumentasi tentang print statement. Pada titik ini, tidak semuanya bisa anda mengerti, tetapi ini bagus untuk mengetahui dimana untuk mencarinya.
Latihan 1.3. Jalankan Python interpreter dan ketik help() untuk memulai utilitas pembantu offline. Atau anda dapat mengetikkan help('print') untuk mendapatkan informasi tentang print statement.
Jika contoh ini tidak bekerja, anda mungkin perlu menginstall tambahan dokumentasi Python atau mengeset sebuah environment variable; rinciannya tergantung dari operating sistem dan versi Python yang anda gunakan.
Latihan 1.4. Jalankan Python interpreter dan gunakan itu sebagai kalkulator. Sintaks python untuk matematika hampir sama dengan notasi matematika standar. Contohnya, simbol +, – dan / menunjukkan penjumlahan, pengurangan dan pembagian, seperti yang anda harapkan. Simbol untuk perkalian adalah *.
Jika anda berlari cepat 10 kilometer dalam durasi 43 menit 30 detik, berapa durasi rata-ratanya per mil? Berapa kecepatan rata-ratanya dalam mil per jam ? (Petunjuk: 1 mil = 1.61 kilometer)


Tidak ada komentar:

Posting Komentar