2. mengakses nilai variable secara langsung dan secara tidak langsung
Hasil nya:
int cari(struct DATA *pList, int num) {
int r = -1;
int i = 1;
while(pList->next != NULL) {
if(pList->next->number == num)
return i;
else
i++;
pList = pList->next;
}
return r;
}
void hapus(struct DATA *pList, int num) {
struct DATA *temp;
temp = (struct DATA *)malloc(sizeof(struct DATA));
if(pList->number == num) {
temp = pList->next;
free(pList);
pList = temp;
} else {
while(pList->next->number != num)
pList = pList->next;
temp = pList->next->next;
free(pList->next);
pList->next = temp;
}
}
void tampil(struct DATA *pList) {
while(pList->next != NULL) {
printf("%d \n", pList->number);
pList = pList->next;
}
printf("%d \n", pList->number);
}
void simpan(struct DATA *pList, int num) {
while(pList->next != NULL)
pList = pList->next;
pList->next = (struct DATA *)malloc(sizeof(struct DATA));
pList->next->number = num;
pList->next->next = NULL;
}
if((r = cari(pList, num)) == -1)
printf("NIM `%d' tidak ditemukan\n", num);
else
printf("NIM `%d' barapa di posisi `%d'\n", num, r);
break;
case 4:
printf("== Display ==\n");
tampil(pList);
break;
}
}
free(pList);
system("pause");
return(0);
}
Dalam teknis penggunaan pointer, pengaksesan
variabel dilakukan dengan cara menggunakan
kedua operator tersebut.
Jika kita ingin melihat alamat dari variabel yang
ditunjuk kita gunakan operator &.
Sedangkan untuk mengetahui nilai variabel yang
ditunjuk kita gunakan operator *.
Operator *
Operator * merupakan operator reference.
Dengan menggunakan pointer, kita dapat
mengakses nilai yang tersimpan secara langsung
dengan memberikan awalan operator asterisk
(*) pada identifier pointer, yang berarti "value
pointed by".
Operator &
Operator & merupakan operator alamat.
Pada saat pendeklarasian variabel, user tidak diharuskan
menentukan lokasi sesungguhnya pada memory,
hal ini akan dilakukan secara otomatis oleh kompiler dan
operating sysem pada saat run-time.
Jika ingin mengetahui dimana suatu variable akan
disimpan, dapat dilakukan dengan memberikan tanda
ampersand (&) didepan variable , yang berarti "address
of".
Contoh #2
#include
main()
{
char str01[] = "Piala";
char str02[] = "Pialang";
char str03[20];
printf("Panjang str01 = %d karakter.\n", strlen(str01));
strcpy(str03, "Ini string ke 3");
printf("Isi dari str03 = %s.\n", str03);
printf("str01 VS str02 = %d\n", strcmp(str01, str02));
strcat(str01, str02);
printf("Isi str01 sekarang = %s.\n", str01);
}
POINTER
Pointer (variabel penunjuk) adalah suatu variabel yang berisi alamat memori dari suatu variabel lain.
Alamat ini merupakan lokasi dari obyek lain
(biasanya variabel lain) di dalam memori.
Jika sebuah variabel berisi alamat dari variabel lain, variabel pertama dikatakan menunjuk ke variabel kedua.
Deklarasi Variabel dan Pointer
deklarasi variabel dalam bahasa C / C++ adalah sebagai berikut:
tipe_data nama_variabel
Bentuk umum deklarasi pointer adalah :
tipe_data *nama_pointer
Dengan pointer kita dapat mengetahui nomor – nomor memory dan sekaligus memanipulasi isi dari variabel yang "ditunjuk" oleh pointer.
Agar suatu variabel pointer dapat menunjuk ke variabel lain, variabel pointer ini harus diisi dengan alamat dari variabel yang hendak ditunjuk.
Sintaksis proses penunjukan pointer ke variabel lain adalah:
tipe_data1 nama_variabel_biasa;
tipe_data2 *nama_variabel_pointer;
nama_variabel_pointer=&nama_variabel_biasa;
Mengakses Variabel Dengan Pointer
Dalam bahasa C / C++ kita bisa mengakses
variabel dengan dua cara yaitu :
Secara langsung
Syntax yang digunakan adalah :
tipe_data nama_variabel;
tipe_data nama_variabel = nilai variabel;
Secara tidak langsung dengan menggunakan pointer
Karena pointer adalah variabel yang menunjuk variabel lain, maka kita dapat
mengakses variabel lain dengan memanipulasi nilai yang ruangan memory-nya
ditunjuk oleh pointer tersebut. Dalam bahasan pointer ada dua operator yang
memegang kunci operasi pada pointer, yaitu operator & dan operator *.
case 1:
printf("== Simpan == \n");
printf("Masukan NIM : ");
scanf("%d", &num);
simpan(pList, num);
break;
case 2:
printf("== Hapus ==\n");
printf("NIM yang di hapus: ");
scanf("%d", &num);
hapus(pList, num);
break;
case 3:
printf("== Cari ==\n");
printf("Masukan NIM untuk di cari: ");
scanf("%d", &num);
printf("1 > Simpan\n");
printf("2 > Hapus\n");
printf("3 > Cari\n");
printf("4 > Tampil\n");
printf("0 > Exit\n");
printf("\nPilih menu ? ");
scanf("%d", &i);
switch(i) {
case 0:
default:
printf("Terima Kasih..\n");
i = 0;
break;
int main(void) {
int num = 0;
int i = 1;
int r = 0;
struct DATA *pList;
pList = (struct DATA *)malloc(sizeof(struct DATA));
pList->number = 0;
pList->next = NULL;
while(i != 0) {
printf("\n-- Manajamen data NIM Mahasiswa --\n");
Notasi yang didefinisikan sehubungan dengan operasi diatas adalah :
1. NODE(P), artinya node yang ditunjuk oleh pointer P.
2. INFO(P), artinya nilai INFO dari node yang ditunjuk pointer P.
3. NEXT(P), artinya hubungan (link) selanjutnya dari node yang ditunjuk oleh pointer P.
OPERASI DASAR PADA LINKED LIST.
Ada beberapa aturan yang didefinisikan pada operasi didalam linked list, yaitu :
- Jika P adalah suatu variabel pointer, maka nilainya adalah alamat atau lokasi dari variabel lain yang dituju.
- Operasi yang didefinisikan pada suatu variabel pointer adalah :
1. Test apakah sama dengan NULL.
2. Test untuk kesamaan dengan variabel pointer lain.
3. Menetapkan sama dengan NULL.
4. Menetapkan menuju ke node lain.
Pada node ke-4 field NEXT-nya berisi NULL, artinya node ke-4 tsb. adalah node terakhir.
Node-node dalam linked list tidak harus selalu digambarkan paralel seperti pada gambar diatas.
Linked list pada contoh diatas dapat pula
digambarkan seperti berikut ini :
Berikut ini sebuah contoh linked list yang terdiri
atas 4 node :
LINKED LIST
Linked list (one way list) adalah suatu kumpulan elemen
data (yang disebut sebagai node) dimana urutannya
ditentukan oleh suatu pointer.
Setiap elemen (node) dari suatu linked list terdiri atas dua
bagian, yaitu :
INFO, berisi informasi tentang elemen data yang bersangkutan.
NEXT (link field/next pointer field), berisi alamat dari elemen (node) selanjutnya yang dituju.
Sebagai contoh, perhatikan linked list dibawah
ini :
NODE(P) = node yang ditunjuk oleh P yaitu node pertama.
INFO(P) = A
NEXT(P) = node ke-dua
INFO(NEXT(NEXT(P))) = C
Linier Linked List
Setiap node yang mempunyai pointer dimana menunjuk ke simpul berikutnya sehingga membentuk suatu rantaian / untaian, dengan demikian hanya diperlukan sebuah variable pointer.
Pembuatan single linked list dapat menggunakan 2 metode yaitu:
1. LIFO (LAST IN FIRST OUT)
adalah suatu metode pembuatan linked list dimana data yang masuk paling akhir adalah data yang paling pertama keluar.
2. FIFO (FIRST IN FIRST OUT) adalah suatu metode pembuatan llinked list dimana data yang masuk paling awal adalah data yang paling pertama keluar juga.
Contoh Program
1.
2. #include
#include
struct DATA {
int number;
struct DATA *next;
};
int cari(struct DATA *pList, int num);
void simpan(struct DATA *pList, int num);
void tampil(struct DATA *pList);
void hapus(struct DATA *pList, int num);
Penggalan program diatas merupakan salah satu contoh penggunaan fungsi linked list.
Program diatas merupakan program pembuatan simpul menggunkan linked list.
Hasil nya:
Contoh Program
1. Dasar pointer
Fungsi-Fungsi Pada String
strcpy(): untuk menyalin nilai string.
strlen(): untuk mengetahui panjang nilai string.
strcmp(): untuk membandingkan dua nilai string.
strcat(): untuk menggabung nilai string.
strchr(): untuk mencari nilai karakter dalam string.
Contoh #1
#include
main()
{
char nama[35], kota[15];
printf("Masukkan nama Anda : ");
gets(nama);
printf("Masukkan kota Anda: ");
scanf("%s", kota);
printf("\nHallo ");
puts(nama);
printf("Rumahmu %s ya...\n",kota);
printf("Bye.. Bye..\n");
}
Array Tak Berukuran
Array dapat dideklarasikan tanpa memberi ukuran (jumlah data dalam array). Dengan syarat:
Harus langsung diinisialisasi.
Hanya elemen pertama yang boleh tidak berukuran.
Contoh:
int x[] = {32, 45, 67,21};
int x[][2]={{9,7},{4,2},{8,3}};
Array Berdimensi Banyak
Bentuk umum deklarasi array dimensi satu:
tipe_data nama_var[i][j]..[n];
dimana i, j, n adalah ukuran dari array.
Contoh deklarasi:
int nilai[4][2][7][21];
ARRAY 2 DIMENSI
Bentuk umum penulisan
tipe_data variabel[i] [j];
Dimana i dan j adalah ukuran dari array.
i menunjukkan jml baris, j menunjukkan jml kolom
Jumlah data yang bisa disimpan oleh array 2 dimensi adalah i x j.
Contoh:
int x[2][4]={8,5,9,8,8,2,1,0};
merepresentsikan matriks dengan 2 baris dan 4 kolom
x= 8 5 9 8
8 2 1 0
ARRAY 2 DIMENSI
Mempunyai elemen BARIS & KOLOM
Dapat dipakai untuk representasi sebuah MATRIK
Struktur data untuk rekapitulasi informasi berdasar baris dan kolom TABEL, misal: penjualan barang
Memakai NESTED LOOPING dalam operasinya
Mengakses String
Variabel string merupakan bentuk khusus dari array bertipe char
Elemen dari variabel string dapat diakses seperti halnya pengaksesan elemen pada array.
Contoh:
printf("%c", nama[2]);
ARRAY 1 DIMENSI
Bentuk umum deklarasi array 1 dimensi:
tipe_data nama_variabel[n];
Dimana n adalah jumlah elemen atau ukuran array
Contoh:
int x[3]={5,3,7};
Artinya
Array x bertipe integer, mempunyai 3 elemen yaitu x[0], x[1] dan x[2]
x[0] bernilai 5, x[1] bernilai 3, x[2] bernilai 7
ARRAY/LARIK
Array adalah kumpulan dari nilai-nilai data yang bertipe sama dalam urutan tertentu yang menggunakan nama yang sama.
Nilai-nilai data itu disebut dengan elemen.
Letak atau urutan dari suatu elemen array ditunjukkan oleh suatu index/subscript.
Untuk bahasa C, elemen pertama dari suatu array dimulai dari indeks nol.
Suatu array dapat ber-dimensi satu atau lebih.
MATERI UAS
ALGORITMA & STRUKTUR DATA
C Programming
STRING
Beda array dengan varibel biasa:
Sebuah larik/array dapat mempunyai sejumlah nilai, sedang sebuah varibel biasa hanya dihubungkan dengan sebuah nilai saja
Dengan variabel biasa
Dengan array
Konstanta String
Konstanta string ditulis dengan diawali dan diakhiri tanda petik ganda.
Contoh:
#define abjad "ABeCe"
#define judul "Stringku"
Input String
Untuk memberikan nilai string dari keyboard dapat menggunakan perintah gets() atau scanf().
Contoh:
gets(nama);
scanf("%s", nama);
Keterangan:
nama adalah variabel bertipe array of char.
Didepan nama tidak perlu ada tanda & (operator alamat).
Kalau memakai scanf(), data string masukan tidak boleh mengandung spasi.
Output String
Untuk menampilkan isi variabel string ke layar monitor bisa menggunakan perintah puts() atau printf().
Fungsi puts() akan menampilkan isi dari var_string dan secara otomatis menambahkan karakter '\n' di akhir string
Sedangkan fungsi printf() akan menampilkan isi variabel string tanpa memberikan tambahan '\n'.
Contoh:
puts(nama);
printf ("%s", nama);
Array String
Contoh berikut menunjukkan deklarasi suatu Array string dimensi satu yang dibentuk dari array karakter dimensi dua.
(perhatikan bahwa deklarasi ini menggunakan tipe char)
#include
main()
{
int i,j;
char Hari[7][10]={"Minggu","Senin","Selasa","Rabu","Kamis","Jum'at","Sabtu"};
for(i=0;i<7;i++)
{ for(j=0;j<10;j++)
printf("%c",Hari[i][j]);
printf("\n");
}
}
STRING
String merupakan bentuk data yang digunakan untuk menampung dan memanipulasi data teks.
Pada C, string bukan merupakan satu tipe data tersendiri, melainkan merupakan array dari karakter.
Contoh:
char mystring[35];
char myname[] = "Hello World";
Inisialisasi Variabel String
Seperti halnya variabel tipe lain, suatu variabel string dapat diinisialisasi dengan elemen terakhirnya berupa karakter NULL.
Contoh:
char name[]={'J','o','y','\0'};
char name[]= "Joy";
Penugasan atau pemberian nilai ke variabel string seperti dibawah ini tidak diperkenankan
name = "RINI";
Penggunaan Memory
Komposisi penyimpanan string dalam memori:
Setiap karakter akan menempati memori sebesar 1 byte
Byte terakhir otomatis akan berisi karakter NULL (\0)
Array String
suatu string dapat dibentuk dari array karakter berdimensi satu
Dengan cara yang sama, berarti array string dimensi satu dapat dibentuk dari array karakter dimensi dua. Array string dimensi dua dapat dibentuk dari array karakter dimensi tiga dan seterusnya.
Variable String
Variabel string adalah variabel yang dipakai utuk menyimpan nilai string.
Variabel string sebenarnya merupakan variabel array bertipe data char.
string = array of char
Contoh:
char nama[35];
char alamat[60];
Click to edit Master title style
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
11/29/2015
#
Click to edit Master title style
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
#
Click to edit Master title style
11/29/2015
#
Click to edit Master title style
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Click to edit Master text styles
11/29/2015
#
Click to edit Master title style
Click to edit Master text styles
11/29/2015
#
Click to edit Master title style
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
11/29/2015
#
Click to edit Master title style
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
11/29/2015
#
Click to edit Master title style
Click to edit Master text styles
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Click to edit Master text styles
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
11/29/2015
#
11/29/2015
#
Click to edit Master title style
Click to edit Master text styles
11/29/2015
#
Click to edit Master title style
Click to edit Master subtitle style
11/29/2015
#
Click to edit Master title style
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
11/29/2015
#
Click to edit Master title style
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
11/29/2015
#