Selasa, 11 Desember 2012

FILE SEQUENTIAL

Sejauh ini data-data yang anda gunakan di dalam programmasih disimpan dalam memori
komputer atau disebut juga media panyimpanan internal yang sifatnya volatile (tidak permanen)
dan kapasitasnya relatif lebih kecil (tergantung besar memory yang tersedia). Komputer akan
secara ototmatis menghapus seluruh isi memori (yang digunakan oleh suatu program tertentu)
setelah sebuah program selesai dilaksanakan/dijalankan Namun untuk beberapa kasus data-data
yang telah diolah tersebut harus bisa digunakan lagi untuk keperluan pengolahan selanjutnya.
Untuk melakukan penyimpanan data-data tersebut, tentunya kita memerlukan suatu alat bantu
yang dalam dunia komputer dikenal sebagai file.
File merupakan sebuah tempat penimpanan data pada media penyimpanan eksternal. Data
yang disimpan pada media penyimpanan eksternal tidak akan dihapus secara otomatis oleh
komputer. Penghapusan hanya dapat dilakukan melalui campur tangan programmer. Media
penyimpanan eksternal dapat menyimpan data dengan kapasitas lebih besar (tergantung kapasitas
media penyimpanan eksternal, hardisk contohnya) dan bersifat semi permanen artinya kita dapat
menambah, menghapus maupun mengubah isi dari data-data tersebut.
Berdasarkan jenis data yang disimpan file dibedakan menjadi dua jenis yaitu :
1. File teks
Semua data yang disimpan pada file ini akan diubah menjadi teks, sehingga file tersbut dapat
dibuka oleh semua program pengolah kata seperti Notepad, Wordpad, Ms Word, TextPad dan
lain-lain. Data yang disimpan dalam file teks mudah dibaca karena berbentuk teks.
2. File biner.
Semua data yang disimpan pada file ini akan diubah menjadi nilai biner ( bernilai 0 atau 1
tergantung teks yang dimasukan.
Perbedaan file biner dan file teks dapat dilihat pada tabel 1 berikut ini.
Tabel 1 Perbedaan File Teks dan File Biner
No Kategori File Teks File Biner
1 Bentuk data yang
disimpan
Teks Bilangan biner
2 Kecepatan akses Lambat (harus melakukan
konversi dari data yang bukan
teks menjadi teks dan sebaliknya)
Cepat (tidak ada konversi data)
3 Cara pengaksesan Menggunakan semua program
pengolah kata
Harus dibuat program khusus
untuk mengaksesnya (biasanya
dibuat oleh programmer yang
membuat file tersebut
Berdasarkan cara pengaksesan data yang disimpan file dibedakan menjadi dua jenis yaitu :
1. File Sekuensial (Sequential-Access File)
Semua data yang disimpan pada file ini diakses secara searah mulai dari awal file sampai
dengan akhir file (End Of File/EOF).
2. File Acak (Random-Access File)
Semua data yang disimpan pada file ini akan diakses secara acak (Random)
Berbeda dengan pengaksesan variabel, konstanta, array, dan rekaman (enum dan struct),
pengaksesan file terdiri dari tiga tahap yaitu :
1. Pembukaan file (open file) sehingga file tersebut dapat dimanipulasi.
2. Pembacaandata dari dalam file atau penulisan data ke dalam file
3. Penutupan file (close file), untuk proses pembacaan file hal ini bersifat opsional namun untuk
proses penulisan file hal ini mutlak harus dilakukan, karena jika tidak ada kemungkinan data yang akan disimpan tidak akan masuk atau ditulis ke dalam file. Diperlukannya proses
penutupan file setalah proses penulisan data ke dalam file karena data yang akan disimpan ke
dalam file sebenarnya tidak langsung ditulis/disimpan ke dalam file, namun terlebih dahulu
ditampung dalam suatu lokas memori yang biasa disebut sebagai buffer. Bila buffer ini sudah
penuh, maka seluruh data yang ada di dalam buffer tersebut akan disimpan ke dalam file
secara bersamaan. Masalahnya bila buffer ini belum penuh tapi program sudah akan diakhiri,
maka proses penulisan data dari dalam buffer baru dilakukan bila dilakukan proses penutupan
file.

Senin, 10 Desember 2012

PARAMETER FUNGSI

Parameter adalah suatu variabel yang berfungsi menampung nilai yang akan dikirimkan ke
dalam fungsi atau sebaliknya menampung suatu nilai yang akan dikirimkan oleh fungsi ke bagian
yang memanggilnya. Dengan adanya parameter suatu fungsi akan bersifat dinamis.

Dalam pemrograman dikenal tiga jenis parameter yaitu :
 1. Parameter masukan, adalah parameter yang digunakan untuk menampung nilai yang akan
dijadikan masukan (input) ke dalam suatu fungsi, artinya, sebuah fungsi dapat menghasilkan
nilai yang berbeda tergantung dari nilai dalam perameter yang dimasukan pada saat
pemanggilan fungsi tersebut.

2. Parameter keluaran, adalah parameter yang digunakan untuk menampung nilai yang akan
dijadikan keluaran (output) yang akan dikirimkan ke bagian yang memanggil fungsi tersebut,
umumnya parameter ini digunakan untuk fungsi yang tidak memiliki nilai balik (prosedur)

3. Parameter masukan/keluaran, adalah parameter yang digunakan untuk menampung nilai yang
akan dijadikan masukan (input) ke dalam suatu fungsi selain itu juga menampung nilai yang
akan dijadikan keluaran (output) yang akan dikirimkan ke bagian yang memanggil fungsi
tersebut, artinya, sebuah parameter sebelum fungsi dijalankan bertindak sebagai parameter
masukan dan setelah fungsi dijalankan parameter tersebut bertindak sebagai parameter
keluaran.

FUNGSI ATAU PROSEDUR

Fungsi/prosedur adalah suatu bagian dari program yang digunakan untuk menjalankan suatu
tugas tertentu dan letaknya terpisah dari bagian program yang menggunakannya. Suatu
fungsi/prosedur dipanggil/digunakan dengan tujuan khusus, yaitu untuk mengerjakan suatu tugas
tertentu, dimana tugas-tugas tersebut dapat berupa tugas input (menyimpan hasil ke dalam suatu
array atau file) dan/atau output (menampilkan hasil di layar monitor) ataupun melakukan
penyeleksian dan perhitungan. Suatu Fungsi/prosedur dapat memberikan suatu hasil balik ke
program yang memanggilnya atau tidak meberikan hasil balik sama sekali. Hasil balik ini biasanya
berupa suatu nilai yang dibutuhkan oleh bagian program yang memanggilnya.

Perbedaan utama fungsi dan prosedur adalah :
Fungsi hanya akan mengembalikan sebuah nilai ke bagian yang memanggilnya
atau dengan kata lain sebuah fungsi hanya mengerjakan satu tugas saja,
sedangkan prosedur akan mengembalikan satu atau lebih nilai atau bahkan
tidak mengembalikan nilai sama sekali ke bagian yang memanggilnya, atau
dengan kata lain sebuah prosedur dapat mengerjakan lebih dari satu tugas
Kelebihan program yang menggunakan fungsi tambahan selain fungsi utamanya diantaranya :

1. Program menjadi lebih mudah dimengerti
Hal ini disebabkan karena proses penyelesaian untuk suatu masalah dipecah menjadi beberapa
sub masalah/ pemecahan masalah tersebut ke dalam bentuk fungsi yang lebih sederhana akan
membuat program menjadi lebih mudah dimengerti dibandingkan jika semuanya dilakukan
dalam fungsi utama saja.

2. Pengaruh antar bagian menjadi lebih kecil (Program menjadi lebih independen)
Karena suatu sub masalah diselesaikan dalam fungsi/prosedur yang terpisah maka
(seharusnya) hal tersebut tidak akan mempengaruhi perintah yang ada pada fungsi/prosedur
yang lain. Tidak seperti jika dikerjakan dalam fungsi utama atau bagian utama, sebuah
perintah tertentu pada suatu baris program memungkinkan akan memberi pengaruh yang tidak
dikehendaki ke perintah pada baris program yang lain. Dalam pembuatan sebuah
fungsi/prosedur yang baik, perintah-perintah yang ada dalam suatu fungsi/prosedur seharusnya
tidak mempengaruhi perintah-perintah yang ada di fungsi/prosedur yang lain (independen)

3. Dapat dipakai kembali
Fungsi/prosedur yang pernah dibuat dapat dipakai kembali di program yang lain untuk
menyelesaikan masalah yang berbeda, sehingga pada pembuatan program berikutnya akan
menjadi semakin mudah karena kita sudah mempunyai beberapa fungsi/prosedur tambahan
yang dapat dimanfaatkan (contohnya Library header dalam bahasa C/C++). Hal ini akan
membantu seorang programmer untuk menyelesaiakan suatu program dengan waktu yang lebih
singkat.

4. Lebih efisien dan ukuran program menjadi lebih kecil
Dengan adanya fungsi/prosedur penulisan kumpulan baris program yang sama di tempat yang
berbeda dapat dikurangi atau dapat ditulis satu kali saja dalam fungsi/prosedur, jika bagian
program membutuhkan perintah tersebut tinggal memanggil fungsi/prosedur tersebut. Sehingga
program yang dibuat menjadi lebih efisien dan ukurannyapun menjadi lebih kecil

5. Lebih konsisten
Penulisan kumpulan baris program yang sama secara berulang-ulang ditempat yang berbeda
akan mengakibatkan program menjadi tidak konsisten, karena jika terdapat kesalahan dalam
kumpulan baris program tersebut maka programmer harus mengingat kembali posisi
kumpulan baris program tersebut. Sebaliknya jika kumpulan baris program yang sama dibuat
dalam bentuk fungsi/prosedur maka jika ada kesalahan perintah, programmer tinggal
memperbaikinya pada fungsi/prosedur tersebut.

SORTING

Sorting atau pengurutan data adalah proses yang sering dilakukan dalam pengolahan data. Bahkan
mesin otomatik yang pertama kali lahir adalah mesin pengurut, dan masih dipakai sampai saat ini,
misalnya untuk menyortir surat berkode pos di kantor pos dengan mesin terotomatisasi.

Ada dua macam urutan yang biasa digunakan yaitu urut menaik/kecil ke besar (ascending) dan urut
menurun/besar ke kecil (descending). Salah satu tujua utama proses pengurutan adalah agar data
dapat lebih mudah dilihat dan diolah.
Dibedakan dua macam pengurutan :

- Pengurutan internal, yaitu pengurutan terhadap sekumpulan data yang disimpan dalam media
internal yang dapat diakses setiap elemennya secara langsung, maka dapat dikatakan sebagai
pengurutan tabel
- Pengurutan eksternal, yaitu pengurutan data yang disimpan dalam memori sekunder, biasanya
data bervolume besar sehingga tidak mampu untuk dimuat seluruhnya dalam memori internal.

Berikut ini hanya akan dibahas mengenai pengurutan internal, itu pun hanya 4 metoda. Untuk
semua persoalan sorting, dipakai kamus sebagai berikut :

Kamus :
Constant Nmax : integer = 100
Type TabelInteger : Array [1..Nmax] of integer
N : integer {indeks efektif, maksimum tabel yang terdefinisi, N<Nmax}

Minggu, 09 Desember 2012

BINARY SEARCH

Jika kita mempunyai sebuah file dari record-record yang telah dijalankan,
kita dapat melanjutkan menghapuskan memory pemeriksaan yang diperlukan
untuk mendapatkan kembali sebuah record yang telah dipakai oleh suatu teknik
binary search.

Suatu binary search dibandingkan dengan kunci dari pencarian record dengan
record tengah dari sebuah file. Kemudian masing-masing pencarian record
yang telah ditempatkan atau setengah dari file yang telah dihilangkan dengan
pertimbangan yang lebih lanjut. Dalam kasus yang sebelumnya, proses pemban-
dingan dari record tengah dilanjutkan dalam record-record selanjutnya.
Jika kita harus menghilangkan bagian atas dari sebuah file termasuk
record yang telah dibandingkan berlawanan. Selanjutnya jika kita harus
menghilangkan bagian bawah dari sebuah file termasuk record yang telah
dibandingkan berlawanan. Dalam pengulangan proses dari pembandingan
berlawanan dari record tengah, kita akhirnya akan menempatkan record yang
kita inginkan atau menentukan bahwa itu tidak ada dalam file ketika tidak
ada record-record selanjutnya.

Binary Search.
 Terendah = 1.
Tertinggi = n.
While terendah < tertinggi do.
Tengah = (terendah + tertinggi) / 2.
if nilai kunci = nilai (tengah). Then data ditemukan.
Else if nilai kunci > nilai (tengah). Then terendah = tengah + 1.
Else tertinggi = tengah - 1.
end
end
end

Mari kita amati sebuah contoh dari suatu binary search yang telah disajikan terhadap suatu file dari record-record yang telah disusun secara urut. Dalam contoh ini, kita mencari record-record dengan kunci 39, dimana berindikasikan record yang terbaru yang telah dibandingkan berlawanan dari tanda kurung besar membatasi record yang masih dibawah pertimbangan.

Contoh 1
Di bawah ini adalah kunci–kunci carilah kunci 39 dengan mengunakan algorithm Binary Search.
[13, 16, 18, 27, 28, 29, 38, 39, 53].
1 2 3 4 5 6 7 8 9
File ini dinamakan File Sequential (secara berurutan).
Cara penyelesaian.
Bila di cari kunci 39 maka ;
Bila terendah = 1, dan tertinggi = 9,
maka 1 + 9 = 10 , lalu 10 / 2 = 5.

1. Nomor urut 5, adalah kunci 28 , tapi 28 < 39,
[13, 16, 18, 27, 28, 29, 38, 39, 53].
maka terendah = 5 , dan tertinggi = 9,
maka : 5 + 9 = 14
14 / 2 = 7.

2. Nomor urut 7 adalah 38 , tapi 38 < 39,
[13, 16, 18, 27, 28, 29, 38, 39, 53].
maka terendah = 8, dan tertinggi = 9, (karena mid + 1 jadi 7+1=8)
maka : 8 + 9 = 17
17 / 2 = 8,5 => 8,5 ≈ 8
Note: kl mengambil kebawah, haruskonsisten untuk jawaban selanjutnya jika ada kasus yg sama juga harus kebawah

3. Nomor urut 8 adalah kunci 39 , dimana kunci 39 = 39.
[13, 16, 18, 27, 28, 29, 38, 39, 53]

SEARCHING

Banyak sekali aplikasi yang memerlukan pencarian sebagai bagian terpenting utama dari aplikasi tersebut. Metode-metode pencarian digunakan tergantung dari daftar elemen yang akan kita cari. Jika tidak berurutan kita bisa menggunakan Sequential Search, jika tidak kita bisa menggunakan Binary Search.

Skema dasar Sequential Search

Proses pencarian dilakukan dengan membandingkan elemen kunci (elemen terbesar yang disimpan di variabel sementara) dengan setiap elemen yang ada di daftar pada sepanjang pencarian.Pencarian berhenti ketika nilai elemen key sama dengan nilai yang dicari. Di bawah ini adalah notasi – notasi algoritmik dari Sequential Search.



Dibawah ini adalah listing code untuk memperjelas bagaimana implementasi Sequential Search pada sebuah aplikasi
/*   
   -----------------------------------------------------------------------------
   Source Code : \n\n");
    Deshpande, P.S and O.G. Kakde.2004. \n");
    C & Data Structures.Charles River Media.\n");
   ------------------------------------------------------------------------------
*/


#include 
#define MAX 10


//membuat procedure untuk mencari nilai di dalam list
void lsearch(int list[],int n,int element)
{
   int i, flag = 0;
   for(i=0;i<n;i++)
   if( list[i] == element)
   {
      printf(" The element whose value is %d is present at position %d
in list\n",
            element,i);
      flag =1;
      break;
   }

if( flag == 0)
       printf("The element whose value is %d is not present in the
list\n",
             element);
}


//procedure untuk memasukkan nilai kedalam list
void readlist(int list[],int n)
{
   int i;
   printf("Enter the elements\n");
   for(i=0;i<n;i++)
       scanf("%d",&list[i]);
}

//procedure untuk mencetak list
void printlist(int list[],int n)
{
   int i;
   printf("The elements of the list are: \n");
   for(i=0;i<n;i++)
       printf("%d\t",list[i]);
}


//main program
main()
{
    int list[MAX], n, element;
    
    
   printf("-----------------------------------------------------------------------------\n");
   printf("Source Code : \n\n");
   printf(" Deshpande, P.S and O.G. Kakde.2004. \n");
   printf(" C & Data Structures.Charles River Media.\n");
   printf("------------------------------------------------------------------------------\n\n");
    
   printf("Enter the number of elements in the list max = 10\n");
   scanf("%d",&n);
   readlist(list,n);
   printf("\nThe list before sorting is:\n");
   printlist(list,n);
   printf("\nEnter the element to be searched\n");
   scanf("%d",&element);
   lsearch(list,n,element);
}

Minggu, 07 Oktober 2012

TUGAS ARTIKEL ARRAY DALAM BAHASA C


ARRAY

Array adalah sekumpulan data-data serupa yang disimpan atau digunakan di dalam sebuah variabel dengan nama yang sama, dan indeks di sebuah variabel yang digunakan untuk membedakan antara data yang satu dengan data yang lainnya.
Array dapat dibedakan menjadi 3 jenis, yaitu : 
1. Array 1 dimensi adalah array terdiri dari satu baris memilki banyak kolom. 
2. Array 2 dimensi adalah array terdiri dari lebih dari satu baris memiliki banyak kolom.
3. Array n dimensi adalah array yang bukan hanya terdiri dari sebuah baris dan sebuah kolom saja didalamnya.


 Array 1 Dimensi.

Sebuah array 1 dimensi dapat atau bisa digunakan bersamaan dengan sebuah deklarasi atau tersendiri. Inisialisasi sebuah  array adalah dengan meletakkan sebuah elemen suatu array didalam tanda kurung siku [], antara elemen yang satu atau dengan elemen yang lainnya dengan dipisahkan dengan tanda koma.

Contoh array 1 dimensi dalam bahasa C :

#include <stdio.h>
int main()
{
            int a;
            int hitung=1;
            int x[1];
            for(y=1;y<5;y++)
            {
                        hitung+=y;
                        x[y]=hitung;
                        printf("%3d - %3d\n",y,x[y]);
            }
            getch();
            return 0;
}

OUTPUT :
1-1
2-2
3-5
4-9
5-14


Array Multidimensi.

Array multidimensi adalah sebuah array yang terdiri dari sebauh array juga didalamnya. Deklarasi array multidimensi dapat dilakukan dengan cara seperti adanya lebih dari satu sebuah pasangan kurung siku di dalam deklarasi suatu array, jumlah pasangan yang ada didalam kurung siku menyatakan dimensi suatu array tersebut. 


Contoh array multidimensi dalam bahasa C :

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


int main()
{
    char h=64, nama[5][4][22] = {
        "Persib","Arema","Pelita","Persija",
        "Sriwijaya","Persiba","Deltras","Persipura",
        "Persiwa","Semen Padang","Persibo","Persikoci",
        "Persmin","Bontang FC","Persema","Persikab",
        "Uni","Pon Riau","Indonesia U22","Indonesia senoir"  
    
    };

    printf("Liga Indonesia : \n\n");

    for(i=0; i<5; i++)
    {
        ++h;
        printf("Grup %c  \n", h);

        for(s=0; s<4; s++)
        {
            printf("      %d. %s \n", s+1, nama[i][s]);   
        }
        printf("\n");
    }
    

    getch();

}

OUTPUT :
Grup A:  Persib
              Arema
              Pelita
              Persija
Grup B:  Sriwijaya
              Persiba
              Deltras
              Persipura
Grup C:  Persiwa
              Semen Padang
              Persibo
              Persikoci
Grup D:  Persmin
              Bontang FC
              Persema
              Persikab
Grup E:  Uni
              Pon Riau
              Indonesia U22
              Indonesia senior


Sumber :

-http://kodeprogramcpp.blogspot.com/2012/05/program-c-array-3-dimensi.html
-http://danangjunaedi.files.wordpress.com/2008/11/minggu-07.pdf
-http://catatan.desdrianton.net/scjp/content/ARRAY.htm
-https://docs.google.com/viewer?a=v&q=cache:JECqQF7ksCIJ:wsilfi.staff.gunadarma.a c.id/Downloads/files/1378/BhsC_Array.DOC+&hl=id&gl=id&pid=bl&srcid=ADGEESjXFQz94 by_TvCWQ-UdEBuSQg9FOD4bdXw-bC_Lx59sJDjT66FYkl3rOiuBCdI7HReeeWM0tz3JMy0YXQ-nIoZqc Lz3As8ANwo_hGqGag9uE15sNhQtaulviEf_bIMq2R2TDUvM&sig=AHIEtbRc2h4NHUMO5djSY5-opUFu ekOTRA