Tuesday, 20 February 2018

C Variables and Arithmetic Expressions

Ada program yang bisa membuat variable dimana saja, Tapi dengan C tidak bisa, kita harus membuat variable tersebut terlebih dahulu, dan memberika data type yang diinginkan. Tujuannya adalah compiler akan menyiapkan block memory dengan ukuran yang tepat untuk variable tersebut. Proses pembuatan variable ini dinamakan "declaration".

Integer (int) data type yang sering digunakan, data type ini menyimpan data integer (aduh! apaan nih?) integer adalah bilangan bulat seperti 0, 1, 2, 3, 4, ... dst, dan negatif integer adalah -1, -2, -3, ... dst.

langsung ke program... Kita akan buat program yang mengkonversi ukuran inci ke cm.

#include <stdio.h>

main() 
{
        /* mengkonversi inci menjadi 
        * cm */
int Acm, Ainci;
int Akecil, Abesar;

Akecil = 0;
Abesar = 10;

Ainci = Akecil;
while (Ainci <= Abesar) {
Acm=2.54 * Ainci;
printf (" %d\t%d\n",Ainci,Acm);
Ainci=Ainci+1;
}
}

Save > masukan kedalan direktori yang kita mau, beri nama file disertai ext .c .
Build > Compile / F8
Build > Build / F9
Build > Execute /F5

dan hasilnya adalah :

 0 0
 1 2
 2 5
 3 7
 4 10
 5 12
 6 15
 7 17
 8 20
 9 22
 10 25



Hasil konversi yang kita lakukan sangat tidak akurat, ini dikarenakan kita menggunakan data type int, yaitu bilangan bulat. Tapi saat ini bukan masalah keakuratan hasil, Sekarang kita mencoba data type int.

#include <stdio.h>

main() 
{
        /* mengkonversi inci menjadi 
        * cm */
int Acm, Ainci;
int Akecil, Abesar;

Akecil = 0;
Abesar = 10;

Ainci = Akecil;
while (Ainci <= Abesar) {
Acm=2.54 * Ainci;
printf (" %d\t%d\n",Ainci,Acm);
Ainci=Ainci+1;
}
}

apa yang terjadi disana>

#include <stdio.h>  
membuat library

main()  
membuat function utama

{
awal block dari function


/* mengkonversi inci menjadi 
* cm */
komen, tidak akan dibaca oleh compiler, /* awal block dan */ akhir block komen, tidak masalah dengan jumlah baris atau terpotong dengan baris baru.

int Acm, Ainci;
int Akecil, Abesar;
membuat variable menggunakan data type integer (int) 
A (a besar didepan kata variable seperti Acm atau Ainci) hanya untuk menandakan variable saja, boleh membuat nama variabel apa saja kecuali kata-kata yang digunakan keyword C.  
Penulisan variable langsung satu baris seperti int Acm, Ainci, Akecil, Abesar; tidak masalah, karena menggunakan data type yang sama.


Akecil = 0;
Abesar = 10;
memberikan nilai kepada variable Akecil = nol, dan Abesar = 10 (sepuluh)

Ainci = Akecil;
memberikan nilai kepada variable Ainci sama dengan nilai Akecil pada saat baris ini dibaca.

while (Ainci <= Abesar) {
Acm=2.54 * Ainci;
printf (" %d\t%d\n",Ainci,Acm);
Ainci=Ainci+1;
}
loop yang dilakukan berulang-ulang bila kondisi Ainci lebih kecil dari Abesar
     
     Acm=2.54 * Ainci;
     1 inci = 2.54 cm
     membuat perkalian 2.54 cm x Ainci yang menjadi nilai Acm
     
     printf (" %d\t%d\n",Ainci,Acm);
     mencetak pada layar dengan format seperti %d\t%d\n",Ainci,Acm 
     dimana 
                 %d pertama adalah dicetak sebagai integer yang nilainya adalah variable pertama yaitu Aimci
                 /t adalah tab
                %d pkedua adalah dicetak sebagai integer yang nilainya adalah variable kedua yaitu Acm
                 \n adalah garis baru

}
akhir dari main function

Karena hasil yang kita konversi tidak akurat (bilangan bulat int), kita coba membuatnya menjadi angka desimal dengan data type float dan menjadi seperti ini:
#include <stdio.h>

main() 
{
        /* mengkonversi inci menjadi 
        * cm */
int Ainci, Akecil, Abesar;
   float Acm;

Akecil = 0;
Abesar = 10;

Ainci = Akecil;
while (Ainci <= Abesar) {
Acm=2.54 * Ainci;
printf (" %d\t%f\n",Ainci,Acm);
Ainci=Ainci+1;
}
}

