>> [MUSIC PLAYING]
>> DAVID Malan: Baiklah.
Selamat datang kembali.
Ini adalah CS50, dan ini adalah Minggu Pertama, Lanjutan.
Jadi salah satu alasan kami telah melewati sekitar teknologi seperti
Google Kaca adalah bahwa mereka datang dengan sesuatu yang dikenal sebagai API, sebuah
Application Programming Interface.
Dan apa artinya ini adalah bahwa dengan file yang tepat dan dengan hak
dokumentasi, Anda benar-benar dapat menulis perangkat lunak untuk perangkat bahkan seperti ini.
>> Dan apa yang kita miliki dalam pikiran terhadap semester akhir, jika proyek
melibatkan, misalnya, Google mungkin Kaca banding, kita akan melihat apa yang bisa kita lakukan dalam
hal mengaitkan Anda dengan beberapa hardware loaner serta
diakses publik API sehingga Anda dapat benar-benar mulai membuat perangkat lunak
yang berjalan pada bahwa Google Glass yang sama.
>> Perangkat lain yang kami sudah bermain dengan akhir-akhir ini kita berpikir bahwa mungkin
menyenangkan di akhir semester adalah hal kecil di sini.
Ini disebut Leap Motion dan apa yang Anda akan melihat secara teknis
iklan untuk perangkat, tetapi tidak berbicara dengan apa khusus ini
perangkat mampu.
Dan juga, dilengkapi dengan API melalui yang dapat Anda menulis perangkat lunak untuk
mengontrol komputer Anda sendiri dengan cara cukup seperti film ini satu menit di sini.
>> [VIDEO PEMUTARAN]
>> [END VIDEO PEMUTARAN]
>> Jadi sekarang, perangkat ini terjadi pada dilaksanakan sebagai USB kecil
konektor yang dapat Anda plug ke Anda komputer, tapi aku tidak akan terkejut
jika sebelum lama kita memiliki jenis-jenis teknologi dalam batch berikutnya PC
dan Mac sehingga Anda dapat, memang, berinteraksi dengannya dalam
cara seperti itu.
Bahkan, apa yang saya pikir saya akan melakukan juga, adalah Aku menarik sebuah demonstrasi kecil
program yang dilengkapi dengan perangkat lunak ini.
Jadi saya sudah menempatkan sensor kecil di depan laptop saya.
>> Dan seperti yang Anda lihat, sudah menyadari bahwa tangan saya ada
mengendalikannya.
Dan semua aplikasi ini dilakukan secara dgn hal-hal kecil seperti ini.
Tapi Anda bisa melihat bahwa, memang, Saya memiliki lima jari di sana.
Jika kita bisa mendapatkannya untuk melakukan semua 10, Anda bisa membayangkan sebuah piano rapi
aplikasi atau sejenisnya.
Jadi jika Anda ingin datang setelah kelas hari ini dan bermain dengan itu sebagai
baik, Anda dipersilakan untuk.
Jadi lebih pada menjelang akhir semester.
>> Jadi beberapa administrasi pengumuman.
Satu, lakukan bagian demi hari Jumat ini pada siang hari di cs60.net/section.
URL yang di lapangan itu homepage juga.
Sementara itu, meskipun, supersections akan debut hari Minggu ini.
Supersections adalah hal yang satu kali, karena membawa kita beberapa waktu untuk bekerja
siapa yang ada di bagian mana dan di mana.
>> Jadi hari Minggu ini datang, akan ada satu bagian untuk mereka yang kurang nyaman,
satu bagian untuk mereka lebih nyaman.
Dan bagi Anda di suatu tempat di antara dipersilakan untuk pergi ke
salah satu atau keduanya atau tidak.
Kedua hal ini akan difilmkan.
Mereka akan berada di auditorium yang lebih besar dari Bagian yang biasanya akan masuk
Tetapi tujuan di sini adalah untuk membekali Anda dengan beberapa kenyamanan dengan permasalahan yang satu,
dengan C, dengan CS50 alat, ini akhir pekan, bahkan sebelum Anda mengetahui Anda
tugas bagian formal.
Jadi Anda akan bertemu TF dan kecil Anda kelompok sectionmates di sekitar
waktu seminggu.
>> Jam kantor, sementara itu, telah terjadi.
Apakah mengambil keuntungan dari mereka malam ini atau besok malam jika Anda ingin.
Soal set 0 jatuh tempo pada hari Jumat.
Ini adalah hari paling lambat terjadwal secara berkala Kamis.
Tetapi dengan masalah set 1, Anda akan melihat yang mencakup beberapa pemanasan
latihan yang Anda sendiri Anda dapat memperpanjang
Kamis batas waktu sampai Jumat.
Soal set 1, sementara itu, akan debut di website kursus akan datang ini
Jumat, jika Anda ingin meringkuk dengan itu seperti yang saya lakukan sekali waktu akhir
Jumat malam di kamar Anda.
>> Jadi cs50.net/appliance adalah tempat di mana Anda bisa mendapatkan alat CS50
bahwa kita mulai menggunakan pada hari Senin.
Kami akan menggunakan sedikit lebih hari ini.
Tapi yakinlah bahwa masalah set 1 spesifikasi akan memandu Anda melalui
tepatnya langkah-langkah yang Anda butuhkan untuk mendapatkan dan berjalan.
Jadi jangan khawatir tentang melakukan itu sebelum Pset 1 jika Anda lebih suka tidak.
>> Baik.
Jadi kita melihat pada hari Senin di kode sumber, tetapi dalam konteks yang baru
bahasa pemrograman, yaitu C dan C, seperti Scratch, tidak grafis.
Ini bukan teka-teki potongan.
Ini lebih Inggris-seperti sintaks.
Dan ada beberapa langkah yang terlibat dalam benar-benar menulis dan menjalankan
program di C, karena selain sumber kode seperti ini, Anda perlu sesuatu
yang disebut kompilator.
Dan dalam istilah awam, apa tidak kompilator lakukan untuk kita?
Ya.
>> SISWA: Ini mengubah kode bahwa Anda menulis ke 0s dan 1s.
>> DAVID Malan: Baik.
Jadi mengubah kode yang kita menulis untuk 0s dan 1s.
Mengkonversi disebut kode sumber untuk kode objek, yang terakhir yang terlihat
sedikit sesuatu seperti ini.
Dan itu CPU Anda, otak dalam komputer Anda, bahwa karena
orang yang menciptakan komputer-komputer, tahu apa mereka urutan
0s dan 1s berarti.
>> Mungkin itu berarti cetak.
Mungkin itu berarti tambahan.
Mungkin itu berarti pengurangan.
Mungkin itu berarti menampilkan grafik.
Ada pola yang telah ditetapkan bit bahwa dunia telah memutuskan berarti
hal-hal tertentu.
Tapi untuk sebagian besar dalam kursus ini, kita akan bekerja di tingkat yang lebih tinggi, dan
kami akan menganggap bahwa terdapat hal-hal seperti compiler yang dapat
membuat fungsi kode sumber kami dalam cara kita inginkan.
>> Jadi program ini kami menulis pertama pekan lalu dan kemudian mulai pelabuhan, sehingga untuk
berbicara, ke C melewati ini Senin, ini.
Ketika bendera hijau diklik, menyapa.
Ini, tentu saja, ditulis dalam Scratch.
Dan saya menyatakan bahwa setara program di C tampak sedikit
sesuatu seperti ini.
>> Jadi apa yang saya pikir kami akan lakukan pada awalnya adalah, mari kita menggoda selain apa yang tampak, pada awalnya
sekilas, diakui, sebagai cukup misterius sintaks, tetapi Anda akan mulai melihat
pola cukup cepat.
Apa kita juga akan lakukan hari ini adalah memberikan Anda dengan mental model untuk beberapa
kanonik, beberapa konstruksi standar dalam pemrograman.
Dan kemudian kita benar-benar akan mendapatkan tangan kami kotor dengan beberapa contoh juga.
>> Jadi bagi anda lebih nyaman, menyadari bahwa minggu ini dan kemudian berikutnya
minggu mungkin sangat baik menjadi sedikit ulasan.
Tapi terutama ketika edisi hacker masalah set 1 keluar pada
website tentu pada hari Jumat, saya pikir Anda akan menemukan bahwa bahkan ketika Anda mengisi
beberapa kekosongan selama minggu depan atau dua, Anda akan mulai mendapatkan semakin
menantang dan menemukan hal-hal baru dan yang lebih baru.
>> Jadi mari kita menggoda program ini terpisah beberapa baris pada satu waktu.
Di bagian paling atas, kita memiliki apa yang teknis disebut
direktif preprocessor.
Ini hanya baris kode yang mengatakan untuk memasukkan isi dari file,
disebut standar I / N, input standar - atau, maaf, standar I / O, standar
input / output,. h, dalam program saya sendiri.
>> Jadi dengan kata lain, jika saya menulis ini program dengan editor teks sederhana seperti
gedit, setara sederhana sesuatu seperti Microsoft Word, yang
instruksi, # include stdio.h, hanya akan memberitahu compiler, ambil
isi dari file lain, stdio.h, dan paste di sini.
>> Sekarang, mengapa saya peduli?
Apa yang kita tuntut dalam file ini disebut stdio.h, yang disimpan
di suatu tempat di harddisk, atau dalam hal ini kasus, di suatu tempat di CS50 alat?
Orang lain menaruhnya di sana untukku.
Tapi apa untungnya?
>> Ya, jadi itu adalah deklarasi fungsi disebut printf.
Jadi ingat printf fungsi yang menampilkan kata-kata dan karakter dan
nomor pada layar atas perintah saya.
Tapi aku tidak menulis itu.
CS50 tidak menulisnya.
Seseorang tahun yang lalu menulis itu, dan mereka pada dasarnya memberi kami resep untuk itu
dalam sebuah file bernama stdio.h.
Sehingga baris pertama hanya memberi saya akses untuk fungsi yang orang lain
menulis tahun yang lalu, antara yang printf.
>> Sekarang, baris berikutnya aku akan gelombang saya tangan pada, setidaknya sampai minggu depan.
Tetapi untuk sekarang, tahu bahwa int main (void) adalah dasarnya setara ini
potongan puzzle kuning saat bendera hijau diklik.
Dunia, tahun lalu, memutuskan bahwa jika Anda sedang menulis sebuah program dalam
bahasa yang disebut C, Anda mulai program anda dengan garis
yang terlihat seperti itu.
Dalam hanya tentang waktu seminggu, itu akan membuat merasakan apa int, apa void.
Tapi untuk saat ini, anggap saja ini karena hal ini potongan puzzle kuning.
>> Sekarang berikutnya, kita memiliki penjepit keriting diikuti oleh lain dekat keriting brace,
sehingga untuk berbicara.
Dan kita akan melihat ini di seluruh program di C, serta
JavaScript dan PHP.
Dan ini hanya merangkum baris terkait kode.
Terbuka keriting brace dasarnya mengatakan, inilah beberapa kode.
Dan keriting penjepit tertutup, yang miring ke arah lain, hanya
berarti, itu saja untuk kode yang relevan.
>> Jadi garis juicy pertama ini Program adalah yang terakhir, printf,
kutipan-tanda kutip, hello world.
Dan aku menelepon hal antara kutipan apa terakhir kali?
Jadi string.
Dan string hanya Techie istilah untuk urutan
karakter, kata, frase.
Bahkan satu huruf bisa menjadi ganda dikutip.
Tapi itu urutan nol atau lebih karakter.
>> Backslash-n, meskipun, terlihat agak aneh.
Tapi itu hanya berarti sesuatu sederhana untuk komputer.
Apa backslash-n?
Baris baru.
Jadi itu hanya urutan khusus karakter bahwa dunia telah memutuskan
berarti menempatkan satu baris di sana, karena compiler akan benar-benar mendapatkan
bingung, biasanya, jika Anda, sangat dimengerti, tapi tidak benar, hanya
mulai menekan Enter untuk menempatkan baris baru dalam kode Anda.
Anda harus menjadi sedikit lebih eksplisit dengan tanda-n.
>> Dan kita akan melihat ada beberapa lainnya seperti pola untuk karakter khusus.
Misalnya, jika Anda ingin membiarkan Anda pikiran mengembara ke kasus sudut,
mengira bahwa aku ingin mencetak kutip ganda pada layar untuk
alasan apa pun, yang tampaknya untuk menjadi sedikit bermasalah, kan?
Karena jika saya menempatkan kutipan ganda dalam tengah "halo, dunia," untuk apa pun
Alasannya, mengapa yang tampaknya berpotensi bermasalah?
Rusak string.
>> Compiler hanya sebuah program.
Sebuah program seperti compiler hanya akan untuk membaca atas kode Anda ke bawah,
kiri ke kanan.
Dan jika melihat tiga tanda kutip ganda sebagai gantinya dua, itu tidak akan tahu
jika Anda berarti bahwa hal ke kiri harus string, atau hal untuk
hak, atau semuanya.
Ini ambigu, dan jadi apa khas compiler akan lakukan hanya panik,
dan memberikan beberapa pesan kesalahan, dan membuat Anda mengatasi masalah ini.
>> Jadi, mengingat bahwa backslash-n berarti baru line, apa yang akan naluri Anda sekarang
mulai jika Anda ingin menyertakan sesuatu yang anomali seperti ganda
mengutip dalam ini jika tidak dikutip String?
Backslash-kutipan ganda.
Dan jadi kita akan melihat ini jenis pola juga.
>> Jika Anda ingin melakukan sesuatu yang sedikit aneh, Anda akan menemukan bahwa
solusi sering mengikuti pola, dan backslash
menunjukkan sebuah urutan escape.
Dan itu hanya berarti sesuatu yang istimewa bahwa kita perlu untuk mewakili dalam
cara yang berbeda.
Adapun bagaimana Anda mewakili backslash, baik, kita akan
kembali ke itu.
Tapi jawabannya juga, sebenarnya agak jelas.
>> Sekarang, mari kita memperkenalkan beberapa lainnya konstruksi pemrograman
Anda lihat di Scratch.
Anda mungkin pernah diambil untuk diberikan sudah jika Anda sudah terjun ke
masalah set 0.
Tapi mari kita sekarang memperkenalkan sintaks di C untuk ini jika tidak cukup intuitif
ide, setidaknya beberapa dari mereka.
>> Jadi gagasan ini kondisi atau cabang, padahal sebelumnya kita
diwakili dengan kode yang tampak seperti ini di sebelah kiri pada Scratch -
jika x kurang dari y, kemudian berkata begitu -
bukannya sekarang di C - biarkan aku mengasah dalam pada kasus yang paling sederhana -
kita hanya akan mengatakan, jika, buka kurung, sesuatu itu benar - a
Ekspresi Boolean akan pergi di mana saya telah mengatakan, kondisi -
kurung tutup, maka jangan apa dalam kurung kurawal tersebut.
>> Jadi di sini, juga, kurung kurawal adalah jenis seperti Scratch ini
U-berbentuk potongan puzzle.
Lakukan apa yang ada di dalam kurung kurawal tersebut.
Dalam kasus ini, slash slash.
Dan melihat ini adalah maju slash, bukan backslash.
Garis miring, garis miring, bagi mereka yang sudah diprogram
sebelumnya, hanya berarti -
itu hanya komentar.
Sebuah komentar bukan garis kode, per se.
Ini adalah garis Inggris yang Anda, yang manusia, telah menulis kepada diri sendiri untuk
mungkin mengingatkan Anda untuk melakukan sesuatu, untuk menjelaskan kepada diri sendiri, untuk menjelaskan kepada
orang lain, apa kode Anda lakukan.
Ini hanya komentar deskriptif.
>> Sekarang, tentu saja, kita dapat memiliki dua arah garpu di jalan hanya dengan melakukan ini,
garpu tiga cara jalan dengan melakukan ini, dan jika Anda terus ini
pola, Anda dapat memiliki empat arah, lima-arah, enam arah garpu di jalan jika
Anda perlu menangani, memang, bahwa banyak kondisi.
Dan kemudian melihat paralelisme di sini -
if (kondisi), else if (kondisi), dan satu-satunya yang sedikit
aneh adalah yang terakhir, yang hanya yang lain.
Tapi sekali lagi, ini identik, konseptual, apa yang kami lakukan
sudah, meskipun sintaks akan mengambil sedikit membiasakan diri.
>> Sekarang, dalam contoh ini, ada beberapa sintaks aneh lainnya.
Kita melihat printf lagi, kurung buka, dan kurung tutup.
Dan dalam ada string yang dikutip.
Tanda kurung, dalam konteks printf, pergi di sebelah kiri
dan hak apa?
Apa yang kita jelaskan bahwa dikutip string sebagai lebih umum?
>> Jadi argumen.
Setiap kali Anda memiliki fungsi, seperti printf, dan kemudian paren terbuka dan
paren dekat dan sesuatu di dalam itu, apakah itu string, atau
integer, atau apa pun, hal dalam antara kurung disebut
argumen.
>> Dan argumen hanya mempengaruhi perilaku fungsi ini.
Dalam kasus ini, itu cukup jelas bagaimana.
x <y adalah apa yang sedang berlalu, sehingga untuk berbicara, sebagai argumen.
Dan printf akan mencetak persis seperti itu.
Karena pasti, tahun lalu orang yang dilaksanakan printf tidak tahu
apa yang kita penerus manusia yang akan menggunakan printf untuk.
Jadi itu sebabnya argumen yang ada, untuk mempengaruhi perilaku setelah fungsi ini
telah ditulis.
>> Sekarang, ekspresi Boolean.
Kami telah melihat ini sebelumnya di Scratch.
Ternyata di C Anda juga bisa "atau" mereka bersama-sama, sehingga untuk berbicara.
Dua garis vertikal berarti bahwa blok ini kode, ini melakukan hal ini, akan
mengeksekusi jika kondisi pertama benar atau kondisi kedua benar.
Dan meskipun Anda mungkin tidak dilakukan Scratch ini, Anda memang bisa
melakukan hal ini dalam Scratch, Dan Anda juga dapat mengekspresikan diri secara berbeda -
jika kondisi pertama dan kedua kondisi adalah benar, maka jangan apa
dalam kurung kurawal.
>> Dan hanya sebagai samping, alasan itu sebuah ampersand ganda dan ganda
vertikal, kita akan melihat pada akhirnya bahwa sebuah bar vertikal tunggal dan
ampersand tunggal benar-benar memiliki yang berbeda makna dalam C. Jadi untuk saat ini,
bahwa duplikasi simbol disengaja.
>> Jadi mari kita memperkenalkan, singkat, ini sedikit lain dari sintaks.
Ini tidak cukup membawa ke Scratch, tapi saya menyatakan bahwa saya bisa
mengimplementasikan gagasan jika yang lain, jika lain, jika lain, jika pernyataan lain menggunakan
sesuatu yang disebut pernyataan switch.
Dan satu-satunya alasan ini benar-benar ada adalah untuk hanya memberikan, programmer, sebuah
cara yang sedikit berbeda memecahkan beberapa Masalahnya, meskipun secara logis
tidak memberikan kemampuan baru.
>> Maksud saya ini.
Ketika Anda mengatakan switch, dan kemudian spasi, dan kemudian sepasang kurung, di dalam
yang pergi ekspresi -
dan ini mungkin sedikit tidak jelas pada awalnya, tapi ini bukan sebuah argumen,
secara teknis, karena switch bukan fungsi.
Jadi untuk sekarang, hanya mengasumsikan bahwa kita menggunakan kurung di tempat yang berbeda
untuk alasan yang berbeda.
>> Jadi saklar pada ekspresi berarti saya bisa menempatkan variabel di dalam orang-orang
kurung mana dikatakan ekspresi.
Dan kemudian jika variabel -
kira itu disebut x, dan itu hanya sebuah integer -
Saya kemudian bisa menghitung dalam slide saya di sini sesuatu seperti ini.
Jika x adalah variabel saya, dan saya ingin melakukan sesuatu jika x
sama dengan 1, saya bisa melakukan itu.
>> Jika saya malah ingin melakukan sesuatu jika x adalah 2, saya bisa melakukan itu.
Lain, jika saya ingin melakukan sesuatu yang lain seluruhnya, saya dapat memiliki default kasus di
hal ini saya melakukan hal ini lain.
Jadi dalam arti bahwa, itu setara dengan jika x sama sama dengan 1, lain jika yang lain,
tapi saya menyebutkan ini sekarang hanya karena kita akan melihatnya lagi.
Tetapi untuk sekarang, hanya tahu bahwa itu ada.
>> Baik.
Jadi ini pasangan terakhir yang sedikit lebih kompleks pada pandangan pertama, tetapi mereka
sesuatu yang cukup mudah.
A untuk loop dalam C adalah serangkaian kode yang hanya melakukan sesuatu lagi dan
lagi dan lagi.
Dan satu-satunya hal yang mengganggu tentang hal itu adalah itu adalah bahwa itu sedikit samar
untuk mengekspresikan diri dalam siklus pola, tetapi dunia standar pada
dengan cara berikut.
>> Bila Anda menggunakan untuk loop, Anda punya sepasang kurung lagi.
Dan melihat dua titik koma di sana.
Kedua titik koma terpisah tiga ekspresi yang berbeda dalam dari
kurung.
Salah satunya adalah yang disebut inisialisasi.
Salah satunya adalah kondisi yang disebut.
Dan satu yang disebut update.
>> Memandang secara abstrak, ini adalah benar-benar tidak jelas, jadi mari kita lihat
pada contoh konkret.
Dalam Scratch kami memiliki blok ulangi.
Dan blok ini mengatakan ulangi 10 kali, katakanlah "Hello, world." Mari saya klaim untuk
sekarang, dan kami akan kembali ke ini, dan ini juga, akan mendapatkan lebih akrab bagi
Anda sebelum lama, setara C kode bisa dikatakan ini -
untuk pernyataan dan spasi, sepasang kurung, perhatikan titik koma di
di sana, yang memisahkan tiga berbeda hal, inisialisasi, yang
kondisi, dan update.
>> Dan mengambil menebak apa yang pertama adalah melakukan.
Int i = 0.
Dalam istilah awam yang kasar, apa bahwa melakukan bagi kita, mungkin?
Jadi ya.
Ini mendeklarasikan variabel yang disebut i, dan itu memberi nilai apa itu?
0.
Jadi itu menciptakan sebuah variabel yang disebut i, menyimpan nilai 0 di dalamnya.
Itulah yang disebut inisialisasi.
>> Baiklah, sekarang aku mengaku sebelum bahwa hal menengah, i
<10, adalah kondisi.
Jadi apa yang dilakukan?
Nah, apa untuk loop tidak ketika program dengan untuk loop dijalankan, adalah
setiap kali komputer berjalan melalui lingkaran ini, atas ke bawah, atas ke
bawah, seperti kalian lakukan ketika menghitung diri dan duduk,
lagi dan lagi dan lagi, komputer akan
untuk memeriksa kondisi itu.
Dan jika saya kurang dari 10, itu akan melakukannya lagi.
Jika saya kurang dari 10, itu akan melakukannya lagi.
Jika i adalah kurang dari sepuluh, itu akan melakukannya lagi.
Sehingga tampaknya menunjukkan bahwa mudah-mudahan saya berubah.
Jika tidak, kita akan memiliki loop tak terbatas.
Dan memang, saya berubah, karena Hal terakhir setelah titik koma ada
adalah sintaks agak samar i + +.
Tapi bagi anda yang pernah melakukan ini sebelumnya, itu hanya berarti
cukup sederhana apa?
>> MAHASISWA: [interposing SUARA].
>> DAVID Malan: Tambahkan 1 ke i.
Kenaikan i.
Jadi kita melihat teka-teki Scratch sepotong untuk itu, sebenarnya.
Ini tidak terlihat seperti i + +, tapi itu hanya berarti, cukup sederhana, kenaikan
nilai i oleh 1 setiap kali Anda melakukan hal ini.
Jadi secara harfiah, Anda mulai dengan menginisialisasi i ke 0.
Anda kemudian memeriksa kondisi Anda.
Adalah 0 kurang dari 10?
Ya.
Kami pergi melalui loop.
>> Hal berikutnya yang saya mengklaim komputer akan lakukan adalah itu akan
untuk kenaikan i.
Jadi saya sekarang 1.
Ia memeriksa kondisi.
Adalah 1 kurang dari 10?
Tentu saja.
Jadi tidak lagi.
Kemudian increment i + + untuk 2.
Apakah 2 kurang dari 10?
Ya.
Dan lagi dan lagi dan lagi.
Dan akhirnya, karena plus-plussing, kita bisa i sama dengan 10.
10 kurang dari 10?
Yah, jelas tidak.
Dan itu adalah titik di mana untuk loop hanya berhenti.
Dan jika Anda memiliki lebih kode pada Layar bawah, komputer
hasil untuk menjalankan kode yang sebaliknya.
>> Jadi sekali lagi, meskipun ini akan terlihat dan merasa sedikit aneh pada
pertama, tentu bagi anda yang tidak pernah diprogram sebelumnya,
harfiah mengurangi konseptual untuk apa jika tidak sangat
puzzle sederhana potongan dalam Scratch.
>> Baiklah, aku berjanji bahwa akan ada menjadi analog lainnya di Scratch.
Ada satu ini juga.
Dan kami melihat ini sebentar terakhir kali.
Tapi ingat selamanya blok di Awal?
Itu hanya melakukan sesuatu selamanya?
Saya mengklaim bahwa Anda bisa menerapkan ini dengan cara ini.
Dan Anda benar-benar dapat menerapkan ini dalam banyak cara yang berbeda.
>> Tapi loop sementara hanya berbeda cara C untuk mengekspresikan diri.
Pada akhir hari, Anda tidak dapat melakukan apa-apa dengan while loop yang Anda
tidak bisa dengan untuk loop.
Jadi mereka pada akhir hari fungsional sama.
Tetapi memungkinkan Anda untuk mengekspresikan diri sedikit berbeda dalam
dengan cara berikut.
>> Dengan while loop, itu apa yang ada di kurung yang diperiksa lagi dan
lagi dan lagi.
Dan segera setelah ekspresi yang palsu, maka loop berhenti mengeksekusi,
dan komputer hasil untuk menjalankan apapun kode lain Anda
ada di file Anda.
>> Tapi apa yang menarik di sini adalah bahwa saya benar-benar diketik benar.
Dan benar adalah jenis nilai Boolean, nilai benar atau salah.
Jadi benar pernah bisa menjadi false jika aku sudah benar-benar
keras-kode ke dalam program saya?
Jadi tidak ada.
Ini agak aneh bahwa saya melakukan ini.
Tapi yang benar adalah benar.
Tidak ada plus-plussing.
Tidak ada penggunaan variabel di sini.
Jadi karena saya keras-kode sementara benar, ini loop selalu akan mengevaluasi
lagi dan lagi dan lagi.
>> Jadi berapa kali adalah halo dunia akan mencetak pada layar?
Selamanya.
Jumlah tak terbatas kali sampai meninggal baterai atau beberapa eksternal lainnya
peristiwa terjadi.
Jadi ini mungkin bukan program terbaik untuk menulis, karena jika pengguna
tidak pernah bisa berhenti program Anda, itu mungkin tidak apa yang Anda inginkan.
>> Tapi kadang-kadang, program harus memiliki loop tak terbatas.
Misalnya, jika komputer Anda memiliki Jam di atasnya, itu pasti akan
baik jika waktu Anda itu tidak terus mengupdate sendiri selamanya, meskipun sekali
kedua atau setelah satu menit atau sesuatu seperti itu.
Loop sehingga bahkan tak terbatas memiliki tempat mereka.
>> Baik.
Terakhir, satu ini.
Dan yang satu ini sedikit berbeda fungsional, dan kami akan kembali ke
ini mungkin dalam Pset 1.
Tapi ada jenis lain dari lingkaran disebut lakukan saat lingkaran.
Dan satu-satunya perbedaan di sini antara lakukan saat lingkaran dan, katakanlah, sementara loop,
adalah bahwa kondisi tersebut akan diperiksa tidak sebelum Anda mengeksekusi kode, tapi setelah
Anda mengeksekusi kode.
Jadi di atas untuk sementara lingkaran, sedangkan lakukan saat
cek di bagian bawah.
>> Dan ini hanya berarti bahwa loop sementara biasanya akan mengeksekusi kali
atau waktu kurang dari loop sementara?
Berpotensi lebih kali, karena melakukan while jelas mengatakan melakukan hal ini,
hanya setelah titik mana Anda memeriksa jika dalam kondisi
kurung adalah benar.
>> Jadi kita akan melihat ini lagi mungkin dalam Pset 1.
Jika Anda pernah ingin melakukan sesuatu di setidaknya sekali dan kemudian mungkin lagi
kali, ini adalah baik membangun untuk digunakan.
Tapi sementara loop, sebaliknya, akan memeriksa kondisi pertamanya.
Dan itu untuk loop di C, jangan sementara, sementara, dan untuk loop.
Dan lagi, mereka memetakan cukup baik kembali untuk Gores, kecuali yang satu ini tidak
cukup memiliki analog yang sama dalam Scratch.
>> Nah, bagaimana, sekarang, variabel?
Jadi ini adalah bagaimana saya menyatakan variabel sintaksis hari lain.
Aku punya int, yang saya mengklaim adalah bilangan bulat.
Kemudian aku disebut variabel counter, dan kemudian titik koma.
Jadi apa baris kode lakukan?
Hal ini, cukup sederhana, menyatakan variabel -
yaitu, meminta komputer, beri saya beberapa memori, memberi saya beberapa bit - in
yang saya dapat menyimpan apa?
Int.
Dan titik koma hanya berarti akhir baris kode.
>> Sekarang, baris kedua mungkin cukup ditebak.
Apa counter = 0; lakukan?
Ini menugaskan 0 untuk melawan.
Dan jadi ini adalah hal lain yang sedikit mengganggu
dibandingkan, katakanlah, aljabar.
Sedangkan dalam aljabar, tanda sama berarti sama, di sini, di C, sama
Tanda berarti tugas.
Jadi itu berarti menempatkan apa yang ada di sebelah kanan menjadi apa yang ada di sebelah kiri.
Dan kita akan melihat simbol lain, sama sama, ketika kita ingin benar-benar menguji
untuk kualitas, agak mengganggu.
>> Tapi ini sedikit tidak efisien.
Ini agak menjengkelkan yang saya miliki untuk mendeklarasikan variabel dan
kemudian berikan nilai.
Jadi C sebenarnya memungkinkan kita menyederhanakan ini dan hanya melakukan semuanya sekaligus.
Anda dapat mendeklarasikan variabel di sebelah kiri.
Anda masih bisa melakukan tugas pada tepat dengan menempatkan bahwa tanda sama dalam
tengah.
Jadi pada akhir hari, dua ini setara, tapi yang satu ini, terus terang,
mungkin adalah kebiasaan yang lebih baik untuk masuk ke hanya karena sedikit kurang
kode, itu sedikit lebih mudah untuk dibaca, dan hanya mengencangkan
kode Anda, sehingga untuk berbicara.
>> Setiap pertanyaan sejauh pada loop, pada variabel, pada kondisi, pada
Boolean, baik secara teknis atau konseptual?
Baik.
Jadi sekarang satu ini selanjutnya mendapat sedikit lebih menarik.
Dan ini adalah contoh yang saya memasang terakhir waktu itu hanya memetakan contoh Scratch
ke C.
>> Jadi fungsi.
Dalam istilah awam, apa fungsi?
Harus lebih berani dengan jawaban Anda.
Apa fungsi?
>> SISWA: Apakah sesuatu.
>> DAVID Malan: Apa itu?
>> SISWA: Apakah sesuatu.
>> DAVID Malan: Apakah sesuatu.
OK.
Kita akan mulai dari sana.
Jadi fungsi melakukan sesuatu.
Jadi itu adalah bagian dari kode yang dasarnya dilaksanakan di tempat lain yang
memang melakukan sesuatu.
Sekarang, apa yang menarik tentang fungsi adalah bahwa hal itu dapat mengambil masukan,
dan dapat menghasilkan output.
Dan mari kita sebenarnya mengambil lihat ini.
>> Jadi orang di balik tirai disengaja saat yang lalu.
Di sini kita memiliki sebuah meja.
Tapi anggaplah bahwa ini benar-benar merupakan sebuah kotak besar.
Jadi ini adalah sebuah kotak hitam yang disebut.
Dan secara umum, dalam desain, di dalam komputer ilmu pengetahuan, kotak hitam hanya mengacu pada
potongan fungsionalitas bahwa seseorang telah menerapkan, dan Anda tidak
tentu tahu atau peduli bagaimana hal itu dilaksanakan di bawah tenda.
Anda hanya peduli bahwa kotak hitam ini, yang sekarang kita akan mulai memanggil
fungsi, melakukan sesuatu.
>> Jadi, misalnya, jika kotak hitam ini pada tahap disini mewakili printf, sebuah
fungsi, saya tahu dari contoh sebelumnya printf yang membutuhkan satu atau lebih
argumen, dan yang pertama dari mereka argumen harus berupa string, seperti
"Hello, world." Nah, jika saya orang menulis program, dan saya ingin
menggunakan printf, I, misalnya, mungkin mengambil secarik kertas kosong di sini dan
spidol hitam dan menulis di atasnya -
Aku salah eja "dunia" -
H-E-L-L-O.
>> Jadi aku akan mengambil spidol hitam saya dan saya akan menulis, sebagai besar dan sebersih saya dapat di
kertas ini, "halo, dunia," Dan sekarang saya klaim ini adalah argumen saya.
Ini adalah string diwakili dengan selembar kertas putih.
Dan masukan saya sekarang untuk fungsi printf akan menjadi ini.
Jadi saya menelepon printf, melewati bahwa argumen sebagai masukan untuk itu.
>> Dan sekarang, saya tidak tahu bagaimana orang yang menulis printf melakukannya tahun lalu, tapi
Saya tahu dari dokumentasi yang tujuan dalam hidup adalah untuk mencetak apa yang saya
berikan itu sebagai masukan.
Dan, meskipun implementasi ini adalah tanpa sepengetahuan saya
bawah kap mesin, sekarang Saya melihat, oh, hal itu dilakukan.
Ini telah dicetak sesuatu di layar.
Dan kini menguasai program, jika ada adalah lebih baris kode, akan
kini telah kembali ke saya.
Dan fakta bahwa Colton -
memberkati hatinya, bersembunyi di sini di bawah sebuah meja di depan anda semua -
disengaja dalam bahwa saya tidak tahu dan saya tidak peduli seberapa printf
diimplementasikan.
Aku hanya tahu, sekali lagi, dari yang dokumentasi, apa yang dilakukan dan bagaimana saya
saya seharusnya menggunakannya.
>> Sekarang, ingat bahwa printf bisa sedikit lebih canggih.
Sekali lagi, kita hanya berbicara tentang setara Scratch itu Say blok.
Tapi saya juga melakukan ini terakhir kali.
Saya ingin membuat program halo saya sedikit lebih dinamis dan tidak hanya sulit
Kode sesuatu seperti "dunia," dan pasti tidak sulit kode sesuatu
sewenang-wenang seperti D-A-V-I-D ke dalam program.
Saya ingin meminta pengguna untuk nya nama, dan kemudian melakukan sesuatu dengan
string yang mereka sediakan.
>> Jadi ada sesuatu yang sedikit berbeda di sini. printf, beberapa saat yang lalu,
tidak, memang, melakukan sesuatu, tetapi tidak mengembalikan apa-apa bagi saya.
Benar?
Colton tidak menyerahkan apa-apa kembali, tidak ada selembar kertas.
Ada hanya efek samping.
Memberikan saya "hello, world" sebagai argumen ke Colton mengakibatkan
efek samping dari sebuah kata, beberapa kata, muncul di layar.
>> GetString, meskipun, adalah sedikit berbeda. GetString juga
berfungsi, tetapi ia mengembalikan beberapa nilai.
Ini tidak hanya memiliki efek samping estetika.
Ini benar-benar memberi saya, orang menelepon atau menggunakan fungsi,
sesuatu kembali.
Jadi dalam hal ini, adalah GetString disebut dengan GetString terbuka
paren, paren dekat.
Apakah GetString, oleh karena itu, mengambil argumen atau masukan?
Tidak, sepertinya tidak.
Tujuannya dalam hidup adalah hanya untuk mendapatkan string.
Ini tidak memerlukan lebih detail dari itu.
Jadi biarkan aku pergi ke depan dan berpura-pura bahwa, lagi, kotak hitam ini tidak printf,
tapi GetString, dan biarkan aku, orang menulis program ini, panggilan atau menggunakan
getString dengan hanya menulis G-E-T-S-T-R-I-N-G, buka paren, dekat
paren, GetString.
>> Sekarang, saya tidak tahu bagaimana CS50 staf diimplementasikan GetString, tapi aku tahu bahwa
jika saya menunggu cukup lama, ia akan melakukan nya hal di bawah kap mesin, mungkin menggunakan
beberapa variabel, mungkin menggunakan beberapa kondisi, mungkin menggunakan beberapa loop,
mungkin menggunakan beberapa fungsi, mungkin menggunakan -
hanya mencoba untuk mengulur - mungkin menggunakan beberapa fitur pemrograman lain.
Tapi kalau aku menunggu cukup lama - dalam kenyataannya, di komputer, hal ini terjadi
super cepat -
jika saya menunggu cukup lama, fungsi ini GetString akan mendapatkan string
dari pengguna, yang mungkin mengetik keluar pada keyboard mereka, dan
kemudian, ketika Anda GetString dilakukan semakin karakter-karakter dari user
dan menyimpannya ke dalam string, yang fungsi, GetString, akan memiliki
siap untuk saya beberapa keluaran yang saya akan mengambil dengan cara
operator penugasan.
>> Dan jika aku pergi, memang, menjadi output sini, Obosi memiliki murah hati
berpartisipasi, tanpa mengetahui ini maju, dengan menulis namanya ke ini
variabel, yang mewakili string.
Sekarang, operator penugasan berarti, bahkan meskipun ini mungkin merasa sedikit
berlebihan, aku benar-benar perlu untuk membuat salinan saya sendiri ini.
Karena di sisi kiri side - whoops! -
melihat bahwa pada dasarnya aku punya tali nama di sisi kiri.
Jadi aku juga akan membuat salinan saya sendiri ini.
Dan ini adalah sedikit kebohongan putih, karena kita akan melihat dalam satu atau dua pekan
waktu itu string tidak benar-benar apa yang mereka tampaknya.
>> Tetapi untuk sekarang, di sini adalah nilai kembali.
Berikut ini adalah salinan saya sendiri setelah menggunakan operator penugasan.
Dan sekarang, apa yang ingin saya lakukan selanjutnya?
Kami sekarang memiliki kedua dua baris kode.
Jadi sekarang saya ingin menelepon printf.
Mari kita berpura-pura sekarang bahwa hitam box kembali lagi menjadi
printf dan tidak GetString.
>> Printf kali ini akan mengambil berapa banyak argumen?
Jadi lihat, itu seperti dua.
Ada dua koma di sana, tapi salah satu koma, itu
dalam tanda kutip.
Jadi argumen pertama secara harfiah akan hal ini.
H-E-L-L-O, koma, persen s, backslash-n.
Dan sekarang aku tidak memberikan satu argumen, tapi dua argumen untuk printf.
>> Dan apa yang seharusnya dilakukan dengan printf kedua input setelah saya melewati mereka di
sebagai argumen?
Ini seharusnya mengambil kedua mereka, yang saya disebut namanya, sehingga
Bagian kedua kertas aku menuliskan beberapa saat yang lalu disebut namanya.
Ini akan plug nilai dalam dari variabel ke placeholder,
% S, sehingga, sekali lagi, hanya dalam beberapa saat ini waktu, kita akan melihat efek samping dari
memiliki disebut printf, dimana sekarang kita tidak melihat "halo, dunia," tapi "halo,
Obosi. "
>> Jadi tepuk tangan meriah untuk kedua relawan kami, hanya satu di antaranya tahu
ini akan terjadi.
Baik.
Jadi, mungkin, sesederhana itu, tentu saja, jika Anda sudah akrab
dengan demikian, mudah-mudahan Anda tidak akan pernah lupa bahwa visual yang tertentu tentang bagaimana
fungsi bekerja.
>> Jadi ada lebih dari sekedar GetString.
Bagian dalam CS50 perpustakaan, ada Seluruh sekelompok fungsi, yang semuanya
dikapitalisasi hanya untuk membuat jelas bahwa kita menulis fungsi tersebut.
Biasanya, di C, hampir setiap lain fungsi yang akan Anda gunakan adalah huruf kecil.
Tapi kita sengaja menggunakan huruf kapital hanya untuk membuat jelas bahwa
adalah roda pelatihan macam yang kita akan digunakan untuk hanya beberapa minggu yang
menyederhanakan proses mendapatkan masukan dari pengguna.
>> Perpustakaan CS50 tidak melakukan apa-apa bahwa kamu tidak bisa melakukan dengan
hanya menggunakan kode C dari buku oldschool.
Tapi, sekali lagi, kita menggunakan mereka sebagai pelatihan roda macam untuk hanya beberapa
minggu sehingga kita dapat menyingkirkan kompleksitas bahwa Anda akan segera memahami
diri melakukan sesuatu yang relatif mudah sebagai mendapatkan
masukan dari pengguna.
>> Jadi tahu bahwa Anda akan memiliki akses untuk getchar, GetDouble -
dua kali lipat.
Siapa itu - dan kemudian getFloat.
Apa pelampung?
Mari kita mulai dari sana.
>> SISWA: [Tak terdengar].
>> DAVID Malan: Ya.
Ini adalah nomor dengan titik desimal.
Jadi sedangkan int adalah bilangan bulat, yang adalah hanya sebuah angka dengan 0 sampai 9,
beberapa jumlah pengulangan daripadanya, float adalah sesuatu
dengan titik desimal.
Dan ganda, sementara itu, juga merupakan nomor dengan titik desimal, tetapi lebih
angka setelah desimal titik, berpotensi.
>> Jadi kita akan kembali ke ini sebelumnya lama.
Tapi biasanya, masing-masing jenis data, masing-masing jenis variabel
bahwa perpustakaan seperti kita dapat kembali ke Anda, gunakan nomor yang berbeda dari bit untuk
menyimpan informasi.
Biasanya, sebuah Char, yang hanya berarti satu karakter, menggunakan 8 bit.
Dan itu benar-benar konsisten dengan kami byte relawan pekan lalu yang
datang dan mewakili salah satu Karakter ascii pada suatu waktu.
Jadi Char adalah 8 bit.
>> Sebuah float terjadi menjadi 32 bit, biasanya.
Dan ganda, seperti yang Anda duga, adalah sebenarnya 64 bit, yang hanya lebih,
yang berarti Anda dapat memiliki lebih besar nomor atau lebih presisi.
Tapi sekali lagi, lebih pada lain waktu.
GetLongLong, sementara itu, meskipun bodoh bernama, benar-benar hanya
integer yang dua kali lebih besar, dua kali lama, berpotensi, seperti biasa
integer, 64 bit bukan 32.
Dan getString kita telah menggunakan.
>> Tapi ternyata, dalam CS50 perpustakaan, yang diimplementasikan, seperti yang akan kita lihat, dalam
berupa dua file, salah satunya disebut cs50.h, memiliki dua lainnya
tipe data di dalamnya.
Boolean tidak ada di C. Anda dapat mensimulasikan mereka dengan hanya menggunakan 0 dan 1
seluruh program Anda.
Tapi kami di CS50 perpustakaan telah menciptakan simbol "benar" dan "palsu"
untuk mewakili 1 dan 0 sehingga Anda tidak harus kode keras sesuatu
benar seperti 1 dan 0.
Tapi kita akan melihat orang-orang lagi.
>> String, juga tidak ada.
Dan itulah mengapa saya sebutkan itu sedikit kebohongan putih untuk saat ini.
Tapi kita akan mengupas bahwa lapisan lama.
Tetapi untuk sekarang, string adalah urutan karakter.
>> Sementara itu, di C, Anda memang memiliki tipe data yang berbeda.
Perhatikan ini huruf kecil.
Jadi fungsi Anda melihat beberapa saat yang lalu adalah fungsi yang ditulis oleh CS50
akan kembali kepada Anda nilai yang jatuh ke dalam salah satu kategori ini.
>> Beberapa cheat sheet hanya untuk menanam benih di sini. printf tidak hanya
mengambil% s sebagai penampung.
Dibutuhkan% d untuk integer desimal, atau% saya akan bekerja dengan baik.
% F nilai floating point. % C adalah untuk char, jika Anda ingin hanya satu pasang
karakter menjadi string terformat seperti yang telah kita lakukan, Anda dapat menggunakan% c.
>> Dan kemudian, agak mengganggu,% lld adalah untuk waktu yang lama, integer desimal yang panjang,
yang hanya berarti jika Anda perlu benar-benar jumlah yang besar dan Anda menggunakan sesuatu
disebut lama, yang kami akan datang kembali dalam pset, Anda dapat menggunakan% lld untuk
memberitahu printf, pasang di sangat besar bilangan bulat di sini dengan cara kedua atau
beberapa argumen lainnya.
>> Dan terakhir, saya berjanji bahwa ada melarikan diri beberapa lainnya
urutan yang printf mendukung.
Kami telah melihat backslash-n.
Backslash-r Anda dapat melihat.
Ini semacam hal yang tua-sekolah.
Jika Anda pernah menggunakan mesin tik tahun nyata lalu dan Anda memakai engkol
yang tidak hanya diputar roda untuk memindahkan lineup, juga pindah
semuanya sepanjang perjalanan kembali ke kiri, baik, backslash-r hanya
dasarnya memindahkan kursor Anda kembali ke awal baris
tanpa bergerak ke bawah.
Tapi sekali lagi, lebih pada bahwa, mungkin, di masa depan.
>> Backslash-kutipan, kutipan backslash-ganda, backslash backslash-adalah
solusi untuk teka-teki kecil kecil Saya singgung sebelumnya.
Dan backslash-0 sebenarnya cukup menarik.
Tapi kita akan kembali ke bahwa sebelum lama.
>> Jadi biarkan aku pergi ke, saat ini, CS50 alat, dan mari kita benar-benar melakukan
cepat pemanasan dengan salah satu contoh kita sudah dan kemudian beralih ke
sesuatu yang sedikit lebih kompleks.
Jadi jika saya membuka program saya disebut gedit -
ini adalah editor grafis saya.
Dan saya bisa melakukan itu -
biarkan aku menutup jendela yang ada -
dengan cara ikon ini di sini, gedit, di kiri bawah
sudut sebelah menu.
>> Aku akan pergi ke depan dan memajukan, dan menyimpan contoh ini ke dalam, katakanlah, John
Folder Harvard.
Folder John Harvard hanya rumahnya direktori dimana semua file-nya hidup
secara default.
Dan aku akan menyimpan ini sebagai file bernama hello-0.c.
Dan aku telah memilih nama ini saja sehingga baris dengan kode contoh pada
website tentu dan di Video online YouTube.
>> Jadi sekarang aku akan mulai menulis program pertama saya.
Biarkan aku memperbesar untuk keterbacaan.
Dan aku akan pergi ke depan dan berkata int void main, yang hanya seperti itu
potongan puzzle kuning yang mulai program.
Saya telah masuk ke kebiasaan selama tahun membuka brace keriting saya, maka
juga menutup dan kemudian akan kembali ke di mana saya ingin menempatkan kode saya, hanya
karena membantu saya menjaga semuanya seimbang, terutama karena saya
Program akan lama.
>> Dan sekarang, di sini, aku akan pergi ke depan dan berkata, printf, mengutip tanda kutip,
hello world, backslash-n, kutipan dekat, kurung tutup, koma.
Jadi aku hanya mengulangi segala sesuatu yang kita sudah telah mengambil untuk diberikan sejauh ini.
Sekarang aku akan zoom out.
>> Dan terminal ini jendela di sini, apa yang saya diizinkan untuk melakukan di hitam ini
dan jendela putih?
Apa yang bisa saya gunakan untuk?
Jadi ini adalah di mana saya menjalankan perintah dan di mana saya dapat mengkompilasi hal.
Dan aku akan tetap sederhana.
Aku akan menggunakan sebuah program Membuat disebut, yang tidak
teknis compiler.
Compiler disebut dentang, tapi kami akan datang kembali ke dalam
atau dua minggu waktunya.
>> Untuk saat ini, aku hanya akan mengetikkan make hello-0, Tapi bagi anda yang
membandingkan dalam pikiran Anda apa yang baru saya diketik dengan apa yang saya harus mengetik mungkin
sudah tahu bahwa aku sesuatu yang salah di sini.
Sekarang, jelas ada beberapa kesalahan.
Sebelum aku bahkan melihat apa yang mereka, setiap pikiran untuk apa yang saya lakukan salah?
>> MAHASISWA: [interposing SUARA].
>> DAVID Malan: Ya.
Aku kehilangan file header perpustakaan.
Setiap file-file h. Disebut sundulan file, dan mereka secara kolektif
milik hal yang disebut perpustakaan.
Perpustakaan hanyalah potongan kode bahwa orang lain menulis.
Jadi [standar? i?] perpustakaan adalah kumpulan file yang berisi kode
bahwa orang lain menulis.
>> Jadi aku hilang itu.
Jadi, mengapa saya mendapatkan kesalahan?
Nah, biarkan aku gulir kembali di jendela terminal saya di sini.
Dan sayangnya, di C, seperti dalam banyak bahasa pemrograman, khususnya
jika itu semua baru bagi Anda, kesalahan pesan yang tepat, tapi mereka juga
cukup samar.
Dan kesalahan di sini, dalam warna merah, adalah "Implisit menyatakan fungsi perpustakaan
printf dengan jenis, "dan kemudian gulungan ke baris berikutnya, "int const char *,
... "Itu hanya akan benar-benar luar biasa cepat.
>> Tapi apa yang harus Anda mulai lakukan, jika, lagi, baru untuk semua ini, hanya untuk
mulai mencari kata kunci.
Jelas, aku mungkin tidak mengerti setengah kata-kata yang saya lihat dulu.
Anda akan, meskipun, dalam waktu seminggu.
Tapi saya melihat printf.
Dan itu harus dimulai, sebelum panjang, untuk ingatan Anda, semua yang benar, printf.
Sesuatu yang salah dengan printf.
Apakah aku mengejanya salah?
Tidak, itu tidak terlihat seperti - oh.
Saya tidak bisa menggunakannya kecuali saya mengajar compiler bahwa itu ada.
Dan, sekali lagi, pergi dengan naluri Anda, bahkan jika Anda tidak benar-benar mengerti
pesan kesalahan yang sebenarnya.
>> Dan memang, solusi di sini adalah untuk hanya memasukkannya di bagian atas file
seperti itu, resaving file saya dengan Control-S atau menu File.
Dan jika aku sekarang kembali ke sini, Aku akan membersihkan ini.
Control-L adalah cara yang bagus untuk membersihkan layar.
Dan kemudian aku akan ketik "make halo 0 "Enter, dan sekarang saya masih melihat
urutan samar simbol, tetapi kami akan kembali ke itu.
Itulah yang Membuat lakukan untuk Anda.
Ini mengotomatisasi proses mengambil perintah cukup mengganggu melibatkan
Dentang, compiler yang sebenarnya.
Tapi fakta bahwa aku tidak ada kesalahan berarti hal ini harus bekerja.
>> Jadi aku sekarang akan melakukan - biarkan aku memperbesar lagi -
./hello-0 Enter, dan memang, saya melihat "Hello, world." Jadi mari kita meningkatkan
ini pernah jadi sedikit hanya untuk meniru langkah-langkah yang kita dimaksudkan.
Aku akan mengubah nama ini dengan Save As ke hello1.c.
Dan sekarang aku akan mendeklarasikan variabel disebut nama, sehingga nama tali,
dan aku akan dimasukkan di dalamnya nilai kutipan-tanda kutip
D-A-V-I-D close-kutipan koma.
Dan sekarang aku akan menggantikan "dunia" dengan apa yang tempat untuk string?
% S.
>> Dan sekarang, berapa banyak argumen yang harus printf mengambil waktu ini?
Jadi dua.
Jadi aku pergi di luar tanda kutip.
Saya ketik "nama" setelah koma.
Tapi aku telah melakukan sesuatu lain salah kali ini.
Tapi mari kita berasumsi bahwa saya tidak menyadari bahwa belum.
Biarkan aku pergi di sini.
>> Dan perhatikan juga, saya mendapatkan sedikit bosan mengetik "make halo 0" semua
waktu, "membuat" dan semua ini.
Jadi, ternyata, di Linus Anda dapat sering memukul panah Up pada Anda
keyboard, dan Anda benar-benar dapat menggulir melalui semua perintah yang telah saya
dilaksanakan sebelumnya untuk sekarang.
Jadi jika saya melakukan itu, Up, Up, ada membuat halo 0.
Aku tidak mau itu.
Saya hanya ingin mengubah itu untuk halo 1 saat ini, Enter.
Akhirnya, yang akan menghemat waktu.
>> Baik.
Sayangnya, ada adalah kesalahan.
Jadi biarkan aku gulir ke atas.
Ini terlihat seperti aku benar-benar dibantai program ini.
Maksudku, tuhan saya, itu dua baris kode, dan 10 yang garis kesalahan.
Tapi lihatlah yang atas dulu.
Penggunaan dideklarasikan identifier tali.
Apakah Maksudku standar i n?
Tidak, aku tidak.
Aku berarti tali.
>> Tapi di mana variabel string Jenis menyatakan, dd kita katakan?
Jadi dalam CS50 perpustakaan.
Jadi tidak cukup, dalam pertama beberapa minggu, hanya untuk menggunakan
apa C memberi kita.
Saya juga akan pergi di sini, dan saya bisa meletakkannya di atas atau di bawah, tapi aku akan
hanya menyimpannya abjad untuk menjaga hal-hal yang teratur.
Aku akan mencakup cs50.h, yang pra-instal untuk
Anda di CS50 alat.
Dan itu open source, sehingga bahkan orang di internet dapat menggunakannya pada mereka
komputer sendiri.
Tapi ia datang dengan CS50 alat.
>> Jadi sekarang biarkan aku kembali dan ulang ini dengan membuat halo 1.
Sialan.
Masih kesalahan lain.
Mari saya gulir ke atas untuk yang pertama, meskipun.
Yang satu ini sedikit rumit.
Karakter multi-karakter konstan.
Itu tidak membantu saya.
Tapi perhatikan, dentang adalah setidaknya sedikit sedikit layak, dimana dengan sedikit
Simbol tanda sisipan hijau, itu mengatakan di sini adalah di mana saya kacau.
Mengapa menunjuk, dengan sedikit hijau panah, pada kutipan single berikutnya
nama saya?
>> Jadi ini adalah salah satu hal yang Anda hanya terbiasa, terutama jika Anda sudah
pemrograman dengan Python, atau JavaScript, atau bahasa lain di mana detail ini
tidak masalah.
Dalam C, itu tidak masalah.
Jika Anda menyatakan string, yaitu urutan 0 atau lebih karakter,
Anda benar-benar harus menggunakan tanda kutip ganda.
Jadi saya benar-benar perlu untuk mengubah kembali ini untuk membuka penawaran, tutup kutipan, dengan
tanda kutip ganda.
Tanda kutip tunggal memiliki tempat mereka, namun hanya bila Anda menggunakan individu
karakter, tetapi lebih pada lain waktu.
Untuk saat ini, tanda kutip ganda diperlukan.
>> Jadi sekarang, biarkan aku kembali ke terminal saya window, membuat halo 1.
Dan siapa percaya diri?
Apakah program ini sekarang akan untuk mengkompilasi dengan benar?
OK.
Jadi tiga dari kita berpikir ini.
Baik.
Enter.
Dan itu benar-benar melakukannya.
Jadi tidak ada kesalahan saat ini, bahkan meskipun program ini sudah mendapat sedikit
lebih kompleks.
Jika saya lakukan sekarang dot slash halo 1, Masukkan, itu akan mengatakan "Halo, David."
>> Tapi mari kita lakukan iterasi ketiga ini, di mana
Program ini benar-benar dinamis.
Biarkan aku pergi ke depan dan mengubah file nama, hanya untuk konsistensi dengan
file Anda akan memiliki tersedia Anda sesudahnya online.
Enter.
Dan sekarang aku akan pergi dan tidak menyimpan "David" sulit kode di sini.
Apa yang bisa saya lakukan untuk sangat sederhana meningkatkan program ini?
>> Aku bisa menelepon GetString.
Mungkin apa yang tidak jelas sedikit yang akan terjadi, jadi aku akan
untuk benar-benar menambahkan baris lain, printf, dan sebutkan nama, usus, kutipan dekat, hanya
untuk memberikan pengguna prompt di layar.
Dan sekarang aku akan pergi di sini, dan aku akan menggunakan shortcut keyboard.
Aku akan pergi Up, Up, dan mengubah halo 1 halo 2, Enter.
Dan untungnya, aku membuat kemajuan.
>> Dan sekarang aku akan naik dot slash Halo dan
mengubah ke 2, Enter.
Dan sekarang program saya -
Aku akan memperbesar - semakin yang cantik sedikit.
Nama akan menjadi, katakanlah Rob saat ini, Enter, halo, Rob.
Kita bisa melakukannya lagi.
Nama, Lauren, Enter.
Nama, Yusuf, Enter.
Nama, mari kita coba untuk menjadi sulit, Enter.
Eh.
Ini tidak benar-benar bug.
Jadi itu hanya sedikit jelek.
Jadi mungkin kita bisa memecahkan masalah ini di masa depan, tidak sekarang.
>> Tapi bagaimana akan Anda secara naluriah pergi tentang menangani
bahwa tantangan tertentu?
Itu hanya tampak bodoh.
Bagaimana Anda menghindari hal-hal tampak bodoh?
Jadi yang bisa kami lakukan, OK, saya mendengar beberapa hal, kondisi dan loop.
Kita bisa menggunakan, satu, kondisi, untuk memeriksa apa yang panjang dari string
pengguna memberi kami?
Dan jika itu 0, itu hanya mengutip tanda kutip, mereka hanya tekan Enter, maka
mungkin aku harus berteriak pada mereka dan meminta mereka lagi.
Tapi bagaimana prompt mereka lagi?
Yah, saya juga mendengar lingkaran, dan aku bisa melakukannya lagi dan lagi dan lagi
mendorong pengguna untuk hal yang sama.
>> Nah, mari kita lakukan salah satu contoh lainnya menggunakan berbeda
fungsi dalam CS50 perpustakaan.
Biarkan saya menutup file ini.
Mari saya membuat yang baru.
Dan saya akan menyebutnya adder.c, hanya karena mudah untuk melakukan aritmatika sederhana,
meskipun hal ini akan benar-benar underwhelming dengan apa yang bisa Anda lakukan
dengan komputer modern.
>> Tapi biarkan aku pergi ke depan sekarang dan -
Saya belajar pelajaran saya terakhir kali - termasuk cs50.h, termasuk stdio.h, int
void main, yang, untuk saat ini, saya hanya akan mengambil iman buta, tapi kita akan berasumsi
yang akan memahami apa itu berarti tak lama.
Dan aku akan mengatakan sesuatu seperti "memberi saya sebuah int."
>> Dan sekarang, bagaimana cara mendapatkan int?
Saya ingin akhirnya mendeklarasikan variabel disebut x bertipe int dan
simpan di dalamnya integer dari pengguna.
Jadi itu seteguk.
Tetapi jika seseorang ingin mengusulkan, bagaimana cara mendeklarasikan integer disebut x?
Int x.
>> Jadi itu benar-benar sederhana itu.
Berikan saya sebuah int.
Sebut saja x.
Sekarang saya menggunakan operator penugasan.
Dan bagaimana cara menyimpan dari meninggalkan nilai pengguna?
Aku tidak ingin menelepon GetString, jelas, melainkan getInt.
Setiap argumen?
Tidak.
Jadi terbuka paren, paren dekat segera, dan kemudian
koma berakhir baris.
>> Sekarang biarkan aku melakukan ini lagi.
Beri aku int lain.
Kali ini saya akan melakukan int, mari kita menyebutnya y, sama getInt.
Dan sekarang biarkan aku melakukan sesuatu yang super-sederhana seperti beberapa matematika.
Jadi printf, jumlah% d adalah tempat untuk int.
Dan d%, periode, backslash-n.
>> Baik.
Jadi itu tidak benar-benar matematika.
Tapi kalau aku ingin mengatakan jumlah ini nilai ditambah nilai ini sama ini
nilai lain, berapa banyak argumen ke Total saya harus memberikan printf,
pada akhirnya?
Jadi empat, kan?
String ini dan kemudian tiga nilai.
Jadi x adalah yang pertama saya ingin menjadi terpasang di pertama ke% d.
y akan menjadi yang berikutnya.
>> Dan sekarang aku agak ingin mengatakan z, tapi z tidak ada.
Tapi itu bukan masalah besar.
Karena apa yang akan Anda lakukan secara naluriah, terutama jika Anda memiliki
graphing calculator, apa yang Anda ketik?
Bagaimana x ditambah y?
Jadi bukan sebuah variabel yang sebenarnya.
Itu hanya jumlah dari dua variabel lain.
Dan itu sah.
C pasti mengerti sederhana aritmatika seperti ini.
>> Koma, simpan.
Sekarang biarkan aku pergi di sini dan mengetikkan make adder, Enter.
Tidak ada kesalahan, jadi itu kemajuan juga.
Ketik adder.
Dan satu cara pintas keyboard, jika Anda mulai bosan
dengan semua perintah -
jika Anda mulai mengetik perintah, seperti dot slash iklan, dan di sanalah Anda
kebosanan tendangan, Anda biasanya dapat menekan Tab untuk memiliki komputer menyelesaikan
beristirahat kalimat untuk Anda jika tidak ambigu apa yang harus datang setelah iklan.
>> Jadi biarkan aku pergi saja sekarang dan Anda klik Enter.
Berikan saya sebuah int, 1, 2, dan untungnya, itu 3.
Tapi seperti biasa, pengujian program tidak harus mengurangi ke
hanya mencoba sekali.
Biarkan aku mencoba kasus sudut, seperti negatif 1, beri aku 1, dan yang satu
check out juga.
Dan aku mungkin ingin melakukan lebih pengujian yang ketat, tapi aku cukup
nyaman dengan mana itu di.
>> Nah, sekarang mari kita coba program lain yang menggunakan kali ini
sedikit sintaks lainnya.
Mari saya membuat file baru.
Aku akan menelepon conditions0.c ini dengan garis dengan beberapa contoh kode online.
Dan biarkan aku pergi ke depan dan melakukan termasuk cs50.h, termasuk
stdio.h, di void main -
OK.
Di sana kami pergi.
Kami memiliki boilerplate standar kami.
>> Dan kali ini saya akan mengatakan printf, "Saya ingin sebuah int, silakan," hanya untuk
membuat prompt sedikit lebih ramah.
Dan sekarang saya ingin mendapatkan int dari pengguna.
Aku akan menyebutnya n kali ini, hanya karena n terdengar seperti nomor.
getInt, dan sekarang, apa yang Saya ingin lakukan dengan itu?
Nah, jika n - dan saya akan memperbesar -
jika n lebih besar dari 0, saya ingin melakukan hal berikut -
printf "Kau memilih angka positif." Lain, aku akan mengetik printf "Anda
mengambil negatif
nomor. "Baiklah.
Jadi program ini, meskipun saya melakukannya cepat, terlihat benar sintaktis.
Mari saya coba ini.
Membuat kondisi 0.
Tampaknya berjalan.
Kondisi 0, masukkan.
Mari kita memberikan sebuah int 50.
Aku mengambil angka positif.
Mari kita coba lagi.
Kondisi 0.
Negatif 50.
Aku mengambil angka negatif.
>> Tapi sekarang, biarkan aku memilih apa yang akan kita terus memanggil kasus sudut, yang lebih
kasus yang menarik yang menurut Anda mungkin memberi Anda beberapa masalah, 0.
Sekarang, aku cukup yakin ini adalah salah satu kasus-kasus sudut mana nol
positif maupun negatif, sehingga saya Program, meskipun dalam sintaksis
benar - itu mengkompilasi, berjalan - tidak logis benar.
Jadi apa memperbaiki sederhana di sini jika saya ingin untuk mendeteksi, jika saya ingin menangani n
sama dengan 0 secara terpisah?
>> Jadi jika n sama dengan 0, maka saya ingin mengatakan sesuatu seperti printf "Kau memilih 0."
Mari saya coba ini sekarang.
Biarkan aku pergi kembali ke sini, jelas jendela, dan mengkompilasi ulang.
Hm.
Satu kesalahan menghasilkan.
Tapi aku ingin Anda periksa jika n sama dengan 0.
>> Jadi sekali lagi, lain hal bodoh untuk membiasakan diri, tanda sama adalah
operator penugasan.
Jadi ini sebenarnya kesalahan dalam hal itu, teknis, meskipun compiler
melindungi saya dari diriku sendiri, kita akan teknis dapat menyalin 0 ke n, yang
bukan apa yang saya inginkan.
Saya ingin menguji untuk kesetaraan dengan sama sama.
Dan sehingga sekarang mungkin solusi saya lebih baik.
>> Biarkan aku benar-benar resave ini sebagai, katakanlah, conditions1, menjadi baru dan lebih baik.
Jadi sekarang jika saya ulang ini, itu akan membuat kondisi -
whoops - membuat conditions1 dot slash conditions1, Enter, "Saya ingin sebuah int,
silakan. "Aku akan pergi depan dan ketik 50.
Ini masih baik.
Negatif 50, masih bagus.
0, dan itu, memang, terdeteksi bahwa saya mengambil 0.
>> Jadi apa lagi yang bisa saya lakukan sekarang dengan ini?
Nah, kita pasti bisa melakukannya semakin hal yang kompleks.
Tapi apa yang saya ingin mengusulkan adalah bahwa kita berakhir pada catatan ini di sini.
Jika kita menarik ini, Anda akan melihat, mungkin, kartun favorit Anda
sampai hari ini Anda mungkin pernah dipahami.
Dan itulah tentang kualitas tawa Anda harus mendapatkan dengan CS lelucon.
Jadi itu tentang benar.
>> Tapi yang lebih kuasa, saya pikir saya akan memberi kita sedikit teaser untuk hari Senin.
Jadi kita sudah mulai menggunakan bilangan bulat.
Kami telah disebut mengapung.
Kami bahkan disebut ganda, yang, sekali lagi, memberikan nomor
setelah titik desimal.
>> Tapi ternyata yang mengambang dan ganda, dan, benar-benar, komputer,
fundamental, tidak bisa mengungkapkan beberapa nilai tepatnya.
Kita tahu dari kelas matematika yang dapat Anda memiliki jumlah angka setelah
titik desimal.
Dan Anda bahkan dapat menempatkan sebuah bar vertikal untuk mengatakan ini berlangsung selamanya.
>> Sayangnya, Anda tidak bisa benar-benar melakukan itu di komputer.
Dan kasus sudut muncul.
Misalnya, Anda melakukan sesuatu keuangan.
Kau melakukan matematika dengan persentase, dan
dengan dolar dan sen.
Dan orang-sen tidak tentu berbaris.
Nah, ternyata bahwa fraksi uang dapat mulai menambahkan hingga saat
dimodelkan dengan sistem komputer sedemikian rupa sehingga pintar
manusia dapat mengambil keuntungan.
>> Dan bagi anda yang belum melihat, aku akan ingin memberikan teaser 30 detik dari
sebuah film indah yang dikenal sebagai Office Space, yang akan melukis gambar dari
masalah yang kita harus mengatasi Hal pertama pada hari Senin.
Jika kita dapat meningkatkan volume sedikit, aku memberikan 30
detik Office Space.
>> [VIDEO PEMUTARAN]
>> -Maksudku, kau, kau belum menunjukkan dan Anda mendapatkan untuk menjaga pekerjaan Anda.
>> -Sebenarnya, aku sedang dipromosikan.
>> -Saya bisa memprogram virus yang akan rip tempat itu off waktu besar.
>> -Nah, bagaimana cara kerjanya?
>> -Setiap kali ada transaksi Bank dimana bunga dihitung, dan ada
ribuan sehari, komputer berakhir dengan ini pecahan dari satu sen.
>> -Tapi aku tidak akan melakukan sesuatu yang ilegal.
>> -Illegal?
Samir, ini adalah Amerika.
>> -Kita harus bersumpah demi Tuhan.
>> -Jika tidak ada yang tahu tentang hal ini tapi kita, oke?
Tidak ada anggota keluarga, tidak ada pacar, siapa-siapa.
>> -Tentu saja.
>> -Setuju.
>> -Jangan khawatir, pria.
Saya tidak akan memberitahu siapa pun baik.
>> [END VIDEO PEMUTARAN]
>> DAVID Malan: Jadi ini, kemudian, adalah CS50, itu Office Space, dan itu semua akan
masuk akal pada hari Senin.
Lihat Anda kemudian.
>> Narator: Pada CS50 berikutnya, Rob menyesuaikan menjadi off
Paket makan Harvard.