{ "cells": [ { "cell_type": "markdown", "id": "84f2660d", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Algoritma Pencarian (Searching)\n", "Dalam materi ini, kita akan menjelajahi berbagai algoritma dan pendekatan yang dirancang untuk mengatasi tantangan pencarian informasi. Dari pencarian sederhana hingga teknik pencarian yang lebih canggih, kita akan memahami bagaimana algoritma-algoritma ini bekerja di berbagai konteks dan bagaimana memilih pendekatan yang paling sesuai untuk permasalahan yang dihadapi.\n", "\n", "1. Masalah dasar komputasi **searching (pencarian)**.\n", "2. Searching adalah algoritma untuk mencari item dari sekumpulan item.\n", "3. Hasil pencarian dapat berupa **index position** atau data boolean." ] }, { "attachments": { "tozgxw495m5xzqkpv2c6.webp": { "image/webp": "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" } }, "cell_type": "markdown", "id": "9896ced3", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "![tozgxw495m5xzqkpv2c6.webp](attachment:tozgxw495m5xzqkpv2c6.webp)" ] }, { "cell_type": "markdown", "id": "589c0ab8", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Pencarian Instan: Menggunakan *keyword* in\n", "Di dalam Python terdapat sebuah operator yang dapat digunakan untuk pencarian data, yaitu operator in (keanggotaan), apakah sebuah data merupakan anggota dari sekolompok data. Contoh seperti pada kode berikut:" ] }, { "cell_type": "code", "execution_count": null, "id": "ad57b2cc", "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "daftar_nama = [\"Aris\", \"Angga\", \"Niko\", \"Radit\", \"Ozi\"]\n", "nama_dicari = \"niko\"\n", "\n", "daftar_nama_kecil = []\n", "for nama in daftar_nama:\n", " nama = nama.lower()\n", " daftar_nama_kecil.append(nama)\n", " \n", "if nama_dicari.lower() in daftar_nama_kecil:\n", " print(nama_dicari, \"ditemukan!\")\n", "else:\n", " print(nama_dicari, \"tidak ditemukan!\")\n" ] }, { "cell_type": "code", "execution_count": null, "id": "8d17f135", "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "print(nama_dicari.lower() in daftar_nama_kecil)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "27f3aef0", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### A. Linear (Sequential) Search\n", "Ketika data disimpan dalam bentuk koleksi seperti list (ordered), maka dapat simpulkan bahwa data tersebut mempunyai hubungan yang bersifat linear atau sequential. Setiap data akan disimpan dengan posisi tertentu dan relatif terhadap data yang lain. Di dalam Python posisi relatif tersebut merupakan index dari setiap item data, karena index dari sebuah item data adalah berupa urutan angka yang dimulai dari angka terkecil (0,1,2,….) maka sangat dimungkinkan untuk membaca setiap data dalam list secara berurutan (sequential), yang kemudian disebut dengan pencarian secara sequential." ] }, { "attachments": { "image.png": { "image/png": "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" } }, "cell_type": "markdown", "id": "0cdd82b1", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "![image.png](attachment:image.png)\n", "\n", "Gambar di atas menjelaskan proses pencarian data dimulai dari item data pertama (ujung kiri, indeks = 0), kemudian dilanjutkan ke arah kanan secara berurutan sampai data yang dicari ditemukan, jika sampai posisi data yang terakhir maka data yang dicari tidak ditemukan maka hasilnya adalah False, atau data yang dicari tidak ditemukan." ] }, { "cell_type": "code", "execution_count": 12, "id": "03b85570", "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mencari 5 -> 1\n", "Mencari 7 -> 2\n" ] } ], "source": [ "def linear_search(sequence, target):\n", " for index, item in enumerate(sequence):\n", " if item == target:\n", " return index\n", " return -1\n", "\n", "data = [0, 5, 7, 10, 15]\n", "print(\"Mencari 5 ->\", linear_search(data, 5))\n", "print(\"Mencari 7 ->\", linear_search(data, 7))" ] }, { "cell_type": "code", "execution_count": 13, "id": "ea626af7", "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Judul lagu 'Dance Monkey' ditemukan pada indeks 2.\n" ] } ], "source": [ "def linear_search(arr, target):\n", " for i in range(len(arr)):\n", " if arr[i] == target:\n", " return i # Mengembalikan indeks elemen yang sesuai\n", " return -1 # Mengembalikan -1 jika nilai tidak ditemukan\n", "\n", "song_titles = [\"Shape of You\", \"Blinding Lights\",\n", " \"Dance Monkey\", \"Memories\", \"Uptown Funk\"]\n", "target_song = \"Dance Monkey\"\n", "\n", "result = linear_search(song_titles, target_song)\n", "\n", "if result != -1:\n", " print(f\"Judul lagu '{target_song}' ditemukan pada indeks {result}.\")\n", "else:\n", " print(f\"Judul lagu '{target_song}' tidak ditemukan dalam dataset.\")\n" ] }, { "cell_type": "code", "execution_count": 14, "id": "f4f34b7b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Judul buku '1984' ditemukan pada indeks 2.\n" ] } ], "source": [ "def linear_search(arr, target):\n", " for i in range(len(arr)):\n", " if arr[i] == target:\n", " return i # Mengembalikan indeks elemen yang sesuai\n", " return -1 # Mengembalikan -1 jika nilai tidak ditemukan\n", "\n", "book_titles = [\n", " \"Harry Potter and the Sorcerer's Stone\",\n", " \"To Kill a Mockingbird\",\n", " \"1984\",\n", " \"The Great Gatsby\",\n", " \"Pride and Prejudice\"\n", "]\n", "target_book = \"1984\"\n", "\n", "result = linear_search(book_titles, target_book)\n", "\n", "if result != -1:\n", " print(f\"Judul buku '{target_book}' ditemukan pada indeks {result}.\")\n", "else:\n", " print(f\"Judul buku '{target_book}' tidak ditemukan dalam dataset.\")\n" ] }, { "attachments": { "image.png": { "image/png": "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" } }, "cell_type": "markdown", "id": "6b1ebfd6", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### B. Binary Search\n", "* Jika data kita adalah data yang telah diurutkan terlebih dahulu maka Binary search dapat melakukan pencarian lebih cepat jika dibanding dengan sequential search, dimana proses pencarian data dalam binary search akan dimulai dari bagian tengah list.\n", "* Jika item yang dicari berada di tengah pencarian maka pencarian akan berakhir, tetapi jika item tidak ditemukan di tengah, pencarian berikutnya dapat dilakukan di setengah bagian atas atau setengah bagian bawah, hal ini tergantung pada besar atau kecilnya item data yang dicari.\n", "* Proses ini akan diulang terus sampai data yang dicari ditemukan atau mencapai batas akhir list/ item (tidak ditemukan).\n", "\n", "Gambar di bawah adalah ilustrasi proses pencarain angka 54 dalam list, dengan menggunakan binary search.\n", "\n", "![image.png](attachment:image.png)" ] }, { "cell_type": "markdown", "id": "3e0912ec", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Hal-hal penting terkait binary search\n", "1. **Data Terurut**: Binary Search hanya dapat bekerja pada dataset yang terurut, baik itu bilangan bulat, bilangan desimal, atau string. Jika dataset string diurutkan, Binary Search tetap dapat digunakan.\n", "2. **Komparasi String**: Dalam Python, string dibandingkan berdasarkan urutan leksikografis, yaitu karakter pertama yang berbeda dalam dua string akan memutuskan urutan. Misalnya, \"apple\" akan dianggap lebih kecil dari \"banana\".\n", "3. **Perhatikan Pembagian Dataset**: Saat menerapkan Binary Search pada dataset string, pastikan Anda menghitung nilai tengah dengan benar dan membagi dataset sesuai dengan perbandingan leksikografis.\n", "4. **Kompleksitas**: Meskipun Binary Search efisien untuk dataset besar, pencarian string mungkin lebih kompleks daripada pencarian bilangan, terutama jika string memiliki panjang yang berbeda-beda.\n", "5. **Fungsi Hash**: Jika Anda ingin mencari string dalam dataset yang tidak terurut, Anda mungkin ingin mempertimbangkan penggunaan struktur data seperti tabel hash untuk pencarian yang lebih efisien." ] }, { "cell_type": "code", "execution_count": 15, "id": "b51bcdef", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['Brave New World', 'Fahrenheit 451', 'Lord of the Flies', 'The Catcher in the Rye', 'The Giver']\n" ] } ], "source": [ "book_titles = [\n", " \"Brave New World\",\n", " \"Fahrenheit 451\",\n", " \"Lord of the Flies\",\n", " \"The Catcher in the Rye\",\n", " \"The Giver\"\n", "]\n", "target_book = \"Fahrenheit 451\"\n", "\n", "# Urutkan list judul buku sebelum menggunakan Binary Search\n", "book_titles.sort()\n", "print(book_titles)" ] }, { "cell_type": "code", "execution_count": 16, "id": "38cb355f", "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Judul buku 'Fahrenheit 451' ditemukan pada indeks 1.\n" ] } ], "source": [ "def binary_search(arr, target):\n", " low = 0\n", " high = len(arr) - 1\n", " \n", " while low <= high:\n", " mid = (low + high) // 2\n", " if arr[mid] == target:\n", " return mid # Mengembalikan indeks elemen yang sesuai\n", " elif arr[mid] < target:\n", " low = mid + 1\n", " else:\n", " high = mid - 1\n", " return -1 # Mengembalikan -1 jika nilai tidak ditemukan\n", "\n", "result = binary_search(book_titles, target_book)\n", "\n", "if result != -1:\n", " print(f\"Judul buku '{target_book}' ditemukan pada indeks {result}.\")\n", "else:\n", " print(f\"Judul buku '{target_book}' tidak ditemukan dalam dataset.\")\n" ] }, { "cell_type": "code", "execution_count": 17, "id": "dc1db849", "metadata": { "scrolled": true, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "'apple' < 'banana': True\n", "'banana' > 'cherry': False\n", "'apple' >= 'cherry': False\n", "'banana' <= 'banana': True\n", "'apple' != 'cherry': True\n", "'banana' == 'banana': True\n" ] } ], "source": [ "string1 = \"apple\"\n", "string2 = \"banana\"\n", "string3 = \"cherry\"\n", "\n", "# Perbandingan kurang dari\n", "print(f\"'{string1}' < '{string2}':\", string1 < string2) # Output: 'apple' < 'banana': True\n", "\n", "# Perbandingan lebih dari\n", "print(f\"'{string2}' > '{string3}':\", string2 > string3) # Output: 'banana' > 'cherry': False\n", "\n", "# Perbandingan lebih dari atau sama dengan\n", "print(f\"'{string1}' >= '{string3}':\", string1 >= string3) # Output: 'apple' >= 'cherry': False\n", "\n", "# Perbandingan kurang dari atau sama dengan\n", "print(f\"'{string2}' <= '{string2}':\", string2 <= string2) # Output: 'banana' <= 'banana': True\n", "\n", "# Perbandingan tidak sama dengan\n", "print(f\"'{string1}' != '{string3}':\", string1 != string3) # Output: 'apple' != 'cherry': True\n", "\n", "# Perbandingan sama dengan\n", "print(f\"'{string2}' == '{string2}':\", string2 == string2) # Output: 'banana' == 'banana': True\n" ] }, { "cell_type": "markdown", "id": "75fa0e10", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### C. Hashing Search\n", "Pencarian Hashing adalah algoritma pencarian yang menggunakan struktur data tabel hash (hash table) untuk mencari nilai dengan efisien. Pada dasarnya, algoritma ini mengubah nilai yang ingin dicari menjadi indeks dalam tabel hash, di mana diharapkan nilai yang dicari ada." ] }, { "cell_type": "markdown", "id": "f3a57ebc", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### Cara Kerja\n", "1. Data dimasukkan ke dalam tabel hash menggunakan fungsi hash.\n", "2. Saat pencarian dilakukan, nilai yang ingin dicari diubah menjadi indeks menggunakan fungsi hash yang sama.\n", "3. Algoritma mengunjungi indeks tersebut dalam tabel hash untuk mencari nilai.\n", "4. Jika nilai ditemukan pada indeks tersebut, pencarian berhasil.\n", "5. Jika terjadi tabrakan hash (dua nilai dihasilkan oleh fungsi hash yang sama), algoritma harus memiliki strategi untuk mengatasi tabrakan tersebut." ] }, { "cell_type": "code", "execution_count": 18, "id": "fdbc4542", "metadata": { "scrolled": true, "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "class HashTable:\n", " def __init__(self, size):\n", " self.size = size\n", " self.table = [None] * size\n", " \n", " def hash_function(self, value):\n", " return value % self.size\n", " \n", " def insert(self, value):\n", " index = self.hash_function(value)\n", " if self.table[index] is None:\n", " self.table[index] = [value] # Menggunakan chaining untuk menangani collision\n", " else:\n", " self.table[index].append(value)\n", " \n", " def search(self, value):\n", " index = self.hash_function(value)\n", " if self.table[index] is not None:\n", " if value in self.table[index]:\n", " return index\n", " return -1" ] }, { "cell_type": "markdown", "id": "fe7b3121-f0fb-4ab6-a119-95712fa66589", "metadata": {}, "source": [ "Variabel **size** pada kelas HashTable diperlukan untuk menentukan ukuran dari tabel hash yang akan dibuat. Ukuran tabel hash memiliki pengaruh pada bagaimana data akan diatur dan dicari di dalam tabel tersebut. Berikut beberapa alasan mengapa variabel size diperlukan:\n", "\n", "1. Distribusi Data yang Efisien: Ukuran tabel hash sangat mempengaruhi efisiensi distribusi data. Jika ukuran tabel terlalu kecil, kemungkinan terjadinya kolisi (collision) akan meningkat, yaitu saat dua atau lebih data memiliki hash yang sama. Di sisi lain, jika ukuran tabel terlalu besar, bisa menyebabkan banyak ruang kosong (waste) dalam tabel. Dengan memilih ukuran yang tepat, distribusi data di tabel hash dapat diatur secara efisien.\n", "2. Hashing Function: Hash function (fungsi hash) biasanya menghasilkan nilai antara 0 dan size-1, di mana size adalah ukuran tabel hash. Hash function memetakan nilai data ke indeks di dalam tabel. Dengan adanya size, hash function dapat menghasilkan indeks yang valid dan sesuai dengan ukuran tabel.\n", "3. Penanganan Kolisi: Ukuran tabel hash juga berhubungan dengan cara penanganan kolisi. Dalam metode penanganan kolisi seperti chaining (seperti yang Anda lakukan dalam kode), ukuran tabel akan mempengaruhi seberapa sering kolisi akan terjadi dan seberapa baik data dapat diorganisir dalam setiap slot tabel.\n", "4. Penggunaan Memori: Ukuran tabel hash juga berkaitan dengan penggunaan memori. Tabel hash dengan ukuran yang lebih besar akan menggunakan lebih banyak memori. Oleh karena itu, perlu mempertimbangkan keseimbangan antara efisiensi penyimpanan dan performa pencarian.\n", "\n", "Dalam kode yang diberikan, ukuran tabel hash (size) digunakan dalam fungsi hash, dalam menginisialisasi tabel (self.table = [None] * size), serta dalam berbagai operasi pengelolaan tabel hash. Ukuran yang dipilih haruslah disesuaikan dengan karakteristik data yang akan disimpan dan diakses melalui tabel hash tersebut." ] }, { "cell_type": "code", "execution_count": 19, "id": "7a00603e-bccf-4d67-b818-df4c52ac1c97", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[None, None, None, None, None, [5, 15, 25], None, None, None, None]\n" ] } ], "source": [ "# Inisialisasi tabel hash\n", "hash_table = HashTable(10)\n", "hash_table.insert(5)\n", "hash_table.insert(15)\n", "hash_table.insert(25)\n", "\n", "print(hash_table.table)" ] }, { "cell_type": "code", "execution_count": 20, "id": "abc3a500-a136-4419-887c-58ac53c0ccd3", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Nilai 15 ditemukan pada indeks 5.\n" ] } ], "source": [ "search_value = 15\n", "result = hash_table.search(search_value)\n", "\n", "if result != -1:\n", " print(f\"Nilai {search_value} ditemukan pada indeks {result}.\")\n", "else:\n", " print(f\"Nilai {search_value} tidak ditemukan dalam tabel hash.\")" ] }, { "cell_type": "code", "execution_count": 22, "id": "7822856a-fddf-4274-b40b-73c8410f7282", "metadata": { "scrolled": true }, "outputs": [], "source": [ "class StringHashTable:\n", " def __init__(self, size):\n", " self.size = size\n", " self.table = [[] for _ in range(size)] # Menggunakan list kosong untuk setiap slot\n", " \n", " def hash_function(self, string):\n", " total = 0\n", " for char in string:\n", " total += ord(char) # Menggunakan nilai ASCII karakter untuk menghasilkan hash\n", " return total % self.size\n", " \n", " def insert(self, string):\n", " index = self.hash_function(string)\n", " slot = self.table[index]\n", " if string not in slot:\n", " slot.append(string)\n", " \n", " def search(self, string):\n", " index = self.hash_function(string)\n", " slot = self.table[index]\n", " if string in slot:\n", " return index\n", " return -1" ] }, { "cell_type": "code", "execution_count": 23, "id": "0bf155d2-faf0-475e-a787-739d7dea25fb", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[['apple'], [], [], ['cherry'], [], [], [], [], [], ['banana']]\n" ] } ], "source": [ "# Inisialisasi tabel hash\n", "hash_table = StringHashTable(10)\n", "hash_table.insert(\"apple\")\n", "hash_table.insert(\"banana\")\n", "hash_table.insert(\"cherry\")\n", "\n", "print(hash_table.table)" ] }, { "cell_type": "code", "execution_count": 24, "id": "841795b1-5c32-4ee8-9172-470f59046693", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "String 'banana' ditemukan pada indeks 9.\n" ] } ], "source": [ "search_string = \"banana\"\n", "result = hash_table.search(search_string)\n", "\n", "if result != -1:\n", " print(f\"String '{search_string}' ditemukan pada indeks {result}.\")\n", "else:\n", " print(f\"String '{search_string}' tidak ditemukan dalam tabel hash.\")" ] }, { "cell_type": "markdown", "id": "29994b4b", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### D. Mencari File\n", "Kode ini adalah sebuah program yang bertujuan untuk melakukan pencarian berkas di dalam sebuah direktori dan subdirektorinya. Tujuannya adalah untuk menemukan berkas dengan nama tertentu yang disebutkan sebagai target." ] }, { "cell_type": "code", "execution_count": null, "id": "5a1ce9cb", "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "from IPython.display import clear_output\n", "\n", "import os # modul untuk berkomunikasi dengan operating system\n", "import time" ] }, { "cell_type": "code", "execution_count": null, "id": "b4e457ae", "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "import os\n", "\n", "def search_file(root_dir, target=\"\"):\n", " def search_recursive(directory):\n", " for item in os.listdir(directory):\n", " current = os.path.join(directory, item)\n", " try:\n", " if os.path.isfile(current):\n", " print(f\"Searching for '{target}' in '{current}'\")\n", " if item == target:\n", " print(f\"'{target}' found at '{current}'\")\n", " return True\n", " else:\n", " print(f\"Entering directory: '{current}'\")\n", " if search_recursive(current):\n", " return True\n", " time.sleep(0.05)\n", " clear_output(wait=True)\n", " except PermissionError:\n", " pass\n", " return False\n", " print(f\"Searching for '{target}' in '{root_dir}'\")\n", " if search_recursive(root_dir):\n", " print(f\"Search for '{target}' completed.\")\n", " else:\n", " print(f\"'{target}' not found in '{root_dir}'.\")\n", "\n", "search_file(\"D:\\\\Warehouse\\\\\", \"layout_siswa.xlsx\")\n" ] }, { "cell_type": "markdown", "id": "f8fb1b6d-1eda-442e-b75a-2677f4c4d8ec", "metadata": {}, "source": [ "#### Flowchart Pencarian Berkas\n", "\n", "1. **Start:**\n", " - Mulai dari simbol yang menandakan awal dari aliran.\n", "\n", "2. **Import `os` Module:**\n", " - Simbol ini menggambarkan impor modul `os`.\n", "\n", "3. **Define `search_file` Function:**\n", " - Simbol ini menunjukkan definisi fungsi `search_file` dengan dua parameter: `root_dir` dan `target`.\n", "\n", "4. **Get List of Elements:**\n", " - Simbol ini menggambarkan pengambilan daftar elemen (berkas dan subdirektori) dalam `root_dir`.\n", "\n", "5. **Sort Elements:**\n", " - Simbol ini menggambarkan pengurutan elemen-elemen berdasarkan tipe (berkas atau direktori).\n", "\n", "6. **Iterate Through Elements:**\n", " - Simbol ini mewakili iterasi melalui setiap elemen dalam daftar yang telah diurutkan.\n", "\n", "7. **Check Element Type:**\n", " - Simbol ini menggambarkan pemeriksaan apakah elemen saat ini adalah berkas atau direktori.\n", "\n", "8. **If Element is File:**\n", " - Jika elemen adalah berkas, tindakan berikutnya adalah pencarian `target` dalam berkas ini.\n", "\n", "9. **Print Search Message (File):**\n", " - Simbol ini mewakili pencetakan pesan bahwa sedang mencari `target` dalam berkas.\n", "\n", "10. **Check if Target Found (File):**\n", " - Jika `target` ditemukan dalam berkas, tindakan selanjutnya adalah menghentikan pencarian.\n", "\n", "11. **Print Found Message (File):**\n", " - Simbol ini menggambarkan pencetakan pesan bahwa `target` ditemukan dalam berkas.\n", "\n", "12. **If Element is Directory:**\n", " - Jika elemen adalah direktori, tindakan berikutnya adalah menjelajahi subdirektori dan berkas di dalamnya.\n", "\n", "13. **Print Search Message (Directory):**\n", " - Simbol ini mewakili pencetakan pesan bahwa sedang mencari `target` dalam direktori.\n", "\n", "14. **Recursive Call (Directory):**\n", " - Simbol ini mewakili pemanggilan rekursif fungsi `search_file` untuk menjelajahi subdirektori.\n", "\n", "15. **Try-Except (Permission Handling):**\n", " - Simbol ini menggambarkan penanganan izin dengan menggunakan pernyataan `try` dan `except`.\n", "\n", "16. **Print Progress Message:**\n", " - Simbol ini menggambarkan pencetakan pesan mengenai setiap langkah pencarian.\n", "\n", "17. **Print Finished Message:**\n", " - Simbol ini mewakili pencetakan pesan bahwa pencarian telah selesai setelah semua elemen diperiksa.\n", "\n", "18. **End:**\n", " - Simbol ini menandakan akhir dari aliran.\n", "\n", "19. **Call `search_file` Function:**\n", " - Simbol ini mewakili pemanggilan fungsi `search_file` dengan argumen `root_dir` sebagai \"D:\\Warehouse\\\".\n", "\n", "20. **End Result:**\n", " - Aliran selesai dengan memberikan informasi tentang proses pencarian berkas dan direktori di dalam \"D:\\Warehouse\\\" dan subdirektorinya.\n" ] }, { "cell_type": "markdown", "id": "b81252b1-1320-4ce0-8f6f-6c5d5d5b94ac", "metadata": {}, "source": [ "### Soal atau Latihan Algoritma Pencarian\n", "\n", "**Soal 1: Pencarian Nama dalam Daftar**
\n", "Andi adalah seorang guru dan dia memiliki daftar nama siswa dalam kelasnya. Dia ingin mencari apakah nama \"Rina\" ada dalam daftar tersebut. Bantulah Andi dengan membuat program pencarian linear untuk menemukan apakah \"Rina\" ada dalam daftar atau tidak.\n", "\n", "**Soal 2: Pencarian Angka dalam Array**
\n", "Budi memiliki sebuah array berisi angka-angka. Dia ingin mencari apakah angka 25 ada dalam array tersebut. Bantu Budi dengan membuat program pencarian linear yang dapat menemukan apakah angka 25 ada dalam array atau tidak.\n", "\n", "**Soal 3: Pencarian Karakter dalam Kata**
\n", "Citra memiliki sebuah kata acak, misalnya \"chocolate\". Dia ingin mencari apakah huruf \"o\" ada dalam kata tersebut. Bantu Citra dengan membuat program pencarian linear untuk menemukan apakah huruf \"o\" ada dalam kata atau tidak." ] }, { "cell_type": "markdown", "id": "fd829184-a776-4340-bf63-e9b3f8086d60", "metadata": {}, "source": [ "#### Contoh Jawaban Soal Nomor 1" ] }, { "cell_type": "code", "execution_count": null, "id": "8373c08d-89c8-415e-b374-978866ffd174", "metadata": {}, "outputs": [], "source": [ "def linear_search(names, target_name):\n", " for index, name in enumerate(names):\n", " if name == target_name:\n", " return index\n", " return -1\n", "\n", "# Daftar nama siswa dalam kelas\n", "student_names = [\"Andi\", \"Budi\", \"Citra\", \"Dina\", \"Eka\", \"Fajar\"]\n", "\n", "# Nama yang ingin dicari\n", "search_name = \"Rina\"\n", "\n", "# Melakukan pencarian linear\n", "result = linear_search(student_names, search_name)\n", "\n", "# Menampilkan hasil pencarian\n", "if result != -1:\n", " print(f\"Nama {search_name} ditemukan pada indeks {result}.\")\n", "else:\n", " print(f\"Nama {search_name} tidak ditemukan dalam daftar.\")\n" ] } ], "metadata": { "celltoolbar": "Slideshow", "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.4" }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 5 }