DAVID J. MALAN: Jadi ini adalah CS50. Dan ini adalah CS50 sendiri Colton Ogden, lebih daripada siapa yang muzik yang anda boleh memuat turun sekurang-soundcloud.com/cs50. Jadi hari ini kita memberi tumpuan lebih-lebih pada seni pengaturcaraan. Dan kita mengambil di mana kita tinggal off minggu lepas, memberi tumpuan pada Scratch, yang ini bahasa pengaturcaraan grafik. Dan mengambil perkara-perkara ke tahap yang lebih rendah, menggunakan pengaturcaraan yang lebih tradisional bahasa yang dikenali sebagai C. Tetapi sepanjang jalan, menyedari bahawa idea-idea yang sama kita bercakap tentang Jumaat lepas akan berulang bukan sahaja di ini bahasa C, tetapi dalam kebanyakan setiap lain yang kita lihat pada semester ini. Oleh itu, kita dipanggil perkara ini di sini apa yang masa lalu? Ini mewakili satu kenyataan. Oleh itu, kita dipanggil ini satu kenyataan. Dan ia sesuatu. Ia arahan bahawa komputer atau Scratch mungkin melaksanakan. Dan seterusnya, mari kita juga mula memanggil sesuatu seperti ini fungsi, atas sebab-sebab tidak lama lagi kita akan melihat. Sementara itu, kami nampak perkara-perkara seperti ini. Dan ini secara umumnya dikenali sebagai apa yang membina? PENONTON: Loop. DAVID J. MALAN: Jadi gelung. Jadi cukup mudah. Ia benar-benar melakukan apa yang ia berkata. Dan dalam Scratch, jika anda mahu menjejalkan lebih kepingan teka-teki di sana, sekeping akan berkembang untuk memuatkannya. Dan kita akan lihat dalam C yang kita boleh melakukan perkara yang sama. Satu lagi jenis gelung, walaupun, dalam Scratch mungkin selama-lamanya, atau ada apa-apa bilangan pendekatan lain. Tetapi mari kita lebih rupa generalist, dengan muka yang itu mungkin agak biasa, di gelung amnya. Mark Zuckerberg: Satu perkara yang komputer adalah benar-benar pandai adalah mengulangi arahan. Seperti seseorang, anda akan mendapat benar-benar bosan jika anda terpaksa melakukan perkara yang sama banyak kali berturut-turut. Tetapi komputer boleh melakukan perkara yang sama berjuta-juta atau malah berbilion-bilion kali, dan tidak bosan, dan dapat untuk membawa keluar yang benar-benar baik. Sebagai contoh, jika saya mahu mengucapkan di Facebook hari jadi gembira dengan menghantar e-mel, ia mungkin mengambil masa saya lebih daripada satu abad untuk benar-benar menulis semua orang-orang e-mel kepada semua orang. Tetapi dengan hanya beberapa baris kod, saya boleh mempunyai sistem yang menghantar e-mel kepada semua orang di Facebook yang ingin mereka selamat ulang tahun. Jadi itulah yang gelung dan kenapa mereka berharga dan sesuatu bahawa komputer boleh lakukan dengan baik. DAVID J. MALAN: Jadi, jika anda telah penerima beberapa CS50 ini dan Ruang Dropbox ini lewat, yang sebenarnya dengan tepat apa yang kita lakukan, menggunakan kod yang seperti itu. Kami pada dasarnya mempunyai besar spreadsheet ke dalam mana orang telah memasukkan mereka nama dan alamat e-mel. Dan kita telah menulis sedikit kecil kod yang boleh iterate ke atas alamat dan meludah keluar alamat unik kes sesiapa dikemukakan beberapa kali. Dan selepas itu, kami menghantar e-mel automatik dari bot CS50 ini, termasuk kod kupon. Sekarang kita juga melihat ini membina masa lalu. Dan ini adalah tertentu contoh apa? Jadi, ya, satu ungkapan Boolean. Dan bentuk yang dimaksudkan untuk menangkap itu juga. Semua soalan-soalan daripada membentuk benar atau palsu dalam Scratch akan melihat sesuatu yang kecil seperti ini. Dan kita panggil ini ungkapan Boolean. Itu memang benar atau palsu, ya atau tidak. Ia adalah satu cara untuk menjawab soalan. Dan Sementara itu anda boleh menggunakan Boolean ini ungkapan di dalam membina seperti ini, yang mana satu kursus adalah syarat-syarat atau cawangan, pepatah garpu di jalan raya. Dan mereka boleh melihat bukan sahaja seperti ini, tetapi mereka juga boleh telah elses berkaitan dengan mereka. Dan anda sebenarnya boleh mempunyai cara yang tiga garpu di jalan atau empat cara garpu di jalan, hanya dengan bersarang perkara-perkara ini, kerana anda akan melihat dalam Scratch jika anda tidak sudah. Dan seperti yang anda boleh lakukan dalam C juga. Mari kita generalist lain melihat alumnist satu, juga, yang mungkin membentangkan pendekatan yang berbeza kepada perkara-perkara ini dipanggil keadaan. RANG UNDANG-UNDANG PINTU: Orang membuat keputusan setiap hari. Sebagai contoh, sebelum anda pergi ke luar anda jenis mempunyai jika kenyataan yang mengatakan, jika hari hujan maka saya perlu mendapatkan jaket saya. Dan komputer yang luar biasa apabila anda memutuskan orang-orang jenis kenyataan, bahawa mereka pasti boleh melaksanakan perkara-perkara pada kelajuan luar biasa. Dan program komputer benar-benar adalah sedikit matematik dan beberapa jika kenyataan di mana mendapat keputusan dibuat. DAVID J. MALAN: Jadi sebagai yang anda tahu, ia adalah orang seperti Bill Gates, Paul Allen, dan lain-lain yang benar-benar bermula di yang dikenali sebagai komputer peribadi revolusi beberapa tahun lalu. Saya fikir, sebelum kita menyelam ke dalam beberapa administrivia, kita akan mengaitkan cerita yang dari Albuquerque, New Mexico Muzium Sejarah Semula Jadi dan sains di mana sebahagian daripada Bill Gates dan cerita-cerita yang paling awal Paul Allen diceritakan bagaimana kita ada sekarang PC hari ini dan Mac dan banyak lagi. Untuk ini, walaupun, kita perlu dua sukarelawan yang mempunyai suara riwayat yang sangat baik untuk membaca skrip yang kuat. Baiklah, bagaimana pula di belakang sana. Marilah naik. Dan bagaimana pula di hadapan di sini. Ayuh ke bawah. Mengambil tempat anda di sini. Seperti yang anda semua datang, pasangan pengumuman pentadbiran. sectioning, proses memilih seksyen, akan mula ini Rabu hingga Jumaat. Lebih kepada yang akan datang Rabu di kuliah. Bahagian Super, sementara itu, adalah sesuatu yang kami tawarkan minggu depan di mana seluruh kelas dijemput untuk mengambil bahagian dalam skala yang agak besar bahagian, satu lagi selesa, satu kurang selesa. Dan kami akan mengumumkan butir-butir yang itu, juga, pada minggu ini. Bahagian Sementara itu, diri mereka sendiri, akan mula pada minggu tiga kursus ini, indeks sifar, yang bermaksud mereka adalah beberapa minggu keluar. Jadi tidak perlu bimbang. Anda belum terlepas apa-apa sepanjang garis. Sementara itu dalam masa yang sama, jika anda mempunyai sebarang pertanyaan pentadbiran, e-mel kepada diri saya sendiri dan Devon dan Gabe dan Rob di alamat ini di sini. Akhir sekali, masalah yang dinyatakan 0 adalah, sudah tentu, keluar. Anda mungkin sedar ia di laman web kursus ini. Ia harus menyediakan anda dengan semua jawapan kepada soalan-soalan anda mungkin ada di sepanjang jalan untuk bermula dengan masalah yang ditetapkan. Tetapi jika anda mendapati diri anda memerlukan bantuan, dengan segala cara menghadiri waktu pejabat, Isnin, Selasa, Rabu, Khamis minggu ini di sebelah petang dalam empat dewan makan. Lihat URL yang ada untuk butir-butir di mana waktu pejabat hendaklah. Sekarang Mari kita bertemu kami dua orang tetamu di sini hari ini. Apa nama anda? JAY PAUL: Jay Paul. DAVID J. MALAN: Jay Paul, baik untuk bertemu dengan kamu. Hikari: Hikari. DAVID J. MALAN: Hikari? Hikari: Hikari. DAVID J. MALAN: Hikari. Nice untuk bertemu dengan kamu juga. Jay Paul dan Hikari ada dalam hadapan mereka pada muzik ini berdiri dua skrip yang saya dicetak keluar pagi ini dari New Mexico Muzium Sejarah Semula Jadi dan Sains. Dan apa yang saya fikir Saya lakukan pada overhed adalah mengiringi bacaan anda daripada skrip dan sejarah ini dengan sesetengah imej visual, tiada kejutan. Dan apa yang saya lakukan terlebih dahulu adalah prehighlight pada skrip anda apa yang anda perlu membaca, dan apa yang perlu dibaca. Dan kita akan dasarnya perenggan hanya alternatif. Jadi ia sama seperti anda mungkin telah dilakukan di dalam kelas bahasa Inggeris. Itu benar-benar memaksa penonton mempercayai cerita anda di sini. Hendaklah kita? Jadi cerita di sini adalah, kita mempunyai BASIC, dan ia bermula di Cambridge. JAY PAUL: Ia adalah musim sejuk, 1974, di Cambridge, Massachusetts di mana musim sejuk boleh menjadi sejuk. A berjanggut, berambut panjang keciciran kolej bernama Paul Allen telah drudging di Harvard Square, diserap dalam fikirannya. Keasyikan utama beliau pada hari-hari ialah bagaimana untuk mendapatkan kawannya, Bill Gates, untuk berhenti sekolah dan pergi ke dalam perniagaan dengan dia. Hikari: Dua sudah pergi melalui beberapa usaha perniagaan bersama-sama, bermula di Lakeside sekolah di Seattle di mana mereka dibayar dalam masa komputer bebas untuk menguji komputer PDP-10 pada satu masa tempatan syarikat perkongsian. Pelan yang paling baru-baru ini telah berhenti sekolah dan membentuk sebuah syarikat perisian. Allen telah meninggalkan Washington State University. Tetapi pada saat-saat akhir, Gates memutuskan untuk melekat dengan Harvard. JAY PAUL: Hari itu, menyeberangi Harvard Square, Allen dikesan Januari, 1975 isu Popular Elektronik dengan tajuk bumi berhenti, Pertama Komputer mini Kit dunia untuk menyaingi Model Komersial. Di bawah tajuk utama adalah gambar kotak kecil dihiasi dengan lampu dan suis. Ia dipanggil MITS Altair 8800. Dan Allen tahu ini adalah apa yang beliau telah cari. Hikari: Hari di dalam perbincangan diikuti. Allen dan Gates memahami kepentingan Altair. Mereka telah bercakap sering mengenai mikropemproses dan menunggu untuk melihat apa yang akan dilakukan dengan mereka. Sekarang terdapat kit minicomputer pada sampul Elektronik Popular. Ia nampaknya tidak mempunyai perisian lagi. Mereka membayangkan sebuah negara yang pengaturcara turun di MITS. Dan mereka yang dipanggil Ed Roberts, ketua syarikat, mendakwa mempunyai versi yang Bahasa pengaturcaraan BASIC hampir siap untuk Altair. Mereka tidak. Dan Roberts mesti tahu mereka tidak. Beliau mendapat 10 panggilan sehari dari orang yang mempunyai ASAS yang hampir siap. Dan jawapan stok adalah, "Orang yang pertama yang menunjukkan dengan kerja yang ASAS mendapat kontrak. " JAY PAUL: Gates dan Allen tidak pernah menyaksikan Altair. Mereka tidak pernah melihat Intel 8080 mikropemproses di tengah-tengah Altair. Tetapi beberapa tahun sebelum ini Allen telah menulis satu program yang pada komputer kerangka utama yang dicontohi operasi yang Intel sebelumnya mikropemproses. Dan kali ini mereka akan melakukan perkara yang sama. Hikari: Dengan Intel 8080 manual di sisinya, Allen duduk di Komputer Harvard PDP-10 dan menulis emulator dan perisian alat yang diperlukan untuk melakukan pengaturcaraan. Sementara itu Gates berhenti pergi untuk kelas dan menumpukan dirinya untuk mereka bentuk BASIC, menggunakan setiap helah dia tahu untuk mendapatkan saiz turun di bawah 4 kilobait. JAY PAUL: Out di Albuquerque, Ed Roberts mendapat panggilan daripada Gates meminta butiran mengenai bagaimana Altair mengendalikan rutin tertentu. Tiada siapa yang pernah meminta sebelum. Dan Roberts mula mendapat berminat. Hikari: Dengan pembangunan alat dan reka bentuk siap, Gates dan Allen menulis kod pada PDP-10, mendaftar pelajar Harvard yang lain, Monte Davidoff, untuk menulis rutin matematik. Selepas malam yang akhir pengaturcaraan, Allen menaiki kapal terbang untuk menyampaikan ASAS untuk MITS. Beliau menghabiskan pesawat mengharungi membimbangkan. Dan kembali di Cambridge Gates telah membimbangkan. Mereka telah diuji dan ASAS ia telah bekerja pada emulator. Tetapi bagaimana jika emulator itu salah? JAY PAUL: Sebagai pesawat mendekati Albuquerque, Allen menyedari bahawa mereka BASIC, kini kemas terkandung pada roll kecil menumbuk pita kertas, akan tidak berguna tanpa yang berasingan program, yang disebut loader, bahawa akan memberitahu bagaimana Altair membaca makhluk pita kertas dimasukkan ke dalam mesin teletaip itu. Dia mengeluarkan buku nota dan cepat menulis sesuatu ke bawah program loader dalam bahasa Assembly, maka secara manual yang diterjemahkan ke dalam 1s dan 0-an Altair akan memahami. Hikari: Allen menjangkakan bersih, kecil, syarikat berteknologi tinggi dikendalikan oleh lelaki dalam saman perniagaan. Jadi dia terkejut apabila Roberts bertemu beliau di lapangan terbang kelihatan seperti ladang yang tangan. Roberts juga terkejut. Apabila dia menjatuhkan Harvard programmer di sebuah hotel mahal, Allen terpaksa mengaku bahawa dia tidak mampu bilik. JAY PAUL: MITS, sendiri, adalah terletak di sebuah pusat membeli-belah jalur berdebu. Di dalam pada berantakan bangku kerja adalah Altair dimuatkan dengan 5 kilobait daripada memori dan dihubungkan dengan kabel untuk mesin teletaip. Roberts dan Ketua Jurutera, Rang Undang-Undang Yates, menunggu expectantly sebagai Allen ditoggel loader beliau program ke dalam Altair. Teletaip mula chugging kerana ia ditarik pita kertas melalui pembaca pita. Ia mengambil masa mungkin 15 minit untuk memuatkan program ini. Kemudian tiba-tiba teletaip yang dicetak memori yang segera, maka segera bersedia, dan Allen mula menaip ujian beberapa arahan. Untuk kekaguman semua orang, perisian bekerja. Terdapat pepijat, sudah tentu. Tetapi perkara utama ialah ia bekerja. Hikari: Kemudian, dalam perjalanan ke sebuah $ 3,00 makan tengah hari di ini Pancho, tawon yang terbang di tetingkap pickup trak dan disengat Allen pada lengan. Tetapi pada apa-apa yang mata boleh merosakkan mood. Yang kini mempunyai Altair BASIC, maka perisian komersil yang pertama untuk rumah komputer, yang dibuat oleh Paul Allen dan Bill Gates, melakukan perniagaan Microsoft. DAVID J. MALAN: Ramai terima kasih kepada kedua-dua pembaca kami. [Tepuk tangan] DAVID J. MALAN: Sekarang anda mempunyai pilihan anda, sebelum anda meninggalkan, sesuatu sparkly atau cahaya dalam dark-- oh, tunggu satu saat, wait-- sparkly dan cahaya di gajah gelap dari CS50 sendiri Cheng Gong. Hikari: Aw, terima kasih. DAVID J. MALAN: Semua betul, terima kasih banyak. [Tepuk tangan] DAVID J. MALAN: cerita itu benar. Ini adalah untuk mengatakan bahawa semua ini Mesin-mesin dan mudahnya kita menggunakannya sekarang dan mengambil untuk diberikan, benar-benar bermula di sini, hanya beberapa langkah dari teater sebenar ini. Dan kini hari ini, jika anda tidak, ini adalah Maxwell Dworkin, komputer bangunan sains, juga sekitar sudut. Dan di tingkat kedua ini bangunan tidak menggantung tiga halaman dari kod sumber asal yang Bill Gates dan Paul Allen menulis. Malah, jika anda menggunakan zum dalam anda boleh melihat bukan sahaja nama-nama mereka dalam Jenis asal, tetapi juga tandatangan mereka bahawa mereka yang dihiasi Beberapa tahun yang lalu apabila mereka last visited. Tetapi apa yang amat menarik tentang perkara ini adalah apa yang mereka ingin lakukan adalah untuk menulis program yang akan membolehkan orang lain untuk menulis program mereka sendiri. Pada masa yang semua ada dengan mesin Altair ini dibuat oleh MITS. Dan semua yang mereka perlukan adalah beberapa cara menjadikannya mudah untuk penggemar dan orang-orang suka kami di dalam bilik ini untuk benar-benar program bahawa tanpa semestinya memahami Kod pemasangan, atau mesin kod, atau Allah melarang, 0 dan 1s. Kami pengaturcara, seperti orang-orang di dalam bilik ini, kita mahu dapat untuk menyatakan diri kita lebih seperti kod pseudo walaupun ia adalah sedikit lebih nit cerewet daripada kita bercakap minggu lepas. Kami tidak mahu menulis kod seperti ini, yang melakukan Paul Allen dan Bill Gates. Kami, sebaliknya, mahu menulis kod yang kelihatan lebih mesra pengguna sedikit. Sekarang ini adalah bahasa yang dikenali sebagai BASIC. Dan nombor-nombor talian terdapat apa yang anda gunakan untuk hanya nombor baris kod bahawa anda menulis. Kita tidak perlu berbuat demikian hari ini. Tetapi anda boleh lihat di sini bagaimana PRINT "hello, dunia" sesungguhnya mungkin akan mencetak hanya itu. Dan jadi apa Rang Undang-Undang dan Paul lakukan ialah memberi kuasa kepada orang ramai untuk menulis kod seperti ini bukannya daripada-- jika anda lihat di sains komputer wall-- kod seperti ini. Malah, baru-baru ini CS50 mempunyai peluang untuk duduk dengan Profesor Harry Lewis dalam jabatan Sains Komputer, yang sebenarnya mengajar Rang Undang-Undang Gates beberapa tahun yang lalu, Dan berdiri di sini di hadapan tiga muka surat daripada petikan. Mari kita lihat. HARRY LEWIS: Apa yang ada di sini adalah penyenaraian sekeping awal perisian ditulis oleh Bill Gates dan Paul Allen, pengasas Microsoft. Jadi kod yang menarik kerana dua sebab. Pertama sekali, ia menjadi Produk pertama Microsoft, yang merupakan jurubahasa untuk bahasa pengaturcaraan BASIC. Dan kedua, ini adalah salah satu percubaan pertama untuk mewujudkan jurubahasa jadi biasa orang boleh menggunakan komputer peribadi. Jadi Bill Gates adalah seorang ijazah pertama di Harvard. Saya mula mengajar di Harvard pada tahun 1974. Ini dilakukan pada tahun 1975. Oleh itu, pada awal kerjayanya dan pada awal kerjaya saya. Saya sebenarnya diajar dalam Rang Undang-Undang kursus sekitar masa ini. Paul Allen bukan Harvard pelajar, tetapi dia telah sebuah sekolah tinggi rakan sekelas daripada Rang Undang-Undang Gates. Jika anda datang dan melihat pada penyenaraian itu, anda akan sebenarnya mencari satu pertiga nama, Monte Davidoff, yang merupakan rakan sekelas Gates ini di sini di Harvard. OK, jadi di sini adalah satu komen yang menarik di sini. Ia berkata "Dalam 4K boleh memadam punca kuasa dua tetapi untuk gelung masih harus bekerja. " OK, jadi apa yang bermakna adalah bahawa ada dua cara untuk menyusun program ini. Satu adalah untuk berjalan pada versi yang komputer Altair ini yang hanya mempunyai 4K kata-kata ingatan, 4,096 kata-kata ingatan. Tetapi versi yang besar mempunyai 8K. Dan jadi apa ini mengatakan adalah bahawa dalam versi yang 4K anda terpaksa padam beberapa kod untuk membuat ia patut. Dan salah satu perkara yang yang akan dihapuskan akan menjadi rutin punca kuasa dua. Tetapi nampaknya yang untuk gelung sekiranya masih bekerja walaupun anda menyusun turun hanya versi 4K bagi komputer. DAVID J. MALAN: Jadi salah satu tema, seperti yang kita akan melihat dalam bidang sains komputer, adalah tanggapan ini lapisan dan pengambilan, dan benar-benar berdiri di atas bahu daripada orang-orang yang telah datang sebelum kita, bukan tidak seperti beberapa Rang Undang-Undang Gates dan naratif Paul Allen di sini. Dan apa ini bermakna bahawa hari ini kita boleh mengambil diberikan bahawa perkara-perkara yang benar-benar lebih mudah bagi kita untuk menulis kod. Sesungguhnya kod, seperti yang kita katakan pada hari Jumaat, adalah lebih teknikal dikenali sebagai kod sumber. Dan ia English ini seperti sintaks yang lebih tepat dan lebih ditakrifkan dengan baik daripada sesuatu seperti kod pseudo, untuk yang tidak ada definisi formal. Dan hari ini apa yang kita akan untuk memberi tumpuan kepada adalah kod sumber yang kelihatan seperti ini, yang diakui pada pandangan pertama kelihatan benar-benar samar. Dan terus-terang, ia adalah cara yang lebih indah kompleks daripada program asas adalah. Semua program ini tidak, ingat, adalah apa yang kita katakan? Ia hanya mencetak "hello dunia." Namun melihat semua barangan yang kita perlukan untuk membalut di sekitar bahawa frasa yang sangat mudah. Tetapi tidak lama semua garisan-garisan dan lebih akan masuk akal lebih baik untuk anda. Dan aliran adalah seperti berikut. Apa yang kita perlukan ada di tangan kita adalah untuk mengambil kod, seperti sumber kod yang kita hanya melihat. Dan kita perlu satu program baru Untuk berjalan melalui. Kita perlu algoritma yang boleh menukar kod sumber, seperti ini, kepada kod objek, 0 dan 1s. Dalam erti kata lain, apa yang kita akan belajar hari ini adalah bagaimana untuk melakukan ini, menulis kod sumber sehingga atas, lulus sebagai input kepada khas program yang dikenali sebagai pengkompil, dan kita akan menghasilkan kod objek. Yang hanya satu cara mewah daripada mengatakan kami akan mengambil sesuatu yang kelihatan seperti ini, lulus dalam program yang dipanggil pengkompil, menghasilkan kod objek yang kelihatan seperti ini. Jadi ini adalah benar-benar corak 0 dan 1s yang difahami oleh Komputer Intel hari ini, bahawa jika ditafsirkan oleh CPU, otak di dalam komputer, secara literal akan mencetak, agak mudah, "hello dunia." Kini ada cara yang lebih 0 dan 1s daripada anda berharap mungkin perlu untuk itu. Tetapi itu kerana kita membina pada perjanjian yang baik kerumitan yang kita seterusnya boleh mengambil untuk diberikan. Dalam erti kata lain, ramai orang pintar telah memberikan kita banyak alat sejuk dan perisian yang berkuasa yang kita kini boleh membuat projek-projek kita sendiri. Jadi mari kita bermula. Manakala pada Jumaat lepas, dan untuk Set Masalah 0 minggu ini, anda akan bermain dalam dunia yang kelihatan seperti ini. Bermula hari ini dan untuk Masalah Terletak 1 minggu depan, kod akan kelihatan sedikit lebih samar, tetapi fungsi adalah akan menjadi sama. Jadi notis, atas adalah Scratch, bawah adalah C. Terus terang Scratch adalah lebih banyak pengguna mesra dan boleh diakses. Tetapi jika anda kini membandingkan visual atas ke bahagian bawah, ada semacam satu satu untuk surat-menyurat antara kepingan teka-teki dan bahasa kami kira-kira untuk bermain dengan. Khususnya, berkata, teka-teki biru sekeping sehingga atas, nampaknya sama dengan apa kata kunci atau frasa khas dalam bahasa ini dipanggil C? PENONTON: printf. DAVID J. MALAN: printf. Ini bermakna percetakan diformatkan. Dan itu hanya mewah yang cara untuk mengatakan printf dalam C akan menjadi kenyataan atau fungsi yang mencetak sesuatu untuk skrin. Apa yang mencetak dengan skrin? Apa sahaja yang anda beritahu kepada semua di dalam sebut harga, di dalam kurungan. Jadi sekali lagi, diakui, terdapat banyak barangan yang anda perlu ingat, kurungan, sebut harga, koma bertitik, dan semua ini. Tetapi semua itu adalah jenis dari sebelah titik. Yang bisa dibesarkan menarik untuk sekarang adalah bahawa blok katakan dalam Scratch adalah cukup banyak bersamaan dengan Kenyataan printf dalam C. Sementara itu, sekeping teka-teki kuning sehingga atas, apabila bendera hijau diklik, mungkin bersamaan apa kata kunci di sini? PENONTON: Main. DAVID J. MALAN: Jadi utama. Mungkin int, mungkin tidak sah. Tetapi jenis utama bunyi seperti adalah penting, dan sesungguhnya ia adalah. Oleh itu, apabila bendera hijau diklik adalah, sekali lagi, sekeping teka-teki yang bermula satu keseluruhan program Scratch. Tetapi kita akan kini mula memanggil yang utama, fungsi ini dikenali sebagai utama. Sekarang sementara itu kita akan umum ini seperti berikut. Kita mungkin memanggil mengatakan fungsi. Dan ia mungkin kelihatan khusus seperti ini. Nah, bagaimana pula gelung? Jika kita ingin memulakan menukar atau menterjemah lebih Scratch kepada C, perkara ini di sini nampaknya hanya berkata "hello dunia" selama-lamanya. Jadi, jika anda mengaitkan ini skrip dengan kucing dalam Scratch, ia hanya akan menyimpan berkata dalam beberapa jenis gelembung kartun, "Hello dunia, dunia hello, hello dunia, "iklan nauseum, selama-lamanya. Jika kita mahu melakukan sesuatu yang serupa dalam C, ia akan kelihatan samar sedikit. Tetapi kita boleh mencapai yang sama keputusan, seperti yang kita akan akhirnya mengetahui, dengan sintaksis seperti ini. Saya akan menggunakan printf lagi, kerana pada akhir hari Saya ingin mencetak "hello dunia." Dan saya nampaknya menggunakan kata kunci yang tidak selama-lamanya. Ia bukan perkataan sementara. Tetapi semantik dalam Bahasa Inggeris, manakala jenis mencadangkan beberapa jenis gelung atau kitaran. Supaya berlaku untuk menjadi kata kunci yang menggunakan C. Dan manakala benar, mengapa sementara benar berkesan bermakna selama-lamanya? Nah, manakala, kerana tidak lama lagi kita akan menghargai semua lebih, mempunyai kurungan ini sebelahnya di mana anda boleh meletakkan ungkapan Boolean. Dan selagi yang ungkapan adalah benar, kod ini, ditandakan sebagai antara kedua-dua pendakap kerinting seperti yang kita akan memanggil mereka, hanya akan terus berjalan lagi dan lagi. Jadi benar benar. Oleh itu, sambil maksudnya yang sebenar hanya melakukan ini selama-lamanya. Ia hampir yang bodoh membina untuk menyatakan diri anda. Tetapi tidak ada selama-lamanya kata kunci dalam C. Terdapat sementara. Dan ada yang sangat mudah Ungkapan Boolean seperti benar. Dan hal ini, kita akan melihat, mencapai keputusan yang sama. Bagaimana lagi anda mungkin melaksanakan gelung? Nah, dalam Scratch anda mungkin kod keras bilangan tertentu lelaran dalam gelung di sini. Dan itulah apa yang kita mungkin lakukan dalam versi ini C, mana kita mempunyai apa yang dipanggil untuk gelung. Dan untuk gelung di sini akan untuk melelar, agak cryptically, dari nilai 0 sehingga pada untuk tetapi kurang daripada 10. Sekarang pembolehubah dalam Scratch. Anda mungkin tidak mempunyai kesempatan untuk menggunakan. Tetapi apa yang titik, secara umum, pembolehubah yang tidak kita katakan minggu lepas? Apa itu? PENONTON: Mata. DAVID J. MALAN: Untuk menunjukkan? Oh, mata. OK, mencatat mata, misalnya, dalam permainan. Atau lebih umumnya melakukan apa dengan pembolehubah? Apakah utiliti daripada mereka? PENONTON: Memori. DAVID J. MALAN: Ya, ingatan demikian. Ia untuk menyimpan sesuatu. Dan jenis saya dengar bodoh digunakan Kali terakhir adalah seperti mangkuk kaca ini. Dan jika kita mahu menyimpan sesuatu di dalam pembolehubah, misalnya sekarang ini nilai ialah enam kerana ada enam bola ping pong di sini. Ia hanya beberapa jenis simpanan bekas yang di bawah hud dilaksanakan dengan bit, 0 dan 1s, Walau bagaimanapun komputer yang berlaku untuk melakukannya. Jadi dalam Scratch, jika kita ingin mempunyai pembolehubah, kita boleh menggunakan blok oren seperti ini. Kami akan menghubungi kaunter yang dalam kes ini. Saya dimulakan kepada 0. Dan apa yang aku lakukan? Selama-lamanya, berkata kaunter, yang jika anda bermain dengan itu dalam Scratch, anda hanya akan melihat Scratch. Kucing atau apa sahaja pakaian anda memakai dia akan berkata-kata nombor dalam soalan. Perubahan kaunter oleh 1 adalah seperti menokok oleh 1. Dan hal ini akan mengira dari apa jadi apa? Dari 0 til infiniti, atau sehingga rehat Scratch, atau sehingga anda jenis hilang minat menonton berapa tinggi dia sebenarnya boleh mengira. Jadi bagaimana kita boleh menukar ini kepada C? Ia akan kelihatan samar sedikit. Tetapi sekali lagi, jika anda melihat penggunaan di setiap garis ini secara individu jenis mereka barisan amnya. Jadi nampaknya int akan mempunyai makna khas dalam C. Kita akan melihat bahawa sekali lagi. Sebagai mengetepikan ia bermakna integer. Jadi ia hanya bermaksud nombor. Jadi itulah jenis kaca mangkuk saya mahu, satu yang boleh menyimpan nombor, tidak ping pong bola. Dan saya akan menggunakan tanda yang sama di sana untuk sediakan nilai 0. Supaya agak seperti set kaunter kepada 0, tetapi dalam C. Sementara itu, ketika benar, bahawa adalah bersamaan, sudah tentu, untuk selama-lamanya, walaupun ia sedikit samar, dan kemudian di dalam pendakap kerinting. Dan anda boleh berfikir ini pendakap kerinting, yang anda boleh menaip pada papan kekunci anda, sebagai benar-benar menjadi seperti kelengkungan dalam blok kuning dalam gelung Scratch. Ia merangkumi pelbagai baris kod. Printf adalah mendapat sedikit menakutkan sekarang kerana saya melihat bukan sahaja menyebut dalam kurungan. Tetapi apa lagi yang baru sintaksis dalam contoh ini? Ada satu peratus d. Dan kemudian backslash n ada. Kami tidak melihat bahawa sebelum, walaupun walaupun saya tidak menyatakannya. Kemudian ada koma. Dan kemudian ada kaunter. Tetapi kita akan melihat hanya dalam masa ini hanya cara yang standard untuk mengatakan cetak yang "Nombor perpuluhan," quote, unquote, beberapa nombor perpuluhan. Tetapi saya akan memberitahu anda kemudian apa yang nombor perpuluhan adalah. Jadi hakikat bahawa ada koma di baris ini kata printf, bermakna pergi ke depan dan cetak beberapa nombor perpuluhan. Oh, dan dengan cara itu, bilangan adalah apa nilai pembolehubah ini. Dan sebagainya untuk membuat ini lebih jelas, kita akan melihat contoh tidak lama melibatkan tepat printf dalam konteks program C yang sebenar. Sekarang hanya untuk menyelesaikan beberapa konstruk ini. Ungkapan Boolean, anda mungkin tidak mempunyai kesempatan untuk menggunakan dalam program anda tetapi anda mungkin sangat baik, terutamanya jika menggunakan syarat. Dan kedua-dua contoh-contoh daripada Goreskan bermakna jika x ialah kurang daripada y, atau jika x ialah kurang daripada y dan y adalah kurang daripada z, bagaimana kita boleh menterjemahkan itu? Nah, dalam C ia hanya akan kelihatan seperti ini. Sedikit samar, lebih kurungan, beberapa ampersands pelik, tetapi pada asasnya, idea-idea adalah seperti mudah kerana ia adalah dalam dunia teka-teki sekeping. Kami hanya memeriksa jika sesuatu adalah kurang daripada sesuatu yang lain. Bagaimana dengan keadaan? Secara ringkas dalam bahasa Inggeris, apakah ini sebahagian kod Scratch yang anda akan berkata? PENONTON: Membandingkan dua nombor. DAVID J. MALAN: Membandingkan dua nombor, dan jika x ialah kurang daripada y ia berkata sebanyak. Jika x adalah lebih besar daripada y ia berkata seperti yang banyak, lain jika x sama dengan y ia berkata sebanyak. Sekarang manakah x dan y datang? Siapa tahu. Ini sebahagian daripada Scratch kod adalah di luar konteks. Tetapi apa yang kita mahu lakukan sekarang ialah menterjemahkan ini untuk seketika untuk melihat. Jadi seperti yang anda mendapatkan selesa minggu ini di Set Masalah 0 bermain di dunia ini di sebelah kiri, menyedari bahawa idea-idea yang tidak berubah minggu ini atau akan datang atau lebih. Kami hanya akan mula menulis perkara-perkara dalam cara yang berbeza dengan kita papan kekunci tetikus dan bukannya kami. Jadi, jika x ialah kurang daripada y, dan ada beberapa kurungan di sana, kemudian ada beberapa pendakap kerinting sekali lagi untuk jenis mengurung ia seperti kepingan teka-teki kuning lakukan. Dan saya akan printf x adalah kurang daripada y dan sebagainya. Apa yang baik tentang C, seperti yang anda lihat di sini, adalah bahawa anda tidak mendapat bersarang ini, bersarang, bersarang yang semestinya akan menolak kod anda ke kanan. Anda sebaliknya boleh mempunyai segala-galanya barisan kemas menyukainya. Tetapi itu hanya estetik terperinci kita akan melihat sekali lagi tidak lama lagi. Baiklah. Justeru, berbalik semula kepada program ini samar mencari. Mari kita benar-benar menulis beberapa kod. Sekarang bagaimana anda pergi tentang menulis kod? Selama ini anda telah dimiliki Mac atau PC, desktop atau komputer riba, anda sebenarnya mempunyai keupayaan untuk mula menulis kod pengaturcaraan. Tetapi anda mungkin hilang jenis khas program. Anda tentu boleh menulis kod. Tetapi anda tidak boleh semestinya, keluar dari kotak, menukar kod sumber kepada kod objek, 0 dan 1s tanpa apa pada komputer anda? PENONTON: Pengkompil. DAVID J. MALAN: Jadi pengkompil, betul. Sekarang kebanyakan kamu mungkin tidak memiliki pengkompil, tidak pernah turun pengkompil. Tetapi anda akan melihat anda boleh memuat turun seperti kebanyakan mana-mana bahagian lain perisian. Dalam dunia Mac OS, anda mungkin muat turun atau muat turun sudah sesuatu yang dipanggil Xcode atau GCC atau dilafaz. Jika anda datang dari Windows dunia anda mungkin telah muat turun Visual Studio, Visual Basic, persekitaran seperti itu. Ada berpuluh-puluh penyusun hari ini yang mungkin anda gunakan. Tetapi pendek di sini ialah ia akan menjadi sakit dan, terus-terang, satu teknologi mimpi ngeri selama beratus-ratus daripada orang-orang yang berbeza konfigurasi komputer untuk semua mengkonfigurasi mesin mereka dalam cara yang sama supaya kita semua boleh berada di halaman yang sama. Jadi apa yang kita, sebaliknya, melakukan dalam CS50 adalah kami memberikan persekitaran yang biasa, Persekitaran Linux itu akan kelihatan sedikit sesuatu seperti ini. Anda akan melihat lebih banyak daripada ini dalam Set Masalah 1 spesifikasi yang akan pergi ke dalam talian malam Jumaat ini. Dan apa ini bermakna adalah bahawa anda seterusnya akan dapat memuat turun dan memasang program yang dipanggil Appliance CS50. Dan anda akan memuat turun dan memasang program lain yang dipanggil yang hypervisor, yang hanya cara mewah untuk mencapai ini. Adakah anda mempunyai Mac atau PC atau Linux komputer atau komputer Solaris, atau apa sahaja yang gila operasi sistem anda menjalankan, anda akan memuat turun program yang dipanggil hypervisor itu akan menjalankan CS50 Perkakas pada komputer anda tidak kira apa sistem operasi anda. A hypervisor dalam erti kata lain menukarkan barangan kami untuk apa sahaja bahasa, apa sahaja arahan anda komputer sendiri memahami. Jadi ini adalah satu lapisan. Dan sekali lagi, ini adalah jenis daripada tema dalam komputer sains, bangunan di atas perkara. Anda mungkin mempunyai Windows. Anda mungkin mempunyai Mac OS. Tetapi bermula minggu depan anda akan telah dimuat turun sekeping percuma perisian dipanggil hypervisor itu. Anda akan telah turun sekeping perisian dipanggil Appliance CS50. Itu akan berjalan di hypervisor itu, yang akan berjalan pada komputer anda. Dan keputusan akhir adalah kita semua akan mempunyai tingkap yang mudah seperti ini pada Mac atau PC anda yang memberikan kita ilusi semua menjalankan sistem operasi yang sama, tanpa apa-apa lain kesan ke atas komputer anda. Dan anda boleh skrin penuh dan pada asasnya berkelakuan seolah-olah anda sedang menjalankan sistem operasi Linux yang dipanggil, iaitu apa yang CS50 Perkakasan adalah berdasarkan kepada. Jadi mari kita sebenarnya menggunakan ini sekarang untuk menulis program. Anda boleh menulis satu program yang menggunakan Microsoft Word. Anda boleh menulis satu program yang menggunakan TextEdit, atau Notepad, atau WordPad, atau cukup banyak mana-mana perkataan program pemprosesan anda pernah digunakan. Tetapi realitinya adalah anda tidak perlu benar-benar menggunakan mana-mana program. Anda pasti tidak perlu menggunakan sesuatu seperti Microsoft Word, yang mempunyai menghadap dan huruf condong berani, dan font lebih besar dan fon yang lebih kecil, kerana komputer tidak mengambil berat tentang mana-mana itu. Semua komputer adalah akan mengambil berat tentang adalah Bahasa Inggeris seperti arahan bertulis di C. Jadi apa yang kita akan buat di dalam daripada Appliance CS50 yang adalah menggunakan program yang bebas ada, dan ia pra-dipasang di ini perkakas, yang dipanggil gedit. Dan gedit hanya super mudah editor teks seperti TextEdit Mac OS, seperti Windows Notepad perkara yang berlaku untuk melihat sesuatu yang kecil seperti ini. Jadi mari kita sebenarnya tidak melihat slaid ini. Tetapi mari kita benar-benar pergi ke persekitaran itu sendiri. Saya akan pergi ke depan dan log masuk, dalam tetingkap yang lain ini, untuk Appliance CS50 saya, yang saya telah pra-dipasang pada komputer riba saya di sini. Perhatian bahawa, seperti Windows dan Mac OS, ia mendapat beberapa menu. Seperti Windows ia meletakkan ia di bawah sana dan bukannya Mac OS, yang meletakkan ia di bawah sana. Tetapi realitinya adalah ia semua jenis yang sama. Dan di sini adalah keseluruhannya sekumpulan perisian. Ada Dropbox. Ada sejumlah besar aksesori, program grafik yang kita akan menggunakan kemudian dalam jangka bagi set masalah. Ada pelayar web terbina dalam supaya bahawa ini adalah satu komputer lengkap penuh di dalam komputer. Tetapi saya akan klik ini terkiri icon putih di sini, yang merupakan ikon untuk gedit. Dan ia akan membuka tetingkap yang mempunyai tiga panel kepadanya, satu kiri, satu bahagian atas, dan satu bahagian bawah. Sekarang dalam satu ini atas kanan yang Saya akan benar-benar menulis beberapa kod. Jadi mari kita buat ini ,. Saya akan pergi ke Fail, Simpan. Dan anda mungkin tidak pernah lihat tetingkap ini tertentu sebelum ini. Tetapi ini adalah seperti Mac OS atau Windows. Ia hanya tetingkap dengan semua folder yang saya ada di dalam komputer ini. Dan saya akan menyelamatkan fail tersebut hello.c. Dan saya akan pergi Teruskan dan klik Simpan. Dan sekarang saya mempunyai notis tab di sebelah kiri atas dipanggil hello.c. Jadi mungkin cukup biasa walaupun anda sudah tidak menggunakan program tertentu sebelum ini. Dan sekarang saya akan menaip mereka urutan yang agak samar arahan yang kita lihat sebentar tadi. Termasuk, saya standard / O.h. Lanjut mengenai tidak lama lagi itu. Tidak sah utama Int, kerinting terbuka menyokong, ditutup pendakap kerinting. Dan kemudian di dalam sana saya fikir adalah di mana kita mempunyai "hello dunia," dengan koma bernoktah. Dan kini menyimpan. Jadi ini adalah satu program yang ditulis dalam C, bertulis, oleh itu, dalam kod sumber. Tetapi saya tidak boleh menjalankan program ini. Saya jenis mahu menggandakan klik pada ikon di suatu tempat, tetapi tiada icon wujud lain daripada fail kod sumber. Apa yang, sekali lagi, adalah proses sekarang Saya perlukan untuk menjalankan fail ini melalui? PENONTON: Pengkompil. DAVID J. MALAN: Jadi pengkompil. Jadi dalam komputer yang berbeza anda melakukan ini dengan cara yang berbeza. Tetapi apa yang kita lakukan di Appliance CS50 yang itulah wakil bagaimana anda mungkin melakukan ini pada sistem yang berbeza, adalah saya hanya akan jalankan arahan yang dipanggil make. Dan make secara literal akan berbuat demikian. Membuat saya program. Oleh itu, akan menjalankan pengkompil untuk saya. Dan nama program yang Saya ingin adalah hello. Sekarang adalah membuat program. Dan membuat cukup untuk pintar sedar bahawa jika saya katakan menjadikan hello, ia akan melihat secara automatik untuk fail yang dipanggil hello.c hanya kerana itulah cara ia dikonfigurasikan. Oleh itu, apabila saya kini mencecah Masukkan di sini, ini garis samar gila baru sahaja dilaksanakan. Dan kepercayaan saya, sebelum panjang, dalam masa beberapa hari, anda akan memahami apa yang semua itu cara karut. Tetapi untuk sekarang, hanya tahu bahawa membuat pelaksanaan mencetuskan pengkompil. Dalam erti kata lain, ia didapati pengkompil pada komputer saya itulah pra-dipasang pada Appliance CS50 yang bahawa kita akan menyerahkan kepada anda dalam Set Masalah 1. Dan ia kemudian mengambil hello.c sebagai input, dan dihasilkan nampaknya 0 dan 1s sebagai output. Dan secara lalai apa yang ia adalah ia menjimatkan mereka 0 dan 1s dalam fail yang dipanggil hello. Dan walaupun sintaks ini juga mungkin baru kepada anda, hanya dengan mengatakan dot mengurangkan hello akan menjadi dimaksudkan dengan yang saya menjalankan program ini. Untuk sekarang dan untuk pasangan sekurang-kurangnya minggu, hampir semua program kita tulis akan berada dalam tingkap teks hitam dan putih. Tiada tikus, tiada klik, tidak mempunyai tingkap, tidak ada ikon. Kami akan memastikan ia mudah dan memberi tumpuan kepada idea-idea asas awalnya sebelum kita capai sesuatu peringkat yang lebih tinggi, misalnya, seperti berehat daripada permainan yang kita bercakap kira-kira dalam syarahan pertama minggu lepas. Oleh itu, apabila saya tekan Enter di sini, ia setara dalam teks hanya persekitaran untuk menggandakan klik ikon dipanggil hello. Apa yang anda harapkan akan berlaku apabila saya tekan Enter kemudian? PENONTON: Ia akan mencetak "hello dunia." DAVID J. MALAN: Semoga ia akan mencetak "hello dunia." Dan sesungguhnya ia lakukan. Kini telah ada beberapa sintaks samar di sini. Mari kita putar balik hanya seketika dan lihat jika kita tidak boleh mula membuat kesimpulan hanya dengan tinkering, cuba dan gagal, tentang apa yang berlaku di sini. Bagaimana jika saya menghilangkan garis sendeng terbalik n? Kini sebahagian dari kamu yang sudah diprogramkan sebelum mungkin serta-merta tahu apa yang bermakna. Tetapi bagi orang-orang yang sudah tidak pernah diprogramkan sebelum, sekurang-kurangnya berfikir kepada diri sendiri apa yang sedang berlaku berubah apabila saya jalankan lagi program ini? Jadi saya akan kembali ke saya tetingkap hitam dan putih yang kecil, yang adalah tingkap di mana Saya boleh menyusun ini. Saya akan susun semula hello. Kita akan melihat sama urutan samar arahan. Dan saya akan melakukan slash dot hello. Dan sekarang seseorang, jika anda akan, yang tidak pernah diprogramkan sebelum, apa yang mungkin menjadi berbeza kali ini? Yeah. PENONTON: Ia tidak akan berhenti percetakan "hello dunia." DAVID J. MALAN: Ia akan supaya- maaf? PENONTON: Ia tidak akan berhenti mencetak ia? DAVID J. MALAN: Ia tidak akan berhenti mencetak "hello dunia." Jadi bukan idea yang buruk. Idea-idea lain? Yeah. PENONTON: Mesej ralat? DAVID J. MALAN: Ralat mesej, OK, boleh. Apa lagi? PENONTON: Ia mungkin mencetak kurungan dengan koma bernoktah juga? DAVID J. MALAN: Mungkin mencetak kurungan dengan koma bernoktah juga. Jadi mungkin garis sendeng terbalik yang kemudian beberapa jenis terminous yang penting. Mana-mana pemikiran lain? Jadi semua idea-idea yang baik. Dan sebenarnya, ia akan menjadi mesej ralat. Itu mungkin yang paling mungkin untuk menjadi jawapan secara umum untuk beberapa minggu akan datang seperti yang kita belajar untuk kod di sini. Tetapi untuk sekarang ingat bahawa komputer sahaja apa yang anda memberitahu mereka lakukan. Sama seperti kacang tanah yang tidak masuk akal mentega dan jeli contoh. Komputer manusia kita hanya sepatutnya untuk melakukan apa yang anda memberitahu mereka lakukan. Jadi dalam kes ini, jika anda tidak memberitahu komputer untuk menggerakkan kursor yang berkelip kepada garis depan, ia tidak akan melakukannya. Oleh itu, apabila saya menjalankan program ini sekarang, melihat perbezaan. Kelihatan seperti pepijat. Ia merupakan satu bug estetik, mungkin. Tetapi apa yang berbeza tentang perkara ini output berbanding yang terakhir jelas? Yeah. PENONTON: Ia tidak berbuat barisan baru. DAVID J. MALAN: Ia tidak berbuat barisan baru. Sekarang orang-orang yang mempunyai laman web mungkin dibuat sebelum, anda mungkin tahu daripada Tag BR atau tag perenggan itu, hampir sama dalam semangat. Penyemak imbas web akan mengabaikan anda sehingga anda beritahu apa yang perlu dilakukan. Begitu juga, adalah bahasa seperti C sahaja akan melakukan apa yang anda beritahu kepada semua lakukan. Jadi alasan bahawa semua contoh-contoh ini, setakat ini, mempunyai jenis bersahaja mempunyai garis sendeng terbalik ini di sana, itu cara mana anda meluahkan diri anda sebagai watak talian baru, jadi untuk bercakap. Dan anda jenis boleh menghargai, mungkin, ini akan kelihatan jenis bodoh jika apa-apa lagi. Jika saya mahu barisan baru, hanya Masukkan memukul dan kemudian jenis daripada butchering kod seperti itu harus tidak benar-benar menggosok anda dengan cara yang betul. Dan walaupun anda tidak benar-benar mengambil berat pada masa ini, anda akan menyedari bahawa ini bukanlah terutamanya mencari sekeping baik kod. Dan apa yang dunia tahun lalu adalah memutuskan bahawa apabila anda ingin meletakkan Kursor ke barisan baru dengan jelas, anda mesti mengatakan dengan jelas talian baru, backslash n. Dan ada beberapa yang lain simbol-simbol seperti itu. Tetapi buat masa ini kita akan hanya memberi tumpuan kepada garis sendeng terbalik n. Sekarang mari kita membuat program sedikit lebih menarik. Saya akan pergi ke depan dan kali ini membuka fail baru. Saya akan menyimpan ini sebagai hello-1.c. Dan hanya untuk tendangan, saya akan pergi meletakkan ia ke dalam folder Dropbox saya. Seperti yang anda akan lihat dalam CS50 dokumentasi untuk perkakas, pada minggu ini untuk Masalah Terletak 1, kami akan menggalakkan anda untuk menggunakan Dropbox atau beberapa perkhidmatan yang setara, kerana itu semua kod anda akan disokong secara automatik. Dan itulah sebabnya mengapa saya telah pergi ke folder ini di sini. Dan sekarang saya akan menulis program yang sedikit berbeza. Termasuk, saya standard / O.h, tidak sah utama int. Dan kemudian di sini printf, hello dunia, yang betul-betul sama seperti sebelum ini. Tetapi sekarang saya ingin mencetak sesuatu yang sedikit berbeza. Saya ingin mencetak, berkata, "Hello, Daud." Baiklah, jadi jelas, sepatutnya mudah-mudahan menjadi kes bahawa jika saya susun semula program ini, jalankan lagi ia, ia akan berkata "hello, Daud." Tetapi bagaimana jika saya ingin memperkenalkan seperti ini berubah-ubah, tanggapan bekas yang berlaku untuk menyimpan D-a-v-i-d dan kod tidak keras ke dalam program saya. Nah bagaimana jika saya memulakan melakukan sesuatu seperti ini? String s, jadi ini adalah pemboleh ubah. Jika anda ingin rentetan, a.k.a. perkataan atau frasa. Satu jujukan aksara adalah apa yang kita dalam pengaturcaraan memanggil rentetan. Kami hanya mahu generik panggilan itu sahaja, kerana ia adalah nama yang mudah baik. Tetapi saya boleh memanggilnya apa-apa. Saya akan mengatakan setaraf rentetan s quote unquote, "David," dengan koma bernoktah. Dan sekarang saya mahu memasukkan D-a-v-i-d ke dalam apa yang saya percetakan. Dan sebelum kami melihat teaser pada skrin beberapa sintaks khas yang membolehkan kita untuk pengganti dalam nilai. Apa yang khas simbol slaid yang lalu? Jadi peratus. Pada masa yang ia adalah peratus d bagi nombor perpuluhan. Yang tidak benar-benar seolah-olah berkaitan di sini. Rupa-rupanya ada yang satu lagi simbol peratus, yang merupakan peratus s, yang berdiri untuk pemegang tempat bagi rentetan. Jadi sekarang, sangat mudah, saya akan pergi membuat hello-1, kerana fail ini dipanggil hello-1.c, dan tekan Enter. Dan saya kacau. Apa yang berlaku? Nah, di sini di mana kita perlu mula menghargai bahawa kita berada dalam arahan ini persekitaran line, ini teks hanya persekitaran. Tidak ada klik pada ikon seperti folder sekarang. Dan berfikir kembali masa yang lalu. Dalam apa folder lakukan saya katakan Saya menyelamatkan kod saya? Jadi folder Dropbox ini. Boleh dipanggil apa-apa. Tetapi ia berlaku dipanggil Dropbox. Jadi saya entah bagaimana perlu menggandakan klik pada folder Dropbox untuk mendapatkan ke dalamnya dan mendapatkan sekurang-saya kod dipanggil hello-1.c. Malah, saya pergi ke depan dan mengurangkan tetingkap ini hanya seketika. Sama seperti Windows dan Mac OS, terdapat folder dalam Linux. Terdapat folder dalam Appliance CS50. Ia hanya sekarang kita mengurung diri kita kepada alam sekitar teks ini. Tetapi jika saya menggandakan klik pada Dropbox, perhatikan, terdapat adalah fail yang saya mahu untuk menyusun. Tetapi saya perlu ini hitam dan putih tetingkap terminal, jadi untuk bercakap. Tetapi saya perlukan, oleh itu, untuk bergerak ke dalam folder atau direktori. Jadi sedikit sukar difahami, tetapi anda akan mendapat digunakan untuk ini juga. Dalam dunia Linux, yang sekali lagi adalah operasi sistem kami berjalan bahagian dalam CS50 Perkakas, ada arahan yang dikenali sebagai CD. Ertinya boleh saya lakukan CD, ruang, Dropbox. CD, direktori perubahan. Betul. Kembali pada hari apabila rakyat mencipta komputer dan operasi sistem seperti ini, mereka mahu taip penekanan butang paling sedikit mungkin. Jadi cara yang paling mudah untuk mengatakan direktori perubahan adalah CD. Jadi jika saya memukul CD, ruang Dropbox, perhatikan apa yang telah berubah di sini. Di dalam kurungan perkakas adalah jenis daripada humoring saya dan mengingatkan saya di mana saya. Jadi folder terbuka adalah Dropbox. Jika saya kini taip ls untuk senarai, sekali lagi ringkas, kerana orang tidak mahu menaip kembali pada hari l-i-s-t. Jadi mereka sebaliknya membuat ia, Adakah. Enter. Perhatikan saya melihat dua perkara, hello-1.c, dan kemudian perkara ini samar, sumber 1m. Itu hanya cara saya berkata Kod sumber untuk minggu 1 Isnin. Itu satu folder saya turun dari Laman web CS50 yang saya dibuat awal hari ini dan hanya meletakkan ia ke dalam perkakas terlebih dahulu. Tetapi buat masa ini satu-satunya perkara yang kita mengambil berat tentang membuat program ini. Oleh itu, apabila saya menaip membuat hello-1, Enter. Celaka. Sesuatu telah berlaku. Jadi mari kita mengusik ini selain. Dan malangnya ini adalah di mana perkara-perkara mendapatkan sedikit tertekan pada mulanya, sekurang-kurangnya jika anda mempunyai tidak pernah sebelum diprogramkan. Saya tuhan. Saya menulis program dua talian dan Saya mempunyai empat baris kesilapan. Jadi apa yang berlaku di sini. Pertama sekali selalu skrol kembali dan mendapati mesej ralat yang pertama, kerana sering kali hanya Compilers keliru dengan apa yang anda dan saya lakukan. Compilers cukup bisu. Mereka hanya akan melakukan apa yang anda memberitahu mereka lakukan. Dan jika anda mengelirukan mereka, mereka hanya akan jenis muntah tangan mereka dan mungkin membuang lebih lanjut Mesej ralat daripada sebenarnya berkaitan. Jadi mari kita lihat yang pertama. Super samar pada mulanya. Tetapi notis, di sini atas nama Fail di mana saya kacau nampaknya. Colon 5, kolon 5 hanya bermakna pada baris 5 pada watak kelima. Jadi ruang kelima aksara, jika anda akan, kesilapan. Penggunaan tali pengecam yang tidak diisytiharkan. Adakah maksud standard n? Tidak, saya maksudkan tali. Dan kemudian ia adalah jenis menyalin dan menampal apa yang saya taip untuk benar-benar menarik saya perhatian kepada di mana saya kacau. Jadi atas sebab C, atau sekurang-kurangnya pengkompil tidak memahami rentetan perkataan. Dan itu kerana kita membuat ia naik. Jadi rentetan tidak wujud di C. Apakah CS50 tidak, untuk beberapa minggu pertama hanya kelas, adalah kami menyediakan beberapa latihan roda, jadi untuk bercakap. Dan kita meletakkan ini roda latihan di dalam fail khas yang dipanggil CS50.h. Jadi ini adalah bahagian kedua daripada dua fail nama-nama yang nampaknya berakhir dengan dot h. Mari kita putar balik. Printf adalah suatu pernyataan atau fungsi yang nampaknya mencetak sesuatu ke skrin. Tetapi anda tidak melihat saya melaksanakan printf, betul. Seseorang tahun lalu dilaksanakan printf. Dalam apa fail yang anda akan bertaruh dia atau dia meletakkan pelaksanaan untuk printf, kod untuk printf? Dalam fail yang dipanggil standard I / O.h. Malah, ia mungkin dalam dua fail, saya standard / O.h, yang bermaksud header fail, dan saya standard / O.c, yang bermaksud C kod sumber. Jadi dia beberapa tahun yang lalu plopped kod yang mereka menulis ke dalam fail yang supaya orang-orang seperti kami tahun kemudian boleh memasukkannya, boleh dikatakan, dalam program-program kita sendiri. Dan sesungguhnya, itulah yang tanda pound diikuti dengan perkataan termasuk tidak. Ia kelihatan pada cakera keras tempatan, mendapati fail yang dipanggil standard I / O.h, dan kemudian dengan berkesan salinan dan Pes ia di dalam fail saya sendiri. Jadi sekarang saya tahu program bagaimana untuk mencetak skrin. Jadi dengan logik bahawa, jika adalah rentetan ditakrifkan? PENONTON: CS50.h. DAVID J. MALAN: CS50.h. Dan sesungguhnya, itulah yang kita, kakitangan teras, telah dibuat. Kami telah mencipta beberapa jenis data, boleh dikatakan, seperti tali, sebagai tambahan kepada orang-orang yang anda mendapatkan secara percuma, seperti int satu. Dan kita akan melihat orang lain seperti char a untuk watak dan beberapa lagi. Bahagian dalam CS50.h nampaknya adalah sekurang-kurangnya beberapa menyebut rentetan. Jadi sekarang biarlah saya pergi ke hadapan dan make jalankan lagi hello-1. Saya akan mengezum masuk lagi dan menyeberangi jari saya. Sekarang oleh kerana membuat satu mengubah saya tetap kebanyakan perkara. Tetapi persetan. Lebih banyak persen dari hujah-hujah data. Apa yang saya buat salah kali ini? Jadi ia masih agak samar. Tetapi kesilapan ini adalah pada baris 7 dan watak 21. Jadi mari kita pergi melihat di sini. Ia sedikit halus. Tetapi jika anda berfikir tentang apa yang idea-idea asas di sini adalah, mungkin kita boleh dapati selain ini. Jadi printf adalah nama fungsi. Kurungan, setakat ini, adalah sama seperti apa yang kita masukkan di sekitar barangan yang kita lulus sebagai input kepada fungsi. Baiklah, hanya konvensyen manusia sewenang-wenangnya. Gunakan kurungan. Di dalam orang-orang kurungan kami telah meletakkan sebut harga berganda, dan kemudian rentetan seperti "hello dunia." Tetapi dalam contoh yang awal sangat secara ringkas Kami tidak melihat dengan Scratch. Dan kami mempunyai peratus d, apa lagi adalah dari orang-orang di dalam kurungan bahawa saya memanggil secara lisan? Yeah. PENONTON: Jadi apa yang anda mengambil [Didengar] dari dalam [didengar] apa ini [didengar]? DAVID J. MALAN: Tepat sekali. Oleh itu, kita mempunyai peratus d. Tetapi kami mempunyai hampir quote, koma, kaunter. Betul. Kami dinyatakan apa yang kita mahu lakukan sebagai pemegang tempat itu. Jadi, apa yang saya akan lakukan ialah koma, apa yang anda mahu saya untuk meletakkan? PENONTON: S. DAVID J. MALAN: S, kerana dalam kes ini adalah nama bekas simpanan. Ia adalah nama yang mangkuk kaca. Sedangkan sebelum itu merupakan kaunter yang di contoh Scratch mudah kita melihat. Jadi sekarang setelah membuat dua perubahan, biarlah saya mengezum masuk dan cuba sekali lagi untuk menyusun program ini. Sekarang saya melihat bahawa garis samar. Tetapi itu sebenarnya nama daripada pengkompil. Dentang adalah nama pengkompil. Buat hanya menyelamatkan saya sakit kepala yang pernah menaip arahan yang panjang gila keluar. Jadi sekarang jika saya dot mengurangkan hello-1, Saya perlu melihat "hello, Daud." Pretty underwhelming, walaupun, bukan? Kami boleh dilakukan ini banyak yang lebih semata-mata tanpa bercakap tentang pembolehubah dan CS50.h dan semua itu. Oleh itu, marilah menjadikannya sebagai sedikit lebih menarik. Selain CS50.h, mempunyai hal-hal seperti tali diisytiharkan, perpustakaan CS50 juga mempunyai fungsi-fungsi beberapa. Jadi tahun sama seperti yang lalu, seseorang telah menulis printf dan memasukkannya ke dalam standard I / O.h dan fail lain. Kami, kakitangan CS50 ini, menulis fungsi dipanggil GetChar, GetDouble, GetFloat, GetInt, GetLongLong, GetString, dan kami meletakkan mereka di dalam fail dipanggil CS50.h dan CS50.c. Dan kami meletakkan mereka di dalam daripada Appliance CS50. Dan orang juga boleh turun mereka dalam talian jika mereka mahu meletakkan mereka pada mereka komputer sendiri juga. Yang mengatakan bahawa kami telah mencipta fungsi yang mendapatkan input daripada pengguna. Saya tidak tahu apa yang semua data jenis ini adalah. GetInt adalah jenis mudah, seperti mendapatkan integer entah bagaimana daripada pengguna. Dan GetString mungkin seperti get perkataan atau hukuman daripada pengguna. Jadi mari kita memberi tumpuan kepada itu. Dan saya akan kembali ke dalam perkakas dan saya akan pergi ke depan dan simpan fail ini sebagai, mari kita memanggil ia hello-2.c sebagai versi kedua saya. Dan mari kita membuat beberapa perubahan. Ini masa bukan pengekodan David keras, yang membuat sangat konsisten tetapi program underwhelming, bagaimana jika saya bukannya melakukan GetString? Sekarang perhatikan GetString mempunyai kurungan terbuka, kurungan tertutup, kerana ia tidak memerlukan apa-apa input. Ia hanya akan pergi mendapatkan rentetan daripada pengguna. Dan kini sebuah kata pada sintaks lain. Koma bertitik sahaja menamatkan baris kod. Anda tidak perlu mereka di mana-mana. Tetapi itu hanya bermakna saya dilakukan dengan baris ini kod. Biar saya bergerak ke satu lagi pernyataan atau fungsi. Rentetan mengisytiharkan pemboleh ubah. Rentetan ialah seperti berkata memberi saya mangkuk, sila. Dan biarlah saya meletakkan tali di dalamnya. Dan kini tanda yang sama. Apakah tanda yang sama yang hampir sama dengan? PENONTON: Berikan. DAVID J. MALAN: Yeah, memberi nilai. Jadi, jika saya, misalnya, panggilan fungsi ini GetString, dan kita akan melihat dalam seketika itu akan mendorong pengguna untuk rentetan. Ini seperti membiarkan saya kemudian menulis D-a-v-i-d di atas sekeping kertas. Dan apabila saya katakan tali s sama GetString, sama tidak benar-benar bermakna sama dalam pengaturcaraan C. Ini bermakna menyerah hak dari kanan sebelah ke sebelah kiri. Jadi saya telah mendapat rentetan. Dan tanda yang sama ertinya meletakkannya dalam simpanan bekas dipanggil s. Dan Kemudian lulus ini di luar untuk printf untuk benar-benar melakukan perkara. Jadi keputusan akhir kemudian akan kelihatan sedikit berbeza. Mari kita tidak membuat hello-2. Sama ada boleh bekerja. Anda ikuti bersama-sama. Buat hello-2 bekerja. Dot mengurangkan hello-2, Enter. Saya seolah-olah mempunyai tidak terhad gelung atau sesuatu. Tiada apa-apa yang berlaku. Mengapa? PENONTON: Ia membuat gelung tak terhingga. DAVID J. MALAN: Ini adalah gelung tak terhingga. Ia sejenis menunggu saya untuk benar-benar memberikan dengan beberapa input. Jadi biarlah saya pergi ke hadapan dan menaip dalam David, dan tekan Enter. Dan kini ia berkata "hello, Daud." Sekiranya saya sekali lagi. Mari kita taip Rob, "hello, Rob." Ini adalah yang paling teruk antara muka pengguna yang pernah. Pengguna adalah nampaknya sepatutnya tahu apa yang perlu dilakukan. Tetapi tidak kira. Menggunakan bangunan ini sama blok seperti dalam Scratch, kami boleh menyelesaikan masalah itu dan berkata sesuatu seperti nama anda, sila, kolon, ruang, ditutup quote, berhampiran kurungan, koma bernoktah. Jadi banyak lagi kebodohan dengan sintaks. Tetapi notis Saya baru sahaja menambah sekeping teka-teki di atas satu ini dan ke atas yang satu ini. Jadi sekarang jika saya jalankan lagi ini, hello-2, Enter. Tunggu satu minit. Apa salahnya? Ia tidak bertindak apa-apa yang berbeza. Yeah. PENONTON: Anda tidak membuka warung membuat lagi. DAVID J. MALAN: Saya tidak menjalankan membuat sekali lagi, betul. Jadi saya telah mengubah kod sumber saya. Tetapi sekali lagi, ada aliran itu. Kod sumber melalui pengkompil memberikan anda kod objek baru, atau 0 dan 1s. Jadi saya perlu untuk benar-benar make jalankan lagi hello-2 Enter. OK, sesuatu yang seolah-olah telah berlaku. Dot mengurangkan hello-2. Nama anda sila. Dan menjadi jelas sekarang, mengapa kursor pada baris yang sama? Tepat sekali. Saya tidak meletakkan garis sendeng terbalik di n di sini dalam kod saya. Jadi sekarang saya boleh menulis sesuatu seperti Daven, Enter. Saya boleh berlari lagi dan menaip sesuatu seperti Gabe, Masukkan, dan kita mendapat program yang berbeza lagi dan lagi dan lagi. Kini akhirnya kita akan perlu menggunakan beberapa keupayaan yang berbeza. Kita perlu memperkenalkan akhirnya beberapa syarat-syarat untuk melakukan perkara-perkara dengan bersyarat. Mungkin gelung supaya kita boleh melakukan perkara lagi dan lagi. Mungkin ia akan lebih baik jika kita boleh melaksanakan fungsi kita sendiri, seperti kita boleh melaksanakan sendiri printf atau versi kita sendiri GetString dan GetFlow, kerana akhirnya walaupun menggunakan persekitaran baris arahan ini yang boleh kita lakukan walaupun yang paling visual menarik perkara. Sesungguhnya dalam kesimpulan biarlah saya melakukan ini. Saya akan pergi ke depan dan tutup tingkap ini dan buka ikon ini di sini, yang hanya yang lebih besar versi yang tertanam tetingkap terminal. Jadi gedit bukan sahaja tempat untuk kod saya, tetapi juga terbina dalam tetingkap terminal, tetingkap hitam dan putih di mana saya boleh menjalankan arahan. Saya hanya berlaku untuk membuka versi yang lebih besar daripada ini. Dan sekarang saya akan pergi ke folder yang saya telah pun meletakkan terlebih dahulu di laman web kursus ini. Dan saya akan pergi ke depan dan membuka fail yang dipanggil thadgavin.c, yang ditulis oleh orang lain. Dan jika kita melihat ini, ini bukanlah jenis kod kami akan menulis sejak matlamat kod ini adalah untuk menulis tercantik mencari kod yang dia boleh, tidak kira sama ada atau tidak manusia lain boleh pernah memahami kod ini. Malah, setiap tahun ada apa yang dipanggil C pertandingan dikelirukan, yang adalah untuk Geeks sebenar yang menulis kod yang tidak ada orang lain boleh membaca, tetapi melakukan sesuatu sama ada benar-benar mudah atau benar-benar menakjubkan. Dan kita fikir kita akan menyimpulkan dengan wajah ini pada sesuatu yang cukup luar biasa anda mungkin telah melihat sekali sebelum. Tetapi kita akan berakhir pada ini nota, slash dot, thadgavin. Ini kemudian adalah apa yang menanti. Itu sahaja untuk CS50. Kami akan melihat anda pada hari Rabu. [MUZIK bermain]