Wednesday, December 15, 2010

Identifier (Pengenal) pada C++

Dalam bahasa C++, setiap variable, fungsi atau class, pasti memiliki pengenal(identifier). Secara mudah kita bisa menganggap identifier adalah "nama" dari variable, fungsi atau class. Pengenal (identifier) yang benar adalah urutan dari satu atau beberapa huruf, angka, atau karakter garis bawah ( _ ). Namun penggunaan identifier memiliki aturan-aturan sebagai berikut:

  1. Angka dan garis bawah tidak boleh terletak di awal identifier.
  2. Penggunaan garis bawah tidak boleh berurutan.
  3. Penggunaan spasi dan beberapa karakter khusus (",', \, dll) tidak boleh digunakan digunakan sebagai identifier.
  4. Identifier tidak boleh sama dengan kata-kata yang sudah dipesan (reserve keywords) pada bahasa C++, atau kata-kata khusus yang juga dipesan oleh kompiler tertentu.
Hal lain yang harus diperhatikan, bahasa C++ adalah bahasa yang "case sesintive", artinya penggunaan huruf besar dan kecil diperhitungkan. Misalnya pada contoh di atas, variable HASIL tidak sama dengan variable Hasil atau hasil. Semuanya adalah tiga buah variable yang berbeda.

Read more...

Tuesday, December 14, 2010

Variable pada C++

Pada teori pembahasan teori sebelumnya kita telah membuat program untuk menuliskan kalimat "hello world!!" ke layar. Dalam program sebelumnya, teks yang ingin di tulis ke layar harus dimasukan ke dalam kode, kemudian di kompilasi, lalu dieksekusi. Seperti ini sangat merepotkan apabila apabila kita ingin mengganti tulisan yang ada di layar, karena kita harus merubah kode program, kompilasi lagi, kemudian eksekusi lagi.

Pemrograman yang sesungguhnya lebih dari sekedar menuliskan kalimat ke layar monitor. Untuk bisa membuat program yang lebih hebat lagi, dan maju ke tahap selanjutnya dalam mempelajari pemrorgaman, kita harus mengenal konsep variable

Sekarang saya meminta anda untuk mengingat angka 9 di pikiran anda. Kemudian saya juga meminta anda mengingat angka 8 di pikiran anda. Sekarang anda telah menyimpan dua buah angka dalam memori ( pikiran ) anda. Jika sekarang saya minta untuk menambah angka pertama dengan angka 4, seharusnya angka dalam memori anda menjadi 13 ( 9 + 4 ) dan 8. Sekarang jika kita mengurangi angka pertama dengan angka kedua, maka kita dapatkan angka 5 sebagai hasilnya.

Keseluruhan proses yang baru saja kita lakukan dengan pikiran anda di atas serupa dengan apa yang bisa dilakukan oleh komputer dengan dua buah variable. Dengan mengunakan bahasa C++, proses di atas bisa di tulis dengan perintah berikut:

a = 9;
b = 8;
a = 9 + 4;
hasil = a - 8;


Memang kode di atas terlihat sangat sederhana, karena kita hanya menggunakan dua buah variable dengan nilai integer ( bilangan ). Tapi coba bayangkan bahwa komputer kita mampu menyimpan jutaan bilangan pada waktu yang sama, dan dapat melakukan operasi matematika yang rumit dengan teliti terhadap bilangan-bilangan tersebut. Dengan demikian kita bisa mendefinsikan variable adalah sebagian dari memory komputer untuk menyimpan nilai tertentu yang kita tentukan.

Read more...

Wednesday, December 8, 2010

Bagian ( Struktur ) Program C++

Mungkin, cara terbaik untuk belajar pemrograman adalah dengan menuliskan program itu sendiri. Karena itu, Mari kita menulis menulis program C++ pertama kita.

//Program pertama C++
#include <iostream>
using namespace std;
int main ()
{
cout << "Hello world!!!";
return 0;
}

Program di atas adalah program yang paling sederhana, namun mengandung komponen dasar yang ada pada semua program C++. Mari kita pelajari baris perbaris.

//Program pertama C++

Baris ini adalah baris komentar. Semua baris yang dimulai dengan dua tanda garis miring (//) akan dianggap komentar. Komentar tidak akan berpengaruh terhadap jalannya program yang kita buat. Programmer menggunakan komentar untuk memberikan penjelasan singkat pada kode program yang dibuatnya. Atau untuk keperluan pengamatan kode program itu sendiri.

#include <iostream>
Baris kode yang dimulai dengan tanda ( # ) adalah pengarahan kepada praproses ( preprocessor ). Praproses ( preprocessor ) adalah sebuah file khusus yang mengandung deklarasi dari fungsi-fungsi yang kita gunakan pada setiap program C++. Dalam kasus ini, kita menggunakan proprocessor iostream, dimana iostream memuat pustaka (library) standart input dan output pada C++. Untuk seterusnya, kita mungkin akan selalu memakai iostream.

using namespace std;
Semua elemen dari pustaka standar C++ di deklarasikan di dalam sesuatu yang disebut "namespace", dalam program ini, namespace yang kita gunakan bernama "std". Jadi, untuk mengakses kegunaannya, kita harus mendeklarasikan bahwa kita menggunakan namespace ini ( std ). Lebih lengkap mengenai namespace ini, akan kita bahas di waktu yang akan datang.

int main ()
Baris kode ini sebagai awal dari fungsi "main". Fungsi main sebagai fungsi unama adalah awal dari pengeksekusian semua kode program C++. Tidak masalah kalau ada fungsi dengan nama lain entah di atas atau dibawah dari fungsi main, semua kode yang ada di dalam fungsi main akan dijalankan terlebih dahulu. dengan alasan inilah, semua program C++ harus memiliki fungsi main.

Setelah kata "main" selalu diikuti oleh sepasang tanda kurung buka dan kurung tutup [ () ]. Karena memang seperti inilah deklarasi dari fungsi dalam bahasa C++. Yang membedakan deklarasi fungsi dan penulisan instruksi lainnya adalah tanda kurung buka dan kurung tutup yang ditulis setelah nama fungsi tersebut. terkadang di dalam tanda ini,dituliskan parameter dari fungsi tersebut. Setelah tanda kurung ini, kita temui isi atau "body" dari fungsi main yang diapit oleh tanda kurung kurawal ( {} ). Sebenarnya, apa yang ada diantara tanda kurung ini, adalah apa yang dikerjakan oleh fungsi ketika program dieksekusi

cout << "Hello World!";
BAris ini adalah sebuah statement dalam bahasa C++. Statement adalah instruksi sederhana atau kompleks yang secara aktual bisa menghasilkan efek tertentu. Dalam program kita di atas, statement inilah yang memberikan hasil yang terlihat.

Dalam bahasa C++, cout adalah perintah output standart. Dan arti dari seleruh baris itu sendiri adalah untuk mengirimkan sebuah urutan karakter ke perangkat output. Dalam program ini, urutan karakter yang dimaksud adalah kalimat "Hello world!!", dan perangkat output yang dimaksud adalah layar monitor.

perintah cout di deklarasikan di dalam file standar iostream, di dalam lingkup namesapce std. Karena itulah kita harus mendeklarasikan penggunaan file iostream dan namespace std di awal penulisan kode.

Perhatikanlah bahwa statement ini diakhiri dengan tanda titikkoma atau semicolon ( ; ). Titikkoma ini digunakan sebagai tanda untuk mengakhiri sebuah statement. Tanda ini harus ada di akhir setiap kita membuat statement. Kesalahan ( error ) yang paling sering terjadi adalah kita lupa untuk menuliskan tanda ini di akhir statement.

return 0;
Statement return menandakan bahwa fungsi main selesai. Statement return bisa diikuti kode pengembalian, dalam contoh di atas diikuti dengan angka nol ( 0 ). Kode pengembalian dengan nilai 0 pada fungsi main menandakan bahwa program bekerja sesuai dengan yang diharapkan tanpa adanya error selama pengeksekusian. Statement ini adalah statement yang paling umum digunakan untuk mengakhiri program C++


Seperti telah diketahui, tidak semua baris kode memberikan hasil ketika program dieksekusi. Ada baris yang hanya mengandung komentar ( baris yang dimulai dengan tanda // ). Ada baris yang mengandung pengarahan ke preprocessor compiler ( baris yang dimulai dengan tanda # ). Ada baris yang mendeklarasikan sebuah fungsi ( fungsi main ), dan ada baris statement yang memberikan hasil yang terlihat ( baris cout ), yang terapit oleh tanda kurung kurawal ( {} ) di dalam fungsi main.

Fungsi main pada program di atas ditulis baris perbaris dengan tujuan agar lebih mudah dibaca. Tetapi sebenarnya dalam C++, tidak ada aturan ketat yang mengharuskannya. Sebagai contoh, kita bisa menuliskannya dalam satu baris kode saja (kecuali untuk baris komentar, harus berganti baris ).

int main (){ cout << "Hello world!!!"; return 0; }

Read more...

Tuesday, November 23, 2010

Kendali Alur Pemrograman (Control Flow)

Membuat program berarti membuat serangkaian instruksi-instruksi yang akan dijalankan oleh komputer. Dari sekian banyak instruksi tersebut, tentu tidak dapat dijalankan sekaligus oleh komputer. atau juga apabila dijalankan dengan urutan yang sembarangan akan mengakibatkan error pada komputer.Agar program yang dijalankan tidak error dan hasil dari program sesuai dengan yang kita harapkan, maka program yang kita buat harus memiliki kendali alur (control flow) pemrograman. Beberapa orang menyebut kendali alur sebagai logika inti pemrograman.

Bahasa pemrograman yang ada memang banyak jumlahnya, tetapi dari semua bahasa tersebut memiliki kesamaan dalam kendali alur. Kendali alur dari semua jenis bahasa pemrograman dapat dikelompokan menjadi tiga macam:

  • Sequential (berurutan)
  • Selection (Pilihan)
  • Looping (perulangan)
Berikut ini adalah penjelasan dari ketiga jenis kendali alur di atas:

Sequential (berurutan)
Sebagai contoh apabila kita ingin membuat secangkir kopi manis. Urutan pembuatannya akan sebagai berikut ini:
  1. Masukan kopi secukupnya.
  2. Masukan gula secukupnya.
  3. Tuang air panas secukupnya.
  4. Aduk kopi dan gula.
  5. Selesai, kopi siap diminum.
Langkah-langkah membuat kopi tidak boleh dijalankan dengan urutan yang sembarangan, karena bisa berakibat kopi yang dibuat tidak enak rasanya. atau juga malah tidak berhasil membuat kopi.

Selection (pilihan)
Dalam membuat program, kadang tidak semua perintah perlu dijalankan, atau hanya beberapa perintah yang boleh dijalankan. Misalkan contoh program ganjil genap berikut ini:
  1. Masukan input.
  2. Input dibagi dengan 2.
  3. Bila hasil bersisa 1, cetak ganjil.
  4. Bila hasil tidak bersisa, cetak genap.
  5. Program selesai.
Dari program di atas, bisa dilihat bahwa tidak semua langkah dikerjakan. Diantara langkah ke-3 dan ke-4 hanya salah satu saja yang dikerjakan. Bila semua langkah dikerjakan, hasil dari program tidak sesuai dengan yang ditargetkan.

Looping (perulangan)
Untuk program tertentu, kita harus mengulang perintah beberapa kali. Kita bisa mengetikan kode perintah sebanyak yang kita butuhkan, tetapi ini akan menjadi masalah apabila kita perlu mengulang perintah sebanyak 100 kali atau 50 kali. Untuk mengatasi masalah ini, kita bisa menggunakan looping. Perhatikan contoh program untuk mencetak tulisan ke layar berikut ini:
  1. angka = 1
  2. Selama angka <=10, ulangi
    1. cetak angka
    2. angka = angka + 1
  3. Program looping selesai
Program di atas akan mencetak angka berturut-turut dari 1 samapi 10. Namun apabila ingin mencetak atau melakukan perintah sebanyak 100 kali maka, kendali perulangan akan sangat bermanfaat sekali.

Read more...

Wednesday, November 10, 2010

Pengenalan Bahasa Pemrograman

Bahasa pemrograman adalah bahasa tiruan yang dirancang untuk mempercepat perhitungan yang dilakukan oleh sebuah mesin, biasanya mesin yang dimaksud adalah komputer. Bahasa pemrograman juga bisa digunakan untuk membuat serangkaian perintah-perintah yang mampu mengendalikan kerja dari mesin, mempercepat algoritma dengan lebih tepat, atau juga sebagai komunikasi manusia dengan mesin.

Banyak bahasa pemrograman yang memiliki aturan tersendiri dalam bentuk penulisan (syntax), dan arti dari penulisan (semantics). Beberapa bahasa pemrograman memiliki definisi yang didasarkan dari dokumen spesifikasi. Sebagai contoh, bahasa pemrograman C didasarkan spesifikasi dari standar ISO. Bahasa pemrograman lain seperti pearl memiliki penerapan yang dominan yang digunakan sebagai referensi.

Bahasa pemrograman yang paling awal diciptakan sebelum adanya komputer. Bahasa ini digunakan untuk mengendalikan tingkah laku dari mesin permainan piano secara otomatis dan alat pemintalan benang dalam industri tekstil. Sekarang ini banyak bahasa pemrograman lain diciptakan, terutama dalam bidang komputer. Sebagian besar bahasa pemrograman tersebut menggambarkan perhitungan dengan gaya pemrograman imperative, sebagai contoh perintah yang berurutan. Meskipun beberapa bahasa pemrograman terutama yang mendukung pemrograman fungsional atau pemrograman logika menggunakan alternatif bentuk penggambaran.

Read more...

Saturday, October 30, 2010

Pengenalan Pemrograman

Pemrograman komputer (computer programming) adalah proses mendesain (designing), menulis (writing), menguji (testing), memperbaiki (debugging), dan merawat (maintaining) kode sumber (source code) dari sebuah program komputer. Source code ini ditulis dalam bahasa pemrograman.

Tujuan dari pemrograman adalah untuk menciptakan program yang bisa menunjukan perilaku tertentu yang sesuai dengan yang diinginkan. Proses menulis source code membutuhkan pengetahuan dan keahlian dalam banyak subjek lain, termasuk pengetahuan mengenai lingkungan dari aplikasi, algoritma khusus dan logika formal.

Dalam ilmu Rekayasa Perangkat Lunak (software enginering) pemrograman termasuk salah satu dari tahap penghembangan perangkat lunak. Dalam perkembangannya, muncul perdebatan yang masih berjalan sampai sekarang, yaitu apakah pemrograman termasuk ke ke dalam ilmu seni, kerajinan tangan atau ilmu teknik. Secara umum, program yang bagus diukur berdasarkan dari ketiga hal tadi, dengan tujuan untuk memproduksi software yang efisien dan dapat berkembang.

secara umum untuk menjadi seorang pembuat program (programmer), tidak dibutuhkan sertifikat khusus atau harus mengikuti ujian standarisasi apapun. Namun bagaimanapun juga untuk menyebut seseorang sebagai pengembang perangkat lunak profesional tanpa adanya sertifikat dari institusi yang terakreditasi adalah ilegal di benyak tempat di dunia.

Said another way, programming is the craft of transforming requirements into something that a computer can execute.
Dengan kata lain pemrograman adalah kerajinan tangan untuk merubah apa-apa saja yang dibutuhkan oleh komputer sehingga komputer dapat menghasilkan program dan dapat menjalankannya (execute).

Read more...

Sunday, October 10, 2010

Kata-kata yang Sudah Dipesan pada C++

Seperti halnya bahasa C, bahasa C++ juga memiliki kata-kata yang sudah dipesan (reserved keywords). Kata-kata tersebut adalah semua kata-kata tepesan dari bahasa c dan ditambah dari bahasa C++ sendiri. Hal ini karena C++ juga dipengaruhi dari bahasa C. Berikut ini adalah kata-kata terpesan dari bahasa C++:

autobreakcasecatch
charclassconstcontinue
defaultdeletedodouble
elseenumexternfloat
forfriendgotoif
intlongmutablenew
operatorprivateprotectedpublic
registerreturnshortsigned
sizeofstaticstructswitch
templatethisthrowtypedef
unionunsignedvirtualvoid
volatilewhile

Read more...

Kata-kata yang Sudah Dipesan

Dalam bahasa C, ada kata-kata yang ssudah dipesan (reserved keyword). Maksudnya adalah kata-kata ini tidak boleh digunakan untuk keperluan selain penulisan syntax. Selain itu juga, kata-kata ini tidak boleh digunakan untuk memberi nama variable, array, struct, fungsi, dan lain-lain. Berikut daftar kata-kata yang sudah dipesan:


autodefaultfloatregister
structvolatilebreakdo
forreturnswitchwhile
casedoublegotoshort
typedefcharelseif
signedunionconstenum
intsizeofunsignedcontinue
externlongstaticvoid

Read more...

Aplikasi Kalkulator Sederhana dengan Bahasa C

Berikut ini adalah program untuk membuat sebuah kalkulator sederhana dengan bahasa C. Di dalam propgram ini saya menggunakan pengulangan DO WHILE, agar kita bisa menentukan apakah kita keluar dari program, atau kita ingin mengulangi operasi. Berikut adalah kode programnya:

#include <stdio.h>
int isprima(int x);
float pangkat (float basis, int n);
float kpk(int x, int y);
float fpb(int x, int y);
main()
{
float X,Y,hasil;
int A,B,pilihan;
int Z;
char ulangi;
do{
printf("Pilihan operasi: ");
printf("\n1. X + Y\n2. X - Y\n3. X x Y\n4. X / Y");
printf("\n5. X Pangkat Y\n6. KPK X dan Y\n7. FPB X dan Y\n8. Cek prima X");
printf("\nPilihan anda: ");scanf("%d",&pilihan);
switch(pilihan)
{
case 1:
printf("\nX = ");scanf("%f",&X);
printf("Y = ");scanf("%f",&Y);
hasil = X + Y;
break;
case 2:
printf("\nX = ");scanf("%f",&X);
printf("Y = ");scanf("%f",&Y);
hasil = X - Y;
break;
case 3:
printf("\nX = ");scanf("%f",&X);
printf("Y = ");scanf("%f",&Y);
hasil = X * Y;
break;
case 4:
printf("\nX = ");scanf("%f",&X);
printf("Y = ");scanf("%f",&Y);
hasil = X / Y;
break;
case 5:
printf("\nX = ");scanf("%f",&X);
printf("Y = ");scanf("%d",&B);
hasil = pangkat(X,B);
break;
case 6:
printf("\nX = ");scanf("%d",&A);
printf("Y = ");scanf("%d",&B);
Z = kpk(A,B);
hasil = Z;
break;
case 7:
printf("\nX = ");scanf("%d",&A);
printf("Y = ");scanf("%d",&B);
Z = fpb(A,B);
hasil = Z;
break;
case 8:
printf("\nX = ");scanf("%d",&A);
Z = isprima(A);
if (Z==1)
printf("X adalah bilangan prima\n");
else
printf("X bukan bilangan prima\n");
break;
default:
printf("Pilihan anda salah!!");
}
if((pilihan<=7) && (pilihan>=1))
printf("Hasil = %f",hasil);

printf("\n");
printf("Ulangi operasi (Y/N)? ");
scanf("%s",&ulangi);
}while((ulangi=='Y')||(ulangi=='y'));
}

int isprima(int x)
{
int n,t=1,s;
if ( x < 2 )
{s = 0;}
else
{
for (n=2;t!=0;n++)
{
t = x%n;
}
n--;
if(n==x)
{s = 1;}
else
{s = 0;}
}
return (s);
}

float pangkat (float basis, int n)
{
int i;
float p;
p = 1;
for (i = 1; i <= n; ++i)
p = p* basis;
return p;
}


float kpk(int x, int y)
{
int w=1,n;
int z;
if (x < y)
{
for (n=1; w != 0; n++)
{ z = y * n;
w = z % x;
}
}
else
{
for (n=1; w != 0; n++)
{ z = x * n;
w = z % y;
}
}
return (z);
}


float fpb(int x,int y)
{
int sisabagi;
float hasil;
if(y<=x && x%y==0)
{
return(y);
}
else if(x<y)
{
hasil=fpb(y,x);
return(hasil);
}
else
sisabagi=x%y;
hasil=fpb(y,sisabagi);
return(hasil);
}

Read more...

Deklarasi, Input, dan Output Structure pada Bahasa C

Structure adalah sebuah tipe data yang bisa menampung banyak tipe data yang berbeda. Dengan structure kita seperti membuat tipe data kita sendiri. Structure terdiri dari beberapa anggota. Anggota dari structure disebut member, member inilah yang merupakan variable biasa, yang menampung data sebenarnya. Member dalam sebuah structure bisa terdiri dari tipe data yang berbeda, misalnya pointer, integer, character, dan lain-lain. Berikut ini contoh structure.

#include <stdio.h>
main()
{
struct mahasiswa //deklarasi structure
{
char nama[30];
char nim[10];
int sks;
int umur;
}data;

printf("Masukan data mahasiswa:\n"); //input data mahasiswa
printf("Nama (tanpa spasi): ");scanf("%s",&data.nama);
printf("NIM : ");scanf("%s",&data.nim);
printf("Jumlah SKS : ");scanf("%d",&data.sks);
printf("Umur : ");scanf("%d",&data.umur);

printf("\n\nData mahasiswa yang dimasukan:"); //cetak data mahasiswa
printf("\nNama : %s",data.nama);
printf("\nNIM : %s",data.nim);
printf("\nJumlah SKS : %d",data.sks);
printf("\nUmur : %d",data.umur);
printf("\n");
}

Read more...

Saturday, October 9, 2010

Perbedaan C dan C++ (bag. II)

Salah satu perbedaan yang paling sering ditemui adalah bahasa C memperbolehkan penugasan (assignment) pointer bertipe void* ke pointer bertipe lain tanpa resiko apapun. Sedangkan dalam bahasa C++, hal ini tidak dapat dilakukan. Permasalahan ini sering ditemui apda kode bahasa C yang menggunakan alokasi memory (malloc). Sebagai contoh, kode berikut ini valid di bahasa C, tetapi tidak di bahasa C++:

void* ptr;
int *x = ptr; /*konversi langsung dari void* ke int* */


atau kode lain:

int *y = malloc(sizeof(int) * 5); /*konversi langsung dari void* ke int* */

Agar kode yang dituliskan bisa dikompilasi dengan benar di bahasa C dan C++, kita harus menggunakan kode yang jelas, seperti contoh:

void* ptr;
int *x = (int *) ptr;
int *y = (int *) malloc(sizeof(int) * 5);


Masalah lain yang dihadapi dalam menyetarakan bahasa C dan C++ adalah bertambahnya kata tercadangkan dalama bahasa C++. Hal ini membuat kata-kata yang semula bisa digunakan sebagai identifier di bahasa C, tidak lagi bisa digunakan di bahasa C++. Sebagai contoh:

struct template
{
int new;
struct template* class;
};


kode di atas adalah kode yang benar dalam bahasa C, tetapi tidak benar dalam bahasa C++. Karena kata-kata "template", "new", dan "class" sudah dipesan (dicadangkan).

Selain yang sudah disebutkan di atas, masih banyak syntax-syntax lain pada bahasa C yang tidak bisa digunakan atau yang memberikan hasil yang berbeda di bahasa C++. Beberapa contohnya:

  • Operator koma bisa memberikan "l-value" pada bahasa C++, teteapi tidak pada bahasa C.
  • Bahasa C tidak mengijinkan typedef digunakan berulang di scope yang sama, sedangkan C++ memperbolehkan penggunaan typedef secara berulang.
  • Konstanta enumerasi selalu bertipe int pada bahasa C, sedangkan pada bahasa C++ merupakan tipe yang berbeda, dan mungkin memiliki ukuran yang berbeda dengan yang bertipe int.
  • Identifier pada C++ tidak boleh menggunakan tanda underscore ( "_" ) dua kali atau lebih secara berurutan di posisi manapun, sedangkan pada bahasa C hanya tidak boleh digunakan di awal nama.
  • C++ merubah sebagian fungsi pustaka standar untuk menambahkan const pemilih. Contohnya, strchr mengembalikan nilai char* pada bahasa C, tetapi mengembalikan nilai const char* pada C++
Selain yang sudah saya sebutkan, masih banyak lagi perbedaan syntax antara bahasa C dan C++. Namun biasanya perbedaan ini terletak pada tingkat advance, untuk tingkat basic mungkin tidak ada perbedaan yang signifikan.

Read more...

Sunday, October 3, 2010

Fungsi Mengecek Bilangan Prima

Dalam matematika, bilangan prima adalah bilangan asli yang lebih besar dari 1, yang faktor pembaginya adalah 1 dan bilangan itu sendiri. 2 dan 3 adalah bilangan prima. 4 bukan bilangan prima karena 4 bisa dibagi 2. Saya telah membuat kode program dengan bahasa C untuk menguji apakah suatu bilangan termasuk bilangan prima atau tidak. Berikut adalah kode programnya.

#include <stdio.h>
int isprima(int x);
main()
{
int a,s;
printf("Masukan bilangan: ");scanf("%d",&a);
printf("Bilangan prima: ");
s = isprima (a);
if (s == 0)
{printf("TIDAK");}
else
{printf("YA");}
printf("\n");
}

int isprima(int x)
{
int n,s,t=1;
if ( x < 2 )
{s = 0;}
else
{
for (n=2;t!=0;n++)
{
t = x%n;
}
n--;
if(n==x)
{s = 1;}
else
{s = 0;}
}
return (s);
}

Read more...

Fungsi Mencari KPK dengan Bahasa C

Dalam aritmetika dan teori bilangan, kelipatan persekutuan terkecil (KPK) dari dua bilangan adalah bilangan bulat positif terkecil yang dapat dibagi habis oleh kedua bilangan itu. Dalam bahasa Inggris KPK dikenal dengan Least Common Multiple (LCM), sering dijuga disebut sebagai Lowest Common Multiple (LCM) atau Smallest Common Multiple (SCM). Saya telah membuat aplikasi dengan bahasa C untuk mencari KPK dari dua bilangan, berikut kode programnya.

#include <stdio.h>
int kpk(int x, int y);
main()
{
int a,b,c;
printf("Masukan dua buah bilangan\n");
printf("Bilangan pertama : ");scanf("%d",&a);
printf("Bilangan kedua : ");scanf("%d",&b);
c = kpk(a,b);
printf("KPK dari kedua bilangan adalah : %d\n",c);
}

int kpk(int x, int y)
{
int w=1,z,n;
if (x < y)
{
for (n=1; w != 0; n++)
{ z = y * n;
w = z % x;
}
}
else
{
for (n=1; w != 0; n++)
{ z = x * n;
w = z % y;
}
}
return (z);
}

Read more...

Perbedaan C dan C++

Bahasa pemrograman C dan C++ memiliki relasi yang sangat dekat. Hal ini karena bahasa C++ memang dikembangkan dari bahasa C. karena hal inlah seringkali kode bahasa c ditulis dengan IDE (Integrated Development Environment / Lingkungan Pengembangan Terintegrasi). terkadang juga dicampur dengan kode C++ dan dikompilasi dengan compiler dari C++. Meskipun sebagian besar kode bahasa C dapat dikompilasi sebagai kode C++, terdapat beberapa perbedaan yang menyebabkan bahasa C++ bukanlah semata-mata peningkatan dari bahasa C. Bahasa C++ memberikan banyak fitur yang tidak terdapat pada bahasa C.

Bjarne Stroustrup, penemu dari bahasa C++ memeang menyarankan agar perbedaan dari C dan C++ dikurangi sebanyak mungkin agar dapat memaksimalkan antar-operasi dari kedua bahasa tersebut. Ahli lain berpendapat bahwa, karena C dan C++ adalah dua bahasa pemrogaman yang berbeda, persamaan diantara keduanya memang bermanfaat, tetapi tidak vital. Berdasarkan dari pendapat kedua, usaha untuk mengurangi perbedaan dari kedua bahasa tidak seharusnya mengurangi usaha untuk mengembangkan kedua bahasa secara terpisah.

Bebrapa syntax dari bahasa c yang tidak valid atau memberikan hasil yang berbeda apabila dijalankan pada baahsa C++ antara lain:

  • Identifier dari bahasa C++ tidak boleh menggunakan tanda underscore ( "_" ) secara berurutan di posisi manapun. Identifier dari baahsa C tidak boleh dimulai dengan underscore, tetapi boleh menggunakannya secara berurutan di posisi lain.
  • Pada bahasa C dan C++, keduanya bisa mendefinisikan struct secara bersarang atau nested struct (struct dalam struct) tapi cakupan dari keduanya berbeda. Pada C++, nested struct di definisikan hanya di dalam cakupan dari struct diluarnya.
  • Penggunaan fungsi tanpa prototype tidak diperbolehkan pada bahasa C++, meskipun ditulis di atas fungsi main().
Pada blog saya ini, saya hanya akan membuat atau menjelaskan mengenai C++ yang berbeda dengan bahasa C. Hal ini karena mengenai teori dasar seperti seleksi, perulangan, dan urutan, atau dasar-dasar pemrograman yang lain memang tidak berbeda syntax antara bahasa C dan C++

Read more...

Wednesday, September 29, 2010

Angka Dibelakang Koma Bahasa C

Bila kita mencetak tipe data float, maka dengan sendirinya akan terdapat beberapa angka dibelakang koma. Kita bisa mengatur berapa angka yang dicetak dibelakang koma dengan memformat printf. Bila jumlah angka dibelakang koma dikurangi, maka angka didepannya akan dibulatkan. Berikut contoh program sederhana pengaturan angka dibelakang koma.

#include <stdio.h>
main()
{
float a = 22;
float b = 7;
printf("Float 6 angka dibelakang koma: %.6f\n",a/b);
printf("Float 5 angka dibelakang koma: %.5f\n",a/b);
printf("Float 4 angka dibelakang koma: %.4f\n",a/b);
printf("Float 3 angka dibelakang koma: %.3f\n",a/b);
printf("Float 2 angka dibelakang koma: %.2f\n",a/b);
printf("Float 1 angka dibelakang koma: %.1f\n",a/b);
}

Read more...

Input Baris pada C++

Pada bahasa C++, terdapat fungsi untuk mendapatkan input satu baris. Input ini harus di simpan pada array bertipe char. Fungsi yang digunakan adalah cin.getline. fungsi ini memerlukan header file iostream. Format penggunaannya adalah:

cin.getline(NamaArray,BatasKarakter);

Contoh penggunaaanya adalah:

#include <iostream>
using namespace std;
main()
{
char baris[100];
cout << "Masukan baris kalimat: ";
cin.getline(baris,100);
cout << "Kalimat yang anda masukan: " << baris << endl;
return 0;
}

Read more...

Saturday, September 25, 2010

Input Kalimat pada Bahasa C

Seperti pada posting sebelumnya, ada beberapa metode untuk mendapatkan input berupa string pada bahasa C. Tetapi setiap metode memiliki kelemahannya sendiri-sendiri. Untuk itu saya mencoba membuat program yang bisa menginput sebuat kalimat.

Berikut ini adalah contoh program yang saya buat untuk mendapatkan input berupa sebuah kalimat.

#include <stdio.h>
main()
{
char c[200];
int index=0;
printf("Input kalimat: ");
do
{
c[index] = getchar();
index++;
}while(c[index-1]!='\n');
printf("Output: %s\n",c);
}


Apabila program di atas diletakkan pada fungsi main program tersebut akan berjalan dengan lancar. Tetapi untuk menjadikanya terpisah dari fungsi main saya belum bisa membuatnya.

Read more...

Input Character Bahasa C

Untuk mendapatkan input berupa karakter dari keyboard, kita harus memformat scanf() dengan format "%c". Contoh sederhana adalah scanf("%c",&NamaVariable);. Tetapi ada alternatif lain untuk mendapaptkan input berupa karakter, yaitu dengan fungsi getchar()

Fungsi getchar() akan mengembalikan input dari keyboard dan menmgembalikannya sebagai sebuah nilai integer. Contoh sederhana:
#include <stdio.h>
int main ()
{
char c;
printf("Masukan sebuah kalimat, untuk mengakhirinya gunakan tanda titik ( . )");
do {
c=getchar();
putchar (c);
} while (c != '.');
return 0;
}


Program sederhana di atasa adalah sebuah program yang akan meminta input dan mengembalikannya segera setelah tanda titik terbaca.

Read more...

Friday, September 24, 2010

Variasi Input String

Untuk mendapatkan input sebuah character dari keyboard, kita harus memformat scanf menjadi %c, misalnya scanf("%c",&karakter);. atau kita bisa juga menggunakan getchar().

Sedangkan untuk mendapatkan input berupa kata atau string, terdapat beberapa alternatif. Alternatif yang bisa digunakan antara lain dengan memformat scanf() dengan format %s. Berikut contoh penggunaannya:

#include <stdio.h>
main()
{
char kata[100];
printf("Input: ");scanf("%s",&kata);
printf("Output: %s",kata);
}


Kelemahan dari metode ini adalah kita tidak mendapatkan input berupa spasi. Bila kita menggunakan spasi, kata setelah spasi tidak akan tersimpan dalam array karakter.

Cara lain adalah dengan fungsi gets() seperti pada post sebelumnya. Tetapi metode ini juga memiliki kelemahan, yaitu tidak bisa digunakan untuk mengisi data pada member structre. Silahakan pilih metode input string yang disesuaikan dengan kondisi pada programn anda.

Read more...

Wednesday, September 22, 2010

puts() dan gets()

Sebenarnya string adalah sebuah array dari beberapa atau banyak karakter. Jika kita ingin menginput karakter, kita bisa menggunakaan perintah scanf(), dengan parameter char (%c). Sedangkan untuk mendapatkan input berupa sebuah string, kita bisa menggunakan perintah gets(). Untuk mencetak string tersebut kita menggunakan perintah puts(). Berikut adalaah contoh programnya

#include <stdio.h>
main()
{
char nama[100];
printf("Siapakah nama anda? ");
gets(nama);
printf("Selamat datang ");
puts(nama);
printf("\n");
}

Read more...

Tuesday, September 21, 2010

Structure pada Bahasa C

Untuk menyimpan banyak data pada satu variable, biasanya kita menggunakan array. Array mampu menyimpan banyak data dalam satu variable, yaitu dengan ditempatkan dalam index yang berbeda. Tapi kita juga bisa menyimpan banyak data dalam satu index, bahkan dengan tipe data yang berbeda. Untuk dapat melakukan hal ini, kita menggunakan structure.

Structure adalah kumpulan dari beberapa variable yang dikelompokan dalam satu nama untuk kemudahan dalam penggunaan variable-variable tersebut. Structure mampu mengelompokan variable dengan tipe data yang bebrbeda dalam satu nama. Structure sangat diperlukan terutama dalam program-program yang besar. Kareba, biasanya program-program yang besar menggunakan data yang kompleks, yang harus diolah dan digunakan secara bersamaan. Strucutre pada beberapa bahasa pemrograman lain disebut "record", misalnya pascal.

Contoh penggunaan structure misalnya pada seorang mahasiswa. Dalam program, kita bisa membuat mahasiswa sebagai sebuah variable. tapi dalam dunia nyata mahasiswa memiliki banyak data, antara lain alamat, nama, umur, NIM, dll. Pada program yang besar, data-data yang dimiliki mahasiswa harus dikelola secara bersamaan. Dan pada program, kita akan sangat kerepotan apabila menggunakan satu buah variable saja. Untuk mengatasi masalah ini, kita memerlukan structure untuk mengelompokan data dan mempermudah dalam mengolahnya.

Operasi yang bisa dilakukan terhadap structure antara lain, penggandaan (copy), sebagai parameter fungsi, dan sebagai nilai kembalian dari fungsi. Structure juga bisa digabungkan dengan array, yaitu dengan memberi index pada nama structure.

format deklarasi structure adalah sebagai berikut:

struct <NamaStructure>
{
member
member
member
}

Read more...

Perhitungan Saldo Bank dengan Bahasa C

Saya baru saja membuat aplikasi perbankan untuk menghitung saldo berdasarkan prosentase bunga dan jangka waktu yang diberikan. Berikut adalah kode programnya.

#include <stdio.h>
void main()
{
float index,PersenBunga,CashBunga,jangka;
float saldo,saldo2=0;
printf("Masukan saldo : ");scanf("%f",&saldo);
printf("Masukan persen bunga : ");scanf("%f",&PersenBunga);
printf("Masukan jangka waktu : ");scanf("%f",&jangka);
for(index=0;index<jangka;index++)
{
CashBunga = (PersenBunga * saldo) / 100;
saldo2 = saldo + CashBunga;
saldo = saldo2;
}
printf("Saldo anda dalam jangka %.0f bulan adalah : %f\n",jangka, saldo2);
}

Read more...

Sunday, September 19, 2010

Pengenalan Bahasa C++

C++(baca:C plus plus) adalah bahasa pemrograman untuk tujuan umum. Bahasa ini memiliki fitur baik dari bahasa pemrograman tigkat tinggi dan bahasa pemrograman tingkat rendah. C++ dikembangkan oleh Bjarne Stroustrup yang dimulai pada tahun 1979 di Bell Labs sebagai pengembangan dari bahasa C, Nama awal dari C++ adalah C with classes ( bahasa C yang dilengkapi dengan class). Nama C++ mulai digunakan di tahun 1983.

Sebagai sebuah bahasa pemrograman yang paling popular, C++ digunakan secara luas di industri pengembangan software. Beberapa contoh penggunaannya termasuk software sistem, software aplikasi, driver perangkat, software tertanam, dan software hiburan seperti video game. Bebrapa kelompok menyediakan ssoftware compiler untuk bahasa C++, baik yang cuma-cuma (gratis) ataupun berbayar. Bahasa C++ juga mempengaruhi pembuatan bahasa pemrograman lainnya, seperti C# dan Java,

Pengembangan C++ dimulai sebagai pengembangan dari bahasa C. Kemudian ditambahakan class, fungsi virtual dan fitur-fitur lainnya. Setelah pengembangan selama bertahun-tahun, standar dari bahasa pemrograman C++ kemudian disahkan pada tahun 1998 oleh ISO/IEC. Standar ini masih berlaku sampai sekarang, namun demikian standar berikutnya sedang dalam pengembangan dan diberi nama resmi C++0x.

Read more...

Cetak Array dengan Pointer

Selain cara yang sudah biasa digunakan, array bisa dicetak dengan menggunakan pointer. Berikut ini adalah program sederhana untuk mencetak array dengan menggunakan pointer.

#include <stdio.h>
void main()
{
int data[10]={1,2,3,4,5,6,7,8,9,10};
int *penunjuk;
int index;
penunjuk = data;
printf("Data array diakses dengan pointer\n");
for (index=0;index<10;index++)
{
printf("%d\n",*penunjuk++);
}
}


Berikut ini beberapa penjelasan dari program di atas.

int data[10]={1,2,3,4,5,6,7,8,9,10};
int *penunjuk;
int index;


Bagian ini adalah deklarasi variable, yang terdiri dari integer, array dan pointer.

penunjuk = data;

Bagian ini menghisi variable penunjuk dengan nilai variable data. Variable penunjuk adalah sebuah variable pointer, sehingga yang diterima dari variable data adalah alamat tempat variable tersebut berada di memory. Karena data adalah variable array, alamat yang diberikan adalah alamat dari index ke-0 atau element pertama dari array tersebut.

printf("Data array diakses dengan pointer\n");
for (index=0;index<10;index++)
{
printf("%d\n",*penunjuk++);
}


Bagian ini adlah bagian yang mencetak array. Perintah looping (for) digunakan untuk membatasi jumlah element array yang dicetak. Sedangkan bagian pencetakan (printf) mencetak isi dari alamat yang ditunjukan oleh pointer. Karena pointer menunjuk ke alamat array, maka yang di cetak adalah isi dari alamat tersebut, yaitu isi dari array. Pointer juga melakukan increment, yaitu setelah selesai mencetak, nilainya bertambah satu. Karena pointer berisi alamat, maka setelah mencetak, alamat yang ditunjuk juga bergeser ke alamat sebelahnya di memory, yaitu isi array selanjutnya.

Read more...

Saturday, September 18, 2010

Input dan Output pada C++

Sebenarnya semua printah dalam bahasa C bisa digunakan dalam bahasa C++. Demikian juga Perintah input dan output. Tetapi, bahasa C++ memiliki perintah input dan output sendiri. Pada bahasa C++, perintah input dan output adalah cin dan cout. Perintah tersebut memerlukan header file <iostream> Berikut adalah contoh penggunaaan.

#include <iostream>
using namespace std;
main()
{
int panjang,lebar,luas;
cout <<" Masukan panjang persegi ";
cin >> panjang;
cout <<" Masukan lebar persegi ";
cin >> lebar;
luas = lebar * panjang;
cout << "Luas pesegi tersebut adalah" << luas << endl;
}


Bila coding dan kompilasi benar, program di atas akan menghasilkan program penghitungan luas persegi.

Read more...

Thursday, September 16, 2010

Pemrograman Bahasa C++ di Linux

Pemrograman bahasa C++ di linux tidak jauh berbeda dengan bahasa C di linux. Compiler yang saya gunakan juga masih GCC. Perbedaan hanya terletak pada pemberian ekstensi file yang kita tulis dengan text editor.

Pada bahasa C, ekstensi yang digunkaan adalah .c, sedangkan pada bahasa C++ ekstensi yang digunkaan adalah .cpp. Selain itu kode compiler yang dituliskan pada terminal juga diganti, yaitu dari gcc -o menjadi gx++ -o.

Sekarang kita ketik kode program berikut dengan text editor:

#include <iostream>
using namespace std;
main()
{
cout << "Hello Linux world"; << endl;
return 0;
}


setelah selesai memulis kode program, kemudian simpan tulisan kita dengan ekstensi .cpp, misalnya helocpp.cpp. Sama halnya ketika kita ingin mengkompilasi program bahasa C dil linux, kita buka terminal dan masuk ke direktori/folder tempat kita menyimpan file kode program. Untuk mengkompilasi kode program, kita ketikan pada terminal

g++ -o helocpp helocpp.cpp

Sedang untuk menjalankan program yang telah kita buat, kita ketikan

./helocpp

Read more...

Monday, September 6, 2010

Fungsi Penghitungan Bilangan Berpangkat

Berikut ini adalah fungsi untuk menghitung bilangan berpangkat. Fungsi yang sangat sederhana dengan menggunakan pengulangan dan memakai metode call by value. Berikut kode programnya

#include <stdio.h>
int pangkat (int m, int n);
main()
{
int i,dasar;
printf("\nMasukan bilangan dasar: ");
scanf("%d",&dasar);
printf("Masukan pangkat: ");
scanf("%d",&i);
printf("Hasil = %d\n",pangkat(dasar,i));
return 0;
}

int pangkat (int basis, int n)
{
int i, p;
p = 1;
for (i = 1; i <= n; ++i)
p = p* basis;
return p;
}

Read more...

Sunday, September 5, 2010

Konverter Suhu dengan Bahasa C

Berikut ini adalah program sederhana untuk mengkonversi satuan suhu antara Celcius, Fahrenheit dan Reamur. Program ini dibuat di lingkungan Linux, dengan compiler GCC. Selamat mencoba.

#include <stdio.h>
int main()
{
int suhuawal;
float celcius,fahrenheit,reamur;
printf("\nBerikut ini adalah program konversi suhu");
printf("\nPilih satuan suhu awal:\n1. Celcius\n2. Fahrenheit\n3. Reamur");
printf("\nPilihan: ");scanf("%d",&suhuawal);
if(suhuawal==1)
{
printf("\nMasukan nilai Celcius: ");scanf("%f",&celcius);
fahrenheit=(9*celcius)/5+32;
reamur=(4*celcius)/5;
printf("Hasil konversi:\nCelcius= %f\nFahrenheit= %f\nReamur= %f\n",celcius,fahrenheit,reamur);
}
else if(suhuawal==2)
{
printf("\nMasukan nilai Fahrenheit: ");scanf("%f",&fahrenheit);
celcius=(fahrenheit-32)*5/9;
reamur=(4*celcius)/5;
printf("Hasil konversi:\nCelcius= %f\nFahrenheit= %f\nReamur= %f\n",celcius,fahrenheit,reamur);
}
else if(suhuawal==3)
{
printf("\nMasukan nilai Reamur: ");scanf("%f",&reamur);
celcius=(5*reamur)/4;
fahrenheit=(9*celcius)/5+32;
printf("Hasil konversi:\nCelcius= %f\nFahrenheit= %f\nReamur= %f\n",celcius,fahrenheit,reamur);
}
else
printf("\nPilihan anda salah!!!");
}

Read more...

Thursday, September 2, 2010

Membuat Array yang Baik

Pada bahasa C, deklarasi array bisa dilakukan tanpa memberikan batas ukuran. Meskipun kita memberikan batas ukuran, apabila pengisian elemen array melebihi batas pun array akan secara otomatis memperlebar ukurannya. Perhatikan contoh beberapa deklarasi array berikut:

1. int data[]={5,9,7,6,4};
2. int data[5]={5,9,7,6,4};
3. int data[100]={5,9,7,6,4};

Dari ketiga contoh di atas, deklarasi array yang paling baik adalah deklarasi yang ketiga. Pada deklarasi pertama dan kedua batas array akan secara otomatis mengikuti jumlah elemen yang dimasukan ketika program berjalan.

Pengisian elemen array adalah dengan memasukan nilai ke alamat-alamat memory secara berurutan. Pada deklarasi pertama, program secara otomatis memesan tempat pada memory sesuai dengan jumlah element yang dimasukan. Dalam hal ini jumlahnya adalah 5. Sedang pada deklarasi kedua, program akan memesan memory 5 buah sesuai dengan batasan yang kita berikan sewaktu deklarasi. Setelah program kita jalankan, dan pada program ada instruksi untuk menambah isi array, maka akan ditempatkan disebelah memory yang terakhir digunakan sewaktu deklarasi. Apabila memory tersebut memang masih kosong, dan belum digunakan untuk variable lain, maka hal ini tidak akan menjadi masalah. tapi apabila memory tersebut sudah digunakan oleh variable lain, maka akan terjadi tabrakan memory dan menimbulkan error.

Untuk memngatasi masalah ini, sebaiknya kita mendeklarasikan array seperti contoh ketiga. Apabila kita berencana untuk mengisi array dengan jumlah data yang banyak, sebaiknaya kita juga memesan lokasi memrory yang banyak, sesuai kebutuhan. Pada contoh ketiga kita memberikan batas seratus lokasi memory. Meskipun kita hanya mengisi dengan 5 buah data, tapi program sudah memesan lokasi memory sebanyak 100 buah. Dan lokasi memory yang sudah dipesan tadi tidak akan digunakan untuk variable lain. Dengan demikian apabila dalam jalannya program ada perintah untuk menambah jumlah data array, tidak akan terjadi error.

Read more...

Wednesday, September 1, 2010

Pemrograman Bahasa C di Linux

Mulai beberapa minggu yang lalu, saya menggunakan Ubuntu 10.04 untuk OS saya. Secara otomatis mengenai pemrigraman juga saya sesuaikan untuk OS linux. Tapi sebenarnya, pemrograman bahasa C di linux tidak jauh berbeda dengan di Windows. Mengenai compiler, saya menggunakan gcc, biasanya sudah terinstall semenjak kita menginstall linux. Langkah-langkah pembuatan program di Linux adalah sebagai berikut:

1. Coding

Pertama-tama kita harus menulis kode program kita. Kode program bisa kita tulis di text editor, kalau yang terdapat di Ubuntu saya text editornya adalah gedit. Misalnya saja kita membuat kode program yang paling terkenal, yaitu "hello world". Kodenya adalah sebagai berikut:

#include <stdio.h>
void main()
{
printf("Hello World");
}

Setelah selesai menulis kode program, kemudian simpan dengan ekstensi file ".c" misalnya helo.c.

2. Compile
Setelah kode program di simpan, kita buka terminal, bila di Windows biasanya disebut command prompt. Cara membuka terminal, arahkan mouse ke kiri atas, buka applications->accessories->Terminal. Dari terminal, masuk ke folder atau directory tempat kita menyimpan kode program tadi, perintahnya adalah:

cd <namafolder>.

Setelah berada di folder yang sama, kita kompilasi (compile) program yang sudah kita buat dengan text editor tadi, perintahnya adalah,

gcc -o helo<nama hasil> helo.c<nama file>

Penulisan nama file yang akan dikompilasi harus sama persis dengan file yang kita simpan. Sedang untuk nama hasil kompilasi terserah kita.

3. Running
Setelah file dikompilasi, kita bisa menjalankan program bahasa C yang sudah kita buat dengan perintah:

./helo<namahasil>

Nama file yang ditulis juga harus sama persis dengan nama hasil kompilasi pada proses sebelumnya.

Read more...

Tuesday, August 24, 2010

Array Dua Dimensi

Sebelumnya kita sudah mengenal array, yaitu barisan data yang terdapat dalam satu variable dan dipisahkan dengan index. Pada array sebelumnya data yang kita miliki hanya satu baris saja. tetapi sebenarnya data yang tersimpan pada array tidak hanya sebuah baris saja.

Sebenarnya array adalah sebuah himpunan data. Pada array satu dimensi hanya terdapat satu himpunan saja. Kita bisa membuat himpunan dalam himpunan itu sendiri. Dengan bahasa lain kita bisa membuat array dalam array. Atau yang lebih umum disebut adalah kita bisa membuat array dua dimensi. Umumnya array dua dimensi digambarkan sebagai baris dan kolom. Berikut pendeklarasian array dua dimensi:

int data[3][4];

Dari deklarasi di atas, array akan memiliki 3 baris dan 4 kolom, bila digambarkan dengan tabel akan seperti:

data[0][0]data[0][1]data[0][2]data[0][3]
data[1][0]data[1][1]data[1][2]data[1][3]
data[2][0]data[2][1]data[2][2]data[2][3]

Untuk pengisian nilai (assignment/penugasan) array dua dimensi formatnya adalah sebagai berikut:

int data[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

Read more...

Friday, August 20, 2010

Aku dan BlankOn Ombilin II

Ketika saya menginstall BlankOn, saya tidak menemui kesulitan sama sekali. Petunjuk instalasinya pun mudah dipahami. Setelah proses instalasi selesai, kita juga tetap bisa masuk ( booting ) ke Windows dengan grub loading.

Setelah beberapa hari menggunakan BlankOn, saya mencoba untuk menambah satu lagi OS di hardisk saya. kemudian saya meminjam CD Ubuntu 10.4 dari teman saya. proses instalasi Ubuntu sama persi dengan blankOn. Tapi setelah instalasi selesai, saya agak kaget karena sewaktu booting, tidak terdapat pilihan untuk booting ke windows. Dengan kata lain grun loading dari Ubuntu 10.4 tidak dapat mendeteksi OS windows.

Untuk mengatasi masalah ini, saya menggunakan tool yang ada di Hirens boot CD. Namun cara yang agak saya "paksakan" gagal. Malah akibat dari pemaksaan tersebut, komputer saya sama sekali tidak dapat booting. Dilayar tampak tulisan yang mengindikasikan bahwa di hardisk saya terdapat virus. Kemudian saya mencoba menginstall ulang windows, tapi meskipun CD windows terdeteksi, proses instalasi tidak berjalan, hanya sampai "inspecting your computer hardware configuration".

Karena komputer saya sama sekali tidak bisa digunakan, saya ke warnet untuk googling mencari cara memperbaiki hardisk saya. Akhirnya saya menemukan software Bootable AVG rescue CD. Yaitu software antivirus yang mampu menscan hardisk sebelum booting OS. Tapi dengan software inipun hardisk saya tidak terdeteksi.

Saya hampir putus asa dan membawa komputer saya ke servis. Tapi kemudian saya iseng menginstall BlankOn di komputer saya yang tidak bisa di install windows tersebut. Ternyata install BlankOn bisa berhasil tanpa ada masalah sama sekali. Karena inilah saya sangat kagum dengan Linux.

Read more...

Wednesday, August 18, 2010

Aku dan BlankOn Ombilin

BlankOn adalah salah satu distro linux yang dikembangkan oleh orang Indonesia sendiri. kalo dari yang saya lihat, sepertinya BlankOn diturunkan atau dikembangkan dari Ubuntu. sekarang ini yang saya pergunakan di komputer saya adalah BlankOn Ombilin.

Sebelumnya saya sudah mencoba beberapa distro lain, misalnya Ubuntu, Debian, Fedora(gagal install), dan IGN(gagal install). Pengalaman saya mengenai distro-distro sebelum BlankOn, rasanya seumanya agak sulit untuk digunakan, dan terlalu basic. Basic maksud saya adalah tidak ada software-software dasar, misalnya, codec buat audio/video, tidak bisa mendeteksi modem GSM, dan lain lain. Sebenarnya cara untuk mengatasi masalah tersebut di internet memang banyak, tapi saya sulit mempraktekanya dan sering gagal.

Akhirnya saya mencoba blankOn Ombilin, dan sudah banyak software-software dasar yang terinstall. Yang paling saya suka adalah bisa mendeteksi modem GSM saya, meskipun terkadang tidak terdeteksi juga. Karena buat saya komputer tanpa internet sama saja dengan DVD player dengan keyboard alias pemutar multimedia saja. Bila anda ingin mencoba menginstall BlankOn atau sekedar mencicipi sja, silahkan download di http://www2.blankonlinux.or.id/unduh.

Read more...

Wednesday, August 11, 2010

Variable dan Pointer

Program berikut ini adalah contoh pengertian pointer dan variable. Perhatikan program dibawah ini untuk memahami mengenai pointer. Berikut kodenya:

#include <stdio.h>
#include <conio.h>
void main()
{
int X;//deklarasi var biasa
int *ptrY; //deklarasi var pointer
clrscr();
X=54; //pengisian nilai variable X
ptrY=&X; //Mengisikan alamat X ke pointer Y
printf("\nX = %d",X); //isi dari var X
printf("\n&X = %u",&X); //alamat memory var X
printf("\n*(&X) = %u",*(&X)); //isi di alamat pada var X
printf("\nptrY = %u",ptrY);//isi dari var pointer ptrY
printf("\n*ptrY = %d",*ptrY);//isi di alamat pada var ptrY
printf("\n&ptrY = %u",&ptrY);//alamat memory var ptrY
getch();
}

Read more...

Akses Array dengan Pointer

Pointer juga bisa digunakan untuk mengakses array. Berikut ini adalah kode untuk mencetak array menggunakan pointer

#include <stdio.h>
#include <conio.h>
void main()
{
int Nilai[5]={55,75,60,90,80};
for(int i=0;i<5;i++)
{
//akses dengan indeks array
printf("\nNilai[%d] = %d",i,Nilai[i]);
//akses dengan pointer
printf("\n*(Nilai+%d)= %i\n",i,*(Nilai+i));
}
getch();
}

Read more...

Tuesday, August 10, 2010

Fungsi Tukar

Setelah mengetahui tentang pointer, kita bisa membuat fungsi dengan pemanggilan melalui alamat (call by reference). Berikut kode programnya:

#include <stdio.h>
#include <conio.h>

void tukar(int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}

void main()
{
clrscr();
int x=3, y=5;
printf("\nNilai x dan y semula");
printf("\nx = %d y = %d",x,y);
printf("\n\nx berada pada alamat: %d",&x);
printf("\ny berada pada alamat: %d",&y);
tukar(&x,&y);
printf("\n\nNilai x dan y kemudian");
printf("\nx = %d y = %d",x,y);
getch();
}

Fungsi ini tidak mengembalikan nilai ke fungsi main, tapi fungsi ini merubah nilai di fungsi main berdasarkan alamat yang diberikan. Karena yang diberikan adalah alamat, jadi fungsi tukar tidak memperdulikan nama variable. Fungsi tukar ini nantinya akan banyak digunakan pada materi sorting.

Read more...

Saturday, August 7, 2010

Pointer

Arti dari pointer adalah penunjuk. Dalam bahasa C, variable pointer adalah variable yang menyimpan alamat memory. Alamat ini menunjukan lokasi dari sebuah variable. Pada pointer terdapat dua operator, yaitu ampersand (&) dan asterix (*). Operator & menghasilkan alamat dari suatu variable. Operator * menghasilkan nilai yang berada pada sebuah alamat yang ditunjuk.

Seperti halnya variabel yang lain, variabel pointer juga harus dideklarasikan terlebih dahulu sebelum digunakan. Format deklarasi pointer adalah:

<tipe_data> *<nama_variabel>
Contoh :
int *ptrX;
ptrX adalah variabel pointer untuk tipe data integer


Kegunaan dari pointer antara lain:
1. Calling by reference pada fungsi.
2. Mengirimkan array dan string dari suatu fungsi ke fungsi lain.
3. Memudahkan dalam manipulasi array.
4. Manipulasi memory dalam system.
5. Membuat struktur data dinamis seperti linklist, tree, graph.

Read more...

Thursday, August 5, 2010

Array Operation

Saya sudah membuat beberapa posting tentang operasi yang bisa dilakukan pada array, misalnya menambah (add), mengurangi(delete), mengganti (edit), dan melihat (view) satu index data saja. Setelah membuat post tentang fungsi, sekarang saya akan menggabungkan semua operasi array tersebut.

Dalam aplikasi array ini, saya menggunakan variable array dan variable biasa secara global. Hal ini untuk memudahkan dalam pemanggilan fungsi. berikut adalah kode programnya:

#include <stdio.h>
#include <conio.h>
void SemuaData();
void TambahAwal();
void TambahAkhir();
void SisipData();
void HapusData();
void HapusAkhir();
void HapusTengah();
void EditData();
void LihatData();
void InputData();
void opsi();
int data[100]={0};
int BanyakData,IndexAkses,BanyakAkses=0,index;

void main()
{
int pilihan,LetakAkses;
do
{
clrscr();
printf("Pilihan operasi: ");
printf("\n1. Input data");
printf("\n2. Tambah data");
printf("\n3. Ubah data");
printf("\n4. Hapus data");
printf("\n5. Lihat data");
printf("\n6. keluar program");
printf("\n\nPilihan anda: ");
scanf("%d",&pilihan);
switch(pilihan)
{
case 1:
clrscr();
InputData();
SemuaData();
getch();
break;
case 2:
do
{
clrscr();
printf("Letak penambahan data:");
printf("\n1. awal");
printf("\n2. sisipkan");
printf("\n3. akhir\n\n");
printf("pilihan anda: ");
scanf("%d",&LetakAkses);
switch(LetakAkses)
{
case 1:
do
{
clrscr();
TambahAwal();
SemuaData();
opsi();
scanf("%d",&pilihan);
}while(pilihan==1);
break;
case 2:
do
{
clrscr();
SisipData();
SemuaData();
opsi();
scanf("%d",&pilihan);
}while(pilihan==1);
break;
case 3:
do
{
clrscr();
TambahAkhir();
SemuaData();
opsi();
scanf("%d",&pilihan);
}while(pilihan==1);
break;
}
}while(pilihan==1);
break;
case 3:
do
{
clrscr();
EditData();
SemuaData();
opsi();
scanf("%d",&pilihan);
}while(pilihan==1);
break;

case 4:
do
{
clrscr();
HapusData();
SemuaData();
opsi();
scanf("%d",&pilihan);
}while(pilihan==1);
break;

case 5:
do
{
clrscr();
LihatData();
opsi();
scanf("%d",&pilihan);
}while(pilihan==1);
break;
}
printf("\n\nKeluar?\n");
printf("1. YA\n");
printf("2. TIDAK\n");
scanf("%d",&pilihan);
}while(pilihan==2);
}

void InputData()
{
printf("Jumlah input data: ");
scanf("%d",&BanyakData);
printf("Masukan data:\n");
for(index=0;index<BanyakData;index++)
{
printf("Data ke-%d: ",index+1);
scanf("%d",&data[index]);
}
}

void SemuaData()
{
printf("Data anda:");
for(index=0;index<BanyakData;index++)
printf("\nData ke-%d adalah: %d",index+1,data[index]);
}

void TambahAwal()
{
printf("Jumlah penambahan data:");
scanf("%d",&BanyakAkses);
for(index=0;index<BanyakData;index++)
{
data[BanyakData+BanyakAkses-index-1]=data[BanyakData-1-index];
}
printf("Masukan data tambahan:\n");
for(index=0;index<BanyakAkses;index++)
{
printf("Data ke-%d: ",index+1);
scanf("%d",&data[index]);
}
BanyakData=BanyakData+BanyakAkses;
}

void SisipData()
{
printf("Jumlah penambahan data: ");
scanf("%d",&BanyakAkses);
printf("Sisipkan pada urutan: ");
scanf("%d",&IndexAkses);
for(index=0;index<BanyakData-IndexAkses+1;index++)
{
data[BanyakData+BanyakAkses-index-1]=data[BanyakData-index-1];
}
printf("Masukan data:\n");
for(index=0;index<BanyakAkses;index++)
{
printf("Data ke-%d : ",index+1);
scanf("%d",&data[index+IndexAkses-1]);
}
BanyakData=BanyakData+BanyakAkses;
}

void TambahAkhir()
{
printf("Jumlah data: ");
scanf("%d",&BanyakAkses);
printf("Masukan data: \n");
for(index=0;index<BanyakAkses;index++)
{
printf("Data ke-%d: ",index+1);
scanf("%d",&data[BanyakData+index]);
}
BanyakData=BanyakData+BanyakAkses;
}

void EditData()
{
clrscr();
printf("Edit pada urutan: ");
scanf("%d",&IndexAkses);
printf("Data baru: ");
scanf("%d",&data[IndexAkses-1]);
}

void HapusData()
{
printf("Hapus pada urutan: ");
scanf("%d",&IndexAkses);
for(index=0;index<BanyakData-IndexAkses;index++)
{
data[IndexAkses-1-index]=data[IndexAkses-index];
}
BanyakData=BanyakData-1;
}

void LihatData()
{
clrscr();
printf("Lihat pada urutan: ");
scanf("%d",&IndexAkses);
printf("Data yang anda minta: %d",data[IndexAkses-1]);
}

void opsi()
{
printf("\n\nPilihan berikutnya:\n");
printf("1. Ulangi operasi\n");
printf("2. Kembali\n");
}

Read more...

Fungsi Faktorial Iteratif

Dalam matematika, faktorial dari bilangan asli n adalah hasil perkalian antara bilangan bulat positif yang kurang dari atau sama dengan n. Faktorial ditulis sebagai n! dan disebut n faktorial. Sebagai contoh, 7! adalah bernilai 7×6×5×4×3×2×1 = 5040. Sedang di bawah ini adalah program dengan bahasa C untuk mencari nilai faktorial dari suatu bilangan dengan fungsi iteratif:

#include <stdio.h>
#include <conio.h>

/* prototype fungsi factorial() */
long int faktorial(int N);

void main()
{
int N;
long int fak;
printf("Berapa factorial ? "); scanf("%i",&N);
/* pemanggilan fungsi factorial() */
fak = faktorial(N);
printf("%i factorial = %ld\n", N, fak);
getch();
}
/* definisi fungsi factorial */
long int faktorial(int N)
{
int I;
long int F = 1;
if(N<=0)
return(0);
for(I=2; I<=N; I++)
F = F * I;
return(F);
}

Read more...

Mencari FPB dengan Fungsi Rekursif

pada matematika, FPB ( Faktor persekutuan terbesar ) adalah faktor pembagi yang sama antara dua bilangan dengan nilai terbesar. Nilai FPB dari dua buah bilangan dapat dicari dengan fungsi rekursi. Pada program ini saya melewatkan parameter ke fungsi dengan call by value. Berikut adalah programnya:

#include <stdio.h>
#include <conio.h>
#include <math.h>
int fpb(int x,int y)
{
int hasil,sisabagi;
if(y<=x && x%y==0)
{
return(y);
}
else if(x<y)
{
hasil=fpb(y,x);
return(hasil);
}
else
sisabagi=x%y;
hasil=fpb(y,sisabagi);
return(hasil);
}

main()
{
int hasil,m,n;
printf("Masukkan bilangan pertama :");
scanf("%d",&m);
printf("Masukkan bilangan kedua :");
scanf("%d",&n);
hasil=fpb(m,n);
printf("\nFPB dari kedua angka tersebut adalah %d",hasil);
getch ();
}

Read more...

Fungsi Rekursif

Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri, baik secara langsung maupun tidak langsung. Pemanggilan fungsi rekursif secara langsung berarti dalam fungsi tersebut terdapat perintah untuk memanggil dirinya sendiri sedangkan secara tidak langsung berarti fungsi rekursif memanggil 1 atau lebih fungsi lain sebelum memanggil dirinya sendiri.

Fungsi Rekursif akan terus berjalan sampai kondisi berhenti terpenuhi, oleh karena itu dalam sebuah fungsi rekursif perlu terdapat 2 blok penting, yaitu blok yang menjadi titik berhenti dari sebuah proses rekursi dan blok yang memanggil dirinya sendiri. Fungsi rekursif tidak selalu lebih jelek daripada iteratif. Ada kalanya sebuah fungsi rekursif justru mempermudah penyelesaian masalah yang ditemui pada kasus iteratif (pengulangan).

Meskipun penulisan dengan fungsi rekursif lebih singkat dari fungsi iteratif, tapi fungsi rekursif memiliki kelemahan, yaitu memerlukan memori yang lebih banyak, karena perlu tambahan untuk ‘Activation Record Stack’. Dengan demikian waktu proses lebih lama, karena perlu menjejaki setiap pemanggilan rekursif melalui ‘Activation Record’. Karena setiap pemanggilan fungsi, register dan memory harus di push ke stack maka setelah selesai pemanggilan perlu diadakannya pop stack. untuk mengembalikan memory dan register kembali ke keadaan awal, ini sering disebut sebagai overhead.

Fungsi rekursif sebaiknya digunakan pada saat penyelesaian sulit diselesaikan secara iteratif, dan juga apabila efisiensi secara rekursif sudah memadai.Perlu diperhatikan juga bahwa pemborosan (Redundancy) dapat terjadi dalam
penyelesaian masalah secara rekursif.

Read more...

Wednesday, August 4, 2010

Input dan Cetak Structure

Structure mirip dengan array, hanya saja didalam structure bisa terdapat lebih dari satu jenis type data. Apabila pada array satu index untuk satu data, pada structure satu index bisa untuk beberapa data sesuai dengan keinginan kita. Dengan structure kita seperti membuat tipe data kita sendiri. Berikut ini adalah program untuk menginput dan mencetak structure.

#include <stdio.h>
#include <conio.h>
#include <iostream.h>
/*deklarasi structure sebelum fungsi main*/
struct databuku
{
char kodebuku[10];
char namabuku[50];
int tahunterbit;
char pengarang[50];
int harga;
}buku[100];

/*data buku menjadi tipe data sedangkan buku menjadi nama variable. Pada hal ini buku adalah array yang berisi structure*/
void main()
{
int i,x,jumlahbuku;
printf("Jumlah buku: ");
scanf("%d",&jumlahbuku);

/*input data structure*/
for(i=0;i<jumlahbuku;i++)
{
printf("\nKode buku : ");
/*fungsi cin.getline untuk menginput dalam satu baris, maximal karakter adalah yang sesuai dengan yang telah ditentukan (pada perintah ini batasnya 20 karakter)*/
cin.getline(buku[i].kodebuku,20);
printf("Nama buku : ");
cin.getline(buku[i].namabuku,30);
printf("Tahun terbit: ");
scanf("%d",&buku[i].tahunterbit);
printf("Pengarang : ");
cin.getline(buku[i].pengarang,50);
printf("Harga : ");
scanf("%d",&buku[i].harga);
}

/*cetak data structure*/
clrscr();
printf("\nBuku anda:");
for(x=0;x<jumlahbuku;x++)
{
printf("\nBuku ke-%d\n",x+1);
printf("\nKode buku : ");printf("%s",buku[x].kodebuku);
printf("\nNama buku : ");printf("%s",buku[x].namabuku);
printf("\nTahun terbit: %d",buku[x].tahunterbit);
printf("\nPengarang : ");printf("%s",buku[x].pengarang);
printf("\nHarga buku : %d",buku[x].harga);
}
getch();
}

Read more...

Tuesday, August 3, 2010

Operasi Pada Persegi Dengan C++

Berikut ini saya membuat aplikasi untuk mencari elemen-elemen pada bangun persegi dengan menggunakan bahasa C++.

#include <stdio.h>
#include <conio.h>
void main()
{
float panjang,lebar,luas,keliling;
int ulangi;
do
{
clrscr();
printf("Operasi pada persegi");
printf("\n====================");
printf("\nMasukan elemen dari persegi");
printf("\nBila tidak diketahui, masukan angka 0");
printf("\nPanjang = ");scanf("%f",&panjang);
printf("\nLebar = ");scanf("%f",&lebar);
printf("\nLuas = ");scanf("%f",&luas);
printf("\nKeliling = ");scanf("%f",&keliling);
if (panjang!=0 && lebar!=0)
{
luas=panjang*lebar;
keliling=2*(panjang+lebar);
}
else if(luas!=0 && lebar!=0)
{
panjang=luas/lebar;
keliling=2*(panjang+lebar);
}
else if(luas!=0 && panjang!=0)
{
lebar=luas/panjang;
keliling=2*(panjang+lebar);
}
else if(keliling!=0 && lebar!=0)
{
panjang=(keliling/2)-lebar;
luas=panjang*lebar;
}
else if(keliling!=0 && panjang!=0)
{lebar=(keliling/2)-panjang;
luas=panjang*lebar;
}
else
{
printf("Maaf, informasi tidak mencukupi.");
}
clrscr();
printf("\nPanjang = %f",panjang);
printf("\nLebar = %f",lebar);
printf("\nLuas = %f",luas);
printf("\nKeliling = %f",keliling);
printf("\nUlangi operasi?");
printf("\n1.ya");
printf("\n2.tidak\n");
printf("(Tekan nomor pilihan lalu enter) ");
scanf("%d",&ulangi);
}while(ulangi==1);
}

Kalo ingin download aplikasinya, klik disini.

Read more...

Deret Fibonacci dengan Fungsi Rekursif

Bila pada posting sebelumnya saya menggunakan fungsi iteratif, sekarang saya menggunakan fungsi rekursif untuk mencari urutan fibonacci. Dengan fungsi rekursif, apabila bilangan yang dicari urutannya kecil, maka lebih baik menggunakan fungsi rekursif ini. Berikut ini kodenya:

#include <stdio.h>
#include <conio.h>
int fibonacci(int n);
void main()
{
int bil,urfib,ulangi;
do
{
clrscr();
printf("Bilangan fibonacci urutan ke? ");
scanf("%d",&bil);
urfib=fibonacci(bil);
printf("\nUrutan fibonacci ke %d, adalah %d",bil,urfib);
printf("\n\nApakah anda ingin mengulangi?");
printf("\n1. YA");
printf("\n2. TIDAK (keluar) ");
scanf("%d",&ulangi);
}while(ulangi==1);
}

int fibonacci(int n)
{
int fibonac;
if(n==0)
{
return 0;
}
else if(n==1)
{
return 1;
}
else
fibonac=fibonacci(n-1)+fibonacci(n-2);
return (fibonac);
}

Read more...

Deret Fibonacci dengan Bahasa C

Saya mendapat tugas untuk membuat deret bilangan fibonacci dengan bahasa C. Deret fibonacci tersebut saya buat dengan fungsi iteratif. Berikut adalah sourcecodenya:

Fungsi iteratif
#include <stdio.h>
#include <conio.h>
int fibonacci(int n);
void main()
{
int urfib,bil,ulangi;
do
{
clrscr();
printf("Cari urutan fibonacci ke? ");
scanf("%d",&bil);
urfib=fibonacci(bil);
printf("\n\nUrutan fibonacci ke %d adalah: %d",bil,urfib);
printf("\n\nApakah anda ingin mengulangi?");
printf("\n1.YA");
printf("\n2.TIDAK(keluar)");
printf("\npilihan anda? ");
scanf("%d",&ulangi);
}while(ulangi==1);
}

int fibonacci(int n)
{
int fibonac1=0,fibonac2=1,urutan,fibonac;
for(urutan=1;urutan<=n;urutan++)
{
fibonac=fibonac1+fibonac2;
fibonac2=fibonac1;
fibonac1=fibonac;
printf("\nurutan fibonaci ke %d, adalah %d",urutan,fibonac);
}
return (fibonac);
}

Read more...

Ganjil atau Genap

Berikut ini adalah program untuk menentukan apakah suatu bilangan adalah bilangan ganjil atau genap. Yang baru dari program ini adalah adanya operasi modulus yang dilambangkan dengan tanda persen (%). Modulus artinya sisa pembagian dari suatu bilangan dengan bilanga lain. misalnya 4%2 akan menghasilkan nilai 0, karena 4 bila dibagi 2 akan habis. Contoh lagi 5%2 akan menghasilkan 1, karena 5 dibagi 2 sisanya adalah 1. Berikut adalah contoh programnya:

#include <stdio.h>
#include <conio.h>
int main()
{
int angka,hasil;
printf("Masukan sebuah angka: ");
scanf("%d",&angka);
/*maksud dari kode di bawah ini adalah modulus(sisa pembagian)variable angka terhadap 2.*/
hasil=angka%2;
if(hasil==0)
{
printf("\nAngka yang anda masukan adalah angka genap");
}
else
printf("\nAngka yang anda masukan adalah angka ganjil");
getch();
}

Read more...

Sudah Tua atau Masih Muda

Sebuah program sederhana untuk mengetahui golongan usia seseorang, apakah sudah tua atau masih muda. Perintah-perintah yang digunakan adalah perintah dasar, misalnya seleksi, input dan output.

#include <stdio.h>
#include <conio.h>
int main()
{
int usia;
printf("Masukan usia anda : ");
scanf("%d",&usia);
/*jika syarat if(usia<45) tepenuhi maka perintah dalam blok if akan di eksekusi*/
if(usia<45)
{
printf("ternyata anda masih muda");
}
else
printf("ternyata anda sudah tua.");
getch();
}

Read more...

Jumlah dan Rata - rata Bilangan dengan Bahasa C

Posting saya ini masih seputar perhitungan matematika dengan bahasa C. Tapi kali ini selain praktek pengulangan DO WHILE dan saya menggunakan juga pengulangan FOR. Oh iya, saya juga mulai menggunakan ARRAY. Here's the sourcecode.

#include <conio.h>
#include <stdio.h>
void main()
{
int A[100]={1};
int ulangi,x,y=0,b;
float jumlah=0;
float rata2;
do
{
clrscr();
printf("Berapa banyaknya angka yang ingin anda jumlahkan? ");
scanf("%d",&b);
for (x=0;x<b;x++)
{
printf("\nangka ke-%d adalah: ",++y);
scanf("%d",&A[x]);
}
for (x=0;x<b;x++)
{
jumlah=jumlah+A[x];
}
rata2=jumlah/b;
printf("\nJumlah ke-%d bilangan tersebut adalah %f",b,jumlah);
printf("\nRata-rata dari semua bilangan tersebut adalah %f",rata2);
printf("\n\nUlangi perhitungan?");
printf("\n1.YA");
printf("\n2.TIDAK\n");
scanf("%d",&ulangi);
}
while(ulangi==1);
}

Read more...

Friday, July 30, 2010

Melewatkan Parameter Fungsi

Melewatkan parameter atau mengirimkan data ke fungsi, bisa dilakukan dengan 2 cara, yaitu parsing by value dan parsing by reference. Tapi untuk beberapa fungsi tidak memerlukan parameter apapun, misalnya fungsi untuk mencetak suatu kalimat atau fungsi dengan variable lokal.

Parsing by value

Yang dimaksud dengan parsing by value (call by value) adalah dengan mengirimkan nilai dari variable yang menjadi parameter. Perubahan terhadap argumen yang terjadi di dalam fungsi, tidak akan mempengaruhi nilai dari variable fungsi pemanggil (hanya 1 arah). Pengiriman suatu nilai dapat dilakukan untuk suatu ungkapan, tidak hanya untuk sebuah variabel, elemen array atau konstanta saja, misalnya fungsi (a+2);

Parsing by reference
Parsing by reference (call by reference) adalah pemanggilan dengan cara mengirimkan alamat variable ke fungsi yang dipanggil. Fungsi yang menerima kiriman alamat ini akan menggunakan alamat yang sama untuk mendapatkan nilai datanya. Perubahan nilai di fungsi akan merubah nilai asli di bagian fungsi pemanggilnya. Hal ini karena parsing by reference adalah pengiriman dua arah, yaitu dari fungsi pemanggil ke fungsi yang dipanggil dan juga sebaliknya. Parsing by reference hanya untuk alamat memory saja, tidak dapat dilakukan untuk suatu ungkapan.

Read more...

Variable pada Fungsi

Dalam kaitannya dengan fungsi, variable dibagi menjadi 2 jenis:
1. variable global
2. variable lokal

VARIABLE GLOBAL

Variable global adalah varable yang bisa digunakan di semua fungsi tanpa ada deklarasi di setiap fungsi. Perubahan nilai variable di satu fungsi akan merubah nilai variable secara keseluruhan apabila digunakan oleh fungsi lain. Deklarasi variable global di luar fungsi tertentu, tapi biasanya dibawah header file. Contoh penggunaannya adalah:

#include <stdio.h>
int var=5;
void main()
{dekalrasi dan statement}
int fungsi()
{deklarasi dan statement}

VARIABLE LOKAL
Variable lokal adalah variable yang hanya bisa digunakan di satu fungsi saja, yaitu fungsi dimana variable itu dideklarasikan. Penggunaan nama variable lokal juga bisa sama antara fungsi yang satu dengan fungsi yang lainnya. Deklarasi parameter juga merupakan sebuah deklarasi untuk variable lokal. Apabila dua buah variable lokal pada fungsi berbeda memiliki nama yang sama, perubahan nilai variable di satu fungsi tidak akan mempengaruhi variable di fungsi yang lainnya. contoh penggunaan variable lokal adalah:

#include <stdio.h>
void main()
{
int var=5,able=8;
statemen/perintah;
}

int fungsi_tambah(int a, int b)
{
int var=a,able=b;
int hasil=var+able;
return hasil;
}

Read more...

Thursday, July 29, 2010

Mendefinisikan Fungsi

Komponen-komponen dari fungsi yaitu definisi fungsi dan tubuh fungsi. Sebelum dapat digunakan, fungsi harus didefinisikan terlebih dahulu. Definisi fungsi terdiri atas:

  • prototype fungsi
  • tipe kembalian
  • nama fungsi
  • parameter/argumen
Format penulisan prototype fungsi:
tipe_data nama_fungsi(deklarasi parameter);

Format definisi fungsi:
tipe_data nama_fungsi(deklarasi parameter)
{
deklarasi, deklarasi;
perintah, perintah;
return ();
}


Prorotype fungsi
Penulisan prototipe fungsi setelah kita menuliskan header file( stdio.h, conio.h, dll ). Protoipe fungsi tidak perlu dituliskan apabila kita mendefinisikan fungsi di atas fungsi utama( main ). prototype fungsi berguna untuk memberi tahu compiler mengenai tipe data dari hasil yang dikembalikan fungsi kepada pemanggilnya,jumlah parameter, tipe parameter, dan urutan parameter yang harus diberikan kepada fungsi oleh pemanggilnya. Prototype fungsi dipakai oleh compiler untuk melakukan validasi terhadap function-call (pemanggilan fungsi). Dengan demikian, kompilator dapat membantu programer dalam menangkap kesalahan-kesalahan dalam program.
Tipe data pengembalian
Tipe data pengembalian dari suatu fungsi menyatakan tipe data dari hasil yang dikembalikan fungsi kepada pemanggilnya. Type hasil Void menyatakan bahwa fungsi tidak mengembalikan apa-apa. Type hasil yang tidak ditulis dianggap oleh kompilator sebagai int.
Nama fungsi
Nama fungsi harus berupa suatu indentifier yang sahih. Nama fungsi sebaiknya mencerminkan tugas yang dilakukan oleh fungsi itu.
Deklarasi parameter
Parameter adalah cara dari pemganggil fungsi untuk memberikan data kepada fungsi untuk dikerjakan oleh fungsi. parameter yang digunakan saat pemanggilan harus sama dengan parameter yang ada saat deklarasi dan definisi fungsi.

Read more...

Wednesday, July 28, 2010

Fungsi pada Bahasa C

Setiap kali kita membuat program, kita selalu membuat fungsi, minimal kita harus membuat fungsi main(). Pada bahasa C, fungsi adalah sekumpulan instruksi terurut untuk melaksanakan sebuah tugas. Istilah lain dari fungsi adalah subroutin. Fungsi yang terdapat pada bahasa C antara lain:

  • fungsi main
  • fungsi standar bahasa C
  • fungsi buatan programmer
fungsi main
Adalah fungsi yang harus ada di setiap kali kita membuat program. Fungsi ini adalah fungsi utama. Menjalankan program adalah dimulai dari awal fungsi main sampai akhir fungsi main.

fungsi standar bahasa C
scanf() dan printf() adalah contoh fungsi standar pada bahasa C. Fungsi standar yaitu fungsi yang sudah terdapat pada compiler saat kita menginstall. Fungsi standar terdapat pada hampir semua software compiler bahasa C. Selain mencetak dan menginput, masih terdapat banyak fungsi standar lainnya.

fungsi buatan programmer
Terkadang fungsi standar tidak cukup untuk menjalankan tugas tertentu. Untuk mengatasi kesulitan ini, kita bisa membuat fungsi sendiri berdasarkan aturan yang ada.


Beberapa manfaat menggunakan fungsi antara lain:
  • Fungsi main dapat dibuat lebih ringkas dan mudah dibaca.
  • Fungsi menghindarkan operasi/instruksi yang sama ditulis berulang kali.
  • Pada program yang berukuran besar, fungsi dapat menghemat memory.

Read more...

Monday, July 26, 2010

Definisi Array

Array adalah tipe data yang banyak dipergunakan pada hampi di semua bahasa pemrograman. Array bisa disebut sebagai penempatan banyak data pada satu variable. Hal ini diperlukan apabila data yang kita butuhkan jumlahnya banyak, dan data tersebut adalah serupa, misalnya data nilai siswa. Misalnya adalah sebagai berikut:

int NilaiSiswa1 = 60;
int NilaiSiswa2 = 70;
int NilaiSiswa3 = 80;

Apabila datanya berjumlah sedikit mungkin masih bisa menggunakan metode di atas. Tapi apabila datanya banyak(jumlah siswa lebih dari 100), kita akan kesulitan untuk mengaturnya. Kemudian dari hal inilah timbul ide untuk mengganti angka pada variable dengan varable integer (bilangan) sebagai index. Dengan demikian terdapat variable indentitas dan variable index. Sehingga deklarasi di atas dengan array menjadi:

int Nilaisiswa[100]={80,65,98,79,70,.......};
arti:
NilaiSiswa[1] = 80;
NilaiSiswa[2] = 65;
NilaiSiswa[3] = 98; dst

Dengan demikian penggunaan variable NilaiSiswa akan lebih mudah, karena index juga bisa diganti dengan variable bertipe integer. Biasanya akses dari variable array menggunakan looping. Array juga bisa digunakan untuk data 2 atau 3 dimensi. Sesungguhnya kalimat (string) adalah array dari tipe data karakter (char).

Read more...

Menambah Data di akhir Array

Penambahan data array di akhir, tidak memerlukan penggeseran data. Menurut saya penambahan data di akhir adalah yang paling mudah diantara 3 metode penambahan data array. Berikut programnya:

#include <stdio.h>
#include <conio.h>
void main()
{
int jumlahtambah,x, isi, banyakdata=5;
int a[20]={10,20,30,40,50};
printf("Data anda:");
for(isi=0;isi<banyakdata;isi++)
{
printf("\nData ke-%d: %d",isi+1,a[isi]);
}
printf("\n\n\nJumlah penambahan data: ");
scanf("%d",&x);
jumlahtambah=x;
/*input data tambahan*/
for(isi=0;isi<jumlahtambah;isi++)
{
printf("\nMasukan tambahan data ke-%d: ",isi+1);
scanf("%i",&a[banyakdata+isi]);
}
/*cetak data baru*/
printf("Data anda sekarang adalah:");
for(isi=0;isi<banyakdata+jumlahtambah;isi++)
{
printf("\nData ke-%d: %d",isi+1,a[isi]);
}
getch();
}

Untuk membuktikan bahwa program ini berhasil, silahkan download program eksekusinya di:
ziddu, dengan nama tambah_akhir_array.rar
sharecash, dengan nama Tambah akhir array

Read more...

Menyisipkan Data Array

Untuk menyisipkan data array di tengah, metode penggeseran data berbeda dengan menambahkan data array di depan. Pada post ini, saya ingin memberitahukan cara menambahkan data array di tengah. Berikut programnya:

#include <stdio.h>
#include <conio.h>
void main()
{
int a[20]={10,20,30,40,50};
int isi, jumlahdata=5, urutantambah, jumlahtambah, jumlahdatabaru;
printf("Data anda:");
for(isi=0;isi<jumlahdata;isi++)
{
printf("\nData ke-%d: %d",isi+1,a[isi]);
}
/*penempatan data baru*/
printf("\n\nSisipkan pada urutan ke: ");
scanf("%d",&urutantambah);
/*input jumlah data tambahan*/
printf("Jumlah data yang akan ditambahkan: ");
scanf("%d",&jumlahtambah);
/*pelebaran data array*/
for(isi=0;isi<=jumlahdata-jumlahtambah;isi++)
{
a[jumlahdata+jumlahtambah-isi-1]=a[jumlahdata-isi-1];
}
/*input data tambahan*/
for(isi=0;isi<jumlahtambah;isi++)
{
printf("Masukan tambahan data ke-%d: ",isi+1);
scanf("%d",&a[isi+urutantambah-1]);
}
/*cetak data baru*/
jumlahdatabaru=jumlahdata+jumlahtambah;
printf("Data anda sekarang:");
for(isi=0;isi<jumlahdatabaru;isi++)
{
printf("\nData ke-%d: %d",isi+1,a[isi]);
}
getch();
}

Sourcecode dan program eksekusinya ada di:
ziddu, sisip_data_array.rar
sharecash, sisip data array

Read more...

Menambah Data Array

Setelah kita mendeklarasikan array, kita bisa menambah data pada array tersebut. sebelum penambahan data, terlebih dahulu kita harus menyiapkan ruang untuk tempat data baru. ruang baru tersebut kita buat dengan menggeser data lama sejauh yang diperlukan. Berikut program penambahan data pada array.

#include <stdio.h>
#include <conio.h>
int main()
{
#include
#include
int main()
{
/*pendeklarasian sekaligus pengisian data array*/
int a[20]={10,20,30,40,50};
int index,banyakdata=5,jumlahtambah;
/*cetak data array*/
printf("Data anda adalah:");
for(index=0;index<banyakdata;index++)
{
printf("\nDatake-%d: %d",index+1,a[index]);
}
/*proses penambahan data*/
printf("\n\nMasukan jumlah penambahan data: ");
/*jumlah tambah untuk menentukan banyaknya looping(pengulangan)*/
scanf("%d",&jumlahtambah);
/*proses penggeseran data untuk menciptakan ruang kosong di awal array*/
for(index=0;index<banyakdata;index++)
{
a[banyakdata+jumlahtambah-1-index]=a[banyakdata-1-index];
}
/*input data tambahan*/
for(index=0;index<jumlahtambah;index++)
{
printf("Masukan data tambahan: ");
scanf("%d",&a[index]);
}
/*cetak data array baru*/
printf("\n\ndata anda sekarang adalah: ");
for(index=0;index<banyakdata+jumlahtambah;index++)
{
printf("\nData ke-%d: %d",index+1,a[index]);
}
getch();
}

Untuk sourcecode dan program eksekusinya ada di:
ziddu, tambah_awal_array.rar
sharecash, Tambah awal array

Read more...

Memasukan dan Mencetak Data pada ARRAY

Array adalah sekumpulan data yang bertipe sama. Data-data tersebut terletak pada satu variable yang disebut variable array. Data-data tersebut disimpan pada sebuah variable berdasarkan index. Berikut adalah program untuk memasukan dan mencetak data pada array:

#include <stdio.h>
#include <conio.h>
main()
{
int data[10];
int index,banyakdata;
/*memasukan array*/
printf("Banyaknya data yang ingin dimasukan: ");
scanf("%d",&banyakdata);
printf("Masukan data anda:\n");
for(index=0;index<banyakdata;index++)
{
printf("Data ke-%d: ",index+1);
scanf("%d",&data[index]);
}

/*Mencetak array*/
printf("\n\n\nData anda andalah:");
for(index=0;index<banyakdata;index++)
{
printf("\nData ke-%d: %d",index+1,data[index]);
}
getch();
}

Sourcecode dan program aplikasi ada di:
ziddu, input_dan_cetak_array.rar
sharecash, Input n output array

Read more...

Saturday, July 24, 2010

Variasi Segitiga

Setelah memahami tentang NESTED LOOP, sekarang saya akan memberikan beberapa variasi program yang tentunya akan memberikan tampilan yang berbeda pula dari yang sederhana. berikut beberapa variasi segitiga.

Read more...

Menggambar Segitiga dengan Bahasa C

Ketika pertama kali saya mempelajari NESTED LOOP, saya diajari membuat segitiga dengan karakter bintang. Berikut ini adalah contoh sederhana dari penggunaan NESTED LOOP untuk membuat segitiga dengan karakter bintang.

#include <conio.h>
#include <stdio.h>
void main()
{
int x,y;
//loop besar menentukan tinggi segitiga
for (x=0;x<5;x++)
{
//loop kecil menentukan banyak segitiga perbaris
for (y=0;y<=x;y++)
{
printf("* ");
}
printf("\n");
}
getch();
}

Read more...

Pengulangan Bersarang (nested loop)

Pada program pengulangan, kita bisa membuat pengulangan secara bertingkat. Program ini biasanya disebut NESTED LOOP atau PENGULANGAN BERSARANG. Cara kerja pengulangan bersarang mirip seperti 2 buah gear besar dan kecil. Gear besar akan berputar setelah gear kecil melakukan beberapa kali putaran.

Sama halnya dengan pengulangan bersarang. LOOP besar akan berjalan setelah LOOP kecil berhenti melakukan pengulangan. Contoh sederhana program NESTED LOOP ada di Menggambar Segitiga dengan Bahasa C. Pada pemrograman yang sudah advance, pengulangan bertingkat bisa sangat rumit dan memiliki 3 atau lebih tingkat pengulangan.

Read more...

Saturday, July 10, 2010

Perulangan C/C++

Pada pemrograman, seringkali kita menginginkan agar perintah dikerjakan secara berulang beberapa kali. Untuk melakukan perintah secara berulang, kita tidak perlu menulis kode program secara berulang-ulang, tetapi kita bisa menggunakan perintah perulangan. Jenis perintah perulangan yaitu, WHILE, DO...WHILE, dan FOR.


Read more...

Friday, July 9, 2010

Variable C/C++

Variable bisa dibilang sebagai tempat kita menyimpan data. Sebelum digunakan, variable harus dideklarasikan (diperkenalkan kepada program) terlebih dahulu. Format deklarasi variable adalah sebagai berikut:

tipe_data nama_variable
contoh:
int bilangan;
char huruf;
float pecahan;

Bila ingin mendeklarasikan dua atau lebih variable dengan tipe data yang sama, kita bisa menggunakan format sebagai berikut:

int bilangan1, bilangan2, bilangan3;

Setelah dideklarasikan, maka variable dapat digunakan pada program. Penggunaan variable bisa dengan memberikan nilai tertentu yang sesuai dengan tipe data variable. Pemberian nilai ke variable disebut assignment atau penugasan. Berikut ini contoh pemberian nilai ke variable:

bilangan = 54;
huruf = 'X';
pecahan = 0.5;


Penugasan variable bisa sekaligus dilakukan ketika variable di deklarasikan. hal ini disebut inisialisasi. Format inisialisasi adalah sebagai berikut:

int bilangan = 54;
char huruf = 'X';


Selain tipe data dasar yang sudah dibahas, ada tipe data yang bisa kita tentukan sebdiri. Tipe data ini adalah itipe data konstan. Tipe data konstan adalah tipe data yang setelh dideklarasikan tidak dapat dirubah lagi nilainya. Biasanya tipe konstan dideklarasikan setelah deklarasi header file. Format deklarasi konstan adalah sebagai berikut:

const tipe_data nama_konstanta = nilai;
contoh:
cons int bilangan = 54;

Read more...

Tipe Data Bahasa C

Perhatikan tabel berikut.
Tipe Data Dasar


TipeKeywordKeterangan
KaraktercharHuruf, angka, tanda baca, spasi, simbol
IntegerintBilangan antara -32.767 sampai 32.767
PecahanfloatPecahan dengan presisi satu
Pecahan gandadoublePecahan presisi dua
Tak bertipevoidTak ada tipenya (netral)

Bagi saya pemrograman bahasa C mengenal 2 tipe data yang utama, yaitu bilangan dan karakter. Bilangan adalah data yang dapat digunakan untuk perhitungan, misalnya pengurangan, penambahan, dll. Karakter adalah semua tanda, huruf, angka dan spasi yang terdapat pada keyboard.

Mungkin bagi anda angka dan bilangan adalah sama. Memang sebenarnya angka dan bilangan sama, tetapi pada blog saya ini saya menggunakan istilah bilangan untuk menunjuk pada angka yang digunakan untuk perhitungan. sedang angka adalah tanda, tidak dapat digunakan untuk perhitungan.

Tetapi kalo menurut yang resminya, tipe data dasar pada pemrograman bahasa C/C++ ya seperti yang ditunjukan pada tabel di atas. selain tipe data dasar, ada juga tipe data konstan, yaitu tipe data yang kita tentukan sendiri sebelum kita gunakan. Nilai konstanta tidak dapat dirubah setelah di deklarasikan.

Read more...

Thursday, July 8, 2010

Perulangan dengan Perintah WHILE

Setelah seleksi, sekarang kita praktek perulangan (looping). Terkadang dalam membuat sebuah program, kita ingin agar program tertentu dilakukan berulang beberapa kali. Perintah perulangan diantaranya WHILE, DO WHILE, FOR. Program dibawah ini adalah program perulangan sederhana dengan perintah WHILE.

#include <stdio.h>
#include <conio.h>
void main()
{
int perulangan=1;
while(perulangan<=5)
//perintah pencetakan akan diulangan sebanyak 5x
{
printf("Pencetakan ke-%d\n",perulangan);
perulangan++;
}
getch();
}

Read more...

Wednesday, July 7, 2010

Seleksi dengan Character

Selain dengan dengan angka, seleksi bisa juga dengan character. Tetapi perlu diingat bahwa bahasa C/C++ merupakan bahasa pemrograman yang "case sensitive". Artinya, membedakan penggunaan huruf besar dan huruf kecil tidak sama. Berikut adalah 2 program seleksi dengan character.

Program dengan SWITCH CASE
#include <stdio.h>
#include <conio.h>
void main()
{
char kodehari;
printf("Kode Hari:\n");
printf("a.Senin b.Selasa c.Rabu d.Kamis\n");
printf("e.Jumat f.Sabtu g.Minggu");
printf("\n\nPilih kode hari: ");
scanf("%c",&kodehari);

/*Menentukan variable pilihan*/
switch(kodehari)
{
/*pilihan pertama*/
/*case hanya bisa menggunakan angka,
tidak bisa menggunakan aljabar boolean*/
case 'a':

/*perintah pada pilihan pertama*/
printf("\nAnda memilih hari Senin.");

/*akhir dari pilihan pertama*/
break;

case 'b':
printf("\nAnda memilih hari Selasa.");
break;

case 'c':
printf("\nAnda memilih hari Rabu.");
break;

case 'd':
printf("\nAnda memilih hari Kamis.");
break;

case 'e':
printf("\nAnda memilih hari Jumat.");
break;

case 'f':
printf("\nAnda memilih hari Sabtu.");
break;

case 'g':
printf("\nAnda memilih hari Minggu.");
break;

/*perintah yang dijalankan bila tidak ada
pilihan yang cocok*/
default:
printf("Anda memilih kode yang salah.");
}
getch();
}

Program dengan IF ELSE
#include <stdio.h>
#include <conio.h>
void main()
{
char kodehari;
printf("Kode Hari:\n");
printf("a.Senin b.Selasa c.Rabu d.Kamis\n");
printf("e.Jumat f.Sabtu g.Minggu");
printf("\n\nPilih kode hari: ");
scanf("%c",&kodehari);
if(kodehari=='a')
{
printf("\nAnda memilih hari Senin.");
}
else if(kodehari=='b')
{
printf("\nAnda memilih hari Selasa.");
}
else if(kodehari=='c')
{
printf("\nAnda memilih hari Rabu.");
}
else if(kodehari=='d')
{
printf("\nAnda memilih hari Kamis.");
}
else if(kodehari=='e')
{
printf("\nAnda memilih hari Jumat.");
}
else if(kodehari=='f')
{
printf("\nAnda memilih hari Sabtu.");
}
else if(kodehari=='g')
{
printf("\nAnda memilih hari Minggu.");
}
else
{
printf("Anda memilih kode yang salah.");
}
getch();
}

Read more...

Tuesday, July 6, 2010

Operasi Pada Segitiga

Berikut ini adalah source code dengan C++ untuk membuat aplikasi operasi pada segitiga. Dalam pembuatan aplikasi ini saya menggunakan pengulangan DO WHILE dan pemilihan IF ELSE. Selain itu saya juga menggunakan fungsi akar sqrt(). Dimana untuk menggunakan fungsi akar diperlukan header file <math.h>.

#include <stdio.h>
#include <math.h>
void main()
{ //deklarsi variable
float a,b,c,luas,keliling,luas2,s,alas,alas2,tinggi,tinggi2;
float setengahalas,setengahalas2,sisimiring,sisimiring2,sisi,sisi2;
int ulangi,jenis,ulangi2;
//awal pengulangan menu utama
do
{
//instruksi menu utama
printf("OPERASI SEGITIGA\n");
printf("Pilih jenis segitiga\n");
printf("1. segitiga sembarang\n");
printf("2. segitiga siku-siku\n");
printf("3. segitiga sama kaki\n");
printf("4. segitiga sama sisi\n");
scanf_s("%d",&jenis);
//masuk ke pilihan segitiga sembarang
if(jenis==1)
{
//awal pengulangan segitiga sembarang
do
{
//cetak instruksi segitiga sembarang
printf("Masukan ketiga sisi segitiga sembarang.\n");
printf("sisi a = ");
scanf_s("%f",&a);
printf("sisi b = ");
scanf_s("%f",&b);
printf("sisi c = ");
scanf_s("%f",&c);
//operasi bila data input error
if(a<=0 || b<=0 || c<=0)
{
printf("Maaf, data yang anda masukan tidak valid.\n");
printf("Apakah anda ingin mencoba lagi?\n");
printf("1. YA\n");
printf("2. TIDAK(kembali ke menu utama)\n");
printf("3. TIDAK(keluar)\n\n\n");
scanf_s("%d",&ulangi);
}
//operasi segitiga sembarang
else
{
keliling=a+b+c;
s=keliling/2;
luas2=s*(s-a)*(s-b)*(s-c);
luas=sqrt(luas2);
}
//cetak hasil segitiga sembarang
printf("sisi pertama = %f\n",a);
printf("sisi kedua = %f\n",b);
printf("sisi ketiga = %f\n",c);
printf("Luas = %f\n",luas);
printf("Keliling = %f\n\n\n",keliling);
printf("Apakah anda ingin melakukan perhitungan lagi? \n");
printf("1. YA\n");
printf("2. TIDAK(kembali ke menu utama)\n");
printf("3. TIDAK(keluar)\n");
scanf_s("%d",&ulangi);
}
//akhir pengulangan segitiga sembarang
while(ulangi==1);
}
//masuk ke segitigasiku-siku
else if(jenis==2)
{
//awal pengulangan segitiga siku-siku
do
{
//cetak instruksi segitiga siku-siku
printf("Masukan elemen segitiga siku-siku.\n");
printf("(bila tidak diketahui, masukan angka 0\n");
printf("alas = \n");
scanf_s("%f",&alas);
printf("tinggi = \n");
scanf_s("%f",&tinggi);
printf("sisi miring = \n");
scanf_s("%f",&sisimiring);
//operasi bila hanya diketahui alas dan tinggi segitiga siku-siku
if(alas!=0 && tinggi!=0 && sisimiring==0)
{
alas2=pow(alas,2);
tinggi2=pow(tinggi,2);
sisimiring2=tinggi2+alas2;
sisimiring=sqrt(sisimiring2);
luas=alas*tinggi/2;
keliling=alas+tinggi+sisimiring;
}
//operasi bila hanya diketahui alas dan sisi miring segitiga siku-siku
else if(alas!=0 && sisimiring!=0 && tinggi==0)
{
alas2=pow(alas,2);
sisimiring2=pow(sisimiring,2);
tinggi2=sisimiring2-alas2;
tinggi=sqrt(alas2);
luas=alas*tinggi/2;
keliling=alas+tinggi+sisimiring;
}
//operasi bila hanya diketahui tinggi dan sisi miring segitiga siku-siku
else if(tinggi!=0 && sisimiring!=0 && alas==0)
{
tinggi2=pow(tinggi,2);
sisimiring2=pow(sisimiring,2);
alas2=sisimiring2-tinggi2;
alas=sqrt(alas2);
luas=alas*tinggi/2;
keliling=alas+tinggi+sisimiring;
}
//operasi bila data yang dimasukan error
else
{
printf("Maaf, data yang anda masukan tidak valid.\n");
printf("Apakah anda ingin mencoba lagi?\n");
printf("1. YA\n");
printf("2. TIDAK(kembali ke menu utama)\n");
printf("3. TIDAK(keluar)\n\n\n");
scanf_s("%d",&ulangi);
}
//cetak hasil segitiga siku-siku
printf("alas = %f\n",alas);
printf("tinggi = %f\n",tinggi);
printf("sisi miring = %f\n",sisimiring);
printf("luas = %f\n",luas);
printf("keliling = %f\n\n\n",keliling);
printf("Apakah anda ingin mengulang perhitungan?\n");
printf("1. YA\n");
printf("2. TIDAK(kembali ke menu utama)\n");
printf("3. TIDAK(keluar)\n");
scanf_s("%d",&ulangi);
}
//akhir pengulangan segitiga siku-siku
while(ulangi==1);
}
//masuk ke pilihan segitiga sama kaki
else if(jenis==3)
{
//awal pengulangan segitiga sama kaki
do
{
//cetak instruksi
printf("Masukan elemen segitiga sama kaki\n");
printf("Bila tidak diketahui, masukan angka 0.\n");
printf("alas = ");
scanf_s("%f",&alas);
printf("tinggi = ");
scanf_s("%f",&tinggi);
printf("sisi miring = ");
scanf_s("%f",&sisimiring);
//operasi bila hanya diketahui alas dan tinggi segitiga sama kaki
if(alas!=0 && tinggi!=0 && sisimiring==0)
{
setengahalas=alas/2;
setengahalas2=setengahalas*setengahalas;
tinggi2=tinggi*tinggi;
sisimiring2=tinggi2+setengahalas2;
sisimiring=sqrt(sisimiring2);
luas=setengahalas*tinggi;
keliling=sisimiring*2+alas;
}
//operasi bila hanya diketahui alas dan sisi miring segitiga sama kaki
else if(alas!=0 && tinggi==0 && sisimiring!=0)
{
setengahalas=alas/2;
setengahalas2=pow(setengahalas,2);
sisimiring2=pow(sisimiring,2);
tinggi2=sisimiring2-setengahalas2;
tinggi=sqrt(tinggi2);
luas=setengahalas*tinggi;
keliling=sisimiring*2+alas;
}
//operasi bila hanya dioketahui tinggi dan sisi miring segitiga sama kaki
else if(alas==0 && tinggi!=0 && sisimiring!=0)
{
sisimiring2=pow(sisimiring,2);
tinggi2=pow(tinggi,2);
setengahalas2=sisimiring2-tinggi2;
setengahalas=sqrt(setengahalas2);
luas=setengahalas*tinggi;
keliling=sisimiring*2+alas;
}
//operasi bila data error
else
{
printf("Maaf, data yang anda masukan tidak valid.\n");
printf("Apakah anda ingin mencoba lagi?\n");
printf("1. YA\n");
printf("2. TIDAK(kembali ke menu utama)\n");
printf("3. TIDAK(keluar)\n\n\n");
scanf_s("%d",&ulangi);
}
//cetak hasil segitiga sama kaki
printf("alas = %f\n",alas);
printf("tinggi = %f\n",tinggi);
printf("sisi miring = %f\n",sisimiring);
printf("luas = %f\n",luas);
printf("keliling = %f\n\n\n",keliling);
printf("Apakah anda ingin mengulang perhitungan?");
printf("1. YA\n");
printf("2. TIDAK(kembali ke menu utama)\n");
printf("3. TIDAK(keluar)\n");
scanf_s("%d",&ulangi);
}
//akhir pengulangan segitiga sama kaki
while(ulangi==1);
}
//masuk ke pilihan segitiga sama sisi
else if(jenis==4)
{
//awal pengulangan segitiga sama sisi
do
{
//cetak instruksi
printf("Masukan elemen segitiga sama sisi.\n");
printf("Bila tidak diketahui masukan angka 0.\n");
printf("sisi = ");
scanf_s("%f",&sisi);
printf("luas = ");
scanf_s("%f",&luas);
printf("keliling = ");
scanf_s("%f",&keliling);
//operasi bila sisi yang diketahui
if(sisi!=0)
{
luas=sisi*sisi/4*1.732051;
keliling=sisi*3;
}
//operasi bila luas yang diketahui
else if(luas!=0)
{
sisi2=luas*4/1.732051;
sisi=sqrt(sisi2);
keliling=sisi*3;
}
//operasi bila keliling yang diketahui
else if(keliling!=0)
{
sisi=keliling/3;
luas=sisi*sisi/4*1.732051;
}
//cetak hasil segitiga sama sisi
printf("sisi = %f\n",sisi);
printf("luas = %f\n",luas);
printf("keliling = %f\n\n\n",keliling);
printf("Apakah anda ingin mengulang perhitungan?");
printf("1. YA\n");
printf("2. TIDAK(kembali ke menu utama)\n");
printf("3. TIDAK(keluar)\n");
scanf_s("%d",&ulangi);
}
//akhir pengulangan segitiga sama sisi
while(ulangi==1);
}
//pemberitahuan bila pilihan pada menu utama salah
else
{
printf("Maaf pilihan anda salah, apakah anda ingin mengulangi?\n");
printf("1. YA\n");
printf("2. TIDAK(keluar)");
scanf_s("%d",&ulangi2);
}

}
//akhir pengulangan menu utama
while(ulangi==2 || ulangi2==1);
}

Read more...

Followers

followers

  © Blogger templates ProBlogger Template by Ourblogtemplates.com 2008

Back to TOP