+ All Categories
Home > Documents > Struktur Data ( Data Structure ) – IS 2313

Struktur Data ( Data Structure ) – IS 2313

Date post: 20-Jan-2016
Category:
Upload: lali
View: 73 times
Download: 3 times
Share this document with a friend
Description:
Imam Rozali , S.T., M.T. Struktur Data ( Data Structure ) – IS 2313. System Basic Theory. Tuesday 07.00- 13 . 0 0, T hursd ay 07 . 0 0-1 3 .00 Reference: Liem, Inggriani. Diktat Struktur Data, ITB, 2003. - PowerPoint PPT Presentation
Popular Tags:
50
Imam Rozali, S.T., M.T. Struktur Data (Data Structure) – IS 2313
Transcript
Page 1: Struktur Data ( Data Structure )  – IS 2313

Imam Rozali, S.T., M.T.

Struktur Data(Data Structure) – IS 2313

Page 2: Struktur Data ( Data Structure )  – IS 2313

System Basic Theory

Tuesday 07.00-13.00, Thursday 07.00-13.00 Reference:

Liem, Inggriani. Diktat Struktur Data, ITB, 2003. Thomas A. Standish, “Data Stuctures, Algorithms & Software

Principles in C” Addison-Wesley, 1995.

Additional Reference Internet

E-mail : [email protected], [email protected] Phone : 081220670006, 02270303011

Page 3: Struktur Data ( Data Structure )  – IS 2313

Evaluation

Class Participation: - %Quiz : 10%Assignment : 20%Midterm: 35%Final : 35%

Page 4: Struktur Data ( Data Structure )  – IS 2313

Chapter 1 : Introduction to Data Structure

Page 5: Struktur Data ( Data Structure )  – IS 2313

Outline

Latar Belakang Sekilas Tentang C Proses Kompilasi dan Linking Program C Struktur Penulisan Program C Fungsi-Fungsi Dasar CUDT (User Defined Type) atau Tipe Data

Bentukan Pengenalan Praprosesor #include Sekilas Tentang Array Sekilas Tentang Struct Contoh Program Struct Struktur Data dalam Pemrograman Memory Address Data Structures

Page 6: Struktur Data ( Data Structure )  – IS 2313

Latar Belakang

AlgoritmaProgramDataStruktur Data

Algoritma + Struktur Data = Program

Page 7: Struktur Data ( Data Structure )  – IS 2313

Latar Belakang

Ciri algoritma yang baik menurut Donald E.Knuth adalah: Input: ada minimal 0 input atau lebih Ouput: ada minimal 1 output atau lebih Definite: ada kejelasan apa yang dilakukan Efective: langkah yang dikerjakan harus efektif Terminate: langkah harus dapat berhenti (stop)

secara jelas

Page 8: Struktur Data ( Data Structure )  – IS 2313

Sekilas Tentang C

Bahasa C sebagai bahasa tingkat menengah Beberapa kelebihan dari bahasa C:

Bahasa C tersedia hampir di semua jenis komputer, baik mikro, mini maupun komputer besar (mainframe computer).

Kode bahasa C bersifat portabel. Berbagai struktur data dan pengendalian proses disediakan

dalam C sehingga memungkinkan untuk membuat program yang terstruktur.

Dibandingkan dengan bahasa mesin atau assembly, C jauh lebih mudah dipahami dan pemrogram tidak perlu mengetahui mesin komputer secara detil.

C memungkinkan memanipulasi data dalam bentuk bit maupun byte. Di samping itu juga memungkinkan untuk memanipulasi alamat dari suatu data atau pointer.

Page 9: Struktur Data ( Data Structure )  – IS 2313

Sekilas Tentang C

Kelemahan bahasa C yang dirasakan oleh para pemula bahasa C: Banyaknya operator serta fleksibilitas penulisan

program kadang-kadang membingungkan pemakai. Kalau tidak dikuasai sudah tentu akan menimbulkan masalah.

Para pemrogram C tingkat pemula umumnya belum pernah mengenal pointer dan tidak terbiasa menggunakannya.

Page 10: Struktur Data ( Data Structure )  – IS 2313

Proses Kompilasi dan Linking Program C

Agar suatu program dalam bahasa pemrograman dapat dimengerti oleh komputer, program haruslah diterjemahkan dahulu ke dalam kode mesin.

