PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas...

53
PETUNJUK PRAKTIKUM MATEMATIKA DISKRIT 2016 PP/018/MD/II/R4 UNIVERSITAS AHMAD DAHLAN TEKNIK INFORMATIKA FAKULTAS TEKNOLOGI INDUSTRI

Transcript of PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas...

Page 1: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

PETUNJUK PRAKTIKUM

MATEMATIKA DISKRIT

2016

PP/018/MD/II/R4

UNIVERSITAS AHMAD DAHLAN

TEKNIK INFORMATIKAFAKULTAS TEKNOLOGI INDUSTRI

Page 2: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

i

PETUNJUK PRAKTIKUM MATEMATIKA DISKRIT

PP/018/TC18158/Semester Ke-II/Revisi Ke-IV

Disusun oleh :

Nur Rochmah D P A, S.T, M. Kom Lisna Zahrotun, S.T, M.Cs

Laboratorium Komputasi Dasar Program Studi Tehnik Informatika

Fakultas Teknologi Industri UNIVERSITAS AHMAD DAHLAN

2015

Page 3: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

ii

KATA PENGANTAR

Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan

hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat terselesaikan.

Cakupan Materi Matematika Diskrit sangat luas, akan tetapi dalam modul ini hanya

membahas sebagian saja. Dalam praktikum ini mahasiswa diharapkan dapat mempraktikkan

materi perkuliahan menggunakan bahasa pemrograman yang dikuasai. Dikarenakan banyak

sekali bahasa pemrograman, maka modul ini hanya memberikan contoh pada penggunaan bahasa

c++. Untuk materi praktikum, di awal akan dipraktikan himpunan dimana di dalamnya

dikenalkan tipe set. Kemudian bilangan bulat yang didalamnya membahas tentang FPB dan

KPK. Kemudian selanjutnya relasi, matriks, fungsi, kombinatorik, penerapan kombinatorik dan

graf

Tidak semua materi diatas dijeaskan dalam modul ini, setiap bab hanya beberapa cntoh

saja yang dibahas. Oleh karena itu modul ini hanya membantu mahasiswa dalam belajar

matematika diskrit, bukan sebagai satu-satunya acuan. Harapannya mahasiswa data mencari dari

sumber lain tentang materi matematika diskrit.

Penulis mengucapkan terima kasih kepada semua pihak yang tentunya tidak bisa penulis

sebutkan satu persatu yang telah membantu dalam penyusunan modul ini.

Tentu saja modul ini masih jauh dari memuaskan, namun penulis berharap modul ini

dapat bermanfaat bagi mahasiswa dalam mengkaji dan mengembangkan ilmu matematika

diskrit. Saran dan kritik sangatlah penulis harapkan, untuk perkembangan selanjutnya.

Yogyakarta,Februari 2015

Penulis

Page 4: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

iii

DAFTAR ISI

Kata Pengatar ………………………………………………………………………….. ii

Daftar Isi ………………………………………………………………………………... iii

Sejarah Revisi …………………………………………………………………………… iv

Pertemuan 1 Himpunan……………………………………………………………….. 1

Pertemuan 2 Bilangan Bulat …………………………………………………………... 7

Pertemuan 3 Aplikasi Bilangan Bulat…………………………………..……………... 11

Pertemuan 4 Relasi ……………………………………………………………………. 17

Pertemuan 5 Matriks …………………………………………………………………… 22

Pertemuan 6 Fungsi Iteratif ...………………………………………………………..... 26

Pertemuan 7 Fungsi Rekursif dan Komposisi Dua fungsi …………………………..... 30

Pertemuan 8 Kombinatorik ……………………………………………………………. 35

Pertemuan 9 Penerapan Kombinatorik ………………………………………………… 39

Pertemuan 10 Graf ………………….……………………………………………….. 45

Page 5: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

iv

Sejarah Revisi Modul Praktikum Matematika Diskrit

Modul revisi III Hal Modul revisi IV Hal

Himpunan 1 Himpunan 1

Bilangan Bulat 9 Bilangan Bulat 7

Aplikasi Bilangan Bulat 13 Aplikasi Bilangan Bulat 11

Relasi 19 Relasi 17

Fungsi Iteratif 25 Matriks 22

Fungsi Rekursif 28 Fungsi Iteratif 26

Matriks 31 Fungsi Rekursif dan komposisi dari

dua fungsi

30

Kombinatorik 35 Kombinatorik 35

Penerapan Kombinatorik 39 Penerapan Kombinatorik 39

Graf (graf terhubung dan graf tidak

terhubung)

45 Graf (Graf terhubung, graf tidak

terhubung dan menghitung jarak)

45

Page 6: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

1

Pertemuan I

Himpunan

Pertemuan ke : 1

Alokasi Waktu : 1,5 Jam

Kompetensi Dasar : Mahasiswa mampu mengembangkan program yang terkait dengan

Himpunan

Indikator : Praktikan mampu membuat program untuk penyelesaian persoalan terkait

himpunan

A. Teori Pendukung

Pengertian Himpunan

1. Himpunan (set) adalah kumpulan objek-objek yang berbeda.

2. Objek di dalam himpunan disebut elemen, unsur, atau anggota.

3. HMTIF adalah contoh sebuah himpunan, di dalamnya berisi anggota berupa

mahasiswa. Tiap mahasiswa berbeda satu sama lain.

Notasi himpunan

Himpunan dinyatakan dg huruf capital

misal : A, B, G

Sedangkan elemennya dg huruf kecil a, b, c..,1,2,..

Penulisan Himpunan

1. Enumerasi

menyebutkan semua anggota dari himpunan tersebut.

contoh : Himpunan tiga bilangan ganjil pertama: A = {1,3,5}.

Keanggotaan Himpuan

x A : x merupakan anggota himpunan A;

x A : x bukan merupakan anggota himpunan A.

Contoh 2.

Misalkan: A = {1,3,5,8}, R = { a, b, {a, b, c}, {a, c} }, K = {{}}

maka

1 A,

{a, b, c} R, sedangkan c R ,

{} K, sedangkan {} A

Page 7: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

2

Beberapa simbol baku pada himpunan

N = himpunan bilangan alami (asli) = { 0,1, 2, 3,... }

Z = himpunan bilangan bulat = { ..., -2, -1, 0, 1, 2, ... }

Q = himpunan bilangan rasional

R = himpunan bilangan riil

C = himpunan bilangan kompleks

sedangkan U menyatakan himpunan semesta.

Contoh: Misalkan U = {a, b, c, d, e} dan A adalah himpunan bagian dari U, dengan A =

{a, d, e}.

2. Notasi Persyaratan

A = {x | persyaratan x}

contoh :

A = {x | x bilangan bulat dengan x2 -1 =0}

B = {x | x merupakan huruf vokal}

Diagram Venn

Untuk menyatakan relasi antar himpunan

Misal U = {1, 2, …, 7, 8}, A = {1, 2, 3, 5} dan B = {2, 5, 6, 8}.

maka notasi dalam diagram Venn:

Himpunan Berhingga (Finite Set)

Himpunan yang mempunyai anggota berhingga disebut himpunan berhingga (finite

set)

Sembarang himpunann yang anggotanya tak berhingga disebut himpunan tak

berhingga(infinite set)

contoh A={a,b,c,d,e,f} adalah finite set, sedangkan Z adalah infinite set.

Operasi yang dapat dilakukan pada tipe himpunan adalah operasi gabungan, irisan, dan

selisih.

{gabungan} HurufKu:=[„A‟, „C‟, „D‟] + [„C‟, „D‟, „E‟];

{irisan} HurufKu:=[„A‟, „C‟, „D‟] * [„C‟, „D‟, „E‟];

U

1 2

53 6

8

4

7A B

Page 8: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

3

{selisih} HurufKu:=[„A‟, „C‟, „D‟] - [„C‟, „D‟, „E‟];

B. Langkah Praktikum :

Ketikkan dan jalankan program1.1 berikut:

#include <iostream>

#include <conio.h>

using namespace std;

int main(){

//array a dan b masing-masing memesan memori sebanyak 20 alamat

int i, j, a[20], b[20], banyakA, banyakB; [1]

cout<<"IRISAN & GABUNGAN 2 HIMPUNAN\n";

cout<<"============================\n\n";

cout<<"Masukkan banyaknya anggota himpunan A : ";

cin>>banyakA;

//isi anggota A ditampung dalam array a [2]

for(i=0;i<banyakA;i++){

cout<<"Masukkan anggota " << i+1 << " : ";

cin>>a[i];

}

cout<<"\nMasukkan banyaknya anggota himpunan B : ";

cin>>banyakB;

//isi anggota B ditampung dalam array b

for(i=0;i<banyakB;i++){

cout<<"Masukkan anggota " << i+1 << " : ";

cin>>b[i];

}

//menampilkan isi dari arrai a

cout<<"\nHimpunan A={ ";

for(i=0;i<banyakA;i++){

cout<<a[i]<<" ";

}

cout<<"}";

//menampilkan isi dari array b

cout<<"\nHimpunan B={ ";

for(i=0;i<banyakB;i++){

cout<<b[i]<<" ";

}

cout<<"}";

cout<<"\n\n-----------------------------\n"; [3]

cout<<"A irisan B = { ";

for(i=0;i<banyakA;i++){

for(j=0;j<banyakB;j++){

//a irisan b berisi anggota dari himpunan a dan b yang sama

//jika isi dari array a = isi array b, maka tampilkan isi array a

if(a[i]==b[j]) cout<<a[i]<<" ";

}

}

cout<<"}";

//menampilkan gabungan isi dari array a dan array b [4]

cout<<"\n\nA gabungan B = { ";

for(i=0;i<banyakA;i++){

cout<<a[i]<<" ";

}

for(i=0;i<banyakB;i++){

cout<<b[i]<<" ";

Page 9: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

4

}

cout<<"}";

cout<<"\n\nTekan sembarang untuk keluar ...";

getch();

return 0;

}

Hasil tampilan program di atas sebagai berikut:

Tugas anda : Cobalah dengan data yang berbeda dan analisa.

C. Evaluasi (Soal posttest)

1. Jelaskan langakah kerja blok program 1.1 sesuai dari no {1,2,3,4}

2. Simpan program 1.1 menjadi Program 1.2, diubah sebagai berikut. Analisa hasil

eksekusi program1.2 dan jelaskan perbedaan dengan program 1.1 :

include

#include

#include

#include

int him1[100];

int him2[100];

int i,j,jum1,jum2,l;

int irisan[100];

bool sama;

void main(){

cout<<"masukkan data himpunan pertama!"<

cout<<"masukkan jumlah data:";

cin>>jum1;

for (i=1;i<=jum1;i++){

cout<<"data "<<<":";

cin>>him1[i];

}

cout<<"himpunan pertama:";

for (i=1;i<=jum1;i++){

cout<<<" ";

Page 10: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

5

}

cout<

cout<<"masukkan data himpunan kedua!"<

cout<<"masukkan jumlah data:";

cin>>jum2;

for (j=1;j<=jum2;j++){

cout<<"data "<<<":";

cin>>him2[j];

}

cout<<"himpunan kedua:";

for (j=1;j<=jum2;j++){

cout<<<" ";

}

cout<

//perintah irisan

cout<<"Irisan dari kedua himpunan tersebut adalah:";

l=0;

for (i=1;i<=jum1;i++)

{

for (j=1;j<=jum2;j++)

{

if (him1[i]==him2[j])

{

l=l+1;

irisan[l]=him1[i];

cout<<<" ";

}

}

}

getch();

}

D. Format Lembar Jawab

1. Penjelesan Blok program 1.1

Blok 1 :

Blok 2 :

Blok 3 :

Blok 4 :

2. Analisa perbedaan hasil program modifikasi .

Page 11: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

6

Nilai

Yogyakarta,

………………………………………….

Paraf asisten

<……………………………………>

Jawaban Postest

E. Referensi

1. Modul Kuliah Matematika Diskrit , Tedy Setiadi, 2006