Perubahan int ke float seperti pada illustrasi dibawah ini:
float adalah variable pecahan. angka yang dibuat menggunakan float memiliki angka dibelakang koma.

%d Mencetak sebagai integer
%f Mencetak sebagai float
%6d Mencetak sebagai integer dengan setidaknya ada 6 karakter
%6f Mencetak sebagai float dengan setidaknya ada 6 karakter
%.2f      Mencetak sebagai float, dengan 2 karakter dibelakang koma
%o Mencetak okatadesimal
%x Mencetak hexsadesimal
%c Mencetak karakter (character)
%s Mencetak string

Monday, 19 February 2018

C Program C pertama, Hello world

Sudah menjadi standar dunia, program pertama adalah "Hello world". Dan Program ini konon yang pertama kali mencetuskannya adalah C, dan ditiru oleh program lainnya. Sebuah program yang sangat terkenal.
Program "Hello world" adalah program yang menampilkan tulisan "Hello world" dilayar. Ya, itu saja. Tapi semua programer tahu ini program. Jadi bila kita tidak tahu, apa kata dunia. Jadi bila tidak ada C, maka (kemungkinan besar) tidak ada "Hello world", ya bila tidak ada C, kemungkinan ada program lain dengan program yang lain juga. Mari kita mulai.

Kita nyalakan dulu Raspberry pi nya, lalu pilih 🍓 (pake emoji strawberry, ga ada emoji rapsberry) Menu > Programming > Geany



dan tampilah window Geany


Lalu tulis :

#include <stdio.h>

void main (void)

{
          /* Cetak statement */
          printf ("Hello world!\n");
}



Lalu kita save (Ctrl+s) dengan nama hello.c
Sebelum kita save file dengan extention file .c , Geany tidak bisa mendeteksi program yang kita buat.
Setelah kita beri nama file dengan extention .c maka otomatis Geany akan meng-highlight command-command yang kita buat
Setelah itu kita compile dengan Build > Compile atau dengan menekan F8
Dan kemudian kita Build dengan Build > Build atau dengan tombol F9
Dan yang terakhir kita Run program dengan Build > Execute atau tombol F5





Kemudian kita coba meng-compile dengan gcc di terminal.
Buka Terminal lalu masuk kedalam directory dimana kita menyimpan file hello.c
setelah masuk kedalam directory kita compile dengan perintah:
gcc -o hasil hello.c






Nah sekarang kita liat kode yang kita buat baris per baris dari kode berikut ini:

#include <stdio.h>

void main (void)

{
          /* Cetak statement */
          printf ("Hello world!\n");
}

Mulai.........

#include <stdio.h>

ini namanya hash-include yang merupakan salah satu library dari C. Kita memerlukan library ini karena kita menggunakan salah satu command yang ada didalam library tersebut, yaitu printf.
stdio.h adalah singkatan dari standart input-output library.
Hash-include pada baris ini untuk memberi tahu compiler untuk memasukan library tersebut kedalam program yang merupakan bagian dari proses compile.

Ketika kita memanggil #include <stdio.h> bukan hanya function printf() saja yang menjadi library di file yang akan kita hasilkan, tetapi juga function yang lain seperti scanf(), getc(), gets(), getchar(), puts(), putchar(), clearerr(), f open(), f close(), getw(), putw(),f getc(), putc(),f putc(), f gets(), puts(), f eof(), f getc(), f printf(), f scanf() dan function yang lain masuk kedalam file yang akan kita hasilkan.
Disisi lain, ketika kita memerlukan function salah satu yang diatas, kita tinggal panggil saja functionnya. 


void main (void)
{......}
Ini adalah fungsi yang bernama main.
void pertama untuk memberitahukan kepada komputer yang melakukan eksekusi, bahwa fungsi ini tidak memberikan feedback. Maksudnya, fungsi ini tidak memberikan feedback (hehehe....).
Sebagai gambaran, ada fungsi yang memberikan feedback berupa angka, hurup, kalimat, ataupun hasil dari perhitungan atau batasan yang kita buat didalam fungsi itu, ketika fungsi memberikan feedback, maka fungsi akan memberikan feedback tersebut kepada command yang memanggilnya.
Function tidak diberikan argument (void) dan bisa diberikan (int, string, dll).

Setiap program selalu ada fungsi main ini, karena ketika kita menjalankan program, maka fungsi main ini yang akan dijalankan pertama.
Void kedua yang berada didalam kurung, kita tidak memerlukan value apapun.
Sedangkan {....} adalah isi dari function main tersebut. Sesuatu yang berada diluar kurung tersebut tidak termasuk dalam function itu.


