STRUKTUR DATA DIMENSIONAL ARRAY

30
STRUKTUR DATA DIMENSIONAL ARRAY SULIDAR FITRI, M.Sc

description

STRUKTUR DATA DIMENSIONAL ARRAY. SULIDAR FITRI, M.Sc. C++. ARRAY 1 DIMENSI. #include #include - PowerPoint PPT Presentation

Transcript of STRUKTUR DATA DIMENSIONAL ARRAY

Page 1: STRUKTUR DATA DIMENSIONAL ARRAY

STRUKTUR DATA

DIMENSIONAL ARRAY

SULIDAR FITRI, M.Sc

Page 2: STRUKTUR DATA DIMENSIONAL ARRAY

ARRAY 1 DIMENSI#include<iostream.h>#include<conio.h>

main() {int a[5]={10,15,20,25,30};int b[5]={10,20};int c[5]={15,0,30};int j;

// Menampilkan nilai dari element arraycout<<endl;for(j=0;j<5;j++){cout<<"A ["<<j<<"] = "<<a[j]<<" , B ["<<j<<"] = "<<b[j]<<" , C ["<<j<<"] = "<<c[j]<<endl;}getch();}

Page 3: STRUKTUR DATA DIMENSIONAL ARRAY

OUTPUT:

Page 4: STRUKTUR DATA DIMENSIONAL ARRAY

Pengertian Array 2 Dimensi• Array 2 dimensi tersusun dalam bentuk baris dan kolom,

dimana indeks pertama menunjukkan baris dan indeks kedua menunjukkan kolom.

• Bentuk umum deklarasi array 2 dimensi

Tipe_data nama_array[jmlh_baris][jmlh_kolom]

Int nilai[4][3]

Page 5: STRUKTUR DATA DIMENSIONAL ARRAY

Array 2 dimensi• #include<iostream.h>• #include<conio.h>

• main(){• int matrix[3][3];• int i,j;

• for(i=0;i<=2;i++){• for(j=0;j<=2;j++){• cout<<"Masukkan angka pada baris ke "<<i<<" • kolom ke "<<j<<" : ";• cin>>matrix[i][j];• } cout<<endl;

}

Page 6: STRUKTUR DATA DIMENSIONAL ARRAY

• for(i=0;i<=2;i++){• for(j=0;j<=2;j++)• {• cout<<matrix[i][j]<<" ";• }• cout<<endl;• }• getch();• }

Page 7: STRUKTUR DATA DIMENSIONAL ARRAY

OUT PUT

Page 8: STRUKTUR DATA DIMENSIONAL ARRAY

CALCULATOR (menggunakan stack)

• Suatu perhitungan aritmatika biasanya berhubungan dengan operand dan operator. • Operand merupakan suatu karakter atau elemen

yang nilainya dioperasikan dengan bantuan suatu operator untuik menghasilkan suatu solusi.

• Misalkan jika diberikan suatu ekspresi aritmatika 2 * 3, maka elemen ‘dua’ dan elemen ‘tiga’ merupakan operand dari ekspresi tersebut dan elemen ‘*’ merupakan operator perkalian atas dua operand yang menghasilkan suatu solusi.

Page 9: STRUKTUR DATA DIMENSIONAL ARRAY

• Infix, Prefix ataupun Postfix adalah bentuk penulisan operasi matematika, bedanya :• Infix - Operator diletakkan di antara Operand• Prefix - Operator diletakkan di depan Operand• Postfix / Sufix - Operator diletakkan di belakang Operand

Notasi Infix, Prefix, Postfix

Page 10: STRUKTUR DATA DIMENSIONAL ARRAY

CONTOH

1) Notasi prefix, jika operator ditempatkan sebelum dua operand Contoh: * + A B C2) Notasi infix, jika operator ditempatkan di antara dua operand Contoh: (A + B) * C3) Notasi postfix, jika operator ditempatkan setelah dua operand Contoh: A B + C *

Page 11: STRUKTUR DATA DIMENSIONAL ARRAY

Notasi Infix, Prefix, Postfix

•Dalam penggunaannya, dalam kehidupan sehari-hari notasi infix merupakan notasi aritmatika yang paling banyak digunakan untuk mengekspresikan suatu perhitungan artimatik dibanding dengan dua notasi yang lain,

•Akan tetapi notasi Postfix merupakan notasi yang digunakan oleh mesin kompilasi pada komputer dengan maksud untuk mempermudah proses pengkodean, sehingga mesin kompilasi membutuhkan stack untuk proses translasi ekspresi tersebut.

Page 12: STRUKTUR DATA DIMENSIONAL ARRAY

