Computational Thinking

Yang penting dalam belajar bukanlah di mana Anda berakhir terhadap teman sekelas Anda, tetapi di mana Anda berakhir terhadap diri Anda sendiri, ketika Anda mulai, yaitu, tentu saja, hari ini. Jadi, apa itu ilmu komputer? Dan apa yang membuat saya sangat tidak nyaman? Yah, saya berani mengatakan kita bisa menggambarkan ilmu komputer seperti ini. Itu hanya proses penyelesaian masalah. Dan apa artinya memecahkan masalah? Anda punya beberapa masukan. Dan tujuannya adalah untuk mendapatkan hasil, solusi, untuk masalah tertentu itu. Dan di antaranya, sungguh, adalah ilmu komputer. Dan kita akan melihat apa yang ada di kotak hitam literal di layar saat kita mulai mengisi beberapa bagian yang kosong. Namun ketika kita menganggap suatu masalah harus diselesaikan, kita semua harus setuju sejak awal, terutama jika kita menggunakan mesin, bagaimana kita akan merepresentasikan input dan output ini? Jadi salah satu konsep pertama yang kami telusuri dalam ilmu komputer adalah bagaimana Anda merepresentasikan informasi itu sendiri.

Dan kemungkinan besar Anda mungkin datang untuk belajar bahwa komputer hanya berbicara bahasa apa, dan jadi apa? Jadi biner. Dan jika Anda belum pernah mendengar istilah itu sebelumnya, baiklah.  Tapi bagaimana kita sampai ke titik itu? Nah, bahkan jika Anda agak tahu bahwa komputer berbicara biner, apa pun artinya, tetapi Anda belum memikirkan cara kerjanya, pertimbangkan bagaimana sebagian besar dari kita belajar cara berhitung mungkin pertama kali di tangan kita. Jika saya ingin menghitung jumlah orang di ruangan itu, saya mungkin melakukan 1, 2, 3, 4, 5, mengacungkan satu jari untuk setiap orang di ruangan itu. Jadi itulah yang dikenal sebagai notasi unary. atau uno, menyiratkan 1 karena saya hanya mengacungkan jari atau tidak menghitung orang di ruangan itu. Tentu saja, saya hanya bisa menghitung begitu tinggi hanya dengan satu tangan. Tapi untungnya, kami memiliki banyak simbol dalam apa yang disebut dunia desimal. Des berarti 10, kita memiliki angka 0 hingga 9. Dan dari sana, kita dapat menyatakan angka apa pun yang kita semua kenal. Tetapi komputer tidak memiliki banyak digit. Mereka hanya memiliki nol dan satu. Namun entah bagaimana, mereka tidak hanya dapat menyimpan angka, tetapi juga huruf, gambar, video, suara, dan banyak lagi.

Jadi bagaimana cara kerjanya? Baiklah, mari kita lihat sekilas hal ini agar semua orang memiliki pemahaman yang sama tentang bagaimana Anda dapat membuat ponsel di saku kita, laptop di meja kita hari ini, hanya dengan menggunakan angka nol dan satu. Nah, ini hanya simbol di layar di sini. Ini, tentu saja, mewakili apa? 123, tapi kenapa? Secara harfiah hanyalah simbol atau mesin terbang di layar, semacam goresan pena yang kita semua anggap memiliki arti. Kami hanya melihat ini sebagai 123. Tapi kenapa begitu? Anda mungkin pernah belajar dulu tentang menganggap digit paling kanan sebagai tempat satuan atau kolom satuan, digit tengah sebagai tempat puluhan, dan digit paling kiri sebagai tempat puluhan. ratusan tempat. Jadi bagaimana kita mendapatkan dari pola 1, 2, 3 ini ke angka 123? Nah, ini adalah matematika mental cepat yang kita semua lakukan secara naluriah. Ini 100 kali 1, ditambah 10 kali 2, ditambah 1 kali 3. Itu, tentu saja, memberi kita 100 ditambah 20 ditambah tiga, atau 123. Jadi kita semua menerima begitu saja proses itu sekarang.

Tapi ternyata ada sistem yang berperan di sini, sistem yang memungkinkan kita mengetahui angka berapa pun cara yang sama. Jadi jika kita memiliki tempat satuan, tempat puluhan, dan tempat ratusan, tentu saja, dalam dunia desimal, ini adalah angka 1, ini adalah angka 2, 3, 4, 5, 6, 7, 8, 9 Sesuatu yang menarik terjadi, tentu saja, setelah 9. Anda semacam membawa 1. Lalu mengapa 010, atau jika kita mengabaikan nol di depan sebagai tidak signifikan, mengapa 0 mewakili angka yang kita semua tahu jelas sebagai 10? Ya, hanya karena 10 kali 1 tambah 1 kali 0. Jadi itulah sistem yang telah kami gunakan selama bertahun-tahun. Dan ternyata kolom-kolom ini, sadarilah, hanyalah pangkat dari 10. Jadi 10 banding 0 adalah 1, 10 banding 1 adalah 10, dan 10 banding 2 adalah 100. Begitulah cara kita mendapatkan tempat satuan, puluhan, dan ratusan .

