Sabtu, 28 Mei 2022

Software Requirements Specification for Rancang Bangun Aplikasi Transaksi Toko ATK

Software Requirements Specification

for

<Rancang Bangun Aplikasi Transaksi Toko ATK >

Version 1.0 

Prepared by <Adelia Octaviani - 20312103>

<Adella Widiyanti - 20312146>

<Dwi Indriati - 20312041>

<Sodikin - 20312074>

<organization>

<24 May 2022 >

 

Table of Contents

Table of Contents ii

Revision History ii

1. Introduction 1

1.1 Purpose 1

1.2 Document Conventions 1

1.3 Intended Audience and Reading Suggestions 1

1.4 Product Scope 1

1.5 References 1

2. Overall Description 2

2.1 Product Perspective 2

2.2 Product Functions 2

2.3 User Classes and Characteristics 2

2.4 Operating Environment 2

2.5 Design and Implementation Constraints 2

2.6 User Documentation 2

2.7 Assumptions and Dependencies 3

3. External Interface Requirements 3

3.1 User Interfaces 3

3.2 Hardware Interfaces 3

3.3 Software Interfaces 3

3.4 Communications Interfaces 3

4. System Features 4

4.1 System Feature 1 4

4.2 System Feature 2 (and so on) 4

5. Other Nonfunctional Requirements 4

5.1 Performance Requirements 4

5.2 Safety Requirements 5

5.3 Security Requirements 5

5.4 Software Quality Attributes 5

5.5 Business Rules 5

6. Other Requirements 5

Appendix A: Glossary 5

Appendix B: Analysis Models 5

Appendix C: To Be Determined List 6



Revision History

Name Date Reason For Changes Version



 

1. Introduction

1.1 Purpose 

Dokumen ini menjelaskan tentang spesifikasi persyaratan perangkat lunak Aplikasi Kasir Toko ATK. Tujuan penulisan dokumen ini adalah untuk memberikan penjelasan mengenai perangkat lunak yang akan dibangun. 

1.2 Document Conventions

<Describe any standards or typographical conventions that were followed when writing this SRS, such as fonts or highlighting that have special significance. For example, state whether priorities  for higher-level requirements are assumed to be inherited by detailed requirements, or whether every requirement statement is to have its own priority.>

1.3 Intended Audience and Reading Suggestions

Pengguna dari dokumen ini adalah pengembang petrangkat lunak  Aplikasi Kasir Toko ATK pengguna (user) dari perangkat lunak atau personil-personil yang terlibat dalam sistem. Dokumen ini akan digunakan sebagai bahan acuan dalam proses pengembangan dan sebagai bahan evaluasi pada saat proses pengembangan perangkt lunak maupun di akhir pengembangannya. Dengan adanya dokumen ini diharapkan pengembangan perangkat lunak akan lebih terarah dan lebih terfokus serta tidak menimbulkan ambiguitas bagi pengembang perangkat lunak Aplikasi Kasir Toko ATK.

1.4 Product Scope

Perangkat lunak yang akan dikembangkan adalah perangkat lunak Aplikasi Kasir Toko ATK, yaitu merupakan perangkat lunak yang digunakan untuk mempermudah proses administrasi dan jual beli ATK. Sistem mampu melayani pemilihan barang yang dibeli dan perhitungan harga dari barang yang di pilih. Admin dan karyawan dapat melihat rekapitulasi hasil penjualan dan hasil pembelian.admin dan karyawan dapat melihat persediaan barang. 

1.5 References

http://pramdana.blogspot.com/?view=magazine https://dokumen.tips/documents/srs-sistem-informasi-jual-beli-obat-pada-apotek.html 

2. Overall Description

2.1 Product Perspective

Adapun gambaran perancangan dan desain aplikasi kasir Toko ATK dapat dilihat pada bagan berikut :

2.2 Product Functions

Fungsi dari perangkat lunak Aplikasi Kasir Toko ATK  ini adalah untuk merekam semua kegiatan yang berhubungan dengan proses transaksi di dalam penjualan. Selain itu juga dapat memudahkan perusahaan membuat dokumen- dokumen seperti penawaran, Invoice, SO, dll

2.3 User Classes and Characteristics

Adapun user karakteristik dari pengguna Aplikasi Kasir ini adalah sebagai berikut :

User Jumlah Kriteria

Administrasi 1 1. Melakukan semua fungsi administrasi

2. Melakukan fungsi Supervisor dan operator 

Supervisor 1 1. Memonitor laporan transaksi

2. Melakukan konfirmasi atas perubahan data stock barang yang dilakukan oleh operatot

3. Melakukan fungsi operator

Operator 1 1. Merekam semua kegiatan transaksi kedalam aplikasi

2. Membuat dokumen-dokumen yang dibutuhkan 


2.4 Operating Environment

<Describe the environment in which the software will operate, including the hardware platform, operating system and versions, and any other software components or applications with which it must peacefully coexist.>

2.5 Design and Implementation Constraints

