1. Tipe Data Sederhana Hanya dimungkinkan untuk menyimpan sebuah nilai data dalam sebuah variabel Ada 5 macam : int, float, double, char, boolen

dokumen-dokumen yang mirip
STRUKTUR DATA. Pengajar. Jaidan Jauhari, M.T. Alamat

Pointer (Part 1) Alamat dan Pointer. Dadang mulyana. sederhana.

8. Pointer. S. Indriani L, M.T

Catatan Kuliah PAM 282 STRUKTUR DATA

Struktur Data. Pertemuan 2

Abstract Data Type (ADT)

Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya.

MATERI PRAKTIKUM STRUKTUR DATA

Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya.

Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya.

Algoritma dan Struktur Data

MENGENAL POINTER. Mengetahui Alamat variabel. Output :

Algoritma dan Struktur data

STRUKTUR DATA Pertemuan 1 s.d 8

Tipe bentukan dan pointer selanjutnya akan kita pelajari pada modul pemrograman 1 (akhir semester).

POINTER. Pemrograman Bahasa C++

ALGORITMA DAN PEMROGRAMAN 2. 3 SKS By : Sri Rezeki Candra Nursari

Tabel Informasi. Hal di atas dapat dilakukan dengan menambah dan mengambil atribut identifier yang digunakan pada program, melalui tabel informasi.

Pengenalan Algoritma & Struktur Data. Pertemuan ke-1

Algoritma dan Pemrograman 1. By. Rita Wiryasaputra, ST., M. Cs.

TIPE, NAMA, DAN NILAI

Tipe Data dan Operator

Brigida Arie Minartiningtyas, M.Kom

Pendahuluan Struktur Data. Nisa ul Hafidhoh

Pengenalan C++ Oleh : Dewi Sartika

Algoritma Pemrograman

PEMROGRAMAN BERORIENTASI OBJEK. Tipe Data. Budhi Irawan, S.Si, M.T

Integer (Bilangan Bulat) Yang dimaksud bilangan bulat adalah, -1, -2, -3, 0, 1, 2, 3, 4 dan lain lain yang bukan merupakan bilangan pecahan.

Modul Praktikum Algoritma dan Struktur Data

Pert 3: Algoritma Pemrograman 1 (Alpro1) 4 sks. By. Rita Wiryasaputra, ST., M. Cs.

Algoritma dan Pemrograman Array/Tabel[1] Oleh: Eddy Prasetyo N

Struktur Data Array. Rijal Fadilah S.Si

STRUKTUR DASAR PEMROGRAMAN

Silabus Struktur Data. Bandung 2013

Struktur Bahasa C dan C++

ANALISIS DAN PERANCANGAN PERANGKAT LUNAK

1 Pencarian. 1.1 Tinjauan Singkat Larik

STRUKTUR DATA. Pengajar Jaidan Jauhari,, MT. Alamat Halaman 1

STRUKTUR DATA. Pengajar Jaidan Jauhari,, MT. Alamat Halaman 1

Pengenalan Struktur Data dan Algoritma

Keyword,Tipe data & Variabel. Keywords pada c Tipedata Variabel Konstanta

Identitas dosen POKOK BAHASAN. Suherman,, ST Address. : Cilegon Mobile : Ym Blog

MAKALAH STRUKTUR DATA. DOSEN PEMBIMBING Nisa miftachurohmah, S.kom., M.Si PENYUSUN SITI JAMILATUL MU ADDIBAH ( )

Tipe data dasar merupakan tipe data yang disediakan oleh kompailer, sehingga dapat langsung dipakai Dalam algoritma dan pemrograman yang termasuk dala

PRAKTIKUM 11 POINTER 1

Pendahuluan Struktur Data STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 1 : 20 Juni 2016

Pertemuan 2 ARRAY DIMENSI 1 & 2

Algoritma Pemrograman

Array (Larik) Modul 7

Tipe Data dan Variabel. Dosen Pengampu Muhammad Zidny Naf an, M.Kom

Pert 1 Struktur Data (mengajarkomputer.wordpress.com)

Larik/ Array int a1, a2, a3, a4, a5;

LANGKAH-LANGKAH MENULISKAN PROGRAM DALAM TURBO C++

MODUL. Pointer. Modul Praktikum C++ Dasar Pemrograman Komputer JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNIK

PERTEMUAN V PEMROGRAMAN TERSTRUKTUR DENGAN VISUAL C Setiap bahasa C mempunyai satu fungsi dengan nama main (program utama).

Konsep Array dalam PBO

Algoritma Pemrograman