Sekarang di dunia komputer, Anda tidak memiliki 10 digit, 0 hingga 9. Anda hanya memiliki dua digit, 0 dan 1. Jadi kita dapat membuat sedikit perubahan pada model mental kita di sini, boleh dikatakan, dan baru saja menggunakan 2, pangkat 2, bukan pangkat 10. Jadi itu berarti kolom sebelah kanan akan menjadi 1, kolom tengah akan menjadi 2, kolom kiri akan menjadi 4, dan jika kita teruskan, itu akan menjadi 8, 16, 32 bukannya 1.000, 10.000, 100.000. Tapi idenya persis sama. Jadi saya mengusulkan agar komputer hanya berbicara angka nol dan satu, tentu saja.

Tapi bagaimana mereka mewakili angka yang lebih besar dari 0 dan 1? Nah, ini mewakili 0. Ini mewakili 1. Pola simbol apa di layar yang akan mewakili angka yang kita kenal sebagai 2? Ya. Jadi 010. Jadi Anda baru saja berbicara biner. Jadi, bahkan jika Anda secara umum tahu bahwa biner diucapkan oleh komputer, itu berarti bahwa komputer, untuk mewakili angka yang kita kenal sebagai 2, entah bagaimana menyimpan pola simbol 010. Bagaimana mereka mewakili 3? 011, untuk alasan yang sama. Ini 2 kali 1, ditambah 1 kali 1, memberi kita, tentu saja, tiga. Dan sekarang, sama seperti sebelumnya ketika kita bermaksud 9 menjadi 10, sekarang kita benar-benar beralih dari 3 menjadi 4 dengan membawa 1 sekarang. Jadi dalam biner, bi artinya dua, maka 0 dan 1, 100 bukanlah 100, per se, itu adalah angka yang kita kenal sebagai 4. Dan kita bisa terus naik. Ini tentu saja, sekarang adalah 5. Ini akan menjadi 6. Ini akan menjadi 7. Dan apa yang terjadi jika kita ingin mewakili delapan? Ya. Jadi kita harus menyelesaikan ini entah bagaimana caranya. Kami membutuhkan digit lain. Dan itu baik-baik saja, bukan?

Di kelas matematika, Anda cukup menambahkan tempat lain, kolom lain, untuk mendapatkan kembali nilai yang Anda inginkan. Jadi kita membutuhkan lebih banyak nol atau satu, jika tidak, sekarang dikenal sebagai bit. Jika Anda pernah mendengar istilah bit, itu berarti digit biner, dan 0 atau 1 hanyalah sesuatu yang kita kenal sebagai bit. Dan mengapa ini erat kaitannya dengan komputer? Nah, semewah Mac, PC, dan ponsel kita saat ini, pertimbangkan, bagaimanapun juga, pada akhirnya, apa yang harus Anda lakukan, biasanya, dengan laptop, desktop, ponsel Anda akhir-akhir ini? Apa yang Anda lakukan di penghujung hari? Ya, jadi Anda menagihnya, bukan? Anda menghubungkannya ke beberapa sumber daya fisik. Itu adalah satu-satunya sumber daya fisik ke dalam komputer yang kita gunakan saat ini. Dan itu bagus, karena, tentu saja, inti dapat dicolokkan atau tidak. Atau mungkin kita dapat menyebutnya 1 atau 0, benar atau salah, hidup atau mati, artinya jika listrik menyala satu-satunya input kami dan ada listrik ya atau tidak ada listrik, yang sebenarnya memetakan ide biner dengan cukup baik karena kita hanya memerlukan dua simbol, 0 dan 1, mati dan hidup, untuk mewakili ide itu. Tentu saja dengan satu bit, Anda tidak dapat melakukan sebanyak itu. Anda hanya dapat menghitung dari 0 hingga 1, dan hanya itu.

Jadi komputer cenderung menggunakan jumlah bit yang lebih besar untuk merepresentasikan informasi. Dan mereka melakukan ini pada akhirnya secara fisik. Jadi ternyata dengan plug-in di dinding, atau bahkan bola lampu atau sakelarnya, Anda dapat merepresentasikan 0 atau 1. Tetapi jika Anda ingin merepresentasikan lebih banyak nol dan satu, kita hanya perlu, mungkin, 8 bit sekaligus. Dan jika Anda pernah mendengar tentang ekspresi byte, byte hanyalah istilah yang menjelaskan delapan bit, delapan nol dan satu, ukuran yang lebih berguna.

 