<Describe any items or issues that will limit the options available to the developers. These might include: corporate or regulatory policies; hardware limitations (timing requirements, memory requirements); interfaces to other applications; specific technologies, tools, and databases to be used; parallel operations; language requirements; communications protocols; security considerations; design conventions or programming standards (for example, if the customer’s organization will be responsible for maintaining the delivered software).>

2.6 User Documentation

<List the user documentation components (such as user manuals, on-line help, and tutorials) that will be delivered along with the software. Identify any known user documentation delivery formats or standards.>

2.7 Assumptions and Dependencies

Asumsi yang ada pada proses perencanaan yang telah dibuat dalam proyek rekayasa perangkat lunak tersebut adalah :

1. Proyek tidak akan berubah selama masa pengerjaan proyek ini 

2. Sumber daya teridentifikasi akan terrsedia atas permintaan

3. Pendanaan telah disetujui akan tersedia atas permintaan

3. External Interface Requirements

3.1 User Interfaces




3.2 Hardware Interfaces

Tidak ada hardware interfaces dalam perangkat lunak yang akan di kembangkan

3.3 Software Interfaces

Pada penerapan proyek ini menggunakan Three Tier. Aplikasi client berupa aplikasi yang memiliki kemampuan membaca kode program yang dikirim oleh web server menjadi objek grafik. Server apliaksi bertanggung jawab mengelola komponen logika aplikasi yang akan ditampilkan pada aplikasi client. Komponen database disebar pada tier 3(sever database). Client hanya bisa membaca interpretasi dari server aplikasi atau web server, sedangkan server aplikasi adalah yang mengelola data server sebuah aplikasi dan data tersebut terletak pada server.

3.4 Communications Interfaces

Tidak seberapa perlu adanya antar muka khusus untuk interkoneksi dalam database server, namun tetap membutuhkan suatu jaringan yang cukup stabil dan reliable untuk proses transfer data dari client ke server atau sebaliknya.

4. System Features

<This template illustrates organizing the functional requirements for the product by system features, the major services provided by the product. You may prefer to organize this section by use case, mode of operation, user class, object class, functional hierarchy, or combinations of these, whatever makes the most logical sense for your product.>

4.1 System Feature 1

<Don’t really say “System Feature 1.” State the feature name in just a few words.>

4.1.1 Description and Priority

<Provide a short description of the feature and indicate whether it is of High, Medium, or Low priority. You could also include specific priority component ratings, such as benefit, penalty, cost, and risk (each rated on a relative scale from a low of 1 to a high of 9).>

4.1.2 Stimulus/Response Sequences

<List the sequences of user actions and system responses that stimulate the behavior defined for this feature. These will correspond to the dialog elements associated with use cases.>

4.1.3 Functional Requirements

<Itemize the detailed functional requirements associated with this feature. These are the software capabilities that must be present in order for the user to carry out the services provided by the feature, or to execute the use case. Include how the product should respond to anticipated error conditions or invalid inputs. Requirements should be concise, complete, unambiguous, verifiable, and necessary. Use “TBD” as a placeholder to indicate when necessary information is not yet available.>

<Each requirement should be uniquely identified with a sequence number or a meaningful tag of some kind.>

REQ-1:

REQ-2:

4.2 System Feature 2 (and so on)

5. Other Nonfunctional Requirements

5.1 Performance Requirements

<If there are performance requirements for the product under various circumstances, state them here and explain their rationale, to help the developers understand the intent and make suitable design choices. Specify the timing relationships for real time systems. Make such requirements as specific as possible. You may need to state performance requirements for individual functional requirements or features.>

5.2 Safety Requirements

<Specify those requirements that are concerned with possible loss, damage, or harm that could result from the use of the product. Define any safeguards or actions that must be taken, as well as actions that must be prevented. Refer to any external policies or regulations that state safety issues that affect the product’s design or use. Define any safety certifications that must be satisfied.>

5.3 Security Requirements

<Specify any requirements regarding security or privacy issues surrounding use of the product or protection of the data used or created by the product. Define any user identity authentication requirements. Refer to any external policies or regulations containing security issues that affect the product. Define any security or privacy certifications that must be satisfied.>

5.4 Software Quality Attributes

<Specify any additional quality characteristics for the product that will be important to either the customers or the developers. Some to consider are: adaptability, availability, correctness, flexibility, interoperability, maintainability, portability, reliability, reusability, robustness, testability, and usability. Write these to be specific, quantitative, and verifiable when possible. At the least, clarify the relative preferences for various attributes, such as ease of use over ease of learning.>

5.5 Business Rules

<List any operating principles about the product, such as which individuals or roles can perform which functions under specific circumstances. These are not functional requirements in themselves, but they may imply certain functional requirements to enforce the rules.>

6. Other Requirements

<Define any other requirements not covered elsewhere in the SRS. This might include database requirements, internationalization requirements, legal requirements, reuse objectives for the project, and so on. Add any new sections that are pertinent to the project.>

Appendix A: Glossary

