Selasa, 26 Februari 2019

ALGORITMA DAN PEMOGRAMAN II "POINTER"

"TI Politala ALPRO II 2C"
[ Tugas Kuliah ] Algoritma dan Pemograman II
"POINTER"


                                                                       POINTER

    A.    Konsep Dasar Pointer
Variabel pointer sering dikatakan sebagai variabel yang menunjuk ke obyek lain.  Pada kenyataan yang sebenarnya, variabel pointer berisi alamat dari suatu obyek lain (yaitu obyek yang dikatakan ditunjuk oleh pointer).
Pointer berisi alamat dari suatu data, bukan data seperti pada variabel.  Variabel disimpan dalam memori, dan akan ditempatkan pada alamat tertentu. Pointer dalam program digunakan untuk menunjuk ke suatu alamat memori. Pointer adalah  sebuah  variabel  yang  berisi  alamat  lain.  Suatu  pointer  dimaksudkan untu menunjukan  ke  suatu  alamat  memori  sehingga  alamat  dari  suatu  variabel  dapat  diketahui dengan mudah.  
Keunggulan Menggunakan Pointer : 
1.  Penanganan terhadap array dan string akan lebih singkat dan efisien.   
2.  Memungkinkan suatu fungsi untuk menghasulkan lebih dari satu nilai.   
3.  Memiliki kemampuan untuk mengirimkan alamat suatu fungsi ke fungsi yang lain.   
4.  Kemampuan berkerja dengan memori yang telah dialokasikan secara dinamik.    
5.  Memungkinkan untuk berhubungan langsung ke hardware.  
6.  Untuk menciptakan data structure yang kompleks 
7.  Memungkinkan untuk berhubungan langsung dengan parameter command line. 
Dengan  menggunakan  pointer  yang  benar,  anda  dapat  menyusun  sebuah  program yang berkemampuan tinggi. Sebaliknya sedikit saja kesalahan dalam menggunakan pointer  akan  mengakibatkan kesalahan fatal pada program anda. Karena pointer    dapat  langsung  menunjukan  pada  lokasi  memori,  jika  lokasi  yang  ditunjuk  salah,  berarti data  yang  diambil juga akan salah, dan sudah tentu program anda akan menjadi salah juga.
Selain itu, Pointer adalah sebuah variabel yang berisikan alamat memori (bukan nilai) atau dengan kata lain dapat dikatakan bahwa pointer adalah suatu variabel penunjuk ke alamat memori tertentu. Cara pendeklarasian pointer dalam bahasa C adalah dengan menambakan tanda asterisk (*) didepan nama pointer, seperti berikut:
Tipe_data *nama_pointer; atau  Tipe_data* nama_pointer;
           Keterangan :
1.      Tipe_data dapat berupa sembarang tipe seperti halnya pendefinisian variabel.
2.   Nama_pointer adalah nama variabel pointer yang akan digunakan. * adalah operator memori untuk mengembalikan nilai variabel pada alamatnya yang ditentukan oleh operand. Contoh: int *pint; atau  int* pint;  char *pchr; atau  char* pchr; 

          B.     Mendeklarasikan Variabel Pointer
Suatu variabel pointer dideklarasikan dengan bentuk sebagai berikut :
tipe *nama_variabel
Dengan tipe dapat berupa sembarang tipe yang sudah dibahas pada bab-bab sebelumnya, maupun bab-bab berikutnya.  Adapun nama_variabel adalah nama dari variabel pointer. 
                Contoh :
int *px;    / *contoh 1 */ char *pch1, *pch2;  / *contoh 2 */

Contoh pertama menyatakan bahwa px adalah variabel pointer yang menunjuk ke suatu data bertipe int, sedangkan contoh kedua masing pch1 dan pch2 adalah variabel pointer yang menunjuk ke data bertipe char.

C.       Mengatur Pointer agar Menunjuk ke Variabel Lain
Agar suatu pointer menunjuk ke variabel lain, mula-mula pointer harus diisi dengan alamat dari variabel yang akan ditunjuk.  Untuk menyatakan alamat dari suatu variabel, operator & (operator alamat, bersifat unary) bisa dipergunakan, dengan menempatkannya di depan nama variabel.  Sebagai contoh, bila x dideklarasikan sebagai variabel bertipe int, maka :
&x
Keterangan :
        “alamat dari variabel x”.  Adapun contoh pemberian alamat x ke suatu variabel pointer px (yang dideklarasikan sebagai pointer yang menunjuk ke data bertipe int).
