Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Struktur Data Kode Kelas Reg Sore 56fecs Eko Travada Unas PASIM.

Presentasi serupa


Presentasi berjudul: "Struktur Data Kode Kelas Reg Sore 56fecs Eko Travada Unas PASIM."— Transcript presentasi:

1 Struktur Data Kode Kelas Reg Sore 56fecs Eko Travada Unas PASIM

2 Perkuliahan & Atribut  Aktifitas Kuliah  Perangkat Belajar  Silabus  Referensi  Materi Pembahasan

3 Aktifitas Kuliah & Penilaian Penilaian Kelas 60 %  Kehadiran 10 %  Tugas 20 %  Take Home  Kelas  UTS 30 %  UAS 40 % Penilaian Pratikum 40 %  Kehadiran 10 %  Tugas 20 %  UTS 30 %  UAS 40 %

4 Perangkat Belajar  Editor Python versi 3.0 atau setelahnya  Py Charm  Jupyter

5 Referensi  E Book  A Byte of Python v1.92 (for Python 3.0), http://code.pediapress.com http://code.pediapress.com  Data Structures and Algorithms with Python, Kent D. Lee, Steve Hubbard, Springer 2015 Situs https://docs.python.org/3.7/tutorial/ https://www.tutorialspoint.com/python

6 Silabus  Pengertian Struktur Data  Pengenalan Python Programming  Sejarah Python  Setup  Kata Kunci Dasar  Review Algoritma  Sequensial  Percabangan  Perulangan  Sub Program  List (Array)  Access Value in List  Updating List  Delete List Elements  Basic List Operations  Indexing, sequence  Function & Methods  Sorting/Pengurutan  Searching/Pencarian  Rekursi  Class for Pointer  Link list  Antrian  Stack  Tree

7 Pengertian Struktur Data  Struktur Data adalah cara penyimpanan, penyusunan dan pengaturan data di dalam media penyimpanan komputer sehingga data tersebut dapat digunakan secara efisien (sumber :Wiki).  STRUKTUR DATA menyangkut susunan fisik data dalam komputer dan berfungsi agar [1]: 1. penyimpanan lebih efisien 2. Agar tersusun lebih terurut 3. Agar data retrieval lebih efektif  Retrieval adalah Metoda untuk pengambilan atau pencarian data

8 Tujuan Struktur Data 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[1].

9 Contoh Kasus 1  Anda Diminta membuat aplikasi pemilu di sebuah TPS dengan ketentuan sebagai Berikut 1.Setiap pemilih yang datang ke TPS masuk harus mendapat no urut 2.No Urut terakhir menunjukkan jumlah pemilih yang datang 3.Ada 3 calon pemimpin yang akan dipilih 4.Pemilih masuk ke kotak TPS sesuai dengan no urut untuk memilih calon 5.Setelah semua pemilih memilih ditunjukkan dengan no antrian telah kembali semua maka proses penghitungan dimulai 6.Hasil perhitungan suara akan ditampilkan berurutan dari terkecil hingga terbesar

10 Solusi Untuk Kasus diatas struktur yang harus dibuat 1.Membuat system antrian untuk pengambilan no urut 2.Ada counter yang menunjukkan jumlah antrian yang diambil 3.Ada counter yang menunjukkan bahwa semua pemilih sudah memilih dengan counternya nilai sama dengan counter antrian 4.Dapat menampilkan secara berurutan yang mendapat perolehan suara terbesar hingga terkecil.

11 Contoh Kasus Solusi Contoh kasus 2 Dalam suatu Gudang metode pengambilan barang adalah dengan barang yang terakhir masuk maka yang pertama diambil maka yang pertama masuk akan diambil paling akhir Solusi Untuk kasus diatas menggunakan struktur Stack dimana yang terakhir masuk maka yang pertama diambil Contoh kasus 3 Dalam suatu pertandingan orlahraga setiap pemain bermain sebanyak 5 kali pertandingan, nilai yang didapat dari setiap pemain nilai terbesar dan terkecilnya dihapus. Penentuan pemain dengan menjumlah 3 nilai yang tersisa dan pemenang adalah diambil 3 pemain yang terbesar nilainya Solusi Struktur Data hasil pertandingan setiap pemain perlu disimpan menggunakan struktur list Cari nilai terbesar dan terkecil daris etiap pemain dan buang nilai tersebut Jumlahkan Nilainya Tampilkan secara berurut dari terbesar dan terkecil dan ambil 3 pemain terbesar.

12 Klasifikasi Data Type data sederhana a. Type data sederhana tunggal, misalnya Integer, real, boolean dan karakter b. Type data sederhana majemuk, misalnya String STRUKTUR DATA, meliputi a. STRUKTUR DATA sederhana, misalnya array dan record b. STRUKTUR DATA majemuk, yang terdiri dari Linier : Stack, Queue, serta List dan Multilist Non Linier : Pohon Biner dan Graph

13 Tools : Python Programming  Python adalah bahasa pemrograman yang kuat dan mudah dipelajari. Ini memiliki struktur data tingkat tinggi yang efisien dan pendekatan yang sederhana namun efektif untuk pemrograman berorientasi objek. Sintaksis elegan dan pengetikan dinamis Python, bersama dengan sifatnya yang intrepreter, menjadikannya bahasa yang ideal untuk pembuatan skrip dan pengembangan aplikasi yang cepat di banyak area di sebagian besar platform.  Python Itu dibuat oleh Guido van Rossum selama 1985-1990. Seperti Perl, kode sumber Python juga tersedia di bawah GNU General Public License (GPL). (terjemahan bebas dari tutorialpoint.com)

14 Python II  GNU General Public License adalah GNU General Public License (disingkat GNU GPL, atau cukup GPL; dalam bahasa Indonesia diterjemahkan menjadi lisensi publik umum) merupakan suatu lisensi perangkat lunak bebas yang aslinya ditulis oleh Richard Stallman untuk proyek GNU. lisensi perangkat lunak bebasRichard Stallmanproyek GNU  Lisensi GPL memberikan penerima salinan perangkat lunak hak dari perangkat lunak bebas dan menggunakan copyleft untuk memastikan kebebasan yang sama diterapkan pada versi berikutnya dari karya tersebut.(sumber Wikipedia)perangkat lunak bebascopyleft  Copyleft merupakan metoda umum untuk membuat sebuah program menjadi perangkat lunak bebas, serta menjamin kebebasannya untuk semua modifikasi...

15 Prerequisite Python  Anda telah memiliki pemahaman dasar tentang terminologi Pemrograman Komputer. Pemahaman dasar tentang salah satu bahasa pemrograman adalah nilai tambah.

16 Mengenal Python Python adalah bahasa scripting tingkat tinggi, intrepeter, interaktif dan berorientasi objek. Python dirancang agar mudah dibaca. Ia sering menggunakan kata kunci bahasa Inggris di mana bahasa lain menggunakan tanda baca, dan memiliki konstruksi sintaksis yang lebih sedikit daripada bahasa lain. Python Intrepreter - Python diproses pada saat runtime oleh Intrepreter. Anda tidak perlu mengkompilasi program Anda sebelum menjalankannya. Ini mirip dengan PERL dan PHP. Python Interaktif - Anda bisa duduk tenang di prompt Python dan berinteraksi dengan penerjemah secara langsung untuk menulis program Anda. Python Berorientasi Objek - Python mendukung gaya atau teknik pemrograman Berorientasi Objek yang merangkum kode di dalam objek. Python adalah Bahasa Pemula - Python adalah bahasa yang bagus untuk pemrogram tingkat pemula dan mendukung pengembangan berbagai aplikasi mulai dari pemrosesan teks sederhana hingga perambah WWW hingga permainan.

17 Fitur di Python  Mudah dipelajari - Python memiliki beberapa kata kunci, struktur sederhana, dan sintaks yang jelas. Ini memungkinkan siswa untuk memahami bahasa dengan cepat  Mudah dibaca - kode Python lebih jelas dan terlihat oleh mata.  Perpustakaan standar yang luas - sebagian besar perpustakaan Python sangat portabel dan lintas platform yang kompatibel pada UNIX, Windows, dan Macintosh.  Portable - Python dapat berjalan di berbagai platform perangkat keras dan memiliki antarmuka yang sama di semua platform.  Basis data - Python menyediakan antarmuka ke semua basis data komersial utama.  Pemrograman GUI - Python mendukung aplikasi GUI yang dapat dibuat dan dipindahkan ke banyak pemanggilan sistem, pustaka dan sistem windows, seperti Windows MFC, Macintosh, dan sistem X Window Unix.