<Define all the terms necessary to properly interpret the SRS, including acronyms and abbreviations. You may wish to build a separate glossary that spans multiple projects or the entire organization, and just include terms specific to a single project in each SRS.>

Appendix B: Analysis Models

<Optionally, include any pertinent analysis models, such as data flow diagrams, class diagrams, state-transition diagrams, or entity-relationship diagrams.>

Appendix C: To Be Determined List

<Collect a numbered list of the TBD (to be determined) references that remain in the SRS so they can be tracked to closure.>


Sabtu, 16 April 2022

INSTALASI SISTEM OPERASI WINDOWS MENGGUNAKAN VIRTUAL BOX

Sistem Operasi (Operating System : OS) adalah komponen pengolah peranti lunak dasar (essential component) tersistem sebagai pengelola sumber daya perangkat keras komputer (hardware), dan menyediakan layanan umum untuk aplikasi perangkat lunak. Sistem operasi adalah jenis yang paling penting dari perangkat lunak sistem dalam sistem komputer. Tanpa sistem operasi, pengguna tidak dapat menjalankan program aplikasi pada komputer mereka, kecuali program booting. Sistem operasi mempunyai penjadwalan yang sistematis mencakup perhitungan penggunaan memori, pemrosesan data, penyimpanan data, dan sumber daya lainnya.
Oracle VM VirtualBox adalah perangkat lunak virtualisasi, yang dapat digunakan untuk mengeksekusi sistem operasi "tambahan" di dalam sistem operasi "utama". Sebagai contoh, jika seseorang mempunyai sistem operasi MS Windows yang terpasang di komputernya, maka seseorang tersebut dapat pula menjalankan sistem operasi lain yang diinginkan di dalam sistem operasi MS Windows.
Langkah – langkah menginstal windows 10 pada virtual box
  1. Langkah awal yaitu membuka aplikasi Oracle VM Virtual Box
  2. Pilih New dan namai dengan windows 10

  3. Setelah itu pada setingan virtual box kali ini penulis akan menggunakan ukuran harddisk virtual sebesar 25 gb. Setelah selesai klik start dan akan muncul jendela seperti diatas.

  4. Klik ikon explore untuk memilih iso yang akan digunakan. Pilih iso windows 10

  5. Setelah itu akan berjalan instalan windows 10, kemudian ubah time and currencynya menjadi Indonesia.

  6. Setelah itu klik install windows

  7. Setelah itu pilih windows 10 pro 32 bit

  8. Setelah itu setujui perjanjian antara pengguna dan pengembang

  9. Kemudian pilih costum, untuk memformat harddisk

  10. Setelah itu klik new, untuk membuad drive baru.

  11. Setelah itu tunggu semua proses pengopiannya selesai

  12. Setelah semua proses pengopiannya selesai maka virtual box akan merestart dengan sendirinya

  13. Setelah berbagai macam langkah – langkah sudah terlalui maka selesailah dan windows 10 siap digunakan

Jumat, 25 Maret 2022

BIOS ( Basic Input Output System ) 

 Apa itu Bios? Berikut Pengertian dan Fungsinya. BIOS ( Basic Input Output System ) adalah sebuah sistem dasar pada sebuah komputer yang berfungsi sebagai pengatur proses input dan output data pada sebuah komputer, program ini memiliki peran sebagai pengatur fungsi – fungsi dari perangkat keras komputer sehingga bisa dibilang program BIOS merupakan program dasar yang terdapat pada sistem komputer. BIOS sendiri memiliki peran yang cukup penting pada sistem komputer. Tanpa adanya sistem BIOS, komputer tidak akan dapat beroperasi secara normal dan bahkan tidak dapat hidup sama sekali.

Meskipun program ini merupakan program penting dalam sebuah sistem komputer, banyak dari pengguna komputer yang tidak mengetahuinya. Hal ini dikarenakan jarang sekali pengguna komputer yang mengoperasikannya, terkecuali apabila komputer tersebut mengalami masalah atau akan melakukan installasi sistem operasi Selain itu program BIOS tidak tersimpan pada Harddisk komputer seperti halnya jenis software - software komputer lainnya, akan tetapi disimpan dalam sebuah Chip pada Mainboard yang disebut dengan ROM.

Dari sini sobat komputer pastinya sudah memahami pengertian BIOS itu sendiri, dan dibawah ini beberapa fungsi BIOS yang dibutuhkan dalam sebuah sistem komputer.

Apa itu BIOS ? Berikut Pengertian dan Fungsinya

Fungsi BIOS

Secara garis besar, fungsi BIOS adalah sebagai pengatur proses startup sebuah komputer. Dimana pada proses tersebut, BIOS akan memeriksa dan memastikan kesiapan dari perangkat – perangkat keras yang terpasang pada Motherboard, selain itu BIOS juga akan memastikan sistem operasi sudah benar – benar siap dan terpasang pada memori penyimpanan. Selain fungsi BIOS yang utama tersebut ada beberapa fungsi lain yang tidak kalah penting dari BIOS itu sendiri diantaranya sebagai berikut :

