[Powered by Google Translate] [ROCK MUSIC] [MUSIC - "SELAMAT BERSAMA" THE PENYU] DAVID MALAN: Hari ini, kami memulakan penerokaan kami asas-asas sains komputer dan pengenalan kita, sekarang, seni pengaturcaraan, yang itulah hanya satu contoh. Tetapi dalam urat yang sama menyelesaikan masalah, tahu bahawa Hari Teka-teki tradisional CS50 adalah esok. Jika anda belum RSVPed untuk acara ini, anda boleh pergi ke cs50.net/rsvp. Anda boleh membawa pasukan dua atau tiga atau empat. Anda akan dicabar dengan masalah seperti yang anda lihat sehingga ada di awal. Semua masalah-masalah baru tahun ini jika anda mengambil bahagian tahun lepas, dan anda akan mempunyai peluang untuk memenangi beberapa hadiah hebat. Di kalangan mereka, Wii dan beberapa sijil hadiah dan suka, manakala semua melepak dengan CS50 pelajar dan rakan sekelas dan pizza dan Facebook. Jadi lebih pada esok jika anda ingin. Ini kemudiannya CS50, bagi orang-orang anda menyertai kami untuk kali pertama. Dan ketahuilah bahawa kursus ini amat ditentukan untuk mendapatkan anda melalui kursus ini akhir, di mana titik anda akan mempunyai bukan sahaja pemahaman ini asas-asas sains komputer, tetapi anda akan mempunyai kemahiran ini sangat praktikal set yang anda kemudian boleh mengambil kembali ke jabatan anda sendiri, sama ada ia adalah sains kejuruteraan, gunaan matematik, sains fizikal, semula jadi sains, atau sebagainya. Sesungguhnya, apa yang begitu menarik tentang sains komputer ini hari ini adalah bahawa ia adalah hanya begitu terpakai kepada pelbagai bidang. Dan walaupun hari ini, kita hanya akan menggaru permukaan bahasa pengaturcaraan yang sangat tradisional dikenali sebagai C, kami akan sebaliknya melihat sesuatu yang dipanggil Gores, sesuatu dengan yang bahawa cerita cookies cinta telah dilaksanakan oleh salah anda terdahulu pada tahun-tahun lalu, untuk memberitahu cerita, untuk mewujudkan permainan, untuk mewujudkan seni interaktif, dan untuk benar-benar bermula untuk membalut kami minda sekitar beberapa membina asas yang asas pengaturcaraan tetapi dalam konteks, seperti yang anda akan lihat, itulah lebih kurang menakutkan, yang lebih kurang batin, daripada apa yang anda akan lihat tidak lama lagi. Dan sedar, juga, bagi mereka yang anda hanya menyertai kami ini semester, frasa di mana kita berakhir kuliah Rabu, ia tidak begitu penting di mana anda berakhir relatif kepada anda rakan sekelas di dalam kelas ini, tetapi di mana anda, menjelang akhir semester dalam 11 minggu, akhirnya relatif kepada diri sendiri betul hari ini sangat. Jadi, tanpa berlengah-lengah lagi, ini adalah juga diperhatikan bahawa mereka yang kurang selesa, mereka di suatu tempat di antara, juga, dengan reka bentuk kursus ini, bukan mana-mana di dalam keadaan vis-a-vis mereka lebih selesa datang ke kelas ini. Seperti yang anda akan lihat dalam tempoh beberapa minggu akan datang, kita perlu berbeza trek untuk latar belakang berbeza, seksyen bagi mereka kurang selesa, lebih selesa, orang-orang di tempat di antara. Seperti yang anda akan lihat hujung minggu ini dan minggu depan, dua versi set masalah yang paling dalam kedua-dua edisi standard dan penggodam supaya bahawa anda semua boleh sendiri pilih ke jalan yang anda paling selesa. Jadi hari ini, kita menyelam ke dalam pengaturcaraan ini bahasa dipanggil Scratch. Ia adalah satu bahasa pengaturcaraan grafik, tetapi ia mempunyai ciri-ciri yang sama beberapa bahasa tahap yang lebih tinggi kita akan meneroka kemudian pada semester, di kalangan mereka C dan JavaScript dan PHP. Tetapi ia akan membolehkan kita untuk mengelakkan beberapa gangguan pada awal sintaks, perkara-perkara seperti koma bertitik, kurungan, dan lain-lain butiran batin itu, pada pandangan pertama, hanya tidak di semua intelektual yang menarik dan cenderung untuk mendapatkan cara dari pemahaman beberapa asas. Dari segi sekarang struktur sokongan hadapan, menyedari ini alat, CS50 Bincangkan, yang akan dikaitkan pada kursus laman web lewat hari ini, adalah forum perbincangan dalam talian yang anda akan dapat untuk bertanya soalan antara satu sama lain dan kakitangan, dan ia juga alat, seperti yang kita akan lihat minggu depan, bahawa kita akan menggunakan agak integratedly dalam waktu pejabat juga. Malah, waktu pejabat bermula pada hari Isnin, dan terus-terang, yang pertama minggu waktu pejabat adalah kunci yang agak rendah. Saya tidak fikir anda akan menemui Gores semua yang tidak boleh diakses. Ia agak jelas dengan sendirinya, seperti yang kita akan lihat, dan jadi apa kami akan menggunakannya untuk hari ini adalah untuk mengeluarkan beberapa idea-idea asas yang akan, kemudian, berterusan sepanjang Selebihnya semester. Tetapi bermula Isnin, pada pukul 8:00 PM melalui 23:00 akan waktu pejabat di Annenberg lebih rehat otak. Sectioning dua akan bermula petang ini, jadi kadang-kadang ini hujung minggu, pergi kepada cs50.net/section, dan anda akan akan ditanya beberapa soalan. Di kalangan mereka, bagaimana anda menggambarkan anda tahap keselesaan seperti hari ini? Ada tidak keras, kaedah pantas yang di mana baldi. Ia hanya jenis perkara yang anda mungkin tahu jika anda adalah di kalangan mereka yang kurang selesa atau sebaliknya. Dan kini, walkthroughs. Masalah spesifikasi set untuk minggu ini, kedua-dua standard dan edisi penggodam sama, adalah dalam talian di cs50.net sebagai kini. Dan anda akan melihat bahawa pertama edisi ini, edisi standard setiap minggu, diiringi dengan sesuatu yang kita memanggil Walkthrough kod, sesi yang diketuai oleh salah satu felo pengajaran kursus untuk membimbing anda melalui, menyediakan tip atas, dan mendapatkan anda ke bawah laluan tertentu apabila ia datang untuk memulakan set masalah. Jadi dengan setiap masalah ini menetapkan, jika anda pernah mahu untuk diri sendiri di mana saya bermula, anda mula dengan ini walkthroughs. Dan pada hakikatnya, izinkan saya untuk memperkenalkan Zamyla Chan, ini sesama pengajaran tahun ini yang akan mengetuai setiap salah ini walkthroughs. Zamyla? [Tepukan] ZAMYLA CHAN: Oh, hi, semua orang. Nama saya adalah Zamyla. Saya kejuruteraan junior belajar di Winthrop House. Tetapi saya cuba dan patut dalam sebagai banyak kursus sains komputer seperti yang saya boleh, itulah sebabnya saya benar-benar teruja untuk membawa ini tahun walkthroughs. Walkthroughs, bagi saya, adalah sebahagian penting daripada CS50 saya pengalaman. Semasa Walkthrough, p bagi setiap set, kita akan pergi melalui Masalah yang ditetapkan bersama-sama, melihat lebih masalah, jenis membahagikan mereka ke dalam gigitan terkawal. Saya akan memberikan anda tips, teknik, untuk mendapatkan melalui dan bermula. Saya berharap untuk melihat anda semua di walkthroughs. Jika anda tidak boleh membuat ia pada orang, maka sila melakukan menala talian. DAVID MALAN: Cemerlang. Terima kasih, Zamyla. Jadi sedar bahawa walkthroughs adalah, sesungguhnya, pada hari Jumaat petang, tetapi ini adalah sengaja oleh reka bentuk supaya walaupun anda tidak mahu menghadiri kelas pada hari Jumaat petang, video akan menjadi semua lebih cepat lebih hujung minggu. Jadi, menyedari bahawa cs50.net akan semua itu Zamyla walkthroughs. Dan bahawa terdapat tarikh hari ini dan masa, 3:00 PM, Harberd Hall, 104. Dan beberapa daripada felo pengajaran juga telah bersedia beberapa kenyataan untuk anda tanpa hadir untuk memberikan anda sedikit perspektif apa pengalaman mereka datang ke dalam dan keluar CS50 adalah seperti. Jadi, jika kita boleh meredupkan hanya seketika, saya memberi anda beberapa kakitangan CS50. JACKSON STEINKAMP: Saya mengambil CS50 tahun lepas sebagai bayat dalam jatuh, dan ia benar-benar meniup fikiran saya. Saya tidak pernah mengambil apa-apa kelas pengaturcaraan sebelum, dan tidak pernah datang dengan mana-mana sains komputer pengalaman pada semua. Dan hanya, saya mendengar buzz tentang kelas dan memutuskan untuk mengambilnya. JULIA MITELMAN: Ia adalah benar-benar menyeronokkan, benar-benar terlibat. Saya masih, hingga ke hari ini - Saya hanya baru-baru ini menyaksikan saya mempunyai cakera liut bahawa Daud memberikan kita pada hari pertama kami kuliah. Saya telah digantung di dinding saya. Ini mungkin sedikit nerdy, tetapi saya digantung di atas saya dinding semasa kelas sebagai peringatan bagaimana sejuk ia adalah. Travis Downs: Ia begitu memalukan. JACKSON STEINKAMP: Sains komputer adalah sesuatu yang anda harus cuba walaupun jika anda tidak satu untuk sains tradisional. Ia adalah pengalaman sendiri, dan CS50 akan pastikan anda disokong baik melalui ia dengan tentera dipenuhi daripada TFS. NAHM ALI: Saya mengambil ia sebagai bayat, dan jadi saya membuat banyak kawan-kawan baru. Saya juga mendapat diperkenalkan kepada kepekatan ini keseluruhan dan sekolah seluruh kejuruteraan, dan sebagainya Saya sangat mengesyorkan ia dan mengalu-alukan anda kepada keluarga CS50 kami. Yaniv YACOBY: CS50 hanya mengajar anda bagaimana untuk menggunakan alat yang boleh diakses secara meluas. Anda hanya perlu sebuah komputer riba, anda perlu pelayar web, dan anda perlu belajar untuk menulis beberapa kod, dan anda benar-benar dapat membina perkara yang kemas. KAREN Xiao: Ia hanya begitu sejuk untuk dapat untuk membuat sesuatu dan mempunyai orang menggunakan dan mempunyai orang melihat ia, dan itulah apa yang saya benar-benar suka tentang ia. TIM McLaughlin: - rasa masyarakat, saya fikir, dalam hal ini tentu lebih daripada mana-mana kursus lain yang saya telah diambil setakat ini. Anda tidak hanya mengambil satu lagi - anda tidak mengisi keperluan lain. Anda tidak hanya pergi ke kuliah dan pergi ke seksyen. Tetapi anda melakukan tan perkara yang semua tentang pengaturcaraan dan semua tentang teknologi, tetapi ia tidak benar-benar berasa seperti kelas kebanyakan masa. Downs Travis: Dan pada hari pertama, mereka menyerahkan kek, dan Saya serta-merta dijual. JACOB PRITT: gula-gula percuma dan pizza. ZAMYLA CHAN: - tanpa mengira tahap minat anda, saya fikir bahawa CS50, anda akan mempunyai menyeronokkan, dan anda akan intelek dirangsang. MARK GROZEN-SMITH: Ia sentiasa pihak di dalam kelas, dan ia adalah parti setiap malam bekerja di set p anda. JACKSON STEINKAMP: Setiap kali anda selesai satu set masalah, anda akan berasa seperti anda telah selesai projek. Melissa Niu: Ia adalah tahun bayat, dan saya telah dilakukan membeli-belah. Saya mempunyai empat kelas saya bersedia, dan saya berada di Annenberg. Dan saya bertemu seorang kawan, dan dia berkata, hey, saya membeli-belah kelas ini dipanggil CS50, dan anda harus datang dengan saya. Akhirnya mengambil ia jatuh itu, dan selepas kelas itu, saya fikir mungkin saya akan kecil dalam CS. Tetapi di sini saya, tiga tahun kemudian, masih belajar komputer sains dan sebenarnya melakukannya sebagai major, dan saya suka setiap saat ia. ROB Bowden: Saya mempunyai idea. ALI NAHM: Mari kita lihat. Melissa Niu: kegilaan. SPEAKER 1: Saya rasa seperti saya menjadi sangat klise. Saya hanya akan berkata, seperti, hebat. Yaniv YACOBY: Kebolehcapaian. JACOB PRITT: gula-gula percuma dan pizza. Travis Downs: Tidak Boleh menolak kelas bahawa tangan keluar kek. TIM McLaughlin: Bertenaga. VIPUL SHEKHAWAT: Perlu. ROB Bowden: Biar saya memikirkan jawapan. Saya fikir saya mendapat sesuatu. Oh, tuhan. Ya, Bowden Rob nama saya, dan ini adalah CS50. [Tepukan] DAVID MALAN: Baiklah, jadi mari kita mulakan untuk melukis sekeping gambar arah di mana kita boleh pergi, dan mari kita memperkenalkan konsep ini di sini dikenali sebagai pseudokod. Jadi pseudokod tidak pengaturcaraan bahasa kepada dirinya. Ia adalah apa yang teknikal per se, tetapi ia hanya jenis cara umum menyatakan diri agak tepat, agak algorithmically, agak procedurally, tetapi tanpa perlu bimbang tentang apa bahasa yang anda menyatakan diri anda masuk Ia adalah beberapa model bahasa Inggeris dan bahasa pengaturcaraan dengan yang anda berlaku untuk menjadi biasa, jadi kita boleh mula menulis ini jenis perkara seperti yang kita pergi. Dan pada hakikatnya, Joseph, saya boleh meminjam sehingga anda di atas pentas untuk penulis di sini? Saya pergi ke hadapan di sini di awal dan terlupa untuk meletakkan pada beberapa stoking hari ini, dan ini akan menjadi antara lebih kami contoh yang tidak masuk akal. Sekarang, saya perlukan anda di sini. Saya akan melakukan bahagian stoking. Jadi di sini kita mempunyai pad calar sedikit. Ini adalah benar-benar hanya TextEdit dalam Mac. Kami tidak sebenarnya akan untuk menulis program runnable, tetapi kami hanya akan memulakan lakaran keluar berasaskan pseudokod pada beberapa nasihat yang anda berikan kepada saya di sini. Jadi di sini adalah longgokan saya stoking di rumah. Saya tidak mempunyai stoking apabila saya bangun pada waktu pagi, dan kita kini perlu untuk menulis program, algoritma pelbagai, yang untuk mendapatkan stoking ini pada kaki saya. Dan sepanjang jalan, mari kita lihat jika kita tersandung, atau hadapi, beberapa idea-idea yang anda akan perlu untuk memulakan memikirkan lebih serius apabila pengaturcaraan supaya program anda tidak berkelakuan agak seperti yang sepatutnya. Jadi saya duduk di sini. Saya telah mendapat longgokan saya stoking. Apakah perkara pertama seorang manusia yang munasabah akan lakukan apabila matlamatnya adalah untuk memakai sepasang stoking? Seseorang memberikan saya satu langkah, dan hanya satu langkah. Yeah? PENONTON: Bend turun. DAVID MALAN: Bend turun, Okay. Langkah dua. Langkah dua. PENONTON: Angkat stoking anda. DAVID MALAN: Angkat stoking anda. Okay, kekaburan begitu sedikit di sini, dan ini adalah salah satu yang pertama halangan bahawa kita sepatutnya sengaja hadapi di sini. Ia adalah sedikit kabur, jadi memilih stoking anda. Halus, saya akan mengambil satu ini, tetapi komputer, menyedari hanya dalam bit, tidak akan mempunyai bahawa jenis naluri manusia hanya memilih salah satu yang terdekat. Kami akan perlu untuk memulakan, sebelum lama, menyatakan diri lebih tepat. Baiklah, jadi dua langkah mengambil stoking anda. Kami akan mengambil ia. Langkah tiga. Di belakang. PENONTON: Cari sepasang padanan. DAVID MALAN: Cari pasangan yang sepadan. Okay, jadi ini adalah baik. Saya terpaksa memilih stoking ini. Jadi matlamat untuk mencari stoking sepadan, sekarang, tetapi apa yang maksudnya? Seorang manusia yang munasabah, sama seperti pada hari Rabu apabila saya hanya tahu bagaimana untuk mencari Mike Smith dalam buku telefon, hanya jenis pergi dengan naluri mereka. Tetapi di sini, ia jelas ini stoking sini, tetapi komputer tidak akan menjadi begitu naluri. Sebuah komputer akan mempunyai koleksi bit, seperti yang kita dibincangkan pada hari Rabu, dan mereka adalah dianjurkan entah bagaimana dalam ingatan. Tetapi persoalannya adalah bahawa komputer hanya mempunyai keupayaan untuk melihat perkara-perkara pada satu masa, dan sebenarnya, walaupun kita manusia - walaupun ia berasa seperti saya mengerling ke bawah dan berpecah sesaat kemudian saya tahu di mana stoking adalah, otak saya dan mata saya dianggap tidak cepat agunan mereka stoking, dan kemudian melekap kepada satu dalam soalan. Jadi, jika kita semua lebih sengaja sekarang sebagai komputer, bagaimana saya boleh mencari pasangan ini sepadan? Nah, kita perlu melelar. Kami mempunyai gelung mungkin lebih kucar-kacir ini stoking pada lantai di mana saya mengatakan sesuatu seperti BAGI SETIAP stoking, mengambilnya DAN JIKA bentuk dan saiz yang sama sebagai satu yang lain, KEMUDIAN dot, dot, dot, kita akan meneruskan cerita. Jadi untuk stoking setiap, jadi saya mengambil satu ini. Saya memeriksa ini sama dengan yang satu ini. Ia tidak, jadi saya ketepikan sampingan. Kemudian saya melelar lagi. Adakah ini salah sama? Tidak, ia tidak, jadi saya meletakkan ia diketepikan. Adakah yang satu ini? No Yang satu ini? Tidak, dan sebagainya. Dan kemudian akhirnya, mudah-mudahan, saya akan menghadapi stoking ini di sini. Jadi, jika ia adalah bentuk yang sama, saiz, mengambil ia. Dan sekarang, apa yang akan menjadi langkah kami seterusnya di sini? Yeah? PENONTON: Mengenalpasti kanan dari kiri. DAVID MALAN: Okay, identify kanan dan kiri, jadi mujurlah, yang jenis kerja. A simetri sedikit, atau saya baru sahaja dipakai mereka dengan cara itu. Baiklah, jadi saya telah mengenal pasti hak. Dan sekarang, sebelum kita teruskan, izinkan saya menunjukkan apa yang Yusuf telah lakukan di sini sebagai jenis programmer mahir. Jadi sekali lagi, tidak ada satu cara untuk melakukan ini, tetapi di luar hanya berjumlah garisan, Yusuf telah mula untuk melakukan ini jenis lekukan. Sesungguhnya, ini adalah konvensyen yang sangat biasa dalam pengaturcaraan, mana apabila anda melakukan sesuatu lelaran, menggelung gaya, seperti kita membayangkan dengan frasa Inggeris "UNTUK SETIAP yg bersukses, "konvensyen pseudokod dan, seperti yang kita akan lihat, bahasa pengaturcaraan biasa, adalah untuk hanya inden. Hit bar ruang beberapa kali, memukul kekunci Tab atau seperti, supaya bersarang di bawahnya "UNTUK stoking SETIAP" adalah sebahagian barangan yang anda perlukan untuk melakukan akibat gelung itu. Jadi itulah semua itu menyampaikan semantik. Sekarang Sementara itu, "Jika ia adalah bentuk yang sama dan saiz," hakikat bahawa "Ambil" dilekukan selanjutnya hanya bermakna itulah satu-satunya perkara yang perlu anda lakukan jika keadaan itu, jika bahawa cawangan, bahawa garpu di jalan raya, adalah dalam fakta sebenar. Jadi sekarang di sini, kita berada pada empat langkah, mengenal pasti kanan dan kiri. Saya telah dikenal pasti betul. Beri saya melangkah lima. Dan teknikal, kita benar-benar boleh memanggil UNTUK perkara SETIAP - anda mungkin perlu bilangannya semua garis jika kita pergi untuk melakukan ini. JOSEPH: [didengar] DAVID MALAN: [didengar]? Okay, halus, semua betul, kita akan melakukannya dengan cara anda. Baiklah, jadi langkah lima, bagaimana kita lakukan stoking yang betul? Bagaimana kita teruskan depan, di sini? Ya? PENONTON: Angkat kaki kanan. DAVID MALAN: Angkatlah kaki kanan, Okay. Langkah enam? Cepat. Yeah. PENONTON: Cari akhir terbuka stokin. DAVID MALAN: Okay, mencari hujung terbuka stokin. Begitu baik. Jadi di sini, jujur, naluri yang sangat biasa hanya akan diletakkan di atas stoking betul, tetapi itu juga adalah agak samar-samar. Melainkan jika komputer atau manusia tahu apa yang bermaksud, ia tidak akan menjadi untuk melaksanakan itu, jadi di sini, saya telah mendapati pembukaan stok. Langkah 7? PENONTON: Sentuh jari anda. DAVID MALAN: Touch jari. Okay, jadi sekarang kita pergi - Baiklah, saya akan mengambil beberapa kebebasan di sini. Terima kasih. Langkah 8? Pakai stoking. Okay, jadi sekarang saya, berfikir kita cukup dekat untuk menyelesaikan mengambil yang satu ini di rumah. Baiklah, jadi ini naik. Saya akan mengambil beberapa kebebasan dengan apa ia bermakna, sebenarnya. Letakkan stoking pada. Baiklah, kini melangkah 9? PENONTON: Letakkan kaki ke bawah. DAVID MALAN: Thank you. Langkah sembilan, meletakkan kaki ke bawah, dan sekarang, kita boleh mengulangi. Jadi mungkin, kita kini boleh pergi ke dalam 10 langkah dan mengatakan mengenal pasti meninggalkan stoking, tetapi itulah dianggap sudah selesai. Dan maka, saya boleh menyusun ulangi langkah-langkah ini. Tetapi jenis ini menimbulkan persoalan. Sebelum ini, kali terakhir kita mahu mengulangi sesuatu, kita melakukannya iterative, sekali lagi dan sekali lagi, UNTUK Gelung SETIAP jadi untuk bercakap. Ia akan masuk akal untuk menggunakan gelung dalam usaha untuk mengendalikan kedua-dua kiri dan stoking kanan? Kerana ia berasa seperti ini operasi yang cukup banyak sama kecuali fakta bahawa seseorang bermula di sini dan satu bermula di sini? Adakah kita gelung, atau adakah kita hanya menyimpan menulis langkah-langkah 10 dan 11 dan 12? PENONTON: Loop. DAVID MALAN: Okay, jadi gelung. Saya sebenarnya mungkin telah berkata hanya menyimpan berterusan. Jadi mengapa kes ini? Nah, ini adalah sebenarnya pertama kami tidak jelas keputusan reka bentuk, dan pada hakikatnya, salah satu metrik dengan yang kita akan mula menilai, untuk diri sendiri dan untuk anda, kualiti program betapa direka dengan baik ia adalah. Pernahkah anda melakukan jumlah minimum kerja yang perlu untuk mendapatkan pekerjaan yang dilakukan yang paling cepat, sama ada dari segi masa atau dari segi masa berjalan komputer? Berapa banyak operasi tidak ia mengambil masa untuk melaksanakan? Jadi boleh dikatakan, ini adalah satu peluang bagi gelung kerana sebaik sahaja saya mula menyalin dan menampal sebagai Yusuf berkesan akan mula melakukan dalam seketika, anda jenis membuang anda masa, dan anda menjadi duanya adalah terpakai ekspresif. Tetapi pada masa yang sama, ini adalah benar-benar hanya dua istimewa kes, kiri dan kanan. Dan bahawasanya sebelum ini, saya mungkin mempunyai 10 atau 20 atau lebih stoking dalam longgokan, ia pasti masuk akal untuk tidak mempunyai 50 baris kod mengatakan memeriksa stoking ini, maka satu depan, kemudian yang seterusnya. Di sini, ia sedikit kurang jelas, dan saya akan mencadangkan bahawa kita boleh pergi sama ada cara. Kita boleh sama ada mempunyai gelung bahawa, walaupun ia hanya gelung dua kali, atau kita hanya boleh menyalin dan tampal hanya sedikit di sini untuk mendapatkan pekerjaan yang dilakukan. Tetapi program ini adalah kereta, jadi untuk bercakap. Ia mungkin mempunyai beberapa kesilapan, kesilapan, atau kes sudut, jadi untuk bercakap, bahawa kita tidak benar-benar menjangka. Tiada apa-apa silapnya masa ini, tetapi apa yang boleh silapnya semasa melaksanakan program ini? PENONTON: Anda tidak mempunyai apa-apa stoking. DAVID MALAN: Jadi memang tidak ada stoking sana jua. Jadi mari kita mempertimbangkan bahawa kes sudut. Jadi, jika kita boleh menatal sandaran untuk melangkah satu, jadi langkah satu adalah bengkok ke bawah, supaya cek keluar. Langkah kedua, memilih stoking anda, tetapi kemudian mencari stoking yang sepadan, mengenal pasti betul. Kami jenis yang dibuat sekumpulan keseluruhan andaian, dan ini adalah, terus-terang, mengapa program kadang-kadang kemalangan. Jika anda, pengaturcara, telah membuat andaian tertentu, seperti pasti ada akan menjadi stoking atau pasti ada akan menjadi memori yang ditinggalkan dalam komputer, tentu ada akan untuk menjadi ruang cakera yang ditinggalkan pada hard drive - Nah, jika anda membuat andaian ini, dan itu bukan, pada hakikatnya, hakikatnya, yang tahu kadang-kadang apa yang komputer akan lakukan? Dan kadang-kadang, apabila anda mendapat bola pantai berputar atau beku Windows atau sebagainya, yang tepat kerana beberapa pengaturcara tidak menjangka kes-kes sudut kononnya. Apa lagi yang boleh pergi salah dalam program ini? Yeah? PENONTON: Anda tidak perlu kaki kanan dan kaki kiri. DAVID MALAN: Okay, mungkin tidak mempunyai kedua-dua kaki kanan dan kaki kiri, dan sebagainya program ini tidak mungkin universal berkenaan. Orang lain? PENONTON: Anda mungkin telah dipilih sehingga stoking yatim. DAVID MALAN: saya mungkin telah dipilih sehingga stoking yatim, jadi bukan sepadan stoking yang hanya tidak mempunyai adik-beradik kerana saya telah hilang, ia koyak, ia adalah dalam membasuh masih, atau sebagainya. Supaya, juga, tidak benar-benar telah dikendalikan. Yeah? PENONTON: Anda mungkin sudah mempunyai stoking. DAVID MALAN: Saya sudah mungkin mempunyai stoking. Saya sebenarnya tidak menyemak. JIKA anda tidak mempunyai stoking, Kemudian meneruskan lakukan baris satu dan dua. Dan yang boleh berlaku. Anda tertidur dengan stokin anda dan sebagainya, jadi itu juga, mana-mana sudut yang sangat berpatutan. Dan mungkin satu lagi? PENONTON: stoking yang ada di dalam keluar. DAVID MALAN: Jadi stoking yang berada di dalam keluar, jadi kita lakukan kesilapan memeriksa, dalam jangka pendek. Kami tidak memeriksa jika keadaan dunia adalah seperti yang kita harapkan. Kami tidak memeriksa jika kita benar-benar mendapati apa yang kita cari. Dan walaupun ini adalah jenis contoh yang tidak masuk akal melibatkan stokin, pada akhir hari, inilah jenis minda anda perlu mempunyai semasa menulis program, walaupun dalam Scratch serta dalam C, JavaScript, dalam PHP, kerana jika tidak, program anda akan mempamerkan bersamaan bahawa bola pantai berputar atau hanya menghasilkan keputusan yang tepat. Begitu banyak terima kasih di sini jurutulis kami kepada Yusuf. [Tepukan] DAVID MALAN: Baiklah, jadi apa yang adalah, dalam Malah, program komputer? Nah, mari kita mengambil pandangan cepat di wakil satu di sini. Jadi ini adalah satu program yang ditulis dalam bahasa yang dipanggil C. C adalah baru agak lama pada hari ini, tetapi banyak bahasa dibina di atasnya. Sesungguhnya, PHP, salah satu daripada bahasa-centric web kami akan menggunakan ke arah akhir istilah, sendiri mempunyai apa yang dipanggil jurubahasa, satu program yang ditulis dalam C, tetapi lebih pada itu banyak dalam beberapa minggu dari sekarang. Tetapi program ini, dan ini adalah apa yang ia bermaksud untuk menulis program, walaupun satu yang amat mudah. Kami mempunyai beberapa sintaks yang agak samar di sini, tetapi anda boleh mungkin meneka, walaupun anda tidak pernah diprogramkan sebelum, apa Program ini tidak. Malah, saya tidak tahu apa printf, tetapi mencetak pasti conjures sehingga idea percetakan sesuatu yang keluar. Dan begitu ya, program ini akhirnya akan mencetak keluar perkataan "Hello World." Sekarang, sama ada anda mempunyai Mac atau PC atau komputer Linux, kemungkinan , sekurang-kurangnya jika anda memuat turun beberapa bebas perisian yang tersedia, anda boleh telah menulis program pada anda komputer riba sendiri untuk sekian lama kini. Pada Mac OS, misalnya, ada program ini yang dipanggil Terminal yang datang dengan Mac, yang biasanya dalam anda Folder Utiliti, dan ia secara amnya membuka hitam dan putih atau tetingkap putih dan hitam di mana anda mempunyai segera di mana anda boleh menaip arahan. Jadi ini adalah sebenarnya mengingatkan apa yang komputer digunakan sebelum pengguna grafik antara muka, GUIs, datang bersama-sama. Sekarang, dalam Windows, anda mempunyai satu mekanisme yang serupa dalam bentuk command prompt. Tetapi apa yang saya akan lakukan di sini adalah membuka, katakan, TextEdit lagi, jadi program yang sama kita gunakan untuk pseudokod masa lalu, dan saya akan pergi ke hadapan dan menulis program pertama saya. Termasuk stdio.h, apa-apa yang bermakna, int utama tidak sah, apa-apa yang bermakna, dan kemudian di tengah-tengah di sini, printf ("hello, dunia."). Dan kemudian quote rapat, menutup paren, koma bernoktah. Sekarang saya akan pergi ke hadapan dan hanya melanda Perintah-S. Saya akan untuk pergi ke hadapan dan menyimpan ini sebagai hello.c, supaya konvensyen dalam dunia pengaturcaraan C adalah menamakan fail dot c. Saya akan hanya dimasukkan ke dalam direktori Home John Harvard, di sini, klik Simpan, dan kini saya akan pergi ke ini tetingkap terminal, yang sekali lagi adalah prompt ini hitam dan putih di mana saya boleh melaksanakan arahan. Saya boleh menjalankan program-program dengan menaip nama mereka, bukan oleh double-klik ikon dalam erti kata biasa. Tetapi perkara itu adalah tentang C ialah bahasa seperti C pertama datang dalam borang ini, sesuatu yang dipanggil kod sumber. Sesuatu yang kelihatan sedikit seperti bahasa Inggeris tetapi pasti kurang seperti bahasa Inggeris daripada pseudokod Yusuf masa lalu. Ia adalah sedikit lebih batin. Ia seolah-olah mengikuti beberapa corak atau kaedah-kaedah. Hakikat bahawa saya mempunyai pendakap kerinting, koma bertitik, petikan, pendakap sudut, berasa seperti komputer datang dengan ini jenis bahasa. Tetapi jika saya pergi, sekarang, untuk tetingkap terminal ini, saya boleh menjalankan perintah itu akan menukar bahawa kod sumber adalah sesuatu yang dipanggil kod objek. Itu akan menukar sintaks seperti Inggeris untuk sifar dan orang-orang, jenis yang sama sifar dan yang kita bercakap tentang Rabu. Sekarang, saya akan menjalankan arahan yang dipanggil dilafaz. Lanjut mengenai ini dalam minggu-minggu akan datang, tetapi ia adalah satu program dengan yang saya boleh menukar hello.c ke dalam sekumpulan keseluruhan sifar dan orang-orang. Sekarang, saya telah menjalankan arahan ini. Saya telah menjalankan dilafaz, dan kemudian saya berkata menjalankan sendiri pada fail ini dipanggil hello.c, yang saya mencipta masa lalu, dan seolah-olah tiada apa yang berlaku. Tetapi sesungguhnya, jika saya mencucuk seluruh direktori rumah saya, saya akan melihat bahawa ini a.out program yang dinamakan bodoh kini wujud. Ini adalah hanya nama lalai untuk program semasa menulis dalam C. Kami boleh mengatasi ini akhirnya, tetapi a.out adalah nama program saya hanya ditukar menjadi sifar dan orang-orang. Dan kini bahawa sifar dan orang-orang itu, Mac saya, dalam kes ini, atau PC Windows anda, boleh memahami mereka bit, mereka sifar dan orang-orang. Dan sebagainya apabila saya tekan Enter, saya melihat "hello, dunia!" Tetapi ia adalah satu buggy bit. Saya tidak mengatakan "hello, dunia: udara: - jharvard." Udara adalah nama komputer saya. Jharvard nama akaun, jadi apa yang saya tidak jelas tinggalkan dari program ini? Beberapa jenis baris. Saya tidak melanda setara Masukkan atau pulangan pengangkutan, dan ini adalah, sekali lagi, bukti kepada hakikat bahawa komputer boleh hanya melakukan apa yang anda beritahu mereka lakukan. Dan hakikat bahawa saya tidak memberitahu komputer bergerak kursor ke baris seterusnya - baik, ia pasti tidak akan hanya melakukan angkuh bagi saya. Jadi, jika saya kembali kepada program saya, dan saya katakan \ n - Jadi \ n, seperti yang kita akan melihat, adalah cara mewakili perkara-perkara pelik seperti aksara baris perkara baru, yang sebaliknya akan hasil daripada memukul kunci Enter. Tetapi untuk sekarang, hanya tahu bahawa memukul kunci Enter akan hanya membuat kod kita kelihatan ganjil, jadi dunia memutuskan, anda tahu apa, untuk menjaga perkara-perkara yang lebih cantik, untuk memastikan ia dalam satu baris, mari kita hanya mengatakan \ n mewakili barisan baru. Biar saya resave fail saya, kembali ke tetingkap terminal, dan a.out-run semula, Enter. Masih kereta, tetapi mengapa? PENONTON: [didengar] DAVID MALAN: Ya, jadi saya perlu susun semula ia. Jadi untuk menyusun program hanya bermakna menukarkan ia dari sumber kod kod objek, kod sumber kepada sifar dan orang-orang. Sekarang, hakikat semata-mata bahawa saya memukul Simpan dalam ini TextEdit tidak mempunyai kaitan dengan sifar dan orang-orang itu kerana saya perlu memberitahu dilafaz hey, saya telah mengubah mereka baris kod, kod sumber. Anda perlu untuk menjana semula a.out. Tiada apa-apa jua nampaknya telah berlaku, tetapi dalam komputer, pada baris arahan, jadi untuk bercakap, apabila tiada apa yang berlaku, yang biasanya bermaksud semuanya berjalan dengan lancar. Apabila sesuatu yang tidak berlaku, ia bermakna anda sehingga merosakkan, secara amnya. Jadi mari kita sekarang pergi untuk a.out, dan sesungguhnya sekarang, saya mempunyai "hello, dunia. " Dan kini, bagaimana pula dengan sifar dan orang-orang ini? Jika, pada hakikatnya, adalah mereka? Well, saya tidak boleh benar-benar hanya jenis mencucuk di sekitar sangat berkesan. Izinkan saya membuka TextEdit. Berikut adalah a.out. Biar saya pergi ke hadapan dan terbuka ini, dan ini nampaknya apa yang saya program kelihatan seperti. Jadi saya telah dibuka, tidak hello.c, tetapi a.out. Tetapi ini sebenarnya tidak apa program saya benar-benar adalah. Jelas sekali, ini adalah beberapa jenis aksara abjad. Saya melihat tiada sifar dan orang-orang, tetapi ini adalah kerana a.out adalah program. Sifar dan orang - tetapi TextEdit, seperti namanya, ia adalah seperti Notepad pada Windows, adalah hanya editor teks, jadi ia mengelirukan semua orang-orang sifar dan orang-orang sebagai walaupun mereka adalah, apa? Aksara ASCII. Jadi ingat pada hari Rabu, kita hanya datang dengan ini pemetaan sewenang-wenangnya nombor, atau bit, kepada surat abjad dan simbol tanda baca dan sebagainya. Jadi TextEdit, bahawa ia adalah editor teks memutarkan mereka corak sifar dan orang-orang yang sepatutnya percetakan perkataan, seperti "hello dunia,." Ia memaparkan mereka sebagai ASCII, dan itulah sebabnya ia kelihatan sedikit kotor. Kini, terdapat beberapa petunjuk ketepatan di sini. Notis jika saya menyerlahkan, terdapat petunjuk sebenarnya "hello, dunia, "demikian tempat dalam program itu adalah hukuman itu saya menulis. Tetapi mari kita pergi ke hadapan dan lihat sekarang dengan program yang berbeza. Ini bukan salah kami akan menggunakan sering, tetapi ia juga datang dengan Mac dan akan di dalam perkakas CS50. Biar saya pergi ke hadapan dan membuka dengan program yang dipanggil XXD. Kembali pada hari itu, kebanyakan program telah dinamakan agak cryptically, dan sebagainya trend berterusan. Tetapi-b bermakna meludah program ini sebagai binari. Jangan jalankan ia. Paparkan kepada saya sebagai sifar dan orang-orang, dan ini adalah C program kita hanya menulis. Sekarang, saya, sebagai manusia di sini, saya secara jujur ​​tidak mempunyai idea apa pelbagai corak sifar dan orang-orang yang mewakili. Kembali pada hari itu, saya, dengan kad menumbuk saya atau sebagainya, akan sebenarnya perlu melihat apa corak pelbagai 01111000, sebenarnya mewakili. Atau lebih teruk lagi, saya akan perlu untuk melakukan menumbuk atau penciptaan ini corak sifar dan orang. Tetapi untuk sekarang, mengambil iman bahawa CPU, Intel di dalam, jadi untuk bercakap, di dalam semua komputer kita pada hari ini, tahu bagaimana untuk mentafsir sifar dan orang-orang ini. Dan beberapa sifar dan orang-orang yang bermakna cetak. Sesetengah sifar dan orang-orang yang bermakna bermain bunyi. Sesetengah sifar dan orang-orang yang bermakna mengambil input pengguna dari keyboard. Terdapat pelbagai corak yang berbeza, tetapi kita bersyukur, sebagai manusia, hanya amnya perlu bimbang tentang pengaturcaraan pada tahap yang agak tinggi. Dan dalam kelas CS lain anda boleh menyelidiki turun lebih mendalam dan melihat pada perkara-perkara seperti sifar dan orang-orang itu, atau lagi perkara-perkara lain yang masih. Jadi sekarang mari kita menukar ini. Mari kita bergerak sangat cepat dari C dan bergerak kepada sesuatu sedikit lebih selesa, lebih sedikit menarik, di mana kita boleh mendapatkan kembali animasi dan bunyi kami dan seperti yang jelas telah melarikan diri kita dalam perkara ini antara muka yang agak primitif. Jadi program ini sama dalam C boleh diwakili sekarang ini bahasa pengaturcaraan yang dipanggil Gores seperti berikut. Ini adalah bersamaan hello program dunia ini ditulis dalam ini sekeping teka-teki gaya bahasa yang dipanggil Scratch. Jadi biarlah saya pergi ke hadapan dan membuka program ini sangat. Ia sekali lagi dipanggil Scratch. Ia bebas yang ada, dan ini adalah perkara yang sama kita bermula hari ini. Jadi ini di sini adalah Awal, dan ia dipecahkan kepada beberapa kepingan yang berbeza. Di sebelah kanan paling atas, kita mempunyai peringkat yang dipanggil, dan sesungguhnya, yang mana cookies dilakukan hanya sedikit lalu. Dan pada peringkat itu perkara dipanggil sprites, watak-watak, atau objek, atau entiti. Ia tidak benar-benar perkara bagaimana anda berfikir tentang mereka, tetapi mereka diprogramkan, perkara alih, dan dalam kes ini, ini program yang pelajar kita menulis mempunyai beberapa roti halia cookies, beberapa cookies pekeliling, sekumpulan keseluruhan hati, sekumpulan keseluruhan cermin mata. Kerana ini, dia mampu untuk memprogram setiap orang watak individu berasingan. Sekarang, apakah maknanya untuk memprogram watak-watak ini? Baiklah, biar saya pergi ke hadapan dan klik pada cookies tangan ini kiri dan tatal ke kiri bahagian atas di sini. Di sebelah kiri atas skrin saya sekarang adalah yang dipanggil kawasan skrip. Ini adalah jenis sabak kosong, pada mulanya, ke mana saya boleh seret dan lepaskan kepingan teka-teki itu, terus-terang, adakah apa yang mereka katakan. Di bahagian paling atas timbunan kepingan teka-teki ini adalah perkataan Apabila Bendera Hijau Diklik, dan jika anda tidak perasan sebelum ini, cara saya mula lagu cookie klik, secara literal, bendera hijau. Jadi bahawa sekeping teka-teki di sebelah kiri atas ada bermakna apabila klik manusia bendera hijau, diteruskan untuk lakukan perkara-perkara berikut. Kini, apa yang mereka tidak cookie meneruskan lakukan? Saya tidak benar-benar tahu bagaimana untuk mentafsirkan ini lagi, tetapi Kuki nampaknya menetapkan alur untuk sifar, maka ia menunggu tiga saat, maka ia mengubah kumpulan kepada satu, maka ia menunggu kedua, maka ia berubah alur belakang kepada satu. Dan kemudian ini sebenarnya kelihatan seperti sedikit pepijat, sekiranya tidak perlu untuk mengubah alur lagi dan lagi melainkan jika ia sedang berubah di tempat lain, tetapi ini siri langkah-langkah apa yang menetapkan tingkah laku cookies ini khususnya. Jadi mari kita sebenarnya skrol kembali dan tidak melihat sesuatu agak begitu kompleks lagi. Biar saya pergi ke hadapan dan pergi File, New, dan mendapatkan sabak yang bersih. Jadi sekarang, saya sememangnya mempunyai kawasan skrip kosong, peringkat kosong, dengan Gores bidadari lalai kami, dan di sebelah kiri atas pada skrin saya adakah saya mempunyai palet semua mereka keping teka-teki yang disediakan. Dan kita tidak akan pergi melalui hampir bahawa banyak perkara-perkara ini hari ini kerana, sekali lagi, kebanyakan penjelasan-sendiri, tetapi kita akan cuba untuk mengkategorikan mereka dan menunjukkan persamaan dengan bahasa ini masa depan yang kita akan menyelam. Dan di sebelah kiri atas di sini adalah yang pertama Apabila Bendera Hijau Diklik, jadi biarlah saya seret ini di sini, mengezum keluar sedikit. Dan jika saya klik bendera hijau, tiada apa yang benar-benar berlaku kerana Saya tidak melekat logik mana-mana, apa-apa pernyataan jadi untuk bercakap, bahawa bendera hijau, jadi biarlah saya pergi sehingga kategori di sini. Saya kini dalam kategori Kawalan. Saya sebaliknya akan pergi ke kategori Kelihatan, dan ada sekumpulan keseluruhan perkara di sini yang mengatakan Katakanlah, Berfikir, Tukar Warna, Switch Kostum. Jadi, anda boleh melakukan perkara-perkara bodoh dengan pakaian dan bunyi dan sebagainya. Biar saya pergi ke hadapan dan hanya mengatakan Katakanlah, dan kini notis kerana saya heret dan lepaskan ini sekeping teka-teki, ia akan mahu selak ke dalam bentuk yang sama. Jadi, apabila saya pergi ke hadapan dan melepaskan tetikus saya, mereka mengunci bersama-sama, dan kini jika saya pergi ke sini dan klik bendera hijau, kucing tidak sebenarnya menyapa kerana itulah apa yang berada di dalam kotak putih ini. Kita akan melihat bahawa ini kotak putih adalah apa yang dipanggil hujah, atau parameter. Ia adalah satu cara mengubah tingkah laku, dalam kes ini, teka-teki sekeping, tetapi jika saya mahu untuk mengatakan apa yang saya kata sebelum ini, berkata hello, dunia, saya kini boleh kembali di sini, klik bermain, dan "hello, dunia" adalah apa yang berkata. Jadi, kita benar-benar pengaturcaraan sekarang. Ia tidak semua yang menarik program, tetapi sekurang-kurangnya ia adalah sesuatu yang sedikit lebih menarik daripada yang kelihatan, pada pandangan pertama, seperti ini. Dan kita sangat cepat boleh mendapatkan semua lebih ekspresif kerana dalam Gores, seperti dalam bahasa-bahasa lain, ada semua pelbagai kenyataan, bukan hanya Katakanlah atau percetakan sesuatu, tetapi anda boleh melakukan perkara-perkara seperti menunggu, seperti yang kita hanya melihat dengan cookie, beberapa beberapa saat. Anda boleh memainkan bunyi dalam persekitaran Gores hanya seperti yang anda boleh dalam komputer biasa bermain bunyi program. Anda boleh menyemak apa yang dipanggil ungkapan Boolean. Jadi sekarang, mari kita mulakan untuk menambah Kit beberapa istilah yang sebenarnya berkaitan dengan contoh bahawa Yusuf dan saya tidak di sini dengan stokin. Jadi penyata hanya kenyataan fakta. Melakukan ini. Satu arahan untuk bidadari, atau saya manusia, untuk melakukan sesuatu. Satu ungkapan Boolean adalah sesuatu yang mempunyai nilai, kononnya nilai kebenaran, yang sama ada sifar atau satu, palsu atau benar, atau mematikan, tidak atau ya. Tidak benar-benar kira bagaimana anda berfikir tentang ini, tetapi ia adalah satu negeri binari. Sebagai Nate dibincangkan dalam video Rabu, dua perkara yang berbeza. Jadi dalam Gores, ungkapan Boolean berlaku untuk melihat seperti objek biru di sini, dan dalam hal ini, soalan tanda menunjukkan bahawa anda bertanya soalan. Adakah kucing, atau bidadari, menyentuh penunjuk tetikus? Jadi ini adalah hanya satu contoh blok Gores yang akan untuk membolehkan kita untuk memeriksa ya atau tidak, adalah menyentuh tetikus bidadari pada skrin? Dan ini boleh menjadi berguna jika anda benar-benar mahu melakukan perkara-perkara dengan tetikus anda. Di samping ungkapan Boolean, kita mempunyai perkara-perkara seperti tetikus ke bawah, jadi anda boleh mengesan bahawa jenis soalan juga. Kita boleh melakukan matematik jika anda benar-benar mahu, dan terdapat kegunaan untuk ini sebenarnya lebih menarik daripada sekadar tulen aritmetik, seperti yang kita akan lihat. Kerawakan Pseudo dan membuat program anda muncul untuk berfikir atau berkelakuan berbeza berdasarkan beberapa nilai-nilai yang seolah-olah rawak, dan kemudian kita mempunyai perkara-perkara seperti ungkapan Boolean seperti DAN. Jadi, jika anda benar-benar mahu untuk memeriksa dua nilai, kita akan lihat di Gores bahawa kita sebenarnya boleh menguji jika ini adalah benar dan ini adalah benar. Sebagai contoh, dalam kes stoking saya, saya boleh telah di sangat akhir bertanya soalan jika kaus kaki kiri dan kanan yg bersukses adalah, berhenti. Anda semua dilakukan untuk hari itu, supaya akan menjadi satu peluang untuk itu. Jadi mari kita pergi ke hadapan dan cuba untuk sekeping beberapa ini bersama-sama dan pergi ke beberapa contoh yang lebih menarik daripada yang satu ini. Jadi biarlah saya teruskan di sini dan membuka beberapa contoh yang akan sentiasa berada di laman web kursus serta, dan membuka hello2. Jadi dalam hello2 sini, kita mempunyai satu program yang melakukan beberapa perkara, tetapi ia tidak melakukan ia sebagai berkesan seperti yang kita mungkin. Jadi di sini ia berkata "hello, dunia" untuk satu saat dan kemudian menunggu untuk kali kedua. Dan kemudian ia sekali lagi, dan kemudian tidak lagi. Jadi jika saya klik bendera hijau, Gores mengatakan "Hello, dunia. Hello, dunia. Hello, dunia. "Dan ini adalah jelas calon sekarang untuk penambahbaikan. Apakah peningkatan kecil, mudah-mudahan, kita boleh kini membuat jika Gores menyokong konsep? Beberapa jenis gelung. Beberapa jenis pengulangan, sekarang, akan menjadi baik, jadi biarlah saya sebenarnya cuba. Biar saya sebenarnya pergi dan bergerak ini. Jadi notis boleh menanggalkan blok semudah anda boleh menambah melampirkan mereka. Biar saya pergi di bawah Akta Kawalan, tatal ke bawah sini, dan sesungguhnya, ada ini sekeping teka-teki di sini, Ulang dan Selamanya dan Selamanya Jika. Jadi terdapat beberapa cara untuk menyatakan membina gelung Gores. Yang saya mungkin mahu di sini tidak Selamanya kerana saya hanya mahu ini berlaku tiga kali, tetapi mungkin Ulangi. Jadi biarlah saya seret Ulangi di sini, seret dan lepaskan, dan sekarang bukannya berkata "hello, dunia" tiga kali yang berasingan, izinkan saya seret ini sekeping teka-teki di sini. Dan walaupun ia nampaknya tidak sesuai, program pintar cukup untuk merealisasikan ia akan berkembang untuk mengisi, jadi ia adalah bentuk yang perkara dan bukan saiz mutlak. Izinkan saya menukar pengulangan kepada tiga, dan sekarang biarlah saya pergi hadapan dan seret Tunggu Salah Kedua di sana juga. Ia akan snap dalam juga, dan jadi sekarang saya akan mengheret lelaki ini di sini dan hanya membuang mereka jauh kerana saya tidak memerlukan mereka lagi. Biar saya mengezum keluar dan klik bendera hijau sekarang, dan kita mempunyai program yang sama tetapi, seperti yang saya meramalkan sebelum ini, lebih baik direka kerana anda boleh bayangkan bagaimana buruk program ini akan mendapat, sudah tentu estetik, jika anda terpaksa mula menyalin dan menampal, menyalin dan menampal, atau mengheret dan menjatuhkan perkara yang sama darn lagi dan lagi. Sekarang, hanya mengatakan barangan pada skrin, percetakan kepada skrin, benar-benar semua tidak menarik, jadi mari kita membuka satu varians ketiga di sini. Dan sekarang, seperti yang anda akan lihat, ini dengan cepat akan mendapat menjengkelkan - [Meow] DAVID MALAN: - tetapi ia juga jenis comel. [Meow] DAVID MALAN: Okay, jadi lebih baik, dan kita pasti boleh menggunakan yang peralihan sama chunking ini ke dalam gelung struktur, tetapi mari kita membuat ia lebih menarik masih. Biar saya pergi ke hadapan dan membuka varians keempat di sini, di mana saya mengambil perkara satu langkah ke hadapan. Jadi, menurut ini, bodoh walaupun ini adalah pada mulanya pandangan, apa yang program ini akan lakukan? Ia akan Meow sekali. Mengapa? Nah, salah satu adalah, setakat yang saya tahu, selalunya kurang daripada dua orang. Tiada tanggapan rawak di sini. Saya telah benar-benar keras berkod satu dan dua, tetapi ini adalah satu contoh kini sebenarnya menggunakan ungkapan Boolean. Banyak seperti Yusuf lakukan dalam pseudokod beliau, pengengsotan JIKA anda mencari padanan stokin THEN melakukan yang berikut, di sini kita mempunyai ungkapan JIKA satu adalah kurang daripada dua THEN - dan sebenarnya kita juga mempunyai sedikit lekukan, mana ungu sedikit dilekukan ke kanan - Kemudian anda akan untuk memainkan Meow bunyi. Sekarang, dalam kes ini, bahawa seseorang itu sentiasa kurang daripada dua, jadi ini adalah jenis sisa keadaan. Tetapi kita akan dapat, seperti yang kita akan lihat, untuk palam perkara-perkara lain ke dalam ini ruang letak mana satu dan dua sekarang. Jadi mari kita kini maju ke lima contoh ini beberapa hellos dan melihat apa yang program ini akan melakukan. Jadi sekarang, dalam ayat Inggeris, bagaimanakah ini program berkelakuan? PENONTON: Meows separuh masa. DAVID MALAN: separuh Meow masa, jadi ini adalah satu cara menyampaikan idea yang sangat mudah. Walaupun kita berada menggunakan beberapa ketidaksamaan sini dalam beberapa nombor, ini adalah benar-benar hanya programmatical cara, cara yang tepat, mengatakan jika syiling datang kepala, pergi hadapan dan Meow. Atau sebaliknya, jika syiling datang ekor, tidak Meow. Dan dalam kes ini, bagaimana kita menyatakan bahawa? Kami akan memilih nombor rawak 1-10, dan jika itu nombor kurang daripada 6, teruskan dan Meow. Dan bagaimana ini mendapatkan di sini? Baik lagi, notis hanya mengheret dan menjatuhkan dan perkara selak ke tempatnya. Jadi sekarang mari kita lihat jika rawak ini berfungsi. Biar saya pergi ke hadapan dan klik bendera hijau. [Meow] DAVID MALAN: Okay. [Meow] DAVID MALAN: Okay. Okay, baik, jadi kami mendapat kepala, kepala, ekor berkesan. Ekor. [Meow] DAVID MALAN: Ketua. [Meow] DAVID MALAN: Cemerlang. Memang janggal apabila hanya statistik anda mendapat yang buruk berlari, dan ia adalah semua kepala, dan program ini sebenarnya tidak bekerja kerana anda akan berharap. Tetapi kali ini, ia bekerja, dan kita seolah-olah mempunyai, jika kita lakukan ini nombor terhingga kali, kemungkinan 50%. Sekarang sekali lagi, tidak semua yang menarik, hanya membuat kucing Meow, jadi mari kita lihat jika kita tidak boleh memajukan ini sedikit lagi sini dalam enam versi. Jadi sekarang, kita mempunyai versi yang benar-benar menjengkelkan - [MEOWS SETIAP SECONDS FEW] MALAN DAVID: - dan ini adalah apa yang diketahui, umum, sebagai gelung tidak terhingga. Gelung tidak terhingga Jadi dalam kes ini merasakan buruk. Ia pasti akan mula membunyikan buruk, namun tidak terhingga gelung tidak sentiasa buruk. Bolehkah anda berfikir konteks program komputer di mana anda mahu sebenarnya mahu gelung tak terhingga? Yeah? PENONTON: Apabila anda mahu untuk memeriksa keadaan. DAVID MALAN: Baiklah, apabila anda mahu menyimpan memeriksa keadaan yang? Seperti apa? PENONTON: [didengar] DAVID MALAN: Okay, baik, jadi jika anda mempunyai beberapa program, beberapa jenis perkara automasi rumah, di mana anda mahu sentiasa memantau adalah sesuatu kes itu. Adakah lampu? Adakah lampu kerana mungkin anda mempunyai pemasa, dan anda mahu mereka pergi, anda mungkin perlu untuk melakukan sesuatu lagi dan lagi. Dan sebenarnya, bercakap pemasa, sesiapa di antara kamu yang telah jam pada komputer atau jam tangan digital anda, itulah gelung tidak terhingga. Ia terus mengemaskini masa kerana ia sentiasa memeriksa dan menyemak dan memeriksa mempunyai masa berubah, dan jika ya, oh, tuhan saya. Jam akhirnya berubah. Ia memerlukan memaparkan bahawa nilai kepada anda. Jadi sedangkan kebanyakan gelung tidak terhingga masa adalah kesilapan, atau sekurang-kurangnya keputusan reka bentuk yang miskin, kadang-kadang mereka lakukan mempunyai nilai mereka. Nah, mari kita memajukan lagi di sini untuk hello7. Jadi sekarang program ini akan mendapat sedikit lebih interaktif. Biar saya mengezum masuk sini, dan sekali lagi, ini adalah apa yang bagus tentang Scratch. Dan kita akan menggunakannya untuk menjadi jelas, Awal, hanya hari ini dan ke menetapkan masalah minggu depan. Tetapi pada hari Isnin, kita menyelam ke dalam C. Dalam program ini di sini, ia tidak, selama-lamanya, yang berikut. JIKA menyentuh penunjuk tetikus - sekarang, yang konteks di sini? Nah, dan notis yang yang dipilih ke sini di bawah betul adalah kucing, bidadari satu, jadi ini skrip, ini program, terpakai kepadanya secara khusus. Jadi, jika kucing yang menyentuh penunjuk tetikus, maka ia akan untuk bermain ke bawah dan tunggu dua saat, dan kemudian mengulangi nauseum iklan. Jadi mari kita pergi ke hadapan dan memukul main. Tiada apa-apa yang berlaku, tetapi jika saya mahu haiwan kucing sekarang, saya boleh hanya. [Meow] DAVID MALAN: Disanjung. [Meow] DAVID MALAN: Baiklah, kurang menjengkelkan, tetapi juga mendapat membosankan, jadi mari kita bergerak ke atas dan melihat jika kita tidak boleh menyuntik sedikit lebih logik. Itu adalah contoh 7. Sini dalam lapan contoh, kita akan memperkenalkan satu keadaan ELSE. Begitu banyak seperti garpu literal di jalan raya, di mana anda boleh pergi kiri atau anda boleh pergi betul, keadaan dalam pengaturcaraan bahasa seperti Awal, atau seperti yang kita akan lihat C, boleh membenarkan anda untuk pergi dalam satu arah atau yang lain melalui IF ELSE membina. Jadi agak literal, JIKA menyentuh penunjuk tetikus, ini akan memainkan beberapa bunyi, ELSE ia akan bermain ini lain bunyi, Meow. Sekarang, jika anda boleh membuat kesimpulan daripada nama bunyi-bunyi, anda boleh mungkin meneka apa yang program ini bertujuan untuk nampak idea. Kucing ini mengiu gembira. [Meow] DAVID MALAN: Gembira, tetapi tidak agak suka untuk disentuh. [Roars] DAVID MALAN: Jadi sekarang kita mempunyai kucing yang akan menjerit pada anda. Baiklah, baik, salah satu contoh terakhir dengan kucing di sini, dan mari versi terbuka sembilan ini di sini. Jadi sekarang, kita mempunyai bunyi yang paling menjengkelkan yang saya boleh mencari, jadi kita mempunyai anjing laut atau singa laut di sini siapa yang akan melakukan yang berikut. [MOHOR Bark] DAVID MALAN: Okay, jadi ini akan pergi sehingga anda memikirkan bagaimana program ini berfungsi. Jadi kali ini, haiwan ini mempunyai dua skrip, dan apa yang menarik di sini adalah bahawa skrip-skrip ini akan melaksanakan secara selari. Jadi, kerana kedua-dua mereka bermula dengan satu bendera hijau diklik, ia seperti pergi seperti ini, dan kedua-dua program mula berjalan ia sekali walaupun mereka menggelung selama-lamanya. Jadi dalam skrip atas, saya mempunyai beberapa logik. Apa ciri-ciri yang menyediakan di sana? [MOHOR Bark] PENONTON: [didengar] DAVID MALAN: Jika ia adalah apa? [MOHOR Bark] PENONTON: Jika disenyapkan kepada sifar, ia akan terus bermain bunyi. [MOHOR Bark] DAVID MALAN: Okay, baik. Jadi JIKA disenyapkan, apa ini, perkara ini oren adalah sifar, THEN memainkan bunyi singa laut dan berfikir "Oh, hi, "selama dua saat. Sekarang, saya tidak tahu apa yang disenyapkan adalah, tetapi sifar conjures sehingga idea palsu atau mematikan. Jadi jika disenyapkan adalah palsu, jadi jika tidak disenyapkan, terus memainkan bunyi. Baiklah, baik, bagaimana kita melumpuhkan perkara ini? Nah, mari kita melihat skrip kedua di bawah sana. Skrip kedua mengatakan ditetapkan disenyapkan kepada sifar. Notis ia juga oren, jadi apa Gores tidak ia warna blok di bawah naungan yang sama jika apapun ia daripada logiknya berkaitan. Jadi hanya top up disenyapkan adalah oren, jadi disenyapkan turun di sini yang disebut di dalam blok oren. Tetapi ini adalah satu tugasan yang berubah-ubah, jadi hanya seperti dalam algebra, anda mempunyai x dan y dan z, dalam pengaturcaraan anda mempunyai pembolehubah, tetapi mereka umumnya - mari kita berhenti untuk seketika dan angka bagaimana untuk berhenti menyalak ini. Bagaimana saya lakukan ini? [MOHOR Bark] DAVID MALAN: Okay. Ia berhenti. Okay. Jadi sama seperti dalam algebra anda mempunyai pembolehubah x, y, dan z, tetapi dalam pengaturcaraan, yang mempunyai pembolehubah seperti x, y, dan z adalah umumnya disukai kerana mereka tidak berada di semua ekspresif. Mereka tidak mempunyai makna semantik jua, jadi dalam kebanyakan bahasa pengaturcaraan, pembolehubah boleh mempunyai penuh nama beroperasi atau perkataan atau frasa, seperti disenyapkan, untuk mengatakan apa yang mereka lakukan. Jadi ini skrip kedua juga telah mendengar selama-lamanya, dan ia berkata jika kekunci, kekunci keyboard Angkasa, ditekan, tanda tanya. Jadi ada satu keadaan dengan ungkapan Boolean itu akan menjawab soalan sama ada benar atau palsu, maka saya mempunyai dalamnya JIKA kekunci space ditekan DAN JIKA disenyapkan adalah sifar, tetapkan disenyapkan kepada satu, ELSE menetapkan disenyapkan kepada sifar. Jadi ini garpu lain di jalan raya, dan notis bagaimana saya telah bersarang dua JIKA keadaan, adalah cara memeriksa Space Bar ditekan kerana jika begitu, saya sama ada mahu pergi ini cara atau cara itu. Dan bagaimana saya terbalikkan nilai disenyapkan? Saya mempunyai untuk memeriksa ia sifar? Jika demikian, menjadikan ia salah, lain menjadikan ia sifar itu togol kedua-dua negeri. Baiklah, jadi kita perlu maka beberapa-asas membina. Kami mempunyai ungkapan Boolean, dan sedar, juga, ini adalah tidak semua yang tidak dikenali. Malah, di sini adalah screenshot cepat Harvard kursus CS50 alat membeli-belah, dan mana-mana laman web di luar sana yang mempunyai kotak semak dan turun menurun telah benar-benar, sepanjang masa ini, telah menggunakan Ungkapan Boolean. Dalam kes ini di sini, jika anda klik checkbox sebelah kursus lebih besar daripada atau bersamaan kepada 4.5, atau seterusnya sama fakulti, anda menyatakan ungkapan Boolean. Tunjukkanlah kepadaku kursus yang ungkapan itu adalah benar. Atau ke kanan, tidak bercanggah dengan kursus saya mengambil, jika yang diperiksa, maka ya, anda mahu untuk memeriksa keadaan itu, jika anda mahu untuk mengabaikan ia. Ungkapan Jadi Boolean adalah jenis di seluruh, tetapi apabila kita meletakkan mereka dalam keadaan, sama ada JIKA keadaan, JIKA Elses, atau kita juga boleh meniru lebih mendalam peringkat, IF ELSE IF ELSE - supaya jenis negeri pertigaan. Anda boleh pergi dengan cara ini atau cara ini atau cara ini. Kita boleh menjaga perkara-perkara yang bersarang untuk pergi dalam arah yang berbeza. Jadi Gores mempunyai gelung ini, seperti Selamanya. Ia mempunyai ciri-ciri seperti 10 Ulangi, beberapa nombor terhingga kali. Kami mempunyai keupayaan sekarang untuk menetapkan pembolehubah, jadi dalam kes ini Saya telah diisytiharkan, misalnya, dipanggil stoking ubah. Saya telah dimulakan kepada 0, dan itulah lagi arah lain kita boleh diambil di sini dengan Yusuf, di mana mungkin saya hanya menjejaki berapa banyak stoking saya mempunyai dan menamatkan program apabila nilai yang berubah-ubah 2. Itu akan menjadi cara lain jenis generalizing bahawa masalah dan melakukan sesuatu lagi dan lagi. Nah, mari kita pergi ke hadapan dan kini memperkenalkan beberapa perkara baru. Jadi orang-orang anda dengan pengalaman programing terlebih dahulu akan tahu bahawa banyak bahasa mempunyai tatasusunan, atau vektor atau senarai, dan sesungguhnya, Gores mempunyai sesuatu seperti ini, terlalu. Jadi mari kita lihat jika kita tidak boleh mengambil perkara-perkara ke peringkat seterusnya di sini. Jika saya mempunyai keupayaan, kini, dengan ini keping teka-teki untuk menambah sesuatu, seperti perkataan atau nombor, pembolehubah, saya boleh mula untuk mengumpul sesuatu. Dan ini sebenarnya adalah apropos cantik untuk perkara-perkara seperti permainan, peranan-bermain permainan di mana anda jenis berjalan di sekitar beberapa dunia fantasi mengumpul perkara, memetik perkara, pendapatan mata, atau sebagainya. Anda mungkin mahu untuk menjejaki beberapa jenis inventori, dan sesungguhnya, itulah yang salah bekas pelajar kami di sini lakukan dengan sesuatu dipanggil Fruitcraft RPG. Jadi biarlah saya pergi ke hadapan dan membuka perkara ini di sini, dan dalam Fruitcraft, kita mempunyai dunia ini sehingga di atas. Jadi biarlah saya pergi ke hadapan dan klik bendera hijau. Notis di sebelah kiri atas adalah beberapa jenis inventori. Itu dilaksanakan dalam Gores sebagai apa yang kita akan memanggil array atau senarai, dan kini kita mempunyai animasi sedikit. Jadi hanya kerana kita bermula awal dengan ini kisah cinta cookies, dan kemudian kita mara ke kucing dan singa laut, kini kita boleh mempunyai perkara-perkara yang lebih interaktif. Dan lelaki ini biru sedikit, saya boleh mula untuk bergerak beliau rumah kecil di sini. Jadi ia kelihatan seperti dia mendapat keluar ke sini, jadi saya menggunakan kekunci anak panah, sehingga, ke bawah, kiri kanan. Dan sekarang saya di luar, jadi biarkan apa yang saya dapat di sini. Kelihatan seperti oren, dan sesungguhnya, sebaik sahaja saya menyentuh oren, ia mendapat plopped ke dalam inventori saya. Jika saya pergi ke sini untuk ceri, sekarang saya mempunyai sesuatu lain dalam inventori saya. Dan ini adalah semua baik dan comel, tetapi berfikir tentang bagaimana, kini, ini dilaksanakan. Nah, kita mempunyai ini tanggapan senarai, dan itulah nampaknya sekeping teka-teki yang anda hanya mengatakan apa yang anda mahu menambah, menambah oren, menambah ceri. Kini, apa yang lelaki ini biru sedikit melakukan? Nah, dia bidadari. Dan mungkin, oren dan ceri - mereka sendiri sprites berasingan. Dan menggunakan syarat dalam ungkapan Boolean, pelajar mungkin dapat untuk meluahkan JIKA lelaki biru adalah menyentuh ceri THEN menambah ceri perkataan dengan inventori, dan kemudian juga menyembunyikan bidadari ceri. Jadi di bawah hood, terdapat mungkin masih ceri bidadari di sana. Kita baru sahaja diberitahu ia untuk menjadi berkesan ghaib. Sekarang, jika saya terus berjalan ke sini, kita juga boleh melakukan ini perkara proksimal, di mana saya boleh pergi dan membaca tanda. Jadi, jika lelaki biru menyentuh tanda, kita boleh mempunyai blok Katakanlah hanya seperti kucing bercakap kepada kita dalam perkataan, hello, sebelum ini, "Got beberapa buah? Bawa ia ke tempat buah-buahan. "Baiklah, jadi sekarang, nampaknya, Saya mempunyai arahan saya. Saya boleh pergi ke sini ke tempat buah, beratur diri dengan pintu. Sekarang, saya di sini. Saya boleh pergi sehingga kepada lelaki di kaunter. Beliau mengesan bahawa saya rapat kepadanya, supaya ia tidak perlu agak sepercaman menyentuh, dan saya telah memenangi permainan. Jadi ada kita mempunyai Fruitcraft RPG. Jadi, kita boleh melakukan perkara-perkara yang lebih maju daripada ini. Kita boleh menambah bunyi. Kita boleh menambah pseudo rawak. Kita boleh menambah kerumitan. Biar saya teruskan di sini, dan bukannya melakukan ini diri saya, izinkan saya menunjukkan kepada anda salah satu penghujahan yang lebih canggih kami mendapat tahun lepas daripada seseorang tertentu bernama Blake. Bolehkah kita mempunyai satu sukarelawan yang selesa muncul pada kamera dan untuk bermain permainan? Bagaimana pula di sana? Datang di atas. Semua hak, jadi permainan yang anda mempunyai hanya disedari menawarkan diri untuk bermain - [Tepukan] DAVID MALAN: - adalah sesuatu yang dari tadi dipanggil "Frogger." Apakah nama anda? Renda: Renda. DAVID MALAN: Redna? Renda: Ia seperti Brenda dengan b. DAVID MALAN: Okay, Renda. Daud. Nice to meet you. Jadi di sini dalam "Frogger," dan jika kita boleh menaikkan kelantangan hanya sedikit, anda ini sedikit katak hijau di bahagian bawah. Anda boleh menggunakan kiri, kanan, atas dan ke bawah, dan matlamat anda adalah untuk menyeberangi jalan, menyeberangi sungai, dan menyentuh pad teratai di atas. Aw. Satu lagi t - buat semula, hak semua? Mari kita hit stop. Tiada siapa yang melihat bahawa. [Tepukan] [Tepukan] DAVID MALAN: Ya. Sangat baik dilakukan. Cemerlang, terima kasih. Supaya ada Frogger. Sekarang anda tahu apa yang anda telah mendapat dirimu, sukarelawan satu lagi untuk berbeza permainan yang diserahkan oleh pelajar lain. Anda mahu datang? Apa nama anda? RICHARD: Richard. DAVID MALAN: Richard. Baiklah, Richard, datang pada sehingga. [Tepukan] DAVID MALAN: Anda mempunyai sesuatu yang akan bunyi biasa tidak lama lagi, jadi di sini adalah arahan anda. Jadi dalam seketika, beberapa keping teka-teki akan tatal ke atas dari skrin yang kelihatan sama ada meninggalkan atau kanan atas atau bawah. Anda akan perlu menekan kekunci anak panah dalam apa-apa cara bahawa ia sepadan dengan orang-orang keping teka-teki yang beratur dengan ruang letak di atas. Jadi apabila anda melihat anak panah kiri, dan ia garisan dengan kiri panah, memukul anak panah kiri. Anda boleh mula. [MUSIC - "MANTAP" Kayne Barat] DAVID MALAN: Semua hak, bulat besar tepukan untuk Richard. [Tepukan] DAVID MALAN: Sangat baik dilakukan. Terima kasih. [Tepukan] DAVID MALAN: menyeronokkan Jadi, seolah-olah, jenis menakutkan kerana ia mungkin untuk melaksanakan sesuatu yang seolah-olah canggih seperti ini, menyedari bahawa pelajar tidak dinyatakan dan hanya menulis ini semua sekali gus. Sebaliknya, anda boleh memecahkan masalah kerana seolah-olah kompleks kerana ini kepada kepingan yang lebih kecil, dan ini juga adalah akan menjadi tema. Perkara yang paling buruk yang boleh anda lakukan dalam menulis program dalam kebanyakan mana-mana bahasa adalah untuk duduk, mendapat benar-benar teruja, tuliskan perkara sialan keseluruhan, dan kemudian hanya berharap bahawa ia berfungsi dengan kali anda selesai menulis. Sebaliknya, proses pengaturcaraan harus amnya sangat sengaja, sangat lelaran, di mana anda hanya menetapkan langkah-langkah yang sangat kecil untuk diri kamu sendiri, menggigit-saiz keping adakah anda mahu menggigit, dan supaya anda mempunyai kewarasan ini cek, pencapaian yang sedikit anda boleh bertemu. Dan kemudian anda membina di atas mereka untuk mewujudkan lebih banyak perkara canggih masih. Jadi, sebagai contoh, bagaimana kita boleh pergi kira-kira melaksanakan permainan seperti ini? Nah, terus-terang, saya pasti akan bermula dengan hanya menyokong satu kunci pada satu-satu masa. Mari kita hanya melaksanakan sokongan untuk anak panah kiri. Jadi pelajar terpaksa entah bagaimana mencipta dalam Photoshop, atau dalam Menggaru sendiri menggunakan editor sedikit grafik, kekunci anak panah yang kelihatan seperti salah satu di atas kiri sana, hanya placeholder kelabu. Kemudian pelajar terpaksa memikirkan apa x, y menyelaraskan meletakkan ia, di mana untuk meletakkan ia dalam tetingkap. 0, 0 adalah di sini, jadi anda perlu memikirkan bilangan piksel, atau titik, untuk mengimbangi anak panah itu dari atas skrin. Dan kemudian sekali itu di tempat, program anda tidak sebenarnya berbuat apa-apa lagi, jadi anda kemudian perlu bidadari kedua, contoh anak panah hijau itu juga menunjuk ke kiri, dan anda maka perlu mula menulis beberapa skrip untuk itu. Dan anda perasan, mungkin, bahawa perkara-perkara ini mula datang pada kelajuan yang berbeza, dan warna dalam berbeza lokasi, dan itu kerana pelajar yang digunakan sedikit rawak pseudo. Dan dengan pseudo rawak, saya hanya bermakna memilih nombor antara sesuatu dan sesuatu kerana anda boleh mula kepada perkara-perkara peta, seperti jika nombor adalah antara satu dan lima, baik, mari kita membuat perkara hijau. Jika ia adalah antara 6 dan 10, mari kita membuat sekeping teka-teki merah sebaliknya. Selagi anda mempunyai cara menjana beberapa jenis rawak, maka anda boleh membuat keputusan berdasarkan itu rawak. Dan saya terus berkata pseudo rawak kerana terdapat rahsia kotor sedikit. Komputer tidak boleh tampil dengan nombor rawak. Mereka hanya boleh melakukan apa yang mereka diberitahu kerana mereka peranti buatan manusia. Mereka tidak boleh hanya meneka nombor seperti kita manusia rasa seperti kita boleh. Sebuah komputer untuk melakukan sesuatu matematik nampak ilusi nombor matematik, kadang-kadang menggunakan hari semasa masa sebagai input untuk memikirkan apa nombor untuk kembali, tetapi lebih kepada bahawa masa yang lain. Buat masa sekarang, hanya tahu bahawa kita boleh menjana rawak pseudo. Jadi apabila saya mempunyai keupayaan untuk anak panah kiri untuk memulakan muncul pada masa yang berlainan dan pada kelajuan yang berbeza, maka Saya boleh kembali dan menambah beberapa JIKA keadaan. JIKA bidadari ini menyentuh satu lagi, DAN panah kiri utama telah ditekan - jadi tiga syarat dalam kes itu. Saya boleh menggunakan bahawa DAN menyekat mungkin, dalam kes itu - Kemudian saya mahu pergi ke depan dan kenaikan skor. Dan di atas, kita mempunyai skor, kita mempunyai Awesome, Sejuk, Baik, dan Boo. Jadi ada nampaknya lima pembolehubah bahawa pelajar ini digunakan untuk menjejaki ini pelbagai metrik. Jadi dalam jangka pendek, hasil akhir adalah menakjubkan. Ia menyeronokkan, ia adalah menyeronokkan untuk bermain, ia menarik, tetapi ini tidak mana pelajar bermula. Beliau bermula pada set langkah-langkah yang lebih kecil. Jadi apakah beberapa blok bangunan lain yang boleh kita menenun ke dalam program ini? Nah, ada konsep lain dalam bahasa yang paling, Gores di kalangan mereka, yang dikenali sebagai benang. Jadi komputer boleh sebenarnya tidak benar-benar melakukan pelbagai perkara di masa, sekurang-kurangnya tidak biasanya. Sebaliknya, komputer umumnya mempunyai hanya satu CPU, dan juga walaupun komputer super cepat dan boleh, oleh itu, mewujudkan ilusi melakukan perkara-perkara sekaligus - memeriksa e-mel anda, mendapat segera mesej, percetakan dokumen - benar-benar, komputer hanya melompat dari percetakan untuk IM untuk menghantar e-mel, belakang dan belakang dan belakang dan sebagainya begitu pantas bahawa kita perlahan kepala manusia hanya tidak sedar bahawa ia sebenarnya menjalankan program-program sedikit pada satu masa. Sekarang, ini sedikit putih terletak pada hari ini kerana, pada masa kini, banyak komputer kita adalah apa yang dipanggil berbilang teras, jadi anda mempunyai satu CPU tetapi pelbagai teras, yang adalah semacam mempunyai pelbagai CPU. Dan jadi kadang-kadang, komputer benar-benar boleh melakukan perkara-perkara pelbagai pada satu masa, tetapi secara umumnya dalam program, program bergantung kepada perkara-perkara yang dipanggil benang. Jadi thread adalah jenis seperti program kecil yang boleh wujud bersama-sama program lain kecil dan boleh menjalankan secara selari, atau sekurang-kurangnya boleh dijalankan di bawah ilusi bahawa mereka sedang berjalan secara serentak. Jadi Gores menyokong perkara-perkara yang dipanggil benang. Anda boleh mempunyai pelbagai skrip melaksanakan sekali, seperti mana kita lakukan dengan singa laut, dan ini membolehkan kita untuk benar-benar kemudian mempunyai interaksi antara-sprites. Biar saya teruskan di sini dan tarik ke atas, katakan, benang, dan bermain ini seperti berikut. Kami mempunyai dua sprites, setiap daripada mereka kita akan melihat mempunyai hanya satu skrip. Dan anda notis nampaknya ada beberapa risikan dalam kucing dalam satu ini kerana dia semakin hampir - [Roars] DAVID MALAN: - dan lebih dekat kepada burung kecil. Jadi bagaimana operasi burung? Nah, mari kita melihat burung pertama. Skrip burung berkata apabila bendera hijau diklik, pergi ke x sama negatif 115 dan y bersamaan 150. Jadi saya hanya menemukan lokasi rawak di mana saya mahu burung untuk memulakan, dan saya hanya plopped dia ada secara lalai. Kemudian Selamanya JIKA tidak menyentuh kucing, jadi ini adalah berbeza jenis membina gelung, tetapi idea yang sama, melakukan ini sekali lagi dan lagi dan lagi. Selagi anda tidak menyentuh kucing, bergerak tiga langkah, dan jika anda berada di melantun pinggir, di mana ia adalah jenis yang refleksi dalam erti kata biliard. Jadi itulah bagaimana burung bergerak jenis seolah-olah secara rawak, tetapi ia hanya kerana ia memantul dari dinding dalam kes ini. Sekarang kucing Sementara itu, adalah jenis menipu. Kucing, apabila bendera hijau diklik, ya, bermula pada beberapa lokasi, lokasi rawak - sekurang-kurangnya di bahagian sebagai satu memilih rawak blok hijau di sana - dan kemudian Selamanya JIKA menyentuh burung, memainkan bunyi singa, dan kemudian berhenti skrip. Jadi apabila saya berkata menamatkan, atau keluar sebelum, ada teka-teki sekeping dalam Gores yang hanya akan membunuh program itu menunjukkan kerana ia adalah jenis logik dilakukan. Tetapi sebaliknya, di sini, melihat apa yang akan berlaku. Point ke arah burung dan bergerak satu langkah. Jadi ini titik ke arah burung adalah jenis kelebihan kucing mempunyai bahawa ia adalah homing dalam pada burung bergerak, dan kita boleh kini membuat program ini semua lebih menarik. Sebaliknya bergerak satu langkah pada satu masa setiap kitaran CPU, setiap menyerang tol loceng, jadi untuk bercakap, biarkan saya pergi ke hadapan dan bergerak, katakan, lima langkah pada satu masa sebagai kucing. Klik berlari, dan kini dia benar-benar mendapati dia dengan cepat. Jika kita menggandakan ini lagi kepada 10 langkah, ia jenis pergi tepat untuknya. Sekarang, kita boleh memberi burung, mungkin, sedikit kelebihan. Mari kita pergi ke burung itu dan mengatakan sebaliknya bergerak tiga langkah, mari kita beralih dia 30 langkah. Tetapi dia masih tersangkut di akhir. Jadi di sini, kita mempunyai dua benang. Ia dipenjarakan di Gores dengan dua skrip dan dua sprites, tetapi idea dalam bahasa-bahasa lain adalah bahawa anda boleh menulis, pada dasarnya, terlalu banyak program seperti ini dan mempunyai mereka benar-benar menjalankan, atau imaginarily, selari. Sekarang, terdapat juga konsep ini dalam pengaturcaraan yang dikenali sebagai peristiwa, dan ini adalah sesuatu yang kita tidak akan melihat dalam C, bahasa yang dikenali sebagai C. Kita akan melihat ke arah akhir semester dalam pengaturcaraan web, apabila kita memperkenalkan JavaScript dan tanggapan laman web bangunan yang dinamik dan berinteraksi dengan pengguna. Jadi dalam kes ini, kita mempunyai contoh yang sangat mudah dua sprites, lelaki dan perempuan, setiap daripada mereka mempunyai masing-masing. benang, tetapi entah bagaimana kedua-dua saling berkomunikasi dengan cara sesuatu yang dipanggil peristiwa. Jadi biarlah saya teruskan di sini dan zum di atas skrip budak, yang kelihatan seperti ini. Apabila bendera hijau diklik, selama-lamanya melakukan yang berikut. Jika Angkasa utama, atau Space Bar, ditekan, katakan Marco selama dua saat, itu semata-mata estetik pada skrin, gelembung ucapan sedikit, tetapi kemudian disiarkan. Jadi siaran adalah satu lagi Gores itulah wakil kelas fungsi dalam pengaturcaraan yang membolehkan program yang berbeza, benang yang berbeza, antara berkomunikasi, entah bagaimana menghantar mesej, satu dengan yang lain. Pemergian sehelai kertas di dalam kelas adalah jenis teknologi yang rendah setaraf. Jadi menyiarkan acara. Saya boleh menghantar mesej ini, dan acara perkataan sewenang-wenangnya. Gores kadang-kadang ini telah surut drop, jadi saya hanya datang dengan perkataan rawak seperti acara kerana sekarang, apa yang budak lelaki itu tidak apabila saya tekan kekunci adalah dia menyiarkan acara ini. Dan jika saya melihat sekarang pada skrip gadis, skrip dia super mudah kerana semua yang dia perlu lakukan tidak bertindak apabila bendera hijau diklik. Dia direka untuk tindakan apabila dia menerima quote, unquote, "Peristiwa", dan pada ketika itu, dia mendengar maka acara dipanggil lagi dan lagi. Sebaik sahaja dia menerima kejadian itu, dia akan menjerit Polo untuk dua saat. Dan supaya anda mungkin boleh membuat kesimpulan daripada ini apa yang hasil seterusnya akan menjadi. Biar saya klik bendera hijau. Tiada apa-apa yang berlaku kerana saya perlu melakukan apa? PENONTON: Space Bar. DAVID MALAN: Space Bar. Boy berkata Marco, gadis berkata Polo. Tetapi itu tidak sukar dikodkan per se. Itulah antara komunikasi antara skrip, jadi sekarang kita mempunyai keupayaan untuk membuat program yang lebih kompleks di mana kedua-dua entah bagaimana saling berkomunikasi. Jadi dalam apa arahan kita boleh mengambil ini? Nah, dalam set masalah 0, benar-benar, objektif adalah untuk bersenang-senang dengan Scratch. Untuk edisi penggodam, sebaliknya anda akan bersenang-senang dengan lebih versi canggih Gores dipanggil BYOB, Membina Blok Sendiri anda, tetapi idea adalah sama. Anda akan dapat - Ya, itu adalah disengajakan. Ia datang dari Berkeley. BYOB adalah versi penggodam edisi ini, tetapi kedua-duanya , demografi, edisi dan edisi penggodam standard sama matlamat di tangan untuk minggu akan datang adalah benar-benar hanya untuk menyelam di mendalam, mendapatkan tangan anda kotor dengan pengaturcaraan, dan membuat sesuatu yang menarik, membuat sesuatu yang interaktif, membuat sesuatu yang seni, membuat sesuatu yang menyeronokkan untuk benar-benar menunjukkan, supaya menjelang akhir minggu ini, anda akan mempunyai projek, bukan sahaja bagi pset pertama anda CS50, tetapi anda akan mempunyai sesuatu yang sedikit yang anda boleh menunjuk-nunjuk di Annenberg untuk rakan-rakan ataupun keluarga dengan memuat naik ke laman web MIT. Dan sebagainya seperti yang saya katakan pada hari Rabu, kami menjangkakan 90% kelas, secara amnya, untuk melakukan edisi standard. Menyedari bahawa terdapat juga ini saluran untuk anda yang selainnya mungkin mendapati diri anda sedikit bosan dengan asas-asas dan benar-benar mahu untuk menyelam dalam dan kraf penglihatan anda sudah dengan latar belakang terlebih dahulu ini lebih mesra persekitaran. Jadi biarlah saya tarik sehingga satu contoh lain bahawa salah satu bekas pelajar di sini lakukan dan memberitahu sesuatu yang sedikit melalui lagu. Bahawa yang sama, kerana ini bermain, berfikir tentang bagaimana anda pergi tentang melaksanakan program ini menggunakan tepat ini sama blok bangunan, sedikit rawak pseudo, dan sedikit lagu biasa. Jika kita boleh meningkatkan kelantangan hanya sedikit? [MUSIC - "IT hujan LELAKI" THE GIRLS CUACA] DAVID MALAN: Itu untuk CS50. Kami akan melihat anda pada hari Isnin. [Tepukan]