Wednesday, 28 February 2018

C Komen Comments

Kita harus membiasakan menggunakan komen (comments) dalam pembuatan program, walaupun kelihatannya simple. Saat kita membuat program yang simple, comments dirasakan sangat memakan waktu, tapi bila program yang kita buat sudah lebih dari 100 baris (masih bisa didebatkan, tapi kalau sudah mencapai 1000 baris, sudah pasti tidak diragukan lagi) kita memerlukan comments ini.

Comments memudahkan kita mencari baris yang hendak kita perbaiki atau modifikasi. Tanpa comments pencaharian akan membingungkan, dan ada kemungkinan kita memperbaiki baris yang bukan seharusnya kita perbaiki.

Tanpa comments, bila kita sisir baris-baris program yang telah kita buat, sering kali tampak tidak seperti yang kita harapkan, terutama saat kita harus berhenti pembuatan program karena harus tidur, dan besoknya kita akan meneruskan program tersebut, ini yang selalu menjadi masalah, saat kita melanjutkan pembuatan program kita lupa apa yang kita kerjakan kemarin dibaris mana dan fungsinya apa baris tersebut, setelah dicek dan memakan waktu yang panjang, kita bikin kesimpulan bahwa program yang kita buat kemarin tidak nyambung lg, padahal semua baris programnya bisa berkerja dengan baik.

Ada 2 (dua) cara untuk membuat comments ini:

  1. Dengan comments baris, diawal baris kita sisipkan  "//", maka pada baris tersebut merupakan comment, dan tanpa akhiran.
    contoh :
    // comment ini akan berakhir sendirinya. comment yang hanya 1 baris.
  2. Dengan blok comments. Dengan comments ini kita bisa membuat comment berbaris-baris sepanjang kita mau. Untuk membuat comments demikian kita awali comment dengan tanda "/*" dan diakhiri dengan "*/".
    Contoh:
    /*blok comment
    kita bisa membuat comment ini
    hingga berbaris-baris
    sampai ketemu tanda -> */
Jangan takut comments kita akan masuk ke execute file setelah kita compile nanti. Compiler tidak akan membaca atau akan melompati bagian comment. sehingga bila ada orang iseng yang membuka/membedah  program kita, bagian comment tidak ada.

Comments tidak harus berada pada baris baru, comment bisa kita tulis didalam baris program yang kita buat, untuk mengingatkan kita pada hal penting pada baris program tersebut yang jarang atau kita tidak familiar dengan kondisi tersebut. Contoh:

int cariMantan (int tinggi, int tahun, int cuci /*apa ini cuci? cuci adalah cucah cinta lagi, atau yang seperti itulah */ );


int ukuranSepatu = 40 ; // ukuran sepatu yang terakhir digunakan/dibeli

Tapi aturan diatas tidak berlaku bila berada diantara string literal. // atau /* ...*/ oleh compiler merupakan string juga.

printf ("Hello World /*cetak tulisan hello world */ \nhello world //cetak lagi ");

contoh diatas akan dicetak seperti:

Hello World /*cetak tulisan hello world */ 
hello world //cetak lagi

Pada blok comments compiler melewati bagian /* sampai */, jika didalam blok kita isi dengan apapun, compiler tidak akan membacanya sampai ketemu */.

Kenyataanya comment ini jiplakan dari C++ yang ditambahkan kemudian kedalam C oleh C99 standard, sehingga comment tersebut disebut "C++ style", walaupun sebenarnya merupakan jiplakan juga dari sebuah program yang mempelopori C, yaitu BCPL (Basic Combined Programming Language).

Comments ini juga berguna untuk melakukan percobaan, bila kita frustasi menulis ulang secara terus menerus karena compiler menemukan sebuah error yang tidak jelas. Illustrasinya seperti dibawah ini:

percobaan pertama /*kedua*/ dilakukan ;

maka hasilnya adalah percobaan pertama dilakukan. Karena kata "kedua" merupakan comment saja.





C Konstanta (Constants)

Ada cara lain untuk mengganti variabel yang bisa kita pakai, yaitu dengan konstanta / constants.
Konstanta digunakan untuk memudahkan penggunaan variable yg tidak berubah setelah eksekusi, nilai fix ini juga disebut literals.

Konstanta dapat diisi dengan semua basic data type seperti integer literals, float point literals, karakter literals, dan string literal.

Format konstanta:

#define (Nama Konstant) (Value)


Sekali lagi Constanta ini sama seperti variable, tetapi value nya tidak bisa berubah.
Misalnya gravitasi g = 9,8

Kita bisa tulis :

#define GRAVITASI 9.8

