[VIDEO MAIN SEMULA] Kejayaan -A matematik dan kemahiran mekanikal adalah besar ini automatik baru kalkulator di Universiti Harvard. Masalah yang rumit dalam matematik dimasukkan melalui mesin dalam bentuk berkod pada pita secara tepat diselesaikan dalam pecahan minit masa yang diperlukan banyak manusia. Direka untuk mempercepatkan segala bentuk penyelidikan matematik dan saintifik, otak mekanikal gergasi akan bekerja untuk Tentera Laut Amerika Syarikat sehingga akhir perang. [AKHIR MAIN SEMULA] DAVID J. MALAN: Ini adalah CS50. Masa lalu adalah yang ajaib tempat, tetapi jika anda telah pernah tertanya-tanya apa peranti yang di Harvard Pusat Sains ia merupakan sebahagian daripada Harvard Mark I, dan ia dipamerkan di sana sekarang untuk banyak tahun yang lalu. Dan apa yang anda akan melihat tertanam dalam set masalah satu adalah melihat di belakang tabir apa peranti yang tidak, dan tidak, daripada Profesor Harry Lewis, yang berada di jabatan sains komputer di sini. Jadi lebih kepada yang dalam hanya sedikit. Tetapi hari ini kita mula peralihan dari minggu lepas ini, dan kami akan membawa sebutan satu gambar di sini yang sebenarnya cukup terkenal. Adakah sesiapa yang tahu apa ini di sini ialah pada skrin? Sekurang-kurangnya mengikut mitos. Yeah. PENONTON: Virus pertama. DAVID J. MALAN: Oleh itu, kononnya bug sebenar yang pertama dalam komputer. Sekarang dalam realiti bug perkataan, untuk kesilapan dalam program, telah bersama kami untuk beberapa masa dalam dunia fizikal, dan ini adalah salah satu yang pertama kali didokumenkan di mana seseorang sebenarnya dipetik rama-rama yang besar daripada Tandakan II komputer, memasukkannya ke dalam pengikat, dan kemudian merakamkannya sebagai bug yang diketahui pertama untuk benar-benar telah dijumpai secara fizikal. Jadi dengan itu telah dimasukkan itu ke dalam tradisi hari ini. Semua dari lepas minggu boleh didapati dalam talian. Sumber tertentu yang anda mungkin tidak semestinya notis, terutamanya jika datang ke sini secara peribadi. Jadi salah satu daripada rakan-rakan pengajaran setiap tahun membuat set berkanun nota, jadi anda tidak perlu menyimpan kepala anda ke bawah, cuba untuk menyalin paling apa-apa yang mungkin berlaku di sini di dalam kelas. Jadi sedar bahawa orang-orang apa yang dikenali sebagai [? Scribd?] Nota berada dalam talian, sudah tentu slaid dan kod sumber yang kita gunakan di dalam kelas. Kami membuat transkrip teks penuh disediakan. Jadi, jika anda samar-samar ingat beberapa jangka, dan mahu melihat ia sedikit lebih mudah, menyedari bahawa semua itu atas talian dicari. Serta walkthroughs juga. Malah, hari ini kita mula melihat bahasa pengaturcaraan peringkat rendah, tidak lama lagi akan kita ketahui sebagai C, dan ia sangat mudah untuk menyusun hilang selepas hanya beberapa detik-detik masa, dan kemudian sejenis keajaiban bagaimana kita benar-benar mendapat lebih banyak contoh kompleks dari yang paling mudah. Dan sebagainya sedar kita akan ceri mengambil semasa kelas beberapa satu contoh wakil, tetapi sedar bahawa banyak lagi juga boleh didapati dalam talian supaya anda boleh bekerja melaluinya pada kelajuan anda sendiri, Walau bagaimanapun anda paling selesa. Tetapi kita berhenti dengan program-program yang tidak hanya ini. Jadi saya klik bendera hijau, dan apakah program ini lakukan? Kata, hello, dunia. Ia menjadikan kucing berkata hello di dunia kecilnya pada sisi atas sebelah kiri antara muka Scratch pengguna. Tetapi kami mula memperkenalkan beberapa istilah minggu lepas. Dan sebagainya, perkara-perkara seperti ini, kita dipanggil apa? Apa yang mungkin menjadi istilah umum untuk ini? Yeah. Satu kaedah atau kenyataan. Pasti, ia adalah tindakan. Adakah ini. Dan masih ada juga bentuk lain menggaru, selain dari apa yang dikenali sebagai pernyataan, mereka juga perkara seperti ini, yang kita dipanggil apa? Yeah. Jadi gelung. Dan dalam kes ini, perkara ini ulangan, jelas, 10 kali. Ada satu blok selama-lamanya. Ada beberapa orang lain. Dan hari ini kita akan melihat bagaimana untuk menterjemahkan ini kepada dunia yang lebih moden, jika anda akan, walaupun ia adalah akan muncul pada pandangan pertama menjadi lebih sukar difahami. Dan orang-orang sememangnya gelung. Dan kemudian kita mempunyai perkara-perkara seperti ini, yang mempunyai bentuk ini, dan pada dasarnya ditanya. Dan kita disebut ini sebagai apa? PENONTON: ungkapan Boolean. DAVID J. MALAN: Ya. Ungkapan Boolean. Sesuatu sama ada benar atau palsu, ya atau tidak, satu atau sifar, Walau bagaimanapun anda mahu melihat dunia. Tetapi kita dipanggil Boolean mereka ungkapan, dan kami plug mereka menjadi syarat, atau cawangan. Dan dalam dunia Awal, segala-galanya dengan baik saling kunci dari segi bentuknya, jika ia masuk akal logik untuk berbuat demikian, tetapi anda tidak perlu berhenti pada hanya melakukan satu perkara dengan syarat, anda boleh mempunyai pepatah yang garpu di jalan raya dan lakukan sama ada ini atau itu jika keadaan ini benar atau tidak. Dan kemudian, seperti yang anda akan lihat, jika anda tidak sudah, Anda juga boleh sarang blok-blok. Jadi Scratch tumbuh untuk mengisi bentuk yang mungkin anda mahu masukkan ke dalamnya, jadi anda sebenarnya boleh meluahkan paling logik yang anda mungkin mahu lakukan. Sekarang Beberapa fakta pengumuman untuk kedua-dua di sini dan New Haven. Jadi sectioning bermula hari ini. URL untuk ini adalah pada kursus ini laman web, bagi mereka yang tidak dikenali. Seksyen akan menjadi satu peluang untuk bersama-sama dalam persekitaran yang lebih intim daripada [? Sanders?] Membolehkan, dengan 10 hingga 20 rakan sekelas dengan mengajar rakan-rakan di trek yang berbeza, dan jarak yang berbeza, jika anda supaya memilih. Sesungguhnya perjalanan tawaran bahagian yang berbeza untuk mereka yang kurang selesa, lebih selesa, dan di suatu tempat di antara, dan peranan ibu jari di sini, adalah tidak ada definisi formal, tetapi jika anda kurang selesa, anda jenis tahu. Anda sedikit berani tentang idea melangkah kaki, mungkin, kembali di dalam kelas, atau menunjukkan sehingga satu di antara bahagian. Jika anda telah pengaturcaraan kerana anda berusia enam tahun, lebih selesa, mungkin kepada anda. Dan jika ia adalah jenis lambungan-up, itulah apa yang di antara bertujuan untuk menjadi. Sekarang, dalam pada itu, untuk kelas saiz ini, ia membawa kita masa yang lama untuk seksyen semua orang, jadi kami telah dipanggil, bahagian super, datang ini hujung minggu dan awal minggu depan, jadi kita lihat di laman web kursus ini bagi orang-orang yang tentu lebar, dan juga difilemkan bagi mereka yang tidak boleh membuat mereka. Dan bahagian-bahagian sendiri akan mula dalam seminggu tiga CS50 indeks sifar. Masalah set 0 sudah di laman web kursus ini. Dan menyedari bahawa anda mempunyai sembilan hari akhir semester ini. Jadi ini adalah satu peningkatan dari lepas tahun, apabila kita mempunyai lima hari lewat. Jadi, jika anda tertanya-tanya, kita ada sembilan set masalah. Anda mempunyai sembilan hari lewat, setiap yang anda hanya boleh menghabiskan satu setiap minggu pada. Yang berkesan membuat semua masalah ini menetapkan kerana hari Jumaat, tetapi matlamatnya adalah untuk meletakkan sedikit sedikit tekanan psikologi kepada anda untuk cuba untuk mendapatkan perkara-perkara dalam pada Khamis kerana seperti yang anda akan menemui, untuk lebih baik atau untuk lebih teruk, paling segala-galanya dalam dunia perisian berakhir mengambil lebih lama daripada anda menjangka. Oleh itu fikirkanlah ia semacam satu peluang untuk membantu diri anda untuk mensasarkan Khamis, tetapi mengambil keselesaan dalam bahawa, ya, segala-galanya adalah kerana hari Jumaat. Dan jika anda menghantar mereka pada Khamis, itu indah. Tidak ada mata bonus atau tambahan kredit untuk memenuhi tarikh akhir itu. Ia bertujuan untuk menjadi tongkat sahaja. Dan waktu pejabat, kedua-dua di sini dan di New Haven, secara peribadi, jika anda ingin bertemu dengan mana-mana kursus kami mengajar rakan-rakan dan CA untuk bantuan. Baiklah. Oleh sebab itu, mari kita membuat ini lebih nyata. Dan seketika ia akan mula untuk mendapatkan sedikit lebih sukar difahami, tetapi sangat cepat pada hari Jumaat dan minggu depan kita akan boleh berbuat demikian lebih daripada kita boleh setakat ini dalam Scratch. Oleh itu, kita diperkenalkan Kod lalu minggu, walaupun pictoral. Ia adalah kepingan teka-teki. Dan kita secara rasmi bahawa ia adalah sesuatu yang dinamakan kod sumber, tetapi akan tidak kelihatan seperti? Nah, ia kelihatan sedikit sesuatu seperti ini. Dan, sebenarnya, hanya untuk jenis mengusik mana kita boleh pergi dengan ini. Saya akan pergi ke depan dan membuka tetingkap di sini, dan saya hanya akan memilih Fail Baru. Dan saya akan simpan fail ini sebagai sesuatu seperti khabar dot c. Lebih kepada yang pilihan perkataan dalam hanya seketika. Dan ini adalah bagaimana seseorang mungkin pergi tentang menulis program. Termasuk Saya standard / O dot h, int utama tidak sah, kemudian buka kerinting, berhampiran kerinting, printf hello dunia koma, garis miring n, koma bertitik, Simpan, dilakukan. OKAY. Saya telah menulis pertama saya program, tetapi ia akan untuk menjadi sangat underwhelmed kerana apabila saya benar-benar menjalankan program ini, sudah tentu, melalui surat yang pertama membuat hello, dan kemudian dot mengurangkan hello, dan kami akan pergi melalui ini dalam lebih terperinci dalam sekejap, itu sahaja yang dilakukan. Tidak pop buka mana-mana tingkap. Ia tidak berbuat apa-apa terutamanya mewah. Semua ia adalah apa yang saya diceritakannya kepada lakukan, tetapi bagaimana kita dapat itu? Dan bagaimana kita membina itu? Nah, mari kita memperkenalkan beberapa konsep-konsep berbeza di sini. Jadi satu, kita kira-kira untuk mula menggunakan program yang dikenali sebagai pengkompil. Pengkompil A wujud untuk Mac OS, Windows, Linux, apa-apa bilangan sistem operasi, dan kita tidak lama lagi akan memperkenalkan anda kepada persekitaran yang kita akan menggunakan, tetapi pengkompil hanya umum istilah untuk suatu perisian yang mengambil kod sumber dan menghasilkan kod objek daripadanya. Dalam erti kata lain, jika anda mempunyai sebagai input sumber anda kod, sesuatu seperti apa yang saya hanya ditaip, ia akhirnya menghasilkan kod objek. Dan kod objek adalah benar-benar hanya cara yang mewah untuk mengatakan output yang sifar dan seseorang. Dalam erti kata lain, sumber kod, walaupun ia adalah akan kelihatan sukar difahami sedikit, dan sedikit kurang mesra daripada calar pada pandangan pertama, ia sekurang-kurangnya sesuatu bahawa kita manusia boleh faham. Ia jenis kelihatan dan kedengaran seperti Bahasa Inggeris walaupun ia adalah sangat ringkas. Manakala pengaturcaraan sifar dan seseorang, kerana mendahului kita terpaksa lakukan, beberapa tahun yang lalu, bukan satu cabaran terutamanya yang menyeronokkan. Namun, ini adalah apa yang komputer masih memahami. Jadi pengkompil mendapat kita dari kod sumber kepada kod objek. Ia seperti membuka fail dengan pengkompil, dan apabila anda menyimpannya, anda mendapatkan orang-orang sifar dan satu. Oleh itu, kita akan melihat bagaimana untuk melakukan bahawa dalam hanya seketika. Tetapi mari kita kini cuba untuk menyediakan satu merapatkan antara minggu lalu dan ini, supaya walaupun seperti yang kita digantung kepada perkara-perkara seperti pendakap kerinting, dan koma bertitik, dan kurungan, dan semua ini dari segi intelek menarik aspek pengaturcaraan, yang sangat difahami tersandung orang sehingga awal, sedar bahawa semua idea-idea hari ini, adalah sama seperti lepas. Jadi lepas, kita lihat contoh ini di sini, program Hello World. Nah, bermula hari ini, jika kita mahu untuk melaksanakan program yang sama, ia akan kelihatan sedikit sesuatu seperti ini. Dan kita akan menjelaskan sebelum apa int panjang, dan utama, dan tidak sah, dan semua itu , tetapi sekurang-kurangnya saya lihat di sini sudah biasa Hello World. Sementara itu, perkara-perkara seperti fungsi, berkata hello, adalah sangat semata-mata akan menjadi kenyataan yang mudah seperti ini. Printf hello dunia, dengan beberapa memetik, dengan garis sendeng terbalik yang, dengan koma bernoktah, tetapi lebih kepada yang akan datang. Gelung, sementara itu, ini adalah gelung itu, sudah tentu, kata hello dunia selama-lamanya, dan yang satu ini akan kelihatan sedikit aneh berbanding yang lepas, tetapi jika aku mengatakan sesuatu seperti, manakala benar, saya kemudian boleh mencetak Hello dunia lagi dan lagi dan lagi dan lagi. Dan kemudian anda boleh jenis daripada mula untuk membuat kesimpulan di sini, konvensyen ini menggunakan pendakap kerinting adalah jenis daripada seperti memeluk garis tersusun kod di sana. Garis printf kod sama seperti teka-teki sekeping kuning ke atas. Oleh itu, kita tidak akan mengatakan selama-lamanya, kita akan berkata sedang benar, tetapi kita akan melihat mengapa yang hanya sedikit. Sementara itu, jika kita mempunyai gelung seperti ini, di mana anda mengulangi sesuatu yang terhad kali bilangan, yang satu ini juga ia akan mengambil sedikit untuk membiasakan , tetapi ia akan mengatakan dengan int i mendapat sifar, i kurang daripada 10, i ++, dan kemudian printf lagi. Tetapi ada akan menjadi corak. Dan bagi anda biasa dengan AP Sains Komputer, atau Jawa, atau apa-apa bilangan bahasa lain, hampir semua konstruk ini setakat ini harus melihat kebanyakannya biasa. Jadi berubah-ubah. Jadi di sini adalah Scratch petikan mudah yang menetapkan pembolehubah yang dipanggil bertentangan dengan sifar, dan kemudian selama-lamanya berkata kaunter, dan kemudian ia berubah kaunter demi satu. Jadi ia bermula dengan sifar, dan kemudian satu, dua, tiga. Nah, bagaimana kita boleh memperkenalkan bahawa dalam bahasa ini baru sedikit sama? Kaunter Int sama sifar, manakala yang benar, yang adalah idea yang sama dari sebelum untuk melakukan sesuatu yang selama-lamanya, dan saya hanya akan printf. Dan kini ia semakin sedikit pelik, peratus i, tetapi lebih kepada yang akan datang, tetapi idea-idea ini adalah sama. Kami hanya kini perlu mematuhi sintaks bahawa komputer adalah akan menuntut daripada kita. Ungkapan Boolean, sesuatu seperti sx kurang daripada y, atau x kurang daripada y, dan y kurang daripada z. Ia akan melihat sesuatu yang kecil seperti ini, dengan kurungan hanya seperti dalam matematik untuk menjadikannya lebih menarik kepada hanya memastikan bahawa perintah operasi adalah seperti yang kita berniat. Dan kini, keadaan. Jadi, jika x kurang daripada y, katakan x kurang daripada y, lain jika x lebih besar daripada y, kata x lebih besar daripada y, jika tidak, secara logik, x mesti sama dengan y. Jadi, anda mungkin melaksanakan sesuatu seperti ini di Awal, atau anda mungkin melaksanakan dalam sintaks ini. Dan sekali lagi, pendakap kerinting adalah jenis memberi kita bentuk yang sama seperti teka-teki keping, tetapi sintaks, sekarang, mungkin mula mengikuti beberapa corak. Jadi, apakah ini memberikan kita di sini? Oleh itu, kita berada ketika itu pada program utama kami. Mari kita sebenarnya, sekarang, melakukan sesuatu dengannya. Jadi dalam hal ini yang pertama garis yang kita lihat tajam termasuk, Saya standard / O, dot h, dan kemudian beberapa sudut pelik kurungan di bawah itu. int utama tidak sah, dan kemudian printf dunia hello. Jadi hanya mengambil langkah. Seseorang yang tidak pernah diprogramkan sebelum ini, sekurang-kurangnya menjelaskan salah satu daripada ayat-ayat ini. Menggunakan mungkin sebahagian daripada jargon minggu lepas. Apakah printf, misalnya? Yeah. PENONTON: [didengar] DAVID J. MALAN: Ya. Ia adalah satu fungsi, atau satu kenyataan, dari istilah minggu lepas. Dan ia adalah suatu tindakan yang yang melakukan sesuatu. Sekarang fungsi ini, atau kenyataan ini, adakah ia kelihatan mengambil beberapa jenis input? Dan dalam apa rasa melakukannya seolah-olah mengambil input, jika demikian? Input, apa yang saya maksudkan dengan itu? Yeah. PENONTON: [didengar] DAVID J. MALAN: Ya. Jadi Scratch keluar kepingan teka-teki beberapa di mana anda boleh parametrize ia. Anda boleh memberitahu ulangan menyekat berapa kali mengulangi, sehingga adalah masukan macam, dan seperti Scratch mempunyai pemegang tempat putih yang kecil untuk nombor yang anda akan menaip, begitu juga kita gunakan dalam ini kurungan dunia teks untuk memberikan kepada kita bahawa bentuk bulat ke mana kita boleh palam input kami. Lagipun, berpuluh-puluh tahun yang lalu apabila bahasa ini, yang dipanggil C, telah dicipta yang tidak dijangka ia adalah salah satu daripada kita, ini beberapa tahun kemudian, kita akan mahu satu fungsi yang berkata hello. Betul? Ia akan menjadi baik jika terdapat sekeping teka-teki fakta yang utama, yang dinamakan hello, yang betul-betul hanya berkata hello. Tetapi kita tidak perlu itu. Kita boleh mempunyai sesuatu yang jauh lebih rendah peringkat, seperti cetak generik perintah, yang mengambil input, dan cetakan apa sahaja yang kita mahu. Jadi notis sekarang pola yang akan mula muncul. Paren terbuka, paren rapat adalah nampaknya memeluk input, dan kemudian saya melihat dua menyebutkan di kedua-dua hujung. Masih ada garis sendeng terbalik pelik n, tetapi mudah-mudahan sekarang anda boleh mula membayangkan sekurang-kurangnya yang printf mengambil dalam beberapa bentuk input. Tidak seperti yang mesra pengguna sebagai Calar, tetapi ia hanya seperti telah dipasang beberapa nilai di sana. Baiklah, sekarang mari kita sebenarnya melakukan sesuatu dengan ini. Jadi sebahagian daripada anda mungkin tahu dari mempunyai belah kelas sebelum ini, berbual-bual dengan rakan-rakan, yang selama bertahun-tahun kita menggunakan sesuatu yang dipanggil perkakas CS50. Ini adalah satu istilah yang menerangkan teknologi yang dipanggil mesin maya, yang adalah suatu perisian yang anda terdahulu akan turun off laman web kursus ini secara percuma. Mereka juga akan turun sekeping percuma perisian dipanggil hypervisor yang, sesuatu yang dinamakan seperti VMware, atau VirtualBox, atau sebarang nombor alat-alat yang lain, dan pada mereka Mac atau PC atau apa sahaja komputer mereka mempunyai tahun lepas dan dalam beberapa tahun yang lalu, mereka akan klik dua kali ikon untuk menjalankan perisian ini dipanggil hypervisor. Dan kemudian di dalam program yang mereka akan membuka perkakas CS50. Dan kesannya adalah bahawa sama ada pendahulu anda telah menjalankan Mac OS atau Windows, dia kemudian kemudian mempunyai tetingkap baru pada mereka skrin berjalan persekitaran CS50. Jadi mesin maya membolehkan anda menjalankan satu sistem yang beroperasi di dalam yang lain, dan itulah apa yang kita lakukan. Sepanjang kebanyakan kita perjalanan menggunakan sistem operasi yang dikenali sebagai Linux, khususnya Ubuntu Linux, dan ini adalah cara yang sangat baik dalam tahun yang lalu memastikan bahawa semua orang dalam perjalanan hanya mempunyai persekitaran yang sama. Dan anda boleh menggunakan apa-apa jenis komputer yang anda benar-benar mahu. Antara kelemahan, walaupun, kalaulah adalah seperti dua gigabait untuk memuat turun perkara ini. Ia tidak semestinya bekerja super baik pada orang yang komputer yang mungkin hanya mempunyai gig atau lebih RAM, atau tidak terlalu banyak gigahertz kelajuan CPU, dan sebagainya pada tahun ini, untuk ini dan sebab-sebab lain, perlu kita telah beralih kepada persekitaran ini. CS50 IDE yang dipanggil, yang berdasarkan perisian sumber terbuka, dan platform yang disokong bahawa sebuah syarikat bernama Cloud9 menyokong di Eropah, yang membolehkan kita untuk mempunyai dasarnya persekitaran yang sama seperti dalam tahun yang lalu, tetapi di dalam awan yang dipanggil. Jadi apa awan? Anda mungkin telah diklik ikonnya pada Mac atau PC anda. Apakah awan? Ya? A lebih kuat sedikit. Yeah. Ia hanya sekumpulan komputer tempat lain yang menyimpan data dan menjalankan perisian dan sebagainya. Jadi ia adalah benar-benar hanya kepada perkataan de jure menggambarkan [? boleh sewa?] komputer yang tinggal di tempat lain. Bahawa anda, diri sendiri, tidak memiliki semestinya. Oleh itu, apabila data anda, atau anda program, berada di dalam awan, itu hanya bererti ia pada seseorang komputer lain di tempat lain, dan tidak, kemungkinan besar, pada anda laptop fizikal atau desktop. Dan sebagainya itulah yang CS50 IDE kini. Selepas ini anda akan pergi ke yang tertentu URL yang akan memperkenalkan anda untuk, masalah set 1, kemudian ini minggu, yang akan kemudian, setelah login, memberikan anda persekitaran ini. Dan banyak calar seperti mempunyai Beberapa panel yang berbeza yang terlibat, begitu juga IDE CS50 mempunyai perkara tersebut. Di sebelah kiri atas di sini, anda berada akan melihat pelayar fail biasa. Jadi mana-mana fail yang anda dimasukkan ke dalam persekitaran ini hanya akan disenaraikan di sana. Fail dan folder. Selain itu di sini, anda akan melihat tempat di mana anda sebenarnya boleh menulis kod anda. Pada mulanya dalam C, kemudian dalam jangka dalam PHP dan JavaScript, dan, mungkin untuk perlawanan akhir projek, Ruby atau Java atau Python atau apa-apa bilangan bahasa setakat ini disokong dalam persekitaran ini. Ia tidak sama sekali terikat untuk CS50 secara khusus. Dan kemudian di sudut bawah sini, terutamanya bagi mereka yang lebih selesa, anda mempunyai sesuatu dipanggil tetingkap terminal. Dan tetingkap terminal ini membolehkan anda untuk melaksanakan apa-apa arahan yang mahu dalam persekitaran awan ini. Ia membolehkan anda untuk memasang apa-apa perisian tambahan yang anda mahu kerana anda telah dipanggil akar, atau pentadbir keistimewaan. Jadi dalam erti kata lain, walaupun ini akhirnya menjadi tuan rumah dalam awan, dan walaupun kita mempunyai dipermudahkan ia sedikit sebanyak secara lalai, secara literal memperkenalkan, Dan terima kasih kepada Armendariz, dan Dino, dan Dan Bradley dalam pasukan CS50 sejak lepas beberapa bulan, yang kurang selesa mod yang menyembunyikan banyak daripada gangguan pada mulanya mengelirukan. Segala-galanya ada wujud untuk mewakili sistem komputer biasa yang mungkin digunakan dalam dunia sebenar. Jadi apakah ini semua bermakna, dan apa yang boleh kita benar-benar melakukan dengan ia? Mari kita sebenarnya mengambil mengintip di program. Jadi saya akan untuk membuka persekitaran sebenar di sini, yang hanya Chrome kami pelayar, yang boleh menjadi Firefox, boleh menjadi Internet Explorer, atau beberapa pelayar yang lain. Ia penuh ditayangkan di sini buat masa ini. Dan saya mahu untuk benar-benar mengusik selain apa yang program ini adalah. Jadi mari kita lihat, dengan zoom di atas atas, apa yang saya lakukan, dan bagaimana saya sampai di sini. Jadi di sini adalah orang-orang yang tepat garis yang sama kod. Jadi ini adalah kenyataan, seperti yang anda nyatakan sebelum ini. Fungsi yang mengatakan khabar. Pendakap kerinting, pada garis empat dan garis enam, jenis mungkin satu envelop garis yang mengaitkannya dengan intipati program saya. Maka sesungguhnya, utama perkara ini, itu terpulang terdapat pada baris tiga, anda boleh berfikir bahawa sebagai setaraf itu apabila bendera hijau diklik, menyekat dalam Scratch. Jadi itu sahaja kami ada di sini, adalah apabila bendera hijau diklik, mencetak, atau berkata, Hai dunia. Tetapi mari kita mengambil tekaan, sekarang, apa pertama, talian lebih sukar difahami ini, adalah. Sharp termasuk, bersudut terbuka kurungan, saya standard / O dot h, menutup kurungan bersudut. Apakah yang mungkin lakukan, terutamanya jika anda telah diprogramkan sebelum ini dalam beberapa bahasa lain. Ya? PENONTON: [didengar] DAVID J. MALAN: Ya. Tepat sekali. Jadi ini memberi anda akses kepada perpustakaan, boleh dikatakan, fungsi. Dan pustaka fungsi adalah fungsi yang orang lain menulis, sama ada baru-baru ini atau lama dahulu, supaya anda tidak perlu mencipta semula roda. Sebagai contoh, kita tidak perlu tahu, pada tahun 2015, bagaimana untuk menulis kod yang meletakkan watak pada skrin saya. Pengguna lain telah membuat kesimpulan bahawa dengan fungsi printf supaya saya boleh menyusun abstrak daripada itu, atau lapisan di atas masing-masing kod, dan kini hanya mengambil untuk diberikan bahawa mana-mana program yang saya tulis boleh mencetak sesuatu untuk skrin. Jadi barisan pertama ini terdapat dalam langkah satu termasuk fail header yang dipanggil untuk perpustakaan standard. Maka perhatikanlah, bahasa dalam yang kini kita bekerja mempunyai perpustakaan standard dengan banyak fungsi. Printf adalah salah seorang daripada mereka, dan bahawa garis pertama kod bermakna memberikan saya akses kepada fungsi-fungsi itu, supaya saya tidak perlu mencipta semula roda itu. Sekarang mari kita pergi ke tetingkap bawah dan melakukan apa yang saya lakukan sebelum ini. Masa yang lalu, ketika saya keciut melalui kod, menaip keluar untuk kali pertama, Saya dengan cepat ditaip, membuat hello. Apakah bahawa semua tentang anda akan rasa? Apa yang saya buat? Ya? Tidak mengapa. Tidak mengapa. Yeah. PENONTON: Mengumpul ia. DAVID J. MALAN: Ya. Ia hanya menyusun ia. Betul? Walaupun ini benar-benar tidak dikenali kepada anda, ia cukup Inggeris seperti. Ia sudah tentu tidak sifar dan orang-orang, jadi saya masih perlu untuk menjalankan melalui bahawa apa yang dipanggil program, pengkompil, yang akan untuk mengambil ia sebagai input dan menghasilkan output. Dan sekurang-kurangnya, buat masa ini, dalam persekitaran Linux ini, tetapi ini bukan syarat, ini hanya di mana kita akan memulakan, biasanya anda berinteraksi dengan sistem komputer seperti ini oleh baris arahan kononnya. Jadi dengan kerdipan mata yang cepat dan papan kekunci anda, dan tidak begitu banyak tetikus anda, dan tidak begitu banyak tingkap dan ikon dan menu, dan bukan semuanya teks. Dan walaupun ini berasa, pada mulanya pandang, mungkin, seperti langkah ke belakang, ia sebenarnya yang lebih cara yang ampuh dan ekspresif mengawal komputer terutama kerana anda, diri, menjadi lebih selesa dari kurang. Ia akan membolehkan anda untuk melakukan banyak lebih banyak perkara daripada sekadar apa yang Microsoft atau Apple membolehkan anda untuk melakukan dengan sistem operasi grafik mereka. Oleh itu, apabila saya tekan Enter, sekarang, tiada apa yang berlaku masa ini kerana nampaknya program hello adalah terkini. Dan apa arahan Saya berlari selepas itu? Dot mengurangkan hello dan hello dunia. Sekarang mari kita mengambil langkah ke menyandarkan hanya untuk seketika. Ia ternyata bahawa membuat hello hanyalah cara mudah menyusun program. Mari kita memperkenalkan sekeping jargon, tetapi kemudian beralih daripadanya, kerana itu tidak semua yang menarik untuk tujuan hari ini. Pengkompil kita akan mula menggunakan dipanggil dilafaz, untuk bahasa C. Dan ini adalah satu program yang yang berjalan hanya seperti yang kami lakukan pada baris arahan di sana. Dan jadi jika saya mahu menyusun program yang saya telah menulis di dalam fail yang dipanggil hello dot c, saya benar-benar hanya menaip hello dilafaz c masuk. Perkara yang melucukan adalah, atas sebab-sebab sejarah, jika saya tidak menentukan menamakan program ini yang saya ingin output, jika saya tidak melakukan menentukan nama fail untuk orang-orang sifar dan orang-orang, yang sangat pelik tahun konvensyen telah diterima lalu di mana ia merasakan sejenis jawapan yang baik pada masa itu, baik mari kita hanya sewenang-wenangnya memanggil Program pertama kita menyusun dot keluar. A datang pertama dalam abjad. Keluar, ia output. Oleh itu, kita akan memanggil program secara lalai dot keluar. Dan itulah denda kerana jika saya mahu menjalankan program ini di dalam teks ini berdasarkan alam sekitar, saya hanya menaip dot dot mengurangkan keluar masuk. Dan ia akan berjalan tepat seperti sebelum ini. Jadi mari kita lihat yang sebenar cepat. Jadi, jika saya kembali kepada saya kod sumber dalam CS50 IDE, dan saya bukannya melakukan ini, dilafaz hello katil c masukkan, notis tiada suatu pun yang berlaku, tetapi hampir sentiasa dalam persekitaran Linux ini, apabila tiada perkara buruk seolah-olah berlaku, yang bermakna sesuatu yang baik yang sebenarnya berlaku. Jika anda tidak melihat ralat mesej, semua mungkin juga. Dan sesungguhnya, jika saya kini melakukan dot mengurangkan titik keluar masuk, saya telah menjalankan program sama saya. Saya masih mempunyai program hello ini dari awal kerana sesungguhnya ia akan menjadi begitu banyak lebih bagus hanya menaip membuat bukannya mengingati ini penjampian arahan, tetapi mari kita lihat bagaimana kita mungkin memperbaiki ini, tetap. Jadi, ini adalah arahan untuk menyusun kod. Ini adalah arahan untuk dilaksana kod disusun selepas itu. Bagaimana saya boleh menentukan nama fail? Nah mari kita memperkenalkan satu bahagian lebih jargon. Apabila anda berada dalam ini persekitaran berasaskan teks, anda akan mahu untuk menentukan perkara yang dipanggil hujah baris arahan. Yang hanya satu cara mewah untuk mengatakan, erti kata lain di prompt yang tweak tingkah laku apa sahaja program yang anda sedang berjalan. Jadi secara khusus program ini, saya berjalan, dengan menaip dilafaz nama, adalah program yang dipanggil dilafaz. Jadi ini adalah atau sekolah lama bersamaan dengan mengklik dua kali pada Microsoft Word atau icon beberapa program. Saya bukannya hanya menaip namanya, tetapi dalam versi ini arahan, Saya kemudian mempunyai dash o ruang hello hello ruang dot c. Jadi, walaupun anda tidak pernah bermain dalam dunia ini sebelum ini, hanya mengambil tekaan apa adakah dash o hello lakukan? Atau adakah ia memberitahu dilafaz yang perlu dilakukan? Yeah. PENONTON: [didengar] DAVID J. MALAN: Ya. Ia hanya menetapkan output fail untuk menjadi hello bukannya sillier titik keluar. Dan, sememangnya, mari kita cuba ini. Jadi, jika saya sekarang lakukan, pertama mari kita buat ini, r m hello. Itulah keluarkan. Dan ia akan berkata keluarkan fail biasa hello, yang adalah tidak perlu sukar difahami, tetapi ia hanya cara anda ingin memadam fail, dan saya menaip y untuk ya. Dan perhatikan, jika anda sambil mengerling ke arah bahagian atas kiri, ia hilang dari sana. Mari kita sekarang saya buat dilafaz dash o, dan Saya akan pergi ke hadapan dan melakukan hello, dalam semua topi, hello dot c. Sekarang, jika saya lakukan slash dot hello, apa yang anda inginkan? Mungkin ia adalah kes sensitif. Mungkin ia tidak. Mari kita lihat. Tiada fail atau direktori tersebut. Dan kita boleh jenis menipu dengan hanya melihat sebelah kiri atas. Apa yang saya lakukan jelas menyimpan program ini? Semua topi hello. Maka sesungguhnya, itu akan untuk membuat perbezaan. Jadi sekarang hello dunia kembali. Sekarang ini adalah semua baik dan baik, dan semua sangat fikiran-kebas, untuk menyusun menjadi buntu dalam ini butiran, tetapi memahami mereka adalah baik. Menaip ini semakin jampi lama tidak akan menjadi amat menyeronokkan, jadi orang di dunia mencipta program lain, beberapa tahun yang lalu, yang dipanggil membuat, bahawa cukup hanya membenarkan anda menaip membuat, nama program yang anda ingin, dan membuat adalah bijak kerana ia akan kelihatan dalam folder semasa, aka direktori, dan jika anda mempunyai fail yang dipanggil hello dot c, iaitu fail yang akan menyusun untuk anda ke dalam program yang dikenali sebagai hello. Jadi ia adalah cara yang lebih mudah daripada melakukan perintah lebih samar yang kita lakukan sebelum ini. Dan kita mempunyai pra-konfigurasi CS50 IDE tahu bahawa ia perlu dilakukan dash o dan beberapa bendera lain, atau hujah baris arahan, bahawa kita akan melihat tidak lama lagi. Tetapi mari kita kini benar-benar melakukan sesuatu yang lebih menarik. Hanya menaip di dunia hello semua masa yang tidak semua yang menarik. Jadi biarlah saya pergi ke hadapan dan perubahan program ini dan mengatakan, hello Daud. Sekarang saya akan turun ke bawah di sini. Saya akan pergi ke depan dan melakukan make hello. Dan lagi sekarang anda lihat buat adalah menunjukkan anda lagi urutan arahan bahawa itu lakukan kerana kami telah pra-konfigurasi dengan cara itu, tetapi kita perlu bimbang untuk sekarang apa yang ia lakukan yang lain daripada menyusun dot mengurangkan hello, hello dunia. Apa yang salah? Yeah. PENONTON: [didengar] DAVID J. MALAN: Ya. Jadi, kesilapan noobie. Saya melihat ini adalah super halus, tetapi asterisk di sini, dalam tab, hanya bermakna anda tidak menyelamatkan ia, dan pelayar dan program lain melakukan ini kadang-kadang. Jadi kawalan s atau perintah Foto harus menyimpannya. Sekarang mari saya pergi ke hadapan lari semula program ini. Recompiled. Betul, jadi ia adalah satu proses pelbagai langkah. Tiada seorang pun daripada yang amat kompleks, tetapi bila-bila masa kita menukar fail, kita perlu mengubah Hasilnya, yang sifar dan satu, dan slash dot hello. Wah. Jadi ini adalah sangat underwhelming bahawa kita hanya dicetak ini. Mari kita membuat perkara-perkara yang sedikit lebih dinamik, kini. Nah ternyata, yang suka Awal, C menyokong pembolehubah. Dan ternyata jika anda mahu untuk mempunyai pembolehubah yang menyimpan, bukan nombor seperti kita biasanya lakukan dengan Awal, tetapi seperti perkataan, atau frasa, atau nama, anda boleh menentukan pembolehubah sebagai jenis tali. Oleh itu, kita akan melihat lebih banyak ini dalam hanya seketika, tetapi ternyata C itu, dan banyak bahasa seperti itu, mempunyai jenis yang sangat khusus pembolehubah. Ia tidak sama seperti algebra, di mana anda mendapatkan x, y, dan z dan mereka adalah hanya sentiasa nombor, dalam bahasa pengaturcaraan anda boleh menyimpan nombor, anda boleh menyimpan watak individu, anda boleh menyimpan perkataan keseluruhan, anda boleh menyimpan imej keseluruhan, fail bunyi keseluruhan, dan sebagainya. Oleh itu, kita perlu menentukan apa jenis pembolehubah kita. Dan dengan konvensyen saya akan memanggil saya s berubah hanya kerana ia adalah ringkas, dan s bermaksud tali. Dan kemudian saya akan menyimpan dalam pembolehubah ini, hanya suka dengan Scratch apabila saya menggunakan blok yang ditetapkan, Saya akan menggunakan tugasan pengendali dalam C, yang baik cukup adalah sama menandatangani, tetapi tanda 'sama dengan melakukan ini. Ia bergerak sesuatu dari kanan ke sebelah kiri ungkapan. Jadi apa yang saya lakukan, perlu jelas dalam garis lima, yang saya telah diisytiharkan pembolehubah. Saya telah memberitahu komputer, memberi saya memori untuk berubah-ubah, memanggilnya s, dan tahu terlebih dahulu bahawa saya akan untuk meletakkan tali di dalamnya. Dan rentetan hanya satu jujukan aksara. Ia adalah satu perkataan, atau frasa, atau perenggan, tetapi ia adalah satu jujukan aksara. Ia bukan nombor. Apa tali aku akan menjadi meletakkan ke dalam pembolehubah itu? Well, nampaknya memetik unquote, "Hannah". Sekarang perhatikan corak yang yang baru muncul. Ada ungkapan tangan kiri. Ada ungkapan tangan kanan, dipisahkan oleh tanda yang sama. Dan hanya mengambil tekaan, jika yang tidak dikenali walau bagaimanapun, dengan apa yang koma bertitik lakukan. Apa yang ia mungkin lakukan untuk kita? Ya? PENONTON: [didengar] DAVID J. MALAN: Ya. Ia hanya menamatkan baris. Betul? Komputer mahu terus terang memberitahu, secara literal, apa yang perlu dilakukan. Seperti mentega kacang dan jeli sandwic contoh, jika anda tidak menentukan apa yang anda berniat, ia mungkin diserahkan kepada penghakiman atau kesilapan. Koma bertitik bermaksud, itu sahaja untuk arahan ini. Ia menjadi super tepat, dan ia satu perkara yang sangat mudah untuk meninggalkan. Oleh sebab itu program ini nampaknya tidak dapat bertindak apa-apa yang berbeza sehingga saya menjadikannya lebih dinamik. Jadi, daripada keras boleh saya sendiri nama, biarlah saya meletakkan nilai pemegang tempat. Dan ternyata itu, dan saya tahu ini dari setelah membaca dokumentasi, dan menggunakan fungsi selama bertahun-tahun, yang printf telah direka untuk menjadi dinamik. Anda tidak perlu tahu terlebih dahulu apa perkataan yang anda mahu dimasukkan ke dalam ia. Anda sebaliknya boleh mempunyai pemegang tempat, seperti peratus s, yang akan memberitahu komputer, meletakkan tali di sini. Yang rentetan kita mahu meletakkan di sana? Will ternyata bahawa antara kedua- kurungan, yang ingat, menanda input kepada fungsi, jika anda mempunyai dipisahkan oleh koma senarai perkara-perkara di sini, kita benar-benar lulus dalam pelbagai input kepada fungsi. Jadi hanya suka beberapa Scratch blok, anda mungkin tidak telah bermain dengan mereka untuk projek-projek anda belum atau sama sekali, beberapa blok calar mempunyai dua input. Dua kotak putih yang anda boleh menaip nombor atau perkataan-perkataan ke dalam. Jadi untuk tidak C mempunyai fungsi seperti printf yang boleh mengambil dua input. Dan sekali lagi, koma ini yang memisahkan mereka. Jadi, dalam bahasa Inggeris, sekali lagi walaupun anda tidak pernah diprogramkan sebelum ini, oleh yang printf logik adalah fungsi, mengambil masa dua input, satu daripadanya adalah pemegang tempat, apa yang anda akan berharap printf akan melakukan dengan input ini? Ia akan bertanya khabar Hana, mudah-mudahan. Jadi untuk melakukan ini kita perlu untuk menyimpannya. Saya akan zum keluar. Saya akan kembali ke sini dan berkata, membuat hello masuk. Oh. Sesuatu yang salah, dan benar-benar ini agak menggalakkan. Saya mempunyai enam baris kod dan seperti 12 baris kesilapan. Jadi, mengalu-alukan ini. Jadi apa yang berlaku di sini? Jadi peraturan yang terbaik ibu jari di sini, terutamanya apabila anda memulakan, tidak terganggu oleh barang-barang di bahagian bawah. Malah, saya sangat sengaja hanya menatal ke atas kerana selalu, komputer adalah tidak semua yang terang peranti. Ia akan keliru. Jika ia melihat satu perkara yang ia tidak memahami, ia mungkin kesilapan lain baris kod yang tidak betul, walaupun mereka berada betul-betul halus. Jadi, anda sentiasa mahu bekerja atas ke bawah melalui kesilapan. Dan diakui ini super sukar difahami pada masa ini. Ralat, penggunaan yang tidak diisytiharkan tali pengecam. Adakah saya maksudkan standard dalam? Tidak, saya bermaksud tali. Dan ia menghala ke arah, mungkin ia adalah kesilapan menaip. Jenis seperti, ejaan yang mendaftar masuk yang cara yang sangat geeky, tetapi sebab itu di sini, dan anda akan tahu ini hanya dengan amalan, adalah yang ternyata rentetan yang tidak wujud dalam C. Malah, C adalah bahasa terutamanya lama, dan ia adalah tahap yang sangat rendah, dan ia tidak banyak ciri-ciri yang mungkin anda membesar dengan jika anda mempunyai, sebenarnya, diprogramkan di Jawa, sebagai sebahagian daripada anda mempunyai, tetapi anda boleh mengajar sesuatu yang baru. Dan sesungguhnya kami telah melakukan CS50 ini, walaupun pada akhir semester, semua ini roda latihan akan telah diambil kira, apa yang kita lakukan dalam ini Pasangan pertama minggu pada mulanya adalah kita juga mempunyai anda termasuk CS50 dot h. Yang merupakan fail header. Lebih kepada yang di masa depan. Ia adalah satu fail yang mengandungi fungsi bahawa kita telah menulis untuk anda. Dan di antara fungsi-fungsi itu adalah fungsi untuk mendapatkan input daripada pengguna, seperti tali, dan nombor, dan nombor nyata, dan banyak lagi. Tetapi ia juga mempunyai jalan pintas beberapa. Ia mentakrifkan Boolean sebagai jenis data. C tidak mempunyai benar atau palsu. Tetapi kita boleh memberikan tanggapan benar atau salah melalui perpustakaan ini. Dan ia juga tidak mempunyai rentetan dibina pada sehingga kita termasuk baris ini. Jadi garis kod ini memberitahu pengkompil, hey, dilafaz, melihat dalam fail ini secara keseluruhannya sekumpulan kod yang CS50 telah menulis supaya sesiapa sahaja yang menggunakan fail ini boleh mengambil mudah ciri-ciri mereka telah ditambah. Jadi sekarang mari saya pergi ke hadapan dan mengosongkan skrin, dan jika ingin tahu saya hanya berkata kawalan l setiap kali untuk mengosongkan skrin, atau anda boleh menaip jelas. Saya hanya akan pergi ke hadapan sekarang dan Jenis membuat hello, dan semuanya berjalan dengan lancar. Masih output yang sukar difahami, tetapi ia bukan satu mesej yang salah. Sekarang jika saya lakukan dot mengurangkan hello, dan sebagai diketepikan, slash dot tidak biasa untuk sebahagian besar. Ia hanya bermakna, cara dot direktori semasa. Jadi, jika anda pernah menggunakan DOS, atau Linux, atau Unix anda telah melakukan sesuatu yang seperti cd dot dot, di mana dot dot bermakna pergi ke belakang dalam masa, atau pergi ke belakang, atau lebih tinggi dalam direktori anda. Dot hanya bermakna melihat di direktori semasa. Saya hendak hello, yang di sini. Dan sesungguhnya, kini ia berkata hello Hannah. Dan jika saya menukarnya lagi Maria, susun semula ia akan membuat hello, slash dot hello, program ini sentiasa berubah. Tetapi ini masih program cukup bodoh. Jika saya ingin menghantar program ini, atau memberikan kepada rakan, atau memberikan kepada Maria atau Hannah dalam hal ini, itulah denda. Saya boleh menyesuaikan untuk kedua-dua mereka, tetapi ia tidak akan menjadi dinamik. Mereka tidak boleh mengubahnya sekali ia disusun ke dalam orang-orang sifar dan satu. Jadi apa yang kita melakukan sesuatu yang lebih bijak? Bagaimana jika, bukannya keras pengekodan ke dalam program ini nama orang ini, bagaimana jika kita hanya mendapat tali pada permintaan? Jadi dalam erti kata lain, saya melakukan ini. Saya akan susun semula program ini. Dan biarlah saya zum masuk di bahagian bawah sekarang. Membuat hello dot mengurangkan hello. Sekarang tiada apa yang berlaku. Bolehkah kita mendapatkan sukarelawan cepat untuk membuat sesuatu yang berlaku? Naiklah. Siapa nama anda? PANCHO: Pancho. DAVID J. MALAN: Pacho? Naiklah. Sebaik sahaja anda mendapat di sini, ini adalah akan menjadi sangat underwhelming, tetapi ia lebih menarik daripada saya menaip. Jika anda ingin pergi ke depan dan menaip anda nama, saya membuat program ini hanya untuk anda. Hanya taip nama anda. Enter. Hebat. Baiklah, terima kasih banyak. PANCHO: Terima kasih banyak. DAVID J. MALAN: OK. [Tepuk tangan] Itu adalah sangat baik. Di sini anda Go. Apa yang kita lakukan? Oleh itu, kita akhirnya, sekurang-kurangnya, membuat program ini dinamik. Sekarang ia masih pasti oleh reka bentuk underwhelming, tetapi kita akhirnya mempunyai keupayaan Masuk untuk menulis kod terlebih dahulu, banyak seperti pengarang printf, dan kemudian secara dinamik menyesuaikan diri berdasarkan input kami diserahkan, sama ada dengan pengaturcara, atau oleh manusia yang sebenarnya berinteraksi dengan program ini. Jadi mari kita sebenarnya kini cuba untuk melakukan beberapa konstruk lain dan lihat jika kita tidak boleh membuat program diri mereka lebih canggih. Oleh itu, marilah kita pergi ke hadapan dan bukannya menulis satu ini dari awal, Saya akan pergi ke hari ini kod sumber, dan semua ini boleh didapati di padang golf ini laman web, dan anda boleh seret dan lepaskan ke dalam persekitaran anda sendiri datang Jumaat setelah masalah set 1 memberikan anda arahan, atau anda boleh melakukannya pada baris arahan sebagai baik, tetapi lebih untuk datang dalam p menetapkan 1. Mari kita lihat apa yang ada di dalam program ini di sini dipanggil, penambah dot c. Sekarang saya telah mengulas , tetapi apa yang baru? Pada pandangan pertama, apa garis kod adalah benar-benar baru? Mungkin tidak asasnya yang tidak dikenali sekarang. PENONTON: [didengar] DAVID J. MALAN: Ya, supaya int x sama mendapat n. Kami tidak pernah melihat mana-mana ini sebelum ini, tetapi int mungkin simbol untuk apa-apa berubah-ubah, [? dari?] integer. Jadi int untuk integer. Ia hanya menjadi lebih ringkas. x hanya sewenang-wenangnya. x dan y dan z masih cukup munasabah untuk nombor, tetapi secara umumnya kita akan menggunakan kata-kata sekali program kami mendapat lebih kompleks. Dapatkan int, sudah tentu, sama seperti mendapatkan tali, mungkin akan mendapatkan int dari pengguna, dan kemudian kita akan melakukan perkara yang sama dengan y. Dan nampaknya, walaupun ini baris terakhir, 24, kelihatan lebih kompleks, ia akan berkata jumlah ini dan itu adalah perkara ini lain. Dan notis peratus i mungkin menandakan apa? Apakah peranan peratus i nampaknya berkhidmat? Ia hanya ruang letak. Betul? Peratus s adalah untuk tali, peratus i adalah untuk integer. Terdapat akan menjadi peratus f untuk terapung nilai mata, yang hanya nombor yang mempunyai titik perpuluhan. Dengan kata lain, nombor nyata. Jadi mari kita sebenarnya menyusun ini program sebenar cepat dan jangan membuat penambah. Alamak. Peluang yang baik. Jadi perhatikan di sini, selama ini pengguna saya menamakan untuk akaun ini adalah jharvard. Saya dalam CS50 IDE, aka IDE50. Dan kini dengan warna biru di sini, adalah sebutan, tetapi dari alam sekitar, di mana saya berada. Dan sebenarnya, jika saya zum sehingga ke atas di sini, notis bahawa saya mempunyai IDE50 yang dan saya melihat perkataan ini, jika anda jenis memusingkan kepala anda ke tepi, ruang kerja. Secara ringkas, hakikat bahawa Saya melihat tilde slash ruang kerja bermakna bahawa dalam teks ini persekitaran arahan berdasarkan, Saya dalam bersamaan teks ini grafik folder di sini. Oleh itu, apabila saya lakukan slash dot penambah, ia berkata ada peraturan untuk membuat sasaran stop penambah. Saya tidak tahu apa yang bermakna, tetapi ia tidak baik untuk sebab-sebab tertentu. Tiada fail atau direktori seperti adalah lebih jelas. Di mana ia kemudian? Berdasarkan di mana saya klik untuk membuka fail yang lebih awal. Di mana ia mungkin? Ia mungkin dalam sumber salah satu w, untuk Rabu, dan saya dapat melihat ia, sesungguhnya, jika saya membuka bahawa sehingga. Terdapat penambah dot c, tetapi dalam persekitaran berasaskan teks ini, lagi, saya perlu menjadi super jelas. Jika saya mahu menukar direktori ke dalam sumber satu Rabu, saya perlu menaip, cd sumber ruang satu Rabu masukkan dan kini perubahan segera saya untuk memberikan saya petunjuk visual yang Saya, sesungguhnya, di tempat lain dalam persekitaran saya, tetapi sekarang saya boleh melakukan make penambah, ia seolah-olah untuk bekerja, dot mengurangkan penambah, memberi saya integer. One. Dua. Jumlah bagi satu dan dua adalah tiga. Tetapi jika saya tidak bekerjasama, mari kita lihat apa mendapatkan int tidak. Berikan saya integer. No. Cuba semula. OKAY. Halus. 50. 50. Baiklah. Jadi ia akhirnya bekerjasama. Dan itu sebahagian daripada fungsi yang fungsi-fungsi ini boleh telah terbina dalam untuk anda. Jadi di dalam pelaksanaan untuk mendapatkan int, apa pengaturcaraan membina dari minggu lepas mungkin dalam ada untuk memaksa tingkah laku ini daripada cuba semula, cuba semula, cuba semula? Ya, ada mungkin beberapa jenis gelung. Ia akan kelihatan sintaksis berbeza daripada blok Scratch, tetapi itu memang apa yang di dalam fail. Dan dalam masa beberapa minggu kita akan sebenarnya melihat perpustakaan CS50 apa yang di dalam, tetapi ada gelung mengenakan tepat. Mari kita bermain sedikit bodoh permainan di sini dengan fail ini. Keadaan sifar dot c. Kami hanya akan umum mula mengira pada sifar. Dan saya terus menatal lalu beberapa perkara yang di atas. Dalam biru sini, yang ditanda dengan daripada bintang dan garis condong, Persekitaran yang program sebelum ini, apakah itu? Mengapa kita menjaga ponteng ke atasnya? Apa? PENONTON: Ia komen. DAVID J. MALAN: Ya. Ia hanya komen. Ini adalah komen untuk manusia untuk membaca, yang dalam kes ini, memberitahu kita apa nama fail adalah, yang menulisnya, dan apa yang tidak, supaya anda tidak perlu untuk membaca kod di untuk mengetahui apa yang fail ini adalah semua tentang. Ia hanya penerangan, tetapi fungsi itu tidak relevan. Dan saya juga boleh memadamnya dari fail saya dan ia tidak memberi kesan. Garis berair adalah ini Dua di sini, sekarang. sah utama int adalah bersamaan daripada kita apabila bendera hijau diklik, jadi kita akan meninggalkan yang menjadi untuk hari ini, dan kami akan kembali, akhirnya, apa int dan tidak sah adalah, tetapi kini, melihat apa yang saya lakukan di sini juga, anda boleh juga, jika anda mempunyai yang selaras komen, jika anda mempunyai yang fikir anda ingin berkongsi mengenai garis tertentu kod, konvensyen di C adalah untuk melakukan slash slash, dan kemudian Beberapa fakta yang ringkas, tidak hukuman penuh, umumnya tidak perenggan, yang hanya menjelaskan kepada anda, atau anda TF, atau pembaca atau rakan-rakan lain, apa kod anda lakukan. Jadi, daripada perlu melihat pada ini dan membuat kesimpulan dari talian sembilan dan 10, apa yang ini lakukan, selaras lapan Saya hanya memberi komen kepada meminta pengguna untuk integer, maka saya tidak perlu berfikir terlalu keras tentang apa garis sembilan dan 10 berada. Saya hanya tahu bahawa itulah yang kolektif yang mereka lakukan. Bagaimana? Nah, di sini prompt. Berikut adalah mendapat int itu. Dan berdasarkan sebelumnya tingkah laku, ia seolah-olah seperti mendapatkan int pintar yang cukup untuk memastikan bahawa manusia yang bekerjasama dan memberikan integer. Tetapi kita lihat sekarang ini. Dan ini mengingatkan Scratch. Saya mengaku bahawa saya menganalisis input pengguna, tetapi agak tidak tepat. Dan ini nampaknya dalam C adalah bagaimana kita menyatakan jika lain, cawangan, garpu di jalan raya, tetapi saya mengatakan agak tidak tepat. Apa yang ada pepijat dalam program ini? Tentang lagi menyokong? Yeah. PENONTON: [didengar] sifar. DAVID J. MALAN: Ya. Jadi, jika saya menaip sifar, mari kita mempertimbangkan betul-betul kes kes, atau sudut, jika anda akan. Jadi, jika saya menaip sifar, yang mana satu blok akan nampaknya merebutnya? Jika atau lain? Yang lain, dan ia akan berkata, anda pilih nombor negatif. Dan sesungguhnya, sifar tidak sepatutnya positif atau negatif, dan sebagainya yang akan tersilap. Itu akan menjadi bug. Jadi bagaimana kita boleh menetapkan ini? Seseorang yang tidak pernah diprogramkan sebelum ini? Adakah anda want-- PENONTON: [didengar] DAVID J. MALAN: Menarik balik? PENONTON: [didengar] DAVID J. MALAN: Oh, anda ada? Seseorang yang tidak pernah diprogramkan sebelum ini. Ingin mencuba tangan anda di ini, dalam baju merah? Naiklah. Oh yeah, datang ke atas, jika anda tidak keberatan. Jadi tidak pernah diprogramkan sebelum ini, apa nama anda? LAUREN Lauren. DAVID J. MALAN: Lauren, baiklah. Jadi pepijat ini untuk kita. Anda tidak dilihat C, mungkin, dan mungkin tiada bahasa lain. Jadi membaiki program ini untuk kita. Gembira dapat bertemu dengan ya. Tiada tekanan. LAUREN: Ya. DAVID J. MALAN: Tetapi sekali lagi, jika ini berjudi berjalan mengikut perancangan, bawa pulang di sini akan berkenaan, hanya sekali lagi, untuk memulakan notis corak dan membuat kesimpulan dari sintaks yang sedia ada bagaimana lagi anda mungkin menyatakan diri sendiri, pun tidak bertujuan, untuk untuk menangkap beberapa senario tambahan. Oleh itu, kita katakan lagi jika. printf, baik. Dan perhatikan dengan CS50 IDE, dan IDE frankly-- bermaksud Bersepadu Persekitaran Pembangunan. Ia hanya satu cara mewah untuk mengatakan program yang membantu program anda. Ia tidak mesra pengguna perkara seperti apabila anda menaip satu kurungan, ia secara automatik memberikan anda yang lain. Anggapan adalah bahawa anda berada akhirnya akan mahu untuk menaip itu, dan ia juga melakukannya dengan sebut harga. Jadi saya suka talian 23. 99% daripada perjalanan di sana. Seseorang mahu temurun dengan tip? Saya mendengar koma bertitik daripada penonton. Yang baik. Jadi yang melengkapkan itu. Dan sekarang, saya hanya mempunyai sedikit kebingungan dengan garis 21. Bagaimana kita ingin menyatakan ini? Apakah soalan yang kita mahu untuk bertanya, pendapat anda? Jadi sebelum kita bertanya soalan itu, jika n lebih besar daripada sifar, melakukan ini. Yang lain, berbuat demikian. Oleh itu, kita perlu memilih soalan untuk bertanya di sini. PENONTON: [didengar] DAVID J. MALAN: Baik. Jadi, jika n sama dengan sifar. Sangat baik. Jadi mari kita berhenti seketika di sini. Terima kasih banyak untuk menempuh ini. Biar saya memberi anda sedikit baik berhak bola tekanan, mungkin di sana. Oleh itu, kita sudah hampir. Malah, Lauren, jika anda tidak fikiran, saya membuat satu tweak sini, hanya untuk menjadi konsisten walaupun dengan apa yang kita lihat di Awal, apa saya mahu lakukan dengan garis 21 dan 24, hanya lagi berdasarkan bagaimana kita melakukan ini dalam Scratch, mungkin? PENONTON: bergerak ke atas. DAVID J. MALAN: Yeah, bergerak ke atas. Jadi keadaan pun, ketiga, atau keempat, atau kelima, atau cawangan akhir, tentulah datang selepas itu, dan itu hanya oleh konvensyen, hanya kerana jika anda akan. Jadi, saya perlu membuat tweak ini. Dan saya perlu meletakkan saya kerinting ke sini. Dan kini, program ini akan menyusun. Kami begitu rapat, tetapi ada bug sangat, sangat halus. Mari kita lihat apa yang berlaku. Pertama, izinkan saya pergi ke hadapan dan zum keluar. Saya akan pergi ke depan dan menaip membuat keadaan sifar. Oh, saya berbohong. Sekarang pengkompil adalah sebenarnya cukup bijak. Dan saya tidak benar-benar memahami ia adalah mesej ralat. Menggunakan hasil tugasan sebagai syarat tanpa kurungan, nampaknya tidak baik. Tetapi apa maksudnya? Baik lagi, mencari pola kod yang kita lihat sebelum ini, apa yang garis 17 sebenarnya lakukan, walaupun Lauren bertujuan sedikit sebaliknya? Yeah. PENONTON: [didengar] DAVID J. MALAN: Ya. Jadi ingat tanda yang sama, nampaknya seperti yang kita telah digunakan sebelum ini, adalah tidak sama. Tugasan, dari kanan ke kiri. Jadi beratur 17 pada masa ini adalah suatu keadaan, dan ia melaksanakan kod di dalam kurungan, tetapi apabila kod yang melaksanakan, apa yang sedang berlaku kepada nilai sifar? Apa yang berlaku kepada nilai n? Menjadi sifar. Jadi, jika n menjadi sifar, dan sekali lagi, seperti minggu lalu, kita biasanya berkata sifar yang adalah palsu dan salah satu adalah benar, atau ya adalah salah dan tidak adalah sifar. Jadi yang benar dan palsu, satu dan 0. Jika n sebagai garis 17 telah diberi nilai 0, adalah sifar benar? No. Mengikut definisi, sifar adalah palsu. Itulah konvensyen kami akan berpaut kepada masa depan. Begitu juga garis 18, 19, dan 20 pernah memohon sekarang, secara logik? Mereka tidak boleh. Oleh itu, kita ditanya soalan tetapi tidak cukup tepat, dan anda tidak akan tahu ini melainkan anda telah melihat ia, penyelesaian dalam C adalah apabila anda mahu untuk menyatakan kesaksamaan, anda mengatakan sama sama. Jadi tanda sama sudah digunakan melalui penyerahhakan, dari kanan ke kiri. Sama sama cara sama. Dan jika anda benar-benar mahu fikiran anda untuk bengkok, dalam JavaScript dan PHP, ada sama sama sama, yang maksud sesuatu yang berlainan sama sekali, tetapi kita akan mendapat itu tidak lama lagi. Jadi ini adalah satu penyelesaian yang mudah, tetapi sedar sangat mudah untuk membuat kesilapan ini, dan kemudian tertanya-tanya dan perjuangan untuk minit, jika tidak satu jam, mengapa kod saya tidak melaksanakan kerana saya bercadang? Ini kerana anda tidak memberitahu ia dengan tepat apa yang anda maksudkan. Jadi yang hampir sempurna, dan ia adalah besar yang kita terjumpa dua sedikit sesuatu kerana sekarang jika kita menetapkan mereka, dan saya membuat keadaan sifar dot mengurangkan keadaan sifar, Saya ingin integer sila. Mari kita lihat. No. Ia akan memaksa saya untuk melakukannya. Jadi 42. Saya mengambil nombor positif. Jadi sekarang bagaimana saya membuktikan program ini betul? Jika anda ahli matematik, anda tidak boleh benar-benar membuktikan ini melalui percubaan dan kesilapan, bukan? Anda boleh bukti bukan sahaja oleh Sebagai contoh, tetapi sekurang-kurangnya sebagai seorang programmer kita tidak akan cuba untuk membuktikan buat masa ini bahawa ini adalah benar-benar betul, tetapi perlu saya mungkin menguji beberapa kes wakil. Saya telah diuji 42. Saya boleh menguji 43. Saya boleh menguji 44. Ujian 45. Betul? Tetapi saya boleh melakukan ini masa yang lama. Apa yang akan menjadi lebih banyak kes-kes yang menarik untuk mencuba? PENONTON: [didengar] sifar. DAVID J. MALAN: Jadi sifar. Sudah tentu. Dan baik, kami telah mendapat ia masa ini, terima kasih kepada kod baru Lauren. Apa yang satu lagi kes yang baik untuk mencuba? PENONTON: satu negatif. DAVID J. MALAN: satu negatif, dan mungkin sesuatu yang lebih besar, jadi mungkin negatif 42, tetapi secara umum, apabila menguji program anda bergerak ke hadapan, anda berada akan mahu berfikir kepada diri sendiri, seperti apa yang adalah kes asas yang berbeza. Dan saya berani mengatakan kes negatif, kes positif, dan kes sifar cukup banyak pusingan ini keluar. Mari kita lihat varian walaupun ini. Syarat satu. Ini adalah penyelesaian yang betul di sini, supaya anda akan melihat dua dan dalam talian, jika anda berjalan melalui walkthroughs, akan secara amnya kenaikan langkah demi langkah ini sehingga kita mendapatkan tepat pendekatan yang betul. Bagaimana jika kita mahu bertanya dua soalan pada satu masa? Biar saya membuka ini sebaliknya. Bukan suis, atas sebab-sebab kita akan melihat masa yang lain. Apa yang baru sintaksis di sini? Saya sedang bermain permainan yang mana komputer memberitahu saya, memberikan saya integer antara satu hingga 10, dan kemudian saya berdasarkan input pengguna. Dalam bahasa Inggeris, berdasarkan kod yang anda lihat di sini biru, apa yang program ini buat? PENONTON: [didengar] dipilih satu jumlah yang besar atau kecil. DAVID J. MALAN: Ya. Ia hanya menghakimi sama ada Saya memilih yang besar, atau sederhana, atau sebilangan kecil berdasarkan yang sangat definisi sewenang-wenangnya kecil, sederhana, dan besar di sini, tetapi notis sintaks itulah baru ini. Tidak ada kurang daripada int atau sama dengan menandatangani, atau lebih besar daripada atau sama dengan, di mana seseorang itu berbanding dengan yang lain, yang anda dapat meluahkan dalam seperti Microsoft Word. Jadi, dalam bahasa pengaturcaraan anda biasanya hanya melakukan dua watak, satu demi satu. Dan apakah ini mungkin mewakili, Ampersand Ampersand. PENONTON: [didengar] DAVID J. MALAN: Ya. Ia hanya bermakna dan kerana ia ternyata bahawa pengarang C menggunakan Ampersand tunggal, yang anda sangka akan menjadi sempurna untuk tanggapan daripada dan, sudah digunakan, Ampersand supaya Ampersand sebenarnya menangkap mana-mana yang kita benar-benar mahu. Jadi mari kita kini tersandung di seluruh dua perkara. Biar saya pergi ke hadapan dan membuka satu. Sesuatu yang sedikit membimbangkan. Ketakpersisan dot c. Biar saya memperkenalkan dua perkara di sini. Satu, notis yang boleh kita lakukan matematik, kerana sama seperti sebelum ini apabila kita lakukan tambah dua nombor, x dan y. Apa yang program ini nampaknya buat? Saya tidak mengulas lagi, dan saya telah diperkenalkan peratus f, tetapi saya cepat katakan sebelum ini peratus f bermakna titik terapung nilai, yang merupakan nombor nyata. Sesuatu dengan perpuluhan titik, yang tidak integer. Apa yang anda fikir program ini adalah cuba untuk menunjukkan saya di skrin? Ya? PENONTON: Hasil satu dari 10. DAVID J. MALAN: Ya. Apakah hasil daripada satu dibahagikan dengan 10. Betul, kerana anda semua mempunyai mungkin membesar mengetahui bahawa satu dari 10 adalah apa? Ya, ia hanya 1/10 atau 0.1. Betul? Jadi mari kita lihat apa ini sebenarnya. Jadi biarlah saya pergi ke hadapan dan menyimpan ini. Biar saya pergi ke sini. Membuat ketakpersisan dot slash ketakpersisan, dan notis, juga, dalam persekitaran yang Linux, anda tidak perlu menaip ketakpersisan dan mengambil sepanjang hari. Ia secara amnya, jika anda memukul Tab, ia akan selesai pemikiran anda untuk anda, berdasarkan perkataan yang terdapat di direktori semasa. OKAY. Jadi, anda adalah betul. Satu dibahagikan dengan 10 adalah, sebenarnya, 0.1. Tetapi saya sedikit ingin tahu. Dan ternyata printf menyokong beberapa ciri-ciri di mana anda boleh menentukan lebih daripada nombor lalai mata perpuluhan. Jadi, jika saya mahu melihat 10 perpuluhan mata yang boleh saya lakukan peratus, untuk simbol pemegang tempat, dot 10 untuk, memberi saya 10 titik perpuluhan, dan kemudian masih titik terapung nilai, dan, sebagai diketepikan, apa yang backslash ini n nampaknya kita terus gunakan? Ternyata ia adalah satu Simbol bagi barisan baru. Ia adalah cara yang sangat jelas untuk mengatakan kepada komputer, menggerakkan kursor ke depan talian selepas anda selesai. Dan kita akan lihat apa yang berlaku apabila kita tidak berbuat demikian. Biar saya susun semula membuat ketakpersisan. Sekarang dot mengurangkan ketakpersisan. OKAY. Masih betul. Satu dibahagikan dengan 10. Sekarang saya mendapat sedikit ingin tahu, walaupun. Bagaimana jika saya melihat 20 perpuluhan menunjukkan, susun semula, jalankan lagi, dan sebagai diketepikan untuk kelajuan, anda juga boleh menggunakan atas dan ke bawah anak panah untuk anda tatal melalui sejarah anda, supaya anda tidak perlu menyimpan penaipan semula arahan ini, masukkan. Huh. Saya tidak mengetahui bahawa di sekolah rendah. Baiklah, jadi biarlah saya melihat seperti 29 tempat-tempat keluar. Mungkin ia hanya kebetulan. Mungkin komputer saya bertindak pelik. Itu bukan sesuatu perkara, bukan? Ia melakukan sesuatu secara berketentuan. Oleh itu, ketakpersisan. OK, itu merosakkan. Jadi apa yang sedang berlaku? Jadi nampaknya anda guru telah berbohong kepada anda semua kali ini untuk sebab-sebab yang kita akan lihat tidak lama lagi. Tetapi mari kita berakhir dengan satu program lain. Ini adalah program kecil seseorang yang menulis beberapa tahun yang lalu, dan ia sebenarnya sebahagian daripada pertandingan. Tiada siapa yang sebenarnya menulis kod seperti ini, dan jika anda lakukan, ini adalah segi gaya masalah. Tetapi orang melakukan ini untuk hak bercakap besar. Untuk menulis yang paling mengelirukan program mencari yang tetap melakukan sesuatu yang menarik. Dan komen yang saya fikir kita akan meninggalkan pada hari ini, sebelum Colton memainkan kami di sini, adalah untuk menjalankan program ini, yang, walaupun dalam hanya menggunakan C dalam ini berasaskan teks alam sekitar, memberikan kita ini. Keparat. [Ketawa] Bersedia. [Didengar] c dash l m. Anda akan melihat ajaib mantera bahawa kita akan melihat tidak lama lagi. [Didengar] Baiklah. Dan sekarang anda juga boleh melakukan perkara-perkara seperti ini. Itu sahaja. Untuk CS50 kita akan melihat anda pada hari Jumaat. [Bermain muzik] [Tepuk tangan]