Pernyataan di atas berarti bahwa px diberi nilai berupa alamat dari variabel x. Setelah pernyataan tersebut dieksekusi barulah dapat dikatakan bahwa px menunjuk ke variabel x.

D.           Mengakses Isi Suatu Variabel Melalui Pointer
Jika suatu variabel sudah ditunjuk oleh pointer, variabel yang ditunjuk oleh pointer tersebut dapat diakses melalui variabel itu sendiri (pengaksesan langsung) ataupun melalui pointer (pengaksesan tak langsung).  Pengaksesan tak langsung dilakukan dengan menggunakan operator indirection (tak langsung) berupa simbol * (bersifat unary).  Contoh penerapan operator * yaitu :
*px
Yang menyatakan “isi atau nilai variabel/data yang ditunjuk oleh pointer px” .  Sebagai contoh jika y bertipe int, maka sesudah dua pernyataan berikut :
px = &x; y = *px;
                     y akan berisi nilai yang sama dengan nilai x.

E.       Mengakses dan Mengubah isi  Suatu Variabel Pointer
Contoh berikut memberikan gambaran tentang pengubahan isi suatu variabel secara tak langsung (yaitu melalui pointer). Mula-mula pd dideklarasikan sebagai pointer yang menunjuk ke suatu data bertipe float dan d sebagai variabel bertipe float.
d = 54.5;
                     Digunakan untuk mengisikan nilai 54,5 secara langsung ke variabel d.  
                     Adapun  :
pd = &d;
Digunakan untuk memberikan alamat dari d ke pd. Dengan demikian pd  menunjuk ke variabel d. Sedangkan pernyataan berikutnya  :
*pd = *pd + 10;  (atau: *pd += 10; )
      Merupakan instruksi untuk mengubah nilai variabel d secara tak langsung. Perintah di atas berarti “jumlahkan yang ditunjuk pd dengan 10 kemudian berikan ke yang ditunjuk oleh pd”, atau identik dengan pernyataan :
d = d + 10;
                     Akan tetapi, seandainya tidak ada instruksi 
pd = &d; 
                    maka pernyataan  :
*pd = *pd + 10; 
                   tidaklah sama dengan :
d = d + 10;

      F.     Pointer dan Array (pointer to array)
Hubungan antara pointer dan array  pada C sangatlah erat. Sebab sesungguhnya array secara internal akan diterjemahkan dalam bentuk pointer. Pembahasan berikut akan memberikan gambaran hubungan antara pointer dan array. Misalnya dideklarasikan di dalam suatu fungsi  :
static int tgl_lahir[3] = { 01, 09, 64 };


     G.    Array dari Pointer (Array of Pointer)
Suatu array bisa digunakan untuk menyimpan sejumlah pointer. Sebagai contoh: char *namahari[10];  merupakan pernyataan untuk mendeklarasikan array pointer. Array namahari terdiri dari 10 elemen berupa pointer yang menunjuk ke data bertipe char.

     H.    Pointer dalam Fungsi
            Pointer dan kaitannya dengan fungsi yang akan dibahas berikut meliputi :
1.      Pointer sebagai parameter fungsi.
2.      Pointer sebagai keluaran fungsi.

      I.       KESIMPULAN
1.   Tipe variabel pointer adalah tipe variabel yang berisi alamat dari variabel yang sebenarnya.
2.    Tipe variabel pointer harus sama dengan tipe varibel yang ditunjuk.
3.   Hubungan antara pointer dan array  pada C sangatlah erat, sebab sesungguhnya array secara internal akan diterjemahkan dalam bentuk pointer .
4.      Varibel pointer bisa berupa string, array atau tipe variabel yang lainnya.
5.      Suatu pointer bisa saja menunjuk ke pointer lain (pointer to pointer).
               

Sumber :
 1. http://yuliana.lecturer.pens.ac.id/Konsep%20Pemrograman/Teori/T12-Pointer(1).pdf

Senin, 18 Februari 2019

ALGORITMA DAN PEMROGRAMAN II "Struct"

"TI Politala Algoritma dan Pemrograman 2C"
[ Tugas Kuliah ] Algoritma dan Pemrograman II
"STRUCT"

                                                                     
                                                                        STRUCT

