Bagaimana cara efektif dalam memahami algoritma?

Sebagai mahasiswa jurusan IT, kita harus memahami algoritma. Tetapi, kadang kala kita susah untuk memahaminya, lantas bagaiaman cara efektifnya ?

Karakteristik Algoritma

Algoritma didefinisikan secara umum dalam istilah sederhana sebagai “instruktis untuk menyelesaikan tugas”. Algoritma memang instruksi. Mungkin deskripsi yang lebih akurat adalah bahwa algoritma adalah pola untuk menyelesaikan tugas secara efisien. Titik pasti dari sebuah algoritma adalah tidak menyisakan ruang untuk subjektivitas atau penilaian.

Algoritma menangani data dan mengambil tindakan yang dihasilkan secara tetap sesuai dengan aturan yang ditetapkan. Dalam bentuknya yang paling murni, kapan pun dimasukkan input yang sama ke dalam algoritma, maka akan mendapatkan hasil yang sama. Komputer yang menggunakan algoritma memiliki kelebihan dibandingkan manusia karena ia akan selalu melakukan tindakan yang relevan dengan benar dan cepat; Manusia memiliki keuntungan karena mereka dapat mengubah dan bahkan meninggalkan algoritma jika melakukan hal itu menguntungkan dalam situasi tertentu - keterampilan yang dapat digambarkan sebagai “akal sehat”.


Algoritma itu ibarat sebuah jembatan, yang mampu menghubungkan antara logika manusia ke dalam logika bahasa pemrogaman. Algoritma ini semacam urutan perintah yang dari situlah menghasilkan suatu keutuhan perintah-perintah yang akhirnya dikonversi (dituliskan dalam bentuk lain) yakni menjadi kode program.

Algoritma ini merupakan panduan bagi programmer, sebagai acuan dalam koding (melakukan programming). Sebagai contohnya adalah, ketika Anda akan membuat sebuah rutinitas fungsi. Rutinitas fungsi merupakan sebuah urutan perintah yang akan dijalankan oleh sebuah program. Ketika Anda membuat sebuah rutinitas fungsi dalam menangkap inputan yang diketikkan oleh user, contoh utuhnya misalnya form buku tamu, ketika user mengetikkan nama, email, alamat, dan komentar buku tamu, lalu mengklik tombol kirim, nah rutinitas fungsi yang menangkap input ini bentuk sebelumnya adalah algoritma. Jadi algoritma lah yang menyelesaikan rutinitas fungsi, menangkap hasil inputan yang dikirimkan oleh user, kemudian akan dibagaimanakan kah inputan tersebut. Apakah akan dimasukkan ke dalam database, kemudian di tampilkan, atau membutuhkan approval (aktivasi) sebelum ditampilkan, itu semua di definisikan (jabarkan) dulu dalam bentuk algoritma.


Kunci Untuk Memahaminya

Jonathan Cutrell, direktur teknologi Whiteboard, mengemukakan bahwa hanya mempelajari kode yang dibutuhkan untuk menulis sebuah algoritma dalam bahasa pemrograman tertentu saja tidak cukup untuk mendapatkan hasil terbaik. Sebagai gantinya, programmer perlu meluangkan waktu untuk memahami tujuan setiap komponen kode algoritma, berkonsentrasi pada “Bagaimana” dan “Kenapa” daripada hanya “Apa”. Pendekatan ini akan membantu mengadaptasi dan memperbaiki algoritma untuk situasi tertentu. Cutrell juga mencatat pentingnya memahami bagaimana algoritma tertentu berinteraksi dengan elemen perangkat lunak lainnya seperti aplikasi dan bahkan sistem operasi. Interaksi ini mungkin mengubah pendekatan yang paling efisien ke algoritma dibandingkan dengan pendekatan yang Anda lakukan saat merancangnya secara terpisah.

