Selasa, 10 Maret 2015

Program Hitung Nilai Resistor Dengan Program Fungsi (Bahasa C++ menggunakan Borland Delphi)

DASAR TEORI
a.    FUNGSI
Fungsi (Function) merupakanblokdarikode yang dirancang untuk melaksanakan tugas khusus. Fungsi-fungsi yang sudah kita kenal sebelumnya adalah fungsi main(), yang bersifa tmutlak, karena fungs iini program akan dimulai, sebagai contoh yang lainnya fungsi printf(), cout() yang mempunyai tugas untuk menampilkan informasi atau data kelayar dan masih banyak lainnya.

b.   STRUKTUR FUNGSI
Sebuahfungsisederhanamempunyaibentukpenulisansebagaiberikut :

nama_fungsi(argumen)
{   
… pernyataan / perintah;
… pernyataan / perintah; 
… pernyataan / perintah;
}
Keterangan:

-Nama fungsi, boleh dituliskan secara bebas dengan ketentuan, tidak menggunakan spasi dan nama-nama fungsi yang mempunyai arti sendiri.
- Argumen, diletakan diantara tanda kurung “( )” yang terletak dibelakang nama fungsi. Argumen boleh diisi dengan suatu data atau dibiarkan kosong.
-  Pernyataan / perintah, diletakkan diantara tanda kurung kurawal ‘{ }’.

Pada pemanggilan sebuah fungsi, cukup dengan menuliskan nama fungsinya.

c.    PROTOTIPE FUNGSI
Prototipe fungsi digunakan untuk mendeklarasikan kekompiler mengenai:
1.      Tipe data keluaran dari fungsi.
2.       Jumlah parameter yang digunakan
3.      Tipe data dari masing-masing parameter yang digunakan.

Keuntungan didalam pemakai prototype yaitu :
v  Kompiler akan melakukan konversi antara tipe parameter dalam definisi dan parameter fungsi.
v  Jika jumlah parameter yang digunakan dalam definisi fungsi dan pada saat pemanggilan fungsi berbeda atau tidaksama, maka akan menunjukkankesalahan
d.     PARAMETER FUNGSI
Terdapat dua macam paraparameter fungsi, yaitu :
ü  Parameter Aktual adalah variabel yang digunakan pada pemanggilan suatu fungsi.
ü  Parameter formal adalah      variabel yang terdapat pada daftar parameter yang berada didalam definisi fungsi

Bentuk penulisan Parameter Formal dan Parameter Aktual.
Ada dua cara untuk melewatkan parameter kedalam fungsi, yaitu berupa :
1.      Pemanggilan dengan Referensi(CallbyReference)
Pemanggilan dengan reference merupakan pemanggilan alamat suatu variable didalam fungsi. Cara ini dapat dipakai untuk mengubah isi suatu variabel yang diluar dari fungsi dengan melaksanakan pengubahan nilai dari suatu variable dilakukan didalam fungsi.
2.      Pemanggilan dengan nilai (Call by Value )
Pada pemanggilan dengan nilai yaitu nilai dari parameter actual akan dimasukkan keparameter formal. Dengan cara ini nilai parameter actual tidak bisa berubah, walaupun nilai dari parameter formal berubah.

e.    PERNYATAAN RETURN().
Digunakan untuk mengirimkan nilai atau nilai dari suatu fungsi kepada fungsi yang lain yang memanggilnya. Pernyataan return() diikuti oleh argumen yang berupa nilai yang akan dikirimkan.

f.       PENGIRIMAN DATA VARIABEL KE FUNGSI
Bentuk pengiriman data Variabel, sama seperti halnya pengiriman suatu nilai data konstanta kesuatu fungsi, hanya saja nilai yang dikirimkan tersebut senantiasa dapat berubah-ubah.




KODE PROGRAM HITUNG NILAI GELANG RESISTOR

# include <conio.h>
# include <iostream.h>
# include <stdio.h>
# include <iomanip.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>

