Belajar Bahasa C

Setelah ngerti apa itu bahasa c sekarang kita akan mencoba beberapa program sederhana yang dibuat dengan bahasa c. Program yang akan dibahas kalo ini adalah program yang akan menampilkan beberapa fungsi-fungsi dasar dalam bahasa c. Program akan menampilkan contoh pemakaian fungsi :

  1. variabel.
  2. pengambilan keputusan (if-else).
  3. perulangan (looping).
  4. fungsi.
  5. deret (array).
  6. string.
  7. pointer.
  8. struktur.

Tampilan awal dari program  :

Main Window

Listing program :

#include <stdio.h>
#define size 100

struct barang{float jml;float harga;};
struct data{char nama[size];struct barang nil;};
struct data bar[size];

void variabel(void);
void decision(void);
void looping(void);
void fungsi(void);
void deret(void);
void string(void);
void pointer(void);
void struktur(void);

int ganjil_call (int x){
 if(x%2==0)
 return (0);
 else
 return (1);
}

int go_crazy(int *p1, int *p2){
 int x = 5;
 int r, q = 7;
 r = 12;
 *p2 = *p1 * 2;
 p1 = &x;
 return *p1 * 3;
}

void tampil (int *i)
{
 int a;

 for (a=0;a<*i;a++)
 {
 printf ("Masukkan Nama Barang: ");
 fgets (bar[a].nama,sizeof bar[a].nama,stdin);
 fflush(stdin);

 printf("Masukkan Jumlah barang    : ");
 scanf_s("%f", &bar[a].nil.jml);
 fflush(stdin);

 printf("Masukkan Harga Barang     : ");
 scanf_s("%f", &bar[a].nil.harga);
 fflush(stdin);

 printf("\n");
 fflush(stdin);
 }

 for(a=0;a<*i;a++)
 {
 printf("%d. Nama Barang : %s", a+1, bar[a].nama);
 printf("   Total Harga : %g\n", bar[a].nil.jml*bar[a].nil.harga);

 printf("\n");
 }
}

void print_menu(){
 printf ("1.variabel \n");
 printf ("2.decision \n");
 printf ("3.looping \n");
 printf ("4.fungsi \n");
 printf ("5.array \n");
 printf ("6.string \n");
 printf ("7.pointer \n");
 printf ("8.struktur \n");
 }

void pilihan(){
 int pil;

 print_menu();
 printf ("pilih menu yang di inginkan : ");
 scanf_s ("%d",&pil);
 puts ("");

 if (pil==1){
 variabel();
 }
 else if (pil==2){
 decision();
 }
 else if (pil==3){
 looping();
 }
 else if (pil==4){
 fungsi();
 }
 else if (pil==5){
 deret();
 }
 else if (pil==6){
 string();
 }
 else if (pil==7){
 pointer();
 }
 else if (pil==8){
 struktur();
 }
 else{
 pilihan();
 }
}

void variabel(){
 float harga;
 int jml;

 printf ("masukkan jumlah barang :");
 scanf_s ("%d",&jml);
 printf ("masukkan harga :");
 scanf_s ("%f",&harga);

 harga=(jml*harga*10/100)+jml*harga;

 printf ("harga barang+ppn :%.2f\n\n",harga);
}

void decision(){
 int validasi=1;   //validasi diinisialisaikan=1
 char opr;
 float bil1,bil2,hsl;

 printf ("Kalkulator Sederhana\n");
 printf ("Masukkan bilangan 1 :");
 scanf_s ("%f",&bil1);
 fflush(stdin);
 printf ("Masukkan bilangan 2 :");
 scanf_s ("%f",&bil2);
 fflush(stdin);
 printf ("Pilihan operasi\n");
 printf ("1.Penjumlahan\n");
 printf ("2.Pengurangan\n");
 printf ("3.Pembagian\n");
 printf ("4.Perkalian\n");
 printf ("Masukkan operasi yang anda inginkan :");
 scanf_s ("%c",&opr);

 if (opr == '1')
 hsl= bil1+bil2;
 else if (opr== '2')
 hsl= bil1-bil2;
 else if (opr == '3')
 hsl= bil1/bil2;
 else if (opr == '4')
 hsl= bil1*bil2;
 else
 validasi=0;

 if (validasi)
 printf ("Hasil operasi tsb adalah :%g\n",hsl);
 else
 printf ("Tidak Bisa Dihitung!!!!!.....\n");
}

void looping(){
 int n,total=0,bil;
 char pil='y';

 while(pil=='y'||pil=='Y'){
 fflush(stdin);
 printf ("masukkan bilangan yang akan di hitung : ");
 scanf_s ("%d",&bil);
 for( n = 1; n <= bil; n=n+1 )
 total=total+n;
 printf("jumlah bilangan triangular adalah :%d \n",total);
 fflush(stdin);
 printf ("ingin menghitung lagi : ");
 scanf_s ("%c",&pil);
 }
}