Typedef dan Struct. Pendahuluan. Objektif. Bahan Bacaan

MATA KULIAH : LOGIKA DAN ALGORITMA KONSEP DASAR ALGORITMA

Larik/Array ALGORITMA DAN PEMROGRAMAN [IS ] Dosen: Yudha Saintika, S.T., M.T.I

PERTEMUAN VI POINTER 6.1 Tujuan Praktikum 6.2 Teori Penunjang Pointer

BAB III Pengenalan Tipe Data dan Bahasa Pemrograman C/C++

1 Array dan Tipe Data Bentukan

Cara pertama adalah pada saat deklarasi variabel ditambahkan ke- yword const sebelum nama tipe data seperti

Pertemuan 2 ARRAY DIMENSI 1 & 2

Konsep Dasar Pemrograman Dan Pengenalan C++

Identifier dan Tipe Data

STRUKTUR DATA. Deskripsi Mata Kuliah

Pert 2 Struktur Data (mengajarkomputer.wordpress.com) ARRAY DIMENSI 1 & 2

ARRAY PENGANTAR PROGRAM STUDI. Institut Teknologi Sumatera

Struktur Program. Rinta Kridalukmana

Turbo C adalah tool yang dipakai untuk membuat code program dalam bahasa C ataupun C++. Berikut adalah jendela utama Turbo C

Pointer dan Referensi

VARIABEL, TIPE DATA, KONSTANTA, OPERATOR DAN EKSPRESI. Pemrograman Dasar Kelas X Semester 2

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

MATRIKS P E N G E N A L A N P R O G R A M S T U D I. Institut Teknologi Sumatera

BAB I PENGENALAN STRUKTUR DATA DAN ALGORITMA

ARRAY DIMENSI 1 & 2. Array dapat didefinisikan sebagai suatu himpunan hingga elemen yang terurut dan homogen.

Algoritma Pemrograman & Struktur Data

MATRIKS. Dapat disimpan secara linier dan kontigu dengan dua alternatif sebagai berikut : a. Per baris

REVIEW ARRAY. Institut Teknologi Sumatera

BAB VIII POINTER. Tujuan :

Achmad Solichin.

Minggu ke-14 Typedef, Struct & Command Line Argument

Identifier Tipe Data Yoannita, S.Kom.

SINGLE LINKED LIST (NON CIRCULAR)

MODUL STRUKTUR DATA. Erna Kumalasari Nurnawati

3. Elemen Dasar C++ S. Indriani S. L., M.T L.,

PRAKTIKUM 11 POINTER 1

BAB IV LARIK DAN PENUNJUK

MODUL V POINTER DAN STRING

PENGENALAN BAHASA C. A. Struktur Kode Program dalam Bahasa C Secara garis besar, suatu kode program dalam bahasa C memiliki struktur umum seperti ini:

PRAKTIKUM 2. perubah (variabel), konstanta, fungsi, atau obyek lain yang didefinisikan oleh

TIPE DATA, VARIABLE, dan OPERATOR DELPHI

Algoritma Dan Struktur Data II

LARIK (ARRAY) Latar Belakang Array

Algoritma dan Struktur Data

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

VARIABEL & TIPE DATA PEMROGRAMAN C++

I. Tipe Data - Variabel

Transkripsi:

Pokok Bahasan Pengantar Struktur Data Pengertian Struktur Data Struktur data adalah cara menyimpan atau merepresentasikan data di dalam komputer agar bisa dipakai secara efisien Sedangkan data adalah representasi dari fakta dunia nyata. Fakta atau keterangan tentang kenyataan yang disimpan, direkam atau direpresentasikan dalam bentuk tulisan, suara, gambar, sinyal atau simbol Secara garis besar tipe data dapat dikategorikan menjadi : 1. Tipe Data Sederhana Hanya dimungkinkan untuk menyimpan sebuah nilai data dalam sebuah variabel Ada 5 macam : int, float, double, char, boolen 2. Tipe data terstruktur Adalah tipe dimana suatu variabel bisa menyimpan lebih dari sebuah nilai data. Masingmasing nilai data disebut komponen Ada 5 macam Tipe Data Terstruktur 1. Tipe String Bentuk umum : char nama[30] 2. Larik (array) Bentuk umum : float A[10]; int x[5] 3. Record Terdiri dari beberapa variabel yang terstruktur dan masing-masing variabel bisa mempunyai tipe yang berbeda Bentuk umum : struct data_tanggal int tanggal; int bulan; int tahun; 4. Set (himpunan) Union : memungkinkan suatu lokasi memori ditempati oleh dua atau lebih variabel yang tipenya bisa berlainan. Bentuk umum : Union unsigned int dat_int; unsigned char dat_char[2]; bil x Enumerasi : merupakan himpunan dari konstanta integer yang diberi nama. Bentuk umum : enum manusia pria, wanita enum manusia jns_kelamin; Cat : Jika isi jns_kelamin = 0 maka pria sebaliknya