char lagi, g1 [10][10], g2 [10][10], g3 [10][10], g4 [10], g4new [10];
//int ng4 [5];
int i,n,j,k,r,temp, a[10],b, awal [5], akhir [5], g1new [5], g2new [5], g3new [5], ng3 [10];
int g1a[10], g1b[10], g1c[10], g3c[100], pangkat[100], ohm[100], jml_g1_pangkt[100], g1d[100];//, g2a[10], g2b[10], g3a[10], g3b[10];
double rata, total;

char warna_g4()
{
if (g4[i]=='A'||g4[i]=='a')
cout<<" Emas ";
else if (g4[i]=='B'||g4[i]=='b')
cout<<" Perak ";
else
cout<<" Pilihan Hanya A dan B ";
return 0;
}

char perubah_4()
{
if (g4[i]=='A'||g4[i]=='a')
cout<<"5 %";
else if (g4[i]=='B'||g4[i]=='b')
cout<<"10 %";
else
cout<<" Pilihan Hanya A dan B ";
return 0;
}

char perubah_1()
{
if (g1a[i]==0)
cout<<" Hitam ";
else if (g1a[i]==1)
cout<<" Coklat ";
else if (g1a[i]==2)
cout<<" Merah ";
else if (g1a[i]==3)
cout<<" Jingga ";
else if (g1a[i]==4)
cout<<" Kuning ";
else if (g1a[i]==5)
cout<<" Hijau ";
else if (g1a[i]==6)
cout<<" Biru ";
else if (g1a[i]==7)
cout<<" Ungu ";
else if (g1a[i]==8)
cout<<" Abu-abu ";
else if (g1a[i]==9)
cout<<" Putih ";
else
cout<<" Pilihan Hanya 0-9 ";
return 0;
}

char perubah_2()
{
if (g1b[i]==0)
cout<<" Hitam ";
else if (g1b[i]==1)
cout<<" Coklat ";
else if (g1b[i]==2)
cout<<" Merah ";
else if (g1b[i]==3)
cout<<" Jingga ";
else if (g1b[i]==4)
cout<<" Kuning ";
else if (g1b[i]==5)
cout<<" Hijau ";
else if (g1b[i]==6)
cout<<" Biru ";
else if (g1b[i]==7)
cout<<" Ungu ";
else if (g1b[i]==8)
cout<<" Abu-abu ";
else if (g1b[i]==9)
cout<<" Putih ";
else
cout<<" Pilihan Hanya 0-9 ";
return 0;
}

char perubah_3()
{
if (g1c[i]==0)
cout<<" Hitam ";
else if (g1c[i]==1)
cout<<" Coklat ";
else if (g1c[i]==2)
cout<<" Merah ";
else if (g1c[i]==3)
cout<<" Jingga ";
else if (g1c[i]==4)
cout<<" Kuning ";
else if (g1c[i]==5)
cout<<" Hijau ";
else if (g1c[i]==6)
cout<<" Biru ";
else if (g1c[i]==7)
cout<<" Ungu ";
else if (g1c[i]==8)
cout<<" Abu-abu ";
else if (g1c[i]==9)
cout<<" Putih ";
else
cout<<" Pilihan Hanya 0-9 ";
return 0;
}