void fungsi(){
 int m,n;

 printf ("Masukkan Sebuah Bilangan : ");
 scanf_s ("%d",&n);

 m=ganjil_call(n);
 if (m==0)
 printf ("Bilangan Tersebut Genap\n");
 else
 printf ("Bilangan Tersebut Ganjil\n");
}

void deret(){
 char cocok [size];
 int i, x, jumkar;

 fflush(stdin);
 printf("Masukkan sebuah kalimat : ");
 fgets(cocok, sizeof cocok, stdin);

 for(i='A'; i<='z'; i++)
 {
 jumkar = 0;
 for(x=0; x<size; x++)
 {
 if (i==cocok [x])
 {
 jumkar++;
 }
 }
 if(jumkar!=0)
 printf("%c = %d\n", i, jumkar);

 }

 puts("");

}

void string(){
 char kal[size];
 int i=0;

 fflush(stdin);
 printf("Masukkan kalimat yg akan di sandikan :");
 fgets(kal, sizeof kal, stdin);

 while(kal[i] != '\n')
 {
 if(kal[i] >= 'A' && kal[i] <'Z')
 kal[i] = kal[i] + 1;
 else if (kal[i] == 'Z')
 kal[i] = 'A';
 else if (kal[i] >= 'a' && kal[i] <'z')
 kal[i] = kal[i] + 1;
 else if (kal[i] == 'z')
 kal[i] = 'a';
 else if (kal[i] >= '1' && kal[i] < '9')
 kal[i] = kal[i] + 1;
 else if (kal[i] == '9')
 kal[i] = '1';
 else if (kal[i] == ' ')
 kal[i] = ' ';

 i++;
 }

 printf("Kalimat setelah disandikan adalah :\n");
 printf("%s\n", kal);

}

void pointer(){
 int r, q = 7;
 int *ptr1 = &q;
 int *ptr2 = &q;

 r = go_crazy(ptr1, ptr2);

 printf("q = %d, r = %d, *ptr1 = %d, *ptr2 = %d\n", q, r,*ptr1,*ptr2);
 ptr2 = &r;
 go_crazy(ptr2, ptr1);
 printf("q = %d, r = %d, *ptr1 = %d, *ptr2 = %d\n", q, r,*ptr1,*ptr2);

}

void struktur(){
 int n;

 printf("Masukkan Banyak Barang : ");
 scanf_s("%d", &n);
 printf("\n");
 fflush(stdin);

 tampil(&n);
}

main(){
 pilihan();
}

Program dalam bahasa c akan selalu di awali dengan pemanggilan preprocessor / pustaka seperti terlihat pada baris di bawah ini :

#include <stdio.h>

Pada program ini pustaka yang gunakan adalah stdio.h yang merupakan pustaka untuk menangani i/0 pada c.

Setelah pemanggilan pustaka/preprocessor langkah selanjutnya adalah mendefinisikan fungsi dan variabel yang dibutuhkan untuk menjalankan program, pada contoh di bawah ini akan dituliskan konstanta dan prototipe dari fungsi yang digunakan :

#define size 100 //konstanta

struct barang{float jml;float harga;}; //variabel global
struct data{char nama[size];struct barang nil;};
struct data bar[size];

void variabel(void); //prototipe fungsi
void decision(void);
void looping(void);
void fungsi(void);
void deret(void);
void string(void);
void pointer(void);
void struktur(void);

Seperti terlihat pada contoh program di atas, fungsi utama akan memanggil fungsi-fungsi yang telah dideklarasikan pada awal program. Variabel global yang bertipe data struct dimaksudkan untuk memudahkan pemanggilan pada fungsi-fungsi di bawahnya. Hal ini dikarenakan tipe data struct biasanya dipanggil pada fungsi yang berbeda-beda untuk memudahkan penulisan program.

Fungsi selanjutnya adalah print_menu() dan pilihan(). Kedua fungsi ini berfungsi untuk menampilkan daftar menu seperti tampak pada tampilan di atas dan memanggil fungsi sesuai pilihan dari pengguna. Pada fungsi ini diperlihatkan contoh penggunaan deciscion dan function call.

void print_menu(){
 printf ("1.variabel \n");
 printf ("2.decision \n");
 printf ("3.looping \n");
 printf ("4.fungsi \n");
 printf ("5.array \n");
 printf ("6.string \n");
 printf ("7.pointer \n");
 printf ("8.struktur \n");
 }

