Pages

Wednesday 30 May 2012

Algoritma dan Struktur Data I


1.      BENTUK-BENTUK DARI FLOWCHART
a.       Flowchart
Adalah Bagan-bagan yang mempunyai arus yang menggambarkan langkah-langkah penyelesaian suatu masalah. Flowchart merupakan cara penyajian dari suatu algoritma.

b.      Jenis-jenis flowchart
·         Bagan alir system
Merupakan bagan yang menunjukkan arus pekerjaan secara keseluruhan dari system.

·         Bagan alir dokumen
Merupakan bagan yang menunjukkan arus dari laporan dan formulir termasuk tembusan-tembusannya.

·         Bagan alir skematik
Merupakan bagan alir yang mirip dengan bagan alir sistim yaitu untuk menggambarkan prosedur di dalam system.

·         Bagan alir program
Merupakan baga yang menjelaskan secara rinci langkah-langkah dari proses program.

·         Bagan alir process
Merupakan bagan alir yang banyak digunakan di teknik indusri. Bagan alir ini berguna bagi analisis sistim untuk menggambarkan proses dalam suatu prosedur.


c.       Symbol-simbol flowchart


                                       Proses yang dijalankan dengan tidak manual


                                       Pemrosesan secara manual oleh manusia atau mesin dengan kecepatan pekerjaan manusia

                                      Ekstraksi mengeluarkan satu atau lebih item dari satu kumpulannya

                                      Merge penggabungan 2 atau lebih item menjadi satu kumpulan


                                      Cara meng-input secara manual pada saat memproses, contohnya mengiput keyboard

                                      Mewakili input data untuk diproses atau output data yang sudah diproses

                                                                                                                                                   Proses yang telah didefinisikan sebelumnya, digambarkan dalam flowchart yang lain

                                       Keputusan yang mana terdapat 2 atau lebih alternative

                                       Dokumen yang merupakan input atau output


                                      Display atau tampilan output informasi saat pemrosesan secara online melalui video,monitor dll

                                      Simbol konektor (penghubung) bilamana flowchart perlu diputuskan akibat keterbatasan dari flowchart
                                                            Symbol terminal yang mewakili start-stop

Data input atau output yang disimpan dalam magnetic tape
Data base yang tersimpan dalam magnetic disc Storage
Informasi input atau output yang disimpan disebuah tempat penyimpanan (storage) yang bisa diakses langsung
                                                            Data input atau output yang melalui punch card

Off-line storage, penyimpanan off-line, yang tidak bisa dicapai oleh komputer


                                       Anotasi atau komentar atas suatu symbol



                                                            Aliran proses satu arah
                                                            Aliran proses dua arah

2.      Bentuk-bentuk  pernyataan dalam bahasa c dan pascal

A.    IF dalam pascal
Semua pembicaraan kita tentang keputusan, kondisi, eksprsi logika ataupun tentang statemen IF-THEN-ELSE yang lalu,adalah berlaku dengan baik dalam pemograman pascal. Berikut ini beberapa contoh program pascal yang mengandung keputusan.











CONTOH 1

PROGRAM Lulus  _  Tidak;
ONST
        Batas         = 60.00;
VAR
       N1,N2        : Interger ;
       Nrata         : Real;
BEGIN
      Read (N1,N2);
      Nrata          =  (N1+N2)/2;
IF (Nrata >= Batas ) THEN
WRITELN (‘Lulus’)
ELSE
WRITELN (‘Tidak Lulus’)
END

CONTOH 2
PROGRAM  Upah _ Mingguan
CONST
       Batas           =  40;
       Biasa           = 3.50;
       Khusus         = 5.00;

VAR
      Jam _ Kerja  :  Integer;
     Upah             :  Real;
BEGIN
       Read (jam_Kerja);
IF (Jam_kerja <= Batas) THEN
                    Upah   :=  Jam_ Kerja * Biasa
ELSE
                  Upah   :=   (Jam _ Kerja – Batas) * Khusus + 200.00;
WRITELN (‘ Besarnya upah = ‘, Upah )
END
B.     IF ELSE
Pernyataan IF … ELSE
Bentuk umum dari IF … ELSE adalah:
If (Kondisi)
{
Statement 1;
Statement 2;
}
else
{
Statement 3;
Statement 4;
Statement dst;
}
Contoh:

#include <stdio.h>  
#include <conio.h>  
Void main()  
{  
int x;  
printf("1. Nilai Bahasa Inggris\n");  
printf("2. Nilai Matematika\n");  
scanf("%d",&x);  
if (x =1)  
{  
printf("Nilainya 85");  
}  
if (x==2)  
{  
printf("Nilainya 90");  
}  
else  
{  
printf("Tidak ada nilainya");  
}  
return 0;  
}
CONTOH:  
#include <stdio.h>  
#include <conio.h>  
Void main()  
{  
int x;  
printf("1. Nilai Bahasa Inggris\n");  
printf("2. Nilai Matematika\n");  
scanf("%d",&x);  
if (x =1)  
{  
printf("Nilainya 85");  
}  
if (x==2)  
{  
printf("Nilainya 90");  
}  
else  
{  
printf("Tidak ada nilainya");  
}  
return 0;  
}  



·         IF-THEN-ELSE IF-AKHIR JIKADALAM BAHASA C

       Para Nested IF-THEN-ELSE-AKHIR JIKA pernyataan bisa menghasilkan sangat nested IF pernyataan yang sulit untuk dibaca. Ada tangan pendek    untuk mengatasi masalah ini. Ini adalah IF-THEN-ELSE IF-AKHIR-JIKA versi. Sintaks-nya adalah ditunjukkan di bawah ini:

    
IF (ekspresi logika-1) MAKA
       pernyataan-1
    ELSE IF (ekspresi logika-2) MAKA
       
pernyataan-2
    ELSE IF (ekspresi logika-3) MAKA
       
Pernyataan-3
    ATAU JIKA MAKA (.....)
       ...........
    ELSE
       pernyataan-ELSE
    JIKA AKHIR

           Fortran mengevaluasi logis-ekspresi-1 dan jika hasilnya adalah TRUE.., Pernyataan-1 dijalankan diikuti oleh pernyataan setelah END IF. Jika logika-ekspresi-1 adalah SALAH.., Fortran mengevaluasi logis-ekspresi-2 dan mengeksekusi pernyataan-2 dan seterusnya. .. Secara umum, jika logis-ekspresi-n adalah TRUE, pernyataan-n dieksekusi diikuti oleh pernyataan setelah END IF, jika tidak, Fortran terus mengevaluasi ekspresi logis berikutnya.

         Jika semua ekspresi logis. FALSE. dan jika ELSE ada, Fortran mengeksekusi pernyataan-ELSE, jika tidak, Fortran mengeksekusi pernyataan setelah END IF.

         Perhatikan bahwa pernyataan dalam bagian THEN, ELSE IF bagian, dan bagian ELSE dapat JIKA pernyataan lain.

Contoh

    Misalkan kita perlu segmen program untuk membaca dan menampilkan x jumlah tandanya. Lebih tepatnya, jika x adalah positif, + akan ditampilkan, jika x adalah negatif, - ditampilkan, jika tidak, 0 akan ditampilkan. Berikut ini adalah solusi yang mungkin menggunakan IF-THEN-ELSE IF-AKHIR JIKA:










     
   JIKA (x> 0) KEMUDIAN
           MENULIS (*,*) '+'
        ELSE IF (x == 0) KEMUDIAN
           MENULIS (*,*) '0 '
        ELSE
           MENULIS (*,*) '-'
        JIKA AKHIR

    Mengingat kapak, kita ingin menampilkan nilai-x jika x <0, nilai x * x jika x adalah dalam kisaran 0 dan 1 inklusif, dan nilai dari 2 * x jika x lebih besar dari 1.

    
Berikut ini adalah solusi yang mungkin:

        JIKA (x <0) KEMUDIAN
           MENULIS (*,*)-x
        ELSE IF (x <= 1) THEN
           MENULIS (*,*) x * x
        ELSE
           MENULIS (*,*) 2 * x
        JIKA AKHIR

    Pertimbangkan segmen kode berikut:

        INTEGER:: x
        KARAKTER (LEN = 1):: Kelas

        JIKA (x <50) KEMUDIAN
           Kelas = 'F'
        ELSE IF (x <60) KEMUDIAN
           Kelas = 'D'
        ELSE IF (x <70) KEMUDIAN
           Nilai = 'C'
        ELSE IF (x <80) KEMUDIAN
           Nilai = 'B'
        ELSE
           Kelas = 'A'
        JIKA AKHIR

    Pertama, jika x adalah kurang dari 50, 'M' adalah ditugaskan ke Kelas. Jika x lebih besar dari atau sama dengan 50, eksekusi lanjutkan dengan ELSE pertama JIKA di mana x <60 adalah diuji. Jika adalah TRUE.., 'D' yang ditugaskan ke Kelas. Perhatikan bahwa seseorang dapat mencapai uji x <60 hanya karena tes x <50 adalah. SALAH .. Karena itu, ketika mencapai x <60, kami yakin bahwa x> = 50 harus menahan dan sebagai hasilnya, Kelas menerima 'D' jika x lebih besar dari atau sama dengan 50 dan kurang dari 60.

Dengan cara yang sama, kita tahu bahwa jika x lebih besar dari atau sama dengan 60 dan kurang dari 70, Kelas menerima 'C'. Jika x lebih besar dari atau sama dengan 70 dan kurang dari 80, Kelas menerima 'B'. Akhirnya, jika x lebih besar dari atau sama dengan 80, Kelas menerima 'A'.

Contoh pertama dan kedua menunjukkan bahwa IF-THEN-ELSE IF-AKHIR JIKA dapat menyimpan beberapa ruang dan pada saat yang sama membuat program lebih mudah dibaca. Bandingkan dua solusi dengan mereka yang menggunakan sarang JIKA.

Perhatikan juga bahwa tidak semua bersarang JIKA dapat dikonversi ke IF-THEN-ELSE IF-ELSE IF-END-bentuk. Misalnya, contoh menentukan terkecil dari tiga nomor tidak dapat dikonversi segera. Secara umum, jika semua tes (yaitu, ekspresi logis) adalah saling eksklusif, maka kesempatan untuk memiliki konversi yang sukses adalah tinggi. Jika tidak, menulis ulang beberapa bagian atau menggabungkan ekspresi logis dapat membantu. Berikut adalah satu lagi contoh:

Mari kita kembali masalah mencari yang terkecil dari tiga angka yang diberikan. Kita tahu bahwa jika adalah yang terkecil, maka harus lebih kecil dibandingkan dengan dua lainnya. Selain itu, kondisi untuk menjadi nomor yang terkecil adalah saling eksklusif. Jadi, kami memiliki konversi yang berhasil sebagai berikut:

    JIKA (a <b. DAN sebuah <. C) KEMUDIAN
       Hasil = a
    ELSE IF (b <a. DAN b <c.) KEMUDIAN
       Hasil = b
    ELSE
       Hasil = c
    JIKA AKHIR

C.    NASTE IF (pascal)
   Statemen if yang terkandung di dalam statemen if yang lain,yang lebih atas, disebut dengan statemen if tersarang (naste if). Hal ini mungkin terjadi jika statemen yang seharusnya di jalankan setelah pemeriksaan kondisi atau ekspresi Boolean, tidak dapat langsung di jalankan karena harus memeriksa kondisi.


Contoh:
Program pajakpenghasilan
{menghitung pajak penghasilan berdasarkan masukan
Penghasilan sesuai dengan ketentuan yang berlaku}
Const
   Pphrendah = 0.15 ;
   Pphtinggi   = 0.20 ;
   Hasilmin    = 300000 ; {penghasilan minimum terkena pph}
   Hasilmaks  = 10000000 ; {penghasilan maksimum terkena pph 15%}

Var
   Penghasilan  : integer ;
   Pph                : real ;

Begin
{membaca besar penghasilan}
Write ( ` Besar penghasilan   :   `) ;
Readin (penghasilan ) ;

{menghitung besar pph berdasarkan besar penghasilan)
If penghasilan > hasilmin  then
{penghasilan terkena pph}
Begin
     If  penghasilan <= hasilmaks then
{penghasilan terkena pph rendah ]
 Pph   :=   penghasilan  *  pphrendah
Else
{ hasil  > hasilmaks, terkena pph tinggi}
Pph   : = penghasilan * pphtinggi ;

  {menanpilkan besar pph }
