Senin, 10 November 2014

item core DOTA

ITEM CORE MORTRED



Abysal Blade
Description: http://3.bp.blogspot.com/-75yZ2DsjRLU/Tvwzmg5Rv3I/AAAAAAAAAu8/4ti2P7RVZR0/s1600/Abyssal+blade.jpg
Bash, stun, dan damage yang tinggi untuk critical, kamu tidak terkalahkan setelah membawa ini.

SATANIC
Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiN3uat8G2_nKShV6vACHQ112Mwr3hdABmEkqYlm2hDy9oPQ6BncNBtUR6JtdOvVFRHBirWvutQqn6JEN98kaALBTpcJbQa4HVYFbco2y_2ur14BxLYEkNkumyD8VD_kQcJhT-HRC1eb-V/s200/satanic.gif
Lebih banyak lifesteal, item core sebagian besar hero killer, critical strike mu membuat HP yang kamu lifesteal semakin banyak. Selain itu, kamu juga butuh lebih banyak HP untuk late game.


ALTERNATIVE ITEMS

Ring of Basilus

Mana regen awal untuk memanfaatkan Dagger untuk ngelast hit saat melawan hard laner.


WRAITH BAND
Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7NtCVNlnRZ8yX034EzHjVzBTBDO9eAsRagyyKNhqLqDqNQFN0SWBAoC5423escvNuhh5i8iRvV1UQoyBMMJ-AmKiI7fP5u9mlS5urkRsrcPMTtw7AcnVGohnwBm1OC_IrlBehMf3QwEs/s200/wraith+band.gif
Beli 2 untuk modal awal. Sangat disarankan beli 2 atau 3. Selain untuk kapasitas dan ‘ketahananmu’, juga untuk mendapatkan ‘damage’ dan dari critical gede dengan harga yang murah.


PHASE BOOTS
Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhX5mi_WksgEWdMHBoxOlm-s0hSGADu1ZgOBqwhMuwExhW1Kv-kI6WBUzgeK2diH7MhxivW_bb46nm6eSKJYOUzdoN091vEYow4nuab3rpRgkGScb-2JgmvL_4nZdXARwRLU25toIdw_vxF/s200/BTNPhaseBoots.gif
MS spatu ini jauh lebih baik dari PT. Tapi kekurangan dr sepatu ini betul-betul ‘kurang’ ^^. Yaitu klo km megaktifkan sepatu ini, transparanmu akan hilang ( km akan terlihat dengan JELAS ). Tp karena itu bukanlah masalah yang terlalu parah, jadi alternatif aj.

Update 6.64: Resep -> BoS + 2x Blades of Attack
+ 70 MS
+ 24 damage




MANTA STYLE
( manta build )

Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjs-csTm7Oe1SIBj4GlkMlRnmByzC8Rad9OP5kMwPAbBDcdZeV-tscERt3zzDcHI82AG3gQozH0GHFcCVVGIZhaB6evyJhCdEyUKdAnrBxS-Pa5_8PUji_y8zqtCMAVJvaCpk7aomC2Iu2y/s200/manta+style.gif
Alternatif dari battlefury, Imagemu juga dapat Evasion dan critical strike, karena itu manta juga sangat cocok untukmu, kamu mendapat jauh lebih banyak damage dengan ‘3’ critical. Tambahan MS, dan karena ini bukan orb effect lagi, km tetap dapat lifesteal dari dominator. Tp ada kekurangannya jg, yaitu km ga punya skill creeping (cleaving), padahal km butuh banyak gold, dan mungkin ‘skill build up’ mu juga akan berubah, yaitu km ga ngambil skill blur (ambil paling terakhir), ambil stats banyak2 ( buat naikin AS dan Damage imagemu ) dan km mendapatkan ‘evade’ dengan membeli the butterfly di late game untuk semakin memperkuat ‘image’ mu juga.


STYGIAN DESOLATOR
(stygian build)

Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJ_SYu7tRznXN3z2MM42aPEO0CqZqlCSuRd7Uy-7l7ePqYrzPpSZkcSlzxTSXvhEftqQZO3nh_Te8X55pm3ftTa-JohUTz04Ne0GgNc2ovMu-VlKBBocw6SRcVMx0Zv14JtlAsfFj1BAEK/s200/stygian+desolator.gif
Alternatif dari dominator tentunya (orb effect), ngurangin armor lawan artinya lebih banyak damage ‘critical’. Klo mau nambah lifesteal, beli vlad mir’s aj, lalu di late game sempurnakan dengan Armlet of mordigian.


DIFUSAL BLADE
( Difusal build )

Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlup-WkkcGS379iX2TPZoUW_vrTR6_7nZ4GWUq8ljhpT7l-HBSu1P-W-6MUPJuAJ90JsQnQhH8ZvhayiID2CatlUbHZ3wPVDOA1V-yVR8YyHJG4SJJhL9BXXEyZPBpAHLcZueYpKr8aMAj/s200/BTNINV_Sword_11.gif
Alternatif dr dominator juga, puge nya lumayan buatmu, beli klo km mau aj..


LUXURY

DIVINE RAPIER

Wohohoho.. kamu tahu apa yang akan kamu hasilkan setelah megang item ini.. ckckc



Cranium Basher
Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisuhw7Lek8Qk545j5IgUactNRLK8NP8IXwVs7ua2PwWJP49zkZUNwkD-zmktKZiZmNATzoyjVQPtge6ltRYlrunlugMy0HR-V9sOUIfbN4tfizrbmJmGEqxYse1EZXYYsAQ0fPitpCRFM/s200/cranium+bashr.gif
hmm.. bolehlah, blink strike bikin bashnya cepat keluar. Upgrade ke abysal lebih mantap lagi.


MONKEY KING BAR
Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXJ51qPrfkzrB8cqh0DLx7-ibHy0VcSo4CoW49-oaYf2XhGKwuH2TPSfu5YBhyphenhyphenMQDNA7Qug4UkqUFLz3R63AbkOj8OkTivTemimdNTDVZ7KOnUggFs-uZtSKI59drmvtaFkp7MuEV_NW3C/s200/Mkbar.gif
Item ini bisa menjadi alternatif dan juga jadi ‘tambahan’ ( Luxury item). Battlefury boleh km anti dengan MKB di mid game, lalu battlefury baru km beli di late game. Sebaliknya, klo km beli battlefury di mid game, beli ini di late game setelah satanic


BKB
Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwuSkkINgXVyYnMPC12kcBpIqIUoWOzg6U8CG5KKTiGildVCs_fNFn27JXeqFUJlPvkcuYedu73gIaYSQicvYNF_nUhA4zqmzmjLPDmJLsh-KwzI6_wzvxILPMe_h05qybWESx1bM63BDW/s200/bKB.gif
Penting untuk hero melee di late game. Membuat mortredmu kebal dari spell2 slama beberapadetik.


ASSAULT CUIRASS
Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhx3kY4eT2-sD1DQA_eKiTKPiqYSMU4CT_TG-Q-EhWcToZqc9Bn3FV4Zlaqyin2Wn0aEyk5A4l80lOWhkxJyF7VPxQ2-x2mkc4I_9et_03tGEENg7YwifC0Rxn-UgqE0hCDCqF1f72vZfmw/s200/assaultcuirass.gif
Sangat baik kamu tambahkan setelah membeli satanic, apalagi setelah MKB. Buat km yg ngikutin stygian build up, manta build up, beli ini setelah stygian atau mantamu jadi. Menambah armor, attack speed, dan minus armor ‘aura’, jadi sangat disarankan buat yang ngikutin stygian build up.


LINKEN’s SPHERE
Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5oQHbX5NpCDvFL-sIvZykLAcHxb3oY9L0TiqSVuwAcerL_R4TiRZE83_hiokVYSdXrDLFo_IImjNiWFS4wFtSFv4p_ziv3cf3hvFFU6zDTwlnEwk1KSA7FIDViC1qLTdrx3V1i96MHYI/s200/linken's+sphere.gif
Situasioanal aj, klo banyak nukers, stunner/disable bru km beli ini, tp ini item tambahan untuk pertahanan aj di late game, ga’ cocok sebagai item core, meski stats nya lumayan.