Integer literals
Sebuah integer literals bisa menggunakan decimal, oktadecimal, atau hexadecimal. Dengan awalan khusus 0x atau 0X untuk hexadesimal, 0 untuk oktadecimal, dan tanpa awalan untuk decimal.
Dan bisa juga menggunakan akhiran U dan atau L untuk unsigned dan long. Boleh menggunakan hurup kapital maupun hurup kecil.

Contoh:
1234
3543u
0x5aL
057

Floating-point Literals
Floating-point literals memiliki bagian integer, dan decimal atau pecahan atau bisa juga kita menggunakan exponen.

Penggunaan exponen e bisa menggunakan hurup kecil "e" atau kapital "E".

contohnya:
3.14
314e-2

Character Constants
Dengan character contant kita menggunakan sebuah karakter saja, seperti "a", "b", atau escape sequence seperti "\n" atau juga menggunakan karakter universal seperti "\u0068"

#include <stdio.h>

#define Ktab "\t" /*membuat tabulasi*/
#define Knew "\n" /*membuat garis baru*/

int main()
{
     printf ("Hello" Ktab "World" Knew);
}


String Literals
String juga bisa dipakai sebagai konstant, Seperti yang kita tahu (bila anda tau maksudnya) string memuat lebih dari satu karakter atau dengan kata lain merupakan kombinasi dari karakter, dan karakter yang dapat dimasukan tidak hanya hurup atau angka saja, tetepi escape sequence (\n, \t, dsb), spasi dan universal karakter juga bisa, value dari string dibuat didalam tanda petik (").

Kita juga bisa membuat tidak hanya satu baris, lebih dari satu baris pun bisa dilakukan.

#include <stdio.h>

#define Akata "HelloWorld" 

#define Akalimat "Hello world"
#define AmultiBaris "Hello world\nHELLO WORLD"
#define AkarakterUni "\u03b1 \u0024" 

int main()

{
printf(Akata "\n-------\n");
printf(Akalimat "\n-------\n");
printf(AmultiBaris "\n-------\n");
printf(AkarakterUni );

return 0;
}

hasilnya:

HelloWorld
-------
Hello world
-------
Hello world
HELLO WORLD
-------
α $



const Keyword
Kita juga bisa menggunakan perintah const sebagai kontant dengan data type yang specifik.
Format const :

const (type) (namaVariable)  = (value)

contoh:

#include <stdio.h>

const float Acpi = 3.14;

int main()
{
printf("%f",Acpi);
return 0;
}



Untuk membedakan antara const dan define, pada umumnya nama define ditulis dengan hurup kapital.

#define AHELLO "hello world"


Saturday, 24 February 2018

C Statement for

Statement for digunakan untuk looping sampai kondisi tertentu tercapai, ataupun selamanya. Statement for digunakan lebih detail dibandingkan dengan statement while pada contoh sebelumnya. Statement for memiliki tiga (3) bagian yang terpisah dengan semikolon (;)

for (x=0 ; x <= 50 ; x++)
      printf ("Hello World");

Bila pada statement while menunggu sampai kondisi berubah (dari true menjadi false atau sebaliknya), looping baru terhenti, tidak ada batasan berapa banyak yang harus diloop, sementara statement for memiliki batasan banyaknya looping yang harus dilakukan.

contoh Statement for
-----------------------------------------------------------------------
#include <stdio.h>
main()
{
int Ainci;
float Acm;

for (Ainci=0 ; Ainci <21 ; Ainci++){
Acm=2.54 * Ainci;
printf (" %d\t%f\n",Ainci,Acm);
}

}
-------------------------------------------------------------------------
hasilnya adalah :

0 0.000000
1 2.540000
2 5.080000
3 7.620000
4 10.160000
5 12.700000
6 15.240000
7 17.780001
8 20.320000
9 22.860001
10 25.400000
11 27.940001
12 30.480000
13 33.020000
14 35.560001
15 38.099998
16 40.639999
17 43.180000
18 45.720001
19 48.259998
20 50.799999



Perbedaan antara statement while dan for :

while:
 while (Ainci <= Abesar)

for:
for (Ainci=0 ; Ainci <21 ; Ainci++)

Pada statement while looping dilakukan tanpa mengatur perubahan Ainci dan Abesarnya, looping dilakukan sampai kondisi Ainci >Abesar, sedangkan pada statement for ada batasan yang harus dilakukan.

Kita bedah perintah for (Ainci=0 ; Ainci <21 ; Ainci++)  ini.

Ainci = 0 merupakan awal dari perhitungan, tidak selalu harus 0 (nol),
Ainci < 21 looping akan berhenti bila nilai Ainci  setidaknya 21.
Ainci++ adalah penjumlahan, dengan kata lain Ainci++ sama dengan
Ainci(baru) = Ainci(yang sedang diproses) +1

--

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