Jadi tantangan utama di sini adalah dapatkah Anda melanjutkan dan mewakili kami dalam biner, menggunakan masing-masing bola lampu ini dan, pada gilirannya, beralih, sebagai nol dan satu, katakanlah, angka 50? Jadi, Anda dapat menyalakan satu bola lampu yang mewakili tempat 32-an. Mungkin menyalakan bola lampu mewakili tempat kedelapan. Hitungan total kita sekarang adalah 32 ditambah bukan 8 ditambah 16, menurut saya, yang akan memberi kita 32 ditambah 16, yaitu 48.  Jadi masing-masing bola lampu ini, kemudian, hanya mewakili sebuah saklar atau sedikit. Dan di dalam komputer Anda, jika Anda pernah mendengar istilah transistor, transistor hanyalah saklar kecil di komputer kita. Jadi mereka memiliki jutaan atau miliaran sakelar yang mereka gunakan secara fisik untuk merepresentasikan informasi dan menyimpan nilai.

Jadi jika sebuah komputer mewakili angka 50, itu benar-benar akan menyalakan tiga sakelar, menyimpan sedikit listrik di sini, di sini, dan di sini untuk mewakili angka 50, dan itu akan mematikan semua sakelar lainnya. Lima lainnya, dalam hal ini, jika kita menggunakan delapan bit atau satu byte.

Bagaimana komputer mewakili angka 13 di mana masing-masing bola lampu ini dari 1 hingga 128 mewakili sedikit? Kami punya, tentu saja, tempat satu di sini, tempat dua, empat, delapan, 16, dan seterusnya.

Jadi pada akhirnya, meskipun ini adalah inkarnasi fisik yang sangat besar dari gagasan biner, hanya itu yang terjadi di dalam komputer kita setiap hari saat mereka merepresentasikan informasi. Tapi kita hanya, sejauh ini, memiliki kemampuan untuk merepresentasikan angka, sepertinya. Jadi bagaimana komputer memungkinkan Anda mengirim pesan teks dan email dan menulis dokumen dan sebagainya? Kita semua harus setuju bagaimana kita akan merepresentasikan karakter atau huruf alfabet, baik itu bahasa Inggris atau yang lainnya. Dan intuisi apa pun tentang bagaimana, jika komputer hanya memiliki jutaan atau milyaran sakelar yang dapat dihidupkan dan dimatikan, dengan demikian mewakili angka, kita mungkin dapat mewakili sesuatu selain angka, seperti huruf A? Dengan satu digit. Jadi kita mungkin hanya perlu setuju sebagai kelompok, tahukah Anda? Mari kita semua setuju bahwa huruf A, dalam konteks program pengolah kata atau pesan teks atau email, hanya perlu diwakili oleh angka, dan kita semua harus setuju dengan angka itu. Jadi mungkin super sederhana, anggap saja A adalah 1, B adalah 2, C adalah 3 dan seterusnya. Dan Anda dapat membayangkan komputer menyalakan banyak transistor kecil untuk mewakili A dan B dan C, selama perangkat lunak di komputer itu, seperti yang akan kita lihat, tahu bahwa itu adalah program pengolah kata dan bukan, katakanlah, sebuah kalkulator atau sesuatu yang dimaksudkan untuk menggunakan angka saja. Jadi ternyata komputer tidak benar-benar menggunakan angka 1 untuk A atau 2 untuk B.

Ini sedikit lebih besar dari itu. Dunia memutuskan beberapa dekade yang lalu bahwa huruf kapital A akan diwakili oleh angka 65. 65, artinya, jika Anda memiliki satu byte informasi di komputer, dan ini adalah tempat satu, dua, empat, delapan , 16, 32, 64. Jika komputer menyimpan huruf kapital A menggunakan delapan bit atau sakelar, itu hanya akan menyalakan keduanya, tempat 64s dan tempat satuan. Jadi ketika Anda benar-benar menerima pesan dalam pesan teks atau email dengan huruf kapital A, Anda baru saja menerima pola nol dan satu entah bagaimana, secara nirkabel atau melalui kabel, yang mewakili pola itu.