Adapun penerjemah yang digunakan bisa berupa interpreter atau kompiler.

Page 11: Struktur Data ( Data Structure )  – IS 2313

Proses Kompilasi dan Linking Program C

Page 12: Struktur Data ( Data Structure )  – IS 2313

Struktur Penulisan Program C

Program C tersusun atas sejumlah blok fungsi.Sebuah program minimal mengandung sebuah

fungsi. Fungsi pertama yang harus ada dalam program

C dan sudah ditentukan namanya adalah main().

Bagian pernyataan fungsi (sering disebut tubuh fungsi) diawali dengan tanda kurung kurawal buka ({) dan diakhiri dengan tanda kurung kurawal tutup (}).

Page 13: Struktur Data ( Data Structure )  – IS 2313

Struktur Penulisan Program C

Page 14: Struktur Data ( Data Structure )  – IS 2313

Fungsi-Fungsi Dasar C

Pada C, terdapat beberapa fungsi dasar yang merupakan struktur yang harus ada dalam bahasa pemrograman C. Beberapa fungsi yang terdapat dalam bahasa C adalah: Fungsi main() Fungsi printf()

Page 15: Struktur Data ( Data Structure )  – IS 2313

Fungsi-Fungsi Dasar C

Fungsi printf() merupakan fungsi yang umum dipakai untuk menampilkan suatu keluaran pada layar peraga. Untuk menampilkan tulisan: Selamat belajar bahasa C printf(“Selamat belajar bahasa C”);

Dalam bentuk yang lebih umum, format printf() printf(“string kontrol”, daftar argumen);

Page 16: Struktur Data ( Data Structure )  – IS 2313

Fungsi-Fungsi Dasar C

\” menyatakan karakter petik-ganda\\ menyatakan karakter backslash\t menyatakan karakter tab%d untuk menampilkan bilangan bulat (integer)%f untuk menampilkan bilangan titik-

mengambang (pecahan)%c untuk menampilkan sebuah karakter%s untuk menampilkan sebuah string

Page 17: Struktur Data ( Data Structure )  – IS 2313

Fungsi-Fungsi Dasar C

#include <stdio.h>main( ){ printf(“No : %d\n”, 10); printf(“Nama : %s\n”, “Ali”); printf(“Nilai : %f\n”,80.5); printf(“Huruf : %c\n”,‘A’);}

Page 18: Struktur Data ( Data Structure )  – IS 2313

UDT (User Defined Type) atau Tipe Data Bentukan

Bahasa pemrograman bisa memiliki tipe data: Built-in : sudah tersedia oleh bahasa pemrograman tersebut.

Tidak berorientasi pada persoalan yang dihadapi. UDT : User Defined Type, dibuat oleh pemrogram. Mendekati

penyelesaian persoalan yang dihadapi. Contoh: record pada Pascal, struct pada C, class pada Java.

ADT : Abstract Data Type memperluas konsep UDT dengan menambahkan pengkapsulan atau enkapsulasi, berisi sifat-sifat dan operasi-operasi yang bisa dilakukan terhadap kelas tersebut. Contoh: class pada Java.

Tipe data baru : typedef <tipe_data_lama> <tipe_data_baru>

Page 19: Struktur Data ( Data Structure )  – IS 2313

UDT (User Defined Type) atau Tipe Data Bentukan

#include <stdio.h>#include <conio.h>typedef int angka;typedef float pecahan;typedef char huruf;void main(){ clrscr(); angka umur; pecahan pecah; huruf h; huruf nama[10]; printf("masukkan umur anda : ");scanf("%d",&umur); printf("Umur anda adalah %d",umur); printf("\nmasukkan bilangan pecahan : ");scanf("%f",&pecah); printf("Bilangan pecahan %f",pecah); printf("\nmasukkan huruf : ");h=getche(); printf("\nHuruf anda %c",h); printf("\nmasukkan nama : ");scanf("%s",nama); printf("Nama anda %s",nama); getch();}

Page 20: Struktur Data ( Data Structure )  – IS 2313

Pengenalan praprosesor #include

#include merupakan salah satu jenis pengarah praprosesor (preprocessor directive). Pengarah praprosesor ini dipakai untuk membaca file yang diantaranya berisi deklarasi fungsi dan definisi konstanta.

File-file ini mempunyai ciri yaitu namanya diakhiri dengan ekstensi .h. Misalnya pada program #include <stdio.h> menyatakan pada kompiler agar membaca file bernama stdio.h saat pelaksanaan kompilasi.

 Bentuk umum #include: #include “namafile”

Page 21: Struktur Data ( Data Structure )  – IS 2313

Sekilas Tentang Array

Array adalah kumpulan data yang bertipe sama yang menggunakan nama yang sama. Dengan menggunakan array, sejumlah variabel dapat memakai nama yang sama. Antara satu variabel dengan variabel lain di dalam array dibedakan berdasarkan nomor elemen (subscript).

Page 22: Struktur Data ( Data Structure )  – IS 2313

Sekilas Tentang Array

#include<iostream.h>#include<conio.h>void main(){ int data[10]; // array dengan 10 elemen bertipe integer int elemen; clrscr(); // entri 10 data for (elemen=0;elemen <= 9;elemen++) { cout << “Data ke – “ << elemen << “: “; cin >> data[elemen]; } // tampilkan data setelah entri for (elemen=0;elemen <= 9;elemen++) { cout << “Data ke – “ << elemen << “: “ << data[elemen]; }}

Page 23: Struktur Data ( Data Structure )  – IS 2313

Sekilas Tentang Array

#include<iostream.h>#include<conio.h>void main(){ int data[5] = {4, 1, 0, -9, 8}; int elemen; clrscr(); // tampilkan data for (elemen=0;elemen <= 4;elemen++) { cout << “Data ke – “ << elemen << “: “ << data[elemen]; }}

Page 24: Struktur Data ( Data Structure )  – IS 2313

Sekilas Tentang Array

#include<iostream.h>#include<conio.h>void main(){ int data[10] = {4, 1, 0, -9, 8, 5, -1, 2, 3, -7}; int elemen, max; max = data[0]; for(elemen=0; elemen<= 9; elemen++) { if (data[elemen]>max) max = data[elemen]; else max = max; } cout << “Nilai maksimum adalah : “ << max;}

Page 25: Struktur Data ( Data Structure )  – IS 2313

Sekilas Tentang Array

#include<iostream.h>#include<conio.h>void main(){ int j, k; int data[5][3] = { {3, 4, -1}, {2, 3, 0}, {1, 1, 2}, {5, 9, -4}, {6, 6, 2} }; for (j = 0; j<=4; j++) { for (k = 0; k<=2; k++) cout << “data[“ << j << “][“<< k << “] = “ << data[j][k] << endl; }}

Page 26: Struktur Data ( Data Structure )  – IS 2313

Sekilas Tentang Struct

Struct adalah tipe data bentukan yang berisi kumpulan variabel-variabel yang bernaung dalam satu nama yang sama dan memiliki kaitan satu sama lain.

typedef struct <nama_struct> { tipe_data <nama_var>; tipe_data <nama_var>; ....}

Page 27: Struktur Data ( Data Structure )  – IS 2313

Sekilas Tentang Struct

typedef struct Mahasiswa { char NIM[8]; char nama[50]; float ipk;};

struct { char NIM[8]; char nama[50]; float ipk;} mhs;

Page 28: Struktur Data ( Data Structure )  – IS 2313

Sekilas Tentang Struct#include <stdio.h>#include <conio.h>//Pendeklarasian tipe data baru struct Mahasiswatypedef struct Mahasiswa{ char NIM[9]; char nama[30]; float ipk;};void main(){ //Buat variabel mhs bertipe data Mahasiswa Mahasiswa mhs; clrscr(); printf("NIM = ");scanf("%s",mhs.NIM); printf("Nama = ");scanf("%s",mhs.nama); printf("IPK = ");scanf("%f",&mhs.ipk); printf("Data Anda : \n"); printf("NIM : %s\n",mhs.NIM); printf("Nama : %s\n",mhs.nama); printf("IPK : %f\n",mhs.ipk); getch();}

Page 29: Struktur Data ( Data Structure )  – IS 2313

#include <stdio.h>#include <conio.h>#define phi 3.14//langsung dianggap variabel 'lingkaran'struct { float jari2; float keliling; float luas;} lingkaran;//fungsi void untuk menghitung luas ingkaranvoid luasLingkaran(){ //langsung menggunakan luas lingkaran asli lingkaran.luas = lingkaran.jari2 * lingkaran.jari2 * phi; printf("\nLuas lingkaran = %f",lingkaran.luas);} //fungsi yang mengembalikan nilai float untuk menghitung keliling float kelLingkaran(float j) { return 2*phi*lingkaran.jari2; }

Page 30: Struktur Data ( Data Structure )  – IS 2313

int main(){ clrscr(); printf("Jari-jari = ");scanf("%f",&lingkaran.jari2); //panggil fungsi luasLingkaran luasLingkaran(); //panggil fungsi keliling, nilai kembaliannya dikirim lingkaran.keliling = kelLingkaran(lingkaran.jari2); //tampilkan keliling lingkaran asli printf("\nKeliling lingkaran = %f",lingkaran.keliling); getch();}

Page 31: Struktur Data ( Data Structure )  – IS 2313

#include <stdio.h>#include <conio.h>typedef struct Date{ int dd; int mm; int yyyy;};typedef struct Time{ int h; int m; int s;};typedef struct Login{ int ID; Date tglLogin; Time waktuLogin;};

Page 32: Struktur Data ( Data Structure )  – IS 2313

int main(){ Login user1; printf("USER 1\n"); printf("ID : "); scanf("%d",&user1.ID); printf("Tanggal Login\n"); printf("Hari : "); scanf("%d",&user1.tglLogin.dd); printf("Bulan : "); scanf("%d",&user1.tglLogin.mm); printf("Tahun "); scanf("%d",&user1.tglLogin.yyyy); printf("Waktu Login\n"); printf("Jam : "); scanf("%d",&user1.waktuLogin.h); printf("Menit : "); scanf("%d",&user1.waktuLogin.m); printf("Detik : "); scanf("%d",&user1.waktuLogin.s); printf("Terimakasih\n"); printf("Data Anda :\n"); printf("ID : %d\n",user1.ID); printf("Date : %d - %d – %d\n",user1.tglLogin.dd,user1.tglLogin.mm,user1.tglLogin.yyyy); printf(“ Time: %d:%d:%d\n",user1.waktuLogin.h,user1.waktuLogin.m,user1.waktuLogin.s); getch();}

Page 33: Struktur Data ( Data Structure )  – IS 2313

#include <stdio.h>#include <conio.h>typedef struct Date{ int dd; int mm; int yyyy;};typedef struct Time{ int h; int m; int s;};typedef struct Login{ int ID; Date tglLogin; Time waktuLogin;};

Page 34: Struktur Data ( Data Structure )  – IS 2313

int main(){ Login user[3]; //3 user for(int i=0;i<3;i++) { printf("\nUSER ke-%d\n",i+1); printf("ID : "); scanf("%d",&user[i].ID); printf("Tanggal Login\n"); printf("Hari : "); scanf("%d",&user[i].tglLogin.dd); printf("Bulan : "); scanf("%d",&user[i].tglLogin.mm); printf("Tahun : "); scanf("%d",&user[i].tglLogin.yyyy); printf("Waktu Login\n"); printf("Jam : "); scanf("%d",&user[i].waktuLogin.h); printf("Menit : "); scanf("%d",&user[i].waktuLogin.m); printf("Detik : "); scanf("%d",&user[i].waktuLogin.s); printf("Terimakasih Atas Pengisiannya\n"); printf("\nData User ke-%d:\n",i+1); printf("Login ID : %d\n",user[i].ID); printf("Login Date : %d - %d - %d\n",user[i].tglLogin.dd,user[i].tglLogin.mm,user[i].tglLogin.yyyy); printf("Login Time : %d:%d:%d\n",user[i].waktuLogin.h, user[i].waktuLogin.m,user[i].waktuLogin.s); } getch();}

Page 35: Struktur Data ( Data Structure )  – IS 2313

Struktur Data dalam Pemrograman

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.

Membuat program lebih ringkas, lebih bersih, lebih elegan,lebih mudah dan lebih mampu berkinerja tinggi (karena efisien dalam penggunaan memori dan waktu)

Program berjalan membutuhkan waktu beberapa detik, dimana struktur yang lain mungkin akan membutuhkan ribuan detik

Page 36: Struktur Data ( Data Structure )  – IS 2313

Struktur Data dalam Pemrograman

Tahapan pemrograman: Analisa masalah Memilih algoritma dan struktur data untuk

menyelesaikan masalah itu Coding

Page 37: Struktur Data ( Data Structure )  – IS 2313

Struktur Data dalam Pemrograman

Struktur Data yang telah dipelajari struktur data dengan type : Dasar yaitu integer, real, boolean, character. Nama Informasi

yang disefinisikan dengan type dasar ini hanya dapat menyimpan satu nilai.

Bentukan yaitu type yang merupakan komposisi dari type bentukan. Nama informasi yang didefiniskan dengan type ini hanya mengandung satu nilai sesuai dengan kompisisi dari type yang didefinisikan.

Tabel/Array yaitu type yang mendefinisikan sekumpulan elemen bertype sama, dan nantinya kumpulan elemen tersebut akan dialokasikan secara kontigu, dengan akses elemen yang ditentukan oleh indeks. Nama informasi yang bertype tabel dapat menyimpan banyak nilai, tergantung pada ukuran tabel.

Page 38: Struktur Data ( Data Structure )  – IS 2313

Struktur Data dalam Pemrograman

Ada 3 tingkatan struktur data : Definisi Fungsional adalah pendefinisian struktur data dan

operator-operator yang berlaku pada struktur tersebut Representasi Lojik adalah spesifikasi “type” dari struktur,

yang menyangkut nama type dan spesifikasi semua operator, namun dalam definisi ini, alamat masih belum ditentukan secara pasti.

Representasi fisik adalah spesifikasi dari struktur data sesuai dengan implementasinya dalam memori komputer.

Page 39: Struktur Data ( Data Structure )  – IS 2313

Struktur Data dalam Pemrograman

Ada dua macam implementasi fisik : Representasi fisik kontigu adalah sekumpulan data yang

penempatannya dalam memori secara fisik adalah kontigu, setiap elemen ditaruh berurutan posisi alamatnya dengan elemen lain. Karena itu untuk mencapai elemen berikutnya, cukup melalui suksesor alamat dari “current element”. Struktur ini disebut struktur yang statis.

Representasi fisik berkait adalah sekumpulan data yang penempatannya dalam memori dapat terpencar-pencar, namun dapat ditelusuri berkat adanya informasi berupa alamat, yang menghubungkan elemen yang satu dengan yang lain. Alamat memori dapat dialokasikan/dapat pula dibebaskan sesuai dengan keperluan, sehingga besarnya memori yang dipakai bisa membesar dan mengecil. Struktur ini disebut struktur yang dinamis.

Page 40: Struktur Data ( Data Structure )  – IS 2313

Struktur Data dalam Pemrograman

Beberapa jenis struktur data adalah sebagai berikut: Array Linear List Stack Queue List Connected List Circular List Double Linked List Multi List Structure Tree Structure

Page 41: Struktur Data ( Data Structure )  – IS 2313

Struktur Data dalam Pemrograman

Page 42: Struktur Data ( Data Structure )  – IS 2313

Struktur Data dalam Pemrograman

List Linier Multi List

Tree Antrian

Stack Graph

Page 43: Struktur Data ( Data Structure )  – IS 2313

MEMORY ADDRESS

Operand bilangan dan karakter, seperti halnya instruksi, disimpan dalam memori komputer.

Memori terdiri atas jutaan sel penyimpanan, dimana tiap sel tersebut menyimpan suatu bit informasi yang berupa nilai 0 atau 1. Karena bit tunggal mewakili informasi yang sangat sedikit, maka bit jarang ditangani secara individu.

Pendekatan yang umum adalah menanganinya dalam kelompok dengan ukuran tertentu. Untuk tujuan ini, memori tersebut diatur sehingga kelompok n bit dapat disimpan dan diambil dalam satu operasi dasar tunggal.

Tiap kelompok n bit disebut sebagai word informasi, dan n disebut word length.

Page 44: Struktur Data ( Data Structure )  – IS 2313

MEMORY ADDRESS

Komputer modern memiliki word length yang biasanya berkisar dari 16 hingga 64 bit. Suatu unit 8 bit disebut byte.

Instruksi mesin mungkin memerlukan satu atau lebih word untuk representasinya. Jika word length suatu komputer adalah 32 bit, maka word tunggal dapat menyimpan 32-bit bilangan 2’s-complement atau empat karakter ASCII, masing-masing memiliki 8 bit.

Page 45: Struktur Data ( Data Structure )  – IS 2313

MEMORY ADDRESS

Mengakses memori untuk menyimpan atau mengambil suatu item informasi, baik berupa word atau byte, memerlukan nama yang berbeda atau alamat untuk tiap lokasi item.

Merupakan hal yang biasa menggunakan bilangan 0 hingga 2k – 1, untuk beberapa nilai k yang sesuai, sebagai alamat dari lokasi yang berurutan dalam memori. Alamat 2k meliputi ruang alamat komputer tersebut, dan memori tersebut dapat memiliki lokasi addressable hingga 2k. Misalnya, alamat 24-bit menghasilkan ruang alamat 224 (16.777.216) lokasi.

Page 46: Struktur Data ( Data Structure )  – IS 2313

Data Structures

CPU secara langsung dapat memanipulasi data integer, real number, karakter, boolean dan memory addres. Jenis data yang secara langsung didukung oleh CPU disebut jenis data primitif, atau jenis data mesin.

Struktur data termasuk kelompok elemen data primitif yang diorganisir untuk beberapa bentuk pengolahan umum. Struktur data digambarkan dan dimanipulasi dalam perangkat lunak.

Perangkat keras komputer tidak bisa memanipulasi struktur data secara langsung, tetapi harus memperlakukannya berkaitan dengan komponen primitif seperti bilangan integer, bilangan floating point, karakter tunggal, dan seterusnya.

Perangkat lunak harus menterjemahkan operasi struktur data ke dalam seperangkat instruksi mesin yang beroperasi pada elemen data primitif individu. 

Page 47: Struktur Data ( Data Structure )  – IS 2313

Data Structures

Kompleksitas struktur data terbatas pada keterampilan dan imajinasi para programmer.

Perangkat lunak sistem sering menyediakan jasa aplikasi untuk manipulasi struktur data. Sebagai contoh, suatu sistem operasi umumnya menyediakan jasa untuk membaca dan menulis ke dan dari file.

Struktur data lain lebih sedikit didukung oleh perangkat lunak sistem. Contohnya meliputi array numerik, file indeks, dan struktur database kompleks.

File indeks didukung oleh beberapa, tetapi tidak semua sistem operasi.

Page 48: Struktur Data ( Data Structure )  – IS 2313

Data Structures

Array numerik umumnya mendukung bahasa pemrograman tetapi bukan di dalam sistem operasi.

Struktur database secara normal didukung oleh suatu database manajemen sistem.

Kebanyakan bahasa program mendukung manipulasi langsung dari karakter string.

Struktur data mempunyai peran penting dalam pengembangan sistem software. Sebagai contoh, linked list biasanya digunakan oleh sistem operasi untuk menjejaki blok memori yang dialokasikan ke program dan blok disk yang dialokasikan ke file dan direktori.

Indeks digunakan dalam database manajemen sistem untuk mempercepat pencarian dan memanggil kembali operasi.

Page 49: Struktur Data ( Data Structure )  – IS 2313

Tugas I

Tuliskan nilai setiap elemen dari variabel array a di bawah ini: Int a[3][3] = {{1,8},{2,4,6},{5}}

Buatlah sebuah fungsi rekursif untuk mendapatkan bilangan terkecil dari n buah bilangan bulat yang tersimpan dalam sebuah varriabel array

Buatlah sebuah array – record untuk menampung suatu data mahasiswa yang terdiri atas: nim, nama, alamat, dan umur. Asumsi jumlah maksimal mahasiswa adalah 50 orang.

Page 50: Struktur Data ( Data Structure )  – IS 2313

#include <stdio.h>#define SIZE 10Int whatisThis(int[],int);main(){ Int total,a[SIZE] = {1,2,3,4,5,6,7,8,9,10} total = whatisThis(a,SIZE); printf(“\nNilai variabel total adalah %d”, total); return 0; }Int whatisThis(int b[],int size){ If (size == 1) Return b[0]; else return b[size-1] + whatisThis(b,size-1)}

Program apakah ini? Outputnya?


Recommended