5. File Merupakan organisasi dari sejumlah record sejenis. Masing-masing record dapat terdiri dari satu atau beberapa field dan setiap field terdiri dari satu atau beberapa karakter Struktur data majemuk, yang terdiri dari Linier : Stack, Queue, serta List dan Multilist Non Linier Pohon Biner dan Graph 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. Struktur data yang standar yang biasanya digunakan dibidang informatika adalah : List linier (Linked List) dan variasinya Multilist Stack (Tumpukan) Queue (Antrian) Tree ( Pohon ) Graph ( Graf ) Pokok Bahasan Array (Larik) Pendahuluan Larik adalah struktur data statik yang menyimpan sekumpulan elemen yang bertipe sama. Setiap elemen diakses langsung melalui indeksnya. Indeks larik harus tipe data yang menyatakan keterurutan misalnya integer atau karakter. Banyaknya elemen larik harus sudah diketahui sebelum program dieksekusi. Tipe elemen larik dapat berupa tipe sederhana, tipe terstruktur atau tipe larik lain. Nama lain array adalah Larik, tabel atau vektor Yang terpenting dalam array adalah pengalamatan memori dan digunakan pengalamatan secara statik. Karakteristik pemakaian array : 1. Jumlah elemen array terbatas 2. Semua elemen array bisa diakses secara acak 3. Panjang elemen sama Contoh : int A[10] float B[5] Matrik A akan dialokasikan 10 tempat dalam memori dengan panjang yang sama Cara Pendefinisian Array Sebagai Peubah Contoh : L : array[1..50] of integer NamaMhs : array[ a.. j ] of string Sebagai tipe baru Contoh : type LarikInt : array[1..100] of integer P : LarikInt Mendefinisikan ukuran maksimum elemen larik sebagai konstanta

Contoh : Const Nmaks = 100 type Larikint : array[1..nmaks] of integer P : LarikInt Cara menterjemahkan ke bahasa C : #define Nmaks 100 typedef int Larikint[Nmaks+1]; Larikint P; Cara Mengacu Elemen Larik Elemen larik diacu melalui indeksnya. Nilai indek harus terdefinisi. Contoh cara mengacu elemen larik adalah : L[4] mengacu elemen keempat dari larik L NamaMhs[ b ] mengacu elemen kedua dari larik NamaMhs P[k] mengacu elemen ke-k dari larik P, asalkan nilai k sudah terdefinisi Menginisialisasi Larik menginisialisasi elemen larik adalah memberikan harga awal untuk seluruh elemen larik, misalnya menginisialisasi dengan nilai 0 seperti di bawah ini : Procedure InisDgn0(output A:larik, input N:integer) menginisialisasi setiap elemen larik A[1..N] dengan nol K. Awal : N adalah banyak elemen efektif larik, nilainya terdefinisi K. Akhir : seluruh elemen larik A bernilai nol Deklarasi : K : integer Deskripsi : for k 1 to N do A[k] 0 Endfor Mengisi elemen larik dari piranti masukan Elemen larik dapat diisi dengan nilai yang dibaca dari piranti masukan seperti contoh di bawah ini : Procedure BacaLarik(output A:larik, input N:integer) mengisi elemen larik A[1..N] dengan nilai yang dibaca dari piranti masukan K. Awal : N adalah jumlah elemen efektif larik, nilainya terdefinisi K. Akhir : seluruh elemen larik A berisi nilai-nilai yang dibaca dari piranti masukan Deklarasi : K : integer Deskripsi : for k 1 to N do read (A[k]) endfor Larik Bertype Terstruktur