/* Cetak statement */
Ini adalah untuk membuat komen (diawai dengan /* dan diakhiri dengan */), untuk memudahkan kita mengetahui baris-baris berikutnya ini sedang mengerjakan apa. Untuk program yang sederhana dan sedikit barisnya, tidaklah terlalu berarti, tetapi untuk program yang lebih panjang, ini sangat berguna. Karena ketika kita membuat sebuah program yang panjang, komplikasi, memerlukan lebih dari satu hari pengerjaan, tanpa blok-blok komen maka ketika melanjutkan program tersebut dan melihat baris-baris tersebut, program yang kita buat seakan tidak masuk akal, dan kita membuatnya ulang....
Komen ini tidak akan dihiraukan oleh compiler.

printf ("Hello world!\n);
Dan yang terakhir, yang merupakan tujuan kita membuat program ini, perintah printf yang merupakan bagian dari library stdio.h untuk mencetak karakter yang terdapat didalam tanda double kuote (") dan diakhiri dengan semikolon (;)
Semikolon (;) adalah perintah batas akhir, tidak ada perintah lagi, atau perintah yang ada didepan berakhir disini. Jangan sampai lupa memberikan tanda ini, karena bila tidak, compiler akan bingung dan tidak melanjutkan tahap compiling sampai akhir, dan kita akan berakhir dengan pesan ERROR

Sunday, 18 February 2018

C Apa Itu C?

Pada Raspbian sudah terinstall sebuah software yang bernama Geany, yang merupakan Integrated Development Environment (IDE) yang ringan dan relatif cepat, sehingga memudahkan kita untuk membuat program C.

C adalah pemograman yang menggunakan cara compiled (compiled languages), tidak seperti Python, program dibaca langsung sebagai sumber. Python disebut interpreted languages.
Kode-kode yang dicompiled ini disebut source code, yang tidak bekerja secara langsung dengan kode2 yang kita kerjakan. Kode-kode dikonversikan menjadi bahasa mesin yang disebut executable atau binary.

perbedaan C dan C++:
  • C dikembangkan oleh Dennis Ritchie antara tahun 1969 - 1973 di perusahaan AT&T Bell Labs
    C++ dikembangkan oleh Bjarne Stroustrup pada tahun 1979
  • C merupakan bagian C++, karena C++ dapat meng-compiled sebagian besar code-code dari C
  • C adalah program yang prosedural sedangkan C++ mensupport prosedural dan object oriented programming
  • C tidak mensupport object oriented programming, polymorphism, encapsulation dan inheritance. C++ support
  • C, data dan fungsi terpisah. C++ data dan fungsi dibungkus menjadi sebuah object.
  • dan lain-lain
C merupakan bahasa programming yang general purpose, digunakan luas pada applikasi-aplikasi dari Operating system (seperti Windows dan iOS, bayangkan OS aja bikinnya pake C) sampai software yang digunakan untuk membuat 3D (video, modeling, dan lain-lain)

Hasil dari progam dengan C sangatlah effisien, dengan alasan tersebut, C masi bisa bertahan hidup dan masih digunakan selama lebih dari 40 tahun hampir 50 tahun (pernah dengar bahasa basic, paskal? pada kemana yah?)

C itu sangat bahasa yang prosedural, langkah demi langkah harus ditulis satu-satu (awal dari kegilaan C) sehingga suatu sebuah tugas yang simple dapat ditulis sampai berbaris-baris. Walupun begitu, bila dibandingkan dengan bahasa program lain yang memiliki sebuah atau lebih sedikit perintah dari C, kemungkinan besar program yang dibuat oleh C bekerja lebih cepat (karena kemampuan prosesor saat ini sangat besar, kecepatan ini mungkin tak berasa). Kekurangan ini diperbaiki dan dikembangkan oleh C++ dengan feature OOP (object oriented program).

Bahasa C mengizinkan kita memanipulasi hardware yang ada pada komputer (keren ga tuh). Jadi tidak salah bila kita memulai belajar program dengan C (awal dari sebuah penderitaan yang panjang).

Dengan motto "write once, compile everywhere", sehingga pembuatan program diperlukan sekali, dan bisa digunakan di Operating systems mana saja asalkan di-compile di Operating systems tersebut tanpa mengubah kode-kode yg kita buat sebelumnya. Ya motto ini kalah galak dengan mottonya Java "write once, run everywhere" tapi java bukan compiled language, melainkan interpreted language, dimana virtual java machine yg membaca kode-kode yang kita buat lalu menjalankanya.

Dengan C kita bisa menyimpan kode sebagai library yang kita akan gunakan nanti, konsep ini disebut modularity.

Bila kita menggunakan bahasa C apa adanya, kita tidak bisa berbuat banyak, tapi C memiliki banyak libraries yang dapat kita gunakan.

Dengan belajar C kita bisa mengetahui bagaimana komputer itu bekerja, tapi kita tidak tahu bagaimana program yang kita buat bekerja (aneh banget kan, bisa ngerti cara kerja komputer, tapi kode-kode yang kita buat tidak tahu bagaimana bisa bekerja di komputer).

Dengan mengerti C kita bisa membuat program yang impact nya sangat luas. Program-program berbahasa tinggi seperti python, java, bisa diinterface dengan C ini.

Bila kita ingin membuat program untuk smartphone, kita menggunakan Java, Swift (taylor swift 😱) atau Objective C, dan banyak program untuk applicasi di web.

Python bisa membuat applikasi, dan banyak applikasi yang dibuat menggunakan python, dan python dibuat oleh C. Jadi kita bisa ikut mengkontribusi python. Juga open source yang lain yang banyak digunakan pada linux kernel, database.

Dan apabila kita bisa C dan C++ dampak yang bisa kita buat sangatlah luas, dengan membuat progam yang lebih baik. Pada kenyatannya tidak semua orang mau berkontribusi atau berkemampuan untuk membuat program yang lebih baik.

Monday, 12 February 2018

Install Arduino IDE pada Rasbian Raspberry pi

Untuk menggunakan arduino IDE di raspberry, pertama-tama kita update dan upgrade rasbian- nya dahulu, dengan perintah:

sudo apt-get update

dan

sudo apt-get upgrade

lalu

sudo apt-get install arduino 

video dibawah ini cara meng-install arduino IDE, karena raspberry pi saya sudah di update, upgrade dan install arduino-nya. jadi pastinya berbeda dengan raspberry yang belum di update, upgrade dan install arduino IDE, akan lebih lama pastinya.







Friday, 9 February 2018

Setting Koneksi Wifi Raspbian Raspberry Pi menggunakan Command Line

Ini setting buat Raspberry Pi Raspbian dengan menggunakan Command Line, tanpa menggunakan graphical user interface, saat ini saya masih menggunakan Raspberry Pi Model B, sehingga mengguanakan usb wifi tambahan.



Wifi tambahan yang saya gunakan adalah Edimax EW-7811Un WiFi USB, tinggal colok aja tanpa perlu install driver, karena telah dikenali oleh Raspberry, untuk list yang sudah dapat bekerja dengan Raspberry ada disini, dan untuk Wifi adapters ada disini



Mari kita mulai.

Bila kita sedang berada disuatu tempat seperti cafe yang menyediakan wifi gratis, kita tinggal minta password dan nama SSID nya, dan dengan mudah kita bisa scan Wifi yang tersedia disekitar kita, lalu kita konek, masukan password, lalu TADA! kita telah dapat akses internet. Nah pada raspbian kita, bila kita perlu men-scan Wifi yang tersedia kita bisa gunakan perintah



sudo iwlist wlan0 scan.



ESSID adalah nama Wifi yang kita perlukan, misalnya kita perlu Wifi yang bernama "xyz", dan password cafe tersebut adalah "belumpoll".

Kita tinggal tambahkan network yang baru di configurasi wpa_supplicant file, dengan cara

sudo nano /etc/wpa_supplicant/wpa_supplican.conf




lalu muncul dan tambahkan dibawahnya :

network={     
                  ssid="xyz"    
                  psk="belumpoll" 
}



Lalu save dan exit dengan mengguanakan Ctrl + X lalu jawab Y ketika ada pertanyaan mau disave.



Bila jaringan wifi yang tidak memerlukan password
network={
         ssid="xyz"
         key_mgmt=NONE 
 }



Untuk yang Hidden Wifi Network:
network={
     ssid="xyz"
     scan_ssid=1
     psk="belumpoll" 
 }

Bila kita memiliki beberapa Wifi network kita tinggal tambahkan saja di bawahnya:

network={
     ssid="xyz"
     scan_ssid=1
     psk="belumpoll" 
 } 
 network={
     ssid="2xyz"
     key_mgmt=NONE 
 } 
 network={
     ssid="3xyz"
     psk="3belumpoll"
} 
 network={
     ssid="4xyz"
     psk="4belumpoll" 
}

Apabila disuatu tempat kita mendapatkan dua atau tiga Wifi network, dan kita ingin salah satu yang menjadi prioritas, kita tambahkan prioritas:

network={
     ssid="xyz"
     scan_ssid=1
     psk="belumpoll"
     priority=1
     id_str="rumah" 
 } 
 network={
     ssid="2xyz"
     key_mgmt=NONE
     priority=2
     id_str="sekolah" 
 } 
 network={
     ssid="3xyz"
     psk="3belumpoll"
     priority=3
     id_str="cafe" 
 } 
 network={
     ssid="4xyz"
     psk="4belumpoll"
     priority=4 
     id_str="sohib"
}