Mengapa harus menggunakan Prefix dan Postfix?

Page 13: STRUKTUR DATA DIMENSIONAL ARRAY

Karena infix memiliki beberapa kekurangan, yaitu :• 1. Urutan pengerjaan tidak berdasarkan letak kiri atau kanannya,

tetapi berdasarkan precedence-nya• Contoh : 3 + 4 x 2• 3 + 4 x 2 , maka urutan pengerjaan adalah 4 x 2 dahulu.• 3 + 8 , baru hasilnya ditambah 3• 11• Urutan precedence (dari prioritas tertinggi) adalah sebagai berikut :• 1. - Pemangkatan• 2. - Perkalian dan Pembagian• 3. - Penjumlahan dan Pengurangan.• - Kecuali kalau ada tanda kurung.

Page 14: STRUKTUR DATA DIMENSIONAL ARRAY

• 2. Menggunakan tanda kurung. Infix bisa menggunakan tanda kurung. Tetapi tanda kurung dapat mengacak urutan precedence.

• Contoh : Tanpa penggunaan tanda kurung :• 9 – 5 – 3• 9 – 5 – 3 , maka urutan pengerjaan adalah 9 - 5 dahulu.• 4 – 3• 1

• Bandingkan dengan penggunaan tanda kurung berikut :• 9 – ( 5 – 3 )• 9 – ( 5 – 3 ) , maka urutan pengerjaan adalah 5 – 3 dahulu.• 9 – 2• 7

Page 15: STRUKTUR DATA DIMENSIONAL ARRAY

• 3. Jika suatu program akan mengevaluasi (mencari hasil) suatu infix, maka komputer perlu men-scan berulang-ulang mencari urutan pengerjaannya dahulu.

• Contoh : 7 + 4 x 2 – 6 / 3

• Jika kita diminta untuk menghitung soal seperti itu, maka kita tahu bahwa yang pertama kali harus kita kerjakan adalah 4 x 2. Lalu 6 / 3 dsb, seperti langkah-langkah berikut :• 7 + 4 x 2 – 6 / 3• 7 + 8 – 6 / 3• 7 + 8 – 2• 15 – 2• 13

Page 16: STRUKTUR DATA DIMENSIONAL ARRAY

• Komputer tidak bisa membaca keseluruhan soal sekaligus. Komputer hanya bisa men-scan soal satu per satu operand atau operator. Sehingga untuk mengetahui mana yang harus dikerjakan duluan, komputer harus men-scan keseluruhan soalnya dulu. Jadi langkah-langkah si komputer dalam mengerjakan soal infix seperti berikut:

• 1. Cari precedence tertinggi dengan men-scan kiri ke kanan keseluruhan soal.• 2. Hitung nilai operator dengan precedence tertinggi tersebut.• 3. Ulangi lagi dari langkah 1, sampai semua operator selesai

dikerjakan.

• Jika komputer tidak men-scan keseluruhan soal terlebih dahulu, maka akan terjadi kesalahan pada hasilnya.

Page 17: STRUKTUR DATA DIMENSIONAL ARRAY

Studi Kasus

•Pembuatan Kalkulator SCIENTIFIC•Misalkan operasi: 3 + 2 * 5• Operasi di atas disebut notasi infiks, notasi infiks

tersebut harus diubah lebih dahulu menjadi notas postfix• 3 + 2 * 5 notasi postfiksnya adalah 3 2 5 * +

Page 18: STRUKTUR DATA DIMENSIONAL ARRAY

Studi Kasus Stack (2) – Infix to Postfix

• Baca soal dari depan ke belakang• Jika berupa operand, maka masukkan ke posftix• Jika berupa operator, maka:

• Jika stack masih kosong, push ke stack• Jika derajat operator soal > derajat operator top of stack

• Push operator soal ke stack• Selama derajat operator soal <= derajat operator top of stack

• Pop top of stack dan masukkan ke dalam posfix• Setelah semua dilakukan, push operator soal ke stack

• Jika sudah semua soal dibaca, pop semua isi stack dan push ke postfix sesuai dengan urutannya

3 + 2 * 5stack

posftix

Page 19: STRUKTUR DATA DIMENSIONAL ARRAY

Studi Kasus Stack (3)

Page 20: STRUKTUR DATA DIMENSIONAL ARRAY

Studi Kasus Stack (yg lain) #1

• a+b*c-d• Stack (kosong) dan Postfik (kosong)

• Scan a• Postfik: a

• Scan +• Stack: +

• Scan b• Postfik: ab