Larik tidak hanya dapat berisi data bertype tunggal,tapi dapat juga berisi data yang bertipe terstruktur Contoh : const Nmaks = 100 type Mahasiswa : record <nim : integer, nama_mhs : string, KodeMK : string, Nilai : char > TabMhs : array[1..nmaks] of Mahasiswa Contoh Cara mengacu elemen TabMhs : TabMhs[2].Nim mengacu field Nim dari elemen kedua larik Write(TabMhs[k].KodeMK) menuliskan field KodeMK dari elemen ke k dari larik Pokok Bahasan ADT (Abstract Data Type) ADT (Abstract Data Type) ADT adalah definisi type dan sekumpulan primitif (operasi dasar) terhadap type tersebut. Type diterjemahkan menjadi type terdefinisi dalam bahasa pemrograman yang bersangkutan, misalnya menjadi record dalam Pascal/Ada dan Struct dalam bahasa C Primitif dalam konteks pemrograman prosedural, diterjemahkan menjadi fungsi dan prosedur. Primitif dikelompokkan menjadi : 1. Konstruktor/Kreator, pembentuk nilai type. Biasanya namanya diawali dengan Make. 2. Selektor, untuk mengakses komponen type. Biasanya namanya diawali dengan Get. 3. Prosedur Pengubah nilai komponen 4. Validator komponen type, yang dipakai untuk mengetes apakah dapat membentuk type sesuai batasan. 5. Destruktor/Dealokator, yaitu untuk menghancurkan nilai objek, sekaligus memori penyimpannya 6. Baca/tulis, untuk interface dengan input/output device 7. Operator Relasional terhadap type tersebut untuk mendefinisikan lebih besar, lebih kecil, sama dengan dan sebagainya. 8. Aritmatika terhadap type tersebut, dalam pemrograman biasanya hanya terdefinisi untuk bilangan numerik. 9. Konversi dari type tersebut ke type dasar dan sebaliknya ADT biasanya diimplementasi menjadi dua buah modul, yaitu : 1. Definisi/spesifikasi type dan primitif Spesifikasi type sesuai dengan bahasa yang dipakai Spesifikasi dari primitif sesuai dengan kaidah dalam konteks prosedural, yaitu : a) Fungsi : nama, domain, range, dan pre kondisi jika ada b) Prosedur : Keadaan Awal, Keadaan Akhir dan proses yang dilakukan 2. Body/realisasi dari primitif, berupa kode program dalam bahasa yang bersangkutan. Realisasi fungsi dan prosedur harus sedapat mungkin memanfaatkan Selektor dan Konstruktor

Pokok Bahasan Pointer (Bag.1) Alamat dan Pointer Konsep pointer sebenarnya cukup sederhana. Pointer sesungguhnya berisi alamat dari suatu data, bukan data sebagaimana variabel yang telah anda kenal. Setiap byte di dalam memori komputer memiliki sebuah alamat. Di dalam memori inilah variabel disimpan. Tetapi tentu saja pemrogram tidak perlu menyebutkan alamat dari suatu variabel secara explisit. Pada saat program dimuat di dalam memori, variabel akan diletakkan dengan sendirinya pada alamat tertentu. Suatu pointer di dalam program dimaksudkan untuk menunjuk suatu alamat memori. Misalnya kalau pint adalah pointer, dan vint adalah variabel yang terletak di memori beralamat 0xfff2, pointer pint dapat diatur agar menunjuk ke variabel vint. Alamat dan Pointer pint 0xfff4 0xfff2 menunjuk ke vint alamat vint 0xfff2 Mengetahui Alamat Suatu Variabel Alamat suatu variabel dapat diketahui dengan mudah, caranya tambahkan operator alamat, berupa simbol & di depan nama variabel. Dengan mengirimkan ke cout, alamat dari suatu variabel akan ditampilkan ke layar. Perlu diketahui, notasi 0x pada hasil program di depan menyatakan notasi heksadesimal. Pada C++, tanda & juga dipakai untuk referensi (alias dari suatu variabel). Mengetahui Alamat Suatu Variabel //program01.cpp

int bil1 = 5; float bil2 = 7.5; double bil3 = 17.777; cout<<"isi variabel : "<<endl; cout<<"bil1 = "<<bil1<<endl; cout<<"bil2 = "<<bil2<<endl; cout<<"bil3 = "<<bil3<<endl; cout<<endl; cout<<"alamat variabel : "<<endl; cout<<"bil1 = "<<&bil1<<endl; cout<<"bil2 = "<<&bil2<<endl; cout<<"bil3 = "<<&bil3<<endl; Mengisi Variabel Pointer Supaya variabel pointer menunjuk ke variabel lain, mula-mula harus diisi dengan alamat dari variabel yang hendak ditunjuk. Misalnya terdapat pendefinisian seperti berikut : Variabel pint dapat diatur agar menunjuk ke vint dengan cara sebagai berikut : Pernyataan diatas berarti : pint diisi dengan alamat dari vint. Mendefinisikan Variabel Pointer Format : tipe_data dapat berupa sembarang tipe data seperti halnya variabel bukan pointer. nama_variabel adalah variabel pointer. Supaya variabel pointer menunjuk ke variabel lain, mula-mula harus diisi dengan alamat dari variabel yang hendak ditunjuk. Misalnya terdapat pendefinisian seperti berikut : Variabel pint dapat diatur agar menunjuk ke vint dengan cara sebagai berikut : Pernyataan diatas berarti : pint diisi dengan alamat dari vint. Mengisi Variabel Pointer //program02.cpp