1. Memberikan Informasi Dasar Sistem Komputer

Fungsi BIOS yang tidak kalah penting adalah memberikan informasi dasar kepada pengguna mengenai spesifikasi – spesifikasi hardware yang terpasan pada komputer. Selain itu BIOS juga akan memberikan informasi mengenai tahapan – tahapan interaksi hardware yang berjalan pada komputer.

2. Mengatur Konfigurasi Dasar Sistem Komputer

Selain memberikan informasi dasar sistem komputer, BIOS juga dapat digunakan untuk mengatur konfigurasi dasar sistem komputer, seperti mengaktif dan menonatifkan perangkat – perangkat yang terpasang pada komputer sesuai dengan kebutuhan. Selain itu BIOS juga digunakan untuk mengatur waktu dan tanggal serta proses booting komputer.

3. Menjalankan Perintah Power On Self Test ( POST )

Fungsi BIOS yang tidak kalah penting adalah sebagai sarana untuk menjalankan perintah Power On Self Test. Perintah ini digunakan agar pengguna dapat mengetahui tingkat compatibelitas sistem operasi yang nanti dapat digunakan pada komputer tersebut.

4. Memuat dan Menjalankan Sistem Operasi Komputer

Pada saat komputer dihidupkan, program pertama yang berjalan pada komputer adalah BIOS, program ini selanjutnya akan mengecek kesiapan dari sistem operasi yang tersimpan dalam harddisk untuk selanjutnya dimuat dan dijalankan.

5. Membantu Sistem Operasi Dan Aplikasi Mengatur Hardware Komputer

Pada saat komputer sudah hidup sempurna, pengguna kadang ingin melakukan pengaturan perangkat – perangkat keras yang terpasang pada komputer. BIOS sebagai program dasar memiliki peran penting pada proses ini untuk membantu sistem operasi maupun aplikasi dalam mengatur hardware – hardware komputer.

Rabu, 02 Maret 2022

Minat Bidang Penelitian

Ada berbagai macam bidang penelitian yang ada di Informatika, salah satunya algoritma dan pemrograman. Minat bidag penelitian saya yaitu algoritma dan pemrograman. Alasannya yaitubelajar memahami tentang algoritma sama saja dengan mengasah logika.Algoritma juga sangat berguna dalam kehidupan, algoritma dapat memudahkan kita dalam pengambilan keputusan untuk pemecahan masalah dengan urutan yang logis. Pemrograman merupakan implementasi dari algoritma. Saya sangat suka belajar algoritma karena dengan itu dapat memudahkan saya dalam mengimplementasikannya. 

Senin, 20 Desember 2021

IMPLEMENTASI ALGORITMA DIVIDE AND CONQUER PADA SORTING DAN SEARCHING

Algoritma merupakan kumpulan perintah yang memiliki daya guna yang sangat besar bagi masyarakat. Algoritma biasanya digunakan sebagai kumpulan perintah untuk menyelesaikan suatu masalah. Algoritma ini memiliki aplikasi yang bermacam-macam dalam setiap masalah yang ada. Contohnya saja adalah algoritma cara menyelesaikan suatu aritmatika yang rumit, algoritma untuk menghitung luas penampang dari suatu kabel, atau bahkan untuk menghitung bayaran parkir di setiap mal. Salah satu aplikasi bentuk pemrograman ini adalah dalam bahasa permrograman yang disebut bahasa C. Dimana bahasa C ini memiliki suatu aturan-aturan tertentu yang sangat penting sehingga dalam penggunaanya kita harus memperhatikan cara menggunakan aturan tersebut. Salah satu cara penggunaannya adalah dengan array. Dimana array ini merupakan suatu data struktur yang berkoneksi satu sama lain dengan tipe yang sama. Aplikasi array ini banyak sekali, contohnya saja adalah menghitung golongan dari umur yang berjumlah 25 tahun hingga 55 tahun. Array ini juga bisa digunakan untuk mencari suatu elemen nilai dalam suatu struktur data, selain itu array ini juga bisa digunakan untuk mengurutkan data-data yang tidak berurutan. Hal –hal yang telah disebutkan disebut sebagai searching array dan sorting array.

    Sorting array merupakan salah satu aplikasi yang paling penting dalam suatu sistem aplikasi perhitungan data. Biasanya suatu bank memiliki komputasi sorting array yang sudah biasa digunakan dalam aplikasinya sehari-hari. Bahkan telephone juga mengurutkan suatu list yang terdiri dari nama akhir , nama awal agar bisa memudahkan dalam perhitungan dalam mencari nomor telephone.

    Searching array juga memiliki tak kalah pentingnya dibandingkan dengan sorting array. Pada searcing array kita biasa menggunakannya pada data yang sangat banyak. Sehingga sangat sulit bila kita ingin mencari suatu data atau suatu angka didalamnya satu per satu. Aplikasi searching array memudahkan kita dalam mencari suatu data atau angka yang kita inginkan dengan hanya memasukkan nilai input pada suatu data yang disikan.

