[Bermain muzik] ANDI PENG: Ini adalah CS50, dan dialu-alukan untuk seminggu dua bahagian. Ini sebenarnya semasa minggu dua daripada class-- kita sebenarnya, minggu pertama kita telah mempunyai bahagian. Mengangkat tangan, berapa ramai daripada anda semua datang kepada seksyen super minggu lepas? OK, itu OK. Tak apa. Berapa ramai daripada anda menonton seksyen super minggu lepas? OKAY. Dan anda semua lakukan denda pada masalah menetapkan satu? Jadi saya akan mengambilnya yang kita ada sekumpulan anak-anak benar-benar pintar di dalam kelas ini dan perkara-perkara akan halus. OKAY. Jadi first-- Pertama, kita hanya akan secara ringkas pergi ke atas agenda untuk hari ini. Kami akan bercakap mengenai logistik kursus. Banyak anda mungkin mempunyai soalan mengenai bagaimana perkara-perkara yang dikendalikan dalam kursus ini. Kami akan menjawab mereka. Kami akan secara ringkas pergi ke gelung dalam kes apa-apa daripada anda semua terlepas seksyen super. Kami akan bercakap mengenai pemetaan ASCII. Kita akan bercakap tentang tatasusunan, fungsi, hujah baris arahan. Dan akhirnya, apa yang anda semua mungkin semua benar-benar mahu berada di sini untuk mempelajari, adalah pset2 anda. Kami akan mempunyai beberapa helah yang bagus dan tips untuk bagaimana untuk berbuat demikian. OKAY. Juga, kedua, kita ada banyak gula-gula di sini. Sesiapa yang suka gula-gula, hanya datang di sini. Dapatkan beberapa. Saya mempunyai sekumpulan. Kami mempunyai satu tan di pejabat. Saya tidak benar-benar mahu makan gula-gula sepanjang hari. Anda semua perlu makan semua gula-gula, kerana saya membawanya ke sini untuk anda semua. Hanya makan gula-gula. Akan ada gula-gula setiap bahagian. Jadi pertama, siapakah aku? Nama saya Andi Peng. Saya kepala TA CS50 sini di Yale. Dan sebagai tambahan kepada itu, saya juga akan adalah- jika ada orang yang like-- anda berjalan rakan, bahu untuk menangis. Jika pada malam sebelumnya kerana pset anda, anda tidak tahu apa yang berlaku, pukul saya. Kami akan simpati bersama-sama, dan sebagainya. Hanya tahu bahawa saya di sini sebagai sumber untuk anda sebagai barisan hadapan dalam membantu anda semua memikirkan bagaimana untuk menyelesaikan masalah dalam CS50 dan seterusnya. Emel saya ialah andi.peng@yale.edu. Saya juga akan menghantar individu e-mel dengan nombor telefon saya di dalamnya supaya tidak semua orang pada internet boleh melihat nombor telefon saya. Jangan ragu untuk menghubungi saya pada bila-bila. Serius, telefon saya ialah biasanya melekat pada tangan saya. Saya tidak boleh bertindak balas dalam beberapa minit. Saya tidak boleh bertindak balas dalam masa beberapa jam. Tetapi saya boleh menjamin anda, jika anda e-mel kepada saya, jika anda memanggil saya, teks saya, saya akan bertindak balas dalam tempoh 24 jam. Sering kali, saya akan bertindak balas sebelum itu, kerana saya memahami bahawa semua orang mendapat beberapa masalah, dan anda mahu jawapan anda dijawab dengan cepat. Walau bagaimanapun, jika anda memanggil saya 30 minit sebelum sekeping yang disebabkan Khamis night-- menjadi seperti, Andi, tolonglah aku, Saya tidak started-- saya boleh memberi anda bahu yang untuk menangis. Tetapi ia mungkin masa untuk berfikir tentang bagaimana untuk tidak masa yang akan datang. OKAY. Maaf. Bagaimana saya kembali? Di sana kami pergi. Jadi, dalam kursus ini, kita mempunyai tan sokongan untuk semua orang. Selain hanya bahagian di sini, yang anda setiap minggu dapat meluangkan 90 minit yang indah dengan saya, kami juga mempunyai waktu pejabat. Berapa ramai daripada anda semua sudah pernah ke waktu pejabat bantuan? Yang besar. Itu benar-benar baik untuk melihat, kerana kita mempunyai kakitangan lebih 45 TA dan CA dilatih untuk kursus ini yang berada di sini untuk membantu anda semua dengan psets anda. Isnin mereka diadakan di TEAL yang bilik darjah di 17 Hill House di sini di Yale. Selasa dan Khamis, mereka diadakan pada orang biasa. 8:00-11:00 cukup banyak setiap hari minggu. Masuklah, keluar. Sebarang masalah, tidak problem-- hanya datang dalam, dan kemudian kami akan membantu anda dengan itu. Kedua, sebagai tambahan kepada waktu pejabat dan bahagian, kami juga mempunyai seluar pendek. Adakah sesiapa yang pernah melihat beberapa daripada seluar pendek atau walkthroughs dalam video di laman web? OKAY. Supaya ia benar-benar, benar-benar membantu. Pengeluaran Harvard indah kami pasukan di sana di sekolah yang ke utara, mereka telah difilemkan dan dihasilkan ini video Walkthrough yang luar biasa. Mereka akan membawa anda langkah demi langkah melalui bagaimana untuk pergi tentang menyelesaikan masalah. Sering kali, jika anda keliru tentang satu konsep yang mudah, satu konsep tunggal, kita lihat, kerana kita mungkin mempunyai yang singkat di suatu tempat di laman web kami. Dan ia biasanya sumber yang besar yang perlu dicari apabila anda pertama hilang pada bagaimana untuk menangani masalah. Ketiga, kita juga mempunyai study50 dan reference50. Jadi belajar 50 pada laman web adalah hanya pautan. Ia adalah, saya fikir, study.cs50.net atau sesuatu seperti itu. Hanya di Google itu. Kami mempunyai banyak slaid disediakan. Kami mempunyai banyak seluar pendek dan perkara walkthroughs-- semua disusun sangat baik dan kemas untuk anda semua semua melayari, melihat apa-apa konsep bahawa anda keliru. Ia mungkin akan dilindungi di sana di study50. Reference50-- sama. Kami mempunyai banyak pelbagai nota sedia ada untuk anda gunakan. Dan akhir sekali, kita mempunyai apa yang dipanggil CS50 Bincangkan, satu forum di mana, jika malam sebelum yang anda lakukan masalah anda, katakan, anda mempunyai satu soalan. Masuk ke CS50 Bincangkan. Hantar soalan anda. Dan kemudian salah satu hundreds-- yang mungkin, thousands-- rakan-rakan mengambil talian kelas ini akan masuk. Dan mungkin seseorang boleh mendapatkan jawapan anda sebelum tin TA. Ia pada asasnya hanya satu forum online yang kami semua boleh gunakan untuk membincangkan masalah kami. Itu sejuk. OKAY. Jadi masalah menetapkan. Kita kira-kira betul-betul di tebal masalah set dua. Banyak di antara kita sudah berjuang melalui masalah menetapkan satu. Kita sudah tahu bahawa mungkin menunggu untuk malam terakhir yang perlu dilakukan pset anda bukan perkara yang bijak untuk dilakukan dalam CS50. Tips dan petua dasarnya untuk kejayaan sedang membaca keseluruhan spec. Berapa ramai daripada anda sudah membaca spec untuk pset 2? OKAY. Itu jumlah yang kukuh. Saya tahu anda semua mungkin telah diiktiraf sekarang ciri-ciri komputer yang benar-benar panjang. Mereka benar-benar, benar-benar panjang. Ia benar-benar sukar untuk membaca setiap baris itu dengan teliti perkataan demi perkataan. Anda mahu hanya skim di mana ia memberitahu anda untuk melakukan sesuatu. Saya boleh menjamin anda, jangan berbuat demikian. Jika anda berbuat demikian, anda mungkin akan terlepas di suatu tempat di mana ia memberitahu anda bagaimana untuk memulakan masalah atau ia memberitahu anda apa yang perlu nama masalah atau ia memberitahu anda, ini mungkin cara yang terbaik untuk mula melakukan masalah anda. Dan kemudian anda akan hilang. Apabila anda cuba untuk membaca anda spec pertengahan, banyak yang penting information-- dalam bahawa anda tidak akan dapat benar-benar percuma. Jadi membaca keseluruhan spec. Cuba untuk membaca keseluruhan spec sebelum anda datang ke seksyen, kerana itu, apabila kita bercakap tentang pset, kita semua boleh mempunyai idea apa yang sedang berlaku. Kedua, ini adalah satu konsep bahawa saya akan suka untuk rujukan banyak sepanjang semester kursus. Tetapi pada dasarnya, arah kita separuh jalan, bukan? Saya, sebagai TA dan Jason anda padang pengurus dan Scaz sebagai profesor anda dan David sebagai profesor anda dan semua Tas indah lain dalam kursus ini, pembantu dalam course-- ini kami akan melakukan yang terbaik untuk memastikan bahawa anda adalah bersedia sehingga berjaya dalam kursus ini. Kami akan mengadakan bahagian. Kami akan mengadakan waktu pejabat. Kami akan menjawab telefon yang panggilan, menjawab e-mel anda, melakukan semua yang kami mampu untuk membuat memastikan soalan-soalan anda menjawab. Walau bagaimanapun, membantu kami juga. Bertemu kita separuh jalan. Jika anda datang ke waktu pejabat tidak mempunyai pergi ke bahagian, tidak setelah melihat kuliah, tidak mempunyai tahu apa yang berlaku, menjadi seperti, membantu saya. Saya akan menjadi seperti, baik, saya minta maaf. Ia mungkin masa untuk memberi pinjaman bahu yang menangis pada, kerana saya tidak pasti apa yang boleh saya lakukan untuk membantu anda jika anda tidak cuba untuk sekurang-kurangnya membantu diri anda sedikit pada mulanya. Bertemu kita separuh jalan. Anda tahu, sila datang bersedia untuk menjawab dan mendapatkan bersedia untuk melibatkan diri dalam bahan. Ia membuat perkara yang begitu banyak lebih mudah untuk semua orang yang terlibat. Ya, itu cukup banyak ia. Penggredan. Maka pada sukatan pelajaran, ia cukup mendalam mengenai bagaimana kita gred. Tetapi pada dasarnya, butiran dalam hal ini adalah 50% daripada gred anda akan menjadi psets, yang indah, kerana itulah di mana anda menghabiskan besar sebahagian besar masa perjalanan anda. Kuiz 40%, dan anda projek akhir akan 10%. Terdapat dua kuiz sepanjang perjalanan semester. Saya rasa masa dan tarikh adalah juga disenaraikan di sukatan pelajaran. Cara yang kita akan dapat penggredan psets anda adalah bahawa kita mempunyai asasnya empat nilai-nilai yang kita tetapkan untuk setiap gred. Kami mempunyai nilai skop, ketepatan, reka bentuk, dan gaya. Jadi seperti yang anda lihat, itulah jenis kami formula untuk mengira psets. Tiga kami memberi yang paling berat kepada kebenaran, kerana jelas jurulatih anda perlu ujian bagi kes-kes yang kita mahu ia untuk menguji. Kalian semua mempunyai check50 termasuk yang arif. Ia adalah satu fungsi yang sangat berguna bahawa kalian semua boleh memuat naik kod anda untuk pelayan kami, di mana kita akan menyemak untuk anda. Dan anda telah melihat orang-orang wajah frowny, muka smiley. Mereka benar-benar, benar-benar membantu. Sila jangan menjadi pelajar yang suka try untuk Hardcode dalam semua jawapan kepada mereka. Saya pasti melihat pset mana seseorang melihat segala nilai-nilai check50 dan mereka hanya dikodkan dalam- jika jumlah ini, mencetak nombor ini. Jika jumlah itu, mencetak nombor itu. Jangan buat begitu. Walaupun secara teknikal check50 betul, cara anda menyelesaikan masalah tidak betul. Jadi hanya menggunakan check50 berhati-hati. Tetapi juga memastikan bahawa anda memahami bagaimana ia berfungsi, program ini berfungsi sebagai tambahan kepada check50, kerana kita tidak boleh menguji setiap kes kemungkinan check50. Kami akan menguji sebahagian daripada mereka. Reka bentuk asasnya, bagaimana direka dengan baik adalah kod anda? Jika anda daripada disalin menampal pelbagai baris kod ramai, banyak kali. Mungkin anda tidak mempunyai cukup reka bentuk yang terbaik dalam kod anda. Mungkin sudah tiba masanya untuk menambah gelung itu. Pada dasarnya, di sini ia hanya semua tentang cuba untuk melakukan kod anda, cuba untuk menulis kod anda sebagai cekap mungkin supaya program anda berjalan secepat yang mungkin. Akhir sekali, kami mempunyai gaya. Jadi gaya adalah jenis yang sewenang-wenangnya, istilah subjektif. Saya tahu bahawa kita secara rasmi mempunyai panduan gaya 50 untuk CS50, di mana ia memberitahu anda, oh, anda harus mempunyai ruang di sini. Anda perlu jenis format kod anda dengan cara ini. Anda perlu menamakan sesuatu dengan cara ini. Saya tidak benar-benar peduli, semata-mata, bagaimana anda memilih untuk gaya kod anda, hanya selagi anda kekal konsisten. Sebagai contoh, jika anda suka untuk meninggalkan ruang selepas empat anda sebelum gelung empat anda, hanya melakukan bahawa setiap kali. Jangan sejenis melakukannya. Tidak melakukannya masa yang lain. Jika anda ingin menyimpan kerinting ruang penyokong gigi cara yang tertentu, hanya sentiasa melakukannya dengan cara itu. Jangan sejenis melakukannya di suatu tempat di sini dan di suatu tempat tidak ada. Apabila kita penggredan, ia benar-benar sukar jika saya tidak mempunyai idea bagaimana anda memformat kod anda, perkara-perkara yang aneh dan keluar dari tempat. Jika anda hanya menyimpannya konsisten, ia lebih mudah bagi saya kerana yang lebih besar dapat membaca kod anda. Ia lebih mudah untuk anda sebagai pelajar dapat melihat melalui kod anda dan melihat apa yang salah dengan ia mengurangkan mengapa ada isu. Gaya adalah salah satu perkara yang paling mudah anda semua boleh lakukan untuk mendapat markah penuh. Pada dasarnya, jika anda hanya mengambil berat, jika anda bayar lima minit perhatian kepada kod anda setiap minggu, anda harus menjadi mendapatkan mata gaya penuh. Akhir sekali, kita mempunyai apa yang dipanggil pengganda skop. Scope-- Saya tahu ia adalah besar perkataan, terutamanya di dalam kelas ini. Tetapi skop, segala cara yang adalah bahawa anda cuba yang psets untuk yang terbaik daripada kemampuan anda. Sekiranya anda menyerah tiga daripada empat masalah anda dan tidak juga cuba yang terkini, anda mungkin akan kehilangan beberapa mata pada skop. Walaupun anda hanya mula masalah ini, melakukan yang terbaik untuk berjalan melaluinya. Walaupun ia tidak berfungsi, mengubahnya dalam, kerana itu menunjukkan dan menunjukkan kepada kami yang anda cuba, yang anda cuba set masalah untuk yang terbaik daripada kemampuan anda. Dan kemudian kita boleh memberikan mata penuh untuk skop. Skop juga sangat penting apabila kita bercakap tentang rendah drop skor pset. Jadi sepanjang yang semester, anda semua mempunyai sembilan psets. Dan kita akan benar-benar menjatuhkan skor yang paling rendah daripada orang-orang sembilan, tetapi hanya jika anda mempunyai mata skop penuh. Jadi, jika anda menghidupkan dalam pset tidak lengkap, malangnya, kami tidak boleh turun satu, kerana skop anda mata tidak selesai. Jadi, walaupun anda mempunyai seminggu yang buruk di mana anda mati dan anda sakit atau anjing mati, kucing anda meninggal dunia, dan anda terlalu banyak kerja rumah, hanya cuba pset. Adakah ia untuk yang terbaik daripada kemampuan anda. Jika ia tidak berfungsi, ia tidak mengapa. Hanya menghidupkan dalam. Sekurang-kurangnya kita boleh memberi anda mata untuk usaha. A untuk usaha dalam kelas ini. Sekurang-kurangnya rendah penurunan skor untuk usaha. Jadi yeah. Yang cukup banyak ia. Adakah sesiapa yang mempunyai soalan supaya ini tentang bagaimana kita gred dalam kelas? Atau mana-mana? Mana-mana supaya far-- bahagian, waktu pejabat? Sejuk. OKAY. Jadi ini adalah satu perkara yang tidak salah satu benar-benar suka untuk bercakap tentang. Saya tidak suka untuk membincangkan perkara itu. Kalian tidak benar-benar mahu untuk mendengar saya bercakap mengenainya. Tetapi malangnya, kita semua perlu bercakap mengenainya. David menghabiskan 20 minit syarahan bercakap mengenainya. Dan itu adalah subjek kejujuran akademik. Oleh itu, kita semua di sini mungkin telah menulis yang kadang-kadang esei dalam kerjaya Yale kami. Kita mungkin telah mendapat satu ceramah di mana kami telah telah diberitahu untuk tidak memplagiat esei kami, kerana kerja-kerja yang tidak kita. Dalam bidang sains komputer, kami mempunyai jenis yang sama konsep. Semua kerja yang anda serahkan, semua kod yang anda tulis perlu kod yang anda telah menulis. Sekiranya tidak kod yang anda telah disalin dari tempat lain. Sekiranya tidak kod yang anda telah googled dan plopped dalam dan anda tidak benar-benar tahu jika ia berfungsi. Anda jenis mempunyai rasa apa yang ia lakukan tetapi tidak benar-benar. Apabila ragu-ragu, pada dasarnya, ia hanya munasabah. Sukatan pelajaran kami, kami mempunyai senarai keseluruhan perkara kita lihat sebagai munasabah berbanding tidak munasabah. Sebagai contoh, munasabah adalah anda dan rakan anda membincangkan apa cara terbaik untuk pergi kira-kira secara logik menyelesaikan masalah. Itulah agak berpatutan. Apa yang tidak munasabah adalah jika anda lelaki mendapat bersama-sama, taip kod yang sama, dan bertukar kod yang sama. Bukan itu munasabah. Perkara yang sama, jenis esei. Jika anda ingin membincangkan dengan rakan anda, hey, ini adalah apa yang saya mahu menulis tentang. Ini adalah langkah-langkah yang saya ingin mengambil masa untuk menulis tentang hal itu, yang besar. Itulah indah. Sila bekerjasama antara satu sama lain. Jika anda semua mula menulis perkara yang sama, berubah dalam esei yang sama, yang kurang OK. Oleh itu, apabila ragu-ragu, hanya tidak melakukannya. Di sini, kita dalam CS50, kami mempunyai skrip jangka yang untuk mengautomasikan untuk menguji bukan sahaja ketepatan kod anda, tetapi juga keunikan kod anda. Oleh itu, sila tidak meletakkan kita dalam kedudukan yang mempunyai untuk merujuk kes anda ke EXCOMM. Sila hanya untuk semua orang, mari kita membuat ini satu pengalaman yang indah. Semua orang tahu yang lebih baik, kita semua lebih bahagia, dan kami semua ditubuhkan untuk berjaya dalam kursus ini. Sesuatu yang amat unik mengenai kelas ini yang saya rasa semua orang patut benar-benar memberi perhatian kepada adalah yang kita ada apa yang dipanggil penyesalan klausa dalam sukatan pelajaran kami. Jadi pada dasarnya, dalam masa 72 jam, jika anda percaya bahawa anda telah melakukan sesuatu yang anda tidak benar-benar pasti telah sesuai, sila datang kepada kami. Kami berjanji kepada anda bahawa dalam tempoh 72 jam kami akan mengendalikan kes itu diri kita sendiri tanpa merujuk kepada yang lebih tinggi kuasa dalam pentadbiran. Jadi, jika anda datang kepada saya dan berkata, Andi, hey, saya minta maaf, tetapi saya fikir ada beberapa baris dalam saya kod malam tadi bahawa saya jenis googled, mendapat kira Stack Limpahan, menyalin dan ditampal, dan saya benar-benar, benar-benar maaf tentang itu, beritahu saya. Jangan hanya biarkan ia membarah dan hanya berharap bahawa saya menangkapnya. Kami akan menangkapnya. Hanya datang kepada saya. Maklumkan kepada saya dalam masa 72 jam. Kami akan memikirkan penyelesaian. Dan kita berjanji bahawa kita tidak akan merujuk kepada pihak universiti pada asasnya. Jadi ia adalah demi kepentingan terbaik anda untuk hanya menjadi jujur ​​dengan semua orang yang terlibat dalam kursus ini. OKAY. OKAY. Oleh sebab itu, cepat sebelum Saya bergerak, adakah sesiapa mempunyai soalan mengenai logistik bagaimana kursus kita akan berlari, bagaimana bahagian akan untuk menjalankan, apa-apa itu? OKAY. Yeah. PENONTON: [didengar]? ANDI PENG: Ya. Jadi quizzes-- bagaimana ramai daripada anda dalam bahagian hari Isnin / Rabu? Berapa ramai daripada anda berada dalam Selasa / Khamis? OK, jadi ia adalah perpecahan yang kukuh di sini. Jadi cara kita menjalankan ia di Yale adalah kita yang akan mempunyai dua berasingan quizzes-- satu untuk setiap seksyen ini- yang akan diambil semasa kelas. Saya fikir ia adalah bulan Oktober, akhir bulan Oktober, sesuatu seperti itu, kerana minggu satu kuiz. Ya, jadi hanya datang ke kelas. Pada yang Isnin atau Rabu, anda akan mengambil kuiz. Pada yang Selasa atau Khamis, anda akan mengambil kuiz yang berbeza. Tetapi bahan yang sama akan dilindungi. Yeah. Soalan yang baik. Yeah. PENONTON: Di manakah kita pergi untuk memeriksa gred kita? ANDI PENG: Ya. Jadi saya akan menghantar satu e-mel apa sahaja setiap minggu apabila kuiz adalah graded-- atau, maaf, apabila psets digredkan. Psets biasanya bertukar di tengah hari atau Jumaat. Jadi saya berjanji bahawa saya akan cuba untuk mendapatkan mereka kembali kepada anda oleh tengah hari Jumaat berikutnya. Setiap kali saya gred Serangga, saya akan menghantar daripada pemberitahuan pada buku gred yang memberitahu anda skor anda boleh dilihat dalam talian. Jadi betul minggu ini, selepas saya menyelesaikan penggredan psets minggu lepas, anda semua akan mendapat e-mel pemberitahuan memberitahu anda, hey ini adalah di mana anda pergi untuk melihat gred anda. Dan anda boleh lihat setiap pecahan gred anda. Anda boleh lihat komen. Oh, perkara cepat juga. Bahagian komen di besar buku adalah di mana saya akan mungkin menghabiskan sebahagian besar penggredan masa saya. Jadi satu perkara yang benar-benar penting apabila anda semua sedang lihat gred anda pada psets anda bukan hanya mencari pada skor fizikal tetapi juga mengambil masa untuk benar-benar membaca komen saya. Selalunya yang memberikan anda maklum balas bagaimana anda menyelesaikan masalah. Jika anda perlu lakukan sesuatu yang sedikit lebih baik, kritikan membina biasanya adalah terbaik diberikan dalam bahagian komen. Oleh itu, sila, sila, saya akan menghabiskan masa menulis komen. Tolong, saya benar-benar akan menghargainya jika anda semua akan membaca komen-komen. OKAY. Sejuk. Baiklah. Oleh itu, kita akan mula bercakap dan hanya mengkaji dengan cepat beberapa bahan dari minggu sifar hanya jadi kami di laman yang betul untuk bermula masalah minggu ini. Jadi gelung sementara adalah salah satu daripada tiga jenis gelung kita dibincangkan sebelum ini di dalam kelas ini. A gelung sementara dasarnya ditulis dalam sintaks di mana, manakala keadaan tertentu, melakukan ini berulang kali, bukan? Fikirkan ia dalam grafik ini di sini. Anda akan bermula pada titik tertentu dalam kod anda. Anda akan memasukkan syarat gelung jika- Saya tidak mengetahui x kurang daripada satu. Jika itu adalah benar, anda akan untuk melaksanakan badan gelung. Dan anda akan terus melakukan itu lagi, sekali lagi, sekali lagi, berulang-over-- yang adalah mengapa ia adalah satu loop-- sehingga keadaan anda menjadi palsu. Jadi dengan cara ini, gelung sementara adalah salah satu cara yang lebih mudah untuk menulis apa-apa jenis syarat perlu mengulangi berulang-ulang. Hanya berhati-hati apabila anda menulis apa-apa jenis gelung bahawa anda mempunyai keadaan keluar sebagai dan kemas kini untuk apa sahaja adalah supaya gelung anda tidak hanya berjalan lagi dan tak terhingga. Walau apa pun, anda akan untuk ingin memastikan bahawa anda menukar beberapa aspek kod atau pada akhir gelung anda hanya untuk memastikan bahawa anda mempunyai cara yang untuk mara ke arah keadaan yang anda hendak bertemu untuk akhir. Adakah ini masuk akal untuk semua orang? Kita tidak mahu menjadi terperangkap dalam lingkaran ini di mana kita pergi sekitar dan sekitar dan tidak ada cara untuk memecahkan gelung. Dan setiap gelung dasarnya mempunyai cara melakukannya. OKAY. Kedua, ramai daripada anda dalam psets Mario anda mungkin terpaksa mengambil kerja jenis gelung. Ia dipanggil do manakala gelung. Pertama sekali, boleh sesiapa beritahu saya apa perbezaan antara tugasan yang manakala gelung dan gelung sementara itu? Yeah. PENONTON: do manakala gelung berjalan pada pertama [didengar]. ANDI PENG: Ya, betul-betul. Jadi lakukan semasa gelung sentiasa melakukan apa adalah di dalam do, di dalam kurungan di sana dan tidak syarat sebelum memeriksa the-- maaf, tidak kod yang sebelum memeriksa keadaan. Dan ini adalah amat relevan kepada kami di sini di dalam kelas ini, kerana kebanyakan masa kita akan mahu meminta pengguna untuk beberapa jenis input. Dan kemudian, bergantung kepada input yang mereka berikan kepada kami, maka kita boleh menilai, oh, adakah kita perlu meminta mereka lagi? Jadi dalam Mario, jika pengguna memberi anda ketinggian negatif, sebagai contoh, anda akan segera pertama dan melakukan apa sahaja yang ada di dalam. Maka anda akan untuk memeriksa sementara. Anda tahu, adalah negatif 1, ialah nombor positif? Jika tidak, saya akan pergi ke belakang dan mengulangi do dan ulangi dan mengulangi dan mengulangi sehingga mereka akhirnya memberikan anda beberapa yang anda suka, yang kita semua boleh mengambil kod kami. Ia agak penting bagi dasarnya input pengguna ada. Saya boleh menjamin apa-apa anda masa dalam pset mana kami meminta anda untuk memasukkan apa-apa jenis kod, kami mungkin akan memberikan anda kes ujian di mana kita berada akan memberi anda sesuatu yang tidak baik itulah akan cuba untuk memecahkan kod anda. Jika kita cuba untuk meminta anda untuk input integer, kita hanya boleh memberi anda rentetan dan melihat bagaimana anda akan mengendalikan itu. Jika kami meminta anda untuk mengambil usia, kami boleh memberikan anda satu nombor negatif untuk melihat bagaimana anda akan mengendalikan itu. Hanya pastikan anda semua ujian untuk kes di mana anda tidak mendapatkan yang terbaik input, mari kita hanya mengatakan. Dan do manakala gelung sering kali terbaik cara untuk mereka bentuk kod anda supaya ia memenuhi skop itu. OKAY. OKAY. Jadi ini mungkin adalah yang paling gelung kompleks daripada tiga yang kita telah melihat setakat ini. Dan ia kelihatan sangat menakutkan pada mulanya. Tetapi saya jamin anda, sebaik sahaja anda semua memahamkan bagaimana untuk menggunakan untuk gelung, ia adalah salah satu perkara yang paling berguna, paling alat yang berguna dalam senjata anda untuk bergerak ke hadapan dalam kelas ini. Jadi, sebagai contoh, di Awal, kita mempunyai blok yang sangat mudah ini yang hanya berkata mengulangi tertentu frasa beberapa kali. Dengan cara ini, SAJ-- itulah Scaz Andi Jason. Kami sering kali log SAJ e-mel kami. Jika kita mengatakan SAJ, jangan keliru. Itu hanya kita. Jadi dalam Awal, kita dapat mempunyai blok yang menyatakan, ulang Saya suka SAJ! 10 kali. Sangat mudah. Logik di sebalik itu adalah sangat, sangat mudah, bukan? Saya hendak pergi dahulu melalui pertama masa dan melihat bahawa, kali kedua dan melihat bahawa, kali ketiga, sebagainya dan sebagainya, sehingga anda memukul hingga 10. Dan cara kita akan menyatakan bahawa dalam kod adalah hanya melalui yang mudah untuk gelung. Jadi untuk, anda akan mengisytiharkan variabel sini, dalam kes ini, dengan int. Kami akan nama itu i. Kami akan memulakan ia kepada 0. Dan edisi berhenti adalah akan menjadi i adalah kurang daripada 10. Dan kemas kini akan menjadi i ++. Dan dalam gelung, ia akan untuk melaksanakan sehingga akhirnya ia sangat akhir condition-- di mana kes, ia akan memecahkan gelung. Perlu ada barangan yang anda lelaki itu mempunyai semua jenis dilihat sebelum ini dan terpaksa lakukan untuk masalah anda menetapkan satu. Adakah sesiapa yang mempunyai sebarang pertanyaan mengenai untuk gelung sekarang? OKAY. Yang besar. OKAY. Jadi bagi anda yang mempunyai membaca spec pset untuk minggu ini tahu bahawa kita akan mempunyai untuk mengambil kerja sesuatu yang dinamakan ASCII dan jadual ASCII. Lalu Daud dalam syarahan pergi ke sana secara ringkas bagaimana komputer essentially-- segala-galanya dikodkan dalam komputer di binari, dalam sifar dan satu. Dan cara bahawa komputer dapat untuk menyimpan nilai yang berbeza di samping kepada sifar dan satu adalah melalui pemetaan nombor-nombor untuk mewakili digit lain atau watak-watak dasarnya lain. Jadi dalam kes ini, seorang ASCII table-- semua ia adalah peta aksara, atau aksara, untuk nombor. Oleh itu, fail kod sumber dalam anda computer-- ia melihat, hey, sekumpulan sifar dan satu, sifar dan satu, sifar dan satu. Itulah yang disimpan di dalam memori sebenar komputer anda. Tetapi apabila kita manusia mahu berkomunikasi dengan komputer, kita want-- berkata, sebagai contoh, jika saya ingin huruf besar A, Saya akan memerlukan beberapa cara memberitahu komputer, oh, apabila saya menaip huruf besar A, maksud saya perwakilan ini dalam perduaan. Dan begitu cara kita melakukan yang melemparkan Perkara yang sewenang-wenangnya dipanggil jadual ASCII, di mana kita, sebagai manusia, kerana pengaturcara, sedikit masa lalu, kita sewenang-wenangnya memutuskan bahawa kita telah pergi untuk memberi nombor ini nilai kepada watak-watak ini. Jadi, anda semua boleh google dalam talian ini. Saya fikir ada pautan ke dalam anda pset-- hanya jadual ASCII peta, ASCII meja. Ia hanya diterjemahkan binari nombor ke dalam watak-watak. Dan ia akan menjadi sangat berguna untuk set masalah anda apabila anda mahu mengira apa-apa atau jika anda ingin memaparkan tertentu aksara atau integer atau memanipulasi watak-watak tertentu. Ia akan menjadi sangat penting untuk anda semua tahu bagaimana untuk mengemudi jadual ASCII. Jadi sebagai contoh, huruf besar A diwakili dengan jumlah 65. Dan huruf kecil diwakili oleh 97. Oleh itu, ia adalah penting untuk mengetahui bahawa Perbezaan di antara dua nilai ialah 32. Sering kali, jika anda perlu menukar daripada satu kepada yang lain, perbezaan adalah 32. Dan jangan bimbang jika anda jenis keliru mengenai perkara ini pada mulanya. Kami akan pergi ke atas bagaimana kita akan mengambil kerja ini dalam kod yang sebenar. OKAY. Jadi bagi anda dengan komputer riba keluar, berasa bebas untuk tarik sehingga jadual ASCII, kerana ini akan mungkin memerlukan anda semua untuk rujukan apa yang watak-watak yang. OKAY. Jadi mengetahui bahawa tertentu Watak peta ke nombor tertentu, jika saya berjalan hanya yang pertama garis yang code-- printf yang, huruf kecil, tolak huruf besar A. Adakah sesiapa mempunyai tekaan pada apa yang akan menjadi mencetak skrin sekarang? Jadi pertama sekali, apa yang tidak huruf kecil mewakili? Apa nombor ialah dikodkan dalam jadual ASCII. Maaf? PENONTON: 97? ANDI PENG: 97, yang besar. Dan apa yang huruf besar A? PENONTON: 65. ANDI PENG: Jadi apa yang 97 tolak 65? PENONTON: 32. ANDI PENG: OK. Jadi, apa yang anda semua berfikir akan berlaku apabila saya input yang baris kod ke dalam komputer saya? PENONTON: [didengar]. ANDI PENG: Maaf, bersuara. Tidak risau. Ini adalah sangat selamat alam sekitar, tolak kamera. Kita semua akan supaya- tiada kebimbangan. Hanya kita semua akan berpura-pura seperti ia hanya kita penyejukan dalam bilik ini. Tidak risau. Tiada soalan terlalu bodoh. Tiada jawapan adalah jawapan yang bodoh. Saya mungkin akan membuat kesilapan dalam perjalanan pengajaran saya. Serius, lelaki, hanya berkata tanpa berpikir ia keluar. Yakinlah pada diri sendiri, anda tahu? Oleh itu, apa itu? Yang mengatakan bahawa jawapan yang lepas? OKAY. Menjerit bahawa baik dan jelas. PENONTON: 32? ANDI PENG: 32. OK, mari kita berjalan kod ini dan melihat jika itu yang berlaku. OKAY. Jadi seperti yang anda semua boleh jenis lihat, notasi biasa saya telah ditubuhkan di sini untuk bagaimana kita akan menggunakan apa-apa jenis program dalam komputer kita. Kami mempunyai fungsi utama kami dalam fungsi utama kami. Saya hanya akan menyalin dan paste baris ini kod. Juga berhati-hati apabila anda semua menyalin dan menampal kod. Kadang-kadang pengusaha tertentu jangan paste lebih betul. Dalam kes itu, tolak tanda sebenarnya sengkang. Dan supaya komputer tidak mengambilnya. Jadi saya terpaksa berulang- fizikal taip semula itu. Hanya berhati-hati apabila kamu lakukan itu. OKAY. Kami akan menjalankan ini di sini. Oleh itu, kita akan cd ke dalam section2 kami. Saya telah dipanggil asciimath program ini. Jadi ingat, apabila kita menjalankan apa-apa program, kami ingin pertama menyusun dengan menjalankan melalui make kami. Dan kemudian kita mahu benar-benar menjalankan program ini dengan melakukan dot-slash. Oleh itu, kita akan ./asciimath. Betul, ada kita pergi. Dan kita melihat 32. Bagus. Anda berhak mendapat sekeping gula-gula. Gula-gula untuk anda. Maaf. Baiklah. OKAY. Oleh itu, kita boleh kembali kepada contoh kami di sini. Aah, tidak. Aah. OKAY. Saya hanya akan menyimpannya seperti itu. OKAY. OKAY. Jadi seperti yang anda semua boleh lihat, kita boleh lakukan banyak perkara yang sangat menarik, banyak perkara yang sangat sejuk, banyak perkara yang sangat rumit yang melibatkan Aksara ASCII dan nombor. Setelah anda mendapatkan ke bawah untuk beratur lima, yang banyak untuk mengikuti bersama-sama. Kami tidak akan pergi melalui bahagian. Jangan ragu untuk, jika anda boleh, sebab ia di atas kertas pertama pada apa yang sepatutnya berlaku apabila anda masukkan seperti rentetan nilai. Sebagai contoh, di garisan terakhir, kami mempunyai z-- yang mewakili number-- tertentu a-- yang juga mewakili tertentu number-- campur 1 modulos 26 ditambah huruf kecil a. Jika anda semua terus membaca melalui ini, anda boleh melihat corak yang datang dalam bagaimana kita memanipulasi kod. Saya sangat, sangat menyarankan selepas seksyen kamu semua seorang lelaki pergi ke depan dan input mereka semua dalam komputer anda dan melihat apa jenis nombor yang keluar dan pemikiran melalui mengapa mereka adalah berlaku, kerana bagi psets anda ia akan menjadi benar-benar penting untuk anda memahami mengapa perkara-perkara tertentu yang berlaku. Kesemua kuliah ini akan berada dalam talian. Jadi tidak ada kebimbangan tentang cuba untuk fizikal tulis nota. Talian segala-galanya. Seksyen ini sendiri akan berada dalam talian. Semua kod sumber saya bahawa Saya berjalan akan berada dalam talian. Yeah. Adakah anda masih mempunyai soalan? PENONTON: Apakah modulos? ANDI PENG: OK. Jadi modulo merupakan pengendali yang akan cukup penting untuk pset lelaki anda di sini. Jadi cara pengusaha dalam C dan dalam kerja-kerja pengaturcaraan adalah bahawa anda mempunyai apa yang dipanggil simbol bahagian dan simbol modulus, yang hanya seperti tanda peratus. Jadi, dalam C, apabila anda melakukan integer dibahagikan dengan bilangan bulat dengan tanda palang, C mempunyai kecenderungan untuk mahu mengurangkan off semua mata perpuluhan, kerana integer mahu untuk menukar kepada integer. Ia tidak akan mahu menjadi dua dengan sekumpulan perpuluhan semua selepas itu. Jadi, jika saya melakukan 3 dibahagikan dengan 2, ia akan untuk memotong 0.5 dan hanya memberikan 1. Jadi, itu sesuatu yang boleh sangat berhati-hati apabila anda berada melakukan apa-apa jenis matematik dalam pengaturcaraan, adalah bahawa nombor anda mungkin tidak nombor bahawa anda telah berfikir, itulah sebabnya pembundaran dalam anda Serangga lepas adalah sangat penting. Modulo memberikan anda bakinya. Jadi, sebagai contoh, jika saya 3 modulo 2-- jadi 3 tanda peratus 2-- ia akan memberi anda baki itu. Jadi 3 dibahagikan dengan 2 1.5. Ia adalah 1 baki 1. Ia akan memberikan anda 1, yang adalah baki itu. Oleh itu, apabila kamu bergerak melalui jadual ASCII, modulo akan berakhir menjadi sesuatu yang sangat penting, dan kami akan berbincang di kemudian hari. OKAY. Jadi sesuatu yang cantik, agak baru dan cantik unik yang kita telah dibincangkan pada minggu ini konsep apa array adalah. Jadi pelbagai adalah yang pertama jenis struktur data bahawa kita akan hadapi dalam kelas ini. Semua struktur data adalah semacam sewenang-wenangnya, benar-benar perkara-perkara seperti struktur bahawa kita sebagai pengaturcara telah diwujudkan, bahawa kita telah dimasukkan ke dalam kod kami yang boleh mengandungi bahagian-bahagian lain kod. Jadi dalam hal ini, array-- yang menganggapnya sebagai kabinet fail, di mana jika anda membuka berbeza rak kabinet fail anda, anda boleh mengakses perkara yang berbeza. Dalam ingatan, array adalah hanya melakukan perkara yang sama pada komputer anda. Anda boleh mempunyai blocks-- kita berbeza memanggil mereka indices-- array. Ia hanya seperti satu blok, rak memori bahawa kami telah diwujudkan dalam anda komputer yang anda boleh memasukkan perkara-perkara tertentu dalam ruang yang berbeza. Jadi dengan array, anda sentiasa perlu specify-- anda perlu nyatakan mengisytiharkan pelbagai dalam format berikut. Anda akan pertama menentukan jenis data bahawa anda ingin membuat array. Jika saya mahu pelbagai integer, Saya akan meletakkan int di sana. Jika saya mahu pelbagai rentetan, Saya akan meletakkan tali di sana, nama array anda, dan kemudian anda akan mempunyai tanda kurung siku. Dan di dalam tanda kurung siku, anda akan mempunyai saiz array anda. Sesuatu yang benar-benar penting untuk perlu diingat apabila membuat array adalah bahawa, apabila anda membuat pelbagai, saiz yang tidak boleh berubah. Jadi, jika anda tahu bahawa sekarang anda mempunyai pelbagai saiz 10, anda tahu bahawa saya akan mempunyai 10 sel-sel dalam atau 10 indeks dalam pelbagai ini, dan ia tidak akan untuk mengembangkan atau mengurangkan tidak kira apa, dan bahawa ada kini hanya 10 blok ruang diperuntukkan dalam ingatan anda yang boleh menyimpan sehingga 10 perkara apa sahaja yang anda telah meletakkan. Jadi dengan cara ini, satu jenis data pelbagai, struktur data yang array adalah sangat berbeza daripada beberapa orang lain kita akan dapat meliputi kemudian di dalam kursus ini. Yeah. Sebagai contoh, jika anda mahu mencipta pelbagai saiz 3 yang terkandung pembolehubah integer-- oh, maaf, sudah temperature-- dan suhu, daripada sudah tentu, adalah integer. Oleh itu, kita akan mewujudkan int, yang merupakan jenis data apa yang kita mahu untuk menyimpan. Kami akan memanggil suhu ini demi tatanama penamaan sesuatu yang kita semua faham. Dan kita akan mempunyai tanda kurung siku. Dan kita mahu tiga nombor. Oleh itu, kita akan meletakkan tiga di dalamnya. Sesuatu yang benar-benar penting yang perlu diingat adalah bahawa tatasusunan adalah sifar diindeks. Apa yang bermakna bahawa anda mula dengan indeks 0, dan anda berlari melalui saiz array tolak 1. Jadi, sebagai contoh di sini, kita mempunyai pelbagai saiz 3. Ia akan dapat untuk mengadakan tiga nilai. Tetapi nombor themselves-- yang nombor, array, indeks itu, array, 0 melalui 2. Jadi lelaki, benar-benar, benar-benar berhati-hati apabila anda akan melalui masalah anda menetapkan dan mewujudkan apa-apa jenis pelbagai, kerana banyak daripada masa-masa itu benar-benar, benar-benar mudah untuk lupa bahawa. Saya sebenarnya tidak mempunyai indeks 3, yang saya kini hanya mempunyai indeks 2. Dan jika anda cuba untuk mengakses indeks ketiga, ia akan menjadi apa yang dipanggil terminator nol. Ia tidak akan benar-benar wujud dalam array. Dan komputer adalah tidak akan seperti itu. Jadi berhati-hati apabila anda mengakses perkara yang hanya untuk memastikan bahawa anda masih ingat yang tatasusunan adalah sifar-diindeks. OKAY. Jadi contoh yang pertama adalah hanya salah satu cara untuk mewujudkan array. Contoh yang kedua, saya mempunyai di bawah adalah cara yang berasingan mewujudkan apa yang data yang sama struktur yang kita baru sahaja dimasukkan. Jadi, daripada segi fizikal berjalan melalui dan meletakkan dalam suhu 0 sama dengan apa sahaja, suhu 1 sama dengan apa sahaja, suhu 2 setaraf apa sahaja, saya boleh sebenarnya hanya terus mencipta semuanya dalam satu baris ke dalam suhu kurungan persegi sama. Dan notis dalam kes ini, anda tidak perlu untuk menentukan berapa besar lokasi anda, kerana komputer akan pergi melalui dan melihat bahawa ada tiga elemen dalam orang-orang pendakap kerinting. Dan ia akan tahu, OK, Saya memerlukan pelbagai saiz 3. Anda tidak akan perlu input dengan cara yang berikut. Dan juga, ya, cara itu. Adakah sesiapa yang mempunyai soalan mengenai bagaimana kita membuat array atau bagaimana struktur array berfungsi? Yeah. PENONTON: [didengar]? ANDI PENG: Ya, betul-betul. Jadi jika anda adalah untuk mengisytiharkan dan memulakan pelbagai kaedah berikut, yang merupakan cara yang kedua, anda hanya boleh meninggalkan mereka. Dan komputer secara automatik tahu bahawa ia perlu mengira berapa banyak unsur sedang dalam orang-orang pendakap kerinting, dipisahkan dengan tanda koma. Jadi di sini mereka melihat 65, 87, 30. Jadi komputer tahu, oh, ada tiga integer. Yang saya tahu untuk mencipta nama lokasi suhu dengan tiga elemen di dalamnya. Soalan yang baik. Yeah. PENONTON: Bukankah ia mungkin untuk mewujudkan pelbagai dengan pelbagai jenis data yang boleh dimasukkan ke dalamnya? Sebagai contoh, dengan bilangan bulat [didengar]? ANDI PENG: Bagi maksud kelas ini, tidak, sekarang. Apabila anda membuat data struktur seperti array, anda memberitahu komputer, hey, saya memerlukan anda untuk memperuntukkan sebanyak ini memori di dalam pemacu keras saya, dengan setiap sel menjadi sebilangan bit. Ingat kita belajar pada minggu sifar yang data yang berbeza jenis mempunyai saiz yang berbeza? Jadi, sebagai contoh, tali adalah satu jumlah yang berbeza ruang dari char, yang adalah satu jumlah yang berbeza ruang daripada integer. Dan jadi jika anda tidak menentukan dan anda mencampur dan sepadan dengan apa jenis pemboleh ubah anda ada, komputer ini akan menjadi sangat keliru. Dan ia tidak akan tahu berapa banyak memori untuk memberikannya kepadamu. Jadi untuk tujuan yang betul sekarang, komputer hanya boleh mengenali satu jenis array. Soalan yang baik. OKAY. Jadi secara semula jadi, Soalan kedua kita ada adalah, baik, sekarang kita telah membuat satu pelbagai dan kami telah meletakkan semua perkara-perkara ini dalam array, bagaimana kita akan dapat mengaksesnya? Jadi struktur biasa yang kita selalu mengakses array indah kami untuk gelung. Saya berjanji kepada anda semua bahawa kita mungkin akan melihat banyak orang ini di sini. Pada dasarnya, bila-bila masa yang anda mahu untuk memasukkan nilai ke dalam pelbagai atau anda mahu untuk mengakses mereka, Cara terbaik untuk melakukannya adalah untuk gelung, kerana dalam untuk gelung, anda tahu berapa kali anda berada akan mahu untuk menjalankan melalui array, kerana anda mempunyai edisi berhenti, bukan? Dan setiap kali anda menjalankan melalui, anda boleh mengakses elemen yang berbeza array. Dan juga, ini adalah sebab mengapa biasanya kita mula kami untuk gelung pada nilai 0, kerana apabila anda mengakses tatasusunan, anda boleh mengakses indeks sifar. Dan supaya ia selari dengan sangat baik. Kalian mungkin mahu menulis untuk int i sama dengan 1. i adalah kurang daripada atau sama dengan 3. Tetapi ia tidak akan bekerja cukup baik di sini, kerana anda hanya mempunyai unsur-unsur 0, 1, dan 2. Dan jadi jika anda adalah untuk mula i anda di elemen 1, 2, dan 3, anda akan berakhir berjalan daripada batas-batas lokasi anda, dan perkara-perkara yang tidak baik akan berlaku. Jadi saya berharap anda semua melihat Shalawat yang mengapa dalam kelas yang lebih awal kami mengajar anda semua bagaimana untuk menjalankan dan memformat untuk gelung cara yang kami naiki. Ini kerana, kini kami telah beralih ke dalam tatasusunan, anda boleh melihat mengapa 0 Bei sendiri sangat baik untuk mengakses. Jadi cara kita melakukan yang bahawa- Saya hanya mencetak it out di sini demi mencetak ia keluar. Tetapi saya mempunyai pemegang tempat saya, koma. Dan pengaksesan sebenar bahagian yang sedang berlaku. Nama array dipanggil suhu. Jadi ia adalah suhu dan i-ke-elemen array. Jadi sebagai untuk gelung berjalan melalui, ia akan bermula dari 0. Ia akan mencetak Indeks 0 array ini. Kemudian ia akan mencetak daripada elemen pertama. Kemudian ia akan mencetak daripada yang kedua. Dan kemudian kita akan pecah. Adakah semua orang jelas mengenai bagaimana yang yang berlaku? Yang besar. Baiklah. Jadi di sini kita mempunyai cara berkata, jika kita tidak mahu untuk keras-kod dalam- saya sebagai pengaturcara. Saya tidak mahu untuk benar-benar secara fizikal dimasukkan ke dalam setiap elemen individu array ini. Jika saya mahu dan bukannya mempunyai nilai-nilai input pengguna, apakah cara yang terbaik untuk berbuat demikian? Nah, di sini saya telah mencipta fungsi ini indah, di mana saya boleh mengisytiharkan array. Jadi int scores-- mari katakan kita ingin pelbagai yang memegang gred semua 18 daripada pelajar-pelajar di sini dalam bahagian ini. Saya fikir kami mempunyai sedikit lebih daripada 18 kanak-kanak hari ini. Tetapi demi contoh ini, mari kita menganggap kita mempunyai 18. Saya akan mewujudkan skor nama pelbagai dengan jenis int, kerana skor, sudah tentu, ialah nombor. Dan saya akan mempunyai 18 dalam kurungan persegi, kerana itulah bagaimana ramai pelajar saya mahu dapat untuk menyimpan puluhan. Dan cara saya mengisi array adalah bahawa saya berjalan melalui untuk gelung, sudah Sudah tentu, dengan 0 yang indeks 0 saya. Dan kemudian dengan 18 yang saya berhenti edisi, kerana ada 18 elemen dalam array. Dan kemudian saya akan melakukan printf, Masukkan skor bagi student-- yada yada yada. Bolehkah sesiapa beritahu saya mengapa di sini Saya mencetak i ditambah 1 dan tidak i? Ia adalah jenis helah soalan, tidak benar-benar. Ia tidak benar-benar secara fizikal menjejaskan perjalanan kod. Yeah. PENONTON: [didengar] 0? ANDI PENG: Ya, betul-betul. Ia agak janggal untuk mengatakan, hey, anda seorang pelajar yang 0 dalam kelas ini. Ia agak pelik. Jadi kita, sebagai manusia, tidak benar-benar suka untuk memikirkan bagaimana komputer berfikir. Jadi, walaupun dalam komputer, ia menyimpan nilai-nilai indeks 0-th, apabila kita manusia, kita tidak benar-benar ingin merujuk kepada diri kita sebagai sifar. Oleh itu, apabila saya hanya mencetak itu, Saya akan mencetak dan menambah 1 hanya demi kejelasan. Oleh itu, apabila saya mencetak, saya akan menjadi boleh mencetak pelajar 1 hingga 18. Ia tidak memberi kesan sebenarnya pengendalian kod di dalam apa jua cara, cara saya mencetak. Tetapi berhati-hati apabila anda berada sebenarnya mengakses array. Apabila anda melihat markah i, perhatikan di sini saya sebenarnya mengakses indeks 0 dan bukan 1 tambah 0-- atau 1 campur 1, dalam kes ini, indeks supaya bahawa ia sebenarnya jelas. Adakah semua orang jenis OK pada bagaimana ini sedang berjalan melalui dan dengan segala indeks Saya meletakkan nilai ke dalam pelbagai dan mewujudkan pelbagai dengan 18 nombor bahawa pengguna akan input? OKAY. Sejuk. OKAY. Kami sedang bergerak ke dalam sesuatu yang cantik berkaitan untuk bahagian ini ditetapkan juga. Saya tahu dalam kuliah, David-- maaf, anda mempunyai soalan? PENONTON: Bolehkah anda membesarkan ia? ANDI PENG: Ya, jadi saya cuba. Tetapi saya tidak tahu. Untuk sebab-sebab tertentu, ini versi PowerPoint adalah benar-benar tidak berfungsi baik dengan paparan. Oleh itu, kita hanya akan untuk memastikan ia seperti ini. Semua ini akan dimuat naik dalam talian. Maaf, guys. Yeah. OKAY. Oleh itu, kita juga boleh mempunyai tali. Jadi, jika anda seorang lelaki sebenarnya notice-- Saya tahu Rob pergi ke ini dalam syarahan yang bahawa dia did-- rentetan sebenarnya hanya pelbagai aksara, jika anda berfikir tentang hal itu, bukan? Rentetan adalah nama atau ayat atau perkataan, bukan? Jika saya membuat rentetan bernama Hanya nama Andi-- saya, A-N-D-I. Anda fikir itu sebagai hanya satu pembolehubah. Tetapi sebenarnya, ia dipecahkan ke hanya pelbagai aksara. Jadi ia mendapat watak yang disimpan di dalam nilai array. Ia mempunyai watak n disimpan dalam indeks kedua dan seterusnya dan sebagainya. Jadi, dalam apa-apa cara, kita sebenarnya mempunyai jenis ini struktur yang ditetapkan dalam meletakkan untuk tali kami. Jadi di sini, jika saya input perkataan "makan" - jadi rentetan perkataan sama mendapatkan tali. Jika saya input perkataan "makan," bahawa segi fizikal cara bahawa komputer saya adalah menyimpan bahawa rentetan dalam ingatan saya. Dan jika saya mahu untuk menjalankan melalui itu dan cetak yang out-- jadi untuk ke i sama dengan sifar, ingat, dalam kuliah, kita sesuatu yang dilindungi yang dinamakan strlen, atau panjang tali. Oleh kerana saya tidak benar-benar tahu berapa besar array adalah apa jua inputting-- pengguna Sebagai contoh, saya diinput perkataan "makan", dan saya tahu itulah tiga aksara, bukan? Jadi saya boleh dimasukkan ke dalam tiga terdapat dan semua akan halus. Tetapi jika sesuatu input pengguna anda itulah nombor yang berbeza nilai, anda akan tidak dapat benar-benar tahu bahawa apabila anda program kod anda. Jadi cara kita mengendalikan kes-kes ujian seperti itu adalah bahawa kita mempunyai sesuatu dipanggil strlen, yang hanya satu majlis yang memberitahu anda berapa lama tali adalah. Jadi strlen dengan perkataan. Kata-kata saya makan. n sama strlen dengan perkataan. Bolehkah seseorang beritahu saya apa yang nilai sebenarnya di sana? Apa n mewakili hak kini, dalam contoh ini, jika saya terpaksa makan? PENONTON: 3. ANDI PENG: 3, betul-betul. Oleh itu, kita ada untuk int i sama sifar, n bersamaan 3, pada asasnya. Dan saya akan menjalankan sehingga ia kurang daripada 3i ++. Dan ia akan pada dasarnya pergi melalui dan melakukan perkara yang sama. Ia akan mencetak setiap nilai dan memberi anda E-A-T. Ia hanya menandakan satu cara yang berbeza daripada menulis. Itu akan sangat membantu. Yeah. PENONTON: Apa manfaat meletakkan n yang sama dengan perkataan strlen di dalam yang untuk gelung [didengar]? ANDI PENG: Ya. Jadi jika saya supaya- berkata, sebagai contoh, jika saya berbuat demikian dan kemudian do-- oop-- itu, kod saya, ia akan benar-benar menjadi seperti melakukan perkara yang sama. Walau bagaimanapun, cara yang dibentangkan Daud menjelaskan ia semasa kuliah, jika ada daripada anda semua ingat, adalah bahawa, sebagai manusia, sebagai pengaturcara, kita benar-benar cuba untuk program kami kod supaya komputer kita mempunyai untuk bekerja sebagai minimum yang mungkin, supaya bahawa kod kami adalah sangat cekap. Jadi, jika saya mempunyai bahawa di sana, apa yang akan berlaku melalui gelung saya ialah saya pertama akan mengisytiharkan pembolehubah yang dinamakan i akan menjadi 0. Aku pergi untuk memeriksa, oh, apakah strlen dengan perkataan? Oh, strlen ialah 3. Begitu juga saya kurang daripada tiga? Ya betul. Saya akan berjalan. Dan kemudian kali kedua kembali sekitar gelung, saya akan kenaikan i. i akan menjadi satu. Dan saya akan menyemak, oh, tetapi apa yang strlen dengan perkataan? Oh, ia adalah tiga. Dan adakah itu seolah-olah jenis membazir, setiap kali anda berjalan melalui gelung, untuk memeriksa majlis itu, walaupun strlen perkataan pernah benar-benar berubah? Jadi ia adalah kuasa tambahan untuk komputer. Apabila anda mula bercakap tentang perkara-perkara yang berbilion-bilion dan berbilion-bilion tempat-tempat panjang, bayangkan komputer anda perlu secara fizikal melalui dan menyemak semua bahawa setiap kali tunggal. Oleh itu, untuk membuat hanya demi kecekapan, kita cenderung untuk hanya melakukan ini, kerana dengan cara ini kami hanya memanggil fungsi yang sekali pada mulanya, dan setiap kali ia akan melalui ia akan untuk menyimpan nilai 3 di sana, bahawa anda tidak perlu terus-menerus memeriksa setiap masa. Yeah. PENONTON: Maaf. Hanya [didengar]. Bolehkah anda int n sama strlen dan meletakkan yang di atas di luar untuk gelung juga? ANDI PENG: Ya. Anda boleh berbuat demikian, sama sekali. Sebab kita ada dalam sini adalah kerana cara untuk kerja-kerja gelung adalah bahawa ia dipanggil pembolehubah tempatan dalam erti kata bahawa semua yang anda berada mewujudkan bahagian dalam gelung hanya wujud di dalam satu gelung. Jadi pembolehubah i sahaja wujud dalam orang-orang kurungan. Dan di sini pembolehubah n juga hanya wujud dalam orang-orang kurungan. Jadi jika anda adalah untuk menggunakan strlen daripada perkataan beberapa kali ke bawah di bawah, sememangnya cara terbaik untuk berbuat demikian adalah untuk mengisytiharkan ia sehingga bahagian atas supaya anda tidak perlu melakukannya sekali. Yeah. PENONTON: Kenapa anda mempunyai baris baru selepas peratus melihat jika anda mahu meletakkan semua huruf sebelahnya memisahkan? ANDI PENG: Oh, saya mahu mencetak mereka semua pada setiap baris. Tidak kira. Ya, ia pemformatan a. Itu satu soalan yang baik, walaupun. Ya, jika saya mahu untuk mencetak semuanya pada hanya satu baris, Saya tidak akan mempunyai melontarkan yang masuk. OKAY. Semua orang yang baik? OKAY. Sejuk. Jadi saya fikir saya telah bercakap cukup. Giliran anda semua untuk berjalan melalui kod dan beritahu saya apa yang salah di sini. Di mana pepijat? Jadi seperti yang anda lihat, saya telah mengisytiharkan lokasi baru jenis tali dinamakan kelas. Dan saya telah diinput Sam, Jess, dan Kim ke dalamnya. Dan saya cuba untuk mencetak semua elemen array. Bolehkah seseorang beritahu saya mengapa ini akan memberi saya masalah? Saya akan memberikan anda semua 10 saat untuk berfikir tentang perkara ini. OKAY. Ya? PENONTON: Adakah pusat di sebelah kiri sama dengan 3 atau [didengar]? ANDI PENG: Betul. Jadi berapa kali yang ini sebenarnya akan berjalan melalui gelung ini? PENONTON: Empat. ANDI PENG: Tepat sekali. Ia akan ke melalui empat kali. Ia akan berjalan melalui pada 0, 1, 2, dan 3, kerana elemen mereka i adalah kurang daripada atau sama dengan 3. Ia tidak akan berhenti apabila ia adalah 2. Ia akan menjaga usaha sehingga ia mencecah 3. Dan seperti yang kita tahu, hanya ada tiga elemen dalam array kita yang sebenarnya. Jika kita cuba untuk mengakses keempat elemen atau indeks 3, anda akan melanda di suatu tempat dalam memori yang tidak wujud. Ia dipanggil terminator nol. Tiada apa-apa akan berada di sana. Komputer anda tidak akan sangat gembira dengan anda. Yeah. Adakah sesiapa yang mempunyai soalan kenapa yang telah berlaku? Itu satu kawasan yang sama untuk mengelakkan. Yeah. PENONTON: Tidakkah pertama slaid juga mempunyai rentetan 2? ANDI PENG: No. Jadi pada asasnya, apabila anda membuat array, hak kurungan di sana, yang number-- semua ia memberitahu anda adalah bagaimana banyak unsur yang saya ada. Ia tidak benar-benar memberitahu saya indeks apa-apa. Jadi dalam kes ini, saya tahu saya mahu untuk menulis dengan tiga tempat, dengan tiga tempat fizikal kepada memegang apa sahaja yang saya mahu untuk memegang. Jadi itulah sebabnya nombor tiga di sana. Walau bagaimanapun, jika saya mahu untuk benar-benar mengaksesnya, jika saya mahu mengatakan, printf jumlah pendakap kelas, kemudian anda akan benar-benar meletakkan indeks fizikal di sana. Ya, soalan yang baik. PENONTON: Begitu juga dengan fizikal indeks sepatutnya [didengar]? ANDI PENG: Saya minta maaf. Bolehkah anda bercakap sedikit? PENONTON: Jadi adalah indeks fizikal [Didengar] setiap kotak? [Didengar]? ANDI PENG: Ya. Jadi, saya akan kembali ke sini. Fikirkan di sini. Kami mempunyai pelbagai saiz 3. Ada tiga tempat, seperti, ruang letak fizikal di sini. Tetapi mereka yang bernama 0, 1, dan 2. Jadi, jika saya mahu untuk mengaksesnya, cara yang saya mengaksesnya printf adalah daripada apa yang saya mahu di sini. Anda perlu mencetak daripada nama itu, kerana maka komputer tahu, oh, saya perlu melihat dalam pelbagai ini untuk indeks 0. Yeah. Tetapi saiz ia tidak berubah. Saiz adalah 3, tidak kira bagaimana anda melabelkan mereka. OKAY. Semua orang yang baik? PENONTON: Jadi setiap kali saya [didengar]? ANDI PENG: OK. Jadi dalam kes ini, kita tidak benar-benar masuk ke dalam sekarang dalam perjalanan. Tetapi tahu bahawa rentetan seperti saya katakan sebelum ini, rentetan pada dasarnya pelbagai watak. Jadi, jika saya membuat array tali, saya jenis mempunyai pelbagai array watak-watak, bukan? Jadi dalam kes ini, kerana saya mempunyai pelbagai tali, jika anda adalah untuk input perkataan yang benar-benar panjang, yang masih mengambil satu ruangan sahaja, kerana itulah tali satu. Tetapi jika anda adalah untuk memikirkan watak-watak array itu, kemudian yang yang mengambil lebih banyak watak-watak daripada mana-mana perkataan lain berada. Tidak benar-benar penting untuk sekarang. Tetapi itu hanya secara umum bagaimana ia bekerja. OKAY. Jadi ini adalah sesuatu yang saya akan memberitahu anda lakukan banyak sepanjang semester. Saya perlu berehat suara saya. Kalian perlu merangsang diri kamu sendiri. Banyak anda mungkin perlu tidur sekarang. Saya memasukkan masalah rawak di mana kita sebagai kelas atau anda dengan rakan kongsi di sebelah anda akan untuk menghabiskan beberapa minit berbincang bagaimana kita akan pergi tentang menyelesaikan atau mewujudkan program seperti ini. Jadi sekarang, kita mahu untuk mewujudkan program-- yang kita akan memanggilnya upper.c-- yang mualaf perkataan huruf kecil untuk kelas atas yang huruf besar rentetan, maaf. Perkataan dalam tali, maaf, sinonim. Saya akan menukar mereka bermaksud perkara yang sama. Yeah. Mengambil masa beberapa minit. Ia tidak perlu ditulis dalam mana-mana bahasa. Hanya kod pseudo atau secara logik bagaimana kita lakukan walaupun pergi tentang melakukan apa-apa masalah. Yeah. [SIDE PERBUALAN] Saya juga perasan bahawa anda semua can-- Saya jenis lihat sudah program ini. Saya rasa kekurangan saya mod penyampai menjadi masalah. Tetapi ia OK. [SIDE PERBUALAN] Ya, sila, guys. Datang mendapatkan gula-gula. Datang mendapatkan gula-gula. PENONTON: Ya! [SIDE PERBUALAN] ANDI PENG: Juga, ya, Saya akan mula membuang gula-gula pada orang yang tidak menjawab soalan. Jadi, anda perlu semua soalan jawapan. Atau, saya rasa orang yang jangan menjawab soalan. Ya, cara lain di seluruh. [SIDE PERBUALAN] PENONTON: [didengar] ANDI PENG: Ya. Yeah. [SIDE PERBUALAN] Baiklah, guys. Mengambil, seperti, 10 lagi saat. [SIDE PERBUALAN] OK, guys. Jadi sebelum kita mula cuba untuk sebenarnya fizikal menulis kod, tabiat yang baik untuk membangunkan ialah kita mahu jenis pertama sebab keluar secara logik bagaimana kita akan melakukannya. Anda ingin memastikan, sebelum anda secara fizikal mula cuba untuk kod di Mario, yang anda buat memastikan bahawa anda mempunyai kod pseudo anda. Yang membawa anda melalui apa yang anda perlu buat begitu itu, apabila anda secara fizikal menulis program anda kemudian, anda lebih baik dapat menangkap kesilapan kod dan perkara-perkara seperti itu anda. Oleh itu, kita akan hanya mula oleh- dalam bahasa Inggeris, dalam kod pseudo, adakah sesiapa yang mahu memberi saya penjelasan yang generik bagaimana kita akan pergi tentang melakukan ini? Yeah. PENONTON: [didengar]. ANDI PENG: Pasti, tidak ada kebimbangan. PENONTON: Bolehkah anda bertanya kepada atau meminta seseorang untuk mendapatkan tali 1-- yeah, tali, dan then-- ANDI PENG: Ya, jadi ini adalah permulaan yang baik. Saya akan mula menaip, maaf, seperti yang anda bercakap. So-- PENONTON: huruf kecil --Di nombor-nombor yang lebih tinggi, bukan? Atau huruf kecil mempunyai jumlah yang tinggi? ANDI PENG: Tepat sekali. PENONTON: Sebab itu kita tolak 32 dari apa sahaja [didengar]. ANDI PENG: Great. Oleh itu, kita jenis mempunyai pengertian umum bagaimana untuk bekerja kira-kira masalah ini. Mengetahui bahawa kita telah jenis belajar cara fizikal yang tali disimpan dalam ingatan, apa yang anda sudah tahu bahawa anda akan mungkin perlu menulis dalam kod anda untuk bergerak melalui tali? PENONTON: Untuk gelung. ANDI PENG: A untuk gelung, betul-betul. Yang besar. Oleh itu, kita jenis mempunyai generik pseudokod diturunkan yang jenis memberi anda catatan dalam bagaimana anda akan bergerak menyelesaikan masalah ini. Sekarang bahawa anda mempunyai ini, anda boleh rujukan untuk masa lain apabila anda cuba untuk benar-benar menulis kod anda. Oleh itu, kita sebenarnya boleh pergi di sini. Dan saya telah mendapat fungsi yang dipanggil upper.c-- ada ia is-- hanya template kosong sekarang bahawa anda semua akan membantu saya memikirkan bagaimana untuk menulis baris ini tidak code-- baris kod. Ia akan menjadi banyak baris kod. Apabila memulakan apa-apa jenis daripada pset kosong, apa yang perkara pertama yang saya perlu ingat untuk melakukan? PENONTON: [didengar]. ANDI PENG: Great Ya. Termasuk. stdio.h. Sering kali ini adalah di kalangan kesilapan orang yang paling mudah akan membuat apabila mereka menulis, adalah bahawa mereka akan lupa untuk memasukkan perpustakaan penting yang mereka perlukan. Jadi, jika ia waktu pejabat dan anda seperti, Saya tidak tahu mengapa kod saya tidak berfungsi. Bolehkah anda beritahu saya mengapa ia tidak berfungsi? Kami akan mengatakan adakah anda # include? Anda harus # include ia. OKAY. Jadi kami mempunyai standard I / O di sini. Adakah itu satu-satunya perpustakaan kita akan perlukan di sini? Apa lagi yang kita akan lakukan? Maaf. Seseorang hanya menjerit itu? PENONTON: [didengar]. ANDI PENG: Terdapat anda pergi. OKAY. Dan bagaimana saya pergi tentang memulakan apa-apa jenis fungsi, apa-apa jenis fungsi utama dalam program kami? Int utama. OKAY. Apa yang saya diletakkan di dalam sini? Apakah perkara pertama yang anda mahu lakukan? Jika kita ingin mendapatkan rentetan daripada pengguna, apa yang kita akan mempunyai yang perlu dilakukan pada baris pertama ini? Maaf, anda semua hanya berasa bebas untuk bersuara dan kuat. Hanya melaungkan apa sahaja. PENONTON: Minta pengguna? ANDI PENG: Bagaimanakah kita boleh berbuat demikian? Ask-- aku akan menaip "meminta pengguna"? PENONTON: Printf. ANDI PENG: OK. Printf. Apa yang saya mahu untuk printf? PENONTON: Taip sesuatu. ANDI PENG: Seperti itu? Guys, berpura-pura seperti saya komputer. Secara fizikal beritahu saya setiap langkah bahawa saya perlu menaip di sini? Adakah saya melakukan sesuatu yang salah? Sekiranya saya sudah menaip sesuatu? PENONTON: Anda perlu sebut harga. ANDI PENG: Saya memerlukan sebut harga? OKAY. OKAY. PENONTON: Dan garis kemudian baru. Koma bertitik. ANDI PENG: koma bernoktah? OKAY. Yang baik. PENONTON: Dan mungkin menentukan yang anda mahu dalam huruf kecil? ANDI PENG: Great. Kalian ketawakan saya lupa untuk meletakkan koma bernoktah. Saya jamin anda di suatu tempat dalam perjalanan kelas ini, anda akan lupa untuk meletakkan koma bertitik, dan ia akan membawa anda tiga jam untuk memikirkan mengapa kod anda tidak berfungsi. Ia berlaku kepada kita semua. Ia mungkin akan berlaku kepada anda. Dapatkan dalam tabiat yang baik dengan menggunakan koma bertitik. OKAY. PENONTON: Adakah anda ingin untuk melakukan garis sendeng terbalik di dalam? ANDI PENG: Pasti. Adakah anda mahu lakukan garis sendeng terbalik di dalam? PENONTON: Ya. ANDI PENG: Great. OKAY. Apa yang perlu saya lakukan seterusnya? PENONTON: Dapatkan tali. ANDI PENG: Dapatkan tali. Jadi, apa yang saya menaip? Seseorang? PENONTON: String s. ANDI PENG: String s. PENONTON: GetString. ANDI PENG: Somebody, anda boleh beritahu saya di mana fungsi GetString ini adalah datang dari? PENONTON: string.h. ANDI PENG: string.h? Anda fikir ia adalah dari string.h? PENONTON: [didengar]. ANDI PENG: Terdapat anda pergi. Ia dari CS50.h. Jika anda sentiasa keliru di mana satu Fail perpustakaan adalah atau fail header adalah, google secara literal string.h, dan saya akan memberitahu anda apakah semua fungsi yang berada dalam string.h. OKAY. Jadi sekarang bahawa saya telah mencipta tali dan saya telah meminta pengguna untuk itu, Saya telah disimpan dalam pembolehubah bernama s, apa yang perlu saya buat sekarang? PENONTON: Semak jika ia dalam huruf kecil. ANDI PENG: Maaf? PENONTON: Semak jika ia dalam huruf kecil. ANDI PENG: Baiklah, mari kita buat itu. Bagaimana saya boleh berbuat demikian? Sebenarnya, bagi maksud kelas sekarang, kita hanya akan menganggap semua yang bahawa input kita sudah dalam huruf kecil. Jika anda mahu untuk memeriksa, anda akan hanya tambah kenyataan bersyarat yang diperiksa, yang berlari melalui setiap elemen pelbagai tunggal dan ditanda jika ia antara nilai-nilai tertentu. Saya terlupa apa jumlah daripada nilai-nilai huruf kecil berada. Anda boleh melihat ia di atas meja ASCII. Tetapi yeah, itu adalah satu titik benar-benar baik. Tetapi sekarang, kita hanya akan menganggap bahawa semua tali kita input berada di dalam huruf kecil. OKAY. Jadi bagaimana saya akan pergi tentang masalah ini akan datang? PENONTON: Untuk gelung. ANDI PENG: Untuk gelung? OKAY. Beritahu saya apa yang perlu menaip. PENONTON: Untuk int i sama dengan 0. ANDI PENG: OK. PENONTON: Oh, sebenarnya, maka anda melakukan koma dan melakukan n bersamaan strlen. ANDI PENG: perkara itu penting yang saya rasa dia perasan di sini adalah bahawa kita tidak perlu mengatakan int n kali kedua kita lakukan ini. Hanya tahu bahawa dalam untuk gelung apabila anda mengisytiharkan, anda sebenarnya tidak memerlukan int daripada kali kedua yang anda lakukan pembolehubah. Anda boleh mengatakan n strlen. PENONTON: Of s. ANDI PENG: s. OKAY. PENONTON: Kemudian koma bernoktah. ANDI PENG: Pasti. PENONTON: Kemudian [didengar] n. Kemudian saya ++. ANDI PENG: Great. Baiklah. Apa yang kita mahu di dalam ini untuk gelung sekarang? Ingat, jika kita akan berjalan melalui rentetan dan berjalan melalui pelbagai, kita mahu untuk memeriksa perkara di dalamnya. Apa yang kita akan perlukan? Ini adalah jenis bahagian yang agak rumit sekarang. Sesiapa yang mempunyai tekaan? OKAY. Jadi pertama, bagaimana kita walaupun mengakses? Bagaimana kita walaupun cek pertama atau mengakses elemen dalam array? Bagaimana kita berbuat demikian? Apa yang notasi yang kita gunakan untuk berbuat demikian? Apa nama array ini dipanggil? Ia dipanggil s, bukan? Ingat, apa-apa tali sentiasa array. Jadi s kurungan i, kan? Kerana itu adalah nilai semasa atau nilai indeks kita memeriksa. Dan kita akan menetapkan bahawa sama supaya- kita mahu nilai huruf kecil, bukan? Kami mahu menghidupkan yang lower-- maaf, kami mahu huruf besar yang. Kami mahu menghidupkan huruf kecil nilai ke dalam huruf besar yang. Dan sebagainya like-- Saya minta maaf, apa nama awak? PENONTON: Heidi. ANDI PENG: Maaf? PENONTON: Heidi. ANDI PENG: Heidi. Seperti Heidi berkata pada mulanya, kami mungkin akan memerlukan the-- kami mungkin akan perlu tolak 32 dari apa sahaja charc iaitu, bukan? Kerana pada ASCII yang meja, perbezaan antara huruf kecil dan huruf besar adalah 32. Oleh itu, apabila kita lakukan ini, kami mungkin akan mahu tolak 32, bukan? Oleh itu, kita akan melakukan s i. Adakah semua orang faham kenapa saya berbuat demikian? Kerana sekarang, dalam pelbagai kami, kita memeriksa indeks 0, bukan? Dan dalam indeks 0 daripada tali, itulah watak yang pertama. Dan watak yang kita akan untuk menganggap ia kecil. Jika kita mahu menjadikannya huruf besar, kita perlu tolak 32 daripada nilainya, kerana dalam ASCII kami meja, itulah bagaimana kita mendapatkannya ke depan sepadan nilai yang menjadikan ia huruf besar. Adakah semua orang memahami bahawa? Yeah. PENONTON: Bolehkah anda juga jangan huruf kecil minus-- yang ANDI PENG: Ya, supaya sebenarnya benar-benar baik. Saya akan kembali kepada itu soalan selepas kita melakukan ini. Yeah. Dan kemudian jika saya mahu melihat apa yang berlaku, Saya mungkin akan mahu cetak, bukan? Seseorang memberitahu saya apa Saya ingin mencetak di sini. PENONTON: printf peratus c garis sendeng terbalik [didengar]. Itulah nilai [didengar] s i. ANDI PENG: s i, maaf? PENONTON: [didengar]. ANDI PENG: Saya tidak tahu. Apa pendapat kamu? PENONTON: Baiklah, saya wouldn't-- Saya rasa saya tidak akan bring-- Saya akan mengambil ia keluar di dalam, kerana [didengar]. ANDI PENG: Oh, yang dapat kamu lakukan itu? PENONTON: Ya. ANDI PENG: Mari kita meninggalkan dengan cara yang ia adalah, dan saya akan menjelaskan mengapa kemudian. Ingat, walaupun anda mempunyai pemegang tempat, anda ingin meletakkan kurungan di sekitarnya. Baiklah. Jadi ini harus menjadi fungsi yang kukuh di sini. Mari kita berjalan dan lihat jika ia menyusun. Membuat atas. Uh-oh. Yang tidak kelihatan terlalu baik. Kenapa ini berlaku? Seperti mana-mana kesilapan, anda mahu pergi kembali dan bermula dengan yang pertama, kerana biasanya sebab-sebab satu kesilapan banyak kesilapan lain selepas itu. Di sini kita melihat upper.c: 18: 25, yang memberitahu saya dalam program ini dinamakan upper.c, pada baris 18, kesilapan tersirat mengisytiharkan perpustakaan fungsi strlen dengan jenis blah unassigned--, saya tidak tahu apa yang berlaku selepas itu. Semua ia memberitahu saya sekarang sedang sesuatu perkara yang berlaku di strlen itu. Dan komputer keliru, kerana ia seperti, saya tidak tahu apa yang strlen adalah? Apakah yang mungkin memberitahu anda anda hilang? PENONTON: Anda hilang [didengar]. ANDI PENG: Anda betul. Tepat sekali. Jadi ini adalah di mana ia penting untuk memastikan bahawa setiap fungsi yang anda gunakan dalam anda kod ini mempunyai header yang betul memfailkan perpustakaan, atau pun anda akan mendapat banyak kesilapan dan kod anda tidak akan untuk mengetahui apa yang sedang berlaku. Jadi, kita akan termasuk string.h sini. Sekarang apabila kita cuba untuk menyusun atas. Menyusun dengan betul. Mari kita menjalankan program ini. Jadi menaip sesuatu dalam huruf kecil. Apa yang anda semua mahu menaip? Melaungkan sesuatu. Baiklah, Charly hanya berjalan masuk. Kami akan menaip nama Charly. Charly dalam huruf kecil. Dan mudah-mudahan, mudah-mudahan, ini adalah akan melaungkan dan meludah keluar Charly dalam huruf besar. Yay! tidak semua orang memahami bagaimana Saya pergi tentang menyelesaikan itu? Cara yang saya boleh memanipulasi menggunakan integer untuk menyelesaikan sesuatu yang Saya mahu lakukan dalam tali, kerana watak-watak dan integer boleh dirujuk dengan cara yang sama kerana pemetaan ASCII. Jadi untuk kembali ke tempat anda, jika saya mahu meletakkan di sini dan bukannya 32 huruf besar A tolak huruf kecil yang sama seperti itu, yang akan bekerja sama juga, kerana itulah hanya sekadar yang Perbezaan antara kedua-dua nilai. Jika saya ingin charly again-- ini. Oh tidak. Saya rasa kita pergi dengan cara yang salah, ya? PENONTON: [didengar] huruf kecil a. ANDI PENG: Terdapat anda pergi. Ya. Dan dari memuntahkannya charly. Jadi berhati-hati apabila anda menolak nilai-nilai ingat yang mana satu lebih besar dari yang lain. Sebagai contoh, di sini saya terlupa yang kecil yang sebenarnya lebih besar daripada A. huruf besar itu, apabila saya cuba tolak mereka dengan cara yang lain sekeliling, saya mendapat negatif 32. Dan komputer saya adalah seperti, Saya tidak tahu apa itu. Ia kebarangkalian hanya beberapa rawak nilai yang tidak begitu baik. Dan jadi pastikan bahawa anda menolak panjang yang betul untuk mencari aksara yang anda mahu. OKAY. Adakah sesiapa yang keliru tentang bagaimana kami pergi tentang menulis fungsi ini? OKAY. Jadi sebenarnya, fungsi yang sudah wujud dalam ctype.h perpustakaan dipanggil. Perpustakaan yang dikenali sebagai ctype.h. Fungsi ini sebenarnya adalah telah ditulis untuk anda. Ia dipanggil ke atas. Dan sebagainya untuk tujuan Serangga ini, anda akan untuk mendapati bahawa anda benar-benar mahu menggunakan banyak fungsi-fungsi terkandung dalam perpustakaan ctype itu. Untuk bahagian atas, yang lebih rendah, adalah atas, adalah lower-- mereka adalah semua fungsi bahawa anda akan dapat menggunakan yang sangat, sangat cepat dalam kod anda sendiri yang betul-betul apa ini tidak. Kami menulis bagaimana untuk menukar rentetan kepada huruf besar. Tetapi ini adalah benar-benar kod di bahawa orang lain telah menulis dan bahawa anda boleh mengakses melalui fungsi yang berbeza. Ya? PENONTON: Jadi, anda hanya menyalin A di sana dan melakukannya untuk setiap huruf tunggal? ANDI PENG: Ya, kerana saya tidak mengambil berat tentang nilai a. Saya hanya peduli bahawa perbezaan di antara mereka adalah 32, bukan? Perbezaan antara huruf kecil b dan huruf besar B juga 32. Dan perbezaan antara c dan huruf besar C sentiasa 32. Saya hanya perlu mengambil berat tentang Perbezaan antara kedua-dua, kerana semua surat-surat mengikuti pola yang sama, bukan? Jika saya mempunyai perbezaan antara salah seorang daripada mereka, Saya tahu apa perbezaan antara semua daripada mereka adalah. Soalan yang baik. Yeah. Semua orang yang baik? OKAY. Oop. OKAY. Jadi satu lagi konsep itu akan menjadi sangat berguna kerana anda terus membangunkan kod anda adalah idea ini mewujudkan fungsi atau abstrak. Jadi sekarang, kita semua telah diambil algebra. Dalam algebra, anda diajar bahawa terdapat Perkara ini dipanggil fungsi mesin, di mana jika anda input satu jenis nombor, ia berjalan melalui fungsi ini dan keluar timbul output yang berbeza, bukan? Dalam kod, perkara yang sama berlaku dalam apa-apa jenis fungsi. Jadi saya boleh secara fizikal menulis dalam badan saya kod saya kenyataan utama yang sebenarnya tidak apa sahaja mayat kod di lakukan. Tetapi di luar itu, saya juga boleh menulis fungsi yang berbeza yang melakukan banyak perkara yang berbeza. Sebagai contoh, kami telah pun mula menggunakan sebahagian daripada mereka. Printf-- yang merupakan fungsi yang orang lain telah menulis bahawa kita boleh memanggil kod kami. Untuk upper-- dalam kes ini, upper-- adalah fungsi yang lain kami telah menulis bahawa kita boleh memanggil kod kami. Oleh itu, saya rasa mengapa kami juga mempunyai fungsi? Apa kata kita hanya mencebur ia semua dalam baris yang sama kod? Ia menjadikannya mudah untuk semua orang. Well, maka falsafah yang adalah, pertama sekali, organisasi. Ia benar-benar menjengkelkan akan melalui kod seseorang itu dan satu fungsi seperti printf. Jika anda semua benar-benar tahu apa yang fungsi printf melibatkan menulis, itu, seperti, 1000 baris kod. Jika setiap kali saya mahu printf sesuatu, Saya terpaksa menulis 1,000 baris kod, yang akan menjadi benar-benar menjengkelkan untuk membaca, bukan? Sebab itu kita baru sahaja dicipta fungsi abstrak ini yang kita ada pun seseorang lagi yang telah menulis di tempat lain. Dan setiap kali kita perlu menggunakannya dalam kod kita, kita hanya perlu untuk mengatakan printf. Dan yang mampu untuk menggunakan fungsi orang lain telah menulis kod kami. Ia menjadikannya lebih mudah organisasi untuk membaca kod. Kedua, ia memudahkan. Ia memudahkan langkah-langkah yang kita ada yang perlu diambil untuk menyelesaikan masalah kita. Printf, fungsi seperti printf, fungsi seperti ke atas segala sesuatu yang membolehkan kita untuk memudahkan kod kami ke bawah supaya ia lebih mudah. Dan perkara terakhir yang boleh gunapakai. Jadi hakikat yang kita ada yang printf fungsi dipanggil yang kita boleh memanggil yang berbeza masa dan membolehkan ia menjadi boleh diguna semula. Jika saya menulis printf, Saya hanya menulis sekali. Ia wujud hanya dalam satu tempat itu. Jika saya mahu melakukannya sekali lagi, saya akan perlu copy dan paste semua itu ke dalam talian kedua saya kod. Itulah sebabnya jika kita mewujudkan fungsi yang wujud di luar utama kami, kita hanya boleh memanggil dan menggunakan semula bila-bila masa kita perlu supaya ia lebih mudah bagi kami kerana program untuk menulis. Jadi cara yang kita benar-benar akan menulis fungsi yang hampir sama, bukan? Ini adalah jenis yang pertama contoh di mana kita akan melihat fungsi mengambil pada gaya berbeza daripada tidak sah utama int kami. Dalam kes ini, jika saya mahu menulis fungsi yang dipanggil q, bukan? Dan nilai int di sini adalah semua memberitahu saya, apa yang saya mahu ini berfungsi untuk kembali kepada saya? Jika saya mahu kiub integer, Saya akan mahu input. Ini adalah parameter. Saya akan input bernilai jenis int. Dan saya akan kembali satu lagi nilai jenis int. Dan di sini, kerana anda boleh lihat, semua yang saya lakukan adalah cubing apa-apa input saya ialah sebagai output saya dan mengembalikannya. Jadi semua fungsi ini tidak adalah mengambil beberapa jenis integer. Ia membiak dengan sendirinya dua kali supaya ia kiub berkuat kuasa. Dan kemudian ia mengembalikan apa sahaja output yang. Jadi dalam kes ini, ia adalah dua baris kod yang kita terpaksa menulis tambahan. Tetapi jika kita mahu memanggil apabila ini beberapa kali, ia lebih mudah untuk menaip satu yang talian di sini yang dalam kiub daripada perlu melalui beberapa kali. Jadi cara yang pada dasarnya apa-apa pemformatan untuk apa-apa jenis fungsi akan wujud adalah seperti di sini. Oleh itu, kita mempunyai nama fungsi. Dalam kes ini, ia dipanggil kuasa tiga. Dan kita sebut sahaja kiub kerana ia adalah mudah untuk diingati. Anda boleh menamakan ia persegi dan ia benar-benar boleh cubed. Tidak mengapa. Hanya nama yang anda berada memberikan fungsi anda. Hak ini di sini, int, adalah jenis parameter yang anda perlukan. Jadi apakah fungsi ini perlukan untuk beroperasi? Nah, ia memerlukan input. Saya menamakannya input. Anda boleh menamakan apa sahaja yang anda mahu. Tetapi saya memerlukan sesuatu jenis int. Ia akan benar-benar melaksanakan apa yang ada di dalam dari sini, badan fungsi. Dan kemudian jenis pulangan di sini, int-- ini semua ia memberitahu saya adalah fungsi ini akan kembali kepada saya dalam int. Jadi ia akan ke luar int, dan ia akan memberikan anda kembali int. Adakah semua orang memahami bagaimana format seperti ini berfungsi? Sejuk. OKAY. Jadi jangan bimbang jika ini seolah-olah hak abstrak sedikit sekarang. Ini adalah sesuatu yang kita akan bercakap tentang. Kami akan menyelam lebih dalam kemudian di dalam kursus ini. Cara bahawa apa-apa jenis tahap yang lebih tinggi abstraksi ini kerja perkara adalah bahawa, dalam ingatan, dalam komputer anda, segala-galanya disimpan dalam jenis ini timbunan, hendaklah yang saya katakan. Jadi di sana di bahagian atas. Saya tidak tahu jika anda semua boleh melihat bahawa juga. Saya akan cuba untuk zum masuk. Di sini, di bahagian atas, kita mempunyai teks fizikal apa komputer adalah interpreting-- semua sifar dan orang-orang yang wujud dalam komputer kita. Dan kemudian kami yang dimulakan data dan tidak diisytiharkan data, apa yang kita panggil pembolehubah global. Jadi pembolehubah yang wujud di semua program dan merentasi keseluruhan anda, pada dasarnya, kod. Jangan bimbang jika anda semua jenis tidak jelas mengenai perkara ini. Ia tidak benar-benar perkara sekarang. Dan kemudian kita mempunyai apa yang dipanggil timbunan dalam timbunan. Fikirkan timbunan secara literal sebagai seperti timbunan perkara, timbunan berbeza perkara yang ditolak di atas antara satu sama lain yang menyimpan pelbagai pembolehubah dan sintaks dalam kod anda. Dan maka di sini di bahagian paling bawah, kita mempunyai pembolehubah persekitaran daripada apa yang anda melaksanakan dalam hanya talian kecil anda kod. Dan kami hanya akan zum dalam di pihak timbunan yang sebenar. Jadi di sini, jika kita untuk zum dalam pada hanya kawasan ini tindanan, ini adalah apa yang kelihatan seperti. Dan ini sebenarnya cukup penting apabila kamu bercakap tentang fungsi, kerana notis bahawa memori komputer anda adalah menyimpan pembolehubah dan fungsi-fungsi dan parameter kedua-dua anda fungsi dan pembolehubah utama anda di tempat-tempat yang berbeza. Jadi sekarang, utama adalah fungsi sebenar bahawa anda melaksanakan dalam kod. Anda telah parameternya disimpan di sini dan pembolehubah tempatan disimpan di sini. Pembolehubah tempatan hanya bermakna apa-apa ubah yang wujud hanya dalam fungsi itu. Dan di atas, anda mempunyai ini fungsi berasingan yang dipanggil kuasa tiga. Anda perlu itulah parameter serta orang-orang penduduk tempatan. Dan sebab yang anda boleh lihat di sini ialah apa yang berlaku apabila kiub mengambil dalam nilai daripada fungsi utama anda adalah bahawa sebenarnya ia menyalin bahawa lebih. Jadi, jika saya mahu kiub 2 dan kembali 8, yang 2 sebenarnya diinput sebagai parameter dan ia disalin supaya anda mempunyai ia sedia ada di dua tempat yang berbeza dalam ingatan. Dan anda perlu berhati-hati pada mengingat yang salah seorang daripada mereka anda sebenarnya memanipulasi. Dan satu contoh apa yang berlaku yang akan sangat, sangat buruk wujud di sini. Jadi di sini, saya peroleh, dalam teori, program di sini, fungsi utama bahawa saya mengisytiharkan int x sama dengan 1. Saya mengisytiharkan int lain y bersamaan 2. Dan kemudian saya berjalan ia melalui fungsi ini dipanggil pertukaran, di mana saya menganggap bahawa ia bertukar-tukar dua nilai. Dan kemudian saya akan mencetak mereka keluar, kan? Itulah yang saya mahu program ini perlu dilakukan. Jadi mari kita turun dan membaca. Jadi, jika saya benar-benar menulis yang berbeza fungsi, seperti yang anda lihat, kita mempunyai fungsi utama kami di sini. Dan kemudian kita mempunyai kami Fungsi kedua di sini. Swap tidak sah. Tidak sah hanya bermakna bahawa itu tidak akan kembali apa-apa. Nama berfungsi dipanggil swap, dan ia akan pengambilan dua pembolehubah, int dan int b, dari [didengar] fungsi anda. Jadi pada asasnya di sini, kami lulus x dan y ke dalam fungsi ini. Dan jika kita mewujudkan this-- jadi kami mahu untuk mewujudkan nilai sementara, bukan? Kami akan memberikan yang a. Dan kemudian akan kini sama b. Dan b akan kembali di mana nilai temp adalah, yang merupakan, kerana apabila anda mahu untuk menukar perkara, anda tidak boleh hanya suka menukar mereka. Anda perlu menjaga satu daripada di sini supaya ia ingat apa itu, kerana sekali anda menukar satu, anda lupa apa yang nilai asal, bukan? Jadi dalam teori, program ini harus bekerja, bukan? Jika saya mahu menukar seorang, maka mereka perlu menukar. Jadi mari kita berjalan dan melihat jika ia berfungsi. Jadi seperti yang anda semua boleh lihat, x pernah 1 dan y pernah 2. Dan jika saya mencetak, x masih 1 dan y ialah 2. Hmm, program ini tidak seolah-olah menjadi kerja-cara yang saya mahu ia berfungsi. Adakah sesiapa yang mahu mengambil pukulan pada meneka mengapa ini berlaku? Ia mempunyai kaitan dengan cara barang-barang yang berbeza disimpan di tempat yang berbeza dalam ingatan. OKAY. Jadi anda semua tidak perlu bimbang terlalu banyak tentang ini sekarang. Tetapi tahu bahawa kiub yang tempatan pembolehubah adalah a dan b, kerana di sini dalam fungsi kami, kami telah diisytiharkan a dan b sebagai pemboleh ubah yang wujud dalam kiub, fungsi itu. Tetapi seperti yang anda boleh lihat, parameter yang ia mengambil dalam sedang disimpan di sini. Tetapi kita tidak sebenarnya kembali apa-apa. Kami sebenarnya tidak berubah x dan y. Kami hanya menukar a dan b. Kami telah disalin x dan y ke dalam sesuatu yang dinamakan a dan b. Tetapi kita tidak pernah benar-benar dimanipulasi x dan y diri mereka sendiri. Adakah anda semua melihat bagaimana yang yang berlaku? Adalah bahawa kita telah hanya disalin ke atas, tetapi kita tidak benar-benar disimpan mengesan di mana mereka berada dalam ingatan. Dan sehingga kini komputer sedang, oh, saya telah menjalankan perkara ini melalui ini fungsi yang indah. Tetapi x dan y masih x dan y. Tiada apa-apa yang berlaku kepada mereka kerana fakta bahawa orang-parameter dan pembolehubah tempatan disimpan dalam yang berbeza meletakkan dalam ingatan. Dan ini adalah peringkat yang lebih tinggi-a konsep yang kita akan mula melihat di kemudian hari dalam perjalanan. Tetapi hanya tahu bahawa ini adalah satu masalah yang boleh berlaku dan kita akan memikirkan jalan bagaimana untuk berurusan dengan ini di kemudian hari dalam perjalanan. OKAY. Baiklah. Jadi konsep terakhir kami benar-benar akan meliputi yang akan menjadi berguna untuk pset minggu ini adalah apa yang dipanggil hujah baris arahan. Jadi Rob dalam syarahannya telah melalui sejenis secara ringkas bagaimana kerja ini. Pada dasarnya tahu bahawa apabila anda menulis seperti fungsi utama, apabila kita menulis fungsi sebelum pada masa lalu, kami mempunyai kekosongan utama int. Dan sebab itu kami terpaksa tidak sah di sana kerana program kami tidak perlu nilai input untuk berlari, bukan? Apabila saya berlari Mario, saya tidak perlu untuk benar-benar hanya menaip sesuatu apabila saya berlari Mario. Saya boleh meminta pengguna di kemudian hari. Tetapi itu tidak akan sentiasa menjadi kes itu. Sebagai contoh, dalam hal ini masalah minggu ini menetapkan, anda akan diminta bahawa, Selain menjalankan program anda, anda akan mahu untuk input perkara-perkara tertentu dalam lurus seperti yang anda menjalankan program anda. Jadi cara kita melakukan yang dipanggil hujah baris arahan, yang adalah seperti hujah anda boleh memasukkan secara terus seperti yang anda sedang cuba untuk menjalankan program anda. Jadi notasi untuk ini, ia agak kompleks yang berpandangan, tetapi ia benar-benar tidak bahawa sukar. Jadi int main-- itu hanya fungsi utama anda. Ke argc koma kurungan tali argv. Jadi semua itu katakan ialah ini int argc-- semua yang memberitahu anda adalah bahawa mereka adalah jumlah hujah-hujah komputer patut harapkan. Jadi satu perkara yang benar-benar penting untuk mengesan adalah nama yang fizikal program anda tuduhan sebagai salah satu hujah. Jadi, jika saya mahu mempunyai program saya menjalankan tambah satu baris arahan tambahan hujah, saya sebenarnya akan mempunyai dua. Argc sebenarnya akan menjadi dua. Dan kemudian rentetan argv bracket-- semua yang lakukan, ia memberi saya satu pelbagai rentetan itulah akan hanya memaparkan dan menyimpan apa semua orang-orang hujah baris arahan berada. Jadi, sebagai contoh, jika saya mahu untuk mempunyai ini program, ./copy infile outfile, bukan? Itu hanya arahan Linux biasa. Apa yang sebenarnya adalah argc? Berapa banyak hujah baris arahan berada di sana benar-benar dalam perkara ini? Semua ini dilakukan adalah membuat salinan yang infile daripada nama satu fail dan salinan ke dalam fail lain, bukan? Itu semua ini lakukan. Seperti yang anda lihat, saya melakukannya dalam satu baris tanpa benar-benar memerlukan program ini. Apakah argc kami dalam kes ini? Berapa banyak hujah-hujah yang kita ada? PENONTON: Tiga? ANDI PENG: Kami mempunyai tiga, betul-betul. Jadi ia amat intuitif untuk hanya berfikir bahawa ia hanya yang infile dan outfile itu. Tetapi tahu bahawa nama fizikal program anda menjalankan tuduhan sebagai satu. Jadi dalam kes ini, argc sebenarnya tiga. Bagaimana pula, apa yang argv 0? Ingat, semua hujah baris arahan disimpan dalam pelbagai tali. Jadi, jika saya cuba untuk mengaksesnya, apa akan argv kurungan 0 memberi saya? PENONTON: [didengar]. ANDI PENG: Tepat sekali. Ia akan memberi saya titik mengurangkan salinan, kerana itulah unsur 0, yang Elemen pertama array saya. Bagaimana pula argv 1? PENONTON: Infile. ANDI PENG: Infile, betul-betul. Bagaimana pula argv 2? PENONTON: Outfile. ANDI PENG: Outfile. Ini adalah agak sukar sekarang. Apa yang anda semua berfikir argv 3 akan dapat memberi saya jika saya cuba untuk mencetak yang keluar? PENONTON: [didengar]? ANDI PENG: Adakah anda mempunyai tangan sehingga? Yeah. PENONTON: Satu alternatif. ANDI PENG: Tepat sekali. Jadi ingat dalam kuliah yang kita mempunyai pada akhir sesuatu bangsa dipanggil terminator null? Kami akan masuk ke dalam ini juga lanjut dalam kelas. Tetapi tahu bahawa dalam notasi, cara komputer anda tahu bahawa itu akhirnya array adalah bahawa ia meletakkan sesuatu yang dinamakan null yang terminator atau sengkang sifar. Jadi, jika anda cuba untuk mengakses argv 3, anda akan melanda dash ini 0. Ini adalah lebih daripada satu soalan helah. Bagaimana pula argv 4? Jadi ini adalah terminator null lalu, lalu batas-batas pelbagai kami. Apa yang anda fikir akan berlaku apabila kita cuba untuk berbuat demikian? PENONTON: [didengar]? ANDI PENG: Maaf? Mengatakan bahawa sedikit lebih kuat? PENONTON: [didengar]. ANDI PENG: Ya. Itulah nama kawasan anda kemungkinan besar akan mendapat. Tetapi tahu argv yang 4-- yang membolehkan anda untuk akses tempat di komputer anda memori yang anda benar-benar tidak boleh menyentuh, kerana sekarang anda tahu apa argv adalah. Anda tahu bahawa ia adalah pelbagai saiz 3 yang mempunyai salinan dot, infile dan outfile. Jika anda cuba untuk pergi sejauh lebih dari itu bahawa anda lalu terminator nol, komputer anda mempunyai mungkin sesuatu yang disimpan di dalam argv 4. Dan anda benar-benar tidak perlu dibenarkan akses ke dalam argv 4, kerana anda mempunyai fail kabinet dan anda hanya dibenarkan akses kepada ketiga-tiga rak. Tetapi jika anda cuba untuk mencapai jalan di luar rak di mana anda dibenarkan, anda akan mula bermain-main dengan perkara-perkara lain dalam memori komputer anda. Itu akan menjadi benar-benar, benar-benar buruk. Jadi hanya tahu bahawa. Berhati-hati bahawa anda tidak hanya secara rawak mula mengakses elemen dalam array yang tidak berada dalam apa yang anda hendak buat. Ya. OKAY. Jadi, kita akan melakukan satu lagi contoh terminal di sini. OKAY. Jadi Rob cepat dalam kuliah hari yang lain pergi melalui contoh ini, di mana beliau mempunyai int utama int argc rentetan argv kurungan, yang memberitahu saya bahawa saya akan mempunyai hujah baris arahan. Beliau mempunyai, jika argc sama sama 2-- ingat, sama sama bermakna perbandingan. Jika ia sama 2, maka saya akan mencetak hello, apa sahaja yang pertama elemen array adalah. Cetak yang lain, hello dunia. Apakah ini akan berlaku pada dasarnya? Bolehkah seseorang hanya menjelaskan secara Bahasa apa yang program ini lakukan? Yeah. PENONTON: Jika seseorang ditaip pada arahan dan berkata nama pertama dan terakhir mereka, ia bukan sahaja akan mencetak pertama seseorang dan berkata, hello, apa jua nama pertama anda. ANDI PENG: OK, mari kita menjalankannya. Jadi, sebagai contoh, jika saya membuat fail ini membuat hello hello supaya- supaya- apa yang anda mahu saya untuk input? PENONTON: Pertama dan nama akhir. ANDI PENG: Pertama dan nama akhir? Ruang? PENONTON: Ya. ANDI PENG: Bolehkah seseorang beritahu saya sekarang, apakah argc? Hanya di sana? Oops, maaf. Biar saya kembali. Berapa banyak hujah baris arahan ialah- anda semua tidak boleh benar-benar melihat. Tetapi saya akan cuba untuk zum masuk. Saya sedang mencuba. Ya, ada tiga, bukan? Ia slash dot hello, ia Andi, dan ia Peng. Jadi, apa yang anda semua rasa ini program akan mencetak keluar? Oh. Oh maaf. Nama salah. Ia mencetak, hello dunia. Adakah sesiapa yang mahu menjelaskan mengapa yang yang berlaku? Ya? PENONTON: [didengar]. ANDI PENG: Tepat sekali. Jadi di sini, adalah bersyarat Iaitu, jika argc sama sama 2. Jadi hanya dalam kes yang ada dua hujah baris arahan. Kemudian saya akan mencetak, hello, apa sahaja. Tetapi yang lain, saya akan mencetak adil, hello dunia. Jadi adakah seseorang mahu untuk memberi saya contoh bagaimana saya akan dapat benar-benar mendapatkan ia untuk mencetak nilai argv 1? Apa yang perlu saya masukkan di sini? Hanya satu perkara, bukan? Kerana hello dot ke sudah tuduhan sebagai hujah pertama. Saya hanya mempunyai satu lagi. Jadi dot hello jika saya hanya melakukan Andi. Hello, Andi. Adakah semua orang faham mengapa yang yang berlaku? Yeah. PENONTON: Jadi ruang antara arahan garis ini-- adalah ia [didengar]? ANDI PENG: No. Jadi ruang dalam baris arahan hujah, x, untuk memberitahu komputer anda bahawa ini adalah permulaan rentetan baru. Jadi rentetan argv sini-- ia kedai segala perintah hujah baris anda dalam tali. Dan supaya ruang dalam baris arahan argument-- semua yang dilakukan adalah memberitahu anda, ini adalah pada akhir satu rentetan dan sudah tiba masanya untuk beralih kepada yang lain. Yeah. Ini adalah cukup penting bagi Serangga anda, kerana anda akan ujian ini. Jadi adakah sesiapa yang mempunyai sebarang pertanyaan mengenai perkara ini? OK, sejuk. Ya? PENONTON: Jadi anda sebab akan meletakkan integer hujah calc sebaliknya [didengar] akan apabila anda mahu menaip maklumat tambahan kepada [Didengar]? ANDI PENG: Ya, betul-betul. Beberapa program akan memerlukan anda kepada input hujah baris arahan bahawa ia berlalu di dalam dan yang menggunakan itu. Yeah. PENONTON: Jadi apa jika [didengar]? ANDI PENG: Sebenarnya, apa yang saya perlu untuk menukar kemudian dalam program saya? PENONTON: Hanya 3. ANDI PENG: Kenapa yang berlaku, yang anda fikir? PENONTON: Kerana [didengar]. PENONTON: Anda harus menukar kepada 2 [didengar]. PENONTON: 1 dan 2. ANDI PENG: 1 dan 2, betul-betul. Jadi dalam kes ini, anda akan mungkin mahu ada dua printf statements-- satu yang dicetak argv 1 dan salah satu yang dicetak argv 2. Di sini. Saya benar-benar boleh melakukan itu sangat cepat. Itupun dia. Oh. Tidak cukup apa yang anda mahu. Tetapi jika anda semua keadaan huru-hara di sekitar dengan memformat, ia akan keluar. Yeah. Sejuk. Saya tahu kami agak kesuntukan masa. Tetapi saya hanya akan menghabiskan dengan cepat yang beberapa minit melalui helpful-- PENONTON: Anda mempunyai dua minit. ANDI PENG: Saya mempunyai dua minit? Terima kasih. Beberapa tips pset cepat. Jadi untuk pset ini, saya sangat mengesyorkan, seperti yang saya katakan, semua orang untuk membaca spesifikasi. Anda akan menulis tiga satu programs-- dipanggil initials.c, satu dipanggil caesar.c, satu dipanggil vigenere.c. Beberapa tips penting yang anda semua benar-benar mahu yang perlu mind-- supaya terdapat fungsi ini dipanggil atoi-- kerana saya suka untuk mengatakan, trois a. Tidak jelas jika itu sebenarnya bagaimana anda mengatakan ia. Tetapi semua yang ia lakukan, ia memasukkan. Ia menukar rentetan kepada int. Jadi mewakili ASCII ke i integer. Ia hanya menukarkan ASCII nilai kepada integer nilai. Jadi ingat argv, array yang menyimpan semua arahan anda beratur arguments-- ia menyimpan mereka semua sebagai tali. Dan jadi jika anda mahu menjadi mampu untuk mempunyai salah seorang daripada mereka menjadi integer, anda akan mempunyai untuk menggunakan nilai ini di sini. Modulo, seperti yang kita dilindungi sebelum ini di dalam kelas hari ini, membolehkan anda untuk mempunyai baki apa sahaja yang anda mempunyai. Jadi, jika kita telah benar-benar, benar-benar jumlah yang besar di Caesar, bagaimana jika kita ada akhirnya daripada rentetan Vigenere? Bagaimana anda akan dapat untuk mendapatkan bahawa untuk membalut di sekitar? Jika saya tekan z dan saya mahu ia kembali kepada, bagaimana saya akan mendapat bahawa untuk membungkus? Mungkin mahu menggunakan modulo di sana. Kedua, melihat-lihat sekitar perpustakaan anda. ctype.h. Itulah perpustakaan baru yang kita ada. Anda akan mendapati banyak benar-benar, benar-benar isupper functions-- berguna, islower, toupper, tolower, isalpha, dan sebagainya. Semua fungsi yang akan menjadi sangat berguna apabila anda cuba untuk memikirkan, adalah watak ini huruf kecil? Bagaimana saya boleh menukar ini tali untuk huruf besar yang? Semuanya itu akan menjadi sangat, sangat berguna untuk pset anda. OKAY. Waktu pejabat malam ini adalah 08:00 kepada 11:00 di dalam kelas TEAL esok serta Rabu dan Khamis malam. Waktu pejabat adalah dalam biasa. Sangat menyarankan anda semua semua mula sekarang juga, kerana anda tidak mahu menjadi kanak-kanak yang malam khamis mempunyai masalah mengemukakan pset anda dan seperti, saya tidak tahu apa yang perlu dilakukan. Saya mula, saya selesai, saya dikemukakan. Cuba untuk memberi diri anda sedikit ruang, kerana dalam masalah kod sentiasa berlaku. Anda ingin memastikan bahawa anda memberikan diri anda banyak masa untuk dapat untuk melengkapkan psets. Sejuk. Saya akan berkeliaran di sini. PENONTON: Adakah online ini sudah? ANDI PENG: Saya tidak tahu jika ia talian sudah, tetapi ia akan menjadi. Saya akan berkeliaran di sini jika sesiapa mempunyai apa-apa soalan sudah. Terima kasih kerana datang.