Secara khusus, dengann pola ini, jika kita menggambarnya bukan sebagai bola lampu, tetapi sebagai nol dan satu. Jadi ternyata angkanya pasti lebih banyak dari sekedar angka A dan B dan C. Kami memiliki seluruh alfabet plus tanda baca, berkat sistem yang disebut ASCII, Kode Standar Amerika untuk Pertukaran Informasi, yang hanyalah cara mewah untuk mengatakan bahwa ada peta yang terdefinisi dengan baik yang disetujui oleh manusia di seluruh dunia bertahun-tahun yang lalu yang terlihat sedikit sesuatu seperti ini. Jadi A adalah 65, I adalah 73, dan titik titik titik di kedua ujungnya. Artinya, jika Anda menerima pesan dari komputer atau dari teman yang mengatakan 72, 73, 33, atau pola nol dan satu yang mewakili angka tersebut, pesan apa yang mungkin baru saja Anda terima? 72, 73, 33. Ya. Jadi, hai. Jadi secara harfiah, jika Anda mengirim SMS ke teman, hai, mereka akan menerima pesan yang pada dasarnya adalah pola nol dan satu, 72, 73, lalu sesuatu. Sebenarnya tidak jelas dari bagan apa mereka, tetapi ternyata 33 adalah angka yang diberikan manusia bertahun-tahun yang lalu untuk mewakili tanda seru. Jadi simbol tanda baca lainnya yang mungkin Anda lihat di keyboard Anda, juga memiliki angka yang akan digunakan komputer, yang kita semua sepakati bertahun-tahun yang lalu, untuk mewakili nilai tersebut. Tapi tentu saja, ini sangat Amerika-sentris saat ini. Dan memang, akronim ASCII memiliki Amerika di dalamnya. Jadi sejak awal bias ke bahasa Inggris Amerika, misalnya. Tapi masih banyak lagi karakter di dunia, tentu saja, seperti karakter beraksen dan bahasa lainnya.

Dan terus terang, ada juga hal-hal ini hari ini, yang meskipun terlihat seperti gambar, Anda mengaksesnya melalui keyboard karena memang hanya simbol dalam alfabet. Ada nol dan satu, pola nol dan satu, yang juga mewakili karakter tersebut. Itulah yang dikenal sebagai Unicode, dan itu, seperti, superset dari ASCII. Karena ASCII, dulu, hanya menggunakan delapan bit, yang tidak terlalu banyak, untuk merepresentasikan karakter. Unicode menggunakan 8 atau 16 atau 24 atau bahkan 32, yang berarti kita memiliki lebih banyak kemungkinan pola nol dan satu untuk mewakili hal-hal seperti ini. Jadi ini adalah wajah dengan air mata kebahagiaan.

Pada 2019, itu adalah emoji paling populer yang dikirim setidaknya pada perangkat iOS. Adakah yang ingin menebak angka desimal apa yang mewakili wajah dengan air mata kegembiraan? Bukan 65. Bukan 72. Bukan 73. 800. Lebih tinggi dari itu. 10.000. Lebih tinggi dari itu. Ini 128.514. Itulah berapa banyak emoji yang menunggu kita karena jumlahnya sekarang menjadi sebesar ini. Atau ekuivalennya, pola nol dan satu ini. Jadi dengan risiko mengambil semua kesenangan dari mengirim emoji kepada seseorang, ketika Anda mengirim wajah itu dengan air mata kegembiraan, Anda benar-benar entah bagaimana membuat ponsel Anda mengirim ponsel teman pola nol dan satu ini. Dan Android atau iOS menampilkannya sebagai gambar kuning itu. Tapi gambar kuning itu, tentu saja, itu sendiri adalah sebuah gambar. Dan itu terdiri dari banyak titik kecil. Dan peluang datang ke kelas ini, Anda umumnya terbiasa menggunakan gambar, tentu saja, dan melihat titik-titik kecil yang menyusun gambar. Terutama jika kualitasnya rendah, Anda benar-benar dapat melihat titik-titik itu. Jadi di wajah seperti emoji, kita punya banyak titik kuning.

Bagaimana komputer mewakili setiap titik tersebut? Nah, menurut sistem yang disebut RGB. Merah, hijau, biru. Jadi sekali lagi, beberapa dekade yang lalu, orang-orang di sebuah ruangan memutuskan, Anda tahu? Untuk merepresentasikan warna, kita masih harus menggunakan nol dan satu saja, sakelar kecil, secara mekanis. Tapi mari kita semua setuju angka apa yang mewakili warna apa. Jadi kita hanya perlu sistem lain untuk itu. Sekarang ternyata RGB pada dasarnya menyusun warna pelangi dengan mencampurkan beberapa merah, beberapa hijau, beberapa biru. Dan dengan menggabungkan warna-warna itu satu di atas yang lain, Anda bisa mendapatkan warna pelangi yang Anda inginkan. Artinya, untuk menyimpan titik apa pun di layar, satu piksel, bisa dikatakan, dalam gambar yang mungkin Anda ambil sebagai foto atau kirim ke teman, Anda sebenarnya menyimpan tiga nilai. Satu dua tiga. Tiga angka, sungguh, yang, tentu saja, pada akhirnya, adalah nol dan satu. Ketiga angka itu hanya memberi tahu komputer berapa banyak merah, berapa banyak hijau, dan berapa banyak biru yang digunakan untuk mewakili beberapa titik di layar. Jadi misalkan secara kebetulan, sebuah komputer menyimpan pola 72, 73, 33, meskipun dengan nol dan satu atau bola lampu, saling membelakangi seperti ini.