A. Pengertian Struct 
Struct merupakan suatu struktur data yang menggabungkan beberapa data dengan berbagai tipe data yang memiliki ukuran yang berbeda terdiri dari 1 atau lebih variabel yang bertipe data sama atau berbeda di kelompokan dalam satu deklarasi dan saling berkaitan. Struct dalam C++ dideklarasikan menggunakan keyword struct diikuti dengan nama struktur, atau sering disebut dengan tag. Variabel - variabel strukur dideklarasikan dalam kurung kurawal { }, setiap elemennya dipisahkan dengan tanda titik koma atau semi colon. Bentuk umum atau sintaks deklarasi Struct :
     Pertama : 
struct nama_struct
{
type1 element1;
type2 element2;
type3 element3;
typen elementn;
} ;
Contoh : 
struct mahasiswa
{
char nama[25];
int umur;
int umur;
float rata2;'
};
Kedua, deklarasi menggunakan typedef :
typedef struct  {
type1 element1;
type2 element2;
type3 element3; . . typen elementn; } nama_struct;
             Kemudian untuk mendeklarasikan sebuah variabel dengan tipe data struct yang telah dibuat sebelumnya adalah : struct tipe_struct nama_variabel;
Jika pendeklarasian struct sebelumnya menggunakan typedef, maka      untuk pendeklarasian sebuah variabel dengan tipe data struct adalah :
     tipe_struct nama_variable;
       Untuk mengakses sebuah struct adalah dengan menggunakan operator titik (.)
      nama_var_struct.nama_var_elemen;
Struct dapat dideklarasikan secara bertingkat, yaitu salah satu field struct bertipe struct lainnya (nested Structure) . Selain itu struct juga dapat digabungkan dengan array, struct yang field - nya berupa array atau array yang setiap elemennya berupa structure.
B. Nested Struct 
Didalam sebuah struct dapat di mungkinkan terdapat sebuah struct lagi. jadi hal ini dapat diartikan struct didalam struct. seperti nested loop, yaitu for di dalam for. contoh :
struct tanggal  { int hari; int bulan; int tahun; }; struct karyawan { char nip[10]; char nama[20];
     char nama[20]; struct tanggal tgl_masuk; float gaji; };
C. Kegunaan Struct 
Pemakaian struktur data yang tepat di dalam proses pemrograman akan menghasilkan algoritma yang lebih jelas dan tepat, sehingga menjadikan program secara keseluruhan lebih efisien dan sederhana.
  



Sumber :
belajarterus21.blogpot.com/2016/05/apa-itu-struct.


Minggu, 17 Februari 2019

ALGORITMA DAN PEMROGRAMAN II "Struktur Array"

"TI Politala Algoritma dan Pemrograman II 2C"
[ Tugas Kuliah ] Algoritma dan Pemrograman
"STRUKTUR ARRAY"

                                                         

                                                                 STRUKTUR ARRAY

A. Pengertian Struktur
Struktur adalah kumpulan elemen-elemen data yang digabungkan menjadi satu kesatuan. Masing - masing elemen data tersebut dikenal dengan sebutan field. Field data tersebut dapat memiliki tipe data yang sama atau pun berbeda. Walaupun field-field tersebut berada dalam satu kesatuan, masing - masing field tersebut tetap dapat diakses secara individual.
Field-field tersebut digabungkan menjadi satu dengan tujuan untuk kemudahan dalam operasinya. Misalnya ingin mencatat data - data mahasiswa dan pelajar dalam sebuah program, untuk membedakannya dapat membuat sebuah record mahasiswa yang terdiri dari field NIM, NAMA, ALAMAT, dan IPK serta sebuah record pelajar yang terdiri dari field - field NAMA, NOMOR URUT, ALAMAT dan JUMLAH NILAI. Dengan demikian akan lebih mudah untuk membedakan keduanya.
B. Pengertian Array
Array atau larik sendiri didefinisikan sebagai pemesanan alokasi memori berurutan. Definisi ini kurang tepat, karena terjadi kerancuan antara struktur data dan representasinya. Memang benar array hampir selalu di implementasikan.
Benar array hampir selalu di implementasikan menggunakan memori berurutan tapi tidak selalu demikian. Semua elemen array bertipe sama. Array cocok untuk organisasi kumpulan data homogen yang ukuran atau jumlah elemen maksimumnya telah diketahui dari awal. Homogen adalah bahwa setiap elemen dari sebuah array tertentu haruslah mempunyai tipe data yang sama.
Dari perngertian struktur dan pengertian array di atas, maka dapat ditarik kesimpulan bahwa struktur array adalah kumpulan elemen - elemen data yang digabungkan menjadi suatu kesatuan yang memiliki tipe homogen (sama). 
1. Karakteristik Array
a. Mempunyai batasan dari pemesanan alokasi memori (bersifat statis).
b. Mempunyai tipe data sama (bersifat homogen).
c. Dapat diakses secara acak.
2. Deklarasi Array
    Ada tiga hal yang harus diketahui dalam pendeklarasian, yaitu :