Kamu juga bisa mengikuti kursus tambahan, dan juga ada beberapa cara yang efektif :

  • Baca setiap topik, kerjakan latihan2nya tanpa mencari jawabannya langsung diinternet

  • Gunakan internet jika kamu sudah memikirkannya dalam waktu yang lama dan tidak menemukan hasilnya, setelah memikirkannya dalam jangka yang lama, lama juga ingatan akan algoritma tersebut didalam pikiran kamu.

  • Cobalah untuk kode algoritma klasik, tanpa melihat catatan, setelah belajar tentang topik. Kemungkinan kamu akan lupa bagaimana beberapa prosedur hashing diimplementasikan secara rinci, beberapa hari setelahnya, kecuali jika kamu melewati beban penerapan, pengujian dan debugging.

  • Biasanya setiap topik, akan memberi petunjuk tentang perkembangan terbaru atau alternatif dari satu algoritma, kecuali untuk versi klasik. Versi ini mungkin tidak ada dalam buku ini, namun begitu kamu selesai dengan topik masing-masing, kamu dapat meluangkan waktu dan mencari secara online tentang versi algoritma lainnya, peningkatan kompleksitasnya.

  • Harus memperbanyak latihan bagaimana mencari langkah-langkah solusi secara logis. Misalnya saja kita bisa membuat permasalahan sendiri dan kemudian kita cari solusinya.

  • Jangan hanya puas mengerjakan tugas dari dosen. Karena apa yang kita dapat dari dosen hanya dasarnya saja dan itu masih dalam skalakecil untuk kita belajar program yang lebih kompleks.

  • Kita harus berusaha mengembangkan apa kita dapat dari tempat perkuliahan.

  • Jangan malas untuk berlatih dan berlatih. Karena dengan terus berlatih maka logika kita sering digunakan maka semakin mudah pula kita memecahkan permasalahn dan semakin hafal dengan script program tersebut.

  • Terus menerus belajar dan jangan pernah menyerah untuk menjadi seorang programmer yang handal.


Sumber

https://www.techwalla.com/articles/how-to-understand-algorithms

https://code.tutsplus.com/tutorials/understanding-the-principles-of-algorithm-design–net-26561

https://www.quora.com/How-should-I-self-study-Introduction-to-Algorithms

https://www.kaskus.co.id/thread/53e6a40dc3cb17fa2f8b45f2/cara-asik-belajar-logika-dan-algoritma-untuk-pemula-update-terus-gan/

Pertama-tama, kita harus tau apa itu algoritma !

Dengan belajar algoritma, bertujuan untuk mempermudah pembuatan program baik yang sederhana maupun kompleks. Algoritma sendiri merupakan urutan perintah/langkah logis penyelesaian masalah yang disusun secara sistematis. Logis disini berarti sesuai dengan logika manusia. Misalnya, algoritma aktifitas pagi hari sebelum berangkat ke kampus oleh mahasiswa dimulai dari bangun dari tempat tidur, melepas piyama, mandi, berpakaian, sarapan, dan berangkat ke kampus.

Yang dimaksud dengan program adalah kumpulan intruksi yang digunakan untuk mengatur komputer agar melakukan suatu tindakan tertentu. Suatu program ditulis mengikuti kaidah bahasa pemograman tertentu. Bahasa Pemograman dapat di analogikan dengan bahasa yang digunakan manusia (bahasa manusia). Kumpulan intruksi dalam bahasa manusia yang berupa sejumlah kalimat dapat anda analogikan dengan suatu program.


Tindakan yang harus dilakukan !

Perlu menjadi catatan di sini adalah, algoritma bukanlah teori A maupun rumus yang perlu dihapalkan. Untuk memahami algoritma, perlu banyak waktu dan latihan. Berikut cara agar bisa cepat menguasai dan memahami algoritma pemograman berdasarkan sisi dasarnya :

  1. Untuk memahami algoritma dengan memperbanyak latihan bagaimana mencari langkah-langkah solusi secara logis. Kalau perlu buat masalah sendiri dan cari langkah solusinya. Selain itu jangan hanya puas dengan mengerjakan tugas dari dosen. Karena tugas dari dosen itu scope nya kecil, masih banyak hal lain di luar tugas dosen yang perlu dieksplorasi.
  2. Setelah konsep algoritma ini dikuasai, silahkan memilih salah satu jenis bahasa pemrograman yang disukai. Pada prinsipnya, jika konsep algoritma sudah dipegang, mau pindah ke bahasa pemrograman apapun bisa, karena bila sudah masuk ke bahasa pemrograman, fokusnya ke penguasaan sintaks atau aturan penulisan perintah. Maka dari itu, sintaks ini bisa dihapalkan.

Kemudian, kita harus tau bagaimana untuk merancang sebuah algorima !

Sebuah algoritma, langkah-demi-langkah proses logis untuk memecahkan masalah. Algoritma biasanya ditulis melalui flowchart atau pseucode.

Kunci untuk setiap pemecahan masalah adalah bagaimana kita berpikir terhadap prosesnya. Hal yang paling berguna adalah terus bertanya “Bagaimana jika kita melakukannya dengan ini?” Mengeksplorasikan berbagai cara pemecahan masalah dapat membantu untuk menemukan cara terbaik dalam pemecahannya.

