ALGORITMA
Dalam matematika dan komputasi, algoritma atau algoritme [1] merupakan
kumpulan perintah untuk menyelesaikan suatu masalah. Perintah-perintah ini
dapat diterjemahkan secara bertahap dari awal hingga akhir. Masalah tersebut
dapat berupa apa saja, dengan catatan untuk setiap masalah, ada kriteria
kondisi awal yang harus dipenuhi sebelum menjalankan algoritma. Algoritma akan
dapat selalu berakhir untuk semua kondisi awal yang memenuhi kriteria, dalam
hal ini berbeda dengan heuristik. Algoritma sering mempunyai langkah pengulangan (iterasi) atau
memerlukan keputusan (logika Boolean dan perbandingan)
sampai tugasnya selesai.
Desain dan
analisis algoritma adalah suatu cabang khusus dalam ilmu
komputer yang mempelajari karakteristik dan performa dari suatu
algoritma dalam menyelesaikan masalah, terlepas dari implementasi algoritma
tersebut. Dalam cabang disiplin ini algoritma dipelajari secara abstrak,
terlepas dari sistem komputer atau bahasa pemrograman yang
digunakan. Algoritma yang berbeda dapat diterapkan pada suatu masalah dengan
kriteria yang sama.
Kompleksitas dari
suatu algoritma merupakan ukuran seberapa banyak komputasi yang
dibutuhkan algoritma tersebut untuk menyelesaikan masalah. Secara informal,
algoritma yang dapat menyelesaikan suatu permasalahan dalam waktu yang singkat
memiliki kompleksitas yang rendah, sementara algoritma yang membutuhkan waktu
lama untuk menyelesaikan masalahnya mempunyai kompleksitas yang tinggi.
Sejarah istilah "algoritma"
Kata algoritma berasal
dari latinisasi nama seorang ahli matematika dari Uzbekistan Al Khawārizmi (hidup
sekitar abad ke-9), sebagaimana tercantum pada terjemahan karyanya dalam bahasa
latin dari abad ke-12 "Algorithmi de numero Indorum". Pada awalnya
kata algorisma adalah istilah yang merujuk
kepada aturan-aturan aritmetis untuk menyelesaikan persoalan dengan menggunakan
bilangan numerik arab (sebenarnya dari India, seperti tertulis pada judul di
atas). Pada abad ke-18, istilah ini berkembang menjadi algoritma,
yang mencakup semua prosedur atau urutan langkah yang jelas dan diperlukan
untuk menyelesaikan suatu permasalahan. Masalah timbul pada saat akan
menuangkan bagaimana proses yang harus dilalui dalam suatu/sebuah sistem
(program) bagi komputer sehingga pada saat eksekusinya, komputer dapat bekerja
seperti yang diharapkan. Programer komputer akan lebih nyaman menuangkan
prosedur komputasinya atau urutan langkah proses dengan terlebih dahulu membuat
gambaran (diagram alur) diatas kertas.
[sunting]Jenis-jenis
Algoritma
Terdapat beragam klasifikasi algoritma dan
setiap klasifikasi mempunyai alasan tersendiri. Salah satu cara untuk melakukan
klasifikasi jenis-jenis algoritma adalah dengan memperhatikan paradigma dan
metode yang digunakan untuk mendesain algoritma tersebut. Beberapa paradigma
yang digunakan dalam menyusun suatu algoritma akan dipaparkan dibagian ini.
Masing-masing paradigma dapat digunakan dalam banyak algoritma yang berbeda.
§ Divide and Conquer,
paradigma untuk membagi suatu permasalahan besar menjadi
permasalahan-permasalahan yang lebih kecil. Pembagian masalah ini dilakukan
terus menerus sampai ditemukan bagian masalah kecil yang mudah untuk dipecahkan.
Singkatnya menyelesaikan keseluruhan masalah dengan membagi masalah
besar dan kemudian memecahkanpermasalahan-permasalahan kecil yang
terbentuk.
§ Dynamic
programming, paradigma pemrograman dinamik akan sesuai jika
digunakan pada suatu masalah yang mengandung sub-struktur yang optimal (, dan
mengandung beberapa bagian permasalahan yang tumpang tindih .
Paradigma ini sekilas terlihat mirip dengan paradigma Divide and Conquer,
sama-sama mencoba untuk membagi permasalahan menjadi sub permasalahan yang
lebih kecil, tapi secara intrinsik ada perbedaan dari karakter permasalahan
yang dihadapi.
§ Metode serakah. Sebuah algoritma
serakah mirip dengan sebuah Pemrograman
dinamik, bedanya jawaban dari submasalah tidak perlu diketahui dalam
setiap tahap; dan menggunakan pilihan "serakah" apa yang dilihat
terbaik pada saat itu.
Pemrograman
Pemrograman adalah proses menulis, menguji dan memperbaiki (debug), dan
memelihara kode yang membangun sebuah program komputer. Kode ini ditulis dalam
berbagai bahasa pemrograman.
Tujuan dari pemrograman adalah untuk memuat suatu program yang dapat melakukan
suatu perhitungan atau 'pekerjaan' sesuai dengan keinginan si pemrogram
(programmer). Untuk dapat melakukan pemrograman, diperlukan keterampilan
dalam algoritma, logika, bahasa pemrograman,
dan di banyak kasus, pengetahuan-pengetahuan lain seperti matematika.
Pemrograman adalah sebuah seni dalam
menggunakan satu atau lebih algoritma yang saling berhubungan dengan
menggunakan sebuah bahasa pemrograman tertentu
sehingga menjadi sebuah program komputer. Bahasa pemrograman yang
berbeda mendukung gaya pemrograman yang berbeda pula. Gaya pemrograman ini
biasa disebut paradigma pemrograman.
Apakah memprogram perangkat lunak
lebih merupakan seni, ilmu,
atau teknik telah lama diperdebatkan.
Pemrogram yang baik biasanya mengkombinasikan tiga hal tersebut, agar dapat
menciptakan program yang efisien, baik dari sisi waktu berjalan (run time),
atau memori.
Pemrograman Kompetitif
Pemrograman adalah bahan yang banyak
digunakan di berbagai kompetisi komputer di Indonesia maupun dunia. Di tingkat SMA,
contohnya, pemrograman dipertandingkan dalam Olimpiade Sains
Nasional setiap
tahunnya. Ketigapuluh peraih medali di Olimpiade Sains
Nasional ini kemudian
menjadi Tim
Olimpiade Komputer Indonesia, dan menempuh Pelatihan
Nasional yang
menyeleksi empat orang wakil untuk mengikuti Olimpiade Sains Internasional bidang Informasi (International Olympiad in
Informatics) yang diadakan setiap tahunnya.
[sunting]Sejarah pemrograman
Mekanisme Antikythera dari Yunani kuno
adalah kalkulator menggunakan persneling dari berbagai ukuran dan konfigurasi
untuk menentukan operasi, [3] yang dilacak siklus Metonik masih digunakan di
bulan-ke-surya kalender, dan yang konsisten untuk menghitung tanggal olimpiade
[4]. Al-Jazari dibangun Automata diprogram pada tahun 1206. Salah satu sistem
yang digunakan dalam perangkat ini adalah penggunaan pasak dan Cams ditempatkan
ke drum kayu di lokasi tertentu, yang secara berurutan akan memicu tuas yang
pada gilirannya dioperasikan instrumen perkusi. Output dari perangkat ini
adalah drumer kecil bermain berbagai ritme dan pola drum. [5] [6] The Jacquard
Loom, Joseph Marie Jacquard yang dikembangkan pada tahun 1801, menggunakan
serangkaian karton kartu dengan menekan lubang di dalamnya. Pola lubang pola
yang mewakili alat tenun harus mengikuti menenun kain. Alat tenun bisa
menghasilkan tenun yang sama sekali berbeda dengan menggunakan kumpulan kartu
yang berbeda. Charles Babbage mengadopsi penggunaan kartu menekan sekitar tahun
1830 untuk mengendalikan Analytical Engine. Program komputer pertama ditulis
untuk Analytical Engine oleh matematikawan Ada Lovelace untuk menghitung urutan
Bilangan Bernoulli. [7] Sintesis perhitungan numerik, operasi dan output telah
ditentukan, bersama dengan cara untuk mengatur dan masukan instruksi dengan
cara yang relatif mudah bagi manusia untuk hamil dan menghasilkan, menyebabkan
perkembangan modern pemrograman komputer. Pengembangan pemrograman komputer
dipercepat melalui Revolusi Industri. Pada akhir 1880-an, Herman Hollerith
menemukan rekaman data pada media yang kemudian dapat dibaca oleh mesin.
Sebelum menggunakan mesin dibaca dari media, di atas, telah untuk kontrol,
bukan data. "Setelah beberapa percobaan awal dengan kertas pita, ia menetap
di kartu menekan ..." [8] Untuk memproses kartu menekan ini, pertama kali
dikenal sebagai "kartu Hollerith" dia menciptakan tabulator, dan
mesin keypunch. Ketiga penemuannya dasar dari industri pengolahan informasi
modern. Pada tahun 1896 ia mendirikan Tabulating Machine Company (yang kemudian
menjadi inti dari IBM). Penambahan panel kontrol (plugboard) ke 1906 Tipe I
Tabulator memungkinkannya untuk melakukan pekerjaan yang berbeda tanpa harus
secara fisik dibangun kembali. Pada akhir 1940-an, ada berbagai mesin panel
kontrol diprogram, disebut catatan unit peralatan, untuk melakukan pengolahan
data tugas.
Data dan instruksi dapat disimpan pada
kartu punched eksternal, yang disimpan dalam rangka dan disusun dalam deck.
Penemuan arsitektur von Neumann memungkinkan program komputer untuk disimpan
dalam memori komputer. Program awal harus susah payah dibuat dengan menggunakan
instruksi (operasi dasar) dari mesin tertentu, sering kali dalam notasi biner.
Setiap model komputer mungkin akan menggunakan instruksi yang berbeda (bahasa
mesin) untuk melakukan tugas yang sama. Kemudian, perakitan bahasa tersebut
dikembangkan yang memungkinkan programmer menentukan setiap instruksi dalam
format teks, singkatan memasukkan kode untuk setiap operasi, bukan menetapkan sebuah
nomor dan alamat dalam bentuk simbolik (misalnya, ADD X, JUMLAH). Memasuki
sebuah program dalam bahasa assembly biasanya lebih nyaman, lebih cepat, dan
kurang rentan terhadap kesalahan manusia daripada menggunakan bahasa mesin,
tetapi karena bahasa assembly adalah sedikit lebih dari satu notasi yang
berbeda untuk bahasa mesin, setiap dua mesin dengan instruksi yang berbeda set
juga memiliki perakitan yang berbeda bahasa. Pada tahun 1954, FORTRAN
diciptakan, melainkan tingkat pertama bahasa pemrograman tinggi untuk memiliki
implementasi fungsional, dibandingkan dengan hanya desain di atas kertas [9]
[10] (Sebuah bahasa tingkat tinggi adalah, dalam istilah yang sangat umum,.
bahasa pemrograman yang memungkinkan programmer untuk menulis program dalam istilah
yang lebih abstrak dari instruksi bahasa assembly, yaitu pada tingkat abstraksi
"lebih tinggi" daripada bahasa assembly.) Ini memungkinkan programmer
untuk menentukan perhitungan dengan memasukkan formula secara langsung
(misalnya Y = X * 2 + 5 * X + 9). Program teks, atau sumber, diubah menjadi
instruksi mesin menggunakan program khusus yang disebut kompilator, yang
diterjemahkan program FORTRAN ke dalam bahasa mesin. Bahkan, nama FORTRAN
adalah singkatan dari "Formula Translation". Banyak bahasa lainnya
dikembangkan, termasuk beberapa program untuk komersial, seperti COBOL. Program
itu sebagian besar masih masuk menggunakan kartu punched atau pita kertas.
(Lihat pemrograman komputer di era kartu punch). Pada akhir 1960-an, perangkat
penyimpanan data dan terminal komputer menjadi cukup murah bahwa program dapat
dibuat dengan mengetikkan langsung ke dalam komputer. Teks editor tersebut
dikembangkan yang memungkinkan perubahan dan perbaikan harus dilakukan jauh
lebih mudah dibandingkan dengan kartu berlubang. (Biasanya, kesalahan dalam
meninju kartu berarti bahwa kartu harus dibuang dan yang baru menekan untuk
menggantikannya.) Ketika waktu telah berkembang, komputer telah membuat
lompatan raksasa di bidang kekuatan prosesor. Ini telah membawa bahasa pemrograman
baru yang lebih disarikan dari hardware. Meskipun bahasa tingkat tinggi
biasanya dikenakan biaya overhead yang lebih besar, peningkatan kecepatan
komputer modern telah membuat penggunaan bahasa ini jauh lebih praktis daripada
di masa lalu. Bahasa ini semakin disarikan biasanya lebih mudah untuk belajar
dan memungkinkan programmer untuk mengembangkan aplikasi jauh lebih efisien dan
dengan kode sumber kurang. Namun, bahasa tingkat tinggi masih praktis untuk
beberapa program, seperti yang di mana tingkat rendah kontrol perangkat keras
diperlukan atau di mana kecepatan pemrosesan maksimum adalah penting.
Sepanjang paruh kedua abad kedua puluh,
pemrograman adalah karier yang menarik di sebagian besar negara maju. Beberapa
bentuk pemrograman telah lepas pantai semakin tunduk pada outsourcing (impor
perangkat lunak dan jasa dari negara lain, biasanya dengan upah rendah),
membuat keputusan karir pemrograman di negara maju lebih rumit, sementara
meningkatkan peluang ekonomi di daerah kurang berkembang. Tidak jelas seberapa
jauh kecenderungan ini akan berlanjut dan seberapa dalam dampak akan programmer
upah dan kesempatan.
About PASCAL
PASCAL
is a Network of Excellence funded by the European Union. It has established a
distributed institute that brings together researchers and students across
Europe, and is now reaching out to countries all over the world.
PASCAL is developing the expertise and scientific results that
will help create new technologies such as intelligent interfaces and adaptive
cognitive systems. To achieve this, it supports and encourages collaboration
between experts in Machine Learning, Statistics and Optimization. It also
promotes the use of machine learning in many relevant application domains such
as;
§ Machine
Vision
§ Speech
§ Haptics
§ Brain-Computer
Interface
§ User-modeling
for computer human interaction
§ Multimodal
integration
§ Natural
Language Processing
§ Information
Retrieval
§ Textual
Information Access
PASCAL enables Europe to capitalize on its strong research
record in the area of principled adaptive systems design. Advanced user
interfaces represent one type of application where our expertise is delivering
important market advantages that are strengthening European industrial work in
this area. The PASCAL distributed institute is also developing other
applications of adaptive systems, including cognitive systems. It has trained a
new generation of professionals to take these methods into other scientific
disciplines as well as industrial applications, enabling the exploitation of
the vast amount of data now being produced in many domains.
Contoh Program Pascal
|
Written by
pnyet
|
program
minipos;
uses crt; label start,finish; var name,code,symbols,size:string[20]; qty,price,totprice:longint; bill,payment,discount,cashback:real; next:char; begin clrscr; write('Name : ');readln(name); write('Category [Shirt / T-Shirt] : ');readln(code); write('Size [S/M/L] : ');readln(symbols); write('Quantity : ');readln(qty); if code='Dress Shirt'then begin symbols:='S'; size:='Small'; price:=100000; end else if code='Dress Shirt'then begin symbols:='M'; size:='Medium'; price:=150000; end else begin symbols:='L'; size:='Large'; price:=200000; end; if code='T-Shirt' then begin symbols:='S'; size:='Small'; price:=300000; end else if code='T-Shirt' then begin symbols:='M'; size:='Medium'; price:=350000; end else begin symbols:='L'; size:='Large'; price:=400000; end; if symbols='S' then symbols:='Small' else if symbols='M' then symbols:='Medium' else if symbols='L' then symbols:='Large' else symbols:='Null'; totprice:=qty*price; if qty>5 then discount:=0.15*totprice else discount:=0; bill:=totprice-discount; writeln('###### Butik ID ######'); writeln('Clothes : ',code); writeln('Size : ',size); writeln('Quantity : ',qty); writeln('Total Price : Rp. ',totprice); writeln('-------------------------'); writeln('Billing : Rp. ',bill:2:0); write('Payment : Rp. ');readln(payment); cashback:=payment-bill; writeln('Cash back : Rp. ',cashback:2:0); readln; end. |