1. Insertion sort

Salah satu algoritma sorting yang paling sederhana adalah insertion sort. Ide dari algoritma ini dapat dianalogikan seperti mengurutkan kartu. Penjelasan berikut ini menerangkan bagaimana algoritma insertion sort bekerja dalam pengurutan kartu. Anggaplah anda ingin mengurutkan satu set kartu dari kartu yang bernilai paling kecil hingga yang paling besar. Seluruh kartu diletakkan pada meja, sebutlah meja ini sebagai meja pertama, disusun dari kiri ke kanan dan atas ke bawah. Kemudian kita mempunyai meja yang lain, meja kedua, dimana kartu yang diurutkan akan diletakkan. Ambil kartu pertama yang terletak pada pojok kiri atas meja pertama dan letakkan pada meja kedua. Ambil kartu kedua dari meja pertama, bandingkan dengan kartu yang berada pada meja kedua, kemudian letakkan pada urutan yang sesuai setelah perbandingan. Proses tersebut akan berlangsung hingga seluruh kartu pada meja pertama telah diletakkan berurutan pada meja kedua. Algoritma insertion sort pada dasarnya memilah data yang akan diurutkan menjadi dua bagian, yang belum diurutkan (meja pertama) dan yang sudah diurutkan (meja kedua). Elemen pertama diambil dari bagian array yang belum diurutkan dan kemudian diletakkan sesuai posisinya pada bagian lain dari array yang telah diurutkan. Langkah ini dilakukan secara berulang hingga tidak ada lagi elemen yang tersisa pada bagian array yang belum diurutkan.
Algoritmanya :

void insertionSort(Object array[], int startIdx, int endIdx)
{ for (int i = startIdx; i < endIdx; i++) { int k = i;
if(((Comparable) array[k]).compareTo(array[j])>0) {
for (int j = i + 1; j < endIdx; j++) { k = j; } } swap(array[i],array[k]); }
}

 2. Selection sort

Jika anda diminta untuk membuat algoritma sorting tersendiri, anda mungkin akan menemukan sebuah algoritma yang mirip dengan selection sort. Layaknya insertion
sort, algoritma ini sangat rapat dan mudah untuk diimplementasikan. Mari kita kembali menelusuri bagaimana algoritma ini berfungsi terhadap satu paket kartu. Asumsikan bahwa kartu tersebut akan diurutkan secara ascending. Pada awalnya, kartu tersebut akan disusun secara linier pada sebuah meja dari kiri ke kanan, dan dari atas ke bawah. Pilih nilai kartu yang paling rendah, kemudian tukarkan posisi kartu ini dengan kartu yang terletak pada pojok kiri atas meja. Lalu cari kartu dengan nilai paling rendah diantara sisa kartu yang tersedia. Tukarkan kartu yang baru saja terpilih dengan kartu pada posisi kedua. Ulangi langkah – langkah tersebut hingga posisi kedua sebelum posisi terakhir dibandingkan dan dapat digeser dengan kartu yang bernilai lebih rendah.

Ide utama dari algoritma selection sort adalah memilih elemen dengan nilai paling rendah dan menukar elemen yang terpilih dengan elemen ke-i. Nilai dari dimulai dari 1 ke n, dimana adalah jumlah total elemen dikurangi 1.
Algoritmanya :

void selectionSort(Object array[], int startIdx, int endIdx)
{ int min; for (int i = startIdx; i < endIdx; i++) {
if (((Comparable)array[min]).compareTo(array[j])>0) {
min = i; for (int j = i + 1; j < endIdx; j++) { min = j;
}
} } swap(array[min], array[i]);
}

3. Merge sort

Beberapa algoritma mengimplementasikan konsep rekursi untuk menyelesaikan permasalahan. Permasalahan utama kemudian dipecah menjadi sub-masalah, kemudian solusi dari sub-masalah akan membimbing menuju solusi permasalahan utama.

Pada setiap tingkatan rekursi, pola tersebut terdiri atas 3 langkah.

1. Divide

    Memilah masalah menjadi sub masalah

2. Conquer

    Selesaikan sub masalah tersebut secara rekursif. Jika sub-masalah tersebut cukup ringkas dan sederhana, pendekatan penyelesaian secara langsung akan lebih efektif

3. Kombinasi

    Mengkombinasikan solusi dari sub-masalah, yang akan membimbing menuju penyelesaian atas permasalahan utama

Seperti yang telah dijelaskan sebelumnya, Merge sort menggunakan pola divide and conquer. Dengan hal ini deskripsi dari algoritma dirumuskan dalam 3 langkahberpola divide-and-conquer. Berikut menjelaskan langkah kerja dari Merge sort.

1. Divide

    Memilah elemen – elemen dari rangkaian data menjadi dua bagian.

2. Conquer

    Conquer setiap bagian dengan memanggil prosedur merge sort secara rekursif

3. Kombinasi

    Mengkombinasikan dua bagian tersebut secara rekursif untuk mendapatkan rangkaian data berurutan

Proses rekursi berhenti jika mencapai elemen dasar. Hal ini terjadi bilamana bagian yang akan diurutkan menyisakan tepat satu elemen. Sisa pengurutan satu elemen tersebut menandakan bahwa bagian tersebut telah terurut sesuai rangkaian.
Algoritmanya :

void mergeSort(Object array[], int startIdx, int endIdx)
{ if (array.length != 1) {
mergeSort(leftArr, startIdx, midIdx);
//Membagi rangkaian data, rightArr dan leftArr
}
mergeSort(rightArr, midIdx+1, endIdx); combine(leftArr, rightArr); }
 



4. Quick sort

Quicksort ditemukan oleh C.A.R Hoare. Seperti pada merge sort, algoritma ini juga berdasar pada pola divide-and-conquer. Berbeda dengan merge sort, algoritma ini hanya mengikuti langkah – langkah sebagai berikut :

1. Divide

    Memilah rangkaian data menjadi dua sub-rangkaian A[p…q-1] dan A[q+1…r] dimana setiap elemen A[p…q-1] adalah kurang dari atau sama dengan A[q] dan setiap elemen pada A[q+1…r] adalah lebih besar atau sama dengan elemen pada A[q]. A[q] disebut sebagai elemen pivot. Perhitungan pada elemen q merupakan salah satu bagian dari prosedur pemisahan.

2. Conquer

    Mengurutkan elemen pada sub-rangkaian secara rekursif

Pada algoritma quicksort, langkah “kombinasi” tidak di lakukan karena telah terjadi pengurutan elemen – elemen pada sub-array
Algoritmanya :

void quickSort(Object array[], int leftIdx, int rightIdx) {
int pivotIdx; /* Kondisi Terminasi */
pivotIdx = partition(array, leftIdx, rightIdx);
if (rightIdx > leftIdx) { quickSort(array, leftIdx, pivotIdx-1);
}
quickSort(array, pivotIdx+1, rightIdx); }



5. Counting sort

Adalah sebuah algoritma sorting linear yang digunakan untuk mengurutkan ‘item’ ketika urutannya telah ditentukan dan memiliki panjang yang terbatas. Bilangan interval yang telah tetap, katakana k1 ke k2 adalah contoh dari ‘item’ tersebut. Counting sort sebenarnya merupakan metode pengurutan yang memanfaatkan index variabel array. Hanya effektif pada data yang nilainya kecil.

Algoritma ini diproses dengan mendefinisikan sebuah hubungan urutan antara ‘item’ yang akan disorting. Katakana ‘item’ yang akan disorting adalah variable A. Maka, terdapat sebuah array tambahan dengan ukuran yang serupa dengan array A. katakana array tersebut adalah array B. untuk setiap element di A, sebut e, algoritma ini menyimpan jumlah ‘item’ di A lebih kecil dari atau sama dengan e di B(e). jika hasil sorting yang terakhir disimpan di array C, maka untuk masing-masing e di A, dibuat dalam arah yang sebaliknya, yaitu C[B(e)]=e. setelah step di atas, niali dari B(e) berkurang dengan 1.

Algoritma ini membuat 2 passover A dan passover B. Jika ukuran dari range k lebih kecil dari ukuran input n, maka time complexity = O(n). perhatikan juga bahwa algoritma ini stabil yang berarti bahwa sambungan diselesaikan dengan langsung mengabarkan element-element yang muncul pertama kali.

Adapun syarat algoritma ini berjalan dengan baik ialah:

  1. Data harus bilangan bulat yang bernilai lebih besar atau sama dengan nol
  2. Range data diketahui

Ada 3 macam array yang terlibat:

  1. Array untuk mengisi bilangan yang belum diurutkan.
  2. Array untuk mengisi frekuensi bilangan itu, sekaligus sebagai penghitung kejadian.
  3. Array untuk mengisi bilangan yang sudah diurutkan.
    Algoritmanya :
countingsort(A[], B[], min, max, n)
for i = min to max do C[i] = 0
C[A[j]] = C[A[j]] + 1
for j = 1 to n do for i = min + 1 to max do
B[C[A[j]]] = A[j]
C[i] = C[i] + C[i-1] for j = n downto 1 do
C[A[j]] = C[A[j]] – 1





6. Radix Sort

Radix sorting bisa digunakan ketika masing-masing universal element bisa dilihat sebagai sebuah urutan digit (atau huruf atau symbol lainnya). Sebagai contoh, kita bisa membuat masing-masing bilangan bulat antar 0 sampai 99 sebagai sebuah urutan dengan dua digit (seperti “05”). Untuk menyorting sebuah array dari angka 2-digit, algoritma ini membuat dua ‘passing’ sorting melalui array tersebut. Pada ‘passing’ pertama, element array disorting pada least significant decimal digit. Kunci utama dari radix sort adalah pada passing yang kedua. Hasilnya, setelah kedua passing melewati array tersebut, data yang terisi telah disorting.
Algoritmanya :

source
List of bytes
source_n
number of bytes to sort
dest[256]
256 lists of bytes. each list should have enough space to hold source_n elements.
//——————-saving element in memory——————– int distribution[256] // fill the list with zeros.
for i=0 to source_n do
for i=0 to 255 do distribution[i]=0; // build a distribution history: distribution] = distribution] +1;
for i=0 to 255 do
endfor // Now we build a index-list for each possible element: int index[256]; index [0]=0;
for i = 0 to source_n do
index[i]=index[i-1]+distribution[i-1]; endfor //sorting dest: array of bytes with space for source_n bytes.
endfor
dest[index]]=source[i];
index] = index] +1;

7. Searching

7.1 Linear Searching

Algoritma pencarian secara linear adalah algoritma untuk mencari sebuah nilai pada table sambarang dengan cara melakukan pass atau transversal. Transversal dari awal sampai akhir table. Ada dua macam cara pencarian pada table. Algoritma mempunyai dua jenis metode yaitu dengan Boolean dan tanpa Boolean.
Algoritmanya :

void SeqSearch1 (int T[], int Nmax,
int value, int *idx) {
/*Algoritma*/
/*kamus lokal*/ int i; i = 1;
i = i + 1;
while ((i<Nmax) && (T[i] != value)) { } if (T[i]==value)
}
{ *idx = i; } else { *idx = 0;
}

Algoritma di atas melakukan pengulangan sampai i sama dengan Nmax (ukuran tabel) atau harga value dalam tabel sudah ditemukan.    Kemudian harga i di-assign ke dalam variable idx. Elemen terakhir diperiksa secara khusus.

void SeqSearch2 (int T[],int Nmax,
int value, int *idx) { int i;
i = 1;
boolean found; /*algoritma*/ found = false;
if (T[i] == value)
while ((i<=Nmax) && (!found)) { { found = true; } else { i = i + 1;
}
} } if (found) { *idx = i; } else { *idx = 0;

7.2 Binary Searching

Algoritma pencairan secara linear melakukan pengulangan sebanyak 1 kali untuk kasus terbaik (value sama dengan elemen pertama dalam tabel) dan Nmax kali untuk kasus terburuk. Sehingga algoritma ini mempunyai kompleksitas algoritma O(n).

Implementasi algoritma pencarian biner dalam bahasa C adalah sebagai berikut.

void BinSearch (int T[],int Nmax, int
value, int* idx) int i,j,mid;
found = false;
boolean found;$ /*algoritma*/ i = 1;
mid = (i+j) div 2;
j = Nmax; while ((!found) && (i<=j)) {

if (T[mid] == value) { found = true; } else {

if (T[mid]<value) { i = mid + 1; } else { j = mid – 1; } } }
}
if (found) { *idx = mid; } else { *idx = 0;
}

Algoritma pencarian biner adalah algoritma untuk mencari sebuah nilai pada tabel teurut dengan cara menghilangkan setengah data pada setiap langkah. Algoritma ini mencari nilai yang dicari dengan tiga langkah yaitu :

• Mencari nilai tengah dari tabel (median).
• Melakukan perbandingan nilai tengah dengan nilai yang dicari untuk menentukan apakah nilai yang dicari ada pada sebelum atau setelah nilai tengah.
• Mencari setengah sisanya dengan cara yang sama.

Sabtu, 11 Desember 2021

Algoritma Divide and Conquer

    Awal dari algoritma ini utamanya adalah pengurangan dan penaklukan - masalah asli secara berturut-turut dipecah menjadi sub-masalah tunggal, dan memang dapat diselesaikan secara berulang.

    Pencarian biner, algoritma penurunan-dan-taklukkan di mana sub-masalah berukuran kira-kira setengah dari ukuran aslinya, memiliki sejarah yang panjang. Sementara deskripsi yang jelas tentang algoritma pada komputer muncul pada tahun 1946 dalam sebuah artikel oleh John Mauchly, gagasan untuk menggunakan daftar item yang diurutkan untuk memfasilitasi pencarian tanggal kembali setidaknya sejauh Babylonia pada 200 SM.

    Algoritma penurunan-dan-taklukkan kuno lainnya adalah algoritma Euclidean untuk menghitung pembagi persekutuan terbesar dari dua bilangan dengan mengurangi bilangan tersebut menjadi subproblem ekuivalen yang lebih kecil dan lebih kecil, yang berasal dari beberapa abad SM.

    Contoh awal dari algoritma bagi-dan-taklukkan dengan beberapa subproblem adalah deskripsi Gauss tahun 1805 tentang apa yang sekarang disebut algoritma Cooley – Tukey fast Fourier transform (FFT), meskipun dia tidak menganalisis jumlah operasinya secara kuantitatif, dan FFT tidak tersebar luas sampai mereka ditemukan kembali lebih dari satu abad kemudian.

    Algoritma D&C dua sub problem awal yang secara khusus dikembangkan untuk komputer dan dianalisis dengan benar adalah algoritma pengurutan gabungan, yang ditemukan oleh John von Neumann pada tahun 1945.

    Contoh penting lainnya adalah algoritma yang ditemukan oleh Anatolii A. Karatsuba pada tahun 1960 [8] yang dapat mengalikan dua angka n-digit di O (n log 2 ⁡ 3) {\ displaystyle O (n ^ {\ log _ {2} 3} )} O (n ^ {\ log _ {2} 3}) operasi (dalam notasi Big O). algoritma ini menyangkal dugaan Andrey Kolmogorov tahun 1956 bahwa operasi Ω (n 2) {\ displaystyle \ Omega (n ^ {2})} \ Omega (n ^ {2}) diperlukan untuk tugas tersebut.

    Sebagai contoh lain dari algoritma bagi-dan-taklukkan yang awalnya tidak melibatkan komputer, Donald Knuth memberikan metode yang biasanya digunakan kantor pos untuk merutekan surat: surat diurutkan ke dalam kantong terpisah untuk wilayah geografis yang berbeda, masing-masing kantong ini diurutkan sendiri ke dalam batch untuk sub-wilayah yang lebih kecil, dan seterusnya sampai dikirimkan. Ini terkait dengan jenis radix, yang dijelaskan untuk mesin sortir kartu berlubang sejak tahun 1929.