main ()
{
do {
clrscr();
cout<<"^Kode Warna resistor^ : "<<endl;
cout<<"1. Coklat "<<endl;
cout<<"2. Merah "<<endl;
cout<<"3. Jingga "<<endl;
cout<<"4. Kuning "<<endl;
cout<<"5. Hijau "<<endl;
cout<<"6. Biru "<<endl;
cout<<"7. Ungu "<<endl;
cout<<"8. Abu-abu"<<endl;
cout<<"9. Putih "<<endl<<endl;
cout<<"^Kode Toleransi resistor^:"<<endl;
cout<<"A. Perak "<<endl;
cout<<"B. Emas "<<endl<<endl<<endl;

cout<<"Masukan jumlah resistor : ";cin>>n;
for(i=1;i<=n;i++)
{

cout<<"Resistor ke - "<<i<<endl;
l1:cout<<"Kode warna gelang 1 : ";cin>>g1[i];
if ((g1[i][10] >9)&&(g1[i][10] <0))
{
cout<<"Maaf!!! nilai dalam Skala 0-9 \n";
cout<<"silahkan ulangi lagi \n";
goto l1;
}

l2:cout<<"Kode warna gelang 2 : "; cin>>g2 [i];
if ((g2[i][10] >9)&&(g2[i][10] <0))
{
cout<<"Maaf!!! nilai dalam Skala 0-9 \n";
cout<<"silahkan ulangi lagi \n";
goto l2;
}

l3:cout<<"Kode warna gelang 3 : ";cin>>g3 [i];
if ((g3[i][10] >9)&&(g3[i][10] <0))
{
cout<<"Maaf!!! nilai dalam Skala 0-9 \n";
cout<<"silahkan ulangi lagi \n";
goto l3;
}

l4:cout<<"Kode warna gelang 4 : ";cin>>g4 [i];
if (g4[i]!= 'A' && g4[i]!='a' && g4[i]!='B' && g4[i]!='b')
{
cout<<"Maaf!!! Pilihan Hanya A dan B\n";
cout<<"silahkan ulangi lagi \n";
goto l4;
}

g1a[i]=atoi(g1[i]);
g1b[i]=atoi(g2[i]);
g1c[i]=atoi(g3[i]);
g3c[i]=(pow(10,g1c[i]));
g1d[i]=(pow(10,(g1c[i]+1)));

jml_g1_pangkt[i]=(g1a[i]*g1d[i]);
pangkat[i]=(g1b[i]*g3c[i]);
ohm[i]=(jml_g1_pangkt[i]+pangkat[i]);
}
cout<<"============================================================================"<<endl;
cout<<" PROGRAM HITUNG NILAI RESISTOR "<<endl;
cout<<"============================================================================"<<endl;
cout<<"----------------------------------------------------------------------------"<<endl;
cout<<"No. Gelang 1 Gelang 2 Gelang 3 Gelang 4 Ohm Toleransi"<<endl;
cout<<"----------------------------------------------------------------------------"<<endl;

for (j=n;j>=1;j--)
{
awal[j]=ohm[j];
}
for (j=n;j>=1;j--)
{
for (k=j;k>=1;k--)
{
if (ohm[j]<ohm[k])
{
temp=ohm[j];
ohm[j]=ohm[k];
ohm[k]=temp;
}
}
}
for (j=n;j>=1;j--)
{
for (k=n;k>=1;k--)
{
if (awal[j]==ohm[k])
{
g1new[k]=g1a[j];
g2new[k]=g1b[j];
g3new[k]=g1c[j];
g4new[k]=g4 [j];
}
}
}

for (i=0; i<n; i++)
{
total=0;
for (i=0; i<n; i++)
total=total+ohm[i];
}

rata=total/n;

for (i=1;i<=n;i++)
{
cout<<setiosflags(ios::left)<<setw(4)<<i;
cout<<setprecision(2)<<setw(6)<<perubah_1();
cout<<setprecision(2)<<setw(6)<<perubah_2();
cout<<setprecision(2)<<setw(6)<<perubah_3();
cout<<setprecision(2)<<setw(7)<<warna_g4();
cout<<setprecision(2)<<setw(6)<<ohm[i];
cout<<setprecision(2)<<setw(7)<<perubah_4()<<endl;
}

cout<<endl;
cout<<"---------------------------------------------------------------------------";
cout<<endl;

cout<<"Nilai Tertinggi ="<<endl;
cout<<"Nilai Terendah ="<<endl;
cout<<"Nilai Rata-rata ="<<rata<<endl;
cout<<"Jumlah nilai resistor "" s/d Resistor "<<" Ohm "<<endl;

cout<<"Ulang Kembali (Y/T)?";cin>>lagi; //pilihan perulangan
}
while ((lagi=='Y')||(lagi=='y'));


getche();