• Scan *, karena ToS (+) < *, maka add ke Stack• Stack: +*

Page 21: STRUKTUR DATA DIMENSIONAL ARRAY

Studi Kasus Stack (yg lain) #2• Scan c• Postfik: abc

• Scan –, karena - < *, maka pop Stack, dan add ke Postfik• Stack: +• Postfik: abc*• Karena + >= -, maka pop Stack, dan add ke Postfik, karena Stack kosong, maka

push – ke stack• Stack: -• Postfik: abc*+

• Scan d• Postfik: abc*+d

• Karena sudah habis, push ToS stack ke Posfix• Postfix: abc*+d-

Page 22: STRUKTUR DATA DIMENSIONAL ARRAY

Contoh lain convert Infix, Prefix, Posfix #1

Proses Konversi Infix ke PrefixMisalkan diberikan ekspresi: (A + B) * (C – D)(A + B) * (C – D) = ((A + B) * (C – D))

= ( + (A B) * - (C D)) = * + A B – C D

Proses Konversi Infix ke PostfixMisalkan diberikan ekspresi: (A + B) * (C – D)(A + B) * (C – D) = ((A + B) * (C – D))

= ((A B) + * (C D) - ) = A B + C D - *

Page 23: STRUKTUR DATA DIMENSIONAL ARRAY

Contoh lain convert Infix, Prefix, Posfix #2Contoh lain convert Infix, Prefix, Posfix #2

Proses Konversi Prefix ke InfixMisalkan diberikan ekspresi: * + A B – C D* + A B – C D = (* (+ A B) (– C D) )

= (A + B) * (C – D) Proses Konversi Postfix ke InfixMisalkan diberikan ekspresi: A B + C D - *A B + C D - * = ((A B +) (C D -) *)

= (A + B) * (C – D)

Page 24: STRUKTUR DATA DIMENSIONAL ARRAY

Postfix Evaluator / Penyelesaian• Scan Postfix string dari kiri kekanan. • Siapkan sebuah stack kosong. • Jika soal adalah operand, tambahkan ke stack. Jika operator, maka pasti akan

ada minimal 2 operand pada stack• Pop dua kali stack, pop pertama disimpan dalam y, dan pop kedua ke

dalam x. Lalu evaluasi x <operator> y. Simpan hasilnya dan push ke dalam stack lagi.

• Ulangi hingga seluruh soal discan. • Jika sudah semua, elemen terakhir pada stack adalah hasilnya. • Jika lebih dari satu elemen, berarti error!

Page 25: STRUKTUR DATA DIMENSIONAL ARRAY

Contoh : 325*+

Page 26: STRUKTUR DATA DIMENSIONAL ARRAY

PROGRAM KALKULATOR SEDERHANA• /* * program calc.c * * • * Bayu Setiaji 2010 * */

• #include <stdio.h> • #include <stdlib.h> • #define MAX 5 • int stack[MAX]; // stack int top; // posisi puncak stack

Page 27: STRUKTUR DATA DIMENSIONAL ARRAY

• void push(int i); • int pop(void); • int main(void) { • int a, b; • char s[80]; • top = 0; • system("cls"); • printf("Kalkulator Sederhana\n"); printf("Tekan 'q' untuk keluar\n\n"); • do { • printf(": "); • gets(s);

Page 28: STRUKTUR DATA DIMENSIONAL ARRAY

• switch(*s) { • case '+': b = pop(); • a = pop(); • printf("= %d\n", a + b); • push(a + b); • break; • case '-': b = pop(); • a = pop(); • printf("= %d\n", a - b); • push(a - b); • break;

• case '*': b = pop(); • a = pop(); • printf("= %d\n", a * b);

push(b * a); break; • case '/': b = pop(); • a = pop(); • if(b == 0) { • printf("! pembagian dengan

nol\n"); break; } • printf("= %d\n", a / b); • push(a / b); • break; • case '.': a = stack[top - 1]; • printf("= nilai akhir [ %d ]\n", a);

break;

Page 29: STRUKTUR DATA DIMENSIONAL ARRAY

• default:• push(atoi(s)); • } } • while(*s != 'q'); • return 0; } • void push(int i) { • if(top >= MAX) { • printf("! stack penuh\n");

return; } • stack[top] = i; top++; }

• int pop(void) { • top--; • if(top < 0) { • printf("! stack kosong\n"); • return 0; • }

• return stack[top]; • }

Page 30: STRUKTUR DATA DIMENSIONAL ARRAY

• Source : 1. Stack / Struktur Data / Muhammad Riza Hilmi, ST

• 2. http://undetected-x-file.blogspot.com/