BLOODSTONE
Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8GLrs_I0F8eSA-qw3j_iIbMBYAtuqkkYTU30RdojYrEwZbO-gYFIq8SpB_4l1u5_sMliu0gBYKl4OWaGgEj4XrkG3tj1MtPea9_F8DufiJ8mpIC5AFXjInCuchtqPs2VKUc0SyPYTCOg/s200/blode+stone.gif
Untuk pertahanan juga, dan menurutku untuk mortred, pertahanan adalah prioritas ‘kedua’, jadi belinya belakangan aj.


ORCHID
Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifuspKp3TrUXHbOLDea1g5TwbB2JpG4ftfcSFvIJIHmyqdpSvxWKvzKTwEEAeEOrddlRbO9IOeAR-h6TPfTHnen-bNJ8jC00hkmyxnKOiaQduwIcxjvh7i_j1-t3-rjXL7nfE88zpTQiM/s200/orchid.gif
Yang membuat item ini bagus hanya attack speed dan damagenya. Untuk mana dan mana regennya kayaknya terlalu berlebihan deh, kedua skill yang bisa km gunakan juga manacost nya cuman sedikit, yah siapa tahu kamu butuh mana juga linken atau item ini solusinya, tp resep2 item ini sangat mudah dibanding linken.


AEGIS

Lumayan, buat macan bernyawa 2.



Jangan Beli ini!

CRITICAL ITEM
Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgi6kZ50upVYgY3LDa5JHTOwhtfM90mKtSUFO_0deLtC26jr8LZFs7l2p4IFy8E5UXBOMrh3qU3aNOZNdaW4gyPK0YIEebNEcwvpCt71f8xjJx52oDCvLvdIlHQ09LUDPE3DlQFP3QSQ-0/s200/buriza+dk.gif
Yah memang mempercepat critical tapi masak sih belum puas dengan 4,5x critical? Mending Beli rapier aj sono..


ORB EFFECT
Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7duZLYf_Rb7wc3RmZxLla5TeoJvTMmC7PhOw68V0x-TOJeKaX9_XaxuGHXnflX1SwMK9y4U-k7_Rl47GM2nOdlDjL1jIuZd6uUy_99kjzoBX8q6FconR1slBt8CJK6nQBCxxDESeRqGYD/s200/BTNIceShard.gifDescription: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7L7IFpkyRP095iR6JM0jvevw0L8HK8Wp1r_5RPqY-DRiY1LD4n6PRIO8jiFneDjWGKD3YUwnRE_E1KghOLoB3hI0o-SPzGFCWK_mo8-IqxO97lW3a96DVCcTbo8LZy_cteLy4RrRFSsQ/s200/Mjolnir.gif
Km hanya btuh 1 item orb effect, dan dari semua orb effect, LIFESTEAL yang paling cocok untuk killer-DPS seperti mu. Kalau km mengganti lifestealmu dengan vlad, stygian desolator masih jauh lebih cocok untukmu dari semua item orb effect ini. Sebenarnya baru menjadi ‘bad’ item kalau kamu sudah punya 1 item orb effect ( dominator misalnya) lalu kamu membeli salah satu item ini lagi setelahnya.


Evasion
Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1Hy01wsjVptL7Rk1RoD9Re3Q1T8gt87eGPooXQBkyJ36dKOEjY7mXZ6utATrvNIHLBZGQCgAkC0fAMRm4QIORDtjPqMAZ9MDrI5vtHD3NIiwwKWmnxRQqRIu_DaThX8-3pe0qyh30aRPx/s200/d+buterfly.gif
Kamu sudah punya Evasion, lagipula tidak stack! Meski butterfly menambah Agility juga tetap saja kamu rugi 1800 gold Talisman of Evasion.




LATE STRATEGY
Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgafTNb0OJPj7THyg3IQwbFaIIAyaFOYHUwWqgc02EZ27RjUIffgcA7sv_8UWRzFaNKLySimA8oSuKQvlRHw565Ze6OaMpYv2rlc2EBOfx95BamImCircZOgLhlyzGS5xiJCsVXhKxX3-uP/s1600/late+2.jpg


It’s show time, akhirnya late game juga, stelah kerja keras dan melewati semua ujian berat (lol) harusnya km menikmati momen ini. Di early mereka udah ngatain km ‘lemah’,noob, ATM,cacat,cupu,copo,cupow, cucurucuuuuuu, , saatnya mengembalikan kata-kata mereka (baless). Bilang gini aj ama mreka.. “sama ‘bayangan’ ndiri aj takut..” (favoritku ^^ )

kamu punya 1000++ critical strike ( tergantung item yang udah km pegang ), evade terbaik setingkat butterfly, Slower dengan pure damage, dan blink... Nangis2 deh lawanmu, nyesal mreka mengabaikanmu selama early-mid game, item mu jadi, musuh-musuh dalam masalah besar dan tidak akan bisa mereka atasi lagi!!


Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWME70SJ2qMT9Zs31Wyt7GTejNn1PQwlqk55N4o2Xqtbn2b_L_uoTDsNqXSHcDqSoL0_nBCB30ss3jubgROJ4RVCiRx2p9L337jCfU2Slcl0OuQI-yBHbvF9KsTsBqLYXBEBrK9FkyKS_N/s1600/oted2.jpg


Sasaranmu bukan hanya hero yang udah apes ( HP kuning-merah ). Tp Hero dengan HP full bukan lagi masalah. Dengan slower,critical, dan sulitnya lawan memprediksikan posisimu, sangat mudah membunuh, bahkan tanker dengan HoT sekalipun... yang aku maksud adalah 1000K ++ damage critical, itu ga’ sedikit, itu SAKIT!! Untuk sebagian besar hero di late game. Klo dengan HP full aj km bs membunuh, palagi yang udah kuning-merah yang males pulang ngisi HP.

PROSES MEMBUNUH& WAR:

Kamu yang ‘megang’ late game di timmu, klo ga ada kamu, teman setimmu bakalan kalah war. Jadi jangan sampe mati bung, diperlukan kesabaran juga untuk membunuh, napsuan bunuh boleh, tp jangan klewat ‘macho’ jg, karena yang rugi teman mu juga.

Untuk ‘awal’ team battle ( war ) sebenarnya yang km lakukan adalah menunggu. Jadi setelah ‘pembuka war’ melakukan tugasnya, tunggu sampai beberapa spell lawan udah keluar (artinya sedang cooldown ) maksudku sampai teman/ musuh mu udah saling serang, tugas mu saat itu adalah muncul belakangan ( saat semua lawan udah menargetkan teman mu )lalu blink ke arah stunner/ nukers lawan (terutama yang punya spell berbahaya , dan HP dan armor yang ‘tipis’ ). Bunuh, lalu bunuh yang lainnya,selalu ingat, km akan selalu berada di jarak terburuk ‘terkena’ disable/stun lawan, bkb akan sangat membantu ( klo punya )

Late game sebenarnya ga terlalu penting aku bahas, tinggal pemainnya sendiri aj yang nikamtin dengan gaya bermain masing2. Okay, frozen throne / world of tree adalah tujuan terakhir mu.

ALGORITMA SAYA~ AWKWKWKW