a. Tipe data array.
b. Nama variable array.
c. Subkrip / index array.
         Contoh deklarasi array adalah sebagai berikut :
int A[10], artinya variabel A adalah kumpulan data sebanyak 10 bilangan bertipe integer.
C. Penggunaan Array
   Pada dasarnya penggunaan array sangat luas tidak hanya digunakan pada bahasa pemrogaman. Contoh penggunaan array sebagai berikut :
1. Array digunakan untuk suatu database, contoh : tabel.
2. Array digunakan untuk operasi matematika seperti vektor.
3. Digunakan dalam bentuk struktur data lain, contohnya list.
D. Pengurutan Array
Pengurutan atau sorting adalah proses yang paling sering dilakukan dalam pengolahan data, paling sering dilakukan dalam pengolahan data, pengurutan dibedakan menjadi dua, yaitu :
     1. Pengurutan internal
Pengurutan dilakukan terhadap sekumpulan data di media memori internal komputer   di mana data dapat diakses elemennya secara langsung.
     2. Pengurutan eksternal
Pengurutan data di memori sekunder. Biasanya data bervolume besar sehingga tidak mampu dimuat semuanya di memori utama.
E. Operasi Dasar Pada Array
Operasi terhadap elemen array dilakukan dengan pengaksesan langsung. Nilai di masing - masing posisi elemen dapat diambil dan nilai dapat disimpan tanpa melewati posisi - posisi lain.
    Terdapat dua operasi, yaitu :
    a. Operasi terhadap satu elemen / posisi array
    b. Operasi terhadap array sebagai keseluruhan
    Dua operasi paling dasar terhadap satu elemen / posisi adalah :
    a. Penyimpanan nilai elemen ke posisi tertentu di array
    b. Pengambilan nilai elemen dari posisi tertentu di array
    Operasi-operasi dasar terhadap array secara keseluruhan adalah :
a. Operasi penciptaan
b. Operasi penghancuran
c. Operasi pemrosesan tranversal
d. Operasi pencarian (table look-up)
e. Operasi sorting
         1. Penyimpanan dan Pengambilan Nilai
Saat penyimpanan dan pengambilan nilai array, biasanya bahasa pemrograman menyediakan sintaks tertentu untuk penyimpanan dan pengambilan nilai elemen pada posisi tertentu di array. Contoh :
a). A[5] = 78, berarti penyimpanan nilai 78 ke posisi ke-5 dari array A
     dari array A :
b). C = A[5], berarti pengambilan nilai elemen posisi ke-5 dari array A
          2. Penciptaan dan Penghancuran
Operasi penciptaan biasa disebut inisialisasi. Operasi ini untuk mempersiapkan struktur data untuk operasi - operasi berikutnya. Operasi penghancuran menyatakan ketidak berlakuan struktur data atau membebaskan memori, menyerahkan memori ke manajemen memori agar dapat dipergunakan keperluan lain. Operasi penghancuran penting terutama bila struktur data di implementasikan secara dinamis menggunakan pointer.
         3. Pemrosesan Tranversal                                
Operasi pemrosesan transversal adalah pemrosesan mengolah seluruh elemen secara sistematik.
4. Pencarian di Array (table look-up)
Pencarian di array (table look-up) adalah proses pencarian suatu nilai di array.       Klasifikasi pencarian :
Pencarian suatu nilai di array. Klasifikasi pencarian di array adalah :
1). Pencarian sekuen (sequential searching), yaitu :
a. Tanpa boolean, terbagi :
   - Tanpa sentinen
   - Dengan sentinen
     b. Menggunakan boolean