Nah, dalam konteks Photoshop atau browser atau foto Apple atau sejenisnya, dalam konteks program grafis, komputer Anda akan menginterpretasikan pola digit yang sama, dan pada gilirannya, bit, tidak setinggi, tanda seru, tetapi sebagai sejumlah merah, sejumlah hijau, sejumlah biru. Dan ternyata jika Anda menggabungkan merah sebanyak ini, 72, hijau sebanyak ini, 73, diikuti dengan biru sebanyak ini, 33, apa yang Anda dapatkan ketika menggabungkan ketiganya adalah warna kuning. Jadi untuk setiap titik di emoji itu, wajah dengan air mata kebahagiaan, dan kita bisa melihatnya jika kita benar-benar memperbesarnya, disimpan menggunakan tiga nilai. Sejumlah merah, sejumlah hijau, sejumlah biru yang dapat kami ikat memberi Anda kuning atau hitam atau abu-abu atau apa pun, tergantung bagaimana Anda menyandikan nilai-nilai itu. Sedangkan gambar atau video, hal-hal seperti ini yang mungkin Anda lihat di internet akhir-akhir ini dalam bentuk meme atau yang lainnya, sebenarnya hanyalah gambar, tetapi merupakan beberapa gambar dalam satu file yang sama. Jika Anda pernah melihat apa yang disebut GIF animasi, yang kebetulan terjadi berulang-ulang, semua mata manusia kita melihat gambar satu demi satu demi satu demi satu dengan sangat cepat, menciptakan ilusi, oleh karena itu, gerakan. Tapi kucing ini sebenarnya tidak bergerak. Ini seperti lima atau 10 foto kucing dalam posisi berbeda yang dilingkarkan tanpa henti. Dan itu juga, semua adalah video.

Video hanyalah rangkaian gambar yang terbang melewati mata Anda dengan sangat cepat, manusia melihatnya sebagai gerakan yang sebenarnya. Dan itulah hampir semua yang kami gunakan untuk merepresentasikan informasi hari ini di komputer kami. Kami memiliki nol dan satu dari mana kami mendapatkan biner yang kemudian kami mendapatkan digit desimal, tetapi kami dapat menggunakan digit tersebut untuk mewakili, katakanlah, karakter di layar atau warna di layar dan, pada gilirannya, sekarang bahkan lebih interaktif.

Sekarang bagaimana dengan sesuatu seperti musik di komputer? Jenis informasi lain yang mungkin ingin Anda wakili? Nah, jika memiliki piano, dapat menghitung nada yang Anda mainkan hanya dengan menggunakan angka. Nada apa yang Anda mainkan, mungkin A, B, C, D, E, F atau G atau beberapa variannya. Mungkin berapa lama Anda menahan tombolnya, dan jika Anda menekannya dengan sangat keras, mungkin seberapa kerasnya. Jadi Anda bisa membayangkan menggunakan tiga nilai, not, durasi, dan volume hanya untuk merepresentasikan sesuatu seperti lagu piano. Mungkin salah satu encoding dari sebuah lagu. Dan saya mungkin menggunakan nilai yang berbeda jika saya ingin memainkannya lebih keras dan lebih lama. Dan seterusnya.

Artinya, pada akhirnya, tidak peduli media apa yang kita gunakan untuk merepresentasikan informasi, semuanya direduksi menjadi nol dan satu. Jadi setelah kita memiliki kemampuan untuk merepresentasikan input, baik itu angka atau huruf atau warna atau video, sekarang kita bisa membicarakan tentang output. Jadi bagaimana kita mendapatkan dari input ke output? Itulah yang ada di dalam apa yang disebut kotak hitam ini, dan di sinilah ilmu komputer berperan. Sebuah algoritme.

Ada yang tau ini istilah apa? Apa itu algoritma? Anda semacam membacanya sepanjang waktu akhir-akhir ini, terutama dalam konteks mobil self-driving dan Alexa atau sebagainya. Satu set cara untuk melakukan sesuatu. Dalam konteks pemecahan masalah, sebuah algoritma hanyalah petunjuk langkah demi langkah untuk memecahkan suatu masalah. Jadi apa yang mungkin menjadi algoritme untuk masalah yang mungkin ingin kita selesaikan?

Nah, pertimbangkan ini. Ini adalah masalah jadul di mana Anda mungkin memiliki banyak sekali nama dan banyak sekali angka, dan semoga nama-nama itu diurutkan berdasarkan abjad dari A sampai Z dalam buku seperti ini. Dan meskipun sebagian besar dari kita tidak lagi menggunakan teknologi ini, pertimbangkan bahwa itu benar-benar sama dengan iPhone atau ponsel Android Anda atau perangkat lain, yang memiliki semua kontak Anda dari atas ke bawah dan Anda dapat menggulirnya dari A ke Z, atau Anda dapat mencarinya dengan mengetik di kotak pelengkapan otomatis kecil. Bagaimana ponsel Anda memecahkan masalah ini?