Bab 1 pengantar logika algoritma
·         1. Pengertian DasarLogika danAlgoritma
·         2. Pengertian DasarLOGIKAPertama kali diperkenalkan oleh Aristoteles (384 –322 SM)Logika berasal dari kata Yunani kuno λόγος (logos)yang berarti hasil pertimbangan akal pikiran yang diutarakan lewat kata dan dinyatakan dalam bahasa.Sebagai ilmu, logika disebut dengan logike episteme(Latin: logica scientia) atau ilmu logika (ilmupengetahuan) yang mempelajari kecakapan untukberpikir secara lurus, tepat, dan teratur
·         3. Pengertian Dasar ALGORITMAAlgoritma pertama kali diperkenalkan OlehAhli Matematika : Abu Ja’far MuhammadIbnu Musa Al Khawarizmi.Seorang Ilmuwan Persia yang menulis kitabAl jabr Muqabala (Rules of restoration andReduction) sekitar tahun 825 M
·         4. DefenisiDEFENISI LOGIKA : Penalaran atau bentuk pemikiran Ilmu yang memberikan prinsip-prinsip yang harus diikuti agar dapat berpikir valid menurut aturan yang berlaku.DEFENISI ALGORITMA : Langkah-langkah yang dilakukan agar solusi masalah dapat diperoleh. Suatu prosedur yang merupakan urutan langkah-langkah yang berintegrasi Suatu metode khusus yang digunakan untuk menyelesaikan sebuah masalah (Webster Dictionary)
·         5. Tahap Penyelesaian Masalah
·         6. KRITERIA PEMILIHAN ALGORITMA1. Ada output: mengacu pada definisi algoritma, suatu algoritma haruslah mempunyai output yang harus merupakan solusi dari masalah yang sedang diselesaikan.2. Efektifitas dan Efisiensi ikatakan efektif jika algoritma tersebut menghasilkan suatu solusi yang sesuai dengan masalah yang diselesaikan dalam arti algoritma harus tepat guna.Dikatakan efisiensi jika waktu proses suatu algoritma relatif lebih singkat dan penggunaan memori komputernya lebih sedikit.3. Jumlah langkahnya berhingga : maksudnya adalah barisan instruksi yang dibuat harus dalam suatu urutan tertentu atau harus berhingga agar masalah yang dihadapi dapat diselesaikan dengan tidak memerlukan waktu relatif lama.
·         7. KRITERIA  Berakhir à (Semi Algoritma) : proses didalam mencari penyelesaian suatu masalah harus berhenti dan berakhir dengan hasil akhir yang merupakan solusinya atau berupa informasi yang tidak diketemukan solusinya. Artinya baik dalam kondisi solusi ada atau tidak ada, proses akan tetap harus berakhir dan berhenti. Istilah lain dalam algoritma dikenal sebagai SEMI ALGORITMA, yaitu suatu prosedur yang hanya akan berhenti jika mempunyai atau menghasilkan solusi, sedangkan jika tidak menghasilkan solusi, maka prosedur tersebut akan berjalan tanpa henti.5. Terstruktur : yaitu urutan barisan langkah-langkah yang digunakan harus disusun sedemikian rupa agar proses penyelesaian tidak berbelit-belit sedemikian sehingga bagian-bagian proses dapat dibedakan dengan jelas mana bagian input, proses dan output sehingga memudahkan user melakukan pemeriksaan ulang.
·         8. KESIMPULAN KRITERIASuatu Algoritma yang terbaik(The Best) : “Suatualgoritma harus menghasilkan output yan tepatguna(efektif) dalam waktu yang relatif singkat &penggunaan memori yang relatif sedikit(efisien)dengan langkah yang berhingga & prosedurnyaberakhir baik dalam keadan diperoleh suatu solusiataupun tidak ada solusinya”
·          
·         9.  Dalam bidang komputer, algoritma sangat diperlukan dalam menyelesaikan berbagai masalah pemrograman, terutama dalam komputasi numeris. Tanpa algoritma yang dirancang baik maka proses pemrograman akan menjadi salah, rusak, atau lambat dan tidak efisien. Algoritma Di butuhkan untuk memerintah computer mengambil langkah-langkah tertentu untuk menyelesaikan masalah Algoritma  Pemrograman  Program Agar algoritma dapat memerintah (diproses) komputer, maka dirubah menjadi bentuk program (melalui proses pemrograman).
·         10. Contoh:A. Algoritma untuk mengirimkan surat1. Tulis surat pada secarik kertas surat2. Ambil sampul surat atau amplop3. Masukkan surat ke dalam amplop4. Tutup amplop surat dengan lem perekat5. Tulis alamat surat yang dituju, jika tidak diingat, lebih dahulu ambil buku alamat & cari alamat yang dituju, lalu tulis alamat tersebut pada amplop surat6. Tempelkan perangko pada amplop surat7. Bawa surat ke kantor pos untuk diserahkan pada pegawai pos atau menuju ke bis surat untuk memasukkan surat ke dalam kotak/bis surat .
·         11. B. Algoritma untuk menentukan bilangan akar kuadrat dari suatu bilangan bulat positif yang diinput.1. Baca bilangan bulat positif yang diinput, sebut saja sebagai A.2. Dinyatakan Nilai B adalah 03. Jika Nilai C sama dengan Nilai A, maka Nilai B adalah Akar dari Nilai A, lalu stop4. Jika tidak, maka nilai B akan bertambah 15. Kembali ke langkah pada No.3
·         12. Tahapan Analisa Algoritma1.Bagaimana merencanakan suatu algoritma Dengan mendefinisikan masalah. Contoh : Permasalahan menghitung luas lingkaran, dengan data yang diketahui adalah diameter lingkaran. Rumus : ∏ . r2 dengan Phi = 3.14 atau 22/7.
·         13. Tahapan(2)2.Bagaimana menyatakan sebuah algoritma1. Dengan bahasa semu (pseudocode) suatu cara penulisan algoritma agar ide dan logika dari algoritma dapat disampaikan/diekspresikan menggunakan gaya bahasa pemrograman pemrograman tertentu. Contoh : Untuk mengitung Luas Segitiga: 1. Masukan Nilai Alas 2. Masukan Nilai Tinggi 3. Hitung Luas = (Alas * Tinggi)/2 4. Cetak Luas
·         14. 2. Dengan diagram alur atau flowchart
·         15. 3. Dengan Statement Program/Penggalan Program Contoh: Read Alas Read Tinggi Luas=(Alas*Tinggi)/2 Write(luas)
·         16. 3. Bagaimana validitas suatu algoritma Yakni jika penyelesaian memenuhi solusi yang sebenarnya, artinya solusi yang didapat merupakan penyelesaian suatu masalah dan bukannya membuat masalah baru.4. Bagaimana menganalisa suatu algoritma Caranya melihat running time atau waktu tempuh yang digunakan dalam menyelesaikan masalah serta jumlah memori yang digunakan dalam penyelesaian masalah tersebut.5. Bagaimana menguji program dari suatu algoritma
·         17. Tahap Proses Uji Algoritmaa. Fase Debugging yaitu fase dari suatu proses program eksekusi yang akan melakukan koreksi terhadap kesalahan program. Yang dimaksud disni adalah error atau salah dalam penulisan program baik logika maupun sintaksnya.b. Fase Profilling yaitu fase yang akan bekerja jika program tersebut sudah benar atau telah melalui proses pada fase debugging. Fase ini bekerja untuk melihat dan mengukur waktu tempuh atau running time yang diperlukan serta jumlah memori/storage yang digunakan dalam menyelesaikan suatu algoritma.
·         18. Analisis Suatu Algoritma(Untuk melihat faktor efisiensi & efektifitas darialgoritma tersebut), dapat dilakukan terhadapsuatu algoritma dengan melihat pada:- Waktu tempuh (Running Time) dari suatu algoritma: adalah satuan waktu yang ditempuh atau diperlukan oleh suatu algoritma dalam menyelesaikan suatu masalah. Hal-hal yang dapat mempengaruhi daripada waktu tempuh adalah: banyaknya langkah, besar dan jenis input data, jenis operasi, komputer dan kompilator.
·         19.  Jumlah Memori Yang digunakan banyaknya langkah yang digunakan dan jenis variabel data yang dipakai dalam suatu algoritma akan sangat mempengaruhi penggunaan memori. Dalm hal ini, diharapkan dapat memperkirakan seberapa banyak kebutuhan memori yang diperlukan selama proses berlangsung hingga proses selesai dikerjakan. Dengan demikian, dapat disiapkan storage yang memadai agar proses suatu algoritma berjalan tanpa ada hambatan atau kekurangan memori.
·         20. Sifat-sifat Algoritma1. Banyak langkah instruksi harus berhingga (finite)2. Langkah atau instruksi harus jelas.(definite)3. Proses harus jelas dan mempunyai batasan.4. Input dan output harus mempunyai batasan.5. Efektifitas6. Adanya ruang lingkup
·         21. LatihanGunakan bahasa sehari-hari/pseudocode :1. Buat algoritma untuk mengirim email kepada teman dengan asumsi sudah mempunyai alamat email.2. Buat algoritma untuk meminjam buku di perpustakaan3. Buat algoritma untuk membeli buku di sebuah toko buku



BAB 2

PENGERTIAN DASAR LOGIKA DAN ALGORITMA
PENGERTIAN DASAR LOGIKA DAN ALGORITMA
PENGERTIAN DASAR
LOGIKA
Diperkenalkan pertama kali oleh Aristoteles (384-322 SM)

ALGORITMA
Diperkenalkan Oleh Ahli Matematika : Abu Ja’far Muhammad Ibnu Musa Al Khawarizmi. Seorang ilmuan Persia yang menulis kitab al jabr w’al muqabala (rules of restoration and reduction) sekitar tahun 825 M
Definisi Logika
1. penalaran atau bentuk pemikiran.
2. ilmu yang memberikan prinsip-prinsip yang harus diikuti agar dapat berfikir valid menurut aturan yang berlaku.
Definisi Algoritma
1. Langkah – langkah yang dilakukan agar solusi masalah dapat diperoleh.
2. Suatu prosedur yang merupakan urutan langkah-langkah yg berintegrasi.
3. Suatu m etode khusus yang digunakan untuk menyelesaikan suatu masalah yang nyata.(Webster Dictionary)
TAHAP PENYELESAIAN MASALAH
Kriteria Pemilihan Algoritma.
1. Ada Output,
2. Efektifitas dan Efesiensi,
3. Jumlah Langkahnya Berhingga,
4. Berakhir, ( SEMI ALGORITMA )
5. Terstruktur,
Suatu Algoritma yg terbaik (The Best) : “ Suatu algoritma harus menghasilkan output yg tepat guna (efektif) dlm waktu yg relatif singkat & penggunaan memori yg relatif sedikit (efesien) dgn langkah yg berhingga & prosedurnya berakhir baik dlm keadaan dip’oleh suatu solusi ataupun tdk ada solusinya. “
Contoh :
Sebuah prosedur ketika akan mengirim kan surat kepada teman:
1. Tulis surat pada secarik kertas surat
2. Ambil sampul surat atau amplop
3. Masukkan surat ke dalam amplop
4. Tutup amplop surat dengan lem perekat
5. Tulis alamat surat yg dituju, jika tdk ingat, lebih dahulu ambil buku alamat & cari alamat yg dituju, lalu tulis alamat tsb pd amplop surat.
6. Tempelkan perangko pada am plop surat
7. Bawa surat ke kantor pos utk diserahkan pd pegawai pos atau menuju ke bis surat untuk memasukkan surat ke dlm kotak/bis surat.
Sebuah prosedur untuk masalah menentukan akar kuadrat dari suatu bilangan Bulat Positif yg di Input :
Baca bilangan Bulat Positif yg diinput, sebut saja sebagai A
1. Dinyatakan Nilai B adalah 0
2. Hitung Nilai C yg berisikan Nilai B dikalikan Nilai B
3. Jika Nilai C sama dengan Nilai A, maka Nilai B adalah Akar dari Nilai A, lalu stop.
4. Jika tidak, maka Nilai B akan bertambah 1
5. Kembali ke langkah pada No. 3
TAHAPAN ANALISA ALGORITMA
1. Bagaimana merencanakan suatu algoritma.
2. Bagaimana menyatakan suatu algoritma
a. Dengan bahasa semu (pseudocode).
Contoh :
Untuk menghitung Luas Segi tiga :
1. Masukan Nilai Alas
2. Masukan Nilai Tinggi
3. Hitung Luas =( Alas * Tinggi ) / 2
4. Cetak Luas
b. Dengan diagram alur atau flowchart,
Contoh :
c. Dengan Statement program / penggalan
Program
Contoh (menggunakan C++):
cin >> Alas ; //untuk input data
cin >> Tinggi;
Luas = (Alas * Tinggi)/2 ; // proses
cout << Luas; //untuk output data
3. Bagaimana validitas suatu algoritma.
4. Bagaimana Menganalisa suatu Algoritma.
5. Bagaimana Menguji Program dari suatu Algoritma.
Tahap Proses uji Algoritma :
a. Fase Debugging
yaitu fase dari proses program eksekusi yang akan melakukan koreksi terhadap kesalahan.
b. Fase Profilling
yaitu fase yang akan bekerja jika program tersebut sudah benar (telah melewati fase debugging).
Analisis Suatu Algoritma
(Untuk melihat faktor efesiensi & efektifitas dari algoritma tersebut), Dapat dilakukan terhadap suatu algoritma dengan melihat pada :
a. Waktu Tempuh (Running Time) dr suatu Algortima.
Hal-hal yg dpt m empengaruhi drpd waktu tempuh adalah :
1. Banyaknya langkah.
2. Besar dan jenis input data.
3. Jenis Operasi.
4. Komputer dan kompilator
b. Jumlah Memori Yang Digunakan.
Sifat – Sifat Algoritma
• Banyaknya Langkah Instruksi Harus Berhingga,
• Langkah atau Instruksi harus Jelas,
• Proses harus Jelas dan mempunyai batasan,
• Input dan Output harus mempunyai Batasan,
• Efektifitas,
• Adanya Batasan Ruang Lingkup,
BAB 4