Definisi Algoritma Devide dan Conquer

    Dalam ilmu komputer, Algoritma divide and conquer adalah paradigma desain algoritma yang didasarkan pada rekursi multi-cabang. Algoritme bagi-dan-taklukkan bekerja dengan memecah masalah secara rekursif menjadi dua atau lebih sub-masalah dari jenis yang sama atau terkait, hingga masalah ini menjadi cukup sederhana untuk diselesaikan secara langsung.


Cara Kerja Algoritma Devide dan Conquer

    Contoh sederhana : Misalkan, untuk menghitung total jumlah dari bilangan-bilangan yang ada di dalam sebuah list, kita dapat menggunakan perulangan sederhana. 

nums = [1, 2, 3, 5, 6, 7, 19, 28, 58, 18, 28, 67, 13]
total = 0

for i in range(0, len(nums)):
    total = total + nums[i]

print(total) # 255

Algoritma perulangan yang digunakan pada kode di atas memang sederhana dan memberikan hasil yang benar, tetapi terdapat beberapa masalah pada kode tersebut, yaitu perhitungan dilakukan secara linear, yang menghasilkan kompleksitas O(n). Hal ini tentunya cukup ideal untuk ukuran list kecil, tetapi jika ukuran list menjadi besar (beberapa Milyar elemen) maka perhitungan akan menjadi sangat lambat. Kenapa perhitungannya menjadi lambat? Karena nilai dari total tergantung kepada kalkulasi nilai total sebelumnya. Kita tidak dapat melakukan perhitungan total dari depan dan belakang list sekaligus, sehingga kita dapat mempercepat perhitungan dua kali lipat. Dengan kode di atas, kita tidak dapat membagi-bagikan pekerjaan ke banyak pekerja / CPU!

Selasa, 05 Oktober 2021

SORTING PROBLEM

Nama : ADELLA WIDIYANTI

NPM : 20312146

Kelas : IF 20B

    Sorting adalah  sesuatu proses aplikasi dimana yang awalnya acak -acakkan lalu diurutkan dalam sebuah sekumpulan objek menurut urutan atau susunan sesuai dengan kebutuhan agar ketata rapi. Tujuan dari penggunaan sorting adalah memudahkan seseorang dalam pencarian, menyusun data yang awalnya acak – acakkan menjadi keurut, dan menyeselaikan masalah yang kompleks seperti schedulling, pengolahan basis data dan lain – lain

    Penyusunan sorting ada 2 yaitu secara ascending dan descending. Ascending adalah pengurutan dari kecil ke yang lebih besar sedangkan descending adalah pengurutan dari besar ke yang lebih kecil. 

    Contohnya diberikan angka acak yaitu : 10 , 34 , 67,  2 , 8 , 54 , 114, 88 lalu di sorting secara ascending menggunakan bubble sort jadi hasilnya menjadi 2, 8, 10, 34, 54, 67, 88, 114

Kelebihan Bubble Sort :

  • Metode ini merupakan yang paling simple
  • Metode ini mudah dipahami algoritmanya
Kelemahan Bubble Sort :
    Meskipun simple metode ini merupakan metode pengurutan yang paling tidak efisien. Pada saat pengurutan data yang sangat besar akan mengalami kelambatan yang luar biasa, atau dengan kata lain kinerja memburuk cukup signifikan.

Software Requirements Specification for Rancang Bangun Aplikasi Transaksi Toko ATK

Software Requirements Specification for <Rancang Bangun Aplikasi Transaksi Toko ATK > Version 1.0  Prepared by <Adelia Octaviani - ...