18 Menjalankan Python Intrepeter Interaktif Anda dapat memulai Python dari Unix, DOS, atau sistem lain yang memberi Anda juru bahasa command-line atau jendela shell. Masukkan python pada baris perintah. Mulai koding segera di interpreter interaktif.

19 Python sebagai kalkulator >>> 5*6 #perkalian 30 >>> 7*8+5*2 #perkalian dan penjumlahan 66 >>> 8/4+4 #Pembagian 6.0 >>> 2**2 #pangkat/Power 4 >>> 2**3 8 >>> panjang=5 >>> lebar=6 >>> panjang*lebar 30

20 Mendefinisikan variabel di Python >>> panjang=5 >>> lebar=6 >>> panjang*lebar 30 >>> panjang+_ #panjang ditambahkan dengan hasil _ 35 >>> lebar=22/3 >>> panjang*lebar 36.666666666666664 >>> round(_,2) # dibulatkan 2 digit 36.67

21 Mendefinisikan Variabel di Python >>> a,b=0,3 >>> a 0 >>> b 3 >>> a,b+a (0, 3) >>> a=4 >>> a,b+a (4, 7) Lebih detail ke https://docs.python.org/3.7/tutorial/introduction.html

22 String di Python >>> 'halo' 'halo' >>> 'dua'+ ' Halo' 'dua Halo' >>> 'dua' + 5 Traceback (most recent call last): File " ", line 1, in TypeError: can only concatenate str (not "int") to str

23 String di Python >>> mylist='01234567' >>> mylist[1] '1' >>> mylist[0] '0' >>> mylist[3] '3' >>> mylist[3:] '34567' >>> mylist[0:] '01234567' >>> mylist[:0] '' >>> mylist='01234567' >>> mylist[:1] '0' >>> mylist[:3] '012' >>> mylist[:6] '012345' >>> mylist[-1:] '7' >>> mylist[-2:] '67' >>> mylist[-3:] '567' >>> mylist[:-1] '0123456' >>> mylist[:-2] '012345' >>> mylist[:-3] '01234' >>> mylist='01234567’ >>> mylist[-1:] '7’ >>> mylist[:8] '01234567’ >>> mylist[-1:8] '7’ >>> mylist[0:] '01234567’ >>> mylist[6:] '67’ >>> mylist[:3] '012’ >>> mylist[0:3] '012' >>> mylist[1:3] '12'

24 String Di Python >>> kataku='0123456789' >>> kataku[1] '1' >>> kataku[0] '0' >>> kataku[-1] '9' >>> kataku[-7] '3' >>> kataku[-2:] '89‘ >>> kataku[-2:-1] '8' >>> kataku[-7:1] '' >>> kataku[-7:3] '' >>> kataku='0123456789' >>> kataku[-8:3] '2‘ >>> kataku[3:-8] '' >>> kataku[:-8] '01' >>> kataku[:3] '012' >>> kataku[-3:] '789' >>> kataku[-8:] '23456789' >>> kataku[:3] '012' >>> kataku[3:] '3456789'

25 String Di Python  >>> kataku='0123456789'  >>> kataku[-8:0]  ''  >>> kataku[0:3]  '012'  >>> kataku[-8:-1]  '2345678'

26 Integrated Development Environment (IDE) Python IDE adalah suatu editor yang telah dilengkapi fitur fitur yang mendukung untuk mengetikkan instruksi Bahasa Program. IDE yang digunakan untuk Python dapat menggunakan  Pycharm (yang digunakan)  Spyder

27 Mengenal IDE Py Charm Tempat mengetikkan Instruksi Informasi File Program yang pernah dibuat Lokasi hasil Compiling dan informasi bila ada kesalahan dalam program

28 Programing Python Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> print(Hello World) File " ", line 1 print(Hello World) ^ SyntaxError: invalid syntax >>> print('Hello World') Hello World >>> Contoh Terjadi Error karena kurang ‘ ‘ Setelah Diperbaiki

29 Pengenal/Peng identifikasi Dalam Python Pengidentifikasi Python adalah nama yang digunakan untuk mengidentifikasi variabel, fungsi, kelas, modul atau objek lainnya. Identifier dimulai dengan huruf A ke Z atau a ke z atau garis bawah (_) diikuti dengan nol atau lebih huruf, garis bawah dan angka (0 hingga 9). Contoh a,sampel,Sampel, Sampel_data, data9 Contoh Identifikasi Salah sampel Data,8data Python tidak mengizinkan karakter tanda baca seperti @, $, dan% dalam pengidentifikasi. Python adalah bahasa pemrograman case- sensitive Penjelasan :  Variabel : adalah tempat penyimpanan Data yang bisa berubah  Fungsi : adalah Sub Program  Kelas : Pengelompokkan Variabel dan Method dalam suatu Objek Class  Modul : Sub Program/program lain yang terpisah filenya dengan program utama  Case Sensitive : adalah membedakan Huruf besar dan huruf kecil

30 Kata Kunci/ Reserved Word Daftar berikut menunjukkan kata kunci Python. Ini adalah kata yang dilindungi system dan Anda tidak dapat menggunakannya sebagai konstanta atau variabel atau nama pengenal lainnya. Semua kata kunci Python hanya berisi huruf kecil.

31 Aturan PenulisanProgr an : Lines and Indentation  Python tidak memberikan tanda kurung untuk menunjukkan blok kode untuk definisi kelas dan fungsi atau kontrol aliran. Blok kode dilambangkan dengan indentasi baris, yang ditegakkan dengan kaku.  Jumlah spasi dalam indentasi adalah variabel, tetapi semua pernyataan dalam blok harus indentasi dengan jumlah yang sama. Contoh >>> a=4 >>> if a>3:... print('benar') #Indention... else :... print('salah') #indention... Benar (keluaran) >>>

32 Indentation (Contoh lain) import sys try: # open file stream file = open(file_name, "w") except IOError: print "There was an error writing to", file_name sys.exit() print "Enter '", file_finish, print "' When finished" while file_text != file_finish: file_text = raw_input("Enter text: ") if file_text == file_finish: # close the file file.close break file.write(file_text) file.write("\n") file.close()

33 Multi Line Statemen Pernyataan dalam Python biasanya diakhiri dengan baris baru. Namun, Python mengizinkan penggunaan karakter kelanjutan garis (\) untuk menunjukkan bahwa garis harus dilanjutkan. Contoh >>> a=5+\... 7+\... 8 >>> print (a) 20 >>> Pernyataan yang terkandung dalam kurung [], {}, atau () tidak perlu menggunakan karakter kelanjutan garis >>> a=[5,4,... 3,2] >>> print(a) [5, 4, 3, 2] >>>