2. Doerr Alan, Kenneth Levasseur, Applied Discrete Structures for Com[uter Science,

Science Research Asociates, Inc. Toronto, 1985

3. Munior, Rinaldi, Matematika Diskritn edisi ke 2, Penerbit Informatika Bandung, 2001

Page 12: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

7

Pertemuan II

Bilangan Bulat

Pertemuan ke : 2

Alokasi Waktu : 1,5 Jam

Kompetensi Dasar : Mahasiswa mampu mengembangkan program yang terkait dengan

persoalan pada bilangan bulat

Indikator : Praktikan mampu membuat program untuk penyelesaian persoalan

terkait FPB dan KPK

A. Teori Pendukung

Bilangan bulat adalah bilangan yang tidak mempunyai pecahan decimal, misalnya

1,34, 4009, sedangkan bilangan yang mempunyai titik decimal disebut bilangan riil,

misalnya 8.0, 34.25 .

Factor pembagi terbesar (FPB) adalah bilangan bulat positif terbesar yang dapat

pembagi habis kedua bilangan itu.. untuk mencari nilai FPB dapat digunakan cara

sederhana (pohon faktor), factorial dan algoritma Euclidean.

Misalkan m dan n adalah bilangan bulat tak negatif(m n), maka algoritma untuk

menemukan FPB ( algoritma Euclidean) adalah sebagai berikut:

(i) Jika n = 0 maka m adalah FPB(m,n), tetapi jika n ≠ 0 lanjutkan ke langkah 2.

(ii) Bagilah m dengan n dan misalkan r adalah sisanya.

(iii) Ganti nilai m dengan nilai n dan nilai n dengan nilai r, allu ulang kembali

kelangkah 1.

Kelipatan persekutuan terkecil (KPK) dari dua bilangan adalah bilangan bulat positif

terkecil yang dapat dibagi habis oleh kedua bilangan itu. Bisa juga dikatakan hasil kali

semua faktor bilangan prima dengan pangkat yang terbesar. Untuk menentukan nilai KPK

yaitu menggunakan factor persekutuan.

B. Langkah Praktikum :

1. Tahapan melaksanakan Praktikum

a. Ketikkan program2.1 di bawah ini !

1. #include

2. #include

3. main()

4. {

5. clrscr();

6. int a,b,c,d;

7. int p;

8. int faktor1,faktor2,kpk,fpb;

9. cout<<”Masukan Pilihan anda ?\n”;

10. cout<<”1. Menentukan KPK\n”; 11. cout<<”2. Menentukan FPB\n”; 12. cout<<”3. Exit\n”;

Page 13: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

8

13. cin>>p; 14. switch (p)

15. { 16. case 1:

17. cout<<”Menghitung KPK\n”; 18. cout<<”Masukan Bilangan Pertama : \n”; 19. cin>>a; 20. cout<<”Masukan Bilangan Kedua : \n”; 21. cin>>b; 22. if (a>b) [1]

23. if (a%b) 24. { 25. for(c=0;c<=a;c++) 26. { 27. if(a%c); 28. //lanjutkan 29. else 30. faktor1=c; [2]

31. } 32. for(d=0;d<=b;d++)

33. { 34. b%d; 35. if (b%d); 36. //lanjutkan 37. else 38. faktor2=d; 39. } 40. } 41. else 42. kpk=a; [3]

43. else 44. if (b%a) 45. { 46. for(d=0;d<=a;d++) 47. { 48. if(b%d); 49. //lanjutkan 50. else 51. faktor1=d; 52. } 53. for(c=0;c<=b;c++) 54. { 55. if (a%c);

56. //lanjutkan 57. else 58. faktor2=c; 59. } 60. } 61. else 62. kpk=b; [4]

63. fpb=faktor1*faktor2; 64. cout<<”Bilangan pertama :”<< 65. cout<<”Bilangan kedua :”<< 66. cout<<”KPK :”<< 67. break;

68. case 2: 69. cout<<”Menghitung FPB\n”; 70. cout<<”Masukan Bilangan pertama : \n”; 71. cin>>a; 72. cout<<”Masukan bilangan kedua : \n”; 73. cin>>b; 74. if (a 75. if (b%a) 76. { 77. for(c=0;c>=a;c–) 78. { 79. if(c%a); 80. //lanjutkan 81. else 82. faktor1=c;

Page 14: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

9

83. } 84. for(d=0;d>=b;d–) 85. { 86. b%d; 87. if (d%b); 88. //lanjutkan 89. else 90. faktor2=d; 91. } 92. } 93. else 94. fpb=a; [5]

95. else 96. if (a%b) 97. { 98. for(d=0;d>=a;d–) 99. { 100. if(d%b);

101. //lanjutkan

102. else

103. faktor2=d;

104. }

105. for(c=0;c>=b;c–)

106. {

107. if (c%a);

108. //lanjutkan

109. else

110. faktor1=c;

111. }

112. }

113. else

114. fpb=b;

fpb=faktor1*faktor2;

115. cout<<”Bilangan pertama :”<<

116. cout<<”Bilangan kedua :”<<

117. cout<<”FPB :”<<

118. break;

119. case 3:

120. cout<<”Exit Now !!!\n”;

121. break;

122. default:

123. cout<<”Error !!!”;

124. }

125. getch();

126. return 0;

127. }

C. Evaluasi (Soal Postest )

1. Jelaskan langakah kerja blok program 2.1 sesuai dari no {1,2,3,4,5}

2. Simpan program 2.1 menjadi Program 2.2, diubah sebagai berikut. Analisa hasil

eksekusi program2.2 dan jelaskan perbedaan dengan program 2.1 :

Page 15: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

10

D. Format Lembar Jawab

1. Penjelesan Blok program 2.1

Blok 1 :

Blok 2 :

Blok 3 :

Blok 4 :

Blok 5 :

2. Analisa perbedaan hasil program2.2

Nilai

Yogyakarta,

………………………………………….

Paraf asisten

<……………………………………>

Jawaban Postest

E. Referensi

1. Modul Kuliah Matematika Diskrit , Tedy Setiadi, 2006

2. Doerr Alan, Kenneth Levasseur, Applied Discrete Structures for Com[uter Science,

Science Research Asociates, Inc. Toronto, 1985

3. Munior, Rinaldi, Matematika Diskritn edisi ke 2, Penerbit Informatika Bandung,

2001

Page 16: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

11

Pertemuan III

Aplikasi Bilangan Bulat

Pertemuan ke : 3

Alokasi Waktu : 1,5 Jam

Kompetensi Dasar : Mahasiswa mampu mengembangkan program yang terkait dengan

contoh penerapan aritmatika modulo pada kriptografi

Indikator : Praktikan mampu membuat program untuk penyelesaian persoalan

terkait

1. Uji Bilangan Prima

2. Algoritma modifikasi Caesar Chiper

A. Teori Pendukung

Bilangan Prima adalah bilangan bulat positif P(P > 1) yang hanya habis di bagi

dengan 1 dan bilangan itu sendiri. Cara menguji suatu bilangan n apakah prima atau

bukan

(i) bagi n dengan sejumlah bilangan prima, mulai dari 2, 3, … , bilangan prima n.

(ii) Jika n habis dibagi dengan salah satu dari bilangan prima tersebut, maka n adalah

bilangan komposit,

(ii) tetapi jika n tidak habis dibagi oleh semua bilangan prima tersebut, maka n adalah

bilangan prima.

Kriptografi adalah ilmu sekaligus seni untuk menjaga kerahasiaan pesan (data atau

informasi) dengan cara menyamarkannya (to crypt artinya menyamar) menjadi bentuk

yang tidak dapat dimengerti. Tujuan penyandian adalah agar isi pesan tidak dapat

dimengerti oleh orang yang tidak berhak.

Beberapa terminologi dasar dalam kriptografi:

Plainteks (plaintext atau cleartext, artinya teks jelas yang dapat dimengerti): pesan yang

dirahasiakan.

1. Chiperteks (chipertext atau cryptogram, artinya teks tersandi): pesan hasil

penyandian.

2. Enkripsi (encryption atau enchipering): proses penyandian dari plainteks ke

chiperteks.

3. Dekripsi (decryption atau dechipering): proses pembalikan dari chiperteks ke

plainteks

Page 17: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

12

Contoh:

plainteks: uang disimpan di balik buku X

chiperteks: j&kloP(d$gkhtpuBn%6^klp..t@8^

4. Algoritma kriptografi (atau chiper):

Notasi Matematis

Misalkan: C = chiperteks ,P = plainteks maka fungsi enkripsi E memetakan P ke C, E(P)

= C, dan Fungsi dekripsi D memetakan C ke P, D(C) = P

Caesar Cipher

Adalah algortima dengan mensubsitusi karater dengan karakter yang lain.

Tabel substitusi:

pi : A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

ci : D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

Dengan mengkodekan setiap huruf abjad dengan integer sebagai berikut: A = 0, B = 1,

…, Z = 25, maka secara matematis caesar chiper menyandikan plainteks pi menjadi ci

dengan aturan:

ci = E(pi) = (pi + 3) mod 26

dan dekripsi chiperteks ci menjadi pi dengan aturan: pi = D(ci) = (ci – 3) mod 26

B. Langkah Praktikum :

1. Ketikkan dan jalankan program3.1 bilangan prima di bawah ini !

#include <iostream.h>

#include <conio.h>

void main()

{

int x,a,b;

char i;

{

b=1;

i1:clrscr();

cout<<"PROGRAM UNTUK MEMERIKSA BILANGAN PRIMA"<<endl<<endl;

cout <<"Masukan Bilangan Untuk Di Cek : ";

cin>>x;

cout<<endl; [1]

for (a=2;a<=x-1;a++)

{

if (x%a==0)

{

b=0;

break;

}

}

if (b==1)

{

cout<<x<<" merupakan Bilangan Prima";

Page 18: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

13

}

else

{

cout<<x<<" bukan merupakan Bilangan Prima";

}

if(b==0)

cout<<endl;

cout<<endl;

cout<<endl;

cout<<"Ulangi (y/n) ? ";

cin>>i;

if(i=='y') [2]

goto i1;

else

cout<<"Terima Kasih";

}

}

Tampilan hasil program di atas adalah sebagai berikut, edit dan cobalah dengan

beberapa data yang berbeda!

2. Ketikkan dan jalankan program3.2 Caesar cipher berikut ini!

#include <cstdlib>

#include <iostream>

#include <string.h>

#define maks 500

using namespace std;

class Enkripsi{

public:

Enkripsi();

void enkripsi();

void deskripsi();

void output();

private:

char chiper[maks];

int key;

char plain[maks];

};

Enkripsi::Enkripsi(){

cout<<”Masukkan kata : “;

cin.getline(chiper,sizeof(chiper)); [3]

cout<<”Masukkan key : “;

cin>>key;

cout<<endl;

}

Page 19: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

14

void Enkripsi::enkripsi(){

for(int i=0;i<strlen(chiper);i+=1){ [4]

cout<<chiper[i]<<”(“<<int(chiper[i])<<”) “;

chiper[i] = (chiper[i]+key)%128;

}

}

void Enkripsi::deskripsi(){

for(int i=0;i<strlen(chiper);i+=1){ [5]

plain[i] = (chiper[i]-key)%128;

chiper[i] = plain[i];

}

}

void Enkripsi::output(){

for(int i=0;i<strlen(chiper);i+=1){

cout<<chiper[i];

}

}

int main(int argc, char *argv[])

{

Enkripsi Deskripsi;

Deskripsi.enkripsi();

cout<<”\n\nSetelah diEnkripsi : “;

Deskripsi.output();

Deskripsi.deskripsi();

cout<<”\n\nKembali diDeskripsi : “;

Deskripsi.output();

cout<<endl<<endl;

system(“PAUSE”);

return EXIT_SUCCESS;

}

Tampilan hasil program di atas adalah sebagai berikut, cobalah dengan beberapa data

yang berbeda!

Page 20: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

15

C. Evaluasi (Soal Postest )

1. Jelaskan langkah kerja blok program 3.1 dan 3.2 sesuai dari no {1,2,3,4,5}

2. Simpan berikut dengan nama file program3.3. Analisa hasil eksekusi program3.3:

#include <iostream>

#include <conio>

main(){

int input,hitung=0,i=1,b=2;

cout<<"Inputkan Angka = ";cin>>input;

if (b==2)

{cout<<b<<" ";

b++;

i++;}

while (i<=input)

{

for (int z=2;z<b;z++)

{

if (b%z==0)

{hitung++;}

}

if (hitung==0)

{cout<<b<<" ";

i++;

b++;}

if (hitung>0)

{b++;

hitung=0;}

}

getch();

}

D. Format Lembar Jawaban

1. Penjelesan Blok program 3.1 sampai 3.2

Blok 1 :

Blok 2 :

Blok 3 :

Blok 4 :

Blok 5 :

2. Analisa hasil program3.3

Page 21: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

16

Nilai

Yogyakarta,

………………………………………….

Paraf asisten

<……………………………………>

Jawaban Postest

E. Referensi

1. Modul Kuliah Matematika Diskrit , Tedy Setiadi, 2006

2. Doerr Alan, Kenneth Levasseur, Applied Discrete Structures for Com[uter Science,

Science Research Asociates, Inc. Toronto, 1985

3. Munior, Rinaldi, Matematika Diskrit edisi ke 2, Penerbit Informatika Bandung, 2001

Page 22: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

17

Pertemuan IV

Relasi

Pertemuan ke : 4

Alokasi Waktu : 1,5 Jam

Kompetensi Dasar : Mahasiswa mampu mengembangkan program yang terkait dengan relasi

Indikator : Praktikan mampu membuat program untuk penyelesaian persoalan

terkait relasi

A. Teori Pendukung

Pengertian Relasi

1. Relasi biner R antara himpunan A dan B adalah himpunan bagian dari A B, R (A

B).

2. a R b adalah notasi untuk (a, b) R, yang artinya a direlasikan dengan b oleh R

3. a R b adalah notasi untuk (a, b) R, yang artinya a tidak direlasikan oleh b pada

relasi R.

4. Himpunan A disebut daerah asal (domain) dari R, dan himpunan B disebut daerah

hasil (range) dari R.

Contoh 1.

Misalkan

A = {Amir, Budi, Dewi}, B = {IF221, IF251, IF342, IF323}

A B = {(Amir, IF221), (Amir, IF251), (Amir, IF342),

(Amir, IF323), (Budi, IF221), (Budi, IF251),

(Budi, IF342), (Budi, IF323), (Dewi, IF221),

(Dewi, IF251), (Dewi, IF342), (Dewi, IF323) }

Misalkan R adalah relasi yang menyatakan mata kuliah yang diambil oleh mahasiswa

pada Semester Ganjil, yaitu

R = {(Amir, IF251), (Amir, IF323), (Budi, IF221),

(Budi, IF251), (Dewi, IF323) }

- Dapat dilihat bahwa R (A B),

- A adalah daerah asal R, dan B adalah daerah hasil R.

- (Dewi, IF251) R atau Dewi R IF251

- (Amir, IF342) R atau Amir R IF342.

Page 23: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

18

Contoh 2.

Misalkan P = {2, 3, 4} dan Q = {2, 4, 8, 10, 12}. Jika kita definisikan relasi R dari P ke Q

dengan

(p, q) R jika p habis membagi q

maka kita peroleh

R = {(2, 2), (2, 4), (2, 8), (2,10), (4, 4), (4, 8), (3, 12) }

Relasi pada sebuah himpunan adalah relasi yang khusus

Relasi pada himpunan A adalah relasi dari A A.

Relasi pada himpunan A adalah himpunan bagian dari A A.

Representasi Relasi

Dengan Diagram Panah

Amir

Budi

Cecep

IF221

IF251

IF342

IF323

2

3

4

2

4

8

9

15

2

3

4

8

9

2

3

4

8

9

AB

P

QA A

Dengan Tabel

Kolom pertama tabel menyatakan daerah asal, sedangkan kolom kedua menyatakan

daerah hasil.

Tabel 1 Tabel 2 Tabel 3

A B P Q A A

Amir IF251 2 2 2 2

Amir IF323 2 4 2 4

Budi IF221 4 4 2 8

Budi IF251 2 8 3 3

Dewi IF323 4 8 3 3

3 9

3 15

B. Langkah Praktikum

1. Ketikkan dan jalankan program4.1 relasi di bawah ini!

#include <iostream>

using namespace std;

int main() {

string a[] = {"changmin", "jaejoong"};

string b[] = {"f8291", "n4810", "b0637"};

int c[] = {2, 3, 4};

int d[] = {2, 4, 8, 10, 12};

Page 24: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

19

cout << "Hasil penggabungan a dan b : { " << endl;

for(int i=0; i<2;) { [1]

for(int j=0; j<3; j++) {

cout << "(" + a[i] + "," + b[j] + ")";

}

i++;

}

cout << "}" << endl;

cout << "Hasil himpunan c habis membagi d : \n{";

for(int k=0; k<3;) { [2]

for(int l=0; l<5; l++) {

if(d[l] % c[k] == 0) {

cout << "(" << c[k] << ", " << d[l] << "), ";

}

}

k++;

}

cout << "}" << endl;

system ("pause");

return 0;

}

Tampilan hasil program di atas adalah sebagai berikut, cobalah dengan beberapa data

yang berbeda!

C. Evaluasi (Soal Postest)

1. Jelaskan langkah blok program4.1. sesuai nomor {1,2}

2. Simpan program berikut dengan nama program 4.2, jelaskan perbedaan dari

program4.1 dan program 4.2:

#include <iostream>

using namespace std;

int main() {

string a[2];

string b[3];

int c[3];

int d[5];

cout << "Masukkan himpunan a (2) : \n";

Page 25: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

20

for(int n=0; n<2; n++) {

cin >> a[n];

}

cout << "Masukkan himpunan b (3) : \n";

for(int m=0; m<3; m++) {

cin >> b[m];

}

cout << "Hasil penggabungan a dan b : { " << endl;

for(int i=0; i<2;) {

for(int j=0; j<3; j++) {

cout << "(" + a[i] + "," + b[j] + ")";

}

i++;

}

cout << "}" << endl;

cout << "\nMasukkan anggota himpunan c (angka) : \n" ;

for(int x=0; x<3; x++) {

cin >> c[x];

}

cout << "Masukkan anggota himpunan d (angka) : \n";

for(int y=0; y<5; y++) {

cin >> d[y];

}

cout << "Hasil himpunan c habis membagi d : {";

for(int k=0; k<3;) {

for(int l=0; l<5; l++) {

if(d[l] % c[k] == 0) {

cout << "(" << c[k] << ", " << d[l] << "), ";

}

}

k++;

}

cout << "}" << endl;

system("PAUSE");

return EXIT_SUCCESS;

}

Tampilan hasil program di atas adalah sebagai berikut, cobalah dengan beberapa data

yang berbeda!

Page 26: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

21

3. Buat program baru dengan nama program4.3 , dengan ketentuan

Input A, B, C

Output A habis dibagi B

B habis dibagi A

C habis dibagi B

D. Format Lembar Jawaban

1. Penjelesan Blok program 4.1

Blok 1 :

Blok 2 :

2. Analisa hasil program4.2.

3. Tampilan hasil program 4.3.

Nilai

Yogyakarta,

………………………………………….

Paraf asisten

<……………………………………>

Jawaban Postest

E. Referensi

1. Modul Kuliah Matematika Diskrit , Tedy Setiadi, 2006

2. Doerr Alan, Kenneth Levasseur, Applied Discrete Structures for Com[uter Science,

Science Research Asociates, Inc. Toronto, 1985

3. Munior, Rinaldi, Matematika Diskritn edisi ke 2, Penerbit Informatika Bandung,

2001

Page 27: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

22

Pertemuan V

Matrik

Pertemuan ke : 5

Alokasi Waktu : 1,5 Jam

Kompetensi Dasar : Mahasiswa mampu mengembangkan program yang terkait dengan

contoh penerapan matrik

Indikator : Praktikan mampu membuat program untuk penyelesaian persoalan

terkait matrik

A. Teori Pendukung

Matriks

Matriks adalah adalah susunan skalar elemen-elemen dalam bentuk baris dan kolom.

Matriks A yang berukuran dari m baris dan n kolom (m n) adalah:

mnmm

n

n

aaa

aaa

aaa

A

21

22221

11211

Matriks simetri adalah matriks yang aij = aji untuk setiap i dan j.

Di bawah ini adalah contoh matriks simetri.

8234

2076

3736

4662

Matriks zero-one (0/1) adalah matriks yang setiap elemennya hanya bernilai 0 atau 1.

B. Langkah Praktikum

1. Ketikkan dan jalankan program5.1 di bawah ini:

#include<iostream.h>

#include <conio.h>

#include <iomanip.h>

int i, j, k, baris, kolom, m1[10]

[10], m2[10]

[10], hasil[10]

[10];

void main()

{

clrscr();

cout << "Operasi pertambahan Matrix\n";

do

{

cout << "Jumlah Baris = "; cin>>baris;

cout << "Jumlah Kolom = "; cin>>kolom;

}

Page 28: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

23

while((baris>10)||(kolom>10)); [1]

/* do

while(kolom>10);*/

cout << "\nMatrix A" << endl;

for(i=0;i<baris;i++)

for(j=0;j<kolom;j++)

{

cout <<"data [" << i << "," << j << "] = ";

cin>>m1[i][j];

}

cout << "\nMatrix B" << endl;

for(i=0;i<baris;i++)

for(j=0;j<kolom;j++)

{

cout <<"data [" << i << "," << j << "] = "; [2]

cin>>m2[i][j];

}

for(i=0; i<baris;i++)

for(j=0; j<kolom; j++)

{

hasil[i][j]=0;

}

for (k=0;k<3;k++)

hasil[i][j] = hasil[i][j]+ m1[i][j] * m2[i][j]; [3]

cout << "\nHasilnya..." << endl;

cout << "Matrix A + Matrix B = Matrix C";

for(i=0; i< baris; i++)

{

cout<<'\n';

for(j=0; j<kolom; j++)

cout << setw(4) << m1[i][j]; [4]

cout << " ";

for(j=0; j<kolom; j++)

cout << setw(4) << m2[i][j];

cout << " ";

for(j=0; j<kolom; j++)

cout << setw(4) << hasil[i][j];

cout << endl;

}

getch();

}

Tampilan hasil program di atas adalah sebagai berikut, cobalah dengan beberapa data

yang berbeda!

Page 29: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

24

C. Evaluasi

1. Soal Postest

a. Tuliskan komentar yang sesuai blok dari no {1,2,3,4} yang pada program di atas

b. Buatlah program pengurangan dan penjumlahan matriks

c. Lengkapi dan Jalankan program transpose matriks berikut ini (take home)

#include <cstdlib>

#include <iostream>

using namespace std;

int main(int argc, char *argv[])

{

cout<<endl<<"Transpose Matriks:

"<<endl<<endl;

for(i=0;i<m;i++)

{

for(j=0;j<n;j++)

{

cout<<a[j][i]<<"

";

}

cout<<endl<<endl;

}

system("PAUSE");

return EXIT_SUCCESS;

}

Tampilan hasil program seperti dibawah ini, cobalah dengan beberapa data :

Page 30: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

25

Nilai

Yogyakarta,

………………………………………….

Paraf asisten

<……………………………………>

Jawaban Postest

D. Referensi

1. Modul Kuliah Matematika Diskrit , Tedy Setiadi, 2006

2. Doerr Alan, Kenneth Levasseur, Applied Discrete Structures for Com[uter Science

Science Research Asociates, Inc. Toronto, 1985

3. Munior, Rinaldi, Matematika Diskritn edisi ke 2, Penerbit Informatika Bandung,

2001

Page 31: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

26

Pertemuan VI

Fungsi

Pertemuan ke : 6

Alokasi Waktu : 1,5 Jam

Kompetensi Dasar : Mahasiswa mampu mengembangkan program yang terkait dengan

contoh penerapan fungsi absolute dan fungsi iteratif

Indikator : Praktikan mampu membuat program untuk penyelesaian persoalan terkait

dengan fungsi absolute dan fungsi iteratif

A. Teori Pendukung

Fungsi

Misalkan A dan B himpunan.

Relasi biner f dari A ke B merupakan suatu fungsi jika setiap elemen di dalam A

dihubungkan dengan tepat satu elemen di dalam B.

Jika f adalah fungsi dari A ke B kita menuliskan

f : A B

yang artinya f memetakan A ke B

Fungsi dapat dispesifikasikan dalam berbagai bentuk, diantaranya:

1. Himpunan pasangan terurut Seperti pada relasi.

2. Formula pengisian nilai (assignment).

Contoh: f(x) = 2x + 10, f(x) = x2, dan f(x) = 1/x.

3. Kata-kata

Contoh: “f adalah fungsi yang memetakan jumlah bit 1 di dalam suatu string

biner”.

4. Kode program (source code)

Contoh: Fungsi menghitung |x|

function abs(x:integer):integer;

begin

if x < 0 then

abs:=-x

else

abs:=x;

end;

Page 32: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

27

B. Langkah Praktikum :

1. Ketikkan dan jalankan program 6.1 berikut ini :

class hitung

{

public:

int proses();

void input();

private:

int n;

float rumus,jumlah,total;

};

void hitung::input()

{

cin>>n; [1]

cout<<endl;

}

int hitung::proses()

{

jumlah=0; [2]

total=0;

rumus=-1;

for(int j=1; j<=n; j++)

{

rumus=(rumus*(-1));

total=rumus/j;

jumlah+=total;

if(j==1)

cout<<"("<<total<<")";

if(j>1)

cout<<"+("<<total<<")";

}

cout<<endl<<endl<<"hasil penjumlahan deret = "<<jumlah;

return jumlah;

}

int main()

{

cout<<"program sederhana menghitung jumlah dari rumus 1-

(1/2)+(1/3)-(1/4)+...+(1/n)"<<endl<<endl;

cout<<"tentukan nilai n : ";

hitung deret;

deret.input();

deret.proses();

return 0;

}

Page 33: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

28

Tampilan hasil program6.1 adalah sebagai berikut, cobalah dengan beberapa data

yang berbeda!

C. Evaluasi

1. Soal Postest

a. Tuliskan langkah program yang sesuai blok dari no {1,2} yang pada program di

atas

b. Modifikasi program di atas menjadi program yang dinamis, simpan dengan nama

program 6.2.

c. Membuat program6.3 menghitung faktorial Jika n = 6 , maka n faktorial (n!) = n x (n-

1)! atau lengkapnya = 6 x 5 x 4 x 3 x 2 x 1

Fungsi sebagai berikut :

int faktorial(int n){

int i;

int hasil=1; //penampung sementara

for(i=n;i>=1;--i){

hasil =hasil * i;

}

}

Nilai

Yogyakarta,

………………………………………….

Paraf asisten

<……………………………………>

Jawaban Postest

Page 34: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

29

D. Referensi

1. Modul Kuliah Matematika Diskrit , Tedy Setiadi, 2006

2. Doerr Alan, Kenneth Levasseur, Applied Discrete Structures for Com[uter Science,

Science Research Asociates, Inc. Toronto, 1985

3. Munior, Rinaldi, Matematika Diskritn edisi ke 2, Penerbit Informatika Bandung, 2001

Page 35: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

30

Pertemuan VII

Fungsi dan Komposisi Dua Fungsi

Pertemuan ke : 7

Alokasi Waktu : 1,5 Jam

Kompetensi Dasar : Mahasiswa mampu mengembangkan program yang terkait dengan

contoh penerapan fungsi rekursif

Indikator : Praktikan mampu membuat program untuk penyelesaian persoalan terkait

dengan fungsi rekursif

A. Teori Pendukung

Fungsi

Misalkan A dan B himpunan.

Relasi biner f dari A ke B merupakan suatu fungsi jika setiap elemen di dalam A

dihubungkan dengan tepat satu elemen di dalam B.

Jika f adalah fungsi dari A ke B kita menuliskan

f : A B

yang artinya f memetakan A ke B

Fungsi Rekursif

Fungsi f dikatakan fungsi rekursif jika definisi fungsinya mengacu pada dirinya sendiri.

Contoh:

n! = 1 2 … (n – 1) n = (n – 1)! n.

0,)!1(

0,1!

nnn

nn

Fungsi rekursif disusun oleh dua bagian:

(a) Basis

Bagian yang berisi nilai awal yang tidak mengacu pada dirinya sendiri. Bagian ini

juga sekaligus menghentikan definisi rekursif.

(b) Rekurens

Bagian ini mendefinisikan argumen fungsi dalam terminologi dirinya sendiri. Setiap

kali fungsi mengacu pada dirinya sendiri, argumen dari fungsi harus lebih dekat ke

nilai awal (basis).

Page 36: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

31

Komposisi dari dua buah fungsi.

Misalkan g adalah fungsi dari himpunan A ke himpunan B, dan f adalah fungsi dari

himpunan B ke himpunan C. Komposisi f dan g, dinotasikan dengan f g, adalah fungsi

dari A ke C yang didefinisikan oleh

(f g)(a) = f(g(a))

B. Langkah Praktikum :

1. Diberikan program7.1 mengubah angka absolute berikut ini:

#include < iostream.h >

double Absolut ( double X ) [1]

main()

{

float Nilai;

Nilai = -123.45;

cout << Nilai << “Nilai mutlaknya adalah “ << Absolut (

Nilai );

}

/* --- Fungsi untuk memutlakkan nilai negatif --- */

double Absolut ( double X )/* definisi fungsi */

{

if ( X < 0 ) X = -X;

return ( X );

}

2. Di berikan program7.2 factorial di bawah ini :

#include < stdio.h >

long int Fak_Rekursif ( int N ); [2]

main()

{

int N ;

N = 5;

printf(“%d faktorial = %ld\n”, N, Fak_Rekursif(N));

}

long int Fak_Rekursif ( int N )

{

long int F;

if ( N <= 1 ) return( 1 ) ;

else

{

Page 37: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

32

F = N * Fak_Rekursif( N – 1); [3]

return(F);

}

}

3. Diberikan program7.3 komposisi dua fungsi

#include <iostream>

#include <string>

using namespace std;

/* run this program using the console pauser or add your own getch,

system("pause") or input loop */

int main(int argc, char *argv[]) {

int jumlah;

string f[100][100];

string g[100][100];

cout<<"masukan jumlah f(x) : ";

cin>>jumlah;

cout<<"masukan fungsi f -> x"<<endl;

for(int i=1;i<=jumlah;i++){

cout<<"f(x):";

cin>>f[0][i];

cout<<"x:";

cin>>f[i][0];

}

cout<<"masukan fungsi g -> x"<<endl;

for(int i=1;i<=jumlah;i++){

cout<<"g(x):";

cin>>g[0][i]; [4]

cout<<"x:";

cin>>g[i][0];

}

cout<<"f(x)={";

for(int i=1;i<=jumlah;i++){

cout<<"("<<f[0][i]<<","<<f[i][0]<<"),";

}

cout<<"}"<<endl<<"g(x)={";

for(int i=1;i<=jumlah;i++){

cout<<"("<<g[0][i]<<","<<g[i][0]<<"),";

}

cout<<"}"<<endl<<"fog(x)={";

for(int i=1;i<=jumlah;i++){

for(int j=1;j<=jumlah;j++){

if(f[i][0]==g[0][j]){ [5]

cout<<"("<<f[0][i]<<","<<g[j][0]<<"),";

}

}

}

cout<<"}"<<endl;

return 0;

}

E. Evaluasi

1. Soal Postest

a. Tuliskan langkah program yang sesuai dari no {1,2,3,4,5} yang pada program7.1

sampai 7.3

b. Lengkapi Program7.4 fungsi dibawah ini dibawah ini :

1. int fibonacci(int x, int y,int z) 2. { 3. int result=0; 4. int count=1; 5. x=0;

Page 38: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

33

6. y=1; 7. printf(" %d ",y); 8. for(count=1;count<=z-1;count++) 9. { 10. result=x+y;

11. printf(" %d ",result);

12. x=y;

13. y=result;

14. }

15. return result;

16. }

Nilai

Yogyakarta,

………………………………………….

Paraf asisten

<……………………………………>

Jawaban Postest

C. Referensi

1. Modul Kuliah Matematika Diskrit , Tedy Setiadi, 2006

2. Doerr Alan, Kenneth Levasseur, Applied Discrete Structures for Com[uter Science,

Science Research Asociates, Inc. Toronto, 1985

3. Munior, Rinaldi, Matematika Diskritn edisi ke 2, Penerbit Informatika Bandung,

2001

Page 39: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

34

Pertemuan VIII

Kombinatorik

Pertemuan ke : 8

Alokasi Waktu : 1,5 Jam

Kompetensi Dasar : Mahasiswa mampu mengembangkan program yang terkait dengan

contoh dasar kombinasi dan permutasi

Indikator : Praktikan mampu membuat program untuk penyelesaian persoalan

terkait

1. Kombinasi

2. Permutasi

A. Teori Pendukung

Kombinasi

Bentuk khusus dari permutasi adalah kombinasi. Jika pada permutasi urutan kemunculan

diperhitungkan, maka pada kombinasi, urutan kemunculan diabaikan.

Misalkan ada 2 buah bola yang warnanya sama 3 buah kotak. Setiap kotak hanya boleh

berisi paling banyak 1 bola.

Jumlah cara memasukkan bola ke dalam kotak

2

)2)(3(

!2

!1

!3

!2

)2,3(

2

)2,3(

PP= 3.

a b

1 2 3

sama

b a

1 2 3

a b

1 2 3 hanya 3 cara

sama

b a

1 2 3

a b

1 2 3

sama

b a

1 2 3

Page 40: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

35

Permutasi

Misalkan: ada n buah bola yang tidak seluruhnya berbeda warna (jadi, ada beberapa bola

yang warnanya sama - indistinguishable).

n1 bola diantaranya berwarna 1,

n2 bola diantaranya berwarna 2,

nk bola diantaranya berwarna k,

dan n1 + n2 + … + nk = n.

Berapa jumlah cara pengaturan n buah bola ke dalam kotak-kotak tersebut (tiap kotak

maks. 1 buah bola)?

Jika n buah bola itu kita anggap berbeda semuanya, maka jumlah cara pengaturan n buah

bola ke dalam n buah kotak adalah:

P(n, n) = n!.

Dari pengaturan n buah bola itu,

ada n1! cara memasukkan bola berwarna 1

ada n2! cara memasukkan bola berwarna 2

ada nk! cara memasukkan bola berwarna k

Permutasi n buah bola yang mana n1 diantaranya berwarna 1, n2 bola berwarna 2, …, nk

bola berwarna k adalah:

!!...!

!

!!...!

),(),...,,;(

2121

21

kk

k

nnn

n

nnn

nnPnnnnP

B. Langkah Praktikum

1. Ketikkan program8.1 dibawah ini!

#include <cstdlib>

#include <iostream>

using namespace std;

class Madis{ //deklarasi kelas

public:

void pilih(); //pendeklarasian fungsi pilihan

void permutasi(); //pendeklarasian fungsi permutasi

void kombinasi(); //pendeklarasian fungsi kombinasi

private:

int q[100];

};

Page 41: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

36

void Madis::pilih(){

int n;

cout<<"\n1. Permutasi\n2. kombinasi";

cout<<"\n\npilihan anda : ";

cin>>n;

if(n==1)permutasi();

if(n==2)kombinasi();

else cout<<"\n\n***selesai***\n\n";

}

void Madis::permutasi(){

// system("cls");

int n,N,k,K,p;

cout<<"\nMasukkan nilai n=";cin>>n;

cout<<"Masukkan nilai r=";cin>>k;

if(k>n){cout<<"\nNilai r harus kutang dari [1]

n";permutasi();}

p=n-k;

N=fak(n);K=fak(p);

cout<<"\nMaka hasil permutasi : "<<N/K;

cout<<"\n\n";pilih();

}

void Madis::kombinasi(){

// system("cls");

int n,N=1,k,K=1,p,P=1;

cout<<"\nMasukkan nilai n=";cin>>n;

cout<<"Masukkan nilai r=";cin>>k;

if(k>n){cout<<"\nNilai r harus kutang dari [2]

n";permutasi();}

p=n-k;N=fak(n);K=fak(k);cout<<"\n(n-r)!-> ";P=fak(p);

cout<<"\nMaka hasil kombinasi : "<<N/(K*P); [3]

cout<<"\n\n";pilih();

}

int main(int argc, char *argv[]) //fungsi main

{

Madis z;

z.pilih();

system("PAUSE");

return EXIT_SUCCESS;

}

Page 42: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

37

C. Evaluasi

1. Mengerjakan posttest:

a. Tuliskan langkah kerja yang sesuai dari no {1,2,3} yang ada pada program8.1

b. Modifikasi program8.1 permutasi dan kombinasi dengan menggunakan fungsi

c. Buat lah program8.2 tentang perkalian 2 bilangan dengan hasil eksekusi aplikasi

sebagai berikut :

Nilai

Yogyakarta,

………………………………………….

Paraf asisten

<……………………………………>

Jawaban Postest

D. Referensi

1. Modul Kuliah Matematika Diskrit , Tedy Setiadi, 2006

2. Doerr Alan, Kenneth Levasseur, Applied Discrete Structures for Com[uter Science,

Science Research Asociates, Inc. Toronto, 1985

3. Munior, Rinaldi, Matematika Diskritn edisi ke 2, Penerbit Informatika Bandung,

2001

Page 43: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

38

Pertemuan IX

Penerapan Kombinatorik

Pertemuan ke : 9

Alokasi Waktu : 1,5 Jam

Kompetensi Dasar : Mahasiswa mampu mengembangkan program yang terkait dengan

contoh penerapan kombinatorik

Indikator : Praktikan mampu membuat program untuk penyelesaian persoalan

terkait pembangkitan permutasi

A. Teori Pendukung

Pembangkitan Permutasi

Permutasi { 1, 2,….…, n } dapat dibuat dari

permutasi { 1, 2,…. , n-1 }

1234

1243

123 1423

4123

4132

1432

12 132 1342

1324

3124

3142

312 3412

4312

1

4321

3421

321 3241

3214

Page 44: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

39

2314

2341

21 231 2431

4231

4213

2413

213 2143

2134

Sifat sifat :

a. Semua permutasi muncul sehingga pembangkitan lengkap

b. Suatu permutasi didapat dari permutasi sebelumnya dengan menukar dua elemen

bersebelahan.

Urutan permutasi yang sama dapat dibangkitkan secara iterative :

a. Permutasi awal 1 2 3 …….. n

b. Tiap elemen punya arah gerak, diam (0) , kanan ( → ), kiri( ← )

c. Pada awalnya arah gerak 1 diam dan elemen lain kiri

1. Selalu diusahakan menggerakkan elemen terbesar

2. Suatu elemen digerakkan sampai ujung atau bertemu elemen yang lebih besar

3. Jika suatu elemen tidak dapat digerakkan lagi maka arah gerakan dibalik lalu coba

gerakkan elemen berikut yang lebih kecil. Kembali ke langkah 1.

Contoh dengan mengambil n = 4

Elemen yang bergerak permutasi arah gerak

1 2 3 4 0 ← ← ←

4 1 2 4 3

4 1 4 2 3

4 4 1 2 3

4 ( 4 sampai ujung ) 0 ← ← →

3 4 1 3 2

4 1 4 3 2

4 1 3 4 2

4 1 3 2 4

4 ( 4 sampai ujung ) 0 ← ← ←

3 3 1 2 4

4 3 1 4 2

4 3 4 1 2

4 4 3 1 2

4 ( 4 sampai ujung ) 0 ← ← →

Page 45: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

40

3 ( 3 ketemu 4 ) 0 ← → →

2 4 3 2 1

4 3 4 2 1

4 3 2 4 1

4 3 2 1 4

4 ( 4 sampai ujung ) 0 ← → ←

3 2 3 1 4

4 2 3 4 1

4 2 4 3 1

4 4 2 3 1

4 ( 4 sampai ujung ) 0 ← → ←

3 4 2 1 3

4 2 4 1 3

4 2 1 4 3

4 2 1 3 4

4 ( 4 sampai ujung ) 3 ( 3 ketemu 4 )

2 ( 2 sampai ujung ) 1 arah gerak = 0 stop.

B. Langkah Praktikum :

Diberikan program9.1 seperti di bawah ini:

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

int hasil;

// fungsi faktorial :

int faktorial (int nilai)

{

hasil = nilai; [1]

while (nilai > 1)

{

hasil = hasil * (nilai-1);

nilai = nilai - 1;

}

return hasil;

}

main()

{

int p, nq, max, x, i, j, n, k, r, s, tr, no;

int a[100];

div_t xx; [2]

for (i=0;i<100;i++)

{

a[i] = 0;

}

//Tampilan pembuka

printf("--------------------------\nPROGRAM GENERATE

PERMUTASI\n\n");

printf(" Oleh Rahmi N.\n");

printf("--------------------------\n");

Page 46: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

41

//input nilai n (jumlah data <maksimal 100>)

printf("Masukkan nilai n : ");

scanf("%d",&n);

//input data ke dalam array

for (i=1;i<=n;i++) // ulangi untuk semua data

hingga data ke-n

{

printf("masukkan nilai himpunan a[%d] : ", i);

scanf("%d", &a[i]);

}

//input nilai r

printf("nilai r : "); scanf("%d", &tr);

//hitung nilai permutasi

p = faktorial(n); [3]

nq = faktorial(n-tr);

if (nq==0) nq=1;

max = p/nq;

printf("nilai permutasi : %d\n \

Tekan Enter untuk melihat hasil generate

permutasi...\n",max);

getche(); // fungsi membaca karakter keyboard

no = 1; // variabel untuk menampilkan nomor

//men-generate permutasi dengan

//algoritma generate next-permutation

//generate sebanyak nilai permutasi

for (x=1;x<=max;x++)

{

printf("%3d. ",no);

for (i=1;i<=tr;i++)

printf("%d ",a[i]);

printf("\n",a[i]);

no++;

j = n - 1;

while (a[j] > a[j+1])

j = j - 1; //j adalah subcript terbesar dengan aj < aj+1

k = n;

while (a[j] > a[k])

k = k - 1; //ak adalah integer terkecil dan lebih

besar dari aj

//tukar aj dan ak

i = a[k]; [4]

a[k] = a[j];

a[j] = i;

r = n;

s = j + 1;

while (r > s)

{

//tukar ar dan as

i = a[r]; [5]

a[r] = a[s];

a[s] = i;

r = r - 1;

s = s + 1;

}

}

Page 47: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

42

getch();

}

C. Evaluasiengerjakan posttest:

Tuliskan langkah program8.1 yang sesuai dari no {1,2,3,4,5} .

Nilai

Yogyakarta,

………………………………………….

Paraf asisten

<……………………………………>

Jawaban Postest

D. Referensi

1. Modul Kuliah Matematika Diskrit , Tedy Setiadi, 2006

2. Doerr Alan, Kenneth Levasseur, Applied Discrete Structures for Com[uter Science,

Science Research Asociates, Inc. Toronto, 1985

3. Munior, Rinaldi, Matematika Diskritn edisi ke 2, Penerbit Informatika Bandung, 2001

Page 48: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

43

Pertemuan X

Graf

Materi : Graf

Alokasi Waktu : 1,5 Jam

Kompetensi Dasar : Mahasiswa mampu memahami program yang terkait dengan persoalan

pada Graf dan mampu menjelaskan alurprogramnya

Indikator : Praktikan mampu menjalankan membuat program untuk penyelesaian

persoalan graf dan mempu menjelaskan algoritmanya

A. Teori Pendukung

Permasalahan yang muncul di dunia nyata sering terkait dengan objek diskrit dan relasi

antarobjek tersebut. Sebagai contoh: ada beberapa kota dalam suatu propinsi, dan ada

jalan yangmenghubungkan dar suatu kota ke kota lain. Hal ini kota merupakan objek

diskrit, sedangkan jalan merelasikan antar satu objek ke objek lainnya. Contoh lainnya,

dalam sistem jaringankomputer terdiri dari objek-objek computer baik sebagai server

maupun workstation.

Disini kitabisa mencari apakah satu komputer dapat terhubung ke komputer

lainnya.Permasalahan-permasalahan seperti ini dapat dimodelkan secara baik dengan

menggunakankonsep, graf, graf berarah, pohon, maupun pohon biner. Dalam bab ini kita

akan membahastentang konsep dasar graf, contoh-contoh pemakaian dalam kehidupan

sehari-hari, danbagaimana mengimplementasikan graf dalam pemrograman computer.

Representasi Graf dengan

1. Matriks Ketetanggaan (adjacency matrix)

A = [aij],

1, jika simpul i dan j bertetangga

aij = {

0, jika simpul i dan j tidak bertetangga

Page 49: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

44

B. Langkah Praktikum

Diberikan program berikut:

Merupakan Program C++, yang dibuat untuk mengetahui sebuah graph terhubung atau tidak!

Berikut Source Codenya:

#include

#include

void main(){

bool ketemu,nolsemua; [1]

int matrix[10] [10];

int i,j,jumlah_simpul,jumlah_sisi,asal,tujuan;

//inisialisasi matrix

cout<<"jumlah simpul:";

cin>>jumlah_simpul;

cout<<"jumlah_sisi:";

cin>>jumlah_sisi;

for (i=1;i<=jumlah_simpul;i++)

for (j=1;j<=jumlah_simpul;j++)

matrix[i][j]=0;

[2]

//isi matrix sesuai input graf

for (i=1;i<=jumlah_sisi;i++){

cout<<"simpul asal:";

Contoh:

4321 54321 4321

4

3

2

1

0110

1011

1101

0110

00000

00100

01011

00101

00110

5

4

3

2

1

4

3

2

1

0110

0001

1101

0010

(a) (b) (c)

4321

4

3

2

1

0210

2112

1101

0210

1

32

4

1

23

4

5

1

2 3

4

1

2

4

3

e1

e2

e3

e4

e5

e6

e7

e8

Derajat tiap simpul i:

(a) Untuk graf tak-berarah

d(vi) =

n

j

ija

1

(b) Untuk graf berarah,

din (vj) = jumlah nilai pada kolom j =

n

i

ija

1

dout (vi) = jumlah nilai pada baris i =

n

j

ija

1

Page 50: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

45

cin>>asal;

cout<<"simpul tujuan:";

cin>>tujuan;

matrix[asal][tujuan]=1; [3]

matrix[tujuan][asal]=1;

}

//telusuri graf

i=1;nolsemua=false;

while (i<=jumlah_simpul && !nolsemua){

[4]

j=1;ketemu=false;

while (j<=jumlah_simpul && !ketemu){

if (matrix[i][j]==1)

ketemu=true;

else

j++;

}

if (!ketemu)

nolsemua=true;

else

i++;

}

if(nolsemua)

cout<<"graf tidak terhubung";

else

cout<<"graf terhubung";

getch();

}

Tugas anda : Eksekusi program di atas dengan beberapa data

C. Evaluasi

1. Mengerjakan postest

c. Tuliskan hasil program10.1 diatas.

d. Tuliskan komentar yang sesuai dari no {1,2,3} pada program10.1

e. Ketikkan program10.2 di bawah ini :

#include <cstdlib>

#include

<iostream.h>

Page 51: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

46

#include <string.h>

using namespace std;

int main(int argc, char *argv[])

{

char kata1;

char kata2;

char kata3;

char kata4;

int a, b, c, d;

cout<<"Masukkan titik pertama:

";cin>>kata1;

cout<<endl;

cout<<"Masukkan titik kedua:

";cin>>kata2;

cout<<endl;

cout<<"Masukkan titik ketiga:

";cin>>kata3;

cout<<endl;

cout<<"Masukkan titik ketiga: ";cin>>kata4;

cout<<endl;

cout<<"Garis yang dapat dibentuk adalah: "<<endl;

cout<<kata1<<kata4<<endl;

cout<<kata4<<kata3<<endl;

cout<<kata3<<kata2<<endl;

cout<<kata2<<kata1<<endl<<endl;

cout<<"Masukkan jarak antara titik simpul "<<kata1<<" dengan

"<<kata4<<" : ";cin>>a;

cout<<"Masukkan jarak antara titik simpul "<<kata4<<" dengan

"<<kata3<<" : ";cin>>b;

cout<<"Masukkan jarak antara titik simpul "<<kata3<<" dengan

"<<kata2<<" : ";cin>>c;

cout<<"Masukkan jarak antara titik simpul "<<kata2<<" dengan

"<<kata1<<" : ";cin>>d;

cout<<endl<<endl;

cout<<"Jadi panjang jarak totalnya = "<<a+b+c+d<<endl<<endl;

cout<<"Mencari jalur terpendek dari "<<kata1<<" menuju

"<<kata3<<"<<kata4<<" : "<<endl;

cout<<"Alternatif pertama: "<<kata1<<" -> "<<kata2<<" ->

"<<kata3<<"-> <<kata4<<" = "<<kata1<<kata2<<" + " <<kata2<<kata3<<kata4<<endl;

system("color f0");

system("PAUSE");

return EXIT_SUCCESS;

}

Page 52: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

47

Hasil tampilan Program di atas sebagai berikut

Nilai

Yogyakarta, ………………………………………….

Paraf asisten

<……………………………………>

Jawaban Postest

D. Referensi

1. Modul Kuliah Matematika Diskrit , Tedy Setiadi, 2006

2. Doerr Alan, Kenneth Levasseur, Applied Discrete Structures for Computer Science,

Science Research Asociates, Inc. Toronto, 1985

3. Munior, Rinaldi, Matematika Diskritn edisi ke 2, Penerbit Informatika Bandung, 2001

Page 53: PETUNJUK PRAKTIKUM€¦ · Alhamdulilllah, segala puji dan syukur kehhadirat Allah SWT, hanya atas rahmat dan hidayah-Nya lah akhirnya modul praktikum Matematika Diskrit ini dapat

UNIVERSITAS AHMAD DAHLAN

TEKNIK INFORMATIKAFAKULTAS TEKNOLOGI INDUSTRI