void pilihan(){
 int pil;

 print_menu(); //function call
 printf ("pilih menu yang di inginkan : ");
 scanf_s ("%d",&pil);
 puts ("");

 if (pil==1){  //decision
 variabel();
 }
 else if (pil==2){
 decision();
 }
 else if (pil==3){
 looping();
 }
 else if (pil==4){
 fungsi();
 }
 else if (pil==5){
 deret();
 }
 else if (pil==6){
 string();
 }
 else if (pil==7){
 pointer();
 }
 else if (pil==8){
 struktur();
 }
 else{
 pilihan();  //function call rekursif
 }
}

Fungsi yang akan dibahas selanjutnya adalah fungsi untuk melakukan perulangan, pada program ini menggunakan perulangan for dan perulangan do-while. Contoh program dan hasil tampilan dapat dilihat di bawah ini :

void looping(){
 int n,total=0,bil;
 char pil='y';

 while(pil=='y'||pil=='Y'){
 fflush(stdin);
 printf ("masukkan bilangan yang akan di hitung : ");
 scanf_s ("%d",&bil);
 for( n = 1; n <= bil; n=n+1 )
 total=total+n;
 printf("jumlah bilangan triangular adalah :%d \n",total);
 fflush(stdin);
 printf ("ingin menghitung lagi : ");
 scanf_s ("%c",&pil);
 }
}

Program di atas adalah program untuk menghitung bilangan triangular, pada program di atas perulangan for digunakan untuk proses penghitungan bilangan triangular dan perulangan do-while untuk pilihan akan menghitung lagi atau tidak. Untuk tampilan program terlihat seperti di bawah ini :

LoopingThe last dari posting hari ini adalah contoh dari penggunaan array, struktur dan pointer yang akan di jadikan sebuah fungsi yang berisi tiga fungsi tersebut. Di bawah ini adalah contoh program dan tampilan dari fungsi struktur :

void struktur(){
 int n;

 printf("Masukkan Banyak Barang : ");
 scanf_s("%d", &n);
 printf("\n");
 fflush(stdin);

 tampil(&n);
}
void tampil (int *i)
{
 int a;

 for (a=0;a<*i;a++)
 {
 printf ("Masukkan Nama Barang: ");
 fgets (bar[a].nama,sizeof bar[a].nama,stdin);
 fflush(stdin);

 printf("Masukkan Jumlah barang    : ");
 scanf_s("%f", &bar[a].nil.jml);
 fflush(stdin);

 printf("Masukkan Harga Barang     : ");
 scanf_s("%f", &bar[a].nil.harga);
 fflush(stdin);

 printf("\n");
 fflush(stdin);
 }

 for(a=0;a<*i;a++)
 {
 printf("%d. Nama Barang : %s", a+1, bar[a].nama);
 printf("   Total Harga : %g\n", bar[a].nil.jml*bar[a].nil.harga);

 printf("\n");
 }
}
 

Pada program di atas terjadi penggunaan beberapa fungsi pada bahasa c, antara lain array (bar[a]), pointer (void tampil (int *i)) dan struktur (bar[a].nil.jml*bar[a].nil.harga). Pada program di atas juga terlihat penggunaan perulangan for. Untuk struct bar pendeklarasian variabel dapat dilihat pada variabel global di atas. Program di atas adalah program untuk menginputkan jumlah dan harga barang sesuai keinginan pengguna. Perulangan for akan berjalan selama nilai dari int *i belum terpenuhi. Nilai dari int *i diperoleh dari fungsi struktur dengan variabel n dan ditangkap pada fungsi tampil dengan variabel *i. Disini digunakan variabel bertipe pointer karena pada fungsi struktur yang dikirim adalah alamat dari variabel n. Data-data yang diinputkan oleh pengguna akan disimpan pada variabel bertipe struct yang telah dideklarasikan sebagai variabel global di atas. Hasil dari program adalah :

StrukturProgram di atas ditulis pada Microsoft™ Visual Studio 2008™ sehingga diperlukan sedikit penyesuaian jika akan dijalankan pada IDE atau kompiler lainnya. Penyesuaian yang paling utama adalah fungsi scanf_s() yang bukan merupakan ancii c sehingga jika akan digunakan pada IDE atau kompiler lain tidak akan dikenali maka jika akan menggunakan program pada IDE atau kompiler lain (Microsoft™ Visual Studio 6.0™, gcc) fungsi scanf_s () harus diganti dengan scanf ().

Cukup sekian tutorial sederhana kali ini, untuk fungsi-fungsi lainnya bisa dicoba sendiri pada pc pembaca-pembaca sekalian (setelah di kompile terlebih dahulu tentunya :D ), semoga bermanfaat.

About these ads

Leave a comment

Filed under All About IT & Telecom

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s