Baiklah mari kita pertimbangkan pendekatan sederhana. Saya akan melihat halaman pertama dan mencari seseorang di buku telepon. Misalkan nama orang itu adalah Mike Smith, nama belakangnya dimulai dengan S. Biarkan saya maju dan melihat ke bawah. Dia tidak di sini. Biarkan saya membalik halaman. Biarkan saya membalik halaman. Biarkan saya membalik halaman. Ini adalah algoritma. Ini adalah proses langkah demi langkah untuk memecahkan masalah, menemukan Mike Smith. Apakah algoritma ini benar, menurut Anda? Ya, ini sangat lambat, sangat bodoh, karena akan memakan waktu yang sanngat lama, seperti, ratusan halaman yang dibalik untuk menemukan Mike Smith. Tetapi jika dia ada di sana, saya akan menemukannya menurut pendekatan langkah demi langkah ini.

Bagaimana jika saya mempercepat sedikit hanya karena itu membosankan, sebaliknya? Jadi saya melakukan dua, empat, enam, delapan, 10, 12, 14, 16 dan seterusnya. Apakah algoritma itu lebih cepat? Sangat. Secara harfiah dua kali lebih cepat. Apakah itu benar? Ya, kita mungkin melewatkannya. Saya mungkin mendapatkan sial dan akhirnya, saya mungkin mendapatkan nilai S. Tapi sial jika Mike tidak berada di antara dua halaman saat aku membaliknya sekaligus. Jadi itu bukan kesalahan fatal. Algoritme itu, saya dapat memperbaikinya hanya dengan mengatakan jika Anda menekan bagian T atau mungkin Sn alih-alih Sm, buat cadangan satu atau lebih halaman hanya untuk memperbaiki bug atau kesalahan itu, boleh dikatakan begitu. Tapi, setidaknya, dua kali lebih cepat. Tetapi jika buku telepon ini memiliki 1.000 halaman, saya masih perlu 500 putaran berpasangan hanya untuk menemukan Mike Smith. Itu sementara hanya untuk mencari seseorang. Tetapi kebanyakan dari kita, jika Anda telah menggunakan teknologi ini, melakukan apa, di masa lalu? Pergi kira-kira ke tengah jika tidak ada huruf kecil di sisi yang harus ditipu. Jadi kira-kira ke tengah. Saya di bagian M. Sekarang M, tentu saja, berarti Mike tidak seperti ini, yang akan menjadi A. Dia mungkin ke arah Z karena S, tentu saja, berada di antara M dan Z.

Jadi pada titik ini, saya benar-benar dapat membagi masalah menjadi dua, membuang setengah dari masalah dengan sangat dramatis dan tidak perlu, menegaskan bahwa kita sekarang telah beralih dari 1.000 halaman aneh menjadi apa? 500. Dan saya bisa melakukannya lagi. Ah, aku pergi terlalu jauh. Saya sekarang berada di bagian T, jadi saya dapat memecahkan masalah menjadi dua lagi, membuang setengahnya, dan sekarang saya turun dari 1.000 menjadi 500 menjadi 250 halaman saja, setelah hanya dua langkah dalam langkah demi langkah ini proses. Dan jika saya mengulangi ini lagi dan lagi, mudah-mudahan, pada akhirnya, saya akan ditinggalkan, dengan, katakanlah, hanya satu halaman di mana Mike Smith baik atau tidak. Dan saya bisa meneleponnya atau berhenti. Sehingga algoritme itu akan membawa saya ke solusi jauh lebih cepat. Dan kita bisa mengapresiasi ini meski kita hanya melihat beberapa angka, pada akhirnya, sebagai berikut. Jadi jika saya mulai dengan, katakanlah, total 1.024 halaman dalam buku telepon, dan saya mencari Mike Smith, dan saya membagi dan mengatasi masalah ini, membagi masalah menjadi dua dan menjadi dua, saya pergi ke 512, Saya pergi ke 256, 128, 64, 32, 16, delapan, empat, dua, dan satu. Setelah hanya 10 langkah, saya menemukan halaman Mike Smith. Sebaliknya, algoritme pertama di mana saya hanya mengerjakan satu halaman dalam satu waktu, berapa banyak langkah, mungkin, yang diperlukan untuk menemukan Mike Smith? Ya, seperti, 700, 800, kira-kira di mana S mungkin.

Jadi dalam kasus terburuk, 1.000 halaman, jika saya melihat semuanya. Algoritme kedua, mungkin, 500 halaman karena saya membuka dua kali sekaligus. Tapi 10 langkah dengan algoritme ini ada di sini. Dan kemungkinan besar itu akan menjadi algoritme yang sebagian besar dari kita di ruangan ini akan capai secara default, yang berarti bahwa banyak pemecahan masalah sebenarnya, seperti yang akan kita temukan, hanyalah tentang memanfaatkan intuisi dan kenyamanan Anda yang ada dengan ide-ide itu. sekarang Anda hanya perlu menerjemahkan sedemikian rupa sehingga mesin dan manusia lain dapat mengerti. Jadi bagaimana kita bisa berpikir tentang seberapa baik algoritme itu? Nah, pertimbangkan baris pertama ini di sini.