int vint = 55; int *pint; pint = &vint; //pointer menunjuk ke vint cout<<"alamat vint = "<<&vint<<endl; cout<<"isi pint = "<<pint<<endl; Pada contoh di depan : Baris tersebut ternyata menampilkan isi dari pointer itu sendiri, bukan isi dari variabel vint. Mengakses Nilai Yang Ditunjuk Pointer Berdasarkan contoh di depan, nilai dari vint dapat diakses melalui pint setelah pernyataan dibawah ini dijalankan Cara mengaksesnya adalah dengan melibatkan operator tak langsung yang berupa simbol * dan diletakkan di depan nama variabel pointer. Contoh : Berarti nilai yang ditunjuk oleh pint. //program03cpp int vint = 55; int *pint; pint = &vint; //pointer menunjuk ke vint cout<<"isi vint = "<<vint<<endl; cout<<"alamat vint = "<<&vint<<endl; cout<<"isi pint = "<<pint<<endl; cout<<"nilai yang ditunjuk oleh pint : "<<*pint<<endl; Program di depan menunjukkan pengaksesan terhadap vint dapat dilakukan melalui *pint. Contoh berikut menunjukkan isi vint diubah melalui *pint. //program4.cpp

int vint = 55; int *pint; pint = &vint; //pointer menunjuk ke vint cout<<"isi vint semula = "<<vint<<endl; *pint = 77; cout<<"isi vint sekarang = "<<vint<<endl; Pointer Void Pada contoh-contoh program di depan telah ditunjukkan pointer yang menunjuk ke tipe data tertentu. Sebenarnya juga dimungkinkan untuk membuat pointer tak bertipe. Caranya yakni dengan meletakkan kata kunci void di bagian penentu tipe pointer. Contoh : Suatu pointer void seperti contoh diatas dapat digunakan untuk menunjuk ke sembarang tipe data. //program4.cpp int bil1 = 55; float bil2 = 33.45; void *ptr; ptr = &bil1; //bisa menunjuk ke int cout<<"nilai yang ditunjuk ptr : "<<*(int*)ptr<<endl; ptr = &bil2; //bisa menunjuk ke float cout<<"nilai yang ditunjuk ptr : "<<*(float*)ptr<<endl; Pada program di depan, bentuk berikut perlu diberikan : Ini disebabkan C++ tidak tahu maksud *ptr mengingat ptr adalah pointer void. Cara ini bukan hanya berlaku jika kita bermaksud mengambil nilai yang ditunjuk oleh ptr tapi juga ketika kita mengubahnya. Seperti contoh program berikut : //program5.cpp int bilangan = 55; void *ptr; ptr = &bilangan; cout<<"bilangan semula : "<<bilangan<<endl; *(int*)ptr = 77; //mengubah nilai bilangan melalui ptr

cout<<"bilangan sekarang : "<<bilangan<<endl; Pokok Bahasan Pointer (Bag.2) Pointer dan Array Pointer dan array memiliki hubungan yang dekat. Secara internal array juga menyatakan alamat. Misalnya, didefinisikan : Agar ptgl menunjuk ke array, diperlukan pernyataan berupa : Perhatikan tidak ada tanda & di depan tgl_lahir. Ini disebabkan nama array sebenarnya sudah menyatakan alamat. Oleh karena itu tanda & tidak diperlukan. Pernyataan seperti : Dimana ptgl adalah pointer dan tgl_lahir adalah array, identik dengan : //program08.cpp int tgl_lahir[] = 24, 6, 1965; int *ptgl; ptgl = tgl_lahir; //ptgl menunjuk ke array cout<<"nilai yang ditunjuk oleh ptgl : "; cout<<*ptgl<<endl; cout<<"nilai dari tgl_lahir[0] : "; cout<<tgl_lahir[0]<<endl; Seluruh elemen array dapat ditampilkan dengan pernyataan :

Bentuk tgl_lahir[i] dapat diubah menjadi notasi pointer seperti berikut : Contoh program : //program9.cpp int tgl_lahir[] = 24, 6, 1965; int *ptgl; ptgl = tgl_lahir; //ptgl menunjuk ke array for(int i=0; i<3; i++) cout<<*(ptgl + i)<<endl;