MATERI UAS
ALGORITMA & STRUKTUR
DATA
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.
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]
•
Beda array dengan varibel biasa:
Sebuah larik/array dapat mempunyai sejumlah nilai,
sedang sebuah varibel biasa hanya dihubungkan dengan sebuah nilai saja
ARRAY 2 DIMENSI
•
Mempunyai elemen
BARIS & KOLOM
•
Dapat dipakai untuk representasi
sebuah
MATRIK
•
Struktur data untuk rekapitulasi
[image:5.720.40.679.134.461.2]informasi berdasar baris dan kolom
TABEL, misal: penjualan barang
•
Memakai
NESTED LOOPING
dalam
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
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:
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};
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];
Konstanta String
•
Konstanta string ditulis dengan diawali dan
diakhiri tanda petik ganda.
•
Contoh:
#define abjad “ABeCe”
Penggunaan Memory
•
Komposisi penyimpanan string dalam
memori:
•
Setiap karakter akan menempati memori
sebesar 1 byte
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:
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
Array String
•
suatu string dapat dibentuk dari
array karakter berdimensi satu
•
Dengan cara yang sama, berarti
array string dimensi satu dapat
Array String
• Contoh berikut menunjukkan deklarasi suatu Array string dimensi satu yang dibentuk dari array karakter dimensi dua.
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);
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
Contoh #1
#include <stdio.h> 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");
Mengakses String
•
Variabel string merupakan bentuk
khusus dari
array
bertipe
char
•
Elemen dari variabel string dapat
diakses seperti halnya pengaksesan
elemen pada array.
•
Contoh:
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.
Contoh #2
#include <stdio.h>
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);
POINTER
Pointer (variabel penunjuk) adalah suatu
variabel yang berisi alamat me mo ri dari suatu
variabel lain.
Alamat ini merupakan lokasi dari obyek lain
(bia sanya variabel lain) di dalam memori.
Deklarasi Variabel dan Pointer
•
deklarasi variabel dalam bahasa C /
C++ adalah sebagai berikut:
tipe_data nama_variabel
•
Bentuk umum deklarasi pointer
adalah :
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;
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
•
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
•
Operator *
Operator * merupakan operator reference.
Dengan menggunakan pointer, kita dapat
mengakses nilai yang tersimpan secara
langsung
dengan memberikan awalan operator
asterisk
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
Contoh Program
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
Berikut ini sebuah contoh linked list
yang terdiri
atas 4 node :
info next info next info next info next
start
•
Pada node ke-4 field NEXT-nya berisi NULL,
artinya node ke-4 tsb. adalah node
terakhir.
[image:34.720.49.654.30.503.2]•
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 :
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.
•
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.
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)
Contoh Program
Penggalan program diatas merupakan
salah satu contoh penggunaan fungsi
linked list.
Program diatas merupakan program
2. #include <stdio.h>
#include <stdlib.h>
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);
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("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;
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");
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:
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;
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; }
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; }