Pada umumnya, program komputer memanipulasi objek (data) didalam memori. Peubah (variabel) dan konstanta (constant) adalah objek data dasar yang dimanipulasi didalam program. Deklarasi daftar peubah digunakan untuk menyatakan tipe peubah . Operator mengspesifikasikan operasi apa yang dapat dilakukan terhadap peubah dan konstanta. Ekspresi mengkombinasikan peubah-peubah dan konstanta untuk menghasilkan nilai baru. Tipe data dapat dikelompokkan menjadi dua macam :
1. Tipe Dasar
Tipe dasar adalah tipe yang dapat langsung dipakai. Yang termasuk tipe dasar adalah bilangan lojik, bilangan bulat, karakter, bilangan riil, dan string. Untuk bilangan lojik dan bilangan bulat disebut juga tipe ordinal karena setiap konstanta nilainya dapat ditransformasikan ke suatu nilai integer.
Bilangan Lojik
• Nama tipe bilangan ini adalah boolean
• Ranah nilai boolean adalah true dan false
• Operator yang digunakan not, and, or, dan xor
Contoh :
A B A not B A and B A or B A xor B
True True False True True False
True False True False True True
False True True False True True
False False True True False False
Bilangan Bulat
• Nama tipe Integer
• Ranah Nilai. Secara teoritis bilangan bulat tidak mempunyai batasan untuk nilai. Tetapi pada dunia pemograman, ranah nilai bilangan bulat mempunyai batasan. Hal tersebut dimaksudkan untuk penghematan alokasi memori. Berikut rentang nilai pada Pascal dan C
Pascal Rentang Nilai C
Byte 0 … 255 Unsigned Char
Shortint -128 … 127 Signed Char
Word 0 … 65535 Unsigned int
Integer -32768 … 32767 Int, shortint
Longint -2147483648 … 2147483647 Longint
Setiap bilangan bulat mempunyai keturunan, atau dengan kata lain sebuah bilangan bulat mempunyai nilai sembarangan (predecessor) dan nilai sesudahnya (succesor). Misalnya : Nilai 8 memiliki predecessor 7 dan successor 9.
• Konstanta untuk bilangan bulat tidak boleh mengandung titik desimal
• Operasi :
1. Operasi Aritmatika, yaitu
+ (tambah)
- (kurang)
* (kali)
div (bagi) (dengan hasil bilangan bulat tanpa titik desimal)
mod (sisa hasil bagi)
ket : Objek yang di operasikan disebut operand. Misalnya : a + b artinya a dan b merupakan operand sedangkan + adalah operator
2. Operasi perbandingan. Hasil operasi perbandingan akan menghasilkan nilai boolean (true dan false)
< (lebih kecil)
≤ (lebih kecil atau sama dengan)
> (lebih besar)
≥ (lebih besar atau sama dengan)
= (Sama dengan)
≠ (Tidak sama dengan)
Bilangan Riil
Bilangan riil adalah bilangan yang mengandung pecahan desimal, misalnya 3.65, 0.0003, 29.0, 2.60240000E-6, .24 , dll. Semua konstanta bilangan riil harus mengandung titik (desimal). Misalnya “18” dianggap sebagai bilangan bulat, tetapi “18.0” dianggap sebagai bilangan riil. Untuk bilangan riil yang ditulis dengan notasi E berarti perpangkatan sepuluh. Contoh : 2.60240000E-6 artinya 2.60240000×10-6.
• Nama tipe bilangan riil adalah real.
• Ranah nilai bilangan riil sama dengan bilangan bulat, tetapi penerapan pada bahasa pemograman berbeda. Untuk bahasa PASCAL, penerapannya :
Tipe Rentang Nilai Format
real 2.9×10-39 … 1.7 x 1038 6 Byte
Single 1.5 x 10-45 …. 3.4 x 1038 4 Byte
Double 5.0 x 10-324 … 1.7 x 10308 8 Byte
Extended 3.4 x 10-4932 … 1.1 x 104932 10 Byte
Sementara, dalam bahasa C, hanya ada 2 tipe untuk bilanganriil yaitu float dan double. Float adalah bilangan riil berpresisi tunggal (single-precision), Double adalah bilangan riil berpresisi ganda (double-precision). Sementara untuk long double mengspesifikasikan tipe bilangan riil yang berpresisi-extended
• Operasi pada bilangan riil ada 2 macam, yaitu :
1. Operasi Aritmetika
+ (tambah)
- (kurang)
* (kali)
/ (bagi)
Ket : Jika dilakukan operasi campuran dengan salah satunya operandnya bertipe bilangan riil sedangkan operandnya yang lain bilangan bulat, maka otomatis operand yang bilangan bulat akan otomatis di konversi ke bilangan riil.
2. Operasi Perbandingan
< (lebih kecil)
≤ (lebih kecil atau sama dengan)
> (lebih besar)
≥ (lebih besar atau sama dengan)
≠ (Tidak sama dengan)
Ket : Pada bilangan riil tidak dikenal operasi sama dengan “=”. Karena bilangan riil tidak dapat disajikan secara tepat oleh komputer. Misalnya 1/3 tidak sama dengan 0.33333, sebab 1/3 = 0.3333333…. (dengan angka 3 yang tidak pernah berhenti)
Karakter
Yang termasuk karakter adalah semua huruf-huruf abjad, semua tanda baca, angka ‘0’, ‘1’, … , ‘9’. Dan karakter-karakter khusus seperti ‘&’, ‘^’, ‘%’, ‘#’, ‘@’, dll. Karakter kosong (null) adalah karakter yang panjangnya nol dan dilambangkan ‘ ‘.
• Nama tipe untuk karakter adalah char
• Ranah nilai untuk karakter adalah semua huruf di dalam alfabet (‘a’, … ‘z’, ‘A’ … ‘Z’) angka desimal (0 … 9), tanda baca (‘.’, ‘:’, ‘!’, ‘?’, ‘,’, dll), operator aritmetik (‘+’, ‘-‘, ‘*’, ‘/’), dan karakter-karakter khusus seperti (‘$’, ‘#’, ‘@’, ‘^’, ‘~’, dll). Daftar karakter baku yang lengkap dapat dilihat di dalam buku-buku yang memuat tabel ASCII.
• Konstanta karakter harus diapit oleh tanda petik tunggal. Ket: ingatlah bahwa ‘9’ adalah karakter, tetapi 9 adalah integer.
• Untuk operasi yang dilakukan hanya operasi perbandingan yaitu :
= (sama dengan)
≠ (tidak sama dengan)
> (lebih besar)
≥ (lebih besar atau sama dengan)
< (lebih kecil)
≤ (lebih kecil atau sama dengan)
Ket. Tipe karakter juga mempunyai keterurutan (successor dan predecessor) yang ditentukan oleh cara pengkodeannya didalam komputer, misalnya pengkodean ASCII. Operasi perbandingan menghasilkan nilai boolean.
String
String adalah untaian karakter dengan panjang tertentu.
• Nama tipe string adalah string
• Ranah nilai tipe string adalah deretan karakter yang telah didefenisikan pada ranah karakter.
• Konstanta pada tipe string harus diapit oleh dua buah tanda petik tunggal.
Contoh :
‘Makassar’
‘boby’
‘Abc1234’
‘*…*…#008*’
‘B’
Untuk string kosong (null) dilambangkan dengan ‘ ’.
• Operasi pada tipe string didefinisikan 2 macam :
a. Operasi Penyambungan (concatenation)
Operasi “+”. Operator ini bukanlah operator penjumlahan seperti pada tipe real/integer tetapi operator penyambungan. Contoh :
‘Boby’ + ‘Hermez’ = ‘Boby Hermez’
b. Operator perbandingan
Sama halnya tipe karakter akan menghasilkan nilai boolean.
=, ≠, <, ≤, >, ≥
2. Tipe Bentukan
Tipe bentukan adalah tipe yang didefenisikan sendiri oleh pemogram (user defined type data). Tipe bentukan di susun oleh satu atau lebih tipe dasar. Ada 2 macam tipe bentukan :
1. Tipe dasar yang diberi dengan nama tipe baru
2. Tipe terstruktur
Tipe dasar yang diberi nama tipe baru (user defined type data). Penamaan tipe baru disebabkan oleh kemungkinan untuk memudahkan interpretasi dan pembacaan program oleh pemogram.
Kita dapat memberi nama baru untuk tipe dasar tersebut dengan kata kunci type. Untuk Nilai, Ranah nilai, konstanta, dan operasi-operasi tipe tersebut tidak berubah dan sesuai dengan tipe dasar aslinya, misalnya : type bilangan bulat / integer.
Ket. Bilangan sama saya dengan tipe integer. Jadi, misalkan variabel i bertipe bilangan bulat, sama saja jika i bertipe integer.
Contoh :
DEKLARASI
i = integer
Sama Saja
DEKLARASI
Type bilangan_bulat : integer
i = bilangan_bulat
Tipe Terstruktur.
Tipe terstruktur adalah tipe yang berbentuk rekaman (record). Rekaman (record) disusun oleh satu atau lebih field. Tiap field menyimpan data dari tipe dasar tertentu atau dari tipe bentukan lain yang sudah didefinisikan sebelumnya. Nama rekaman ditentukan sendiri oleh pemogram.
Contoh :

a. Mendefenisikan titik (type)
Titik dalam koordinat kartesian dinyatakan sebagai (x,y).
Penulisannya :
type titik : record < x:real, y:real>; atau
type titik : record < x,y : real>
Jika pendeklarasian P adalah variabel yang bertipe titik makan pendeklarasian tiap field pada P adalah :
P.x
P.y

b. Mendefinisikan tipe tanggal
dd.mm.yy
Penulisannya:
tipe tanggal : record
< dd : integer, mm : integer, yy : integer >
Jika D adalah variabel bertipe tanggal, maka cara pendeklarasiannya adalah :
D.dd
D.mm
D.yy


c. Mendefinisikan tipe jadwal kereta api
Penulisan tipe Jadwal kereta Api:
type Jadwal_KA : record < NoKA : string, KotaAsal : string, JamBerangkat : Jam, KotaTujuan : string, JamTiba : Jam >
Jika JKA adalah peubah bertipe Jadwal_KA, maka cara mendeklarasikan tiap-tiap field adalah :
JKA.NoKA
JKA.KotaAsal
JKA.JamBerangkat
JKA.JamBerangkat.hh
JKA.JamBerangkat.mm
JKA.JamBerangkat.ss
JKA.KotaTujuan
JKA.JamTiba.hh
JKA.JamTiba.mm
JKA.JamTiba.ss
Nama
Nama dalam algoritma dipakai sebagai pengidentifikasi “sesuatu” dan pemrogram mengacu “sesuatu” itu melalui namanya. Untuk menjaga ketaatasasan, maka algoritma didalam buku ini memiliki aturan penulisan nama sebagai berikut :
1. Nama harus dimulai dengan huruf alfabet, tidak boleh dengan angka, spasi atau karakter khusus lainnya
2. Huruf besar atau huruf kecil tidak dibedakan (kecuali bahasa C)
3. Karakter penyusunan nama hanya boleh huruf alfabet, angka, dan “_”. Underscore (“_”) dihitung sebagai sebuah huruf
4. Nama tidak boleh mengandung operator aritmetika, operator relasional, tanda baca, dan karakter khusus lainnya.
5. Karakter dalam nama tidak boleh dipisahkan dengan spasi.
6. Panjang nama tidak dibatasi
Nama sebaiknya interpretatif, yaitu mencerminkan nilai intrisik atau fungsi yang dikandungnya.
Contoh penamaan : titik6 atau titik_6, Nilai_Ujian atau NilaiUjian, PT1 atau PT_1, Hari, A1. Didalam algoritma, objek yang diberi nama dapat berupa :
1. Peubah (variabel) adalah tempat penyimpanan data/informasi di memory yang isinya dapat diubah.
2. Konstanta (Constant) : adalah tempat penyimpanan didalam memory yang isinya tetap selama pelaksanaan program dan tidak dapat diubah nilainya
3. Tipe bentukan, seperti yang telah dijelaskan, berupa tipe yang dibentuk oleh pemogram.
4. Nama Fungsi
5. Nama Prosedur


Contoh Pengidentifikasian lewat nama :
ALGORITMA
{Nama konstanta}
const phi = 3.14
const Nmaks = 100
const sandi = ‘xyz’
{Nama tipe}
type MHS : record
< NIM :integer,
Nama: string,
Usia : string,
>
type Titik : record
type Kompleks : record
type Jam : record < hh : integer,
mm : integer,
ss : integer
>
type JadwalKA : record < NoKA : string,
KotaAsal : string,
JamBerangkat : Jam,
KotaTujuan : string,
JamTiba : Jam
>

{Nama peubah}
LuasL : real {Luas Lingkaran}
PSW : string {Password}
Indeks : char {Indeks nilai kuliah}
Ketemu : boolean {hasil pencarian, true jika ditemukan, false jika tidak}
P : Titik {Koordinat titik pusat lingkaran}
F : Kompleks {Frekuensi, hasil transformasi Fourier}
JKA : JadwalKA {Jadwal Kereta Api}
{Nama fungsi dan prosedur}
PROCEDURE HitungTitikTengah (Input P1: Titik, Input P2:Titik, Output Pt:Titik)
{ Menghitung titik tengah garis dengan titik ujung P1 dan P2 }
Function Faktorial (Input n : integer) –> integer
{Mengembalikan nilai faktorial dari n > 0}
Function Cari (Input x:integer) –> boolean
{true bila x ditemukan, false bila sebaliknya}
PROCEDURE CetakJadwalKA (Input kota : string)
{Mencetak jadwal semua kereta api yang berangkat dari kota tertentu}

Translasi ke Notasi Bahasa Pemograman
PASCAL :
(*DEKLARASI*)
{Nama Konstanta}
Const phi = 3.14;
Nmaks = 100;
Sandi = ‘xyz’;
{Nama Tipe}
type
MHS = record
NIM : integer;
nama : string;
usia : integer;
end;
Titik = record
x : real;
y : real;
end;
Kompleks = record
a : real;
b : real;
end;
Jam = record
hh : integer;
mm : integer;
ss : integer;
end;
JadwalKA = record
NoKA : string[5];
KotaAsal : string[15];
JamBerangkat : Jam;
KotaTujuan : string;
JamTiba : Jam;
end;
{Nama peubah / Variabel}
var
LuasL : real; {Luas Lingkaran}
PSW :string; {Password}
indeks : char; {Indeks nilai ujian}
ketemu : boolean; {Hasil pencarian, true jika ditemukan, false jika tidak}
P : Titik; {Koordinat titik pusat lingkaran}
F : Kompleks; {Frekuensi, hasil transformasi Fourier}
JKA : JadwalKA; {Jadwal kereta Api Ekspress}
{Nama Fungsi dan Procedure}
Procedure HitungTitikTengah (P1 : Titik, P2 : Titik, Var Pt : Titik);
{Menghitung titik tengah garis dengan titik ujung P1 dan P2}
Function Faktorial (n : integer) : integer;
{ Mengembalikan nilai faktorial dari n > 0}
Function Cari (x : integer) : boolean;
{ true bila X ditemukan, false jika tidak}
Procedure CetakJadwalKA (kota : string[15]);
{Mencetak jadwal semua kereta api yang berangkat dari kota tertentu}


Bahasa C :
/* DEKLARASI */
/* Nama Konstanta */
const float phi = 3.14;
const int N = 100;
const char sandi[] = “xyz”;
/* Nama Tipe */
typedef struct { int NIM;
char nama[25];
int usia;
} MHS;
typedef struct {float X; float y;} Titik;
typedef struct {float a; float b;} Kompleks;
typedef struct {int hh; int mm; int ss;} Jam;
typedef struct { char NoKA[5];
char KotaAsal[15];
Jam JamBerangkat;
Char KotaTujuan[15];
Jam JamTiba; } JadwalKA;
typedef enum {false = 0, true = 1} boolean; /*Tipe bentukan untuk boolean dikhususkan untuk C*/
/* Nama Peubah */
float LuasL;
char psw[255];
char indeks;
boolean ketemu;
Titik P;
Kompleks F;
JadwalKA JKA;
/* Nama Fungsi dan Prosedur*/
void HitungTitikTengah (Titik P1, Titik P2, Titik *P);
int Faktorial (int n);
boolean Cari (int x);
void CetakJadwalKA(char kota[15]);


Nilai
Nilai adalah besaran dari tipe data yang sudah didefinisikan (tipe dasar dan tipe bentukan). Nilai dapat berupa isi yang disimpan oleh nama peubah atau nama konstanta, nilai dari hasil perhitungan, atau nilai yang dikirim oleh fungsi. Nilai dapat dimanipulasi dengan cara mengisikannya ke peubah lain yang bertipe sama, dipakai untuk perhitungan atau dituliskan kepiranti keluaran.
Pengisian nilai kedalam peubah dilakukan dengan 2 cara, yaitu :
1. Pengisian nilai secara langsung
Pengisian nilai secara langsung adalah memasukkan sebuah nilai ke dalam nama peubah langsung di dalam teks algoritma dengan syarat nilai yang diisikan harus bertipe sama dengan dengan tipe peubah.
Akibat dari pengisian ini, nilai peubah akan hilang dan tergantikan dengan nilai yang baru dimasukkan.
Contoh 1 (Pengisian Nilai secara langsung) :
DEKLARASI
k : integer
jarak : real
ketemu : boolean
NamaKota : string
type Jam : record
< hh : integer
mm : integer
ss : integer
>
J : Jam
{Contoh pengisian dengan nilai-nilai konstanta }
ALGORITMA
k <– 5
jarak <– 0.03
ketemu <– false
NamaKota <– ‘SOLO’
{ Mengisi J dengan Jam 6 : 12 : 29 }
J <– <6, 12, 39>
{Atau dengan cara yang lebih rinci :
J.hh <– 6
J.mm <– 12
J.ss <– 39
}

Contoh 2 (Pengisian nilai dari peubah yang lain)
DEKLARASI
B, awal, suhu1, suhu2, ulang : integer
ALGORITMA
B <– awal
suhu1 <– suhu2
ulang <– mulai

Contoh 3 (Pengisian dari nilai ekspresi). Ket. Hasil ekspresi harus bertipe sama dengan tipe peubah di ruas kiri.
DEKLARASI
P, Q, R, nisbah, Jumlah, banyak, i, j, k : integer
a, b, c, determinan : real
h : boolean
ALGORITMA
c <– a + b
nisbah <– jumlah/banyak * 5
determinan <– 6 * 6 – 4 * a * c
k <– (i + j) div 2
h <– (i > 1) and (i < 100)
Contoh 4 (Menaikkan Nilai sebesar 1)
DEKLARASI
A : integer
ALGORITMA
A = A+1
Contoh 5 {Hasil M = 132, P = 164}
DEKLARASI
M, P : integer
ALGORITMA
M <– 16
P <– M * 2
M <– P + 100
P <– P + M

2. Pengisian Nilai Lewat Pembacaan
Pengisian nilai lewat pembacaan adalah pengisian nilai dari piranti masukkan. Dalam algoritma, pernyataan pembacaan adalah dengan menggunakan notasi “read”.
Contoh 1 (Membaca nilai untuk peubah)
DEKLARASI
M, a1, a2, a3 : real
nama_kota : string
NRP : integer
type titik : record
P : titik
ALGORITMA
read(M)
read(a1, a2, a3)
read(nama_kota)
read(nama_mhs, NRP, nilai)
read(P.x, P.y)

Ekspresi
Ekspresi adalah transformasi nilai menjadi keluaran yang dilakukan melalui suatu perhitungan (komputasi). Ekspresi terdiri atas operand dan operator, contoh ekspresi: “a + b”. Untuk pebuah a dan b dinamakan operand, sedangkan “+” merupakan operator.
Dalam algoritma pemograman terdapat 3 macam ekspresi :
1. Ekspresi Aritmetik
Ekspresi Aritmetik adalah ekspresi yang baik operandnya bertipe numerik dan hasilnya juga bertipe numerik.
Contoh 1.
DEKLARASI
a, b, c : real
i, j, k : integer
ALGORITMA
a * b = c
i + j = k
Keterangan. Operator yang mempunyai tingkatan lebih tinggi lebih dahulu dikerjakan daripada operator yang tingkatannya lebih rendah. Contoh : a/c + b. Yang pertama dikerjakan adalah a/c, kemudian hasilnya ditambahkan dengan b.
Tingkatan operator aritmetika (dari tertinggi ke terendah) :
(i). /, div, mod
(ii) *
(iii) +, -
Pada ekspresi aritmetik terdapat 2 buah operator yaitu :
- Operator biner, yaitu ekspresi yang operatornya membutuhkan 2 buah operand. Contoh a + b
- Operator Uner, yaitu “-” atau operator yang punya 1 operand contoh “-2”
Contoh 2. (Penulisan ekspresi dengan notasi algoritma)
T = 5/9 * (c + 32)
Z = (2*x + y) / (5 * w)
Y = 5((a+b) / (c*d) + m (p + q))
2. Ekspresi Relasional
Ekspresi relasional adalah ekspresi dengan operator <, ≤, >, ≥, =, dan ≠, not, and, or dan xor dengan menghasilkan nilai bertipe boolean (true atau false). Biasanya ekspresi Relasional disebut ekspresi boolean.

Contoh

DEKLARASI
const ketemu = false
const ada = true
const X = 8
const Y = 12
ALGORITMA
not ada = false
ada or ketemu = true
ada and true = true
X < 5 = false
ada or (X = Y) = true
3. Ekspresi String
Ekspresi String adalah ekspresi dengan operator “+” (operator penyambungan / concatenation).
Contoh
DEKLARASI
Kar : char
S : string
{ Contoh-contoh ekspresi untuk tipe string}
(S + Kar) + ‘ C ’
‘Jl.Ganesha’ + ‘No.10’
Menuliskan Nilai ke Piranti Keluaran
Nilai yang disimpan dimemori dapat ditampilkan ke piranti keluaran (output) dengan instruksi penulisan menggunakan notasi “write”.
write (var1, var2, var3, …, varN)
write (konstanta)
write (ekspresi)
write (nama, konstanta, ekspresi)
Contoh:
DEKLARASI
A,B : integer
NRP : integer
nama_mhs : string
nilai : real
type Jam : record < hh : integer, mm : intege, ss : integer >
J : Jam
ALGORITMA
A <– 8
B <– 6
nama_mhs <– “Andi Baco”
NRP <– 10290056
nilai <– 90.8
J.hh <– 6
J.mm <– 12
J.ss <– 45write (100)
write (A)
write (‘A’)
write (‘Jurusan Teknik Informatika ITB’)
write (‘Nilai A = ’, A)
write (nama_mhs, NRP, nilai)
write (A+B)
write (‘Nilai seluruhnya adalah’, A + B / 2 * 10)
write (J.hh, ‘:’, J.mm, ‘:’, J.ss)
Hasil dari Algoritma diatas :
100
8
A
Jurusan Teknik Informatika ITB
Nilai A = 8
Andi Baco, 10290056, 90.8
14
Nilai seluruhnya adalah 70
6 : 12 : 45
Berikut adalah contoh-contoh Algoritma dengan menggunakan teknik pseude-code kemudian ditranslasi ke bahasa pemograman Pascal dan C.
ALGORITMIK:
DEKLARASI
type Titik : record
P : Titik
a,b : integer
nama_arsip, h : string
nilai : real
c : char
ALGORITMA
nilai <– 1200.0
read (P.x, P.y)
read (nama_arsip)
h <– nama_arsip
read (a, b)
read (c)
write (‘Nama Arsip : ’, nama_arsip)
write (‘Koordinat titik adalah :’, P.x, ‘,’, P.y)
write (b, nilai)
write (‘Karakter yang dibaca adalah ’, C )
PASCAL
(*DEKLARASI*)
type Titik = record
x : real;
y : real;
var
P : Titik;
a, b : integer;
nama_arsip, h : string[12];
nilai : real;
c : char;
(*ALGORITMA*)
begin
nilai := 1200.0;
readln(P.x, P.y);
readln(nama_arsip);
h := nama_arsip;
readln(a, b);
readln(c);
writeln(‘Nama Arsip : ‘, nama_arsip);
writeln(‘Koordinat titik adalah :’, P.x, ‘,’, P.y);
writeln(b, nilai);
writeln(‘Karakter yang dibaca adalah ’, C);
end.
C:
/*DEKLARASI*/
typedef struct { float x;
float y; } Titik;
Titik P;
int a, b;
char nama_arsip[12], h[12];
float nilai;
char c;
/*ALGORITMA*/
main()
{
nilai = 1200.0;
scanf(“%d %d”, &P.x, &P.y);
scanf(“%s”, nama_arsip);
strcpy(h, nama_arsip);
scanf(“%d %d”, &a, &b);
scanf(“%c”, &c);
scanf(“Nama Arsip : %s \n”, nama_arsip);
printf(“Koordinat titik adalah %d, %c, %d \n”, P.x, P.y);
printf(“%d %f \n”, b, nilai);
printf(“Karakter yang dibaca adalah %c \n, C”);
}


BAB 3

Aturan Penulisan Algoritma

Aturan Penulisan Algoritma

Teks algoritma berisi deskripsi langkah-langkah penyelesaian masalah. Deskripsi tersebut dapat ditulis dalam notasi apa pun, asalkan mudah dibaca dan mengerti. Tidak ada notasi yang baku dalam penulisan teks algoritma sebagaimana pada notasi bahasa pemrograman.
Tiap orang dapat membuat aturan penulisan dan notasi algoritma sendiri. Hal ini dapat dimengerti karena teks algoritma tidak sama dengan teks program. Program adalah implementasi algoritma dalam notasi bahasa pemrograman tertentu. Namun, agar notasi algoritma mudah ditranslasi ke dalam notasi bahasa pemrograman, maka sebaiknya notasi algoritma tersebut berkoresponden dengan notasi bahasa pemrograman secara  umum.  Sebagai contoh, perintah:
tulis nilai X dan Y
dalam notasi algoritma menjadi:
write(X, Y)
Notasi write ini berarti nilai X dicetak ke peranti keluaran. Tidak penting apakah X dan Y ditulis ke layar atau ke printer atau ke piranti keluaran yang lain.
Selain itu, di dalam algoritma tidak mempersoalkan format tampilan keluaran, misalnya apakah hasil penulisan antara X dan Y dipisah dengan spasi atau dengan koma, juga apakah X dan Y dicetak di dalam baris yang sama atau tidak, dan lain-lain.
Selain itu, di dalam algoritma tidak mempersoalkan format tampilan keluaran, misalnya apakah hasil penulisan antara X dan Y dipisah dengan spasi atau dengan koma, juga apakah X dan Y dicetak di dalam baris yang sama atau tidak, dan lain-lain.
Hal-hal teknis baru dipikirkan pada saat translasi algoritma menjadi program. Dengan demikian, notasi algoritma benar-benar abstraksi dari notasi bahasa pemrograman.
Notasi “write” di dalam algoritma berkoresponden dengan write atau writeln dalam bahasa Pascal, printf dalam bahasa C, WRITE dalam bahasa Basic, atau write dalam bahasa Fortran. Selain itu, pada beberapa bahasa pemrograman seperti Pascal dan C, antara setiap instruksi dipisahkan dengan tanda “;” (semicolon). Jadi, translasi write(X)  ke dalam masing-masing bahasa tersebut adalah dengan anggapan piranti keluarannya adalah layar.
write(X, Y);              { dalam bahasa PASCAL }
  
   printf(“%d %d”, X,Y);      /* dalam bahasa C */
 
   WRITE X, Y                 ‘ dalam bahasa BASIC
Perhatikanlah bahwa setiap bahasa mempunyai aturan sendiri dalam menggunakan perintah penulisan. Bahasa C misalnya mengharuskan penulisan penentu format seperti “%d” yang berarti nilai X dan Y yang akan dicetak bertipe bilangan bulat. Selain itu, setiap instruksi pada bahasa Pascal dan C ditutup dengan tanda titik koma (;).
Contoh lainnya, perintah
Isikan nilai X ke dalam min
ditulis dalam notasi algoritma menjadi
min ß X
Notasi “ß” berarti mengisi (assign) peubah (variabel) min dengan nilai peubah X. Translasi notasi “ß” ke dalam bahasa Pascal adalah “:=“, dalam bahasa C adalah “=“, dalam bahasa Basic adalah “=“.
Jadi, translasi minßX ke dalam masing-masing bahasa tersebut adalah:
min:=X;              { dalam bahasa PASCAL }
  
   min=X;               /* dalam bahasa C */
 
   min=X                ‘ dalam bahasa BASIC
Pada dasarnya teks algoritma selalu disusun oleh tiga bagian (blok): bagian judul (header) algoritma, bagian deklarasi, dan bagian deskripsi algoritma. Setiap bagian disertai dengan komentar untuk memperjelas maksud teks yang dituliskan. Komentar adalah kalimat yang diapit oleh pasangan tanda kurung kurawal (‘{’ dan ‘}’).


Judul Algoritma
Merupakan bagian yang terdiri atas nama algoritma dan penjelasan (spesifikasi) tentang algoritma tersebut. Nama algoritma sebaiknya singkat namun cukup menggambarkan apa yang dilakukan oleh algoritma tersebut. Di bawah nama algoritma disertai dengan penjelasan singkat (intisari) tentang apa yang dilakukan oleh algoritma. Penjelasan dibawah nama algoritma sering dinamakan juga spesifikasi algoritma. Algoritma harus ditulis sesuai dengan spesifikasi yang didefinisikan.
Contoh judul algoritma misalnya

Algoritma menghitung luas Lingkaran
{Menghitung luas lingkaran untuk ukuran jari-jari tertentu. Algoritma menerima masukan jari-jari lingkaran, menghitung luasnya, lalu mencetak luas lingkaran ke piranti lunak}

Catatan:
Dalam menuliskan nama algoritma dalam huruf besar dan menggunakan tanda “_” (underscore) untuk memisahkan antar kata. Huruf besar dan tanda “_” bukan keharusan. Sebaiknya tidak menggunakan spasi (“ “) untuk memisahkan antar kata di dalam nama algoritma. Ini ada manfaatnya, terutama untuk judul program dalam bahasa Pascal.
Merupakan bagian untuk mendefinisikan semua nama yang dipakai di dalam algoritma. Nama tersebut dapat berupa nama tetapan, nama peubah, nama tipe, nama prosedur, dan nama fungsi.
Contoh pendefinisian nama variabel di dalam bagian deklarasi :
DEKLARASI :
            Alas, Tinggi, Luas : real
DESKRIPSI :
Read (Alas, Tinggi, Luas)
Luas ß (Alas * Tinggi)
Write (Luas)

Merupakan bagian inti dari suatu algoritma. Bagian ini berisi urutan langkah-langkah penyelesaian masalah. Setiap langkah algoritma dibaca dari “atas” ke “bawah”. Urutan penulisan menentukan urutan pelaksanaan perintah.






Contoh deskripsi algoritma :


DESKRIPSI :
Read (c,d)
If c < d then
            e ß a*b
else
            e ß a-b
endif
write (e)

Translasi Teks Algoritma ke dalam Teks Program
Teks algoritma adalah hasil pemikiran konseptual. Agar dapat dilaksanakan oleh komputer, algoritma harus ditranslasi ke dalam notasi bahasa pemrograman.
Beberapa hal penting yang perlu diketahui dalam menterjemahkan ke dalam bahasa pemrograman:
·         Beberapa bahasa pemrograman case sensitive
·         Aturan penulisan variabel yang berbeda
·         Penulisan komentar yang berbeda
·         dan sebagainya…..




BAB 5






RUNTUNAN (SEQUENCE)
Sebuah runtunan terdiri dari satu atau lebih instruksi. Tiap instruksi dikerjakan secara berurutan sesuai dengan urutan penulisannya, yakni sebuah instruksi dilaksanakan setelah instruksi sebelumnya selesai dilaksanakan. Urutan instruksi menentukan keadaan akhir algoritma. Bila urutannya diubah, maka hasil akhir mungkin juga berubah.

menjelaskan Struktur Runtunan. Seperti apa sih struktur runtunan dalam algoritma itu ?
Pengertian Struktur Runtunan

1. Struktur algoritma yang paling sederhana dan
mendasar.
2. Instruksi diproses secara sekuensial
(berkelanjutan).
Ciri - ciri Runtunan
1. Tiap baris instruksi dikerjakan satu persatu.
2. Tidak ada pengulangan untuk setiap baris
instruksi.
3. Urutan instruksi yang dijalankan sama dengan
urutan instruksi di algoritma.
4. Akhir instruksi merupakan akhir algoritma.
Contoh 1 : Buatlah flowchart untuk mengonversi dari suhu Fahrenheit ke Celcius.
Contoh 2 : buatlah algoritma untuk menukarkan isi dua buah variabel.
Untuk menukarkan isi dua buah variabel,diperlukan sebuah variabel yang digunakan untuk membantu penukaran data. Algoritma yang diperlukan:
·            Masukkan (a,b)
·              a
·              b
·              c
·           Tampilkan (a,b)
Menggambarkan proses penukaran berdasarkan algoritma di atas.
Setelah proses b   c dijalankan, isi a dan b sudah tertukar.


Contoh 3:
Kasus Gaji Karyawan
Suatu perusahaan mempunyai n orang karyawan dengan asumsi
penggajian sebagai berikut:
1. Gaji setiap karyawan akan sama jumlahnya.
2. Gaji karyawan dihitung dengan cara gaji pokok ditambah tunjangan
dikurangi pajak.
3. Pajak yang berlaku di perusahaan tersebut adalah 10% dari gaji
pokok sebelum ditambah tunjangan.
4. Tunjangan yang didapat dari perusahaan adalah 20%.
5. Gaji pokok bisa berubah tergantung kebijakan perusahaan.
Hitung gaji yang gaji yang harus dikeluarkan untuk seluruh karyawan,
detail pajak perorang, dan detail tunjangan perorang.

Penyelesaiannya :
Algoritma Kasus Gaji Karyawan
Algoritma Gaji_Karyawan
{I.S:  Jumlah karyawan dan Gaji pokok diinput oleh user}
{F.S: Menampilkan gaji, pajak, dan tunjangan karyawan}
Deklarasi:
gaji_pokok,gaji,jml_gaji:real
pajak:real
tunjangan:real
jml_karyawan:integer
Algoritma:
input(jml_karyawan,gaji_pokok)
pajak <- 0.1*gaji_pokok
tunjangan <- 0.2*gaji_pokok
gaji <- gaji_pokok+tunjangan-pajak
jml_gaji <- gaji*jml_karyawan
output(‘Pajak perorang= Rp. ‘,pajak)
output(‘Tunjangan perorang= Rp. ‘,tunjangan)
output(‘Gaji‘,jml_karyawan,’ orang karyawan= Rp. ‘,jml_gaji)



















Program Kasus Gaji Karyawan
program Gaji_Karyawan;
uses crt;
var
gaji_pokok,gaji,jml_gaji:real;
pajak:real;
tunjangan:real;
jml_karyawan:integer;
begin
write('Masukan jumlah karyawan: ');
readln(jml_karyawan);
write('Masukan gaji pokok : ');readln(gaji_pokok);
pajak:=0.1*gaji_pokok;
tunjangan:=0.2*gaji_pokok;
gaji:=gaji_pokok+tunjangan-pajak;
jml_gaji:=gaji*jml_karyawan;
clrscr();{bisa diganti writeln()}
writeln('Pajak perorang = Rp. ',pajak:0:2);
writeln('Tunjangan perorang = Rp. ',tunjangan:0:2);
writeln('Gaji ',jml_karyawan,' orang = Rp. '
,jml_gaji:0:2);
writeln();
write('Tekan sembarang tombol untuk menutup...');
readkey();
end.