Pada sumbu y, atau sumbu vertikal ini. Pada sumbu horizontal, atau sumbu x, ukuran masalahnya. Jadi jumlah halaman dalam buku telepon akan semakin besar saat Anda bergerak ke kanan dan jumlah detik atau pergantian halaman yang diperlukan akan naik sepanjang sumbu y di sini. Jadi algoritme pertama, yang digambarkan di sini dengan warna merah, menunjukkan hubungan satu-ke-satu antara jumlah halaman dalam buku dan jumlah detik untuk menemukan seseorang. Jadi Anda memiliki garis lurus ini. Kemiringan 1 per 1, jika Anda mau. Jadi jika kita mempertimbangkan algoritme kedua, algoritme kedua juga akan berupa garis lurus, tetapi garis lurus tersebut akan lebih rendah pada grafik. Mengapa? Karena untuk masalah ukuran apa pun, saya akan membutuhkan separuh waktu untuk mencari buku telepon itu karena, tentu saja, saya membuka dua halaman sekaligus. Jadi jika kita melihat ini, misalnya, jika garis putus-putus ini mewakili sejumlah halaman dalam buku telepon, mungkin 1.024, Anda dapat melihat bahwa mungkin diperlukan beberapa detik atau halaman yang dibalik untuk benar-benar menemukan Mike Smith dengan algoritme kedua itu . Tetapi dalam algoritme pertama, jumlah halaman yang sama akan membutuhkan waktu lebih lama untuk diselesaikan, secara harfiah dua kali lebih banyak waktu dalam kasus ini.

Nah bagaimana dengan algoritma ketiga? Nah, meskipun ingatan Anda tentang logaritma agak kabur, itu hanya menggambarkan bentuk yang berbeda secara fundamental. Garis hijau menggambarkan algoritme ketiga dan terakhir di mana Anda membagi masalah bukan satu halaman sekaligus atau dua halaman sekaligus, tetapi 50% berulang kali. Anda memilikinya lagi dan lagi dan lagi. Dan perhatikan bahwa karena jumlah halaman dalam buku telepon menjadi sangat banyak, Anda hampir tidak mempengaruhi berapa banyak waktu yang diperlukan untuk menyelesaikan masalah itu. Misalnya, jika Cambridge dan Allston, dua kota di sini di Massachusetts, bergabung tahun depan dan buku telepon mereka menjadi satu buku telepon yang dua kali lebih besar, jadi masing-masing bukan 1.000 halaman, tetapi total 2.000 halaman, berapa langkah lagi yang diperlukan untuk mencapai temukan Mike Smith di buku telepon tahun depan jika ada 2.000 halaman, bukan 1.000? Hanya satu langkah lagi. Tapi dua algoritme pertama, itu 1.000 langkah lagi, mungkin, atau 500 langkah lagi. Bisa dikatakan, ini adalah perbedaan efisiensi yang sangat besar. Jadi mari terjemahkan ide ini, intuisi ini, ke dalam contoh kode pertama. Ada kode semu. Dan tidak ada satu definisi formal tentang ini.

Pseudocode adalah sintaks seperti kode yang Anda tulis dalam bahasa Inggris atau bahasa lisan Anda sendiri yang mewakili ide Anda, tetapi dengan cara yang ringkas. Jadi saya mungkin mengusulkan agar algoritme untuk menemukan Mike Smith ini dapat ditulis dalam sintaks mirip bahasa Inggris pseudocode sebagai berikut. Langkah pertama, mengambil buku telepon, yang memang hal pertama yang saya lakukan. Langkah kedua, buka bagian tengah buku telepon, yang selanjutnya saya lakukan. Langkah ketiga mungkin melihat halaman untuk melihat apakah seseorang ada di sana dan jika Smith ada di halaman itu, apa yang ingin saya lakukan? Nah, kode saya akan terlihat sedikit berbeda sekarang, dan saya akan sengaja membuat indentasi untuk memperjelas bahwa ada semacam ketergantungan di sini. Saya akan melanjutkan langkah kelima dan menelepon Mike hanya jika baris keempat benar, bahwa dia ada di halaman. Kalau tidak, jika Smith ada di awal buku, di sebelah kiri, jadi untuk berbicara, saya akan melanjutkan dan membuka di tengah bagian kiri buku, lalu apa yang mungkin ingin saya lakukan selanjutnya? Jadi, ya, ini, akhirnya. Bagaimana saya melakukan ini lagi dan lagi? Yah, saya sudah memiliki beberapa kode, jika Anda mau, di baris ketiga yang melakukan itu. Lihat halaman dan kemudian buat keputusan untuk pergi ke kiri atau ke kanan. Jadi saya hanya akan mengatakan kembali ke baris ketiga setelah pergi ke tengah bagian kiri buku jika Smith memang ada di awal buku. Skenario lain, tentu saja, sebaliknya. Jadi jika nanti Smith ada di buku, mari kita buka di tengah bagian kanan buku, lalu mari kita ke baris ketiga. Jika tidak, ada kemungkinan skenario atau kasus keempat. Apa lagi yang mungkin terjadi dalam algoritme ini? Dia tidak ada di sana.