2). Pencarian secara biner / dokotom (binary = dochotomy searching).
F. Bentuk – Bentuk Array
         1. Array Satu Dimensi
Array satu dimensi yaitu kumpulan elemen - elemen identik yang hanya terdiri dari satu baris atau hanya satu kolom saja alamat penyimpanan data (indeks). Elemen - elemen tersebut memiliki tipe data yang sama, tetapi isi dari elemen tersebut boleh berbeda.
Bentuk umum :                   
Tipe data nama Array [n] = {elemen0, elemen1, elemen2,…..,n};
elemen2,…..,n};
n = jumlah elemen
contoh pada program : int ukur [5] = {39, 40. 41, 38, 40};
- int adalah tipe data yang berupa bilangan bulat.
- Ukur adalah nama variabel array.
- [5] adalah ukuran untuk menyatakan jumlah maksimal elemen array.
- {..} adalah tempat pemberian nilai / elemen array.
          2. Array Dua Dimensi
Array dua dimensi sering digambarkan sebagai sebuah matriks, merupakan perluasan dari array satu dimensi. Jika array satu dimensi hanya terdiri dari sebuah baris dan beberapa kolom elemen, maka array dua dimensi terdiri dari beberapa baris dan beberapa kolom elemen bertipe sama sehingga dapat digambarkan sebagai berikut :
Bentuk umum :
Tipe data namaArray [m] [n] = {{a,b,…z},{1,2,
Tipe data namaArray [m] [n] = {{a,b,…z},{1,2, …,n-1}};
contoh : int lulus [4] [3];
              Nilai 4 untuk menyatakan banyaknya baris dan 3 untuk menyatakan banyaknya kolom.
  Pendeklarasian array dua dimensi hampir sama dengan pendeklarasian array satu dimensi, kecuali bahwa array dua dimensi terdapat dua jumlah elemen yang terdapat dikurung - kurung siku dan keduanya boleh tidak sama. Elemen array dua dimensi diakses dengan menuliskan kedua indeks elemennya dalam kurung.
         3. Array MultiDimensi
Array ini seperti array dimensi dua tetapi dapat memiliki ukuran yang lebih besar. Sebenarnya array dimensi banyak ini tidak terlalu sering digunakan, tetapi sewaktu - waktu kalau dimensi yang dibutuhkan banyak, maka array ini sangat yang dibutuhkan banyak, maka array ini sangat memegang peranan yang penting.
              Bentuk umum pendeklarasian array multidimensi :
Tipe data nama Array [ukuran1] [ukuran2]… [ukuranN];
Sebagai contoh :
int data huruf [2] [8] [8];
contoh di atas merupakan pendeklarasian array data_huruf sebagai array berdimensi tiga.
G. Keunggulan Array
          Keunggulan array adalah sebagai berikut :
1. Array sangat cocok untuk pengaksesan acak. Sembarang elemen di array dapat diacu secara langsung tanpa melalui elemen - elemen lain.
2. Jika berada di suatu lokasi elemen, maka sangat mudah menelusuri ke elemen-elemen tetangga, baik elemen pendahulu atau elemen penerus.
3. Jika elemen - elemen array adalah nilai - nilai independen dan seluruhnya harus terjaga, maka penggunaan penyimpanannya sangat efisien.
     H. Kelemahan Array        
Kelemahan array adalah sebagai berikut :
      Array mempunyai fleksibilitas rendah, sehingga tidak cocok untuk berbagai aplikasi karena array mempunyai batasan sebagai berikut :
1. Array harus bertipe homogen, kita tidak dapat mempunyai array dimana satu elemen adalah karakter, elemen yang lain adalah bilangan atau tipe lain.
2. Kebanyakan bahasa pemrograman mengimplementasikan array statik yang sulit diubah ukurannya di waktu eksekusi. Bila penambahan dan pengurangan terjadi terus-menerus, maka representasi statis :
- Tidak efisien dalam penggunaan memori.
- Menyiakan banyak waktu komputasi.
- Pada suatu aplikasi, representasi statis tidak dimungkinkan.
         3. Bila penambahan dan pengurangan terjadi terus - menerus, maka representasi statis (array) :
- Tidak efisien dalam penggunaan memori.
- Menyiakan banyak waktu komputasi.
- Pada suatu aplikasi, representasi statis tidak dimungkinkan.




Sumber :
nyambet.blogspot.com/?m=1