34 Quotation In Python Python menerima tanda kutip tunggal ('), dobel (") dan rangkap tiga (' '' atau" "") untuk menunjukkan string literal, selama jenis kutipan yang sama dimulai dan diakhiri string. Kutipan rangkap tiga digunakan untuk merentangkan string melintasi beberapa baris Contoh >>> word='word' >>> kalimat=" ini adalah kalimat" >>> Paragraph=""" ini adalah sebuah... paragraph panjang""" >>> print(word) word >>> print(kalimat) ini adalah kalimat >>> print(Paragraph) ini adalah sebuah paragraph panjang >>>

35 Comment di Python Tanda hash (#) yang tidak ada di dalam string literal memulai komentar. Semua karakter setelah # dan hingga akhir garis fisik adalah bagian dari komentar dan interpreter Python mengabaikannya. >>> print ('Hello Python') #ini comment Hello Python

36 Waiting for the User  Baris berikut dari program ini menampilkan prompt, pernyataan yang mengatakan "Tekan tombol enter untuk keluar", dan menunggu pengguna untuk mengambil tindakan –  >>> input('\n\nTekan Sembarang tombol')  Tekan Sembarang tombol  ''  >>>  \n\n adalah untuk memberi 2 line kosong

37 Multiple Statements on a Single Line Tanda titik koma (;) memungkinkan banyak pernyataan pada baris tunggal mengingat tidak ada pernyataan yang memulai blok kode baru. Berikut ini cuplikan sampel menggunakan titik koma – >>> print(a);print(word);print(kalimat) [5, 4, 3, 2] word ini adalah kalimat >>> (var a,word,kalimat : telah didefinisikan sebelumnya)

38 Tugas 1 (dikumpulkan di pertemuan berikutnya) Buat Program dengan Python dengan kasus Berikut : 1.Program Menghitung Luas Lingkaran (luaslingk=Phi*r*r) 2.Menukar 2 buah variabel contoh a =5 ; b=6  a=6 ; b=5 3.Program menghitung selisih waktu dalam satuan jam,menit, detik tanpa menggunakan if Contoh waktu 1 = 10:00:00 waktu 2: 11:12:20 selisih = 1:11:20 3. Program konversi satuan detik ke Jam,Menit dan Detik Contoh 3750 detik = 1 jam ; 2 menit ; 30 detik

39 Referensi [1] Sumber Artikel: PENGERTIAN STRUKTUR DATA | Amalkan Ilmu Berbagi Untuk Semua http://blog- arul.blogspot.com/2012/01/pengertian-struktur- data.html#ixzz5e7S0SJtj - WikipediaPENGERTIAN STRUKTUR DATA | Amalkan Ilmu Berbagi Untuk Semuahttp://blog- arul.blogspot.com/2012/01/pengertian-struktur- data.html#ixzz5e7S0SJtj

40 Fungsi Random Fungsi Random digunakan untuk membangkitkan bilangan acak Fungsi Random di python antara lain  Fungsi choice(seq)  Fungsi randrange([start],[stop],[step])  Fungsi random()  Fungsi seed([x])  Fungsi shuffle([list])  Fungsi uniform(x,y)

41 Fungsi choice(seq)  Fungsi ini mengembalikan sebuah item random dari sebuah list random dari sebuah list, tuple, maupun string. Parameter seq merupakan sebuah list,tuple, maupun string. Contoh import random print('choice([2,1,4,6,4]):',random.choice([2,1,4,6,4])) #contoh list number print('choice(Belajar Python assyik) : ',random.choice('Belajar Python assyik')) # contoh list string Qo='State' S='Qo' F='Q5' Epsilon=[1,2,3] print('Choice Tupel : ',random.choice([Qo,S,F,Epsilon]) ) # contoh Tuple

42 Keluaran Fungsi Choice Run ke 1 choice([2,1,4,6,4]): 4 choice(Belajar Python assyik) : n Choice Tupel : [1, 2, 3] Run ke 2 choice([2,1,4,6,4]): 4 choice(Belajar Python assyik) : a Choice Tupel : Q5 Run ke 3 choice([2,1,4,6,4]): 1 choice(Belajar Python assyik) : i Choice Tupel : Qo

43 Fungsi randrange  Fungsi ini mengembalikan bilangan random berdasarkan jangkauan atau range(start,stop,step). Start adalah awal range, stop adalah akhir range, dan step adalah keluaran bilangan random Contoh import random print(random.randrange(0,10,1)) print(random.randrange(5,15,3)) Output 0 11 2 8

44 Fungsi random()  Fungsi ini akan mengembalikan bilangan float random x, dimana 0<x<1. Fungsi random() tidak memiliki parameter masukkan Contoh print('random() :',random.random()) Hasil random() : 0.793279180493279 random() : 0.9777996760606558 random() : 0.32604548061585703 random() : 0.39838998779623125 random() : 0.20510185519287483 random() : 0.23954777964331908

45 Fungsi seed  random.seed adalah pemberi umpan atau sering disebut benih pertama dari suatu bialnagn acak. Jika random.seed dijalankan maka bilangan pengacak tidak akan pernha berubah  Contoh random.seed(0.5) print('random() :',random.random()) Bilangan dibangkitkan random() : 0.2794930785867423 random() : 0.7912631961880867 random() : 0.5698671052566573 Dijalankan kedua kali random() : 0.2794930785867423 random() : 0.7912631961880867 random() : 0.5698671052566573

46 Fungsi Shuffle  Fungsi shuffle adalah mengacak urutan dari suatu list myList=[3,2,7,5,8,9] print('Kondisi Awal List',myList) random.shuffle(myList) print('isi List : ',myList) random.shuffle(myList) print('isi List : ',myList) Hasil Kondisi Awal List [3, 2, 7, 5, 8, 9] isi List : [5, 3, 2, 7, 8, 9] isi List : [7, 9, 2, 8, 5, 3] Kondisi Awal List [3, 2, 7, 5, 8, 9] isi List : [8, 9, 3, 5, 2, 7] isi List : [7, 2, 3, 8, 5, 9]

47 Fungsi Uniform Fungsi uniform(x,y) digunakan untuk menampilkan bilangan float random dengan batas bilangan awal x dan batas akhir y print("Random Float :",random.uniform(3,5)) print("Random Float :",random.uniform(6,10)) Random Float : 3.1633619448022934 Random Float : 9.030033268733744 Random Float : 4.397867376889238 Random Float : 6.410509994301025

48 Studi Kasus 1  Membuat simulasi dadu yang dilempar sebanyak n kali dan menampilkan frekuensi kemunculan muka dadu yang menghadap ke atas setelah dilempar n kali Solusi 1 tanpa menggunakan list 1.dadu terdiri 6 (enam) muka 2.Kemunculan muka tidak dapat diprediksi, muncul secara acak 3.Karena menghitung kemunculan muka dadu maka perlu variabel sebagai penyimpan kemunculan muka dadu 4.Menampilkan frekuensi kemunculan muka dadu setelah dilempar n kali

49 Solusi Python simulasi muka dadu tanpa list import random satu=0 dua=0 tiga=0 #Variabel untuk menyimpan Muka Dadu empat=0 lima=0 enam=0 for i in range (0,1000): # Perintah For dy Python a=random.randrange(6)+1 # Pembangkit Bilangan acak dengan nilai akhir 5 print(a) if a==1: satu+=1 if a==2: dua+=1 if a == 3: tiga+=1 if a == 4: Menyimpan banyak kemunculan Nilai dadu empat+=1 if a == 5: lima +=1 if a == 6: enam +=1 print("Dadu 1 : ",satu) print("Dadu 2 : ",dua) print("Dadu 3 : ",tiga) print("Dadu 4 : ",empat) Menampilkan print("Dadu 5 : ",lima) print("Dadu 6 : ",enam) print("Total : ",satu+dua+tiga+empat+lima+enam)

50 Keluaran simulasi Dadu Dadu 1 : 163 Dadu 2 : 177 Dadu 3 : 180 Dadu 4 : 140 Dadu 5 : 167 Dadu 6 : 173 Total : 1000 Run ke 2 Dadu 1 : 169 Dadu 2 : 170 Dadu 3 : 168 Dadu 4 : 168 Dadu 5 : 160 Dadu 6 : 165 Total : 1000

51 Solusi 2, simulasi dadu dengan list import random hasil=0 myList=[0,0,0,0,0,0,0] for i in range (0,6000): b=random.randrange(6)+1 myList[b]+=1 for i in range (1,7): print('Dadu -',i, ' : ',myList[i]) hasil+=myList[i] print("Total : ",hasil) Hasil Dadu - 1 : 968 Dadu - 2 : 1039 Dadu - 3 : 962 Dadu - 4 : 963 Dadu - 5 : 1038 Dadu - 6 : 1030 Total : 6000 #Dadu 0 - 6 #Penyimpanan hasil lempar Menampilkan Hasil lemparan

52 Studi Kasus 2 Menghitung Frekuensi data Buat Program yang menghitung kemunculan Frekuensi data Contoh diketahui data =[4,3,2,2,5,3,6,5] Maka Frekuensi : Nilai 2 = 2 Nilai 3 = 2 Nilai 4 = 1 Nilai 5 = 2 Nilai 6 = 1

53 Solusi 1 Struktur 1.Definisikan data yang akan dihitung simpan di list 2.Buat tempat penyimpanan kemunculan data di list yang lain 3.Tampilkan isi data di langkah 2 #Program ini hanya berlaku untuk data score >= 0 score=[4,3,4,2,2,3,5,6,7,7,8,9,9,2,3,4,1,5,1,4,3,7,0,0,4] frekuensi=[0,0,0,0,0, 0,0,0,0,0] print('Score Siswa yaitu ',score) for i in range (len(score)): frekuensi[score[i]]+=1 for i in range (len(frekuensi)): print('Frekuensi score -',i,': ',frekuensi[i]) Score Siswa yaitu [4, 3, 4, 2, 2, 3, 5, 6, 7, 7, 8, 9, 9, 2, 3, 4, 1, 5, 1, 4, 3, 7, 0, 0, 4] Frekuensi score - 0 : 2 Frekuensi score - 1 : 2 Frekuensi score - 2 : 3 Frekuensi score - 3 : 4 Frekuensi score - 4 : 5 Frekuensi score - 5 : 2 Frekuensi score - 6 : 1 Frekuensi score - 7 : 3 Frekuensi score - 8 : 1 Frekuensi score - 9 : 2 Menghitung Frekuensi Data dan menyimpan

54 Solusi II #Program ini hanya berlaku untuk data score >= 0 score=[4,3,4,2,2,3,5,6,7,7,8,9,9,2,3,4,1,5,1,4,3,7,0,0,3,4,1,2,20] if min(score)>=0: frekuensi=[0 for i in range(min(score),max(score)+1)] print('Score Siswa yaitu ',score) for i in range (min(score),len(score)): frekuensi[score[i]]+=1 for i in range (min(score),len(frekuensi)): if frekuensi[i]>0: print('Frekuensi score -',i,': ',frekuensi[i]) else: print(min(score)) print('Perhitungan tidak bisa dilakukan karena Data terkecil harus >= 0') List Dinamis Keyword min(untuk mendapat nilai terkecil dan max mendapat nilai terbesar Filtering frekuensi bila==0 tidak ditampilkan

55 Hasil Dari Solusi II Score Siswa yaitu [4, 3, 4, 2, 2, 3, 5, 6, 7, 7, 8, 9, 9, 2, 3, 4, 1, 5, 1, 4, 3, 7, 0, 0, 3, 4, 1, 2, 20] Frekuensi score - 0 : 2 Frekuensi score - 1 : 3 Frekuensi score - 2 : 4 Frekuensi score - 3 : 5 Frekuensi score - 4 : 5 Frekuensi score - 5 : 2 Frekuensi score - 6 : 1 Frekuensi score - 7 : 3 Frekuensi score - 8 : 1 Frekuensi score - 9 : 2 Frekuensi score - 20 : 1

56 Algoritma Menampilkan Nilai terbesar atau terkecil  Untuk menampilkan nilai terbesar dan terkecil dengan struktur seperti Berikut 1.Ambil salah satu nilai asumsikan sebagai nilai terbesar atau terkecil dan simpan ke variabel max atau min Max  nilaiPertama\ 2.Bandingkan nilai max dengan nilai yang lain bila nilai max lebih kecil (jika mencari nilai terbesar ganti isi max dengan nilai yang lain tersebut 3.Lakukan terus langkah no 2 (dua) hingga seluruh nilai telah dibandingkan 4.Tampilkan isi max 5.Untuk menampilkan nilai terkecil maka di langkah 1 ganti variabel dengan nama min dan di langkah 2 diganti bila nilai min lebih kecil dari nilai yang lain

57 Implementasi di Python Mencari nilai terbesar /terkecil myData=[0,2,1,3,4,5,6,7,9,-3,-2,10,13] print("Dketahui data sebagai berikut ",myData) pilih=int(input('Mencari Nilai terbesar atau kecil (b=1/k=0)')) if pilih==1: max=myData[0] for i in range(len(myData)): if max<myData[i]: max=myData[i] print('nilai Terbesar adalah ',max) elif pilih==0: min=myData[0] for i in range(len(myData)): if min>myData[i]: min=myData[i] print('nilai Terkecil adalah ',min) Mencari nilai terbesar Asumsikan list ke-0 sebagai nilai terbesar Lakukan Perbandingan isi max dengan data berikutnya bila isi max lebih kecil ganti isi max Mencari nilai terkecil Asumsikan list ke-0 sebagai nilai terkecil Lakukan Perbandingan isi min dengan data berikutnya bila isi min lebih kecil ganti isi min

58 Menggunakan Sub Program  Sub Program adalah bagian dari program yang ditempatkan di luar program utama (main Program)  Di Python untuk mendefinisikan Sub Program menggunakan kata kunci def  Sub Program terdiri dari 2 jenis yaitu procedure dan function  Procedure adalah sub program dengan tidak ada nilai yang dikembalikan  Function adalah Sub Program dengan ada nilai yang dikembalikan dari sub program tersebut.  Dalam membuat subprogram baik procedure ataupun function dapat menggunakan parameter atau tanpa parameter  Parameter adalah variabel yang didefinisikan setelah nama subprogram yang berfungsi sebagai jalan untuk menginputkan suatu nilai ke sub program.

59 Sub program di Python Sub program di python sebagai procedure menggunakan format Berikut def namaSubProgram(): statement def namaSubProgram(parameter1,parameter2,parameter ke n): statement Sub program di python sebagai function menggunakan format Berikut def namaSubProgram(): statement return nilai def namaSubProgram(parameter1,parameter2,parameter ke n): statement return nilai

60 Contoh Sub Program tanpa Parameter (procedure) def menuUtama(): print(‘ Menu Utama\n\n’) print(‘1. Menghitung Luas Segitiga’) print(‘2. Menghitung Luas Bujursangkar’) print(‘3. exit’) menuUtama() Output program diatas Menu Utama 1.Menghitung Luas Segitiga 2.Menghitung Luas Bujursangkar 3.Exit

61 Contoh Sub Program dengan parameter (function) def luasSegitiga(alas,tinggi): luas=alas*tinggi*0.5 return luas alas=float(input('Alas : ')) tinggi = float(input('Tinggi : ')) print('Luas segitiga :',luasSegitiga(alas,tinggi)) Ouput Alas : 10 Tinggi : 4 Luas Segitiga : 20

62 Contoh Sub Program dengan parameter def selectionSort(listData): print('Data diurutkan terkecil ke terbesar') for i in range(0,len(listData)-1): for j in range(i,len(listData)): if listData[i]>listData[j]: listData=tukar(listData,i,j) print(listData) def tukar(listData,data1,data2): listData[data1],listData[data2]=listData[data2],listDa ta[data1] return listData listData=[2,3,1,2,5,3,2,-3,-10,20,7] random.shuffle(listData) print('Data awal ', listData) hasil=selectionSort(listData) print('setelah diurutkan dengan selection',hasil)

63 Contoh Implementasi Sub Program def luasSegitiga(alas,tinggi): luas=alas*tinggi*0.5 return luas def luasLingkaran(r): luas=22/7*r*r return luas def luasPersegiPanjang(panjang,lebar): luas=panjang*lebar return luas def mainMenu(): menuAwal=('1. Luas Segitiga','2. Luas Lingkaran','3. Persegi Panjang') print(menuAwal[0]) print(menuAwal[1]) print(menuAwal[2]) mainMenu() pilih=int(input('Pilih Menu : ')) if pilih==1: alas=float(input('Alas : ')) tinggi = float(input('Tinggi : ')) print('Luas segitiga :',luasSegitiga(alas,tinggi)) elif pilih==2: r=float(input('jari jari lingkarang :')) print('Luas Lingkarang',luasLingkaran(r)) else: panjang = float(input('Panjang : ')) lebar = float(input('Lebar : ')) print('Luas segitiga :', luasPersegiPanjang(panjang, lebar)) Sub program sebagai function berparameter Sub program sebagai procedure non parameter Memanggil procedure Memanggil function

64 Modul  Modul adalah sub program yang diletakkan di file yang lain  Untuk memanggil modul tersebut digunakan kata kunci import Contoh Berikut modul def tesModul(): print("Ini Modulku pertama di python") File diatas disimpan dengan nama ModulCoba.py Kemudian buat program untuk memanggil modul diatas import ModulCoba ModulCoba.tesModul() Maka Output akan keluar Ini Modulku pertama di python

65 Rekursi  Rekursi adalah program yang memanggil diri sendiri  dideskripsikan dalam gambar  animasi seperti Berikut :

66 Struktur Rekursi def NamaSubProgramRekursi(parameter) batasPengulanganPemanggilanRekursi NamaSubProgramRekursi(parameter-n) atau NamaSubProgramRekursi(parameter+n) atau Proses lain untuk mengubah nilai parameter agar menuju batas pemanggilan rekursi NamaSubProgramRekursi(nilaiParameter) Penjelasan 1.Program utama memanggil sub Program Rekursi dengan mengirimkan nilai dari parameter 2.Di dalam sub program terdiri dari 1.Batas pengulangan pemanggilan rekursi dengan mendeteksi perubahan parameter apakah sudah mencapai nilai tertentu 2.Pemanggilan sub program itu sendiri dengan mengirimkan parameter yang telah diubah nilainya

67  Contoh Kasus Rekursi

68 Mendisain Rekursi Contoh Menghitung Faktorial Faktorial secara matematis ditulis n! =n*(n-1)! Contoh 6!=6*(6-1)! 6!=6*5*(5-1)! 6!=6*5*4*(4-1)! 6!=6*5*4*3*(3-1)! 6!=6*5*4*3*2*(2-1)! 6!=6*5*4*3*2*1*(1-1)! 6!=6*5*4*3*2*1*(0)! 0! adalah 1 maka ini sebagai batas pemanggilan rekursi Memanggil faktorial itu sendiri

69 Faktorial di Python def rekursiFaktorial(nilai): if nilai<1: return 1 else: return nilai*rekursiFaktorial(nilai-1) faktorial=5 print('Program rekursi Faktorial') print(faktorial,'! : ',rekursiFaktorial(faktorial) ) Output Program rekursi Faktorial 5 ! : 120 Batas pemanggilan rekursi pemanggilan rekursi

70 Cara kerja rekursi faktorial def rekursiFaktorial(nilai): if nilai<1: return 1 else: return nilai*rekursiFaktorial(nilai-1) Misal nilai = 1 def rekursiFaktorial(1): If nilai <1: dikembalikan nilai =1 return 1 Nilai = 2 def rekursiFaktorial(2):

71 Mekanisme rekursi factorial dengan nilai =2 Nilai = 2 def rekursiFaktorial(nilai): If nilai <1: return 1 else: return nilai*rekursiFaktorial(nilai-1) 1 * 2 =2 Nilai= 1 Nilai = 2

72 Mekanisme rekursi factorial dengan nilai = 3 Nilai = 3 def rekursiFaktorial(nilai): If nilai <=1: return 1 else: return nilai*rekursiFaktorial(nilai-1) Nilai = 3 Nilai = 2 Nilai = 1 3* 2 * 1 = 6

73 Rekursi Jumlah bilangan ganjil Bilangan ganjil adalah 1,3,5,…. Bila n adalah bilangan akhir ganjil dimaksud maka nilai yang diulang adalah n-2 N=9 dengan n-2 terus diulang 9,7,5,3,1 Nilai Batas akhir adalah 1 sebagai pembatas rekursif maka rekursif dibentuk def deretGanjil(n): if n<2: print(n,',',end='') return n else: print(n,',',end='') deretGanjil(n-2) bil=int(input("Bilangan akhir ")) deretGanjil(bil)

74 Tugas Rekursif Dengan Algoritma Rekursif buat program dengan python untuk kasus 1.Penjumlahan deret bilangan Ganjil 2.Penjumlahan Deret bilangan Genap 3.Program deret pangkat 2

75 Fibonaci di Python Batas pemanggilan rekursi

76 Fibonaci di Python #Untuk menghitung Nilai fibonaci def fibonaci(panjangDeret): if panjangDeret<2: return panjangDeret else: return fibonaci(panjangDeret-1)+fibonaci(panjangDeret-2) #Program utama yang menampilkan deret fibonaci NF=10 print('Program Fibonaci') for i in range(0,NF): print(fibonaci(i),',‘,end=‘’) Output 0,1,1,2,3,5,8,13,21,34,

77 Menara Hanoi dengan rekursi Bila diasumsikan bahwa A adalah sumber, B adalah Target dan C adalah bantu maka berdasar gambar diatas 1.Posisi awal asumsikan jumlah Menara n 2.Pindahkan Menara sumber di A n-1 ke Menara bantu di C (hingga tersisa 1) secara rekursif 3.Pindahkan Menara paling bawah (ke-1 ) di A ke Menara target di B 4.Pindahkan Menara di bantu di C n-1 ke Menara target dengan menjadikan Menara A sebagai Menara bantu

78 Implementasi Fungsi Menara Hanoi def menaraHanoi(n,source,target,bantu): if n<2: print(‘Bilah ke ',n,’dari’,source,target) return n else: menaraHanoi(n-1,source,bantu,target) print(‘Bilah ke ',n,’dari’,source,target) menaraHanoi(n-1,bantu,target,source) Fungsi dengan parameter N jumlah bilah, Source = Menara sumber, Target = Menara Target dan Bantu = Menara bantu Batas Pemanggilan rekursi Rekursi pemindahan Source ke bantu (target menjadi Menara bantu) # Program Utama source='Sumber(A)' target='Target(B)' bantu='Bantu(C)' menaraHanoi(2,source,target,bantu) Program Utama dengan jumlah bilah 2 Rekursi pemindahan Bantu ke target (source menjadi Menara bantu)

79

80 Output Menara Hanoi Jumlah bilah 1 Bilah ke 1 dari Sumber(A) Target(B) Jumlah Bilah 2 1.bilah ke 1 Sumber(A) Bantu(C) 2.bilah ke 2 Sumber(A) Target(B) 3.bilah ke 1 Bantu(C) Target(B) Jumlah Bilah 3 1.Bilah ke 1 dari Sumber(A) Target(B) 2.Bilah ke 2 dari Sumber(A) Bantu(C) 3.Bilah ke 1 dari Target(B) Bantu(C) 4.Bilah ke 3 dari Sumber(A) Target(B) 5.Bilah ke 1 dari Bantu(C) Sumber(A) 6.Bilah ke 2 dari Bantu(C) Target(B) 7.Bilah ke 1 dari Sumber(A) Target(B)

81 Memvalidasi Bahasa apakah sesuai dengan sintaks yang ditetapkan  Bahasa adalah kumpulan symbol yang memiliki makna. Symbol dalam bahas seperti huruf, angka dan tanda baca. Sedangkan makna adalah memiliki arti atau maksud atau penjelasan atas sesuatu. Simbol symbol tersebut bila dikumpulkan akan memiliki arti contoh kumpulan huruf  Mobil terdiri dari kumpulan symbol huruf yang memiliki makna suatu benda yang dapat bergerak  Rumah yang memiliki makna sebagai tempat yang dapat ditinggali  Print yang memiliki makna mencetak. Dari contoh diatas symbol tersebut akan memiliki makna bila dikumpulkan sesuai aturan tertentu dan kemungkinan tidak memiliki makna bila digabung secara tandom/acak. Salah satu model matematis untuk memvalidasi kumpulan symbol yaitu diagram state, mesin finite State Automata

82 Contoh implementasi diagram state Finite State Automata Mesin Mengecek Parity Gambar diatas adalah model matematis yang merupakan representasi mesin state pengecek parity. -Lingkaran tunggal disebut sebagai state awal diberi nama state Genap -Lingkaran ganda disebut sebagai state akhir disebut sebagai state akhir -Di state Genap sebagai input dimana anda bisa memasukkan suatu nilai binary dan mesin akan mengecek apakah data yang dimasukkan benar atau tidak dengan menguji apakah data tersebut berhenti di state Ganjil (lingkaran ganda) - Secara formal matematis model mesin diatas dinotasikan ddalam 4 tupel yaitu [S,F,T,A,ListTransisi]

83 Model Formal Mesin pengecek parity Penjelasan Notasi dalam tupel S adalah state awal F adalah state akhir T himpunan transisi A himpunan State List Transisi adalah tabel transisi Untuk mesin parity S adalah state Genap dan F adalah state ganjil himpunan transisi adalah (0,1) dan himpunan state (Genap,Ganjil) Sedangkan tabel transisi sesuai gambar Berikut GanjilGenap 0GanjilGenap 1 Ganjil

84 Proses pengujian Bahasa secara matematis

85 Mesin Parity Mesin parity diberi input bahasa ‘01’ maka proses pengecekan sebagai Berikut 1.Proses selalu dimulai dari state awal 2.Input Bahasa diparsing sehingga menjadi 1 digit 3.Setiap digit diinputkan ke state hingga seluruh input telah dimasukkan 4.Setelah seluruh digit diinputkan dicek state akhir yang diperoleh 5.Bahasa diterima (valid) jika berhenti di state akhir, bila bukan di state akhir maka Bahasa ditolak (tidak valid)

86 Implementasi Tupel mengggunakan List S='GENAP' F='GANJIL' T=['0','1'] A=['GENAP','GANJIL'] tabelEpsilon=[['GENAP','0','GENAP'], ['GENAP','1','GANJIL'], ['GANJIL','0','GANJIL'], ['GANJIL','1','GENAP']] banyakData=len(tabelEpsilon) tupel=[S,F,T,A,tabelEpsilon]

87 Memasukkan Bahasa ke state banyakData=len(tabelEpsilon) tupel=[S,F,T,A,tabelEpsilon] print(‘Initial State ',S) print(‘Final State ',F) print('Transation ',tabelEpsilon) bahasa='001011111' print(‘Language ',bahasa) panjang=len(bahasa)-1 state=epsilon(tupel,bahasa,panjang) print('State akhir :',state) if state==F: print('due to final state = ',F,'language ',bahasa,' Accepted') else: print('due to final state <>',F,'language ',bahasa, ' Rejected')

88 Sub Program Rekursi parsing Parsing dengan rekursi def epsilon(tupel,bahasa,panjang): if panjang<1: print('eps(', tupel[0], ',', bahasa[panjang], ')=',end='') tupel[0] = searchTupel(tupel[0], bahasa[panjang]) print(tupel[0]) return tupel[0] else: epsilon(tupel,bahasa,panjang-1) print('eps(', tupel[0], ',', bahasa[panjang], ')=', end='') q tupel[0]=searchTupel(tupel[0],bahasa[panjang]) print(tupel[0]) return tupel[0]

89 Sub Program Menentukan state berikutnya def searchTupel(state,bahasa): for i in range(len(tupel[2]*len(tupel[3]))): for j in range (len(tupel[4][0])): if tupel[4][i][0]==state and tupel[4][i][1]==bahasa: return tupel[4][i][2]

90 Output Rekursi Finite State Automata Initial State GENAP Final State GANJIL Transation [['GENAP', '0', 'GENAP'], ['GENAP', '1', 'GANJIL'], ['GANJIL', '0', 'GANJIL'], ['GANJIL', '1', 'GENAP']] Language 00101111101 eps( GENAP, 0 )=GENAP eps( GENAP, 1 )=GANJIL eps( GANJIL, 0 )=GANJIL eps( GANJIL, 1 )=GENAP eps( GENAP, 1 )=GANJIL eps( GANJIL, 1 )=GENAP eps( GENAP, 1 )=GANJIL eps( GANJIL, 1 )=GENAP eps( GENAP, 0 )=GENAP eps( GENAP, 1 )=GANJIL State akhir : GANJIL due to final state = GANJIL language 00101111101 Accepted

91 Mengurutkan Data Pengurutan data adalah proses untuk mengurutkan data dari terkecil ke terbesar dan sebaliknya. Terkecil ke terbesar disebut Ascending dan sebaliknya Descending Dalam mengurutkan ada beberapa metode yang bisa dilakukan 1.Selection 2.Buble Sort 3.Merge Sort

92 Mengurutkan Selection Sort Buble Sort Merge Sort 2363 3263 Ascending Selection Sort 2363 2363 2336 2 336 2336 2336 2336 2336 Ascending Buble Sort 23 63 01234 01234 01234 Ascending Merge Sort 23 63 23 36 2 3 36

93 Quick Sort 2363 23 63 Ascending Quick Sort Sort 2363 2363 2363 01234 2336

94 Quick Sort

95 Implementasi Sorting Buble Sort def bubleSort(listData,sortAsDesc): if sortAsDesc==1: # 1 untuk kode urut menaik print('Data diurutkan terkecil ke terbesar') for i in range(0,len(listData)-1): for j in range(0,len(listData)-1): if listData[j]>listData[j+1]: listData=tukar(listData,j,j+1) print(listData) elif sortAsDesc==0: # 0 untuk kode urut menurun print('Data diurutkan terbesar ke terkecil') for i in range(0,len(listData)-1): for j in range(0,len(listData)-1): if listData[j]<listData[j+1]: listData=tukar(listData,j,j+1) print(listData) return listData

96 Implementasi Selection Sort def selectionSort(listData,sortAsDesc): if sortAsDesc==1: print('Data diurutkan terkecil ke terbesar') for i in range(0,len(listData)-1): for j in range(i,len(listData)): if listData[i]>listData[j]: listData=tukar(listData,i,j) print(listData) elif sortAsDesc==0: print('Data diurutkan terbesar ke terkecil') for i in range(0,len(listData)-1): for j in range(i,len(listData)): if listData[i]<listData[j]: listData=tukar(listData,i,j) print(listData) return listData

97 Sub Program Tukar Data Dan Program Utama def tukar(listData,data1,data2): listData[data1],listData[data2]=listData[data2],listData[data1] return listData listData=[2,3,1,2,5,3,2,-3,-10,20,7] pilih=-1 while (pilih<2): random.shuffle(listData) print('Data awal ', listData) jenisSort=int(input('Selection Sort / Buble Sort (1/0)')) pilih=int(input('Ascending / Descending /Keluar (1/0/2)')) if pilih <2 : if jenisSort==1: hasil=selectionSort(listData,pilih) print('setelah diurutkan dengan selection',hasil) elif jenisSort==0: hasil = bubleSort(listData, pilih) print('setelah diurutkan dengan BubleSort', hasil)

98 Implementasi Merge Sort dengan rekursi def mergeSort(panjang,myData): if panjang<2: print('Pengurutan Merge Sort A : ', myData) return panjang else: mergeSort((panjang // 2), myData) print('Pengurutan Merge Sort B : ',myData) selectionSort(panjang,myData) print('Pengurutan Merge Sort C : ', myData) def selectionSort(panjang,listData): for i in range(0, panjang - 1): for j in range(0, panjang - 1): if listData[j] > listData[j + 1]: listData = tukar(listData, j, j + 1) return listData def tukar(myData,a,b): myData[a],myData[b]=myData[b],myData[a] return myData

99 Main Program Merge Sort Program Utama myListData=[3,2,4,1,5,6,8,4,2,9,12,-1,3,2,-4,-60] print('Data awal : ',myListData) panjang=len(myListData) mergeSort(panjang,myListData) print('Data diurutkan : ',myListData) Output Data awal : [3, 2, 4, 1, 5, 6, 8, 4, 2, 9, 12, -1, 3, 2, -4, -60] Pengurutan Merge Sort A : [3, 2, 4, 1, 5, 6, 8, 4, 2, 9, 12, -1, 3, 2, -4, -60] Pengurutan Merge Sort B : [3, 2, 4, 1, 5, 6, 8, 4, 2, 9, 12, -1, 3, 2, -4, -60] Pengurutan Merge Sort C : [2, 3, 4, 1, 5, 6, 8, 4, 2, 9, 12, -1, 3, 2, -4, -60] Pengurutan Merge Sort B : [2, 3, 4, 1, 5, 6, 8, 4, 2, 9, 12, -1, 3, 2, -4, -60] Pengurutan Merge Sort C : [1, 2, 3, 4, 5, 6, 8, 4, 2, 9, 12, -1, 3, 2, -4, -60] Pengurutan Merge Sort B : [1, 2, 3, 4, 5, 6, 8, 4, 2, 9, 12, -1, 3, 2, -4, -60] Pengurutan Merge Sort C : [1, 2, 3, 4, 4, 5, 6, 8, 2, 9, 12, -1, 3, 2, -4, -60] Pengurutan Merge Sort B : [1, 2, 3, 4, 4, 5, 6, 8, 2, 9, 12, -1, 3, 2, -4, -60] Pengurutan Merge Sort C : [-60, -4, -1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 6, 8, 9, 12] Data diurutkan : [-60, -4, -1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 6, 8, 9, 12]

100 Tugas II (Perorang) 1. Buat program untuk Menghitung Rata rata Nilai (gunakan List) 2. Buat Program untuk mencari Nilai tengah 3. Buat Program untuk menghitung frekuensi kemunculan data kemudian menampilkan Nilai terbesar dan terkecil dari data di list tersebut (jumlah data di list minimal 10) kemudian urutkan data tersebut dengan merge sort

101 Tugas II (kelompok) (kerjakan berkelompok 3 orang dan dikumpulkan ke Google Class paling lambat 1 hari sebelum UTS)  1. Buat Program untuk menentukan pemenang dari suatu perlombaan dengan jumlah peserta 20 orang. Jumlah pertandingan terdiri dari 20 pertandingan Tampilkan hanya pemenang ke 1 hingga ke 6. untuk urutan 1 hingga 3 disebut sebagai juara 1, juara 2 dan juara 3, sedangkan pemenang 4 hingga 6 disebut sebagai pemenang harapan 1, hingga harapan 3 Pemenang diperoleh dari penghitungan frekuensi kemunculan nomor peserta yang paling sering muncul di list dari ke 20 pertandingan yang diselenggarakan. Data pemenang dari 15 pertandingan sebagai Berikut : Pemenang=[2,3,2,4,1,3,6,7,10,11,12,14,14,2,2,4,8,6,19,10] Keluaran Aplikasi 1.Tampilkan kemunculan Frekuensi yang pernah memperoleh kemenangan dari seluruh pertandingan 2.Tampilkan kemunculan frekuensi tesebut dengan memilih 3 paling atas disebut juara 3.Sedangkan 3 berikutnya disebut sebagai juara harapan 4.Sisanya tidak ditampilkan 5.Gunakan comment di dalam program untuk menuliskan peserta di setiap kelompok Pesan : Dalam membuat program gunakan struktur program yang paling efisien dan gunakan sub program atau modul

102 Search /Pencarian Pencarian adalah mencari data di sebuah lokasi misal list.  Algoritma pencarian paling sederhana dengan cara linier search yaitu membandingkan antara data yang dicari dengan data yang ada di dilist  Algoritma berikutnya yang sanggat efisien yaitu binary search

103 Binary Search

104 Implementasi Binary Search dan Linear Search (main Program) example=[9,3,1,2,5,4,2,8,7,12,11,2,17,11,2,18,20,35,60, 22,100] search=5 print('Data Awal ',example) print('Urutkan data') exampleSort=sortData(example) print(exampleSort) long=len(exampleSort) loopB=0 loopL=0 print('panjang Index : ',0,' - ',long-1) print('Angka yang dicari : ',search) print('Proses Pencarian Binary Search ') binary_search(search,exampleSort,0,long,loopB) print('\n\nProses Pencarian linear Search di lokasi berikut') print(example) linearSearch(search,example,long,loopL) Menggurutkan Data Angka yang dicari Pencarian dengan binary rekursi Pencarian dengan linear rekursi

105 Sub Program Binary Search def binary_search(search,value,low,high,loopB): if high ',high,'-',low,'Jumlah Loop',loopB) return loopB else: mid = (high + low) // 2 if value[mid]==search: print(value) print('data ditemukan di index ',mid,' data ', value[mid],'Jumlah Loop ',loopB) return loopB else: if search value[mid]: print('c5',value[mid]) binary_search(search,value,mid+1,high,loopB+1) print('c6', value[mid])

106 Sub Proggram Linear Search def linearSearch(search,value,long,loopL): if long<0: print('pencarian Liner hingga index ',long,'Data tidak ditemukan jumlah loop ',loopL) return loopL else: if search==value[long-1]: print ('data ',value[long-1], 'ditemukan di index ',long-1,'Jumlah Loop ',loopL) return loopL else: print(value[long-1]) linearSearch(search,value,long-1,loopL+1)

107 Sub Program Binary Search def sortData(value): for j in range(0, len(value)): for i in range(0, len(value) - 1): if value[i] > value[i + 1]: temp = value[i] value[i] = value[i + 1] value[i + 1] = temp return value

108 Output Search Binary Search (data ditemukan) Data Awal [9, 3, 1, 2, 5, 4, 2, 8, 7, 12, 11, 2, 17, 11, 2, 18, 20, 35, 60, 22, 100] Urutkan data [1, 2, 2, 2, 2, 3, 4, 5, 7, 8, 9, 11, 11, 12, 17, 18, 20, 22, 35, 60, 100] panjang Index : 0 - 20 Angka yang dicari : 5 Proses Pencarian Binary Search c3 9 c5 2 [1, 2, 2, 2, 2, 3, 4, 5, 7, 8, 9, 11, 11, 12, 17, 18, 20, 22, 35, 60, 100] data ditemukan di index 7 data 5 Jumlah Loop 2 c6 2

109 Output Search Linear Search (data ditemukan) Proses Pencarian linear Search di lokasi berikut [1, 2, 2, 2, 2, 3, 4, 5, 7, 8, 9, 11, 11, 12, 17, 18, 20, 22, 35, 60, 100] 100 60 35 22 20 18 17 12 11 9 8 7 data 5 ditemukan di index 7 Jumlah Loop 13

110 Output Binary Search (data tidak ditemukan Data Awal [9, 3, 1, 2, 5, 4, 2, 8, 7, 12, 11, 2, 17, 11, 2, 18, 20, 35, 60, 22, 100] Urutkan data [1, 2, 2, 2, 2, 3, 4, 5, 7, 8, 9, 11, 11, 12, 17, 18, 20, 22, 35, 60, 100] panjang Index : 0 - 20 Angka yang dicari : 50 Proses Pencarian Binary Search c5 9 c5 20 c3 60 c5 22 c5 35 Data tidak ditemukan hingga posisi index hi - low --> 18 - 19 Jumlah Loop 5 c6 35 c6 22 c6 20 c6 9

111 Output Linear Search (data tidak ditemukan) Proses Pencarian linear Search di lokasi berikut [1, 2, 2, 2, 2, 3, 4, 5, 7, 8, 9, 11, 11, 12, 17, 18, 20, 22, 35, 60, 100] 100 60 35 22 20 18 17 12 11 9 8 7 5 4 3 2 2 2 2 1 pencarian Liner hingga index -1 Data tidak ditemukan jumlahh Loop 22

112 Output Binary search Data tidak ditemukan Data Awal [9, 3, 1, 2, 5, 4, 2, 8, 7, 12, 11, 2, 17, 11, 2, 18, 20, 35, 60, 22, 100] Urutkan data [1, 2, 2, 2, 2, 3, 4, 5, 7, 8, 9, 11, 11, 12, 17, 18, 20, 22, 35, 60, 100] panjang Index : 0 - 20 Angka yang dicari : 50 Proses Pencarian c5 9 c5 20 c3 60 c5 22 c5 35 Data tidak ditemukan hingga posisi index hi - low --> 18 - 19 c6 35 c6 22 c4 60 c6 20 c6 9

113 Linked List (Pengertian) Linked List adalah cara penyimpanan data dengan mengaitkan antara 1 data dengan data berikutnya, digambarkan sebagai Berikut Kelebihan penyimpanan data dengan Linked List adalah 1.Mengefisienkan memory yang digunakan, karena dialokasikan saat dibutuhkan dan dibuang saat sudah tidak dibutuhkan 2.Data dapat dengan mudah disisipkan di lokasi mana saja, karena tidak bergantung Kepada indeks dari lokasi data Kerugian 1.Waktu pencarian lebih lama karena harus selalu memulai dari awal atau tergantung lokasi pointer terkini 2.Lokasi memori yang tidak terpakai dan tidak dihapus maka akan menjadi garbage collection (tempat sampah) yang menghabiskan memori komputer

114 Operasi dalam Linked List Operasi adalah aktivitas terhadap data di linked list yang terdiri dari 1.Menambah data (insert) 1.Di Head (Depan) 2.Tail (belakang) 3.Di Tengah (insert) 2.Menghapus data (delete) 3.Mengedit/mengubah data Bentuk Struktur linked list dari semua operasi diatas untuk model 1.Queue (antrian) 2.Stack (tumpukkan) 3.Tree (Pohon dan Heap)

115 Linked List (Menambah data ke tail)

116 Linked List Menambah Data ke head

117 Menambah Data di tengah (insert/sisip) (Code) (Code) Point A

118 Membuat Node Link List di Python dan Memahami Class Data Next Node Terdiri dari Data dan Next Dalam Membuat Node menggunakan class class adalah Menggabungkan Method dan Variabel Method diimplementasikan dengan menggunakan fungsi def class Product: __vendor_message = "Ini adalah rahasia" name = "" price = "" size = "" unit = "" def __init__(self, name): print ("Ini adalah constructor") self.name = name self.unit = "ml" self.size = 250 def get_vendor_message(self): print (self.__vendor_message) def set_price(self, price): self.price = price Variabel Privat Fungsi terpanggil otomatis saat class dipanggil, digunakan untuk menentukan kondisi awal Fungsi Memanggil var private Fungsi Mengeset variabel price Setiap method harus memiliki parameter self yang artinya method tersebut dimiliki dan terdaftar ke class tersebut untuk membedakan dari method atau fungsi yang ada di luar class

119 Memahami Class p = Product("Ultora Milek") p.set_price(5500) print (p.name,' dengan ukuran ',p.size,' harganya Rp.',p.price) # print p.__vendor_message p.get_vendor_message() p1 = Product("Indomilek") p1.set_price(5000) print (p1.name,' dengan ukuran ',p1.size,'harganya Rp. ',p1.price) print (p == p) print (p1 == p1) print (p == p1) Mengeset Kondisi awal konstruktor Mengeset price Memanggil var private Menguji variabel berbeda dari class yang sama

120 Keluaran Program Ini adalah constructor Ultora Milek dengan ukuran 250 harganya Rp. 5500 Ini adalah rahasia Ini adalah constructor Indomilek dengan ukuran 250 harganya Rp. 5000 True False

121 Membuat Node Linked List dengan class class Node: def __init__(self,val): self.val = val self.next = None # Pointer diisi Nilai NULL def traverse(self): node = self # start from the head node while node != None: print(node.val,'->',end='') # Membaca Node node = node.next # baca ke node berikutnya jika belum NULL print(' NULL') Mendefinisikan Node Membaca Node Data Next

122 Linked List node1 = Node(12) node2 = Node(99) node3 = Node(37) node1.next = node2 # 12->99 node2.next = node3 # 99->37 # Menelusuri Node : 12->99->37 node1.traverse() Mengisi Node Menyambungkan Node

123 Mendefinisikan Linked List dengan membentuk penunjuk class Head class Node: def __init__(self, dataval=None): self.dataval = dataval self.nextval = None class SLinkedList: def __init__(self): self.headval = None def listprint(self): printval = self.headval while printval is not None: print (printval.dataval) printval = printval.nextval

124 Mendefinisikan Linked List dengan membentul class Head list = SLinkedList() # mendefinisikan Variabel tersambung ke head list.headval = Node("Mon") #diisi node head e2 = Node("Tue") e3 = Node("Wed") # sambungkan link kepala ke berikutnya list.headval.nextval = e2 # sambungkan e2 ke e3 e2.nextval = e3 list.listprint() Mon Tue Wed

125 Menambah Data di head class Node: def __init__(self, dataval=None): self.dataval = dataval self.nextval = None class SLinkedList: def __init__(self): self.headval = None # Print the linked list def listprint(self): printval = self.headval while printval is not None: print (printval.dataval,’->’,end=‘’) printval = printval.nextval print(‘None’) def AtBegining(self,newdata): NewNode = Node(newdata) # Update New Node NewNode.nextval = self.headval self.headval = NewNode Sub Program Node Baru

126 Menambah Data di Head list = SLinkedList() list.headval = Node("Mon") e2 = Node("Tue") e3 = Node("Wed") list.headval.nextval = e2 e2.nextval = e3 list.AtBegining("Sun") list.listprint() list.AtBegining("Sat") list.listprint() Keluaran Program Sebelum ditambah di head Mon ->Tue ->Wed ->None ditambah Sun Sun ->Mon ->Tue ->Wed ->None ditambah Sat Sat ->Sun ->Mon ->Tue ->Wed ->None

127 Menambah Data di tail class Node: def __init__(self, dataval=None): self.dataval = dataval self.nextval = None class SLinkedList: def __init__(self): self.headval = None

128 Menambah Data di Tail #Function to add newnode def AtEnd(self, newdata): NewNode = Node(newdata) if self.headval is None: self.headval = NewNode return laste = self.headval while(laste.nextval): laste = laste.nextval laste.nextval=NewNode # Print the linked list def listprint(self): printval = self.headval while printval is not None: print (printval.datival,’->’,end=‘’) printval = printval.nextval print(‘None’)

129 Menambah Data di Tail (ekor) list = SLinkedList() list.headval = Node("Mon") e2 = Node("Tue") e3 = Node("Wed") list.headval.nextval = e2 e2.nextval = e3 List.listprint() list.AtEnd("Thu") list.listprint() list.AtEnd(“Fri") list.AtEnd(“Sat") list.listprint() Sebelum ditambah di ekor Mon ->Tue ->Wed ->None Ditambah Ekor Thu Mon ->Tue ->Wed ->Thu ->None Ditambah Ekor Fri, Sat Mon ->Tue ->Wed ->Thu ->Fri ->Sat ->None

130 Sub Program Menyisipkan Node di lokasi tertentu (deskripsi di slide ) slide class Node: def __init__(self, dataval=None): self.dataval = dataval self.nextval = None class SLinkedList: def __init__(self): self.headval = None

131 Sub Program Menyisipkan Node di lokasi tertentu (statis) # Function to add node def Inbetween(self,middle_node,newdata): if middle_node is None: print("The mentioned node is absent") return NewNode = Node(newdata) NewNode.nextval = middle_node.nextval middle_node.nextval = NewNode

132 Sub Program Menyisipkan Node di lokasi tertentu (dinamis) def InbetweenLocation(self,begin_node,location_node,newdata): if begin_node is None: print("The mentioned node is absent") return NewNode = Node(newdata) NewNode.nextval = begin_node.nextval begin_node.nextval=NewNode while begin_node.dataval is not location_node: begin_node = begin_node.nextval #pencarianLokasi

133 Cetak Link List Menyisipkan Node di lokasi tertentu # Print the linked list def listprint(self): printval = self.headval while printval is not None: print (printval.dataval,'->',end='') printval = printval.nextval print('None')

134 Main Program Menyisipkan Node di lokasi tertentu list = SLinkedList() list.headval = Node("Mon") e2 = Node("Tue") e3 = Node("Thu") list.headval.nextval = e2 e2.nextval = e3 print('Kondisi Awal') list.listprint() print('Ditambahkan Fri setelah "Tue"') list.Inbetween(list.headval.nextval,"Fri") list.listprint() print('Ditambahkan Sat setelah "Tue"') list.Inbetween(list.headval.nextval,"Sat") list.listprint()

135 Main Program Menyisipkan Node di lokasi tertentu print('Ditambahkan "Hari" setelah "Mon"') list.InbetweenLocation(list.headval,"Mon","Hari") list.listprint() print('Ditambahkan "Halo" setelah "Sat"') list.InbetweenLocation(list.headval,"Sat","Halo") list.listprint()

136 Output Program Kondisi Awal Mon ->Tue ->Thu ->None Ditambahkan Fri setelah "Tue" Mon ->Tue ->Fri ->Thu ->None Ditambahkan Sat setelah "Tue" Mon ->Tue ->Sat ->Fri ->Thu ->None Ditambahkan "Hari" setelah "Mon" Mon ->Hari ->Tue ->Sat ->Fri ->Thu ->None Ditambahkan "Halo" setelah "Sat" Mon ->Hari ->Tue ->Sat ->Halo ->Fri ->Thu ->None

137 Tugas Kelompok Buat Program yang dapat mensimulasikan Proses antrian dalam berobat dengan mekanisme 1.Setiap Peserta mengambil nomor antrian terlebih dahulu untuk mengambil nomor antrian pendaftaran berikutnya (asumsikan ada 30 pasien 2.Antrian yang telah didapat digunakan untuk mengantri kembali dokter yang akan dipilih dengan dokter yang tersedia yaitu dokter umum,dokter gigi, dan dokter kulit dengan cara menukar nomor antrian lama dengan nomor antrian sesuai dokter (Asumsikan masing masing dokter sesuai urutan diatas mendapat nomor antrian 15,10,5) 3.Pasien yang telah mengambil nomor antrian akan dipanggil sesuai urutan (asumsikan ada nomor yang tidak terpanggil 2 ~ 3 hingga pasien setiap dokternya) 4.Cetak tampilan simulasi antrian 1 hingga 3

138 Tugas Kelompok simulasi Stack Buat program studi kasus tumpukkan 1. Buat suatu tumpukkan dimana anda menyimpan data buku secara stack (tumpukkan), dimana setiap tumpukkan ada kategori buku (asumsi buat 3 kategori) 2. Saat hendak mencari buku dilakukan pencarian terlebih dahulu terhadap di setiap tumpukkan yang ada 3. Bila ditemukan di salah satu kategori tumpukkan maka ambil buku tersebut dengan anda harus mengeluarkan data tumpukkan buku yang ada diatasnya hingga buku tersebut dapat diambil 4. Setelah buku tersebut diambuil maka kembali kembali tumpukkan buku yang tadi sudah dikeluarkan

139 op 10 Programming Language In Demand Across The Globe #ProgrammingLanguage#ProgrammingLanguage #Programmer #Developer #SoftwareDeveloper#Programmer#Developer #SoftwareDeveloper


Download ppt "Struktur Data Kode Kelas Reg Sore 56fecs Eko Travada Unas PASIM."

Presentasi serupa


Iklan oleh Google