Jadi saya mungkin ingin mengantisipasinya dan katakan saja berhenti jika, memang, dia tidak ada di halaman, di kiri halaman, atau di kanan halaman. Jadi ada satu cara untuk mengekspresikan kodesemu ini meskipun sekarang hanya dalam sintaks yang mirip bahasa Inggris. Tetapi dalam sintaks ini saja, ada beberapa kesamaan, beberapa fitur yang akan kita lihat selama beberapa minggu ke depan tidak hanya dalam kodesemu, tetapi dalam bahasa yang disebut Scratch, bahasa yang disebut C, bahasa yang disebut Python dan banyak lagi.

Ada konstruksi tertentu dalam pemrograman, pemrograman prosedural, sehingga untuk berbicara, yang akan menjadi umum di antara semua bahasa ini. Disorot dengan warna kuning di sini adalah apa, untuk selanjutnya, hari ini dan seterusnya, kita hanya akan memanggil fungsi. Ini adalah kata kerja atau tindakan yang hanya memberi tahu komputer, atau dalam hal ini, manusia, apa yang harus dilakukan. Jadi itu adalah fungsi. Sekarang yang disorot dengan warna kuning adalah apa yang akan kita sebut kondisi. Ini adalah cabang, semacam pertigaan di jalan sehingga Anda dapat melakukan ini atau Anda dapat melakukan itu atau mungkin hal lain ini juga. Tetapi untuk membuat keputusan itu, Anda harus bertanya pada diri sendiri. Dan pertanyaan itu, dalam ilmu komputer, disebut ekspresi Boolean, diambil dari nama ahli matematika Boole. Ekspresi Boolean, sekarang disorot dengan warna kuning, hanyalah pertanyaan yang memiliki jawaban ya atau tidak atau, jika Anda mau, jawaban benar atau salah atau, heck, sekarang kita tahu jawaban biner, satu atau nol. Jadi, bahkan dalam kode, kami melihat petunjuk mengapa angka satu dan nol sangat membantu. Terakhir, ada hal ini di sini. Kembali ke baris tiga. Kami telah menggunakannya di dua tempat. Itu mengacu pada sesuatu yang kita sebut loop. Ini adalah siklus yang melakukan sesuatu berulang kali. Jadi di luar keempat ide, fungsi, kondisi, ekspresi Boolean, dan loop itu, kita juga akan melihat banyak hal lainnya.

Variabel, mengingatkan pada apa yang mungkin Anda ingat dari aljabar, tetapi sekarang lebih kuat dalam konteks pemrograman ini. Sesuatu yang disebut utas dan acara. Dan kami akan melakukan ini dengan bahasa pemrograman yang sebenarnya. Tapi itu belum akan menjadi yang ini. Memang, hanya seminggu dari sekarang Anda akan benar-benar mengerti apa artinya ini. Kemungkinan 2/3 dari Anda tidak tahu apa ini sebenarnya, dan tidak apa-apa. Tapi itu adalah program yang ditulis dalam bahasa yang disebut C++ lebih lanjut tentang itu lain kali– yang cukup sederhana untuk menyapa dunia. Tapi kita akan melakukannya hari ini dalam konteks bahasa grafis dari Lab Media MIT saya yang disebut Scratch. Ini adalah bahasa yang dapat Anda gunakan untuk memprogram komputer dengan menyeret dan melepaskan blok atau hal-hal yang terlihat seperti potongan puzzle yang saling terkait sehingga Anda dapat memberi tahu komputer dengan tepat apa yang harus dilakukan, langkah demi langkah. Dan kita akan melihat dalam bahasa ini hari ini, dan untuk kumpulan masalah pertama atau tugas pemrograman, bahwa Anda dapat mengekspresikan semua ide ini dari pseudocode dalam bahasa yang sebenarnya seperti Scratch. Jadi apa yang ada di depan? Nah di scratch.MIT.edu akan menjadi tempat Anda menghabiskan waktu di kumpulan masalah pertama. Dan itu akan terlihat seperti ini ketika Anda membukanya. Di sisi kiri situs web ini, lingkungan pemrograman berbasis web dari MIT ini, Anda akan melihat di sisi kiri sejumlah besar potongan teka-teki, boleh dikatakan begitu.

Leave a Reply

Your email address will not be published.

* Kode Akses Komentar:

* Tuliskan kode akses komentar diatas: