>> [MUSIC PLAYING]
>> ANDI PENG: Ini adalah CS50, dan Selamat datang untuk minggu dua bagian.
Ini sebenarnya sementara minggu dua class-- kami sebenarnya,
minggu pertama kami sudah bagian.
Menunjukkan tangan, berapa banyak dari Anda semua datang super seksi minggu lalu?
OK, itu OK.
Tidak apa-apa.
Berapa banyak dari Anda menyaksikan Super Bagian minggu lalu?
OKE.
Dan kalian lakukan baik pada masalah menetapkan satu?
Jadi aku akan mengambil bahwa kita memiliki sekelompok anak-anak benar-benar cerdas
di kelas ini dan hal-hal akan baik-baik.
OKE.
Jadi first--
>> Pertama, kami hanya akan sebentar pergi agenda untuk hari ini.
Kita akan berbicara tentang kursus logistik.
Banyak dari Anda mungkin memiliki pertanyaan tentang
bagaimana hal-hal berjalan dalam kursus ini.
Kami akan menjawab mereka.
Kita akan secara singkat pergi loop dalam kasus
ada dari kalian merindukan Super bagian.
Kita akan berbicara tentang pemetaan ASCII.
Kita akan berbicara tentang array, fungsi, argumen baris perintah.
Dan akhirnya, apa yang kalian mungkin semua benar-benar ingin berada di sini untuk belajar tentang,
adalah pset2 Anda.
Kami akan memiliki beberapa trik yang bagus dan tips untuk bagaimana untuk melakukan itu.
>> OKE.
Juga, kedua, kita memiliki banyak permen di sini.
Siapa saja yang suka permen, hanya datang ke sini.
Ambil beberapa.
Saya memiliki banyak.
Kami memiliki ton di kantor.
Saya tidak benar-benar ingin makan permen sepanjang hari.
Kalian harus makan semua permen, karena saya membawanya ke sini untuk kalian.
Hanya makan permen.
Akan ada permen setiap bagian.
>> Jadi pertama, siapa aku?
Nama saya Andi Peng.
Saya kepala TA dari CS50 sini di Yale.
Dan di samping itu, saya juga akan be--
jika ada orang yang like-- Anda berjalan teman, bahu Anda untuk menangis.
Jika malam sebelumnya karena pset Anda, Anda tidak tahu apa yang terjadi,
memukul saya.
Kami akan simpati bersama-sama, dan lain-lain.
Hanya tahu bahwa aku di sini sebagai sumber daya untuk Anda sebagai garis depan
dalam membantu kalian mengetahui bagaimana untuk memecahkan masalah dalam CS50 dan seterusnya.
>> Email saya adalah andi.peng@yale.edu.
Saya juga akan mengirimkan seorang individu email dengan nomor telepon saya di dalamnya
sehingga tidak semua orang pada internet dapat melihat nomor telepon saya.
Jangan ragu untuk menghubungi saya kapan saja.
Serius, telepon saya adalah biasanya menempel pada tangan saya.
Saya mungkin tidak merespon dalam beberapa menit.
Saya mungkin tidak merespon dalam beberapa jam.
Tapi saya bisa menjamin Anda, jika Anda e-mail saya, jika Anda memanggil saya,
teks saya, saya akan merespon dalam waktu 24 jam.
Sering kali, saya akan merespon sebelum itu, karena saya mengerti
bahwa setiap orang punya beberapa masalah, dan Anda ingin jawaban Anda
harus dijawab dengan sangat cepat.
>> Namun, jika Anda memanggil saya 30 menit sebelum
potongan yang dirilis Kamis night-- seperti, Andi, membantu saya,
Saya belum started-- saya dapat memberikan Anda bahu yang menangis di.
Tapi mungkin sudah saatnya untuk berpikir tentang bagaimana tidak melakukan waktu berikutnya.
OKE.
Ups.
Bagaimana saya kembali?
Di sana kami pergi.
>> Jadi dalam kursus ini, kami memiliki ton dukungan untuk semua orang.
Selain hanya bagian di sini, yang Anda
setiap minggu bisa menghabiskan 90 indah menit dengan saya,
kami juga memiliki jam kantor.
Berapa banyak dari kalian sudah berkunjung ke kantor jam untuk bantuan?
Besar.
Itu benar-benar baik untuk melihat, karena kami memiliki staf lebih dari 45 TA dan CA
dilatih untuk kursus ini yang ada disini untuk membantu kalian dengan psets Anda.
>> Senin mereka diadakan di TEAL yang kelas di 17 Hill House sini
di Yale.
Selasa dan Kamis, mereka diadakan di commons.
8:00-11:00 cukup banyak setiap hari kerja.
Datang, keluar.
Setiap masalah, tidak ada problem-- hanya datang di dalam,
dan kemudian kami akan membantu Anda dengan itu.
>> Kedua, selain jam kantor dan bagian, kami juga memiliki celana pendek.
Apakah ada yang pernah melihat beberapa dari celana pendek atau penelusuran di video
di website?
OKE.
Jadi mereka benar-benar, benar-benar membantu.
Produksi Harvard indah kami tim di sana pada sekolah yang
ke utara, mereka telah difilmkan dan diproduksi ini video walkthrough yang luar biasa.
>> Mereka akan membawa Anda langkah demi langkah melalui bagaimana cara memecahkan masalah.
Sering kali, jika Anda bingung tentang konsep sederhana, konsep tunggal,
kita lihat, karena kita mungkin memiliki pendek pada suatu tempat di website kami.
Dan biasanya sumber daya yang besar harus dicari ketika Anda pertama kali
hilang pada bagaimana menangani masalah.
>> Ketiga, kami juga memiliki study50 dan reference50.
Jadi mempelajari 50 pada website ini hanya link.
Ini, saya pikir, study.cs50.net atau semacam itu.
Hanya Google itu.
Kami memiliki banyak slide disiapkan.
Kami memiliki banyak celana pendek dan hal walkthroughs-- semua dikompilasi
sangat bagus dan rapi untuk kalian semua untuk menelusuri, melihat konsep
bahwa Anda bingung tentang.
Ini mungkin akan ditutup di sana di study50.
>> Reference50-- serupa.
Kami memiliki banyak berbagai catatan tersedia untuk pembuangan Anda.
Dan terakhir, kita memiliki apa yang disebut CS50 Diskusikan,
sebuah forum di mana, jika malam sebelumnya Anda melakukan masalah Anda, mengatakan,
Anda memiliki pertanyaan.
Login ke CS50 Diskusikan.
Posting pertanyaan Anda.
Dan kemudian salah satu hundreds-- mungkin, thousands-- rekan-rekan
mengambil kelas ini secara online akan login.
Dan mungkin seseorang bisa mendapatkan jawaban Anda sebelum sekaleng TA.
Ini pada dasarnya hanya sebuah forum online yang kita semua bisa
gunakan untuk membahas masalah-masalah kita.
Keren.
>> OKE.
Jadi masalah set.
Kami tentang benar dalam tebal masalah menetapkan dua.
Banyak dari kita sudah berjuang melalui masalah menetapkan satu.
Kita sudah tahu bahwa mungkin menunggu untuk malam terakhir untuk melakukan pset Anda
bukan hal terbaik untuk dilakukan di CS50.
>> Tips dan kiat dasarnya untuk Keberhasilan dibaca seluruh spec.
Berapa banyak dari Anda sudah membaca spec untuk pset 2?
OKE.
Itu jumlah yang solid.
Aku tahu kalian mungkin telah diakui sekarang spesifikasi yang sangat panjang.
Mereka benar-benar, benar-benar lama.
>> Ini benar-benar sulit untuk membaca setiap baris itu hati-hati kata demi kata.
Anda ingin hanya skim ke mana ia memberitahu Anda untuk melakukan sesuatu.
Saya dapat menjamin Anda, jangan lakukan itu.
Jika Anda melakukannya, Anda mungkin akan merindukan suatu tempat
di mana ia memberitahu Anda bagaimana memulai masalah
atau memberitahu Anda apa yang harus nama masalah Anda atau memberitahu Anda,
ini mungkin adalah cara terbaik untuk mulai melakukan masalah Anda.
Dan kemudian Anda akan hilang.
>> Ketika Anda mencoba untuk membaca Anda spek setengah jalan,
banyak yang penting information-- bahwa Anda tidak
akan dapat benar-benar akses.
Jadi membaca seluruh spec.
Cobalah untuk membaca seluruh spesifikasi sebelum Anda datang ke bagian,
karena itu, ketika kita berbicara tentang pset itu,
kita semua dapat memiliki gagasan dari apa yang terjadi.
>> Kedua, ini adalah sebuah konsep bahwa saya akan ingin referensi
banyak sepanjang semester saja.
Tapi pada dasarnya, menemui kami di tengah jalan, kan?
Saya, sebagai TA dan Jason karena kursus Manajer dan Scaz sebagai dosen Anda
dan David sebagai guru dan semua yang TA indah lainnya dalam kursus ini,
asisten di course-- ini kami akan melakukan yang terbaik
untuk memastikan bahwa Anda ditetapkan hingga berhasil dalam kursus ini.
Kami akan mengadakan bagian.
Kami akan terus jam kantor.
Kami akan menjawab telepon Anda panggilan, menjawab e-mail Anda,
melakukan segala yang kami bisa untuk membuat Pastikan pertanyaan Anda dijawab.
>> Namun, membantu kami keluar juga.
Temui kami di tengah jalan.
Jika Anda datang ke kantor jam tidak memiliki pergi ke bagian, tidak
setelah melihat ceramah, tidak memiliki tahu apa yang terjadi, seperti, membantu saya.
Aku akan menjadi seperti, baik, aku minta maaf.
Mungkin sudah saatnya untuk meminjamkan bahu yang menangis pada,
karena saya tidak yakin apa yang bisa saya lakukan untuk membantu Anda
jika Anda tidak mencoba untuk setidaknya bantuan sendiri sedikit di awal.
Temui kami di tengah jalan.
Anda tahu, silakan datang siap untuk menjawab dan mendapatkan
siap untuk terlibat dalam materi.
Itu membuat hal-hal begitu banyak lebih mudah bagi semua orang yang terlibat.
Ya, itu cukup banyak itu.
>> Grading.
Jadi pada silabus, itu cukup mendalam mengenai bagaimana kita kelas.
Tapi pada dasarnya, rinciannya dalam hal ini adalah 50% dari kelas Anda
akan menjadi psets, yang indah, karena itu
di mana Anda menghabiskan besar sebagian besar waktu saja Anda.
Kuis 40%, dan Anda tugas akhir akan menjadi 10%.
Akan ada dua kuis seluruh kursus semester.
Saya pikir waktu dan tanggal yang juga terdaftar di silabus.
>> Cara yang kita akan akan kadar psets Anda
adalah bahwa kita memiliki dasarnya empat nilai-nilai yang kita tetapkan untuk setiap kelas.
Kami memiliki nilai lingkup, kebenaran, desain, dan gaya.
Jadi seperti yang Anda lihat, itu semacam kami rumus untuk menghitung psets.
Tiga kami memberikan paling bobot kebenaran,
karena jelas pelatih Anda harus menguji untuk kasus
bahwa kita ingin menguji.
>> Kalian semua memiliki check50 Anda inginkan.
Ini adalah fungsi yang sangat berguna bahwa kalian semua bisa
meng-upload kode Anda ke server kami, di mana kita akan memeriksa untuk Anda.
Dan Anda telah melihat orang-orang wajah frowny, wajah smiley.
Mereka benar-benar, benar-benar membantu.
Jangan menjadi mahasiswa yang suka mencoba
hardcode di semua jawaban kepada mereka.
Saya pasti telah melihat pset mana seseorang melihat semua nilai-nilai check50
dan mereka hanya sulit kode in-- jika nomor ini, mencetak nomor ini.
Jika jumlah itu, mencetak angka tersebut.
Jangan lakukan itu.
>> Meskipun secara teknis check50 benar,
cara Anda memecahkan masalah adalah tidak benar.
Jadi hanya menggunakan check50 hemat.
Tetapi juga memastikan bahwa Anda memahami bagaimana hal itu berfungsi,
program ini berfungsi selain check50,
karena kita tidak dapat menguji setiap mungkin kasus check50.
Kami akan menguji beberapa dari mereka.
>> Desain dasarnya, bagaimana dirancang dengan baik adalah kode Anda?
Jika Anda copy-paste beberapa baris kode banyak, banyak kali.
Mungkin Anda tidak memiliki cukup desain terbaik dalam kode Anda.
Mungkin sudah waktunya untuk menambahkan lingkaran itu.
Pada dasarnya, di sini itu hanya semua tentang mencoba untuk melakukan kode Anda,
mencoba untuk menulis kode Anda seefisien mungkin agar program berjalan
secepat mungkin.
>> Terakhir, kita memiliki gaya.
Jadi gaya adalah jenis sewenang-wenang, istilah subjektif.
Aku tahu kita resmi memiliki panduan gaya 50 untuk CS50,
di mana ia memberitahu Anda, oh, Anda harus memiliki ruang di sini.
Anda harus jenis format kode Anda dengan cara ini.
Anda harus nama hal-hal seperti ini.
>> Saya tidak benar-benar peduli, per se, bagaimana Anda memilih untuk gaya kode Anda,
seperti selama Anda tetap konsisten.
Sebagai contoh, jika Anda ingin meninggalkan ruang setelah empat Anda
sebelum empat loop, hanya melakukan itu setiap kali.
Jangan semacam melakukannya.
Jangan lakukan itu lain kali.
Jika Anda ingin tetap keriting kawat gigi ruang dengan cara tertentu,
hanya selalu melakukannya dengan cara itu.
Jangan semacam melakukannya di tempat di sini dan di suatu tempat tidak ada.
Ketika kita dengan kadar, itu benar-benar sulit
jika saya tidak tahu bagaimana Anda format kode Anda,
hal-hal yang aneh dan keluar dari tempat.
Jika Anda hanya tetap konsisten, itu jauh lebih mudah bagi saya sebagai besar
untuk dapat membaca kode Anda.
Ini jauh lebih mudah bagi Anda sebagai mahasiswa untuk dapat melihat melalui kode Anda
dan melihat apa yang salah dengan itu memangkas mengapa ada masalah.
Gaya adalah salah satu hal yang paling mudah kalian bisa lakukan untuk mendapatkan nilai penuh.
Pada dasarnya, jika Anda hanya peduli, jika Anda membayar lima menit perhatian
untuk kode Anda setiap minggu, Anda harus menjadi semakin gaya poin penuh.
>> Terakhir, kita memiliki apa yang disebut multiplier dari lingkup.
Scope-- Aku tahu itu besar kata, terutama di kelas ini.
Tapi ruang lingkup, segala cara yang adalah bahwa Anda mencoba
yang psets untuk yang terbaik dari kemampuan Anda.
Jika Anda menyerahkan tiga empat masalah Anda
dan bahkan tidak mencoba yang yang terakhir, Anda mungkin
akan kehilangan beberapa poin di lingkup.
>> Bahkan jika Anda hanya mulai masalah, lakukan yang terbaik untuk berjalan melalui itu.
Bahkan jika tidak bekerja, mengubahnya, karena yang menunjukkan dan menunjukkan
kepada kami bahwa Anda sedang berusaha, bahwa Anda mencoba mengatur masalah
untuk yang terbaik dari kemampuan Anda.
Dan kemudian kami dapat memberikan poin penuh untuk lingkup.
>> Lingkup juga sangat penting bagi ketika kita berbicara tentang termurah penurunan nilai pset.
Jadi selama satu semester, kalian memiliki sembilan psets.
Dan kita akan benar-benar menjatuhkan skor terendah dari sembilan,
tetapi hanya jika Anda memiliki ruang lingkup poin penuh.
>> Jadi jika Anda menghidupkan dalam pset tidak lengkap, sayangnya, kita tidak bisa drop satu itu,
karena lingkup Anda poin tidak selesai.
Jadi bahkan jika Anda memiliki minggu yang mengerikan di mana Anda sedang sekarat dan sedang sakit
atau anjing Anda meninggal, kucing Anda meninggal, dan Anda dipenuhi dengan pekerjaan,
hanya mencoba pset tersebut.
Melakukannya untuk yang terbaik dari kemampuan Anda.
Jika tidak bekerja, tidak masalah.
Hanya mengubahnya.
Setidaknya kita dapat memberikan Anda poin untuk usaha.
>> A untuk usaha di kelas ini.
Setidaknya penurunan nilai terendah untuk usaha.
Jadi ya.
Itu cukup banyak itu.
Apakah ada yang punya pertanyaan sehingga jauh tentang bagaimana kami kelas di kelas?
Atau semua ini?
Semua ini begitu far-- bagian, jam kantor?
Keren.
OKE.
>> Jadi ini adalah subjek yang ada yang benar-benar suka berbicara tentang.
Saya tidak benar-benar ingin berbicara tentang hal itu.
Kalian tidak benar-benar ingin mendengar saya berbicara tentang hal itu.
Tapi sayangnya, kita semua harus membicarakannya.
David menghabiskan 20 menit kuliah berbicara tentang hal itu.
Dan itu adalah subjek kejujuran akademik.
>> Jadi kita semua di sini telah mungkin ditulis sebuah esai kadang-kadang dalam karir Yale kami.
Kita mungkin sudah mendapatkan ceramah di mana kita sudah telah diberitahu untuk tidak menjiplak tulisan esai kami,
karena pekerjaan yang bukan milik kita.
Dalam ilmu komputer, kita memiliki jenis yang sama dari konsep.
Semua pekerjaan yang Anda kirimkan, semua kode yang Anda tulis
harus kode yang telah Anda tulis.
Tidak boleh kode yang Anda sudah disalin dari tempat lain.
Tidak boleh kode yang Anda sudah googled dan menjatuhkan di
dan Anda tidak benar-benar tahu jika bekerja.
Anda jenis memiliki rasa apa yang dilakukannya tetapi tidak benar-benar.
Jika ragu, pada dasarnya, itu hanya masuk akal.
Pada silabus kami, kami memiliki daftar seluruh hal-hal
kita lihat sebagai wajar dibandingkan tidak wajar.
>> Misalnya, wajar adalah Anda dan teman Anda
membahas apa cara terbaik untuk pergi tentang logika pemecahan masalah.
Itu cukup masuk akal.
Apa yang tidak akan masuk akal adalah jika Anda orang berkumpul, mengetik kode yang sama,
dan berbalik dalam kode yang sama.
Itu tidak masuk akal.
Hal yang sama, jenis esai.
Jika Anda ingin membahas dengan teman Anda, hey,
ini adalah apa yang saya ingin menulis tentang.
Ini adalah langkah-langkah yang saya ingin mengambil untuk menulis tentang hal itu, besar.
Indah sekali.
Silakan berkolaborasi satu sama lain.
Jika kalian mulai menulis hal yang sama,
menyerahkan esai yang sama, yang kurang OK.
Jadi bila ragu, hanya tidak melakukannya.
>> Di sini, kita di CS50, kami memiliki skrip run yang untuk mengotomatisasi untuk menguji
tidak hanya kebenaran kode Anda, tetapi juga keunikan kode Anda.
Jadi tolong jangan menempatkan kami dalam posisi karena harus merujuk kasus Anda ke EXCOMM.
Silahkan saja untuk semua orang, mari kita membuat pengalaman yang indah.
Semua orang belajar lebih baik, kita semua bahagia,
dan kita semua dibentuk untuk berhasil dalam kursus ini.
Sesuatu yang sangat unik tentang kelas ini
yang saya pikir semua orang harus benar-benar memperhatikan adalah bahwa kita memiliki
apa yang disebut penyesalan klausul dalam silabus kami.
Jadi pada dasarnya, dalam waktu 72 jam, jika Anda yakin telah melakukan sesuatu
Anda tidak benar-benar yakin itu sesuai, silakan datang ke kami.
Kami berjanji bahwa dalam waktu 72 jam kami akan menangani kasus diri kita sendiri
tanpa mengacu pada tinggi otoritas dalam pemerintahan.
>> Jadi, jika Anda datang ke saya dan berkata, Andi, hey, aku benar-benar minta maaf,
tapi saya pikir ada beberapa baris di saya Kode semalam bahwa saya jenis googled,
turun dari Stack Overflow, copy dan paste,
dan aku benar-benar, benar-benar menyesal tentang itu, beritahu saya.
Jangan biarkan itu bercokol dan hanya berharap bahwa aku menangkapnya.
Kami akan menangkapnya.
Hanya datang kepada saya.
Biar saya tahu dalam waktu 72 jam.
Kami akan mencari tahu solusi.
Dan kami berjanji bahwa kami tidak akan merujuk otoritas universitas dasarnya.
Jadi itu dalam kepentingan terbaik Anda hanya jujur ​​dengan semua orang
terlibat dalam kursus.
>> OKE.
OKE.
Jadi sekarang, dengan cepat sebelum Aku pindah, apakah ada
memiliki pertanyaan tentang logistik bagaimana program kita akan menjalankan,
bagaimana bagian akan untuk menjalankan, semua itu?
OKE.
Ya.
>> AUDIENCE: [tidak terdengar]?
ANDI PENG: Ya.
Jadi quizzes-- berapa banyak dari Anda yang di bagian Senin / Rabu?
Berapa banyak dari Anda berada di Selasa / Kamis?
OK, jadi split padat di sini.
Jadi cara yang kita jalankan itu di Yale adalah kita bahwa
akan memiliki dua terpisah quizzes-- satu untuk setiap section-- yang
akan diambil selama kelas.
Saya pikir itu Oktober, akhir Oktober, sesuatu seperti itu, sebagai salah satu minggu
dari kuis.
Ya, jadi hanya datang ke kelas.
Pada hari Senin atau Rabu, Anda akan mengambil kuis.
Pada hari Selasa atau Kamis, Anda akan mengambil kuis yang berbeda.
Tapi bahan yang sama akan dibahas.
Ya.
Pertanyaan bagus.
Ya.
>> AUDIENCE: Di mana kita pergi untuk memeriksa nilai kita?
>> ANDI PENG: Ya.
Jadi saya akan mengirimkan sebuah e-mail apa pun setiap minggu
ketika kuis yang graded-- atau, Maaf, saat psets yang dinilai.
Psets biasanya berubah di siang atau Jumat.
Jadi saya berjanji bahwa saya akan mencoba untuk mendapatkan mereka kembali kepada Anda
oleh siang dari hari Jumat berikutnya.
>> Setiap kali saya kelas pset, saya akan mengirim keluar pemberitahuan pada buku kelas
yang memberitahu Anda skor Anda dapat dilihat secara online.
Jadi benar minggu ini, setelah saya menyelesaikan kadar psets pekan lalu,
kalian akan mendapatkan e-mail pemberitahuan memberitahu Anda,
hey ini adalah di mana Anda pergi untuk melihat nilai Anda.
Dan Anda dapat melihat setiap pemecahan nilai Anda.
Anda dapat melihat komentar.
Oh, hal cepat juga.
Bagian komentar di besar Buku adalah di mana mungkin aku akan
menghabiskan sebagian besar waktu saya grading.
Jadi satu hal yang benar-benar penting ketika
kalian melihat nilai Anda pada psets Anda
tidak hanya mencari di nilai fisik
tetapi juga mengambil waktu untuk benar-benar membaca komentar saya.
>> Seringkali yang memberikan umpan balik tentang bagaimana Anda memecahkan masalah.
Jika Anda perlu melakukan sesuatu yang sedikit lebih baik,
kritik konstruktif biasanya terbaik diberikan pada mereka bagian komentar.
Jadi tolong, tolong, aku akan menghabiskan waktu menulis komentar.
Silakan, saya benar-benar akan menghargai itu jika kalian akan membaca komentar orang-orang.
OKE.
Keren.
>> Baiklah.
Jadi kita akan mulai berbicara dan hanya meninjau cepat
beberapa materi dari minggu nol hanya jadi kita
di sebelah kanan halaman untuk mulai masalah minggu ini.
Jadi sementara loop adalah salah satu dari tiga jenis loop
kita bahas sebelumnya di kelas ini.
>> Sebuah loop sementara dasarnya ditulis dalam sintaks
di mana, sementara kondisi tertentu, melakukan ini berulang kali, kan?
Anggap saja di grafis ini di sini.
Anda akan mulai pada titik tertentu dalam kode Anda.
Anda akan memasuki kondisi loop if-- Saya tidak tahu-- x kurang dari satu.
>> Jika itu benar, Anda akan untuk mengeksekusi badan loop.
Dan Anda akan tetap melakukan itu lagi, lagi, lagi,
lebih dan over-- yang mengapa itu adalah loop-- sampai kondisi Anda menjadi
Salah.
Jadi dengan cara ini, sementara loop adalah salah satu cara sederhana
menulis apapun kondisi yang perlu mengulang berulang-ulang.
Hanya berhati-hati setiap kali Anda sedang menulis apapun lingkaran
bahwa Anda memiliki kondisi keluar sebagai serta update untuk apa pun
adalah agar loop Anda tidak hanya menjalankan berulang jauh.
Dalam hal apapun, Anda akan untuk ingin memastikan
bahwa Anda mengubah beberapa aspek kode Anda atau di akhir loop
hanya untuk memastikan bahwa Anda memiliki cara untuk maju menuju kondisi
bahwa Anda ingin bertemu untuk akhir.
Apakah itu masuk akal untuk semua orang?
Kami hanya tidak ingin menjadi terperangkap dalam spiral ini di mana
kita pergi sekitar dan sekitar dan tidak ada cara untuk memecahkan loop.
Dan setiap lingkaran dasarnya memiliki cara untuk melakukan itu.
OKE.
>> Kedua, banyak dari Anda di Mario psets Anda
mungkin harus mempekerjakan jenis loop.
Hal ini disebut do while.
Pertama-tama, bisa ada yang bilang saya apa perbedaan antara do a
while dan loop sementara adalah?
Ya.
>> AUDIENCE: The do while berjalan pada awalnya [tidak terdengar].
>> ANDI PENG: Ya, persis.
Jadi do a while selalu melakukan apa saja adalah dalam bentuk do, dalam kurung
ada dan melakukan kondisi yang sebelum memeriksa the-- maaf,
melakukan kode yang sebelumnya memeriksa kondisi.
Dan ini sangat relevan untuk kita di sini di kelas ini, karena sebagian besar kali
kita akan ingin meminta pengguna untuk semacam masukan.
Dan kemudian, tergantung pada input mereka memberi kita,
maka kita dapat mengevaluasi, oh, melakukan kita perlu meminta mereka lagi?
>> Jadi di Mario, jika pengguna memberi Anda ketinggian negatif, misalnya,
Anda akan cepat pertama dan melakukan apa pun yang ada di dalam.
Kemudian Anda akan memeriksa sementara.
Anda tahu, adalah negatif 1, adalah bahwa angka positif?
Jika tidak, aku akan pergi kembali dan ulangi do dan ulangi
dan ulangi dan ulangi sampai mereka akhirnya memberikan nomor yang Anda sukai,
bahwa kita semua dapat mempekerjakan dalam kode kami.
Ini cukup penting bagi dasarnya setiap input pengguna.
Saya dapat menjamin Anda setiap waktu di mana pset
kami meminta Anda untuk memasukkan apapun kode, kami
mungkin akan memberi Anda kasus uji yang kami
akan memberikan sesuatu yang buruk yang akan mencoba untuk memecahkan kode Anda.
>> Jika kita mencoba untuk meminta Anda untuk memasukkan sebuah integer, kita mungkin hanya memberikan string
dan melihat bagaimana Anda akan menangani itu.
Jika kami meminta Anda untuk mempekerjakan usia, kami dapat memberikan angka negatif
untuk melihat bagaimana Anda akan menangani itu.
Pastikan kalian pengujian untuk kasus di mana Anda tidak mendapatkan yang terbaik
input, katakan saja.
Dan do while adalah seringkali yang terbaik
cara untuk merancang kode Anda sehingga bahwa memenuhi ruang lingkup itu.
OKE.
>> OKE.
Jadi ini mungkin adalah yang paling lingkaran kompleks dari tiga
bahwa kita telah melihat sejauh ini.
Dan tampaknya sangat menakutkan pada awalnya.
Tapi saya jamin, sekali kalian mendapatkan memahamkan bagaimana menggunakan untuk loop,
itu salah satu hal yang paling berguna, kebanyakan alat yang berguna dalam gudang senjata Anda
untuk bergerak maju di kelas ini.
>> Jadi misalnya, di Scratch, kami memiliki blok yang sangat sederhana ini
yang hanya mengatakan mengulang ini tertentu frase sejumlah kali.
By the way, SAJ-- itu Scaz Andi Jason.
Kami seringkali menandatangani email SAJ kami.
Jika kita berkata SAJ, jangan bingung.
Itu hanya kami.
>> Jadi dalam Scratch, kami mampu memiliki blok yang mengatakan, ulangi Saya suka SAJ!
10 kali.
Sangat sederhana.
Logika di balik itu adalah sangat, sangat sederhana, kan?
Saya ingin pertama pergi melalui pertama waktu dan melihat bahwa, kedua kalinya
dan melihat bahwa, ketiga kalinya, sebagainya dan seterusnya, sampai Anda menekan ke 10.
>> Dan cara kita akan menyatakan bahwa di Kode ini hanya melalui sederhana untuk loop.
Jadi untuk, Anda akan mendeklarasikan variabel Anda di sini, dalam hal ini,
dengan int.
Kita akan nama itu saya.
Kita akan menginisialisasi ke 0.
Dan edisi berhenti adalah akan saya kurang dari 10.
Dan update akan menjadi i ++.
>> Dan dalam loop, itu akan untuk mengeksekusi sampai akhirnya
hits akhir condition-- di mana kasus, itu akan memecahkan loop.
Harus ada hal-hal yang Anda orang telah semua jenis terlihat sebelumnya
dan harus lakukan untuk masalah Anda menetapkan satu.
Apakah ada yang punya pertanyaan tentang untuk loop sekarang?
OKE.
Besar.
>> OKE.
Jadi bagi anda yang memiliki membaca pset spec untuk minggu ini
tahu bahwa kita akan harus mempekerjakan sesuatu yang disebut ASCII dan meja ASCII.
Jadi Daud dalam kuliah pergi sebentar bagaimana komputer essentially-- segalanya
dikodekan dalam komputer di biner, di nol dan satu.
Dan cara bahwa komputer dapat untuk menyimpan nilai yang berbeda di samping
untuk nol dan satu yang melalui pemetaan angka-angka untuk mewakili angka lainnya
atau karakter dasarnya lainnya.
>> Jadi dalam hal ini, ASCII table-- semua hal ini
adalah karakter peta, atau karakter, untuk nomor.
Jadi file kode sumber di Anda computer-- yang dilihatnya,
hey, sekelompok nol dan yang, nol dan satu, nol dan satu.
Itulah yang disimpan dalam memori sebenarnya komputer Anda.
>> Tetapi ketika kita manusia ingin berkomunikasi dengan komputer,
kami want-- mengatakan, misalnya, jika saya ingin huruf besar A,
Aku akan perlu beberapa cara memberitahu komputer, oh,
ketika saya ketik huruf A, I mean representasi ini dalam biner.
>> Dan cara kita melakukan yang melemparkan Hal sewenang-wenang disebut tabel ASCII,
di mana kita, sebagai manusia, sebagai programmer, beberapa waktu lalu,
kita sewenang-wenang memutuskan bahwa kami akan menetapkan nomor ini
nilai-nilai karakter tersebut.
>> Jadi kalian bisa google online ini.
Saya pikir ada link ke dalam Anda pset-- hanya meja peta ASCII, ASCII
meja.
Itu hanya menerjemahkan biner angka ke karakter.
Dan itu akan menjadi sangat berguna untuk mengatur masalah Anda
setiap kali Anda ingin menghitung sesuatu atau jika Anda
ingin menampilkan tertentu karakter atau bilangan bulat
atau memanipulasi karakter tertentu.
Ini akan menjadi sangat penting bahwa Anda semua
tahu cara menavigasi tabel ASCII.
>> Jadi misalnya, huruf besar A diwakili dengan jumlah 65.
Dan huruf kecil a diwakili oleh 97.
Jadi penting untuk mengetahui bahwa Perbedaan antara dua nilai
adalah 32.
Sering kali, jika Anda perlu untuk mengkonversi dari satu ke yang lain, perbedaannya adalah 32.
Dan jangan khawatir jika Anda jenis dari bingung tentang ini pada awalnya.
Kita akan pergi atas bagaimana kita akan mempekerjakan ini dalam kode aktual.
>> OKE.
Jadi bagi anda dengan laptop keluar, merasa bebas untuk menarik meja ASCII,
karena mungkin ini akan memerlukan kalian untuk referensi
apa karakter yang.
OKE.
>> Jadi mengetahui bahwa tertentu karakter peta ke nomor-nomor tertentu,
jika saya harus menjalankan hanya yang pertama garis yang code-- printf sebuah,
huruf kecil a, dikurangi huruf A. Apakah ada
memiliki menebak pada apa yang akan menjadi mencetak layar sekarang?
>> Jadi pertama-tama, apa huruf kecil mewakili?
Apa nomor adalah bahwa dikodekan dalam tabel ASCII.
Maaf?
>> AUDIENCE: 97?
>> ANDI PENG: 97, yang besar.
Dan apa huruf A?
>> AUDIENCE: 65.
>> ANDI PENG: Jadi apa 97 dikurangi 65?
>> AUDIENCE: 32.
ANDI PENG: OK.
Jadi apa yang berpikir kalian akan terjadi ketika saya masukan baris kode
ke komputer saya?
>> AUDIENCE: [tidak terdengar].
ANDI PENG: Maaf, berbicara.
Jangan khawatir.
Ini adalah sangat aman lingkungan, minus kamera.
Kita semua akan to-- tidak ada kekhawatiran.
Hanya kita semua akan berpura-pura seperti itu hanya kami bersantai di ruangan ini.
Jangan khawatir.
Tidak ada pertanyaan yang terlalu bodoh.
Tidak ada jawaban adalah jawaban yang bodoh.
Aku mungkin akan membuat kesalahan dalam perjalanan mengajar saya.
Serius, guys, hanya berkata tanpa berpikir itu.
Jadilah percaya diri dalam diri Anda, Anda tahu?
Jadi apa itu?
Yang mengatakan bahwa jawaban terakhir?
OKE.
Berteriak bahwa bagus dan jelas.
>> AUDIENCE: 32?
>> ANDI PENG: 32.
OK, mari kita menjalankan kode ini dan melihat apakah itu yang terjadi.
OKE.
Sehingga kalian bisa jenis lihat, notasi khas saya sudah
mengatur di sini bagaimana kita akan mempekerjakan apapun program di komputer kita.
Kami memiliki fungsi utama kami dalam fungsi utama kami.
Aku hanya akan menyalin dan menyisipkan baris kode ini.
Juga hati-hati ketika kalian menyalin dan menyisipkan kode.
Operator kadang-kadang tertentu tidak menyisipkan lebih benar.
Dalam hal ini, minus tanda itu sebenarnya tanda hubung.
Dan komputer tidak mengambilnya.
Jadi saya harus kembali dan fisik mengetik ulang itu.
Hanya berhati-hati saat kalian melakukan hal itu.
>> OKE.
Kita akan menjalankan ini di sini.
Jadi kita akan cd ke section2 kami.
Saya sudah menelepon Program asciimath ini.
Jadi ingat, ketika kita menjalankan Program, kami ingin pertama kompilasi
dengan menjalankan melalui make kami.
Dan kemudian kita ingin benar-benar menjalankan program dengan melakukan dot-garis miring.
Jadi kita akan ./asciimath.
>> Benar, di sana kita pergi.
Dan kita lihat 32.
Bagus sekali.
Anda layak sepotong permen.
Permen untuk Anda.
Maaf.
Baiklah.
OKE.
Jadi kita bisa kembali ke contoh kita di sini.
Aah, tidak ada.
Aah.
OKE.
Aku hanya akan tetap seperti itu.
OKE.
Sehingga kalian bisa lihat, kita dapat melakukan banyak hal yang sangat menarik,
banyak hal yang sangat dingin, banyak hal yang sangat rumit yang melibatkan
Karakter ASCII dan nomor.
Setelah Anda mendapatkan ke garis lima, yang banyak untuk mengikuti.
Kami tidak akan pergi melalui bagian.
Jangan ragu untuk, jika Anda bisa, alasan itu di atas kertas
pertama pada apa yang harus terjadi ketika Anda masukan string seperti nilai-nilai.
Misalnya, dalam baris terakhir, kita memiliki z-- yang merupakan number-- tertentu
a-- yang juga merupakan number-- ditambah 1 tertentu modulos 26
ditambah huruf kecil a.
>> Jika kalian terus membaca melalui ini, Anda
mungkin melihat sebuah pola muncul dalam bagaimana kita memanipulasi kode.
Saya sangat, sangat menyarankan setelah bagian kalian semua
orang pergi ke depan dan masukan mereka semua di komputer Anda
dan melihat jenis nomor yang keluar
dan penalaran melalui mengapa mereka adalah terjadi, karena untuk psets Anda
itu akan benar-benar penting bagi Anda untuk memahami
mengapa hal-hal tertentu yang terjadi.
Semua slide ini akan online.
Sehingga tidak ada kekhawatiran tentang mencoba untuk fisik menyalin catatan.
Secara online semuanya.
Bagian ini sendiri akan online.
Semua kode sumber yang Aku berlari akan online.
Ya.
Apakah Anda masih memiliki pertanyaan?
AUDIENCE: Apa modulos?
ANDI PENG: OK.
Jadi modulo merupakan operator yang akan cukup penting untuk pset orang Anda
sini.
Jadi cara yang operator di C dan dalam pekerjaan pemrograman
adalah bahwa Anda memiliki apa yang disebut simbol perpecahan dan simbol modulus,
yang seperti tanda persen.
>> Jadi dalam C, ketika Anda melakukan integer dibagi dengan bilangan bulat dengan garis miring,
C memiliki kecenderungan untuk ingin memotong off semua poin desimal,
karena integer ingin untuk mengkonversi ke integer.
Ini tidak akan ingin menjadi ganda dengan sekelompok desimal semua setelah.
>> Jadi jika saya melakukan 3 dibagi 2, itu akan untuk memotong 0,5 dan hanya memberikan 1.
Jadi itu sesuatu yang harus sangat berhati-hati ketika Anda
melakukan apapun matematika dalam pemrograman, adalah bahwa nomor yang anda peroleh
mungkin bukan angka yang Anda pikirkan,
yang mengapa pembulatan dalam Anda pset terakhir adalah sangat penting.
>> Modulo memberikan sisanya.
Jadi misalnya, jika saya melakukan 3 modulo 2-- jadi 3 persen tanda 2--
itu akan memberikan sisa itu.
Jadi 3 dibagi 2 adalah 1,5.
Ini 1 sisa 1.
Ini akan memberi Anda 1, yang adalah sisa itu.
>> Jadi, ketika kalian bergerak melalui tabel ASCII,
modulo akan berakhir menjadi sesuatu yang sangat penting,
dan kami akan membahasnya nanti.
>> OKE.
Jadi sesuatu yang cukup, cukup baru dan cukup unik
bahwa kita telah membahas minggu ini konsep apa array adalah.
Jadi array pertama jenis struktur data
bahwa kita akan temui di kelas ini.
Semua struktur data adalah semacam sewenang-wenang,
harfiah hal-hal seperti struktur bahwa kita sebagai programer telah menciptakan,
bahwa kita telah dimasukkan ke dalam kode kita yang dapat berisi potongan lain dari kode.
>> Jadi dalam hal ini, sebuah array-- menganggapnya sebagai lemari arsip,
di mana jika Anda membuka berbeda rak-rak lemari arsip Anda,
Anda dapat mengakses hal-hal yang berbeda.
Dalam memori, array hanya melakukan hal yang sama pada komputer Anda.
Anda dapat memiliki kita blocks-- berbeda memanggil mereka indices-- dari array.
Ini seperti blok, rak memori
bahwa kita telah dibuat dalam Anda komputer yang Anda dapat memasukkan
hal-hal tertentu di ruang yang berbeda.
>> Jadi dengan array, Anda selalu harus specify--
Anda harus menentukan mendeklarasikan array dalam format berikut.
Anda akan pertama menentukan tipe data
Anda ingin membuat array.
Jika saya ingin sebuah array bilangan bulat, Aku akan menempatkan int di sana.
Jika saya ingin sebuah array string, Aku akan menempatkan string di sana,
nama array, dan kemudian Anda akan memiliki tanda kurung persegi.
Dan di dalam kurung persegi, Anda akan memiliki ukuran array Anda.
>> Sesuatu yang benar-benar penting untuk diingat saat membuat array adalah
bahwa, setelah Anda membuat array, ukuran yang tidak dapat berubah.
Jadi jika Anda tahu bahwa sekarang Anda memiliki sebuah array dari ukuran 10,
Anda tahu bahwa aku akan memiliki 10 sel dalam atau 10 indeks dalam array ini,
dan itu tidak pernah terjadi untuk memperluas atau mengurangi
tidak peduli apa, dan bahwa ada Saat ini hanya 10 blok ruang
dialokasikan dalam memori Anda yang dapat menyimpan hingga 10 hal dari apa pun yang Anda telah menempatkan.
>> Jadi dengan cara ini, tipe data array, struktur data yang merupakan array
sangat berbeda dari beberapa orang lain kita akan akan mencakup nanti dalam kursus ini.
Ya.
Sebagai contoh, jika Anda ingin membuat sebuah array ukuran 3 yang
terkandung variabel integer-- oh, maaf, dari temperature--
dan suhu, dari Tentu saja, adalah bilangan bulat.
>> Jadi kita akan menciptakan int, yang merupakan Jenis data apa yang kita ingin menyimpan.
Kita akan memanggil suhu ini demi nomenklatur penamaan
sesuatu yang kita semua mengerti.
Dan kita akan memiliki tanda kurung persegi.
Dan kami ingin tiga angka.
Jadi kita akan menempatkan tiga di dalamnya.
>> Sesuatu yang benar-benar penting untuk diingat
adalah bahwa array nol diindeks.
Semua itu berarti adalah bahwa Anda mulai dengan indeks 0,
dan Anda berlari melalui ukuran array minus 1.
Jadi misalnya di sini, kami memiliki sebuah array ukuran 3.
Ini akan dapat menahan tiga nilai.
Tapi angka-angka yang themselves-- nomor, array, indeks,
array, adalah 0 sampai 2.
Jadi guys, benar-benar, benar-benar hati-hati saat Anda akan melalui masalah Anda mengatur
dan menciptakan apapun array, karena banyak kali itu
benar-benar, benar-benar mudah untuk melupakan itu.
Aku benar-benar tidak memiliki indeks dari 3, yang saya saat ini hanya
memiliki indeks 2.
Dan jika Anda mencoba untuk mengakses indeks ketiga,
itu akan menjadi apa disebut null terminator.
Ini tidak akan benar-benar ada di array.
Dan komputer tidak akan seperti itu.
Jadi hati-hati setiap kali Anda mengakses hal-hal hanya
untuk memastikan bahwa Anda ingat bahwa array adalah nol-diindeks.
>> OKE.
Jadi contoh pertama hanya salah satu cara untuk menciptakan sebuah array.
Contoh kedua yang saya miliki bawah ini hanya cara terpisah
menciptakan apa data yang sama struktur yang baru saja kita diinput.
Jadi, bukannya fisik berjalan melalui dan menempatkan dalam suhu 0
sama dengan apa pun, suhu 1 sama dengan apa pun, suhu 2 equals
apapun, aku bisa benar-benar hanya langsung membuat semuanya dalam satu baris
dalam suhu kurung sama.
>> Dan pemberitahuan dalam hal ini, Anda tidak perlu untuk menentukan seberapa besar array adalah,
karena komputer akan pergi melalui dan melihat bahwa ada
tiga elemen pada mereka kurung kurawal.
Dan itu akan tahu, OK, Saya perlu array ukuran 3.
Anda tidak akan perlu masukan dengan cara berikut.
>> Dan juga, ya, seperti itu.
Apakah ada yang punya pertanyaan tentang bagaimana kita membuat array
atau bagaimana struktur array bekerja?
Ya.
>> AUDIENCE: [tidak terdengar]?
ANDI PENG: Ya, persis.
Jadi jika Anda adalah untuk mendeklarasikan dan menginisialisasi array metode berikut,
yang merupakan cara kedua, Anda hanya bisa meninggalkan mereka.
Dan komputer otomatis tahu bahwa itu
perlu menghitung berapa banyak elemen yang pada mereka kurung kurawal, dipisahkan
dengan koma.
>> Jadi di sini mereka melihat 65, 87, 30.
Jadi komputer tahu, oh, ada tiga bilangan bulat.
Aku tahu untuk membuat sebuah nama array suhu dengan tiga elemen di dalamnya.
Pertanyaan bagus.
Ya.
>> AUDIENCE: Apakah tidak mungkin untuk membuat array dengan tipe data yang berbeda
yang bisa masuk ke dalamnya?
Misalnya, dengan bilangan bulat [tak terdengar]?
ANDI PENG: Untuk keperluan kelas ini, tidak ada, sekarang.
Bila Anda membuat data struktur seperti sebuah array,
Anda memberitahu komputer, hey, aku membutuhkanmu
untuk mengalokasikan sebanyak ini memori di hard drive saya,
dengan masing-masing sel menjadi sejumlah bit.
>> Ingat kita pelajari dalam seminggu nol bahwa data yang berbeda
jenis memiliki ukuran yang berbeda?
Jadi misalnya, string adalah jumlah yang berbeda
ruang dari char, yang adalah jumlah yang berbeda ruang
dari integer.
Dan jadi jika Anda tidak menentukan dan Anda mencampur dan mencocokkan jenis apa variabel
Anda memiliki, komputer akan menjadi sangat bingung.
Dan itu tidak akan tahu berapa banyak memori untuk memberikan.
Jadi untuk tujuan yang tepat sekarang, komputer hanya dapat
mengenali satu jenis array.
Pertanyaan bagus.
OKE.
>> Jadi secara alami, Pertanyaan kedua kami memiliki
adalah, baik, sekarang kita telah membuat sebuah array dan kami telah membuat semua hal ini
dalam array, bagaimana kita akan dapat mengaksesnya?
Sehingga struktur khas yang kita selalu mengakses array adalah indah kami untuk loop.
Aku berjanji kalian bahwa kami akan melihat banyak orang ini di sini.
>> Pada dasarnya, kapan saja Anda inginkan input nilai ke dalam array
atau Anda ingin mengakses mereka, Cara terbaik untuk melakukannya adalah untuk loop,
karena dalam untuk loop, Anda tahu berapa kali Anda
akan ingin menjalankan melalui array, karena Anda memiliki edisi berhenti, kan?
Dan setiap kali Anda menjalankan melalui, Anda dapat mengakses
elemen yang berbeda dari array.
>> Dan juga, ini adalah alasan mengapa biasanya kita mulai untuk loop di 0 nilai,
karena ketika Anda mengakses array, Anda dapat mengakses indeks nol.
Dan sehingga sejajar dengan sangat baik.
Kalian mungkin ingin menulis untuk int i sama dengan 1.
i kurang dari atau sama dengan 3.
>> Tapi itu tidak akan bekerja cukup sebagai baik di sini, karena Anda hanya
memiliki elemen 0, 1, dan 2.
Dan jika Anda adalah untuk memulai i Anda di elemen 1, 2, dan 3,
Anda akan berakhir berjalan keluar dari batas-batas array,
dan hal-hal buruk yang akan terjadi.
>> Jadi saya harap kalian melihat Shalawat yang mengapa di kelas sebelumnya
kami mengajar kalian bagaimana menjalankan dan memformat untuk loop cara kami.
Itu karena, sekarang kita sudah dialihkan ke array,
Anda dapat melihat mengapa 0 meminjamkan sendiri sangat baik untuk mengakses.
>> Jadi cara kita melakukannya adalah itu-- aku hanya mencetaknya di sini demi
pencetakan itu.
Tapi aku punya pengganti saya, koma.
Dan mengakses aktual Bagian yang terjadi.
Nama array disebut temperatur.
Jadi suhu dan i-th elemen dari array.
>> Sehingga untuk loop berjalan melalui, itu akan dimulai dari 0.
Ini akan mencetak Indeks 0 dari array ini.
Maka itu akan mencetak keluar elemen pertama.
Maka itu akan mencetak keluar yang kedua.
Dan kemudian kita akan istirahat.
Apakah setiap orang yang jelas tentang bagaimana yang terjadi?
Besar.
>> Baiklah.
Jadi di sini kita memiliki cara mengatakan, jika kita tidak ingin
ke hard-kode in-- saya sebagai programmer.
Saya tidak ingin benar-benar secara fisik dimasukkan ke dalam setiap elemen individu
array ini.
Jika saya ingin bukannya memiliki nilai-nilai input pengguna,
apa cara terbaik untuk melakukannya?
>> Nah, di sini saya telah menciptakan Fungsi ini indah,
di mana saya dapat mendeklarasikan array.
Jadi int scores-- mari hanya mengatakan kami ingin membuat
array yang memegang nilai dari semua 18 siswa di sini di bagian ini.
Saya pikir kami punya sedikit lebih dari 18 anak-anak hari ini.
Tapi demi contoh ini, mari kita hanya berasumsi kami memiliki 18.
Saya akan membuat sebuah nama array skor dengan tipe int, karena skor, tentu saja,
adalah nomor.
Dan aku akan memiliki 18 dalam kurung persegi,
karena itulah berapa banyak siswa saya ingin dapat menyimpan puluhan.
>> Dan cara saya mengisi array adalah bahwa saya akan
menjalankannya melalui untuk loop, dari Tentu saja, dengan 0 menjadi indeks 0 saya.
Dan kemudian dengan 18 menjadi saya menghentikan edisi, karena ada
18 elemen dalam array.
Dan kemudian aku akan melakukan printf, Masukkan skor untuk student-- bla bla bla.
>> Bisa ada yang bilang saya mengapa saya di sini mencetak i ditambah 1 dan tidak saya?
Ini semacam trik pertanyaan, tidak benar-benar.
Ini tidak benar-benar secara fisik mempengaruhi menjalankan kode.
Ya.
>> AUDIENCE: [tidak terdengar] 0?
ANDI PENG: Ya, persis.
Ini agak canggung untuk mengatakan, hey, Anda siswa 0 di kelas ini.
Ini sedikit aneh.
Jadi kita, sebagai manusia, tidak terlalu suka memikirkan bagaimana komputer berpikir.
Jadi meskipun di komputer, itu menyimpan nilai-nilai
dalam indeks 0-th, ketika kami manusia, kita tidak benar-benar
ingin merujuk diri sebagai nol.
Jadi ketika saya hanya mencetak itu, Aku akan mencetak dan menambahkan
1 hanya demi kejelasan.
Jadi ketika saya mencetak, aku akan menjadi mampu mencetak siswa 1 sampai 18.
Ini tidak benar-benar berdampak menjalankan kode
dengan cara apapun, cara saya mencetak.
>> Tapi hati-hati bila Anda benar-benar mengakses array.
Bila Anda melihat skor i, perhatikan di sini aku benar-benar
mengakses indeks 0 dan bukan 1 ditambah 0-- atau 1 ditambah 1,
dalam kasus ini, indeks sehingga bahwa itu benar-benar jelas.
Apakah setiap orang semacam OK pada bagaimana ini berjalan melalui
dan dengan setiap indeks Aku menempatkan nilai ke array
dan menciptakan sebuah array dengan 18 angka bahwa pengguna akan masukan?
OKE.
Keren.
>> OKE.
Kita sekarang pindah ke sesuatu yang cukup relevan untuk bagian ini diatur juga.
Aku tahu di kuliah, David-- Maaf, Anda punya pertanyaan?
>> AUDIENCE: Dapatkah Anda memperbesar itu?
>> ANDI PENG: Ya, jadi saya mencoba.
Tapi aku tidak tahu.
Untuk beberapa alasan, ini versi PowerPoint
adalah benar-benar tidak bekerja baik dengan layar.
Jadi kita hanya akan untuk tetap seperti ini.
Semua ini akan di-upload secara online.
Maaf, guys.
Ya.
OKE.
>> Jadi kita juga dapat memiliki string.
Jadi jika kalian benar-benar notice-- Saya tahu Rob pergi ini di kuliah yang
bahwa ia did-- string sebenarnya hanya sebuah array karakter,
jika Anda berpikir tentang hal itu, kan?
Sebuah string adalah nama atau kalimat atau kata, kan?
>> Jika saya harus membuat string bernama Andi-- hanya nama saya, A-N-D-I.
Anda berpikir itu hanya sebagai salah satu variabel.
Tapi sebenarnya, itu dipecah menjadi hanya sebuah array karakter.
Jadi itu punya karakter yang tersimpan dalam sebuah nilai array.
Itu punya karakter n disimpan dalam Indeks kedua dan seterusnya dan sebagainya.
>> Jadi sedemikian rupa, kita benar-benar memiliki jenis
struktur diatur dalam menempatkan string kami.
Jadi di sini, jika saya harus input Kata "makan" - sehingga string yang sama dengan kata
mendapatkan tali.
Jika saya masukan kata "makan," yang secara fisik cara bahwa komputer saya
adalah menyimpan string dalam memori saya.
>> Dan jika saya ingin menjalankan melalui yang dan cetak yang out-- jadi untuk ke saya
sama dengan nol, ingat, dalam kuliah, kami ditutupi sesuatu yang disebut strlen,
atau panjang string.
Karena aku tidak benar-benar tahu seberapa besar array adalah
apa pun inputting-- pengguna
>> Sebagai contoh, saya diinput kata "makan," dan aku tahu
itu tiga karakter, kan?
Jadi saya bisa dimasukkan ke dalam tiga ada dan semuanya akan baik-baik.
Tetapi jika input pengguna Anda sesuatu itu nomor yang berbeda dari nilai-nilai,
Anda akan tidak dapat benar-benar tahu bahwa ketika Anda program kode Anda.
>> Jadi cara kita menangani kasus uji seperti itu adalah bahwa kita memiliki sesuatu
disebut strlen, yang hanya fungsi yang memberitahu Anda berapa lama string adalah.
Jadi strlen kata.
Kata saya makan.
n sama dengan strlen kata.
Dapatkah seseorang memberitahu saya apa yang nilai sebenarnya di sana?
Apa n mewakili tepat sekarang, dalam contoh ini, jika saya harus makan?
>> AUDIENCE: 3.
>> ANDI PENG: 3, persis.
Jadi kita miliki untuk int i sama nol, n sama dengan 3, pada dasarnya.
Dan saya akan berjalan sampai kurang dari 3i ++.
Dan itu akan dasarnya pergi melalui dan melakukan hal yang sama.
Ini akan mencetak setiap nilai dan memberikan
E-A-T. Itu hanya menandakan suatu cara yang berbeda untuk menulis itu.
Itu akan sangat membantu.
Ya.
AUDIENCE: Apa manfaat dari menempatkan n sama dengan kata strlen dalam yang
untuk loop [tidak terdengar]?
ANDI PENG: Ya.
Jadi jika saya to-- mengatakan, misalnya, jika saya melakukan itu dan kemudian
do-- oop-- itu, dalam kode saya, itu akan benar-benar menjadi seperti melakukan hal yang sama.
Namun, cara yang dijelaskan David selama kuliah, jika salah satu dari kalian
ingat, adalah bahwa, sebagai manusia, sebagai programmer,
kita benar-benar mencoba program kami kode sehingga komputer kita memiliki
untuk bekerja seminimal mungkin, sehingga bahwa kode kita sangat efisien.
>> Jadi jika saya punya bahwa ada, apa akan terjadi melalui untuk loop saya
adalah bahwa aku pertama kali mendeklarasikan variabel bernama i akan menjadi 0.
Aku akan memeriksa, oh, apa strlen kata?
Oh, strlen adalah 3.
Begitu juga saya kurang dari tiga?
Ya itu.
Aku akan menjalankan.
>> Dan kemudian kedua kalinya kembali sekitar loop, aku akan kenaikan i.
i akan menjadi satu.
Dan saya akan cek, oh, tapi apa strlen kata?
Oh, itu tiga.
Dan apakah itu tampak seperti boros, setiap kali Anda menjalankan melalui loop,
untuk memeriksa fungsi, meskipun strlen kata
pernah benar-benar berubah?
>> Jadi kekuatan ekstra untuk komputer.
Ketika Anda mulai berbicara tentang hal-hal yang miliaran dan miliaran
dan miliaran tempat panjang, bayangkan komputer Anda
harus secara fisik pergi melalui dan memeriksa semua itu setiap saat.
Itu sebabnya, untuk membuat hanya demi efisiensi,
kita cenderung hanya melakukan ini, karena dengan cara ini kita hanya
memanggil fungsi sekali di awal,
dan bahwa setiap kali berjalan melalui itu akan
untuk menyimpan nilai 3 ada, bahwa Anda tidak
harus terus-menerus memeriksa setiap kali.
Ya.
>> AUDIENCE: Maaf.
Hanya [tidak terdengar].
Bisa Anda int n sama dengan strlen dan menempatkan bahwa di atas bagian luar untuk loop
demikian juga?
ANDI PENG: Ya.
Anda bisa melakukan itu, benar-benar.
Alasan kami memilikinya di sini adalah karena cara untuk loop karya
adalah bahwa itu disebut variabel lokal dalam arti
bahwa segala sesuatu Anda menciptakan bagian dalam untuk loop
hanya ada dalam untuk loop.
>> Jadi variabel saya hanya ada pada mereka kurung.
Dan di sini variabel n juga hanya ada pada mereka kurung.
Jadi jika Anda menggunakan strlen dari kata beberapa kali di bawah,
benar-benar cara terbaik untuk melakukannya akan menyatakan itu atas
sehingga Anda tidak perlu melakukannya sekali.
Ya.
AUDIENCE: Mengapa Anda memiliki baris baru setelah persen
melihat apakah Anda ingin menempatkan semua huruf sebelahnya memisahkan?
>> ANDI PENG: Oh, saya ingin mencetak mereka semua pada setiap baris.
Tidak peduli.
Ya, itu format a.
Itu pertanyaan yang bagus, meskipun.
Ya, jika saya ingin mencetak itu semua hanya pada satu baris,
Saya tidak akan memiliki dasbor di.
OKE.
Semua orang baik?
OKE.
Keren.
>> Jadi saya pikir saya telah berbicara cukup.
Giliran kalian untuk menjalankan melalui kode dan katakan padaku apa yang salah di sini.
Di mana bug?
Jadi seperti yang Anda lihat, saya sudah menyatakan array baru dari tipe string bernama kelas.
Dan aku sudah diinput Sam, Jess, dan Kim ke dalamnya.
Dan aku mencoba untuk mencetak semua elemen array.
Dapatkah seseorang memberitahu saya mengapa ini akan memberi saya masalah?
Aku akan memberikan kalian 10 detik untuk berpikir tentang hal ini.
>> OKE.
Ya?
>> AUDIENCE: Apakah pusat kiri sama dengan 3 atau [tidak terdengar]?
ANDI PENG: Benar.
Jadi berapa kali ini sebenarnya akan menjalankan melalui loop ini?
>> AUDIENCE: Empat.
>> ANDI PENG: Tepat.
Ini akan melalui empat kali.
Ini akan dijalankan melalui pada 0, 1, 2, dan 3,
karena elemen mereka adalah i kurang dari atau sama dengan 3.
Itu tidak akan berhenti ketika itu 2.
Ini akan terus akan sampai hits 3.
Dan seperti yang kita tahu, hanya ada tiga elemen dalam array kita yang sebenarnya.
>> Jika kita mencoba mengakses keempat unsur atau indeks 3,
Anda akan memukul suatu tempat dalam memori yang tidak ada.
Ini disebut null terminator.
Tidak ada yang akan berada di sana.
Komputer Anda tidak akan sangat senang dengan Anda.
Ya.
Apakah ada yang punya pertanyaan mengapa yang terjadi?
Itu area umum untuk menghindari.
Ya.
>> AUDIENCE: Apakah bukan yang pertama geser juga memiliki serangkaian 2?
ANDI PENG: No.
Jadi pada dasarnya, ketika Anda membuat sebuah array,
bahwa braket yang tepat ada, yang number-- semua
itu memberitahu Anda adalah bagaimana banyak unsur yang saya miliki.
Ini tidak benar-benar mengatakan saya indeks apa pun.
Jadi dalam hal ini, aku tahu aku ingin menulis dengan tiga tempat,
dengan tiga tempat fisik untuk terus apa pun yang saya ingin terus.
Jadi itu sebabnya nomor tiga adalah ada.
Namun, jika saya ingin untuk benar-benar mengaksesnya,
jika saya ingin mengatakan, printf jumlah braket kelas, maka
Anda akan benar-benar menempatkan indeks fisik ada.
Ya, pertanyaan yang bagus.
>> AUDIENCE: Jadi adalah fisik Indeks seharusnya [tidak terdengar]?
ANDI PENG: Maaf.
Anda dapat berbicara sedikit?
>> AUDIENCE: Jadi adalah indeks fisik [Tidak terdengar] masing-masing kotak?
[Tak terdengar]?
>> ANDI PENG: Ya.
Jadi aku akan kembali ke sini.
Pikirkan di sini.
Kami memiliki sebuah array ukuran 3.
Ada tiga tempat, seperti, placeholder fisik di sini.
Tapi mereka bernama 0, 1, dan 2.
Jadi jika saya ingin mengaksesnya, cara yang saya mengaksesnya
adalah printf dari apa pun yang saya inginkan di sini.
Anda harus mencetak keluar nama itu,
karena kemudian komputer tahu, oh, saya perlu melihat
dalam array ini untuk indeks 0.
Ya.
Tapi ukuran itu tidak berubah.
Ukurannya 3, terlepas bagaimana Anda label mereka.
OKE.
Semua orang baik?
AUDIENCE: Jadi setiap kali saya [tidak terdengar]?
ANDI PENG: OK.
Jadi dalam hal ini, kita tidak benar-benar masuk ke dalamnya sekarang pada kursus.
Tapi tahu bahwa string-- seperti saya katakan sebelumnya, string pada dasarnya
array karakter.
Jadi jika saya membuat sebuah array string, aku agak
memiliki sebuah array array karakter, kan?
>> Jadi dalam hal ini, karena saya memiliki sebuah array string,
jika Anda adalah untuk memasukkan kata yang sangat panjang, yang masih membutuhkan hanya satu ruang,
karena itulah satu string.
Tetapi jika Anda adalah untuk memikirkan karakter array itu,
maka yang mengambil lebih banyak karakter dari salah satu kata lain
adalah.
Tidak benar-benar penting untuk sekarang.
Tapi itu hanya umumnya bagaimana itu bekerja.
>> OKE.
Jadi ini adalah sesuatu yang saya akan membiarkan Anda melakukan banyak selama semester.
Saya perlu istirahat suara saya.
Kalian harus merangsang diri sendiri.
Banyak dari Anda mungkin harus tidur sekarang.
Saya memasukkan masalah random di mana kita sebagai sebuah kelas atau Anda
dengan pasangan di samping Anda akan untuk menghabiskan beberapa menit membahas
tentang bagaimana kita akan pergi tentang pemecahan atau membuat program seperti ini.
>> Jadi sekarang, kita ingin untuk membuat sebuah program--
kita akan menyebutnya upper.c-- yang mengubah
kata huruf kecil ke kelas atas huruf besar string--, maaf.
Kata dalam string, maaf, ini identik.
Aku akan mengubahnya berarti hal yang sama.
>> Ya.
Ambil beberapa menit.
Tidak harus ditulis dalam bahasa apapun.
Hanya dalam kode pseudo atau logis bagaimana kita akan bahkan
pergi untuk melakukan masalah seperti itu.
Ya.
>> [SIDE PERCAKAPAN]
>> Saya juga melihat bahwa kalian can-- Aku agak melihat sudah program.
Saya kira saya kurangnya Modus presenter adalah masalah.
Tapi tidak apa-apa.
>> [SIDE PERCAKAPAN]
Ya, silahkan, guys.
Ayo mendapatkan permen.
>> AUDIENCE: Ya!
>> [SIDE PERCAKAPAN]
ANDI PENG: Juga, yeah, Saya akan mulai melemparkan permen
pada orang-orang yang tidak menjawab pertanyaan.
Jadi Anda harus semua pertanyaan jawaban.
Atau saya kira orang-orang yang jangan menjawab pertanyaan.
Ya, sebaliknya.
>> [SIDE PERCAKAPAN]
AUDIENCE: [tidak terdengar]
>> ANDI PENG: Ya.
Ya.
>> [SIDE PERCAKAPAN]
>> Baiklah, guys.
Mengambil, seperti, 10 detik lebih.
>> [SIDE PERCAKAPAN]
>> OK, guys.
Jadi sebelum kita mulai mencoba untuk sebenarnya secara fisik menulis kode,
kebiasaan yang baik untuk mengembangkan adalah bahwa kami ingin jenis pertama dari alasan
keluar secara logis bagaimana kita akan melakukannya.
Anda ingin memastikan, sebelum Anda secara fisik
mulai mencoba untuk kode di Mario, bahwa Anda membuat
Pastikan bahwa Anda memiliki pseudocode Anda.
Yang membawa Anda melalui apa yang Anda butuhkan untuk membuat sehingga
bahwa, ketika Anda secara fisik menulis program Anda kemudian,
Anda akan lebih mampu untuk menangkap kesalahan dalam kode Anda dan hal-hal seperti itu.
>> Jadi kita akan hanya mulai by-- dalam bahasa Inggris, dalam pseudocode,
apakah ada yang ingin memberikan saya penjelasan generik
bagaimana kita akan pergi untuk melakukan ini?
Ya.
>> AUDIENCE: [tidak terdengar].
ANDI PENG: Tentu, tidak ada kekhawatiran.
AUDIENCE: Bisakah Anda meminta untuk atau meminta seseorang untuk mendapatkan tali 1-- ya, string,
dan kemudian--
>> ANDI PENG: Ya, jadi ini adalah awal yang baik.
Saya akan mulai mengetik, maaf, seperti yang Anda berbicara.
So--
>> AUDIENCE: huruf kecil --the nomor yang lebih tinggi, kan?
Atau huruf kecil memiliki nomor tinggi?
ANDI PENG: Tepat.
AUDIENCE: Jadi kita kurangi 32 dari apa pun [tidak terdengar].
>> ANDI PENG: Great.
Jadi kita semacam memiliki pengertian umum bagaimana bekerja tentang masalah ini.
Mengetahui bahwa kami telah belajar jenis cara fisik yang string
disimpan dalam memori, apa yang Anda sudah
tahu bahwa Anda akan mungkin harus menulis dalam kode Anda
untuk bergerak melalui string?
>> AUDIENCE: Untuk lingkaran.
ANDI PENG: A untuk loop, persis.
Besar.
Jadi kita semacam memiliki generik pseudocode ditulis
jenis memberikan Anda mencatat pada bagaimana Anda
akan bergerak memecahkan masalah.
Sekarang bahwa Anda memiliki ini, Anda dapat referensi untuk nanti
pada saat Anda mencoba untuk benar-benar menulis kode Anda.
Jadi kita benar-benar bisa pergi di sini.
Dan aku punya fungsi yang disebut upper.c-- ada itu is-- hanya template kosong
sekarang bahwa kalian akan membantu saya mencari tahu tentang cara menulis
baris ini dari code-- tidak baris kode.
Ini akan menjadi beberapa baris kode.
>> Ketika memulai apapun dari pset kosong, apa
hal pertama yang saya butuhkan ingat untuk melakukannya?
>> AUDIENCE: [tidak terdengar].
>> ANDI PENG: Great Yep.
Sertakan.
stdio.h.
Sering kali ini adalah salah satu kesalahan yang paling mudah orang
akan membuat ketika mereka menulis, adalah bahwa mereka akan
lupa untuk menyertakan sebuah perpustakaan penting yang mereka butuhkan.
Jadi jika jam kantor dan Anda seperti, Saya tidak tahu mengapa kode saya tidak bekerja.
Dapatkah Anda memberitahu saya mengapa hal itu tidak bekerja?
Kami akan mengatakan apakah Anda # include?
Anda harus # include itu.
OKE.
>> Jadi kita punya standar I / O di sini.
Adalah bahwa hanya perpustakaan kita akan butuhkan di sini?
Apa lagi yang akan kita lakukan?
Maaf.
Seseorang hanya berteriak itu?
>> AUDIENCE: [tidak terdengar].
ANDI PENG: Ada Anda pergi.
OKE.
Dan bagaimana aku pergi tentang memulai apapun fungsi, apapun fungsi utama
dalam program kami?
Int main.
OKE.
Apa yang harus saya dimasukkan ke dalam sini?
Apa hal pertama yang Anda ingin lakukan?
Jika kita ingin mendapatkan string dari pengguna,
apa yang kita akan memiliki untuk melakukan pada baris pertama ini?
Maaf, kalian hanya merasa bebas untuk berbicara dan keras.
Hanya berteriak apa pun.
>> AUDIENCE: Tanyakan pengguna?
ANDI PENG: Bagaimana kita melakukannya?
Ask-- aku akan mengetik "meminta pengguna"?
>> AUDIENCE: printf.
>> ANDI PENG: OK.
Printf.
Apa yang saya ingin printf?
>> AUDIENCE: Ketik sesuatu.
>> ANDI PENG: Seperti itu?
Guys, berpura-pura seperti aku komputer.
Secara fisik saya kirim setiap langkah bahwa saya harus mengetikkan di sini?
Apakah aku melakukan sesuatu yang salah?
Haruskah saya telah mengetik sesuatu?
>> AUDIENCE: Anda perlu tanda kutip.
>> ANDI PENG: Saya perlu tanda kutip?
OKE.
>> AUDIENCE: Dan baris kemudian baru.
Titik koma.
ANDI PENG: titik koma?
OKE.
Baik.
>> AUDIENCE: Dan mungkin menentukan yang Anda inginkan dalam huruf kecil?
>> ANDI PENG: Great.
Kalian menertawakan saya lupa untuk menempatkan titik koma.
Saya jamin Anda di suatu tempat dalam perjalanan kelas ini,
Anda akan lupa untuk menempatkan titik koma, dan itu
akan membawa Anda tiga jam untuk mencari mengapa kode Anda tidak bekerja.
Ini terjadi pada kita semua.
Mungkin akan terjadi pada Anda.
Dapatkan dalam kebiasaan baik menggunakan titik koma.
OKE.
>> AUDIENCE: Apakah Anda ingin untuk melakukan backslash di?
>> ANDI PENG: Tentu.
Apakah Anda ingin melakukan backslash di?
>> AUDIENCE: Ya.
>> ANDI PENG: Great.
OKE.
Apa yang harus saya lakukan selanjutnya?
>> AUDIENCE: Dapatkan tali.
ANDI PENG: Dapatkan tali.
Jadi apa yang saya ketik?
Seseorang?
>> AUDIENCE: String s.
>> ANDI PENG: String s.
AUDIENCE: GetString.
ANDI PENG: Seseorang, bisa Anda ceritakan di mana
Fungsi GetString ini datang dari?
>> AUDIENCE: string.h.
>> ANDI PENG: string.h?
Anda pikir itu dari string.h?
>> AUDIENCE: [tidak terdengar].
>> ANDI PENG: Ada Anda pergi.
Ini dari CS50.h.
Jika Anda selalu bingung mana file library adalah atau file header,
google harfiah string.h, dan saya akan memberitahu Anda
apa semua fungsi yang berada di string.h.
OKE.
>> Jadi sekarang bahwa saya telah membuat string dan saya sudah meminta pengguna untuk itu,
Aku sudah disimpan dalam variabel bernama s, apa yang harus saya lakukan sekarang?
>> AUDIENCE: Periksa apakah itu dalam huruf kecil.
ANDI PENG: Maaf?
AUDIENCE: Periksa apakah itu dalam huruf kecil.
ANDI PENG: Baiklah, mari kita lakukan itu.
Bagaimana aku melakukan itu?
Sebenarnya, untuk keperluan kelas sekarang,
kita hanya akan berasumsi bahwa segala sesuatu
bahwa kita masukan sudah dalam huruf kecil.
Jika Anda ingin memeriksa, Anda akan hanya menambahkan pernyataan bersyarat
yang memeriksa, yang berlari melalui setiap elemen array tunggal
dan memeriksa apakah itu antara nilai-nilai tertentu.
Saya lupa apa nomor nilai-nilai dari huruf kecil yang.
Anda dapat mencarinya di meja ASCII.
Tapi ya, itu adalah titik benar-benar baik.
Tapi sekarang, kita hanya akan berasumsi bahwa semua string yang kita masukan
adalah dalam huruf kecil.
OKE.
>> Jadi bagaimana aku pergi tentang masalah ini selanjutnya?
AUDIENCE: Untuk lingkaran.
ANDI PENG: Untuk lingkaran?
OKE.
Katakan padaku apa yang harus mengetik.
>> AUDIENCE: Untuk int i sama dengan 0.
>> ANDI PENG: OK.
>> AUDIENCE: Oh, benar-benar, maka Anda melakukan koma dan melakukan n equals strlen.
>> ANDI PENG: hal penting Jadi yang saya pikir dia melihat di sini
adalah bahwa kita tidak harus mengatakan int n kedua kalinya kami melakukan ini.
Hanya tahu bahwa dalam untuk lingkaran ketika Anda menyatakan,
Anda benar-benar tidak perlu int dari kedua kalinya Anda melakukan variabel.
Anda dapat mengatakan n strlen.
>> AUDIENCE: Of s.
>> ANDI PENG: s.
OKE.
>> AUDIENCE: Kemudian titik koma.
>> ANDI PENG: Tentu.
>> AUDIENCE: Dan kemudian [tidak terdengar] n.
Kemudian i ++.
>> ANDI PENG: Great.
Baiklah.
Apa yang kita inginkan di dalam ini untuk loop sekarang?
Ingat, jika kita akan berjalan melalui string dan dijalankan melalui sebuah array,
kami ingin memeriksa hal-hal di dalamnya.
Apa yang akan kita butuhkan?
Ini adalah jenis bagian yang sulit sekarang.
Ada yang punya menebak?
>> OKE.
Jadi pertama, bagaimana kita bahkan mengakses?
Bagaimana kita bahkan cek pertama atau mengakses sebuah elemen dalam array?
Bagaimana kita melakukannya?
Apa notasi yang kita gunakan untuk melakukan itu?
Apa nama dari array ini disebut?
Ini disebut s, kan?
>> Ingat, string apapun selalu array.
Jadi s braket saya, kan?
Karena itu adalah nilai saat ini atau nilai indeks kita memeriksa.
Dan kita akan mengatur bahwa sama to-- kita ingin nilai huruf kecil, kan?
Kami ingin mengubah itu lower-- Maaf, kami menginginkan huruf besar.
Kami ingin mengubah huruf kecil yang nilai ke huruf besar.
Dan jadi like-- aku minta maaf, siapa nama kamu?
>> AUDIENCE: Heidi.
>> ANDI PENG: Maaf?
>> AUDIENCE: Heidi.
>> ANDI PENG: Heidi.
Seperti Heidi mengatakan awalnya, kita mungkin
akan membutuhkan the-- kami mungkin akan harus mengurangi
32 dari charc apa pun itu, kan?
Karena pada ASCII tabel, perbedaan
antara huruf kecil dan huruf besar adalah 32.
Jadi ketika kita melakukan ini, kita mungkin akan ingin mengurangi 32, kan?
>> Jadi kita akan melakukan s i.
Apakah semua orang mengerti mengapa aku melakukan itu?
Karena sekarang, dalam array kita, kami sedang memeriksa indeks 0, kan?
Dan di indeks 0 dari String, itulah karakter pertama.
Dan karakter yang kita akan untuk menganggap itu huruf kecil.
Jika kita ingin membuat huruf besar, kami harus mengurangi 32 dari nilainya,
karena dalam ASCII kami tabel, itulah bagaimana kita mendapatkannya
ke depan sesuai nilai yang membuatnya huruf besar.
Apakah setiap orang memahami bahwa?
Ya.
>> AUDIENCE: Bisakah Anda juga jangan huruf kecil minus-- sebuah
>> ANDI PENG: Ya, jadi itu sebenarnya sangat baik.
Aku akan datang kembali ke pertanyaan setelah kami melakukan ini.
Ya.
Dan kemudian jika saya ingin melihat apa yang terjadi,
Aku mungkin akan ingin mencetak, kan?
Seseorang memberitahu saya apa Saya ingin mencetak di sini.
>> AUDIENCE: printf persen c backslash [tidak terdengar].
Itulah nilai [tidak terdengar] s i.
>> ANDI PENG: s i, maaf?
AUDIENCE: [tidak terdengar].
ANDI PENG: Saya tidak tahu.
Apa yang kamu pikirkan?
>> AUDIENCE: Yah, aku wouldn't-- Saya kira saya tidak akan bring--
Saya akan bawa keluar dalam, karena [tidak terdengar].
ANDI PENG: Oh, Anda akan melakukannya?
AUDIENCE: Ya.
ANDI PENG: Mari kita tinggalkan jalan itu, dan saya akan menjelaskan mengapa kemudian.
Ingat, bahkan ketika Anda memiliki tempat dudukan,
Anda ingin menempatkan tanda kurung di sekitarnya.
Baiklah.
Jadi ini harus menjadi fungsi padat di sini.
Mari kita jalankan dan melihat apakah itu mengkompilasi.
Membuat atas.
Uh oh.
Yang tidak terlihat terlalu bagus.
Mengapa hal ini terjadi?
Seperti kesalahan, Anda ingin pergi kembali dan mulai dengan yang pertama,
karena biasanya penyebab satu kesalahan banyak kesalahan lain setelah itu.
Di sini kita melihat upper.c: 18: 25, yang memberitahu saya dalam program ini bernama upper.c,
on line 18, kesalahan secara implisit menyatakan perpustakaan fungsi strlen dengan jenis
bla unassigned--, saya tidak tahu apa yang terjadi setelah itu.
>> Semua itu mengatakan sekarang adalah sesuatu yang terjadi strlen tersebut.
Dan komputer bingung, karena itu seperti, aku tidak tahu apa strlen adalah?
Apa yang mungkin memberitahu Anda Anda hilang?
>> AUDIENCE: Kau hilang [tidak terdengar].
>> ANDI PENG: Kau benar.
Tepat.
Jadi ini adalah di mana itu penting untuk memastikan
bahwa setiap fungsi yang Anda gunakan dalam Anda kode adalah memiliki header yang benar
file untuk perpustakaan, atau yang lain Anda akan mendapatkan banyak kesalahan
dan kode Anda tidak akan untuk mengetahui apa yang terjadi.
Jadi kita akan termasuk string.h sini.
>> Sekarang ketika kita mencoba untuk mengkompilasi atas.
Kompilasi benar.
Mari kita menjalankan program ini.
Jadi mengetik sesuatu dalam huruf kecil.
Apa yang kalian ingin mengetik?
Berteriak sesuatu.
Baiklah, Charly hanya berjalan di.
Kami akan ketik nama Charly ini.
>> Charly dalam huruf kecil.
Dan mudah-mudahan, mudah-mudahan, ini adalah akan berteriak dan meludahkan
Charly dalam huruf besar.
Hore!
tidak semua orang mengerti bagaimana Aku pergi tentang memecahkan itu?
Cara yang saya bisa memanipulasi menggunakan bilangan bulat
untuk memecahkan sesuatu yang Saya ingin melakukan di string,
karena karakter dan bilangan bulat dapat dirujuk dengan cara yang sama karena
pemetaan ASCII.
>> Jadi kembali ke titik Anda, jika saya ingin menempatkan di sini bukannya 32
huruf A minus huruf kecil hanya seperti itu, yang akan bekerja sama juga,
karena itulah hanya hanya Perbedaan antara dua nilai.
Jika saya ingin membuat charly again-- ini.
Oh tidak.
Saya pikir kami pergi dengan cara yang salah, ya?
>> AUDIENCE: [tidak terdengar] huruf kecil a.
>> ANDI PENG: Ada Anda pergi.
Yep.
Dan keluar meludah charly.
Jadi berhati-hatilah saat Anda mengurangkan nilai
ingat mana yang lebih besar dari yang lain.
Sebagai contoh, di sini aku lupa bahwa huruf kecil yang sebenarnya
lebih besar dari huruf besar A. Jadi ketika saya mencoba untuk mengurangi mereka dengan cara lain
sekitar, aku negatif 32.
Dan komputer saya seperti, Saya tidak tahu apa itu.
Ini kemungkinan hanya beberapa acak Nilai yang tidak sangat baik.
Dan jadi pastikan bahwa Anda mengurangkan dalam panjang yang benar
untuk menemukan karakter yang Anda inginkan.
OKE.
Apakah ada yang bingung tentang bagaimana kita pergi tentang menulis fungsi ini?
OKE.
Jadi sebenarnya, fungsi sudah ada di perpustakaan disebut ctype.h.
Disebut ctype.h perpustakaan.
Fungsi ini sebenarnya sudah ditulis untuk Anda.
Ini disebut untuk bagian atas.
>> Dan untuk tujuan pset ini, Anda akan
untuk menemukan bahwa Anda benar-benar ingin menggunakan banyak fungsi yang terkandung
dalam perpustakaan ctype.
Untuk bagian atas, untuk menurunkan, adalah atas, adalah lower-- mereka adalah semua fungsi
Anda akan dapat menggunakan sangat, sangat cepat dalam kode Anda sendiri yang
tidak persis apa yang dilakukan.
Kami menulis bagaimana mengkonversi string ke huruf besar.
Tapi ini sebenarnya kode bahwa orang lain telah menulis
dan bahwa Anda dapat mengakses melalui fungsi yang berbeda.
Ya?
>> AUDIENCE: Jadi Anda hanya menyalin A di sana dan melakukannya untuk setiap huruf?
>> ANDI PENG: Ya, karena saya tidak melakukan peduli tentang nilai-nilai dari.
Aku hanya peduli bahwa perbedaan di antara mereka adalah 32, kan?
Perbedaan antara huruf kecil b dan huruf besar B juga 32.
Dan perbedaan antara c dan huruf besar C selalu 32.
>> Aku hanya harus peduli tentang Perbedaan antara keduanya,
karena semua huruf mengikuti pola yang sama, kan?
Jika saya memiliki perbedaan antara salah satu dari mereka,
Aku tahu apa perbedaan antara mereka semua adalah.
Pertanyaan bagus.
Ya.
Semua orang baik?
OKE.
Oop.
>> OKE.
Jadi konsep lain yang akan sangat berguna saat Anda
terus mengembangkan kode Anda ide ini
menciptakan fungsi atau abstraksi.
Jadi sekarang, kita semua diambil aljabar.
Dalam aljabar, Anda diajarkan bahwa ada hal yang indah ini disebut fungsi
mesin, di mana jika Anda masukan satu jenis nomor,
itu berjalan melalui fungsi indah ini dan keluar muncul output yang berbeda, kan?
Dalam kode, hal yang sama terjadi di apapun fungsi.
>> Jadi aku bisa secara fisik menulis dalam tubuh saya dari kode saya
pernyataan utama yang sebenarnya apapun tubuh kode lakukan.
Tapi di luar itu, saya juga bisa menulis banyak fungsi yang berbeda
yang melakukan banyak hal yang berbeda.
Sebagai contoh, kita sudah sudah mulai menggunakan beberapa dari mereka.
Printf-- yang merupakan fungsi yang orang lain
telah menulis bahwa kita dapat memanggil dalam kode kami.
Untuk upper-- dalam kasus ini, upper-- adalah fungsi lain
kami telah menulis bahwa kita dapat memanggil dalam kode kami.
Dan jadi saya kira mengapa kami bahkan memiliki fungsi?
Mengapa kita tidak hanya celepuk semua dalam baris kode yang sama?
Itu membuat mudah bagi semua orang.
>> Nah, alasan di balik itu adalah, pertama-tama, organisasi.
Ini benar-benar menjengkelkan akan melalui kode seseorang
dan satu fungsi seperti printf.
Jika kalian benar-benar tahu apa yang Fungsi printf mensyaratkan untuk menulis,
itu, seperti, 1.000 baris kode.
>> Jika setiap kali saya ingin untuk printf sesuatu,
Aku harus menulis 1.000 baris kode, yang akan benar-benar menjengkelkan untuk membaca,
benar?
Itulah sebabnya kami baru saja menciptakan fungsi abstrak ini
bahwa kita sudah seseorang lain telah menulis di tempat lain.
Dan setiap kali kita perlu menggunakannya dalam kode kita, kita hanya harus mengatakan printf.
Dan yang mampu menggunakan fungsi orang lain telah ditulis dalam kode kita.
Itu membuat lebih mudah organisatoris untuk membaca kode.
>> Kedua, itu penyederhanaan.
Menyederhanakan langkah-langkah yang kita miliki untuk mengambil untuk memecahkan masalah kita.
Printf, fungsi seperti printf, fungsi seperti untuk bagian atas
adalah segala sesuatu yang memungkinkan kita untuk menyederhanakan kode kita turun sehingga lebih mudah.
Dan hal terakhir adalah usabilitas.
>> Jadi fakta bahwa kita memiliki fungsi yang disebut printf
bahwa kita dapat memanggil banyak berbeda kali dan memungkinkan untuk dapat digunakan kembali.
Jika saya menulis printf, Saya hanya menulis sekali.
Ia hanya ada dalam satu tempat.
Jika saya ingin melakukannya lagi, saya akan harus copy dan paste semua itu
ke baris kedua saya kode.
Itu sebabnya jika kita membuat fungsi yang ada di luar utama kami,
kita hanya dapat memanggil itu dan menggunakannya kembali setiap kali
kita perlu sehingga jauh lebih mudah bagi kita sebagai program untuk menulis.
>> Jadi cara yang kita benar-benar akan menulis fungsi sangat mirip, kan?
Ini adalah jenis yang pertama Misalnya di mana kita akan
melihat fungsi mengambil pada gaya berbeda dari kekosongan int utama kami.
Dalam hal ini, jika saya ingin menulis fungsi disebut q, kan?
>> Dan nilai int sini adalah semua mengatakan,
apa yang saya inginkan ini berfungsi untuk kembali ke saya?
Jika saya ingin kubus integer, Aku akan ingin masukan.
Ini adalah parameter.
Aku akan masukan nilai tipe int.
Dan aku akan kembali Nilai jenis lain int.
Dan di sini, karena Anda bisa melihat, semua yang saya lakukan
adalah cubing apapun masukan saya adalah sebagai output dan mengembalikannya.
>> Jadi semua fungsi ini dilakukan adalah mengambil semacam integer.
Mengalikan itu dengan sendirinya dua kali sehingga kubus berlaku.
Dan kemudian ia mengembalikan apa output yang.
Jadi dalam hal ini, itu dua baris kode yang kita harus menulis ekstra.
Tetapi jika kita ingin menelepon atas ini beberapa kali,
itu jauh lebih mudah untuk mengetik satu yang baris di sini yang ada di kubus dari
harus melalui beberapa kali.
>> Jadi cara yang pada dasarnya setiap format untuk setiap jenis fungsi
akan ada seperti di sini.
Jadi kita memiliki nama fungsi.
Dalam hal ini, itu disebut kubus.
Dan kami beri nama kubus karena itu mudah diingat.
Anda dapat nama itu persegi dan itu sebenarnya dapat potong dadu.
Tidak masalah.
Hanya nama yang Anda menugaskan fungsi Anda.
>> Hak ini di sini, int, adalah jenis parameter yang Anda butuhkan.
Jadi, apa fungsi ini butuhkan untuk beroperasi?
Nah, perlu masukan.
Saya menamakannya masukan.
Anda dapat nama itu apa pun yang Anda inginkan.
Tapi aku butuh sesuatu dari tipe int.
Ini akan benar-benar melaksanakan apa pun yang dalam di sini,
tubuh fungsi.
Dan kemudian jenis kembali di sini, int-- ini
semua itu mengatakan adalah bahwa fungsi ini
akan kembali ke saya di int.
Jadi itu akan mengambil di int, dan itu akan memberi Anda kembali int.
Apakah setiap orang memahami bagaimana format semacam ini bekerja?
Keren.
>> OKE.
Jadi jangan khawatir jika ini tampaknya hak abstrak sedikit sekarang.
Ini adalah sesuatu yang kita bicarakan.
Kami akan menyelam lebih dalam nanti dalam kursus.
Cara yang apapun tingkat yang lebih tinggi abstraksi dari hal-hal ini pekerjaan
adalah bahwa, dalam memori, di komputer Anda, semuanya
disimpan dalam jenis ini stack, harus saya katakan.
>> Jadi di sana di bagian atas.
Saya tidak tahu apakah Anda orang dapat melihat bahwa baik.
Saya akan mencoba untuk memperbesar.
Di sini, di atas, kita memiliki teks fisik
apa komputer interpreting-- semua nol dan orang-orang yang
ada dalam komputer kita.
Dan kemudian kami telah diinisialisasi Data dan diinisiasi data,
apa yang kita sebut variabel global.
Jadi variabel yang ada di semua program
dan di seluruh Anda, dasarnya, kode.
Jangan khawatir jika kalian jenis jelas tentang hal ini.
Itu tidak terlalu penting sekarang.
>> Dan kemudian kita memiliki apa yang disebut tumpukan dalam tumpukan.
Pikirkan stack secara harfiah sebagai seperti setumpuk hal,
tumpukan yang berbeda hal yang mendorong di atas
satu sama lain yang menyimpan berbagai variabel dan sintaks dalam kode Anda.
Dan kemudian di sini di bagian paling bawah, kita memiliki variabel lingkungan
dari apa yang Anda mengeksekusi dalam hanya garis kecil Anda kode.
>> Dan kami hanya akan tampilannya di pada bagian tumpukan sebenarnya.
Jadi di sini, jika kita tampilannya di atas hanya daerah ini dari stack,
ini seperti apa.
Dan ini sebenarnya cukup penting ketika kalian berbicara tentang fungsi,
karena pemberitahuan bahwa memori komputer Anda
adalah menyimpan variabel dan fungsi
dan parameter kedua Anda fungsi dan variabel utama Anda
di tempat yang berbeda.
>> Jadi sekarang, utamanya adalah fungsi sebenarnya
bahwa Anda mengeksekusi dalam kode.
Anda telah parameternya disimpan di sini dan variabel lokal disimpan di sini.
Variabel lokal hanya berarti variabel apa saja yang hanya ada dalam fungsi itu.
Dan di atas semua itu, Anda memiliki ini fungsi yang terpisah disebut kubus.
Anda memiliki itu parameter serta mereka penduduk setempat.
>> Dan alasan Anda bisa lihat di sini adalah bahwa apa
terjadi ketika kubus mengambil dalam nilai dari fungsi utama Anda
adalah bahwa sebenarnya itu menyalin bahwa lebih.
Jadi jika saya ingin kubus 2 dan kembali 8, yang 2
sebenarnya diinput sebagai parameter dan itu
disalin sehingga Anda memilikinya ada di dua tempat yang berbeda di memori.
Dan Anda harus sangat berhati-hati pada mengingat yang salah satu dari mereka
Anda benar-benar memanipulasi.
Dan contoh dari apa yang terjadi itu akan sangat, sangat buruk
ada di sini.
>> Jadi di sini, saya sudah mendapat, dalam teori, program di sini, fungsi utama
bahwa aku menyatakan int x sama dengan 1.
Saya menyatakan int y lain sama dengan 2.
Dan kemudian aku menjalankannya melalui fungsi ini
disebut swap, di mana saya berasumsi bahwa itu swapping dua nilai.
Dan kemudian aku akan mencetaknya, kan?
Itulah yang saya ingin program ini untuk melakukan.
>> Jadi mari kita datang dan melihat.
Jadi jika saya benar-benar menulis yang berbeda fungsi, seperti yang Anda lihat,
kita memiliki fungsi utama kami di sini.
Dan kemudian kita memiliki kita Fungsi kedua di sini.
Swap Void.
Void hanya berarti bahwa itu tidak akan kembali apa-apa.
Nama fungsi adalah disebut swap, dan itu
akan asupan dua variabel, int dan int b, dari Anda [tidak terdengar] fungsi.
>> Jadi pada dasarnya di sini, kami melewati x dan y dalam fungsi ini.
Dan jika kita buat this-- jadi kami ingin
untuk menciptakan nilai sementara, kan?
Kita akan menetapkan bahwa untuk sebuah.
Dan kemudian akan sekarang sama b.
Dan b akan kembali dimana nilai temp,
yang merupakan, karena ketika Anda ingin menukar hal,
Anda tidak bisa hanya seperti swap mereka.
>> Anda harus tetap satu di sini sehingga ingat
apa itu, karena sekali Anda menukar satu, Anda lupa
apa yang nilai asli, kan?
Jadi dalam teori, program ini harus bekerja, kan?
Jika saya ingin menukar dua, mereka harus menukar.
Jadi mari kita jalankan dan melihat apakah ia bekerja.
>> Sehingga kalian bisa lihat, x dulunya 1 dan y dulunya 2.
Dan jika saya mencetaknya, x masih 1 dan y adalah 2.
Hmm, program ini tampaknya tidak menjadi bekerja dengan cara yang saya ingin bekerja.
Apakah ada yang ingin mengambil gambar di menebak mengapa ini terjadi?
Ini ada hubungannya dengan cara bahwa hal-hal yang berbeda
disimpan di tempat yang berbeda di memori.
>> OKE.
Jadi kalian tidak perlu khawatir terlalu banyak tentang ini sekarang.
Tapi tahu bahwa kubus itu lokal variabel yang a dan b,
karena di sini fungsi kami, kami telah menyatakan a dan b
sebagai variabel yang ada dalam kubus, fungsi itu.
Tapi seperti yang Anda lihat, parameter yang itu mengambil di sedang disimpan di sini.
Tapi kami tidak benar-benar kembali apa-apa.
Kami tidak benar-benar berubah x dan y.
Kami hanya mengubah a dan b.
>> Kami telah disalin x dan y menjadi sesuatu yang disebut a dan b.
Tapi kita pernah benar-benar dimanipulasi x dan y sendiri.
Apakah kalian melihat bagaimana yang terjadi?
Adalah bahwa kita sudah cukup disalin lebih, tapi kami belum benar-benar terus
melacak di mana mereka berada di memori.
>> Dan jadi sekarang komputer mencari, oh, aku sudah
menjalankan hal ini melalui Fungsi indah ini.
Tapi x dan y masih x dan y.
Tidak ada yang terjadi mereka karena fakta
bahwa parameter dan variabel lokal
disimpan dalam berbeda tempat di memori.
Dan ini adalah tingkat yang lebih tinggi konsep yang kita akan
mulai melihat nanti dalam kursus.
Tapi hanya tahu bahwa ini adalah masalah yang bisa terjadi
dan bahwa kita akan mencari tahu tentang bagaimana cara untuk berurusan dengan ini nanti pada kursus.
OKE.
Baiklah.
Jadi konsep terakhir kami benar-benar akan menutupi
yang akan berguna untuk pset minggu ini
yang apa yang disebut argumen baris perintah.
Jadi Rob dalam ceramahnya pergi melalui jenis singkat tentang bagaimana ini bekerja.
Dasarnya tahu bahwa ketika Anda sedang menulis
seperti fungsi utama, ketika kita menulis fungsi sebelumnya di masa lalu,
kami memiliki int void main.
Dan alasan kita memiliki kekosongan ada adalah karena program kami tidak
perlu nilai input untuk menjalankan, kan?
Ketika aku berlari Mario, saya tidak perlu untuk benar-benar hanya mengetikkan sesuatu
ketika aku berlari Mario.
Aku bisa meminta pengguna di kemudian hari.
Tapi itu tidak akan selalu terjadi.
>> Misalnya, dalam hal ini Masalah minggu set,
Anda akan diminta itu, di Selain menjalankan program Anda,
Anda akan ingin masukan hal-hal tertentu di lurus seperti Anda
menjalankan program Anda.
Jadi cara kita melakukan itu disebut argumen baris perintah, yang
adalah seperti argumen Anda dapat memasukkan langsung
sebagai Anda mencoba untuk menjalankan program Anda.
>> Jadi notasi untuk ini, itu cukup kompleks tampak,
tapi itu benar-benar tidak sulit. Jadi int main--
itu hanya fungsi utama Anda.
Ke argc koma kurung tali argv.
Jadi semua itu mengatakan adalah bahwa ini int argc-- semua yang memberitahu Anda
adalah bahwa mereka adalah jumlah argumen komputer harus mengharapkan.
>> Jadi satu hal yang benar-benar penting untuk melacak
adalah nama fisik program Anda dianggap sebagai salah satu argumen.
Jadi jika saya ingin memiliki program saya menjalankan ditambah satu baris perintah tambahan
argumen, aku benar-benar akan memiliki dua.
Argc benar-benar akan menjadi dua.
Dan maka string argv bracket-- semua yang melakukan,
itu memberi saya sebuah array string yang
akan hanya menampilkan dan menyimpan apa semua argumen-argumen baris perintah yang.
>> Jadi misalnya, jika saya ingin memiliki ini Program, ./copy INFILE outfile, kan?
Itu hanya perintah Linux khas.
Apa sebenarnya argc?
Berapa banyak argumen baris perintah yang ada benar-benar dalam hal ini?
Semua yang dilakukan adalah membuat salinan sebuah infile dari nama satu file
dan salinan ke file lain, kan?
Itu semua ini lakukan.
Seperti yang Anda lihat, aku melakukannya dalam satu baris tanpa benar-benar membutuhkan program.
>> Apa argc kami dalam hal ini?
Berapa banyak argumen yang kita miliki?
AUDIENCE: Tiga?
ANDI PENG: Kami memiliki tiga, tepatnya.
Sehingga sangat intuitif untuk hanya berpikir bahwa itu hanya
yang infile dan outfile tersebut.
Tapi tahu bahwa nama fisik dari Program Anda menjalankan dianggap sebagai salah satu.
Jadi dalam hal ini, argc sebenarnya tiga.
Bagaimana, apa argv 0?
Ingat, semua argumen baris perintah
disimpan dalam array dari string.
Jadi jika saya mencoba untuk mengaksesnya, apa akan argv braket 0 memberi saya?
>> AUDIENCE: [tidak terdengar].
ANDI PENG: Tepat.
Ini akan memberi saya dot slash copy, karena itulah
elemen 0, yang elemen pertama dari array saya.
Bagaimana argv 1?
>> AUDIENCE: infile.
ANDI PENG: INFILE, persis.
Bagaimana argv 2?
AUDIENCE: outfile.
ANDI PENG: outfile.
Ini adalah sedikit rumit sekarang.
Apa yang kalian pikirkan argv 3 ini akan memberi saya
jika saya mencoba untuk mencetak yang keluar?
>> AUDIENCE: [tidak terdengar]?
>> ANDI PENG: Apakah Anda memiliki tangan atas?
Ya.
>> AUDIENCE: Sebuah alternatif.
>> ANDI PENG: Tepat.
Jadi ingat dalam kuliah yang kita memiliki pada akhir sesuatu ras
disebut terminator nol?
Kami akan masuk ke ini juga lebih lanjut di dalam kelas.
Tapi tahu bahwa dalam notasi, cara komputer Anda
tahu bahwa itu akhirnya dari array adalah bahwa hal itu
menempatkan sesuatu yang disebut null terminator atau dash nol.
>> Jadi jika Anda mencoba untuk mengakses argv 3, Anda akan memukul dasbor ini 0.
Hal ini bahkan lebih dari pertanyaan jebakan.
Bagaimana argv 4?
Jadi ini adalah null terminator terakhir, melewati batas-batas array kita.
Apa yang Anda pikirkan akan terjadi ketika kita mencoba untuk melakukan itu?
>> AUDIENCE: [tidak terdengar]?
ANDI PENG: Maaf?
Mengatakan bahwa sedikit lebih keras?
>> AUDIENCE: [tidak terdengar].
ANDI PENG: Ya.
Itulah nama daerah kemungkinan besar Anda akan mendapatkan.
Tapi tahu argv yang 4-- yang memungkinkan Anda untuk mengakses
tempat di komputer Anda memori yang Anda benar-benar
tidak boleh menyentuh, karena sekarang Anda tahu apa argv adalah.
Anda tahu bahwa itu sebuah array ukuran 3 yang memiliki copy dot, infile dan outfile.
>> Jika Anda mencoba untuk pergi sejauh lebih dari itu bahwa Anda melewati null terminator,
komputer Anda mungkin memiliki sesuatu yang tersimpan di argv 4.
Dan Anda benar-benar tidak boleh memungkinkan akses ke argv 4,
karena Anda memiliki file kabinet dan Anda hanya
memungkinkan akses ke tiga rak.
Tetapi jika Anda mencoba untuk mencapai jalan di luar rak di mana Anda diperbolehkan,
Anda akan mulai bermain-main dengan hal-hal lain dalam memori komputer Anda.
Itu akan menjadi benar-benar, benar-benar buruk.
Jadi hanya tahu bahwa.
Berhati-hatilah bahwa Anda tidak hanya secara acak mulai
mengakses elemen dalam array yang tidak pada apa yang Anda ingin membuat.
Yep.
>> OKE.
Jadi kita akan melakukan hal yang lain Contoh terminal sini.
OKE.
Jadi Rob cepat dalam kuliah hari lain pergi
melalui contoh ini, di mana ia memiliki int main int argc tali argv
kurung, yang mengatakan bahwa aku akan memiliki argumen baris perintah.
>> Dia memiliki, jika argc sama sama 2-- ingat,
sama sederajat berarti perbandingan.
Jika itu sama dengan 2, maka aku akan mencetak halo,
apapun yang pertama elemen dari array adalah.
Cetak lain, halo dunia.
Apa ini akan terjadi dasarnya?
Dapatkah seseorang hanya menjelaskan di English apa program ini lakukan?
Ya.
>> AUDIENCE: Jika seseorang mengetikkan perintah dan mengatakan nama pertama dan terakhir mereka,
itu tidak akan hanya mencetak pertama dan berkata, halo,
apapun nama pertama Anda adalah.
>> ANDI PENG: OK, mari kita jalankan.
Jadi misalnya, jika saya harus membuat file ini membuat halo halo to--
to-- apa yang Anda ingin saya masukan?
>> AUDIENCE: Pertama dan nama terakhir.
>> ANDI PENG: Pertama dan nama terakhir?
Ruang?
>> AUDIENCE: Ya.
>> ANDI PENG: Dapatkah seseorang memberitahu saya sekarang, apa yang argc?
Hanya di sana?
Ups, maaf.
Biarkan aku kembali.
Berapa banyak argumen baris perintah are-- kalian tidak bisa melihat.
Tapi aku akan mencoba untuk memperbesar.
Saya mencoba.
Ya, ada tiga, kan?
Ini dot slash halo, itu Andi, dan itu Peng.
>> Jadi apa yang kalian pikir ini Program ini akan mencetak?
Oh.
Oh maaf.
Nama yang salah.
Ini mencetak, halo dunia.
Apakah ada yang ingin menjelaskan mengapa yang terjadi?
Ya?
>> AUDIENCE: [tidak terdengar].
ANDI PENG: Tepat.
Jadi di sini, adalah bersyarat adalah, jika argc sama sama 2.
Jadi hanya dalam kasus yang ada dua argumen baris perintah.
Lalu aku akan mencetak, halo, apa pun itu.
Tapi yang lain, aku akan mencetak hanya, halo dunia.
Jadi apakah seseorang ingin untuk memberikan contoh
bagaimana saya akan dapat benar-benar mendapatkannya untuk mencetak nilai argv 1?
>> Apa yang akan saya harus masukan di sini?
Hanya satu hal, kan?
Karena dot menyapa sudah dianggap sebagai argumen pertama.
Saya hanya memiliki satu lagi.
Jadi dot halo jika saya hanya melakukan Andi.
Halo, Andi.
Apakah semua orang mengerti mengapa yang terjadi?
Ya.
>> AUDIENCE: Jadi ruang antara perintah line-- itu [tidak terdengar]?
ANDI PENG: No.
Sehingga ruang di baris perintah argumen, x, untuk memberitahu komputer Anda
bahwa ini adalah awal dari sebuah string baru.
Jadi tali argv sini-itu toko semua perintah Anda argumen baris
dalam string.
Dan sehingga ruang pada command line argument-- semua yang dilakukan adalah memberitahu Anda,
ini pada akhir satu string dan saatnya untuk beralih ke yang lain.
>> Ya.
Ini sangat penting bagi pset Anda, karena Anda
akan menguji ini.
Jadi apakah ada yang punya Pertanyaan ini?
OK keren.
Ya?
>> AUDIENCE: Jadi alasan Anda akan menempatkan bilangan bulat argumen calc bukan
dari [tak terdengar] akan ketika Anda ingin untuk mengetik informasi tambahan untuk
[Tak terdengar]?
>> ANDI PENG: Ya, persis.
Beberapa program akan meminta Anda untuk memasukkan argumen command line
yang melewati dan yang menggunakan itu.
Ya.
AUDIENCE: Jadi bagaimana jika [tidak terdengar]?
>> ANDI PENG: Nah, apa yang harus saya untuk mengubah kemudian dalam program saya?
>> AUDIENCE: Hanya 3.
>> ANDI PENG: Mengapa adalah bahwa terjadi, menurut Anda?
>> AUDIENCE: Karena [tidak terdengar].
>> AUDIENCE: Anda harus mengubahnya ke 2 [tidak terdengar].
>> AUDIENCE: 1 dan 2.
ANDI PENG: 1 dan 2, persis.
Jadi dalam hal ini, Anda mungkin akan ingin memiliki dua printf statements--
yang dicetak argv 1 dan salah satu yang dicetak argv 2.
Sini.
Aku benar-benar bisa melakukan itu cepat nyata.
Ini dia.
Oh.
Tidak cukup apa yang Anda inginkan.
Tetapi jika kalian dipusingkan dengan format, maka akan keluar.
Ya.
Keren.
Aku tahu kami sedikit kekurangan waktu.
Tapi aku hanya akan cepat menghabiskan beberapa menit melalui helpful--
AUDIENCE: Anda memiliki dua menit.
ANDI PENG: Saya memiliki dua menit?
Terima kasih.
Beberapa tips pset cepat.
Jadi untuk pset ini, saya sangat menyarankan, seperti saya katakan, semua orang membaca spec.
Anda akan menulis tiga satu programs-- disebut initials.c, salah satu yang disebut caesar.c,
satu disebut vigenere.c.
Beberapa tips penting yang kalian benar-benar ingin
untuk tetap mind-- sehingga ada fungsi ini
disebut atoi-- seperti yang saya ingin mengatakan, trois a.
Jelas apakah itu sebenarnya bagaimana Anda mengatakannya.
Tapi semua itu melakukan, itu memasukkan.
Itu mengkonversi string ke int.
Jadi merupakan ASCII untuk bilangan bulat i.
Ini hanya mengkonversi ASCII nilai-nilai ke integer nilai.
Jadi ingat argv, array yang menyimpan semua perintah Anda berbaris arguments--
menyimpan mereka semua sebagai string.
Dan jadi jika Anda ingin untuk dapat memiliki salah satu dari mereka menjadi integer,
Anda akan memiliki menggunakan nilai ini di sini.
>> Modulo, seperti kita bahas sebelumnya di kelas hari ini,
memungkinkan Anda untuk memiliki sisa apa pun yang Anda miliki.
Jadi jika kita telah benar-benar, benar-benar jumlah besar di Caesar,
apa jika kita memiliki akhir dari serangkaian Vigenere?
Bagaimana Anda akan dapat untuk mendapatkan bahwa untuk membungkus?
Jika saya memukul z dan saya ingin itu untuk kembali ke,
bagaimana saya akan mendapatkan bahwa untuk membungkus?
Mungkin ingin menggunakan modulo di sana di suatu tempat.
>> Kedua, melihat sekitar perpustakaan Anda. ctype.h.
Itu perpustakaan baru yang kita miliki.
Anda akan menemukan banyak benar-benar, benar-benar isupper functions-- berguna, islower,
toupper, tolower, isalpha, dan lain-lain.
Semua fungsi yang akan sangat berguna ketika Anda mencoba untuk mencari tahu,
adalah karakter huruf kecil?
Bagaimana cara mengkonversi ini string untuk huruf besar?
Semua hal ini akan sangat, sangat membantu untuk pset Anda.
OKE.
>> Jam kantor malam ini adalah 08:00 untuk 11:00 di kelas TEAL besok
serta Rabu dan Kamis malam.
Jam kantor berada di commons.
Sangat menyarankan kalian semua memulai segera,
karena Anda tidak ingin menjadi yang anak yang memiliki masalah Kamis malam
mengirimkan pset Anda dan seperti, saya tidak tahu apa yang harus dilakukan.
Saya mulai, aku selesai, aku diserahkan.
Cobalah untuk memberikan diri Anda beberapa ruang, karena dalam masalah kode selalu terjadi.
Anda ingin memastikan bahwa Anda memberikan diri Anda
banyak waktu untuk dapat untuk menyelesaikan psets.
Keren.
Aku akan tetap di sini.
>> AUDIENCE: Apakah secara online ini sudah?
ANDI PENG: Saya tidak tahu apakah itu sudah online, tetapi akan.
Aku akan tetap di sini jika ada memiliki pertanyaan sudah.
Terima kasih untuk datang.