Ketika merancang sebuah algoritma, pertimbangkan beberapa cara untuk memecehkan masalah tersebut.

Ada 2 bidang utama untuk merancang sebuah algoritma, yaitu :

  • gambaran besarnya , untuk mengetahui “Apa tujuan akhir?”
  • tahapannya, untuk mengetahui “Apabila ada rintangan, apa yang harus diatasi dalam perjalanan menuju tujuan akhir tersebut?”

Memahami masalah

Sebelum algoritma dirancang, penting untuk memeriksa bahwa masalah ini harus benar-benar dipahami. Ada beberapa hal dasar untuk mengetahui agar benar-benar memahami masalah :

  • Apa input/masukan yang diperlukan ke dalam masalah ?
  • Apa yang akan menjadi output/keluaran dari masalah ?
  • Dalam urutan apa instruksi harus dilakukan ?
  • Keputusan apa yang perlu dibuat dalam masalah ?
  • Apakah setiap daerah dari masalah berulang ?

Setalah hal-hal dasar di atas telah dipahami, barulah kita dapat merancang algoritma dengan baik.


Sebagai contoh penulisan algoritma yang sederhana

Perancangan sebuah algoritma, pasti terlebih dahulu memikirkan bagaimana langkah yang tepat dan langkah-demi-langkah yang benar. Sebagai contoh penulisan algoritma, petunjuk membuat smoothie :

  1. Siapkan blender, buah-buahan yang diinginkan, dan susu sebagai pencampur.
  2. Masukkan buah-buahan ke dalam blender.
  3. Kemudian, tambahkan susu ke dalam blender.
  4. Pasang tutup blender.
  5. Nyalakan blender untuk memulai pencampuran.

SMOOTHIE

Bayangkan jika kita melewatkan salah satu langkah atau terbalik. Kita bisa berakhir pada blender dengan tidak bagus. Atau hanya ada susu di dalam blender dan tidak ada buahnya.
Itu tidak akan membuat smoothie yang lezat, bahkan tidak akan membuat smoothie sama sekali.


Algoritma yang baik

Sebagai algoritma yang baik, ada beberapa hal yang perlu diperhatikan :

  1. Algoritma harus berhenti setelah mengerjakan sejumlah langkah terbatas (berhingga). Barisan instruksi yang dibuat dalam suatu urutan tertentu, dimaksudkan agar masalah yang dihadapi dapat diselesaikan. Banyaknya instruksi atau langkah itu haruslah berhingga. Jika tidak demikian, proses yang dilakukan akan memerlukan waktu yang relatif lebih lama dan diperoleh hasil yang tidak diperlukan atau tidak berhubungan dengan masalah yang ada, bahkan mungkin proses akan terus berlangsung walaupun solusi yang diharapkan telah diperoleh.

  2. Setiap langkah harus didefinisikan dengan tepat dan tidak berarti-dua (ambiguous).

  3. Algoritma memiliki nol atau lebih masukan (input). Masukan adalah besaran yang diberikan kepada algoritma sebelum algoritma mulai bekerja.

  4. Algoritma mempunya nol atau lebih keluaran (output). Keluaran adalah besaran yang memiliki hubungan dengan masukan. Keluaran tersebut tentunya harus merupakan solusi dari masalah yang sedang diselesaikan.

  5. Algoritma harus efektif dan efisien. Setiap langkah harus sederhana sehingga dapat dikerjakan dalam sejumlah waktu yang masuk akal. Suatu algoritma dikatakan efektif jika algoritma tersebut dapat menghasilkan suatu solusi yang sesuai dengan masalah yang diselesaikan. Dengan kata lain suatu algoritma harus tepat guna. Suatu algoritma dikatakan efisien jika waktu proses dari algoritma relatif lebih singkat dan penggunaan memorinya lebih sedikit.

  6. Algoritma harus terstruktur. Urutan baris langkah-langkahnya yang digunakan harus disusun sedemikian rupa agar proses penyelesaiannya tidak berbelit-belit, sehingga memungkinkan waktu prosesnya akan menjadi relatif lebih singkat. Hal ini akan memperlihatkan bahwa bagian-bagian dari proses tersebut dapat dibedakan secara jelas (bagian input, proses dan output). Dengan demikian, memudahkan kita didalam melakukan pemeriksaan ulang.


Video


SUMBER :
http://www.bbc.co.uk/education/guides/z3bq7ty/revision/3
http://www.bbc.co.uk/guides/zqrq7ty#zcc2mp3

1 Like

Programer, mungkin profesi yang satu ini menjadi daya tarik tersendiri dikalangan pecintanya. Namun setelah bertemu atau belajar membuat suatu program terkadang kita merasa programer bukan pilihan yang tepat untuk dijadikan cita cita / profesi karena kerumitan algoritma yang harus dihadapi dalam setiap perancangan suatu program. Belajar Algoritma bertujuan untuk mempermudah pembuatan program baik yang sederhana maupun yang kompleks. Algoritma sendiri merupakan urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis. Logis disini berarti benar sesuai dengan logika manusia. Misalnya algoritma aktifitas pagi hari sebelum berangkat ke kampus oleh seorang mahasiswa dimulai dari bangun dari tempat tidur , melepas piyama , mandi, berpakaian, sarapan dan berangkat ke kampus.

Yang dimaksud dengan program adalah kumpulan intruksi yang digunakan untuk mengatur computer agar melakukan suatu tindakan tertentu. Suatu program ditulis mengikuti kaidah bahasa pemograman tertentu. Bahasa Pemograman dapat di analogikan dengan bahasa yang digunakan manusia (bahasa manusia). Kumpulan intruksi dalam bahasa manusia yang berupa sejumlah kalimat dapat anda analogikan dengan suatu program.

Entah mengapa, ilmu tentang pemrograman ini menjadi gampang-gampang susah. Gampang ketika dijelaskan cara buat program oleh sang dosen. “ternyata cuman gitu aja to” kata kata ini sihhh yang sering keluar… Tapi kalau ada tugas atau disuruh bikin program dari suatu studi kasus tertentu, banyak yang mengeluh… “wah kok sulit ya”… nahhh selajutnya yang ini yang keluar … trus ujung-ujungnya copas milik teman. Hehehhe

Perlu menjadi catatan di sini adalah, algoritma bukanlah teori A maupun rumus yang perlu dihapalkan. Untuk belajar algoritma, perlu banyak waktu dan latihan. Berikut cara agar bisa cepat menguasai dan memahami algoritma pemograman.

Menguasai berbagai teori pemrograman tanpa pernah membangun perangkat lunak akan membuat kita tidak mampu menuliskan kode program yang baik (maintainable, extensible, dll). Memiliki banyak pengalaman mengembangkan program tanpa teori juga tidak baik. Kita menjadi sulit mengembangkan aplikasi dengan algoritma kompleks yang memerlukan dasar matematis kuat seperti AI (Artificial Intelligence) atau compiler misalnya. Keseimbangan penguasaan teori dan praktek sangat penting untuk menjadi programmer yang baik. Mari kita lihat kiat-kiat agar dapat menjadi programmer yang lebih baik, dari sisi teori maupun praktek.

Meningkatkan Kemampuan Teoritis

Beberapa tips untuk meningkatkan kemampuan teori ilmu komputer yang telah saya coba dan sukses:

Kuasai bahasa inggris. Hampir semua buku, artikel, jurnal, dan video tutorial terbaik untuk bidang pemrograman dibuat dalam bahasa Inggris. Pengembangan bahasa pemrograman baru serta dokumentasinya juga biasanya ada dalam bahasa inggris. Jika ingin belajar dari yang terbaik, penguasaan bahasa inggris tidak dapat dihindari.

Sayangnya, hal ini pula yang paling sering dikeluhkan oleh teman-teman saya yang ingin belajar. “Tidak ada sumber berbahasa Indonesia,” kata mereka. Bahkan sebenarnya alasan saya mulai menulis blog dan karya tulis adalah untuk membantu teman-teman yang belum bisa berbahasa Inggris. Tetapi saya juga sadar bahwa itu saja tidak cukup. Lebih baik lagi kalau kita langsung bisa berbahasa Inggris, agar tidak perlu lagi menunggu terjemahan bahasa Indonesia yang belum tentu benar untuk belajar.

Belajar teori sambil praktek. Setiap kali membaca sebuah jurnal atau buku teks, saya hampir selalu tidak dapat mengerti apa yang saya baca secara langsung. Penyebabnya banyak, mulai dari tidak mengerti teorema matematis yang digunakan sampai tidak dapat membayangkan bagaimana membuat kode dari apa yang dideskripsikan dalam jurnal. Salah satu cara paling efektif untuk dapat mengerti tulisan-tulisan seperti ini adalah dengan membaca tulisan sambil mencoba untuk mengimplementasikan apa yang dibaca. Terkadang kita akan tetap bingung ketika mengimplementasikan kode, bahkan ketika kode sudah jalan dan menghasilkan keluaran yang benar. Ketika hal ini terjadi, biasanya saya akan melakukan debugging dan menjalankan program langkah demi langkah sampai akhirnya saya mengerti konsep inti dari tulisan.

Cari teman diskusi dan berbagi. Belajar sambil berbagi sangat efektif. Seringkali ketika mempelajari atau membaca sesuatu, ada banyak hal yang kita lewatkan. Berbagi dan berdiksui dengan orang lain membantu kita dalam melihat hal-hal yang terlewatkan itu. Mungkin saja teman kita bertanya tentang hal yang kita lewatkan. Atau bisa juga kita bertanya ke teman, dan mereka membantu menjelaskan hal yang tidak kita mengerti. Secara umum orang yang mengajar dan diajarkan biasanya selalu mendapatkan pelajaran baru.

Jika belum menemukan orang dengan minat yang sama dalam dunia nyata, kita juga dapat memulai dari mencari komunitas online. Alternatif lain lagi adalah dengan menjadi penulis. Setiap kali menulis saya selalu melakukan banyak riset, dan akhirnya pengetahuan akan bidang yang ditulis makin meningkat setelah selesai menulis.

Ketiga tips di atas, jika dilakukan dengan konsisten akan sangat membantu dalam meningkatkan kemampuan pemrograman kita. Tentunya tidak secara instan meningkat, tetapi setidaknya untuk penulis hal ini sudah sangat membantu dalam mengembangkan kemampuan membangun aplikasi.

Meningkatkan Kemampuan Praktek

Sekarang, untuk peningkatan kemampuan praktek:

Ikut terlibat dalam proyek Open source. Katanya belajar dengan orang-orang yang terbaik di bidangnya adalah cara untuk menjadi pintar yang paling cepat. Pada zaman dulu, belajar dengan orang yang paling ahli sulit dicapai karena terkadang orang-orang terbaik berada sangat jauh dari kita. Untungnya, Internet telah mengikis sebagian besar permasalahan ini. Jarak sudah tidak lagi menjadi masalah karena Internet memungkinkan kita untuk berkomunikasi dengan mudah tanpa perlu memikirkan jarak.

Untuk ilmu komputer dan pemrograman, Internet banyak dimanfaatkan untuk saling berbagi kode program. Kode program yang bebas kita sebarkan, gunakan, ubah, dan pelajari ini dapat menjadi bahan pembelajaran yang sangat baik. Apalagi jika kita ikut berkontribusi. Ibaratnya kita mendapatkan pengalaman bekerja sama dengan para pengembang dari seluruh dunia, dan seringkali pengembang-pengembang ini adalah pengembang yang sangat ahli. Jika belum pernah berkontribusi pada proyek open source, segera coba untuk berkontribusi dan lihat bagaimana kemampuan anda akan berkembang pesat!

Selesaikan masalah dengan program. Istilah bahasa Inggrisnya, scratch your own itch. Setiap kali kita menemukan permasalahan otomasi ketika menggunakan komputer, coba untuk menyelesaikan masalah tersebut dengan mengembangkan program sederhana. Diminta untuk menggabungkan banyak dokumen word? Coba kembangkan program untuk melakukan hal itu. File subtitle kurang pas dengan suara? Daripada mengubah satu per satu waktu dalam subtitle, coba kembangkan program untuk melakukan hal ini.

Selalu ingat, ala bisa karena biasa. Semakin banyak kita mengembangkan program-program sederhana untuk menyelesaikan masalah kita maka semakin mahir lah kita dalam mengembangkan program. Semakin banyak pengalaman mengembangkan program sederhana maka semakin siap kita untuk mengembangkan program besar.

Gunakan tools yang memiliki fitur plugin, dan kembangkan plugin sendiri. Hal ini berkaitan dengan saran sebelumnya. Selalu gunakan tools yang memiliki fitur plugin. Tujuan utamanya apa? Supaya ketika kita menemukan masalah dengan tools tersebut (dan percayalah akan ada masalah) kita dapat menyelesaikan masalahnya dengan mengembangkan plugin sendiri. Kembali lagi, Ala bisa karena biasa dst dst dst.

Meningkatkan kemampuan praktek agak sedikit lebih sulit dibandingkan dengan mengembangkan kemampuan teoritis. Ketika mempraktekkan, kita seringkali merasa frustasi karena tidak tahu mau mulai dari mana. Saran dari penulis, selalu mulai dari hal kecil. Jika belum percaya diri untuk berkontribusi dalam proyek open source, coba biasakan diri untuk membuat program-program sederhana terlebih dahulu.

SUMBER

https://bertzzie.com/post/50/bagaimana-supaya-menjadi-pintar-membuat-program