Writein ( `pph sebesar rp  `,pph : 4 : 2
End
Else{penghasilan <= hasilmin }
Written (` Tidak di kenai pph ` ) ;
End .

Contoh 2:
·        IF DALAM BAHASA C
ini akan di bahas berikut
Bentuk if tunggal tunggal sederha
  Sintak dari bentuk if tunggal sederhana adalah sebagai berikut ini.
     If (kondisi) statemen;
Bentuk ini menunjukkan jika if kondisi yang di seleksi adalah benar (bernilai logika satu), maka statemen yang mengikutinya akan di proses. Sebaliknya jika kondisi yang di seleksi adalah tidak benar (bernilai logika nol).,maka statemen yang akan di proses.
Contoh:
Besarnya tunjangan yang akan di terima oleh seorang pegawai tergantung dari jumlah anaknya. Jika seorang pegawai mempunyai anak kurang dari 3, maka tunjangan adalah sebesar 20% dari gaji kotornya, jika jumlah anaknya lebih besar atau sama dengan 3, maka besar tunjangan adalah 30% dari gaji kotornya. Program berikut ini akan menghitung besarnya jumlah tunjangan yang di terima oleh seorang pegawai.
#include <stdio.h>
main()
{
 int jumlahAnak;
 float GajiKotor,Tunjangan,Persen Tunjangan=0.2

 printf("Gaji kotor ? ");
 scanf("%f",&GajiKotor);
 printf("Jumlah anak ? ");
 scanf("%d",&JumlahAnak);

 if("JumlahAnak>2) PersenTunjangan = 0.3;

 Tunjangan = PersenTunjangan * GajiKotor;
 }
Contoh 2:
Pada contoh sebelumnya, selain seorang pegawai mendapat tunjangan tergantung dari jumlah anaknya, gaji pegawai bersangkutan juga akan di potong untuk keprluan asuransi.besatnya potongan adalah sebesar 5% dari gaji kotor untuk jumlah anak sama atau kurang dari 2 dan sebesar 7% untuk jumlah anak lebih dari dua.

Penggunaan IF-ELSE pada Bahasa C


Dalam hal ini kita akan mengambil suatu kasus tentang menentukan apakah suatu bilangan yang dimasukkan oleh user itu termasuk bilangan genap atau kah bilangan ganjil.
Untuk menyelesaikan masalah ini kita bisa menggunakan statemen IF dan ELSE.
Instruksi if dalam Bahasa C digunakan untuk memilih jalur proses: melakukan atau tidak melakukan sesuatu proses (if), atau memlih satu dari dua proses (if else).
if (expression) statement;
Expression dievaluasi. Jika hasilnya benar (true) maka statement akan dikerjakan. Jika hasilnya salah (false) maka statement tidak akan dikerjakan. Statement disini dapat berupa satu instruksi tunggal atau sejumlah instruksi (compound statement) yang dalam bahasa C ditandai dengan {dan}.


CONTOH:
#include<stdio.h>
int main()
{
     int bilangan;

     printf("Masukkan sebuah bilangan : ");
     scanf("%d", &bilangan);

     if ( bilangan % 2 == 0)
         printf("%d adalah bilangan genap", bilangan);
     else
         printf("%d adalah bilangan ganjil", bilangan);

return 0;
}
Dengan flowchart, instruksi if dapat digambarkan sebagai berikut:

Contoh program sederhana menggunakan if:
#include<stdio.h>

int main(void){

int nilai;
char grade;

printf("Nilai Akhir?"); scanf("%d", &nilai);
fflush(stdin);

if(nilai > 84) grade = 'A';
if(nilai > 74 && nilai < 85) grade = 'B';
if(nilai > 64 && nilai < 75) grade = 'C';
if(nilai > 49 && nilai < 65) grade = 'D';
if(nilai < 50) grade = 'E';

printf("Grade = %c", grade);

getchar();
return 0;

}

Output/hasil keluaran dari program diatas adalah seperti gambar dibawah ini.
Untuk if else, alur kerjanya hampir sama dengan if. Hanya saja, ditambah opsi lain jika statement

if (expression) statement1;else statement2;
Expression dievaluasi. Jika hasilnya benar (true), maka statement1 akan dikerjakan, jika salah (false) maka statement2 akan dikerjakan. Statement1 dan statement2 dapat berupa instruksi tunggal atau beberapa instruksi yang dilingkup {dan}. Expression dapat berupa ekspresi tunggal atau lebih.

Dengan flowchart, instruksi if else dapat digambarkan seperti gambar dibawah ini.

Contoh program sederhana menggunakan if else:
#include<stdio.h>

int main(){
int sks;
float ipk;

printf("SKS Kumulatif? "); scanf("%d",&sks);
fflush(stdin);
printf("IP Kumulatif? "); scanf("%f",&ipk);
fflush(stdin);

if((sks >= 20) && (ipk >= 2.00))
printf("Ente calon sarjana");
else
printf("Aduh, ente lagi kurang beruntung nih");

getchar();
return 0;

}
Hasil ouput dari program diatas lebih kurang akan seperti gambar dibawah ini.

Statement yanng dikerjakan true atau false, dapat juga berupa instruksi if lainnya. Susunan seperti contoh dibawah ini akan membentuk nested if.

#include<stdio.h>

int main(){
int bil;

printf("Bilangan? ");scanf("%d", &bil);
fflush(stdin);

if(bil == 0) printf("%d adalah bilangan nol", bil);
else{
if(bil % 2 == 0) printf("%d adalah bilangan genap", bil);
else printf("%d adalah bilangan ganjil", bil);
if(bil > 0) printf(" dan bilangan positif");
else printf(" dan bilangan negatif");

}

getchar();

return 0;
}
Hasil ouput dari program diatas lebih kurang akan seperti gambar dibawah ini.

If, elseif dan else Dalam bahasa c

Digunakan untuk melakukan aksi berbeda untuk kondisi yang berbeda. If dan else digunakan jika anda ingin membuat kode yang akan dijalankan jika kondisi adalah benar dan kode lain jika kondisi adalah salah. Sedangkan elseif digunakan jika kemungkinan kondisi benar lebih dari satu. Perhatikan contoh berikut;
<!--Contoh if else-->
<?php
$jam=strftime("%H");
if($jam < 8) echo "Selamat pagi";
else echo "Anda telat";
?>
Jika kode yang harus dijalankan lebih dari satu baris maka harus menggunakan kurung kurawal.
<!--Contoh if else-->
<?php
$jam=strftime("%H");
if($jam < 8){
echo 'Selamat pagi <br />';
echo 'Silahkan masuk';
echo ' Selamat bekerja';
}
?>
Sedangkan jika kemungkinannya lebih dari satu maka digunakan elseif seperti contoh berikut ini;
<!--Contoh if elseif else-->
<?php
$jam=strftime("%H");
if($jam <= 9) echo 'Selamat pagi';
elseif($jam > 9 && $jam <= 14) echo 'Selamat siang';
elseif($jam > 14 && $jam <= 18) echo 'Selamat sore';
else echo 'Selamat malam';
?>
·         IF NASTED DALAM BAHASA C
Seperti yang kita ketahui setiap bahasa program mempunyai struktur percabangan, salah satunya adalah nested IF. Begitu juga dalam C++, terdapat struktur percabangan nested IF atau yang lebih kita kenal dengan nama IF bersarang.

Contoh programnya dapat kalian lihat dibawah ini:
 #include
 #include
void main()
{
 int nilai; char mark;
clrscr();
cout<<"Masukkan nilai ujian [0 - 100]: ";
cin>>nilai; cout<<"\n";
if(nilai >=90 && nilai <=100) mark = 'A';
 else if(nilai >=80 && nilai <=89) mark = 'B';
else if(nilai >=65 && nilai <=79) mark = 'C';
else if(nilai >=50 && nilai <=64) mark = 'D';
else mark = 'E';
cout<<"Nilai ujian = "<
Pernyataan switch - case
PenjelasanBentuk dariini memilikikegunaan sama seperti if – else bertingkat, tetapi penggunaannya untukmemeriksa data yang bertipe karakter atau integer. Bentuk penulisanperintah ini sebagai berikut :
switch (ekspresi integer ataukarakter ){case konstanta-1 :… perintah;… perintah;break;case konstanta-2 :… perintah;… perintah;break;…………default :… perintah;… perintah;}
Setiap cabang akan dijalankan jika syarat nilai konstanta tersebut dipenuhidan default akan dijalankan jika semua cabang diatasnya tidak terpenuhi.Pernyataan
break 

switch - case 
merupakan pernyataan yang dirancangankhusus untuk menangani pengambilan keputusan yang melibatkansejumlah atau banyak alternatif. Pernyataan
switch - case 
menunjukan bahwa perintah siap keluar dari
switch 
. Jikapernyataan ini tidak ada, maka program akan diteruskan kecabang – cabang yang lainnya.
Contoh-5
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
Pemrogramman C
Operasi Penyeleksian Kondisi
main()
{
char kode;
clrscr();
cout<<"Masukkan Kode Barang [A..C] : ";
cin>>kode;
switch(kode)
{
case 'A' :cout<<"Alat Olah Raga";
break;case 'B' :
cout<<"Alat Elelktronik";
break;case 'C' :cout<<"Alat Masak";
break;default:cout<<"Anda Salah Memasukan kode";
break;
}
getch();
}
Output yang akan dihasilkan, dari program contoh-5 diatas adalah :Gambar 4.5 Hasil Contoh-5

Contoh-6

#include<stdio.h>
#include<conio.h>
#include<iostream.h>
main()
{
char kode;
clrscr();
cout<<"Masukkan Kode Barang [A..C] : ";
cin>>kode;
Frieyadie, S.Kom67

 
Operasi Penyeleksian Kondisi
switch(kode)
{
case 'A' :
case 'a' :
cout<<"Alat Olah Raga";
break;case 'B' :
case 'b' :
cout<<"Alat Elelktronik";
break;
case 'C' :
case 'c' :
cout<<"Alat Masak";
break;
default:
cout<<"Anda Salah Memasukan kode";
break;
} getch
();
}
Output yang akan dihasilkan, dari program contoh-6 diatas adalah :Gambar 4.6

B. perulangan dalam bahasa c
Bentuk perulangan yang dapat di buat:
Ø  For
Ø  While..
Ø  Do while…
Variasi perulangan
Ø  Perulangan sederhana
Ø  Perulangan nested
Kondisi perulangan
Ø  Go to
Ø  Break

Ø For….(loop)

Struktur perulangan for bisa di gunakan untuk mengulang suatu proses yang sudah di ketahui jumlah perulangannya.




Ekspresi umum perulangan for:
     This expression executes                                              this expression is executed
Once, when the loop stars                                              at the end of every loop cycle

++count
Count <= 10
Count = 1
For(                                       ;                                            ;                                     )




                                 This expression is evaluated at the begining
                                    Of each loop cycle. If it is true, the loop
                                     Continues,and if it is false,the loop ends



expresi umum :
                        fo ( awal ; kondisi ; counter )
                        {
                                    Statement1 ;
                                    Statement2 ;
                        }
                        Statement3;
CONTOH  :
            int i;
                        For (i= 1 ; I <= 10 ; ++i)
                                    Printf (“\niterasi ke = %d” , i);






Ø  While … (loop)
Perulangan while banyak di gunakan pada program yang terstruktur. Perulanagan ini banyak di gunakan bila jumlah perulangan belum di ketahui.

Ekspresi umum while... :
                        While ( expression )
                        {
                                    Statement1;
                                    Stetement2;
                        }
                        Statement3;

CONTOH:
                        Int I;
                        While (i<=10)
                        {
                            Printf(“\n\titerasi ke = %d” , i);
                            I++
                        }


Ø Do While … (loop)
Perbedaanya dengan while, do … while memiliki pengecekkan kondisi yang terletak setelah statement perulangan.
 Expresi umum while …:
                                    Do
                                    {
                                                Statement1;
                                                Statement2;
                                    }
                                    While ( expression )
                                    Statement3;
CONTOH:
                        Int I;
                        Do
For (int 1 = 0 ; i<10 ; ++i)
            For (int j = 0 ; j<20 ; ++k)      /* loop executed 10 times                   */
                        For (int k = 0 ; k<30 ; ++k)    /*loop exeuted 10x20 times                */
                        {                                               /*loop body executed 10x20x30 times */
                                    /* do something useful */
                        }
                        {
                              Printf(“\n\titerasi ke = %d” , I ) ;
                              I++;
                        While (I <= 10)
Ø  Perulangan bersarang (nested)
CONTOH:
Ø  Break & goto
Break & goto di tempatkan di dalam statement perulangan. Ketika kursor kompilasi menjalankan statement break, maka kursor  kompilasi akan melompat keluar dari scope perulangan terkait.

Semua bentuk perulangan ( do … while , while, dan for) dapat menggunakan break.
For (;;)
{
            If (iter < 10 )
            {
                        Printf (“iterasi ke-“ , iter ) ;
                        Iter++;
            }
            Else break;
}

B. PERULANGAN
Perulangan digunakan untuk menjalankan satu atau beberapa pernyataan sebanyak beberapa kali. Proses adalah suatu rutan-urutan pernyataan yang akan di ekskusi terus menerus selama kondisi yang diharapkan terpenuhi. Pengulangan proses merupakan suatu kemampuan yang dimiliki oleh semua compiler bahasa pemograman. Terdapat banyak jenis pengulangan proses, Tetapi paling tidak aka dibahas dua buah bentuk jenis pengulangan :
1.      For. Pengulangan dengan besarnya nilai integer sebagai kondisi (biasanya berbentuk for)
2.      While. Pengulangan dengan kondisi pernyataan Boolean (biasanya berbentuk while)







Gambaran flowchart dalam bentuk perulangan adalah sebagai berikut :
Kondisi = nilai awal

Kondisi = nilai akhir

Pernyataan……..;
pernyataan……..;

Koondisi diincrement


                                                                                      

Pernyataan FOR
Pernyataan for biasanya digunakan untuk pernyataan yang sudah ditentukan jumlah pengulangannya.
Pernyataan FOR dengan kondisi numerik yang menaik (increment). Pada looping yang berbentuk seperti ini terdapat pernyataan increment atau penambahan yang berbentuk sebagai berikut : kondisi= kondisi+n, dimana n adalah bernilai positif, sebagai contoh sebagai berikut : j=j+1, j++;


Ø  Pernyataan FOR  dalam bahasa C adalah sebagai berikut :
FOR (inisialisasi nilai_awal; kondisiPembatas_perulangan;
increment/decrement)
   {
instruksi-instruksi;
            }
Ø  Contoh dari pernyataan for dalam bahasa C diperlihatkan pada program 7.1 :
Listing Program dalam bentuk for

#include <stdio.h>
void main(void)
{
for(int j = 1; j <= 4; j= j+1)
{
printf("%d\n",j);
}
1
2
3
4

Perhatikanlah didalam pengulangan dengan for, pernyataan yang berada didalam loop
akan dieksekusi sampai kondisi loop tersebut tidak terpenuhi.
 
Catatan:
· Nilai untuk perulangan dalam for tidak dibenarkan bertipe float.
Di akhir penulisan statemen for tidak menggunakan tanda titik koma (;)
contoh: for (int j = 1 ; j < = 4 ; j = j+1); _ tidak dibenarkan
Penggunaan tanda titik koma setelah statemen for tidak menimbulkan pesan kesalahan
tetapi akan menghasilkan keluaran yang tidak sesuai karena statemen for tersebut tidak
dianggap pernyataan perulangan, hanya akan dinyatakan sebagai pernyataan biasa
                 

Listing program dengan titik koma
#include <stdio.h>
void main(void)
{
for(int j = 1; j <= 4; j= j+1);
{
printf("%d\n",j); }
}
5
Hasil yang didapat adalah 5, karena hanya nilai j akhir yaitu
5 yang tercetak, sedang saat j
bernilai 1 hingga 4 tidak
tercetak.
Menggunakan tanda titik
koma

Pernyataan for dapat dituliskan di dalam pernyataan for lagi. Hal semacam ini sering disebut dengan pernyataan for bersarang (nested for).










Bentuk umum pernyataan nested for dalam bahasa C adalah sebagai berikut:
for (inisialisasi_1; kondisi_1; increment/decrement_1)
{
for (inisialisasi_2; kondisi_2; increment/
decrement_2)        
{                                                                                                         
instruksi-instruksi;
}
instruksi-instruksi;
}


Listing Program  Contoh for-bersarang
void main(void)
{
int x,y;
for(x=1; x<=3;x++)
{ for(y=1; y<=2; y++)
{ printf("%d %d ",x, y); /* perintah ini dilakukan selama kondisiny masih terpenuhi */
printf("\n");
}
}
}

  Hasil output dari program
1 1
1 2
2 1
2 2
3 1
3 2

Kalang/looping for yang luar (dengan pencacah variable x) akan menjalankan
kalang yang dalam (dengan pencacah y) sebanyak 3 kali. Dan pada setiap pengulangan di
layar akan dituliskan nilai x dan y.
Pada saat x bernilai 1, y diulang sebanyak 2 kali. Jadi pada layar akan tertulis 1 1
dan 1 2. demikian juga pada saat x bernilai 2, y diulang sebanyak 2 kali. Jadi pada layar
akan tertulis 2 1 dan 2 2. hal yang sama terjadi pada saat x bernilai 3.
Pernyataan while
Pernyataan pengulangan ini biasanya digunakan bila belum diketahui pasti berapa banyak akan dilakukan pengulang pernyataan-pernyataan. Berakhir pengulangan ini ditentukan oleh suatu kondisi. Bila kondisi sudah tidak terpenuhi maka pengulangan akan berakhir. Dengan kata lain, selama kondisi masih terpenuhi, pengulangan akan terus dilakukan.
Ø  Bentuk umum pernyataan while dalam bahasa C adalah sebagai berikut:
while(kondisi)
{
instruksi;
}
Kondisi sendiri merupakan suatu ekspresi Boolean, artinya hanya dapat bernilai benar (true) atau salah (false).

Ø  Contoh dari pernyataan while dalam bahasa C


#include <stdio.h>
void main(void)
{
int j;
j = 1;
while (j < 10) /* Perulangan akan dilakukan selama kondisi
terpenuhi */
{
printf("%d ",j);
j = j + 1; /* Menaikkan nilai j agar perulangan dapat
berakhir */
}

Hasil output program
1 2 3 4 5 6 7 8 9

Jika dilihat hasil yang di dapat dari program tersebut dapat dilihat program menampilkan nilai j dar j bernilai awal 1 hingga saat j  bernilai 9. Jika dilihat kondisi yang membatasi adalah (j < 10 ) sehingga saat j sudah bernilai 10, perulangan selesai dan program keluar dari blok while.



Penyataan do-while

Pernyataan pengulangan do-while hamper sama dengan pernyataan pengulangan while, dan biasanya digunakan bila jumlah pengulangan belum dapat ditentukan pada saat program ditulis.

Struktur do-while digunakan untuk melaksanakan (do) statement atau blok statemen selama (while) kondisi yang diseleksi pada while tidak terpenuhi. Sintaks dari struktur ini adalah :





Ø Bentuk umum pernyataan do-while dalam bahasa C adalah sebagai berikut:

Do  {

instruksi;
}
while(kondisi);
Catatan:
·Perbedaan pernyataan do-while dan while terletak pada pengecekan kondisi. Jika pada pernyataan while, kondisi dicek pada awa blok, pada pernyataan do-while, kondisi dicek pada akhir blok.
. Struktur do-while paling tidak akan mengerjakan satu kali instruksi meskipun kondisi tidak terpenuhi karena pengecekan kondisi dilakukan di akhir blok.










Ø Contoh dari pernyataan do-while dalam bahasa C
Listing Program contoh do-while
#include <stdio.h>
void main(void)
{
int j;
j = 1;
do { // akan dikerjakan statemen-statemen di bawah ini
printf("%d ",j);
j = j + 1;
}
while(j < 10); /* Pengecekan kondisi, jika masih terpenuhi maka perulangan
akan dilanjutkan, jika tidak keluar dari blok perulangan */
}

Hasil output program

1 2 3 4 5 6 7 8 9

Hasil listing program do-whie 2
#include <stdio.h>
void main(void)
{
int j;
j = 1;
do {
printf("%d ",j);
} while(j > 10);
}


1

Jika dilihat hasil yang didapat dari program tersebut dapat dilihat program hanya menampilakan nilai j awal yaitu 1. Jika dilihat kondisi yang membatasi adalah (j > 10) sehingga saat dilakukan pengecekan ternyata nilai j tidak memenuhi kondisi, perulangan selesai dan program keluar dari blok while, tetapi meskipun kondisi tidak terpenuhi pencetakan nilai j telah dikerjakan.
Jadi kita dapat menggunakan statement do-while jika kita menginginkan proses perulangan dilakukan minimal satu kali.



FUNGSI DAN PROSEDUR
F U N G S I
1.     Pengertian Fungsi

Fungsi merupakan suatu bagian dari program yang dimasukkan untuk mengerjakan suatu tugas tertentu dan letaknya terpisah dari program yang memanggilnya. Fungsi merupakan elemen utama dalam bahasa C karena bahasa C sediri terbentuk dari kumpulan funsi-fungsi. Dalam setiap program bahasa C, minimal terdapat satu fungsi main (). Fungsi banyak diterapkan dalam program-program C yang terstruktur. Keuntungan pengguna fungsi dalam program yaitu program akan memiliki struktur yang jelas (mempunyai readability yang tinggi) dan juga akan menghindari penulisan bagian program yang sama. Dalam bahasa C fungsi dapat dibagi menjadi 2, yaitu fungssi pustaka atau fumgsi yang telah tersedia dalam C++ dan fungsi yang didefinisikan atau dibuat oleh programmer.
Beberapa Fungsi yang telah tersedia di dalam bahasa C++, antara lain:

Fungsi Operasi String (tersimpan dalam header file “string.h”)
.
1.      strcpy()

Berfungsi untuk menyalin suatu string asal ke variable string tujuan.
Bentuk umum : strcpy(var_tujuan, string_asal);

2.      strlen()

berfungsi untuk memperoleh jumlah karakter dari suatu string.
Bentuk umum : strlen(string);
3.      strcat()

Digunakan untuk menambahkan string sumber ke bagian akhir dari string
tujuan.
Bentuk umum : strcat(tujuan, sumber);
4.      strupr()

Digunakan untuk mengubah setiap huruf dari suatu string menjadi huruf
capital.
Bentuk umum : strupr(string);
5.      strlwr()

Digunakan untuk mengubah setiap huruf dari suatu string menjadi huruf
kecil semua.
Bentuk umum : strlwr(string);

6.      strcmp()

Digunakan untuk membandingkan dua buah string.
Hasil dari fungsi ini bertipe integer dengan nilai :
(a) Negative, jika string pertama kurang dari string kedua.
(b) Nol, jika string pertama sama dengan string kedua
(c) Positif, jika string pertama lebih besar dari string kedua.

Bentuk umum : strcmp(string1, string2);

Fungsi Operasi Karakter (tersimpan dalam header “ctype.h”)

. islower()

Fungsi akan menghasilkan nilai benar (bukan nol) jika karakter
merupakan huruf kecil.
Bentuk umum : islower(char);

. isupper()

Fungsi akan menghasilkan nilai benar (bukan nol) jika karakter
merupakan huruf kapital.
Bentuk umum : isupper(char);
.
 isdigit()

Fungsi akan menghasilkan nilai benar (bukan nol) jika karakter
merupakan sebuah digit.
Bentuk umum : isdigit(char);
.
tolower()

Fungsi akan mengubah huruf capital menjadi huruf kecil.
Bentuk umum : tolower(char);
.
toupper()

Fungsi akan mengubah huruf kecil menjadi huruf kapital.
Bentuk umum : toupper(char);
Fungsi Operasi Matematik (tersimpan dalam header “math.h” dan “stdlib.h”)
.
sqrt()
Digunakan untuk menghitung akar dari sebuah bilangan.
Bentuk umum : sqrt(bilangan);
.
pow()
Digunakan untuk menghitung pemangkatan suatu bilangan.

Bentuk umum : pow(bilangan, pangkat);
.
sin(), cos(), tan()
Masing-masing digunakan untuk menghitung nilai sinus, cosinus dan
tangens dari suatu sudut.
Bentuk umum :
sin(sudut);
cos(sudut);
tan(sudut);
.
atof()
Digunakan untuk mengkonversi nilai string menjadi bilangan bertipe
double.
Bentuk umum : atof(char x);
.
atoi()
Digunakan untuk mengkonversi nilai string menjadi bilangan bertipe
integer.

Bentuk umum : atoi(char x);
.
div()
Digunakan untuk menghitung hasil pembagian dan sisa pembagian.
Bentuk umum : div_t div(int x, int y)
Strukturnya :
typedef struct
{ int qout; // hasil pembagian
int rem // sisa pembagian
} div_t;
.
max()
Digunakan untuk menentukan nilai maksimal dari dua buah bilangan.
Bentuk umum :max(bilangan1, bilangan2);
.
 min()
Digunakan untuk menentukan bilangan terkecil dari dua buah bilangan.
Bentuk umum :min(bilangan1, bilangan2);


Membuat Fungsi Sendiri
Deklarasi Fungsi


Sebelum digunakan (dipanggil), suatu fungsi harus dideklarasikan da didefinisikan terlebih dauhu. Bentuk umum pendeklarasian fungsi adalah :
     tipe_fungsi nama_fungsi(parameter_fungsi);
Sedangkan bentuk umum pendefinisian fungsi adalah :
Tipe_fungsi nama_fungsi(parameter_fungsi)
{
statement
statement
………...
………...
}
Hal-hal yang perlu diperhatikan dalam penggunaan fungsi :

1.      Kalau tipe fungsi tidak disebutkan, maka akan dianggap sebagai fungsi dengan nilai keluaran bertipe integer.
2.      Untuk fungsi yang memiliki keuaran yang bertipe bukan integer, maka diperlukan pendefenisian penentu tipe fungsi.
3.        Untuk fungsi yang tidak mempunyai nilai keluaran maka masukkan kedalam tipe void
4.        Pernyataa yang diberikan untuk memberikan nilai akhir fungsi berupa pernyataan return.
5.        Suatu fungsi dapat menghasilkan nilai balik bagi fungsi pemanggilannya.






Parameter Formal dan Parameter Aktual

1.      Parameter Formal adalah variabel yang ada pada daftar parameter dalam definisi fungsi
2.      Parameter Aktual adalah variabel (parameter) yang dipakai dalam pemanggilan fungsi

Cara Melewatkan Parameter

Cara melewatkan suatu parameter dalam Bahasa C ada dua cara yaitu :
1.      Pemanggilan Secara Nilai (Call by Value)
·         Call by value akan menyalin nilai dari parameter actual ke parameter formal.
·         Yang dikirimka ke fungsi adalah nilai dari datanya, bukan alamat memori letak dari datanya
·         Fungsi yang menerima kiriman nilai akan menyimpannya di alamat terpisah dari nilai aslinya yang digunakan oleh bagian program yang memanggil fungsi.
·         Perubahan nilai di fungsi (parameter formal) tidak akan merubah nilai asli di bagian program yang memanggilnya.
·         Pengirim parameter secara nilai adalah pengiriman searah, yaitu dari bagian program yang memanggil fungsi ke fungsi yang dipanggil
·         Pengiriman suatu nilai dapat dilakukan untuk suatu ungkapan, tidak hanya untuk sebuah variabel, elemen array atau konstata saja.
2.      secara Referensi (call by Reference)
·           pemanggilan secara Referensi merupakan upaya untuk melewatkan alamat dari suatu variabel kedalam fungsi
·           yang dikirimkan kefungsi adalah alamat letak dari nilai datanya, bukan nilai datanya
·           fungsi yang menerima kiriman alamat ini makan menggunakan alamat yang sama untuk mendapatkan nilai datanya.
·           Perubahan nilai di fungsi akan merubah nilai asli di bagian program yang memanggil fungsi.
·           Pengiriman parameter secara referensi adalah pengiriman dua arah, yaitu fungsi pmanggil ke fungsi yang dipanggil dan juga sebaliknya.
·           Pengiriman secara acuan tidak dapat dilakukan untuk suatu ungkapan.











Penggologan Variabel berdasarkan Kelas Penyimpanan (Storage Class)

1.      Variabel local`
Variabel lokal adalah variabel yang dideklarasikan di dalam fungsi.
Sifat-sifat variabel lokal :
·         Secara otomatis akan diciptakan ketika fungsi dipanggil dan akan lenyap ketika proses ekskusi terhapad fungsi berakhir
·         Hanya dikenal oleh fungsi tempat variabel di deklarasikan
·         Tidak ada inisialisasi secara otomatis (saat variabel diciptaakan nilainya random)
·         Dideklarasikan dengan menambahkan kata “auto” (opsional).


2.      Variabel global (eksternal)

Variabel global (eksternal) adalah variabel yang dideklarasikan diluar fungsi
Sifat-sifat variabel global :
Dikenal (dapat diakses) oleh semua fungsi.
Jika tidak diberi nilai awal secara otomatis berisi nilai nol.
Dideklarasikan dengan menambahkan kata “extern” (opsional).
3.       Variabel Statis
Variabel statis adalah variabel yang nilainya tetap dan bisa berupa variabel local (internal) dan variabel global (eksternal).
Sifat-sifat variabel statis :
·           Jika bersifat internal (local), maka variabel hanya dikenal oleh fungsi tempat variabel di deklarasikan
·           Jika bersifat eksternal(global), maka variabel dapat dipergunakan oleh semua fungsi yang terletak pada program yang sama.
·           Nilai variabel statis tidak akan hilang walau eksekusi terhadap fungsi telah berakhir
·           Inisialisasi hanya perlu dilakukan sekali saja, yaitu pada saat fungsi dipanggil pertama kali
·           Jika tidak diberi nilai awal secara otomatis berisi nilai nol.
·           Dideklarasikan dengan menambahkan kata ‘static”.

4.      Variabel Register

Variabel Register adalah variabel yang nilainya disimpan dalam resister dan bukan dalam memori RAM.
Sifat-sifat variabel register :
·           Hanya dapat diterapkan pada variabel local yang bertipe int dan char
·           Digunakan untuk mengendalikan poses perulang (looping)
·           Proses perulangan akan lebih cepat karena variabel register memiliki kecepatan yang lebih tinggi dibandingkan variabel biasa.
·           Dideklarasikan dengan menambahkan kata “register”.
                                            

F U N G S I  R E K U R S IF

Rekursif ialah salah satu teknik pemograman dengan cara memanggil sebuah fungsi dari dirinya sendiri, baik itu secara langsung maupun tidak langsung. Pemanggilan fungsi rekursif secara langsung berarti dalam fungsi tersebut terdapat statemet untuk memanggil dirinya sendiri sedangkan secara tidak langsung berarti fungsi rekursif tersebut memanggil 1 atau lebih fungsi lain sebelum memanggil dirinya sendiri.

Fungsi Rekursif Tak Langsung

Penampungan stack yang cukup besar. Karena setiap kali pemanggilan fungsi, register-register seperti cs (untuk memory far) dan ip harus disimpan, belum lagi untuk penanganan local variabel serta parameter fungsi yang tentunya membutuhkan ruang untuk stack lebih banyak lagi. Selain itu karena setiap pemanggilan fungsi, register dan memory harus di push kestack maka setelah selesai pemanggilan perlu diadakan pop stack. Untuk mengembalikan memory dan register kembali ke adaan awal, ini sering disebut sebagai overhead.

Proses Rekursif

Untuk dapat memahami proses yang terjadi dalam sebuah fungsi rekusif, marilah kita simak contoh fungsi rekusif berikut :



P R O S E D UR

Pengertian Prosedur

Seperti halnya dan fungsi, prosedur merupakan suatu bagian dari program yang dimaksud untuk mengerjakan suatu tugas tertentu dan letaknya terpisah dari program yang memanggilnya. Perbedaanya adalah, fugsi juga dideklarasikan seperti variabel, dan mengembalikan nilai fungsi kepemanggilannya. Sedangkan prosedur tidak dideklarasikan seperti variabel dan tidak mengembalikan nilai tertentu, tapi memberikan hasil ada dalam prosedur ini. Prosedur juga sering disebut dengan fungsi tanpa tipe fungsi, artinya dengan menggunakan tipe void.

Contoh Program:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <stdio.h>
#include <conio.h>
float Volume; /* Variabel global */

void LuasLingkaran() /* deklarasi fungsi tanpa parameter */
{
int r; /* variabel lokal */
float Luas; /* variabel lokal */
r=10;
Luas = 3.14*r*r;
printf("Luas Lingkaran = %2.2f",Luas);
}
void VolumeBalok(int &p,int &l,int &t) /* deklarasi fungsi dengan parameter */
{
Volume = p*l*t;
}
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
LuasLingkaran(); /* Pemanggilan Fungsi tanpa parameter */
VolumeBalok(2,3,4); /* Pemanggilan fungsi dengan parameter */
printf("\nVolume Balok = %2.2f",Volume);
getch();
return 0;
}
//---------------------------------------------------------------------------

void LuasLingkaran() /* deklarasi fungsi tanpa parameter */
{
int r; /* variabel lokal */
float Luas; /* variabel lokal */
r=10;
Luas = 3.14*r*r;
printf("Luas Lingkaran = %2.2f",Luas);
}
void VolumeBalok(int &p,int &l,int &t) /* deklarasi fungsi dengan parameter */
{
Volume = p*l*t;
}
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
LuasLingkaran(); /* Pemanggilan Fungsi tanpa parameter */
VolumeBalok(2,3,4); /* Pemanggilan fungsi dengan parameter */
printf("\nVolume Balok = %2.2f",Volume);
getch();
return 0;
}
//--------------------------------------------------------------------------
4.prosedur n funtion dalam bahasa c dan pascal

FUNCTION & PROCEDURE DALAM BAHASA C

Isue pemrograman berkembang setiap saat, diawali dengan issue terstruktur sekitar tahun 70’an kemudian issue modular dan yang sedang berkembang adalah issue object oriented. Issue terstruktur dan modular merupakan paradigma prosedural sedangkan issue object oriented adalah berada dalam paradigma object-oriented. Function&Procedure berkembang pada saat terjadinya issue modular, hal itu memudahkan programmer untuk memecah program menjadi bagian-bagian sub program kecil. Untuk mempelajari function & procedure dalam paradigma prosedural perlu diperhatikan dahulu tentang struktur data. Struktur data terbagi dalam beberapa type :
  1. Dasar : integer, real, boolean, character. Nama informasi yang didefinisikan dengan type dasar ini setiap saat hanya dapat menyimpan satu nilai.
  2. Bentukan(user-defined type) : structure, union, enumeration. Type bentukan yaitu type yang merupakan komposisi dari type bentukan. Nama informasi yang didefinisikan dengan type ini setiap saat hanya mengandung satu nilai sesuai dengan komposisi dari type yang didefinisikan.
Definisi Type Structure :
typedef struct {
float x , y;
}Point;
Deklarasi Variabel Bertype Point :
Point P;
Cara akses(baca & tulis) Point :

P.x = 10;   // baca

P.y = 20;   // baca
Definisi Type Enumeration : (lihat Schaum’S hal 45, 138,139)
enum shape {circle, square, triagle };    // circle=0, square=1, triangle=2
enum  color {red, blue, green, yellow };  // red=0, green=1, green=2, yellow=3;
Deklarasi Variabel Bertype Enumeration :
shape  ellipse;
color    background;
Cara akses(baca & tulis) Enumeration :
ellipse=circle;   // baca,  circle bernilai 0
color  =yellow;   // baca, yellow  bernilai 3
cout << “ellipse : “ << ellipse << endl;   // tulis, tercetak  “ellipse : 0”
cout << “color : “ << color << endl;       //  tulis, tercetak  “color : 3”
Derived type(array/tabel, function, pointer).
Procedure&Function dalam pemrograman prosedural merupakan aksi(dari operator-operator)  yang memanipulasi struktur data. Lihat Schaum’S hal 89 – 126!!!
Contoh 1 : terdapat dua buah bilangan bertype integer(struktur data dasar, integer), aksi yang dapat dilakukan terhadap bilangan-bilangan tersebut adalah aksi tambah, kurang, bagi , kali dsb. Aksi-aksi tersebut dapat dipandang sebagai sebuah prosedur atau function. Umumnya, aksi terhadap type dasar  sudah built-in dalam compiler.
Contoh  2 : Terdefinisi 1 variabel bertype Point, aksi yang dapat dilakukan terhadap variabel tersebut adalah tambahpoint, kurangpoint, setpoint, getpoint. Umumnya, aksi terhadap type buatan belum terdefinisi di dalam compiler seperti  C, programmer perlu mendefinisikannya sendiri  sehingga user-programmer dapat menggunakannya. Aksi  tambahpoint,kurangpoint,setpoint diimplementasikan dalam prosedur& function.
Perlu diperhatikan beberapa aspek, ketika akan mengimplementasikan prosedur&function dalam sebuah bahasa pemrograman C/C++(prosedural) yaitu : struktur umum dalam program, relationship antara function&procedure dengan  data (global&lokal.




Format Penulisan Function&Procedure dalam Program C/C++
Ditulis dalam satu file dengan program utama/Driver
#include <……………>
//————Definisi type data
//————Deklarasi variabel/data global
//————Deklarasi function&procedure (primitif)/Prototipe : lihat Schaum’S hal
//                94-95
//————Realisasi Prototipe : lihat Schaum’S hal 94-95
//————Program Utama/Driver : Bagian pemanggil function&procedure, terbagi
//                dua yaitu call by reference dan value : lihat Schaum’S hal 103 – 108.
Kelebihan bahasa C++ dalam hal function adalah
  • Function bisa mengembalikan (return) by reference. Contoh 6.7 lihat Schaum’S hal 162.
  • Overloading : Menggunakan nama yang sama untuk fungsi yang berbeda. Lihat Schaum’S hal 111.
Kategori function dalam C
1.      Yaitu fungsi-fungsi yang telah di sediakan oleh C dalam file-file header atau libarrynya. Misalnya: clrscr(), printf(), getch,() untuk
Untuk fungsion ini kita harus mendeklarasikan terlebih dahulu library yang akan di gunakan, yaitu dengan menggunakan propresesor direktif: #include <conio.h>
2.      Programmer-difened function
Adalah function yang di buat oleh programmer sendiri. Function ini memiliki nama tertentu yang unik dalam program,letaknya terpisah dari program utama,dan bisa di jadikan satu ke dalam suatu library buatan programmer itu sendiri yang kemudian juga di includekan untuk penggunanya.
Keuntungan Fungsi
1.      Dapat melakukan pendekatan top-down dan divide-and-conquer:
2.      Top-down: penelusuran program mudah
3.      Divide-and-conquer: program besar dapat dipisah menjadi program-program kecil.
4.      Kode program menjadi lebih pendek, mudah dibaca, dan mudah dipahami
5.      Program dapat dikerjakan oleh beberapa orang sehingga program cepat selesai dengan koordinasi yang mudah.
6.      Mudah dalam mencari kesalahan-kesalahan karena alur logika jelas dan sederhana Kesalahan dapat dilokalisasi dalam suatu modul tertentu saja.
7.      Modifikasi program dapat dilakukan pada suatu modul tertentu saja tanpa mengganggu program keseluruhan
8.      Fungsi – fungsi menjadikan program mempunyai struktur yang jelas.
9.      Dengan memisahkan langkah – langkah detail ke satu atau lebih fungsi – fungsi, maka fungsi utama (main) akan menjadi lebih pendek, jelas dan mudah dimengerti.
10.  Fungsi -fungsi digunakan untuk menghindari penulisan program yang sama yang ditulis secara berulang – ulang. Langkah – langkah tersebut dapat dituliskan sekali saja secara terpisah dalam bentuk fungsi. Selanjutnya bagian program yang membutuhkan langkah – langkah ini tidak perlu selalu menuliskannya, tidak cukup memanggil fungsi tersebut.
11.   Mempermudah dokumentasi.
12.   Reusability: Suatu fungsi dapat digunakan kembali oleh program atau fungsi lain
Sifat-sifat fungsi
1.      Nilai fan-in tinggi, artinya semakin sering suatu modul dipanggil oleh pengguna semakin tinggi nilai fan-in
2.      Nilai Fan-out rendah, artinya semakin spesifik fungsi suatu modul akan semakin rendah nilai fan-out
3.      Memiliki Self-contained tinggi: artinya kemampuan untuk memenuhi kebutuhannnya sendiri
Kategori fungsi dalam C
Standard Library Function . Yaitu fungsi-fungsi yang telah disediakan oleh C dalam file-file header atau librarynya. Misalnya: clrscr(), printf(), getch(). Untuk function ini kita harus mendeklarasikan terlebih dahulu library yang akan digunakan, yaitu dengan menggunakan preprosesor direktif. Misalnya: #include
Programmer-Defined Function . Adalah function yang dibuat oleh programmer sendiri.
Function ini memiliki nama tertentu yang unik dalam program, letaknya terpisah dari program utama,dan bisa dijadikan satu ke dalam suatu library buatan programmer itu sendiri yang kemudian juga di-include-kan jika ingin menggunakannya.
Perancangan Fungsi

Dalam membuat fungsi, perlu diperhatikan:
1.      Data yang diperlukan sebagai inputan
2.      Informasi apa yang harus diberikan oleh fungsi yang dibuat ke pemanggilnya
3.      Algoritma apa yang harus digunakan untuk mengolah data menjadi informasi

Struktur Fungsi

Deklarasi function (function prototype/ declaration)Terdiri dari:
1.      Judul fungsi
2.      Tipe data yang akan dikembalikan/void
3.      Tidak ada kode implementasi function tersebut Bentuk umum: tipe_data|void nama_fungsi([arguman 1, argument 2,....]);

            Deklarasi fungsi diakhiri dengan titik koma . Tipe_data dapat berupa segala tipe data yang dikenal C ataupun tipe data buatan, namun tipe data dapat juga tidak ada dan digantikan dengan void yang berarti fungsi tersebut tidak mengembalikan nilai apapun. Nama fungsi adalah nama yang unik. Argumen dapat ada atau tidak (opsional) yang digunakan untuk menerima argumen/parameter. Antar argumen-argumen dipisahkan dengan menggunakan tanda koma. Suatu fungsi perlu dideklarasikan sebelum digunakan. Untuk alasan dokumentasi program yang baik, sebaiknya semua fungsi yang digunakan dideklarasikan terlebih dahulu Deklarasi fungsi ditulis sebelum fungsi tersebut digunakan
Struktur Fungsi
1.      Tubuh Function/Definisi Function (FunctionDefinition)Terdiri dari:
2.      function prototype yang disertai dengan kode implementasi dari function yang berisikan statemen/instruksi yang akan melakukan tugas sesuai dengan tujuan dibuatnya fungsi tersebut.
Bentuk Umum Definisi Fungsi

         Tubuh fungsi dapat berisi segala perintah yang dikenal oleh C, pada dasarnya tubuh fungsi sama dengan membuat program seperti biasa. Return bersifat opsional, adalah keyword pengembalian nilai dari fungsi ke luar fungsi, return wajib jika fungsi tersebut mengembalikan nilai berupa tipe data tertentu, sedangkan return tidak wajib jika fungsi tersebut bersifat void.
Kapan menggunakan Deklarasi dan Definisi Fungsi?

         Karena prinsip kerja program C sekuensial, maka. Jika bagian dari program yang menggunakan fungsi diletakkan sebelum definisi dari fungsi, maka deklarasi dari fungsi diperlukan. Akan tetapi jika bagian dari program yang menggunakan fungsi terletak nsetelah definisi dari fungsi, maka deklarasi dari fungsi dapat tidak dituliskan.


Jenis fungsi dalam C

Fungsi Void

          Fungsi yang void sering disebut juga prosedur . Disebut void karena fungsi tersebut tidak mengembalikan suatu nilai keluaran yang didapat dari hasil proses fungsi tersebut.
Ciri:
1.      Tidak adanya keyword return.
2.      tidak adanya tipe data di dalam deklarasi fungsi.
3.       menggunakan keyword void.
4.      Tidak dapat langsung ditampilkan hasilnya
5.      Tidak memiliki nilai kembalian fungsi
Fungsi non-void
Fungsi non-void disebut juga function. Disebut non-void karena mengembalikan nilai kembalian yang berasal dari keluaran hasil proses function tersebut .
Ciri:
1.      ada keyword return
2.      ada tipe data yang mengawali fungsi
3.      tidak ada keyword void
4.      Memiliki nilai kembalian . Dapat dianalogikan sebagai suatu variabel yang memiliki tipe data tertentu sehingga dapat langsung ditampilkan hasilnya.
Keyword void

Keyword void juga digunakan jika suatu function tidak mengandung suatu parameter apapun. Contoh fungsi Faktorial
The main Function
·         function main() dibutuhkan agar program C dapat dieksekusi!
·         Tanpa function main, program C dapat dicompile tapi tidak dapat dieksekusi (harus
dengan flag parameter -c, jika di UNIX) . Pada saat program C dijalankan, makacompiler C pertama kali akan mencari function main() dan melaksanakan instruksi-instruksi yang ada di sana. Function main, sering dideklarasikan dalam 2 bentuk:
. int main()
. void main()
int main()
Berarti di dalam function main tersebut harus terdapat keyword return di bagian akhir fungsi dan mengembalikan nilai bertipe data int. Mengapa hasil return harus bertipe int juga? karena tipe data yang mendahului fungsi main() diatas dideklarasikan int. Tujuan nilai kembalian berupa integer adalahuntuk mengetahui status eksekusi program. jika “terminated successfully” (EXIT_SUCCESS) maka, akan dikembalikan status 0, sedangkan jika “terminated unsuccessfully” (EXIT_FAILURE) akan dikembalikan nilai status tidak 0, biasanya bernilai 1. Biasanya dipakai di lingkungan UNIX void main(). Berarti berupa function yang void sehingga tidak mengembalikan nilai status program sehingga nilai status program tidak bisa diketahui. Biasanya dipakai pada program C di lingkungan Windows Bentuk pemanggilan fungsi di C.


#include <iostream.h>;
#include <conio.h>;

int fungsi_menu(void);
float fungsi_perKalian(void);
float fungsi_pemBagian(void);
float fungsi_pengUrangan(void);
float fungsi_penAmbahan(void);
int menu_exit(void);
main ()
{
  fungsi_menu();
  return 0;
}

int fungsi_menu()
{
  clrscr();
  int a;
  cout << "——pilih——\n";
  cout << "1. perkalian\n";
  cout << "2. pembagian\n";
  cout << "3. pengurangan\n";
  cin >> a;

  switch (a)
  {
                case 1: fungsi_perKalian(); break;
                case 2: fungsi_pemBagian(); break;
                case 3: fungsi_pengUrangan(); break;
                case 4: fungsi_penAmbahan(); break;
                default: break;
  }
  return 0;
}


float fungsi_perKalian()
{
float x,y,z;
cin >> x ;
cin >> y ;
z = x * y;
cout << "hasilnya : " << z << endl;
cout << endl;
menu_exit();
return 0;
}


float fungsi_pemBagian()
{
float x,y,z;
char a;
cin >> x ;
cin >> y ;
z = x / y;
cout << "hasilnya : " << z << endl;
cout << endl;
menu_exit();
return 0;
}

float fungsi_pengUrangan()
{
float x,y,z;
char a;
cin >> x ;
cin >> y ;
z = x - y;
cout << "hasilnya : " << z << endl;
cout << endl;
menu_exit();
return 0;
}

float fungsi_penAmbahan()
{
float x,y,z;
char a;
cin >> x ;
cin >> y ;
z = x + y;
cout << "hasilnya : " << z << endl;
cout << endl;
menu_exit();
return 0;
}

int menu_exit()
{
  char a;
  cin >> a;
  if (a == 'y')
  {
                cout << endl;
                fungsi_menu();
  }
  else
  {
  cout << "terimakasih telah menggunakannya";
  }
  return 0;
}

















1 komentar: