1 00:00:00,000 --> 00:00:03,353 >> [MUSIC CHƠI] 2 00:00:03,353 --> 00:00:04,842 3 00:00:04,842 --> 00:00:06,050 DAVID Malan: Xin chào, tất cả mọi người. 4 00:00:06,050 --> 00:00:07,777 Đây là supersection CS50 của. 5 00:00:07,777 --> 00:00:09,860 Phần giao sẽ không bắt đầu cho một tuần khác. 6 00:00:09,860 --> 00:00:11,580 Và vì vậy hôm nay, tôi ở đây with-- 7 00:00:11,580 --> 00:00:12,122 >> MARIA: Maria. 8 00:00:12,122 --> 00:00:14,163 DAVID Malan: --Để thực hãy nhìn vào vấn đề 9 00:00:14,163 --> 00:00:16,110 thiết lập một, quá trình của tuần đầu tiên của vật liệu, 10 00:00:16,110 --> 00:00:19,780 giúp bạn có được định hướng với CS50 IDE, một chút của Linux, hệ điều hành đó là 11 00:00:19,780 --> 00:00:22,290 chạy trên IDE, cũng như xem xét một số các quá trình chuyển đổi 12 00:00:22,290 --> 00:00:25,730 từ Scratch với C hàng đầu lên đến vấn đề thiết lập một. 13 00:00:25,730 --> 00:00:28,340 >> Vì vậy, không có thêm ado, trong vấn đề thiết lập một, 14 00:00:28,340 --> 00:00:30,520 bạn sẽ được giới thiệu với CS50 IDE, mà 15 00:00:30,520 --> 00:00:33,230 là lập trình dựa trên web này môi trường mà chúng tôi sử dụng để 16 00:00:33,230 --> 00:00:34,280 để viết chương trình. 17 00:00:34,280 --> 00:00:37,280 Nó được thiết kế để trông rất gợi nhớ của một máy tính điển hình 18 00:00:37,280 --> 00:00:39,430 hệ thống chạy một hành hệ thống gọi là Linux. 19 00:00:39,430 --> 00:00:42,440 Nhưng đó là trong cái gọi là điện toán đám mây, có nghĩa là tất cả mọi người trong lớp 20 00:00:42,440 --> 00:00:45,100 thực sự có thể có của mình tài khoản riêng và sử dụng nó, là tốt. 21 00:00:45,100 --> 00:00:48,950 >> Vì vậy, hầu hết các bạn có thể chưa bao giờ được sử dụng một môi trường Linux trước hoặc có lẽ 22 00:00:48,950 --> 00:00:50,447 thậm chí một môi trường dòng lệnh. 23 00:00:50,447 --> 00:00:52,280 Và một dòng lệnh môi trường là khác nhau. 24 00:00:52,280 --> 00:00:53,200 Đó là tất cả văn bản. 25 00:00:53,200 --> 00:00:54,730 Đó là tất cả các lệnh bàn phím. 26 00:00:54,730 --> 00:00:59,480 Và nó không có rê chuột, không có biểu tượng, không có cửa sổ đối thoại, không có các menu. 27 00:00:59,480 --> 00:01:00,212 Nó hoàn toàn là văn bản. 28 00:01:00,212 --> 00:01:01,920 Vì vậy, lần đầu tiên, nó loại của cảm thấy như một bước 29 00:01:01,920 --> 00:01:04,434 ngược về sự tinh tế. 30 00:01:04,434 --> 00:01:06,600 Nhưng nó kết thúc lên được rất nhiều mạnh mẽ hơn, chắc chắn, 31 00:01:06,600 --> 00:01:08,510 cho một nhà khoa học máy tính, cuối cùng. 32 00:01:08,510 --> 00:01:09,540 >> Vì vậy, chúng ta hãy có một cái nhìn. 33 00:01:09,540 --> 00:01:13,850 Ở đây tôi đang ở CS50.io, qua đó bạn có thể đăng nhập vào CS50 IDE. 34 00:01:13,850 --> 00:01:17,414 Và giống như trong Scratch, có ba lĩnh vực chính để màn hình này. 35 00:01:17,414 --> 00:01:20,080 Vì vậy, ở phía bên trái, chúng ta có những gì sẽ là trình duyệt tập tin. 36 00:01:20,080 --> 00:01:22,413 Và có thư mục này hàng đầu, mà là ngay bây giờ trống rỗng 37 00:01:22,413 --> 00:01:24,690 kể từ khi tôi đã thoát khỏi tất cả của tôi file trước khi supersection. 38 00:01:24,690 --> 00:01:27,599 Và đó là nơi chúng tôi sẽ lưu các tập tin C mà chúng tôi viết. 39 00:01:27,599 --> 00:01:30,890 Ở phía trên bên phải, chúng ta có một nơi mà tất cả các mã của chúng tôi sẽ nhận được văn bản. 40 00:01:30,890 --> 00:01:34,610 Và quả thực, nếu tôi bấm cộng này, này là sẽ cho tôi chọn New File. 41 00:01:34,610 --> 00:01:38,310 Và ở đây tôi có thể bắt đầu viết mã C hoặc, thực sự, bất kỳ số ngôn ngữ khác. 42 00:01:38,310 --> 00:01:42,670 >> Và sau đó ở phía dưới nơi nó nói jharvard @ ide50-- và bạn sẽ 43 00:01:42,670 --> 00:01:45,080 nói một chút gì đó different-- những gì được này được gọi là? 44 00:01:45,080 --> 00:01:48,644 45 00:01:48,644 --> 00:01:49,310 Thiết bị đầu cuối cửa sổ. 46 00:01:49,310 --> 00:01:49,570 Yeah. 47 00:01:49,570 --> 00:01:51,810 Vì vậy, các cửa sổ terminal là cái gọi là dòng lệnh 48 00:01:51,810 --> 00:01:55,540 giao diện thông qua đó bạn có thể tương tác với các hệ thống điều hành cơ bản. 49 00:01:55,540 --> 00:01:58,220 Và bây giờ, chúng ta sẽ làm cho rất ít sử dụng this-- 50 00:01:58,220 --> 00:02:01,170 chỉ để biên dịch, nhìn vào thông báo lỗi mà chúng ta thấy, 51 00:02:01,170 --> 00:02:02,347 và chạy các chương trình của chúng tôi. 52 00:02:02,347 --> 00:02:04,680 Nhưng cuối cùng, chúng ta sẽ để làm được nhiều hơn, là tốt. 53 00:02:04,680 --> 00:02:07,490 Và thậm chí bạn có thể cài đặt phần mềm và quản lý không gian làm việc của bạn 54 00:02:07,490 --> 00:02:09,066 trong CS50 IDE, cũng. 55 00:02:09,066 --> 00:02:10,440 Nhưng thêm vào đó một thời gian khác. 56 00:02:10,440 --> 00:02:12,689 >> Vì vậy, chúng ta hãy đi trước và viết một chương trình rất đơn giản chỉ 57 00:02:12,689 --> 00:02:15,064 phải đi qua một ấm lên của hello.c, mà có lẽ là 58 00:02:15,064 --> 00:02:16,480 các chương trình đơn giản nhất chúng ta có thể viết. 59 00:02:16,480 --> 00:02:18,330 Tôi đã mở ra một tab mới. 60 00:02:18,330 --> 00:02:24,310 Tôi sẽ đi trước và nói bao gồm io.h. chuẩn 61 00:02:24,310 --> 00:02:25,325 Sau đó, int main (void). 62 00:02:25,325 --> 00:02:28,930 63 00:02:28,930 --> 00:02:35,200 Và sau đó printf ("hello, world" backslash n, quote gần, 64 00:02:35,200 --> 00:02:39,480 ngoặc đóng, và dấu chấm phẩy. 65 00:02:39,480 --> 00:02:39,990 >> Được rồi. 66 00:02:39,990 --> 00:02:41,700 Vì vậy, doanh nghiệp nhận thấy cửa sổ của tôi là tiêu đề. 67 00:02:41,700 --> 00:02:44,840 Vì vậy, tôi rất nhanh chóng đi đi lên vào File, Save. 68 00:02:44,840 --> 00:02:46,910 Và điều quan trọng là Tôi gọi điều này không phải là "hello". 69 00:02:46,910 --> 00:02:49,243 Vì vậy, một sai lầm rất phổ biến, đặc biệt là trong vấn đề thiết lập một, 70 00:02:49,243 --> 00:02:52,530 là vô tình chỉ cần gọi cho bạn Chương trình "nước" hay "tham lam" hay "Mario" 71 00:02:52,530 --> 00:02:53,890 hoặc "tín dụng" hoặc tương tự. 72 00:02:53,890 --> 00:02:55,970 Nhưng bạn có thực sự muốn làm cho chắc chắn rằng bạn có phần mở rộng tập tin 73 00:02:55,970 --> 00:02:58,928 bởi vì đây là cách duy nhất mà trình biên dịch và cũng là trình biên tập mã 74 00:02:58,928 --> 00:03:00,710 biết rằng bạn đang thực sự viết code C. 75 00:03:00,710 --> 00:03:02,280 Vì vậy, hãy để tôi đi trước và bấm Save. 76 00:03:02,280 --> 00:03:05,710 >> Và bây giờ cũng vậy, những gì CS50 IDE đã làm cho chúng tôi là nó cũng 77 00:03:05,710 --> 00:03:07,120 các câu lệnh của tất cả mọi thứ. 78 00:03:07,120 --> 00:03:08,822 Vì vậy, nó được làm tất cả mọi thứ rất sặc sỡ. 79 00:03:08,822 --> 00:03:10,780 Và toàn bộ mục đích của đó không phải là chức năng. 80 00:03:10,780 --> 00:03:14,290 Nó chỉ là để vẽ mắt của tôi để miếng khái niệm khác nhau 81 00:03:14,290 --> 00:03:15,310 của chương trình này. 82 00:03:15,310 --> 00:03:17,570 Vì vậy, chúng ta hãy đi trước và biên dịch này. 83 00:03:17,570 --> 00:03:19,490 Và tôi có thể biên dịch này trong một vài cách. 84 00:03:19,490 --> 00:03:22,010 Và trong tuần thứ nhất, các cách trường học cũ chúng tôi đã làm 85 00:03:22,010 --> 00:03:26,250 đó là nghĩa đen tại lệnh line-- "vang hello.c." 86 00:03:26,250 --> 00:03:27,596 Và sau đó tôi nhấn Enter. 87 00:03:27,596 --> 00:03:29,720 Và không có gì có thể xảy ra trong cửa sổ terminal. 88 00:03:29,720 --> 00:03:32,654 Nhưng điều gì đã thay đổi trong IDE? 89 00:03:32,654 --> 00:03:35,320 Trường hợp, một lần nữa, IDE chỉ có nghĩa là Môi trường phát triển tích hợp. 90 00:03:35,320 --> 00:03:38,360 Đó là một cách nói phát triển tích hợp này 91 00:03:38,360 --> 00:03:40,620 môi trường cho phát triển phần mềm. 92 00:03:40,620 --> 00:03:42,477 Vì vậy, những gì đã thay đổi trong giao diện người dùng? 93 00:03:42,477 --> 00:03:44,310 Bạn đã thông báo những gì đó là khác nhau, Maria? 94 00:03:44,310 --> 00:03:47,100 >> MARIA: Tôi nhận thấy một cái gì đó dưới IDE50 thư mục ở đây. 95 00:03:47,100 --> 00:03:47,850 >> DAVID Malan: Yeah. 96 00:03:47,850 --> 00:03:50,230 Vì vậy, lên đây, không chỉ chúng ta phải "hello.c." 97 00:03:50,230 --> 00:03:53,120 Chúng tôi cũng có "a.out", mà là loại một tên câm cho một chương trình. 98 00:03:53,120 --> 00:03:56,430 Nhưng thực sự, đó là tên mặc định cho một chương trình khi bạn chỉ cần biên dịch mã của bạn 99 00:03:56,430 --> 00:03:59,110 và không báo cho trình biên dịch những tập tin đến đầu ra. 100 00:03:59,110 --> 00:04:01,790 Vì vậy, nếu tôi muốn chạy này, tôi cần cho compiler-- 101 00:04:01,790 --> 00:04:05,340 hay đúng hơn, tôi cần phải nói với các không gian làm việc mà tôi 102 00:04:05,340 --> 00:04:09,780 muốn chạy các chương trình gọi là "a.out." 103 00:04:09,780 --> 00:04:10,550 Vào. 104 00:04:10,550 --> 00:04:12,474 Và có "hello, "bây giờ" ./ "thế giới.. 105 00:04:12,474 --> 00:04:13,390 là thực sự quan trọng. 106 00:04:13,390 --> 00:04:16,050 Mặc dù thông thường chúng tôi chỉ viết tên của các lệnh, 107 00:04:16,050 --> 00:04:19,060 khi đó là một chương trình mà bạn đã bằng văn bản, bạn muốn nói "./" 108 00:04:19,060 --> 00:04:22,460 bởi vì đó nói một cách rõ ràng Linux mà bạn muốn chạy một chương trình gọi là 109 00:04:22,460 --> 00:04:26,930 "a.out" đó là trong này, nơi dot có nghĩa là thư mục này mà tôi hiện đang là 110 00:04:26,930 --> 00:04:31,600 trong, mà xảy ra được được gọi là không gian làm việc, "a.out. 111 00:04:31,600 --> 00:04:35,410 Bởi vì nếu tôi chỉ nói "a.out," Nhập, Tôi sẽ nhận được "a.out lệnh không 112 00:04:35,410 --> 00:04:38,035 tìm thấy "vì computer-- bởi vì tôi đã phát minh ra "a.out;" 113 00:04:38,035 --> 00:04:40,910 nó đã không đến với computer-- không biết nơi nào để tìm nó, 114 00:04:40,910 --> 00:04:43,590 mặc dù nó đúng dưới mũi của tôi, vậy để nói chuyện. 115 00:04:43,590 --> 00:04:44,090 ĐƯỢC. 116 00:04:44,090 --> 00:04:49,910 Vì vậy, chúng ta có thể thay đổi điều này để thể "kêu vang -o chào hello.c." 117 00:04:49,910 --> 00:04:53,030 Và nếu tôi nhấn Enter, chương trình gì Điều này sẽ đầu ra cho tôi? 118 00:04:53,030 --> 00:04:55,710 Tên của tập tin là gì? 119 00:04:55,710 --> 00:04:57,500 Yeah, trong trở lại. 120 00:04:57,500 --> 00:04:58,479 Đúng thế. "Chào bạn." 121 00:04:58,479 --> 00:05:00,520 Vì vậy, "hello" là có được tên của chương trình 122 00:05:00,520 --> 00:05:04,610 bởi vì chúng tôi đã sử dụng một cái gọi là đối số dòng lệnh, mà chỉ là 123 00:05:04,610 --> 00:05:08,120 một cách để thay đổi hành vi của trình biên dịch để thực sự đầu ra 124 00:05:08,120 --> 00:05:09,450 một tên tập tin cụ thể. 125 00:05:09,450 --> 00:05:12,400 Và quả thực, nếu tôi phóng to ra ngoài và nhìn lên đây, 126 00:05:12,400 --> 00:05:17,430 Tôi bây giờ không chỉ có "a.out" và "hello.c" nhưng cũng "hello", là tốt. 127 00:05:17,430 --> 00:05:22,410 Vì vậy, bây giờ tôi có thể làm "./hello," Enter. 128 00:05:22,410 --> 00:05:23,640 Và có "hello, thế giới." 129 00:05:23,640 --> 00:05:25,640 Nhưng lastly-- và điều này bây giờ sẽ được quy ước 130 00:05:25,640 --> 00:05:27,590 chúng tôi sử dụng trong suốt học kỳ, typically-- 131 00:05:27,590 --> 00:05:30,070 là bạn cũng có thể chỉ cần nói "làm hello." 132 00:05:30,070 --> 00:05:33,370 Và quả thực, nó nói nó lên cho đến nay vì nó đã tồn tại. 133 00:05:33,370 --> 00:05:37,860 Hãy để tôi đi trước và loại bỏ, với lệnh rm, cả "a.out" - 134 00:05:37,860 --> 00:05:39,644 và nói "loại bỏ tập tin thường xuyên a.out?" 135 00:05:39,644 --> 00:05:41,810 Điều đó chỉ có nghĩa là, bạn có chắc chắn rằng bạn muốn xóa nó? 136 00:05:41,810 --> 00:05:42,880 Tôi sẽ nói có. 137 00:05:42,880 --> 00:05:46,690 Và sau đó tôi sẽ loại bỏ "hello" nhưng không "hello.c." 138 00:05:46,690 --> 00:05:49,920 Tôi sẽ nói "vâng" một cách rõ ràng, nhưng "y" là đủ, là tốt. 139 00:05:49,920 --> 00:05:52,140 >> Và bây giờ nhận thấy nếu tôi gõ ls-- đó, thu hồi, 140 00:05:52,140 --> 00:05:55,540 có nghĩa là nó sẽ liệt kê tất cả các list-- của các tập tin trong thư mục của tôi. 141 00:05:55,540 --> 00:05:57,850 Và quả thực, nếu tôi phóng to ra và nhìn vào phía trên bên trái, 142 00:05:57,850 --> 00:05:59,730 nó khẳng định rằng những gì trong thư mục này, thậm chí 143 00:05:59,730 --> 00:06:04,990 mặc dù nó được dán nhãn là IDE50 lên đây và không gian làm việc, nó chỉ là "hello.c." 144 00:06:04,990 --> 00:06:09,152 Vì vậy, bây giờ xuống đây, nếu tôi đừng "làm hello," Nhập, 145 00:06:09,152 --> 00:06:12,360 bây giờ tôi thấy một lệnh còn nhiều nhưng một lệnh phức tạp hơn đó là đi 146 00:06:12,360 --> 00:06:13,940 là hữu ích trong những tuần tới. 147 00:06:13,940 --> 00:06:16,720 Và bây giờ tôi có thể nói "./hello." 148 00:06:16,720 --> 00:06:19,257 >> Vì vậy, hãy tham quan nhanh một số lệnh Linux khác. 149 00:06:19,257 --> 00:06:21,840 Vậy thì tại sao chúng ta không có một bước trở lại và thực sự nhìn vào C hơn 150 00:06:21,840 --> 00:06:25,020 nói chung, chuyển từ Scratch C, và sau đó kết thúc với một cái nhìn 151 00:06:25,020 --> 00:06:27,305 vào vấn đề đầu tiên thiết lập trong C. Tất cả các quyền. 152 00:06:27,305 --> 00:06:30,430 Vì vậy, tôi sẽ đi trước và chỉ cần sạch không gian làm việc của tôi với Control-L chỉ 153 00:06:30,430 --> 00:06:31,429 để giữ cho màn hình gọn gàng. 154 00:06:31,429 --> 00:06:33,520 Nhưng điều đó không có chức năng tác động khác. 155 00:06:33,520 --> 00:06:35,820 >> Nhớ lại rằng chúng ta đã nhìn thấy một vài lệnh này. 156 00:06:35,820 --> 00:06:39,900 Vì vậy, chúng tôi đã nhìn thấy kêu, mà thông thường bạn sẽ không phải thực hiện thủ công nữa. 157 00:06:39,900 --> 00:06:41,650 Thay vào đó, chúng tôi sẽ sử dụng make. 158 00:06:41,650 --> 00:06:45,290 Nhưng chúng ta cũng thấy ls, trong đó cho thấy một danh sách các tập tin trong thư mục của tôi. 159 00:06:45,290 --> 00:06:48,750 Và bây giờ tại sao là there-- có của hai tập tin bây giờ, "hello" và "hello.c." 160 00:06:48,750 --> 00:06:52,240 Tại sao lại có một ngôi sao hay một sao sau "hello"? 161 00:06:52,240 --> 00:06:54,900 Đã có ý nghĩa gì, dựa về những gì chúng ta đã thấy trong tuần đầu? 162 00:06:54,900 --> 00:06:58,852 163 00:06:58,852 --> 00:07:00,400 Bạn nghĩ sao? 164 00:07:00,400 --> 00:07:02,742 Không sao ý nghĩa gì? 165 00:07:02,742 --> 00:07:04,614 >> MARIA: For-- chương trình "hello"? 166 00:07:04,614 --> 00:07:05,530 DAVID Malan: "Xin chào *". 167 00:07:05,530 --> 00:07:06,330 Yeah. 168 00:07:06,330 --> 00:07:07,760 Oh, yeah? 169 00:07:07,760 --> 00:07:08,639 Oh, thực thi. 170 00:07:08,639 --> 00:07:09,180 Đúng thế. 171 00:07:09,180 --> 00:07:10,890 Vì vậy, điều đó có nghĩa rằng "hello" được thực thi. 172 00:07:10,890 --> 00:07:13,430 Vì vậy, thực sự, đó là lý do tại sao Tôi có thể làm "./hello." 173 00:07:13,430 --> 00:07:13,930 Được rồi. 174 00:07:13,930 --> 00:07:15,179 Vì vậy, những gì khác tôi có thể làm gì trong đây? 175 00:07:15,179 --> 00:07:17,290 Vâng, nó quay ra tôi có thể cũng tạo ra các thư mục. 176 00:07:17,290 --> 00:07:20,924 Vì vậy, hãy để tôi đi trước và tạo ra, Ví dụ, một thư mục "pset1". 177 00:07:20,924 --> 00:07:23,590 Và đặc tả vấn đề đặt sẽ có bạn làm chính xác điều này, 178 00:07:23,590 --> 00:07:25,260 vì vậy bạn không cần phải nhớ ngày hôm nay. 179 00:07:25,260 --> 00:07:27,340 Nhưng "mkdir pset1" có vẻ không có ảnh hưởng. 180 00:07:27,340 --> 00:07:30,540 Nhưng một lần nữa, không có thông báo lỗi nói chung là một điều tốt. 181 00:07:30,540 --> 00:07:34,060 Vì vậy, nếu tôi gõ "ls" now-- ah, bây giờ Tôi có một tập tin thực thi được gọi là 182 00:07:34,060 --> 00:07:36,570 "hello", một tập tin C được gọi là "hello.c." 183 00:07:36,570 --> 00:07:40,860 Và sau đó gạch chéo, do đó, để nói chuyện, có nghĩa rằng đây là một thư mục. 184 00:07:40,860 --> 00:07:42,510 >> Vì vậy, thực sự, bây giờ tôi muốn mở nó. 185 00:07:42,510 --> 00:07:45,730 Và tôi không nhấp đúp chuột vào nó như trong một giao diện, một môi trường đồ họa. 186 00:07:45,730 --> 00:07:48,550 Tôi thay vì nói "cd pset1." 187 00:07:48,550 --> 00:07:49,640 Vào. 188 00:07:49,640 --> 00:07:53,100 Không có gì thú vị dường như có xảy ra ngoại trừ dấu nhắc nhỏ của tôi 189 00:07:53,100 --> 00:07:57,300 here-- đây là cách của Linux nhắc nhở tôi biết nơi tôi, vì vậy thư mục gì là mở. 190 00:07:57,300 --> 00:08:00,080 Nó chỉ nói cho em một cách rõ ràng như trái ngược với đồ họa. 191 00:08:00,080 --> 00:08:05,100 Và nếu tôi gõ "ls," tại sao tôi thấy khác nhắc nhở ngay lập tức, bạn có nghĩ, 192 00:08:05,100 --> 00:08:07,269 khi tôi danh sách các nội dung của pset1? 193 00:08:07,269 --> 00:08:09,310 MARIA: Bạn có thể làm không có bất cứ điều gì trong đó. 194 00:08:09,310 --> 00:08:09,630 DAVID Malan: Yeah. 195 00:08:09,630 --> 00:08:11,510 Vì vậy, sau đó chúng tôi đã không rõ ràng tạo ra bất cứ điều gì trong đó 196 00:08:11,510 --> 00:08:13,150 vì tôi chỉ cần tạo thư mục. 197 00:08:13,150 --> 00:08:17,690 Bây giờ, nếu tôi muốn tạo ra một file-- cho Ví dụ, tôi có thể tạo ra một tập tin mới. 198 00:08:17,690 --> 00:08:20,190 Và sau đó tôi có thể đi đến Lưu và lưu nó như là, 199 00:08:20,190 --> 00:08:23,090 như, "mario.c" nếu bạn đang làm phiên bản tiêu chuẩn của pset một. 200 00:08:23,090 --> 00:08:27,610 Và sau đó, giống như bất kỳ máy Mac hoặc PC, chỉ chọn thư mục "pset1, Save. 201 00:08:27,610 --> 00:08:28,740 Và bây giờ là tập rỗng. 202 00:08:28,740 --> 00:08:31,160 Nhưng chúng ta hãy phóng to một lần nữa cho một thứ hai. 203 00:08:31,160 --> 00:08:32,470 Hãy làm ls đây. 204 00:08:32,470 --> 00:08:34,470 Bây giờ chúng ta thấy "mario.c". 205 00:08:34,470 --> 00:08:37,850 >> Vì vậy, có một số lệnh khác là giá trị lưu giữ trong tâm trí hơn time-- 206 00:08:37,850 --> 00:08:41,200 rõ ràng, hoặc Control-L là những gì tôi đã được đánh; mkdir chúng tôi đã nhìn thấy; 207 00:08:41,200 --> 00:08:45,240 rm, chúng tôi đã nhìn thấy, là tốt, mà là để loại bỏ hoặc xóa một tập tin. 208 00:08:45,240 --> 00:08:49,310 Hãy coi chừng bạn có thể also-- và nếu bạn nhìn ở hướng dẫn trực tuyến, bạn sẽ rm -rf 209 00:08:49,310 --> 00:08:52,630 là một cách rất phổ biến để nói xóa một thư mục đó có công cụ trong đó. 210 00:08:52,630 --> 00:08:54,280 Chỉ cần được siêu, siêu cẩn thận. 211 00:08:54,280 --> 00:08:58,780 -rf nghĩa đệ quy xóa bất cứ điều gì nó là 212 00:08:58,780 --> 00:09:01,150 bạn đang cố gắng để xóa và bắt buộc xóa nó. 213 00:09:01,150 --> 00:09:04,630 Vì vậy, phương tiện đệ quy nếu nó là một thư mục với một thư mục với một thư mục với một thư mục, 214 00:09:04,630 --> 00:09:05,690 xóa tất cả chúng. 215 00:09:05,690 --> 00:09:08,680 Và bắt buộc có nghĩa là thậm chí không hỏi tôi có hay không, tôi chắc chắn? 216 00:09:08,680 --> 00:09:11,960 Vì vậy, nó là một cách thật nguy hiểm xóa rất nhiều thứ một cách nhanh chóng. 217 00:09:11,960 --> 00:09:17,210 Nhưng beware-- quá thường xuyên làm một dũng cảm sinh viên vô tình xóa, nói, pset 218 00:09:17,210 --> 00:09:18,000 một ví dụ. 219 00:09:18,000 --> 00:09:19,833 >> MARIA: Và nếu họ chỉ làm -r, họ đang đi 220 00:09:19,833 --> 00:09:21,870 để yêu cầu họ về mọi tập tin duy nhất. 221 00:09:21,870 --> 00:09:22,790 >> DAVID Malan: nào là vừa gây phiền nhiễu. 222 00:09:22,790 --> 00:09:23,480 >> MARIA: Yeah. 223 00:09:23,480 --> 00:09:25,813 >> DAVID Malan: Vì vậy, đó là lý do tại sao rất nhiều người trong chúng ta, tự bao gồm, 224 00:09:25,813 --> 00:09:27,070 đang trong thói quen sử dụng -rf. 225 00:09:27,070 --> 00:09:27,861 Nhưng nó là nguy hiểm. 226 00:09:27,861 --> 00:09:29,010 Vì vậy, người mua hãy cẩn thận. 227 00:09:29,010 --> 00:09:31,050 Và sau đó là mv loại thú vị được đặt tên. 228 00:09:31,050 --> 00:09:33,600 Vì vậy, đây là lệnh di chuyển, mà cảm thấy một chút lạ 229 00:09:33,600 --> 00:09:37,260 bởi vì bạn thực sự có thể sử dụng nó để di chuyển các tập tin từ nơi này đến nơi khác. 230 00:09:37,260 --> 00:09:39,970 Ví dụ, giả sử rằng tôi sai lầm. 231 00:09:39,970 --> 00:09:43,660 Giả sử rằng tôi tạo ra một tập tin mới cho pset. 232 00:09:43,660 --> 00:09:46,320 Và tôi đã lưu nó như là "greedy.c." 233 00:09:46,320 --> 00:09:49,970 Nhưng giả sử tôi vô tình lưu lại trong IDE50-- như vậy trong không gian làm việc của tôi tự 234 00:09:49,970 --> 00:09:51,580 và không có trong pset1. 235 00:09:51,580 --> 00:09:53,960 >> Bạn có thể thấy nhiều ở đầu bên trái. 236 00:09:53,960 --> 00:09:55,284 Có "greedy.c." 237 00:09:55,284 --> 00:09:56,450 Và có một số giải pháp. 238 00:09:56,450 --> 00:09:58,324 Vì vậy, một, tôi có thể sử dụng cách sử dụng siêu 239 00:09:58,324 --> 00:09:59,740 của chỉ cần kéo và thả nó. 240 00:09:59,740 --> 00:10:01,910 Và đó sẽ thực sự khắc phục vấn đề này. 241 00:10:01,910 --> 00:10:04,967 Nhưng hôm nay, chúng tôi đang cố gắng nhìn vào những cách phức tạp hơn nhưng mạnh mẽ 242 00:10:04,967 --> 00:10:05,550 để làm điều này. 243 00:10:05,550 --> 00:10:07,880 Vì vậy, hãy để tôi đi "ls" trong pset1. 244 00:10:07,880 --> 00:10:09,690 Và tôi chỉ nhìn thấy "mario.c." 245 00:10:09,690 --> 00:10:13,450 Hãy để tôi đi trước và làm "cd ..". 246 00:10:13,450 --> 00:10:15,320 Vì vậy, CD nữa là thay đổi thư mục. 247 00:10:15,320 --> 00:10:18,130 ".." Có nghĩa là gì, mặc dù? 248 00:10:18,130 --> 00:10:21,100 Lần cuối cùng tôi nói "cd pset1 "đi vào pset1. 249 00:10:21,100 --> 00:10:24,360 Vì vậy, khi tôi nói "cd ..", những gì tôi làm? 250 00:10:24,360 --> 00:10:24,910 Ngược. 251 00:10:24,910 --> 00:10:25,150 Yeah. 252 00:10:25,150 --> 00:10:26,750 >> Vì vậy, nó sẽ được gọi là mẹ. 253 00:10:26,750 --> 00:10:29,730 Tới một mức độ lên, như thoát ra khỏi một thư mục. 254 00:10:29,730 --> 00:10:30,500 Vì vậy, Enter. 255 00:10:30,500 --> 00:10:31,900 Và quả thật, hãy nhìn những gì nó đã làm. 256 00:10:31,900 --> 00:10:37,070 Nó làm tôi cảm động chỉ vào không gian làm việc thay vì của thành pset1, mà là trong không gian làm việc. 257 00:10:37,070 --> 00:10:39,710 Và bây giờ nếu tôi gõ "ls", có một bó toàn bộ công cụ. 258 00:10:39,710 --> 00:10:41,650 Trong đó là "greedy.c". 259 00:10:41,650 --> 00:10:48,720 Vì vậy, bây giờ để tôi sử dụng mv để theo nghĩa đen di chuyển "greedy.c" vào pset1. 260 00:10:48,720 --> 00:10:51,120 Và vì vậy rất nhiều các lệnh Linux làm việc chính xác như thế này. 261 00:10:51,120 --> 00:10:54,470 Họ không có đối số hoặc họ mất một tranh luận hay họ mất hai dòng lệnh 262 00:10:54,470 --> 00:10:55,449 lập luận và vv. 263 00:10:55,449 --> 00:10:57,240 Và trong trường hợp này, đó là nghĩa là làm những gì 264 00:10:57,240 --> 00:11:01,670 nó nói, mặc dù succinctly-- di chuyển greedy.c vào pset1. 265 00:11:01,670 --> 00:11:02,310 Vào. 266 00:11:02,310 --> 00:11:03,310 Không có gì có thể xảy ra. 267 00:11:03,310 --> 00:11:06,180 Nhưng nếu tôi làm một ls nữa, tham lam đã biến mất. 268 00:11:06,180 --> 00:11:12,437 Và nếu tôi làm "cd pset1", Enter, và sau đó ls nữa, bây giờ nó ở đúng nơi. 269 00:11:12,437 --> 00:11:14,270 Là một sang một bên, nếu cho một số reason-- đặc biệt 270 00:11:14,270 --> 00:11:16,194 nếu bạn có liên tục kết nối mạng 271 00:11:16,194 --> 00:11:18,360 hoặc bạn đang đi bộ xung quanh khuôn viên trường với nắp máy tính xách tay của bạn 272 00:11:18,360 --> 00:11:20,180 đóng cửa và sau đó mở nó lên một lần nữa và không gian làm việc của bạn 273 00:11:20,180 --> 00:11:21,730 có vẻ hơi không đồng bộ, không có việc lớn. 274 00:11:21,730 --> 00:11:23,646 Chỉ cần tải lại trình duyệt của bạn cửa sổ, và nó phải 275 00:11:23,646 --> 00:11:26,339 resync để các bên tay trái trình duyệt tập tin sẽ chính xác 276 00:11:26,339 --> 00:11:27,380 như các cửa sổ terminal. 277 00:11:27,380 --> 00:11:27,921 Không phải lo lắng. 278 00:11:27,921 --> 00:11:31,460 Khi nghi ngờ, tải lại trang, vì vậy miễn là bạn đã lưu các tập tin đã. 279 00:11:31,460 --> 00:11:31,960 ĐƯỢC. 280 00:11:31,960 --> 00:11:34,710 Vì vậy, mv cũng có thể được sử dụng để đổi tên tập tin. 281 00:11:34,710 --> 00:11:36,760 Và chúng ta hãy nhìn vào lệnh này chính thức ở đây. 282 00:11:36,760 --> 00:11:39,950 Vì vậy suppose-- và đây là siêu phổ biến, quá, quá sớm. 283 00:11:39,950 --> 00:11:46,400 Một số sinh viên đôi khi tạo ra một tập tin gọi là, chúng ta hãy say-- nhau là gì? 284 00:11:46,400 --> 00:11:47,730 Cũng giống như "WATER.C." 285 00:11:47,730 --> 00:11:51,080 Vì vậy, tôi sẽ chỉ la lên, cho không có lý do, trong tất cả các mũ. 286 00:11:51,080 --> 00:11:53,190 Nhưng đây không phải là tên đúng cho tập tin 287 00:11:53,190 --> 00:11:56,660 nếu chỉ vì vấn đề của chúng tôi thiết đặc điểm kỹ thuật đã không cho bạn 288 00:11:56,660 --> 00:11:59,430 để lưu các tập tin như là tất cả các mũ "WATER.C." 289 00:11:59,430 --> 00:12:01,320 Thay vào đó, chúng tôi mong đợi "water.c" trong chữ thường. 290 00:12:01,320 --> 00:12:03,140 Và, trên thực tế, đây là vấn đề bởi vì check50, 291 00:12:03,140 --> 00:12:04,370 một chương trình bạn đang đi để đáp ứng trong vấn đề 292 00:12:04,370 --> 00:12:07,350 thiết lập một tự động kiểm tra tính đúng đắn của mã của bạn 293 00:12:07,350 --> 00:12:11,615 sẽ hét vào mặt bạn nếu nó không thể tìm "water.c" trong tất cả các chữ thường. 294 00:12:11,615 --> 00:12:12,712 >> Vì vậy, tôi cần phải sửa lỗi này. 295 00:12:12,712 --> 00:12:14,920 Vì vậy, nhiều cách khác nhau để làm được điều này, người đầu tiên trong số đó 296 00:12:14,920 --> 00:12:18,330 sẽ là vào Control-click hoặc nhấp chuột phải tên tập tin và chỉ cần thay đổi Rename. 297 00:12:18,330 --> 00:12:19,740 Hoàn toàn tốt để làm điều đó. 298 00:12:19,740 --> 00:12:21,820 Nhưng một lần nữa, ngày hôm nay, chúng ta hãy làm cho nó một chút fancier. 299 00:12:21,820 --> 00:12:26,680 Hãy sử dụng mv thay đổi "WATER.C" để "water.c." 300 00:12:26,680 --> 00:12:30,690 Vì vậy, bạn cũng có thể sử dụng các đối số đầu tiên để đổi tên nó vào số thứ hai 301 00:12:30,690 --> 00:12:34,455 nếu đối số thứ hai không, là trong Thực tế, một thư mục hoặc một thư mục tên. 302 00:12:34,455 --> 00:12:35,120 >> Được rồi. 303 00:12:35,120 --> 00:12:39,560 Và cuối cùng, một chút trick-- vì vậy tôi đang ở thư mục không gian làm việc của tôi tại thời điểm này. 304 00:12:39,560 --> 00:12:43,660 Nếu tôi muốn nhận được vào pset một, Tôi chắc chắn có thể gõ "cd pset1." 305 00:12:43,660 --> 00:12:47,260 Nhưng nó quá tẻ nhạt để gõ "pset1" hoặc còn các tên file hoặc thư mục tên 306 00:12:47,260 --> 00:12:47,980 còn. 307 00:12:47,980 --> 00:12:51,960 Vì vậy, rất thường xuyên trong Linux, những gì bạn có thể làm là bắt đầu gõ "PSE" 308 00:12:51,960 --> 00:12:56,100 và chỉ cảm thấy buồn chán, nhấn Tab, và để cho hình máy tính nó ra cho bạn. 309 00:12:56,100 --> 00:12:58,190 Siêu hữu ích để có được thành thói quen đó. 310 00:12:58,190 --> 00:13:01,079 Trở ngại duy nhất là nếu bạn có nhiều tập tin hoặc thư mục bắt đầu 311 00:13:01,079 --> 00:13:02,870 với chữ "p" hoặc "ps", bạn có thể có 312 00:13:02,870 --> 00:13:05,525 để đánh thêm một số trước Máy tính sẽ biết phải làm gì. 313 00:13:05,525 --> 00:13:06,820 >> MARIA: Chúng tôi thích các phím tắt. 314 00:13:06,820 --> 00:13:08,695 >> DAVID Malan: Điều này sẽ giúp bạn tiết kiệm rất nhiều thời gian. 315 00:13:08,695 --> 00:13:11,930 Và cũng có thể, như chúng tôi đã nói trong bài giảng, bạn có thể di chuyển lên trong lịch sử, lên và xuống, 316 00:13:11,930 --> 00:13:15,461 để tìm thấy gần đây thực hiện lệnh, là tốt. 317 00:13:15,461 --> 00:13:15,960 Được rồi. 318 00:13:15,960 --> 00:13:20,904 Vì vậy, bây giờ, chúng ta hãy quay trở lại sự chú ý của chúng tôi cho một chương trình đơn giản, hello thế giới. 319 00:13:20,904 --> 00:13:22,195 Vì vậy, chúng tôi đã biên soạn này chính xác. 320 00:13:22,195 --> 00:13:24,050 Và bây giờ tại sao chúng ta không đi xem các kiểu dữ liệu 321 00:13:24,050 --> 00:13:26,776 và sau đó chuyển tiếp từ một số khối Scratch tương ứng với C. 322 00:13:26,776 --> 00:13:27,400 MARIA: Awesome. 323 00:13:27,400 --> 00:13:30,031 Vì vậy, bây giờ mà bạn đã bắt đầu viết chương trình trong C, 324 00:13:30,031 --> 00:13:32,530 chúng ta sẽ bắt đầu nói chuyện về các kiểu dữ liệu và các biến. 325 00:13:32,530 --> 00:13:37,570 Vì vậy, một số loại dữ liệu mà bạn sẽ muốn biết bắt đầu từ bây giờ 326 00:13:37,570 --> 00:13:39,400 là những người có đánh dấu màu xanh. 327 00:13:39,400 --> 00:13:42,420 Vì vậy, chúng tôi có int đầu tiên, đó là viết tắt cho số nguyên. 328 00:13:42,420 --> 00:13:46,075 Và giữ nguyên, như bạn có thể có guessed-- số 1, 2, 3, 329 00:13:46,075 --> 00:13:47,950 và bất kỳ số nguyên khác mà bạn có thể nghĩ đến. 330 00:13:47,950 --> 00:13:48,730 >> DAVID Malan: Và cũng tiêu cực. 331 00:13:48,730 --> 00:13:50,220 >> MARIA: Và cũng có những người tiêu cực, vâng. 332 00:13:50,220 --> 00:13:51,450 Và 0. 333 00:13:51,450 --> 00:13:54,250 Sau đó, chúng tôi có phao nổi, mà đang nổi số điểm. 334 00:13:54,250 --> 00:13:58,360 Vì vậy, đó là tất cả các số thực có điểm thập phân. 335 00:13:58,360 --> 00:14:03,960 Vì vậy, 5.0, 5.2, và thậm chí nhiều hơn chữ số sau dấu thập phân, 336 00:14:03,960 --> 00:14:05,620 là tốt, và cũng có những tiêu cực. 337 00:14:05,620 --> 00:14:07,530 Sau đó, chúng tôi có char mà là một nhân vật. 338 00:14:07,530 --> 00:14:10,240 Vì vậy, tôi nghĩ rằng chúng tôi đã nói chuyện về này trong bài giảng hôm nay. 339 00:14:10,240 --> 00:14:15,682 Nhưng chúng ta có những lá thư, cho example-- A, B, C-- có thể được lưu trữ như là một char. 340 00:14:15,682 --> 00:14:18,390 Nhưng sau đó chúng tôi có rất nhiều biểu tượng mà có thể được lưu trữ như là một char. 341 00:14:18,390 --> 00:14:22,380 Và những người được lưu trữ như ASCII. 342 00:14:22,380 --> 00:14:25,280 >> Và sau đó chúng tôi có bool, đó là Boolean. 343 00:14:25,280 --> 00:14:29,067 Và những người đánh giá là True hay False hoặc 1 và 0, tương ứng. 344 00:14:29,067 --> 00:14:31,650 DAVID Malan: Và nhớ lại rằng bool đến từ các thư viện CS50. 345 00:14:31,650 --> 00:14:33,300 Vì vậy, nó không được xây dựng vào C, nhưng nó là siêu hữu ích 346 00:14:33,300 --> 00:14:34,850 để có khái niệm đúng và sai. 347 00:14:34,850 --> 00:14:36,990 Và ngay cả khi bạn có thể think-- thực tế thú vị. 348 00:14:36,990 --> 00:14:43,700 Một bool kỹ thuật cần bao nhiêu bit, thực sự, để đại diện cho thật so với False? 349 00:14:43,700 --> 00:14:47,910 Bao nhiêu bit làm bạn nghĩ bạn sẽ cần, tối đa? 350 00:14:47,910 --> 00:14:48,790 Vâng, chỉ cần một. 351 00:14:48,790 --> 00:14:52,077 Vì vậy, nó chỉ ra rằng C không thể cung cấp cho bạn chỉ là một chút. 352 00:14:52,077 --> 00:14:54,160 Các đơn vị nhỏ nhất của biện pháp bạn có thể nhận được là tám. 353 00:14:54,160 --> 00:14:57,090 Vì vậy, nó là một chút lãng phí chúng bạn sử dụng toàn bộ một byte, hoặc tám bit, 354 00:14:57,090 --> 00:14:58,340 đại diện Đúng hay Sai. 355 00:14:58,340 --> 00:15:01,807 Nhưng đó chỉ là cách nó thực hiện trong C bởi các thư viện CS50. 356 00:15:01,807 --> 00:15:04,890 MARIA: Và sau đó những người mà chúng tôi sẽ không nói về một cách rộng rãi 357 00:15:04,890 --> 00:15:08,060 đúng now-- đôi, đó là cho phao lớn hơn. 358 00:15:08,060 --> 00:15:09,811 Lâu dài và ngắn cũng là cho các số nguyên. 359 00:15:09,811 --> 00:15:10,643 DAVID Malan: Thật vậy. 360 00:15:10,643 --> 00:15:13,190 Trong ấn bản của hacker của pset một, chúng tôi thực sự sử dụng lâu dài. 361 00:15:13,190 --> 00:15:15,801 Nhưng đối với phiên bản tiêu chuẩn, nó không phải là cần thiết. 362 00:15:15,801 --> 00:15:16,300 MARIA: Cool. 363 00:15:16,300 --> 00:15:17,361 ĐƯỢC. 364 00:15:17,361 --> 00:15:20,110 Vì vậy, bạn nên operators-- có lẽ quen thuộc với hầu hết trong số này. 365 00:15:20,110 --> 00:15:22,620 Ngoài ra, +; trừ, -. 366 00:15:22,620 --> 00:15:24,070 Cho phép nhân, chúng ta có *. 367 00:15:24,070 --> 00:15:25,900 Vì vậy, không phải là X mà chúng ta thường sử dụng. 368 00:15:25,900 --> 00:15:27,840 Chia, chúng tôi có các dấu gạch chéo ngược. 369 00:15:27,840 --> 00:15:31,380 Và modulo nhà điều hành mới nhất của chúng tôi chúng ta sẽ nói về ngay bây giờ. 370 00:15:31,380 --> 00:15:35,610 Đó là một nhà điều hành cho phép chúng ta lấy phần còn lại của một bộ phận. 371 00:15:35,610 --> 00:15:40,630 Vì vậy, nếu chúng ta có 4% 2, 4 chia 2 là 2 với phần còn lại của 0. 372 00:15:40,630 --> 00:15:41,740 Vì vậy, 4% 2 là 0. 373 00:15:41,740 --> 00:15:42,950 4% 3 là 1. 374 00:15:42,950 --> 00:15:44,870 4% 5 là 4, như bạn có thể đoán. 375 00:15:44,870 --> 00:15:48,860 Và nhớ khi sử dụng tất cả các khai thác sử dụng các quy tắc PEMDAS. 376 00:15:48,860 --> 00:15:54,060 >> DAVID Malan: Vì vậy, để được rõ ràng, nếu bạn làm 4% 2, tại sao là 0, chính xác? 377 00:15:54,060 --> 00:15:57,480 >> MARIA: Bởi vì 4 chia 2 là 2 với phần còn lại của 0. 378 00:15:57,480 --> 00:16:00,752 Vì vậy, theo modulo cho chúng ta mà còn là trái ngược với kết quả của phép chia. 379 00:16:00,752 --> 00:16:02,960 DAVID Malan: Và quả thực, những gì chúng ta sẽ tìm thấy điều này hữu ích 380 00:16:02,960 --> 00:16:05,640 cho là trong một số vấn đề đó là không nhất thiết phải một, 381 00:16:05,640 --> 00:16:08,040 nếu bạn muốn có gây hạn chế cho chính mình 382 00:16:08,040 --> 00:16:10,720 để một loạt các con số như 0 thông qua một cái gì đó, 383 00:16:10,720 --> 00:16:13,904 bạn có thể sử dụng modulo để bọc xung quanh sớm hơn như 2 tỷ 384 00:16:13,904 --> 00:16:16,320 hoặc giá trị 4 tỷ USD mà chúng tôi đã nói đến trong bài giảng. 385 00:16:16,320 --> 00:16:16,870 >> MARIA: Yeah. 386 00:16:16,870 --> 00:16:19,429 Và ngay cả trong "tham lam", chúng tôi có thể. 387 00:16:19,429 --> 00:16:21,345 DAVID Malan: Có, trong vấn đề thiết lập một, là tốt. 388 00:16:21,345 --> 00:16:22,520 MARIA: Yeah, tốt đẹp. 389 00:16:22,520 --> 00:16:24,340 DAVID Malan: Tốt gợi ý. 390 00:16:24,340 --> 00:16:25,750 MARIA: Xin lỗi. 391 00:16:25,750 --> 00:16:28,590 Boolean expressions-- vậy cho các toán tử logic, 392 00:16:28,590 --> 00:16:31,770 chúng ta sẽ nói về tất cả các bạn thấy ở đây. 393 00:16:31,770 --> 00:16:35,310 Vì vậy, ngay bây giờ, chúng ta có hai dấu bằng liệt kê cho bằng. 394 00:16:35,310 --> 00:16:38,650 Vì vậy, những người đang có để so sánh. 395 00:16:38,650 --> 00:16:40,830 Cho đến nay, chúng tôi đã chỉ nhìn thấy một dấu bằng. 396 00:16:40,830 --> 00:16:44,870 Đó là khi chúng ta gán một giá trị cho một biến. 397 00:16:44,870 --> 00:16:50,160 Vì vậy, nếu chúng ta đã nhìn thấy int n = 5, sau đó chúng tôi đã phân công 5 với n biến. 398 00:16:50,160 --> 00:16:55,600 Nhưng nếu chúng ta muốn sử dụng == cho so sánh, chúng ta có thể kiểm tra nếu n == 5. 399 00:16:55,600 --> 00:16:58,310 Và nếu n == 5, thì đó là sự thật. 400 00:16:58,310 --> 00:17:01,950 >> Vì vậy, các nhà khai thác Boolean cho phép chúng ta, về cơ bản, 401 00:17:01,950 --> 00:17:04,670 để đánh giá Boolean biểu thức là True hoặc False. 402 00:17:04,670 --> 00:17:07,819 Vì vậy, không equals-- chúng tôi có các dấu chấm than và bằng. 403 00:17:07,819 --> 00:17:14,240 Vì vậy, chúng ta cũng có thể kiểm tra nếu n không bằng 5-- vậy n! = 5. 404 00:17:14,240 --> 00:17:17,640 Ít hơn, nhỏ hơn hoặc bằng, lớn hơn, lớn hơn hoặc bằng, 405 00:17:17,640 --> 00:17:20,720 và sau đó chúng tôi có hợp lý AND và OR. 406 00:17:20,720 --> 00:17:24,060 Và những cho phép chúng tôi để đánh giá nhiều biểu thức Boolean với nhau 407 00:17:24,060 --> 00:17:27,930 về cơ bản đến với nhau như toàn bộ một biểu thức Boolean. 408 00:17:27,930 --> 00:17:34,970 Vì vậy, nếu chúng ta muốn tìm một số, nói, đó là lớn hơn 5 nhưng ít hơn 15 409 00:17:34,970 --> 00:17:39,810 cùng một lúc, chúng ta sẽ sử dụng hợp lý và điều hành để xem nếu n là 410 00:17:39,810 --> 00:17:42,937 lớn hơn 5 && n ít hơn 15. 411 00:17:42,937 --> 00:17:44,770 DAVID Malan: Và ở đây, quá, nó thực sự dễ dàng 412 00:17:44,770 --> 00:17:47,290 sớm để vô tình chỉ sử dụng một ký hiệu đơn 413 00:17:47,290 --> 00:17:48,572 hoặc một thanh đứng đơn. 414 00:17:48,572 --> 00:17:51,280 Và hy vọng rằng các trình biên dịch sẽ hét lên với bạn bởi vì họ thực sự 415 00:17:51,280 --> 00:17:52,530 có một ý nghĩa rất khác nhau. 416 00:17:52,530 --> 00:17:55,660 Đối với những người tò mò, họ được sử dụng cho các hoạt động trên bit, 417 00:17:55,660 --> 00:17:57,197 hoạt động trên các bit riêng lẻ. 418 00:17:57,197 --> 00:17:58,780 Nhưng bạn làm muốn cặp của chúng ở đây. 419 00:17:58,780 --> 00:18:01,560 Và siêu quan trọng là Người đầu tiên, dấu bằng, 420 00:18:01,560 --> 00:18:05,270 đó là các nhà điều hành bình đẳng như trái ngược với toán tử gán. 421 00:18:05,270 --> 00:18:08,552 >> MARIA: Và các thanh dọc là nằm giữa Delete và Return. 422 00:18:08,552 --> 00:18:09,260 DAVID Malan: Yes. 423 00:18:09,260 --> 00:18:11,420 Trên một bàn phím Mỹ điển hình. 424 00:18:11,420 --> 00:18:13,190 >> MARIA: Yep. 425 00:18:13,190 --> 00:18:15,890 Vì vậy, chúng ta hãy nhảy ngay vào câu điều kiện. 426 00:18:15,890 --> 00:18:18,300 Trong Scratch, bạn đã đã nhìn thấy, có lẽ, 427 00:18:18,300 --> 00:18:22,730 nếu báo cáo cho phép bạn kiểm tra xem một cái gì đó là sự thật, sau đó 428 00:18:22,730 --> 00:18:23,660 làm cái gì khác. 429 00:18:23,660 --> 00:18:28,410 Vì vậy, bạn có thể muốn để kiểm tra xem sprite của bạn là 430 00:18:28,410 --> 00:18:31,410 chạm vào một số sprite khác hoặc biên giới của màn hình của bạn. 431 00:18:31,410 --> 00:18:35,520 Và sau đó bạn có thể muốn kết thúc trò chơi hoặc làm điều gì đó khác. 432 00:18:35,520 --> 00:18:40,000 Vì vậy, cú pháp cho rằng là "if (điều kiện)." 433 00:18:40,000 --> 00:18:46,820 Vì vậy, nếu sprite của bạn là chạm vào một cái gì đó, sau đó là bên trong các dấu ngoặc nhọn. 434 00:18:46,820 --> 00:18:48,980 >> Sau đó, chúng tôi có lệnh if-else. 435 00:18:48,980 --> 00:18:54,080 Khác cho phép chúng ta làm điều gì đó nếu điều kiện là chúng tôi 436 00:18:54,080 --> 00:18:55,870 kiểm tra trong đầu là không đúng sự thật. 437 00:18:55,870 --> 00:19:01,530 Vì vậy, nếu các sprite là chạm vào biên giới làm được điều này, người nào khác làm cái gì khác. 438 00:19:01,530 --> 00:19:04,030 Vì vậy, nếu không làm được cái gì khác. 439 00:19:04,030 --> 00:19:07,530 Sau đó, chúng ta có một ví dụ ngắn cho việc này. 440 00:19:07,530 --> 00:19:11,551 Vì vậy, nếu (military_time <12), chúng tôi muốn printf "Chào buổi sáng!" 441 00:19:11,551 --> 00:19:13,300 Khác chúng ta sẽ printf "Chào buổi tối!" 442 00:19:13,300 --> 00:19:14,860 Ví dụ cơ bản. 443 00:19:14,860 --> 00:19:15,680 >> DAVID Malan: Tốt. 444 00:19:15,680 --> 00:19:16,760 >> MARIA: Cool. 445 00:19:16,760 --> 00:19:18,560 Vì vậy, bây giờ chúng tôi có các câu lệnh switch. 446 00:19:18,560 --> 00:19:21,960 Chuyển báo cáo trong can chung cho phép chúng ta làm được rất nhiều điều tương tự 447 00:19:21,960 --> 00:19:25,070 rằng chúng ta chỉ nói chuyện về với câu lệnh if. 448 00:19:25,070 --> 00:19:29,440 Ví dụ, ngay bây giờ chúng ta có Hình thức chung của lệnh switch 449 00:19:29,440 --> 00:19:33,870 cho phép chúng ta chụp một biến gọi là n 450 00:19:33,870 --> 00:19:37,670 và so sánh nó với rất nhiều giá trị khác nhau, mà ở đây chúng tôi 451 00:19:37,670 --> 00:19:40,010 đã gọi là constant1, constant2. 452 00:19:40,010 --> 00:19:41,150 Chúng ta có thể có nhiều hơn nữa. 453 00:19:41,150 --> 00:19:42,930 Và những người được gọi là trường hợp. 454 00:19:42,930 --> 00:19:46,280 >> Vì vậy, nếu chúng ta có một chuyển đổi statement-- và tác phẩm này 455 00:19:46,280 --> 00:19:50,580 chỉ cho integers-- chúng ta có một biến trong trường hợp này đó là n. 456 00:19:50,580 --> 00:19:53,840 Nếu n biến là bằng constant1, chúng tôi 457 00:19:53,840 --> 00:19:59,720 sẽ thực hiện một số đoạn mã hoặc một cái gì đó mà chúng ta muốn làm. 458 00:19:59,720 --> 00:20:01,280 Và sau đó chúng tôi sẽ phá vỡ. 459 00:20:01,280 --> 00:20:04,820 Vì vậy, giờ nghỉ có nghĩa là câu lệnh switch 460 00:20:04,820 --> 00:20:08,120 sẽ ngừng thực hiện nếu n bằng constant1, 461 00:20:08,120 --> 00:20:09,752 và sau đó chương trình của bạn sẽ tiếp tục. 462 00:20:09,752 --> 00:20:11,835 Nó sẽ thoát ra khỏi chuyển đổi và tuyên bố nó sẽ thấy 463 00:20:11,835 --> 00:20:13,520 tiếp tục làm cái gì khác. 464 00:20:13,520 --> 00:20:17,204 >> Tuy nhiên, nếu n không bằng constant1, sau đó trường hợp cho constant2 465 00:20:17,204 --> 00:20:17,870 sẽ được kiểm tra. 466 00:20:17,870 --> 00:20:21,750 Vì vậy, nếu n bằng constant2, mà khác đoạn mã sẽ được thực thi. 467 00:20:21,750 --> 00:20:23,850 Và sau đó nó sẽ phá vỡ nếu đó là bằng với nó. 468 00:20:23,850 --> 00:20:27,580 Và sau đó chúng ta có thể có also-- không nhất thiết, though-- một trường hợp mặc định, 469 00:20:27,580 --> 00:20:32,290 mà sẽ xảy ra nếu n không bằng trong các trường hợp mà bạn đã liệt kê. 470 00:20:32,290 --> 00:20:35,400 Và trong trường hợp mặc định, chúng tôi cũng không cần nghỉ ngơi cần thiết 471 00:20:35,400 --> 00:20:39,271 vì câu lệnh switch sẽ biết mà nó cần phải kết thúc sau khi mặc định 472 00:20:39,271 --> 00:20:40,270 trường hợp nếu đó là trường hợp. 473 00:20:40,270 --> 00:20:42,140 >> DAVID Malan: Nhưng phong cách, chúng tôi luôn luôn đặt nó ở đó. 474 00:20:42,140 --> 00:20:42,540 >> MARIA: Yeah. 475 00:20:42,540 --> 00:20:42,710 >> DAVID Malan: Yeah. 476 00:20:42,710 --> 00:20:44,750 Vì vậy, đặc biệt là khi bắt đầu, đặc biệt là nếu trong số những người kém 477 00:20:44,750 --> 00:20:47,458 thoải mái, tôi sẽ cá nhân chỉ khuyên bạn nên gắn bó với IFS 478 00:20:47,458 --> 00:20:51,564 và IFS-elses và if-else-if-elses và vv nếu chỉ 479 00:20:51,564 --> 00:20:53,480 bởi vì họ là một chút đơn giản hơn. 480 00:20:53,480 --> 00:20:56,142 Đây là một tối ưu hóa tốt đẹp, hoặc đôi khi ngay cả về mặt thẩm mỹ nó 481 00:20:56,142 --> 00:20:57,350 làm cho mã dễ đọc hơn. 482 00:20:57,350 --> 00:20:59,599 Và trong thực tế, có lẽ, giữa học kỳ chúng ta sẽ thấy một vấn đề 483 00:20:59,599 --> 00:21:02,504 thiết lập nơi mà nó chỉ có vẻ tốt hơn và dễ dàng hơn để đọc cho con người 484 00:21:02,504 --> 00:21:03,670 bằng cách sử dụng một câu lệnh switch. 485 00:21:03,670 --> 00:21:05,460 Nhưng đừng lo lắng về bám vào này quá sớm. 486 00:21:05,460 --> 00:21:05,680 >> MARIA: Yeah. 487 00:21:05,680 --> 00:21:08,840 Nếu bạn có rất nhiều nếu báo cáo, nó chỉ có thể không được rất có thể đọc được. 488 00:21:08,840 --> 00:21:10,965 Nó có thể không được rất nhanh để bạn có thể đi qua nó. 489 00:21:10,965 --> 00:21:13,230 Vì vậy, có thể chuyển đổi báo cáo rất hữu ích, là tốt. 490 00:21:13,230 --> 00:21:17,900 Và cũng có thể, không remember-- không quên đặt các vi phạm trong đó. 491 00:21:17,900 --> 00:21:20,330 >> DAVID Malan: Không nhớ này. 492 00:21:20,330 --> 00:21:24,890 >> MARIA: Bởi vì sau đó bạn có thể rơi thông qua từ một trường hợp khác. 493 00:21:24,890 --> 00:21:27,930 Vì vậy, chúng ta hãy nói rằng trường hợp constant1 không có lệnh break trong nó. 494 00:21:27,930 --> 00:21:31,920 Sau đó, chúng ta có thể rơi qua trường hợp bên constant2. 495 00:21:31,920 --> 00:21:35,070 Và chúng tôi không muốn làm điều đó nếu chúng tôi đã đạt đến trường hợp constant1 496 00:21:35,070 --> 00:21:37,830 và đó là bằng n. 497 00:21:37,830 --> 00:21:45,100 >> Vì vậy, ví dụ, nếu chúng ta có một biến n có chứa một số lớp, 498 00:21:45,100 --> 00:21:48,990 và chúng tôi muốn xem những gì mà lớp is-- nếu n bằng 50, 499 00:21:48,990 --> 00:21:51,957 chúng ta sẽ in "là CS50 Giới thiệu về Khoa học Máy tính I. " 500 00:21:51,957 --> 00:21:53,040 Sau đó chúng ta sẽ phá vỡ. 501 00:21:53,040 --> 00:21:53,920 Và đó là nó. 502 00:21:53,920 --> 00:21:55,950 Tuy nhiên, nếu n bằng đến 51, chúng ta sẽ 503 00:21:55,950 --> 00:21:58,494 in "CS51 là Giới thiệu để máy tính Khoa học II. " 504 00:21:58,494 --> 00:21:59,910 Sau đó, một lần nữa, chúng ta sẽ phá vỡ. 505 00:21:59,910 --> 00:22:05,080 Tuy nhiên, nếu sau đó chúng tôi đặt 124, 61, bất kỳ số khác mà bạn có thể nghĩ đến, 506 00:22:05,080 --> 00:22:06,890 hoặc chương trình không phải là đi để nhận ra điều đó. 507 00:22:06,890 --> 00:22:09,010 Vì vậy, nó sẽ nói, "Xin lỗi, tôi không quen thuộc với lớp đó. " 508 00:22:09,010 --> 00:22:10,009 Và nó sẽ phá vỡ. 509 00:22:10,009 --> 00:22:12,847 DAVID Malan: Vì vậy, bạn thực sự có thể nhìn thấy nếu, nếu người nào khác, khác ý tưởng ở đây. 510 00:22:12,847 --> 00:22:15,430 Đó là cú pháp chỉ khác nhau cho thể hiện ý tưởng cùng chính xác. 511 00:22:15,430 --> 00:22:17,690 >> MARIA: Chính xác. 512 00:22:17,690 --> 00:22:19,480 Bây giờ chúng ta phải khai thác tam phân của chúng tôi. 513 00:22:19,480 --> 00:22:24,900 Vì vậy, các nhà khai thác tam phân có ba parts-- một điều kiện, 514 00:22:24,900 --> 00:22:27,220 một cái gì đó để làm gì nếu điều kiện đó là sự thật, 515 00:22:27,220 --> 00:22:29,730 và sau đó một cái gì đó để làm nếu điều kiện là sai. 516 00:22:29,730 --> 00:22:33,400 Vì vậy, bạn thấy, về cơ bản, cú pháp đó ở đây. 517 00:22:33,400 --> 00:22:37,792 Chúng tôi có các dấu hỏi, và sau đó the-- những gì chúng ta gọi này? 518 00:22:37,792 --> 00:22:38,750 DAVID Malan: Các đại tràng. 519 00:22:38,750 --> 00:22:39,100 MARIA: Colon. 520 00:22:39,100 --> 00:22:39,599 Cảm ơn bạn. 521 00:22:39,599 --> 00:22:41,880 Lấy làm tiếc. 522 00:22:41,880 --> 00:22:45,800 Vì vậy, chúng ta hãy nhìn vào ví dụ của chúng tôi để xem nếu chúng ta có thể làm cho tinh thần của this-- 523 00:22:45,800 --> 00:22:47,840 class_num == 50. 524 00:22:47,840 --> 00:22:52,580 Vì vậy, ở đây chúng ta thấy toán tử của chúng tôi == mà so sánh sự biến class_num 525 00:22:52,580 --> 00:22:53,100 đến 50. 526 00:22:53,100 --> 00:22:55,150 Vì vậy, các cửa hàng class_num một số nguyên. 527 00:22:55,150 --> 00:22:58,180 Và nếu số nguyên bằng 50, sau đó chúng tôi 528 00:22:58,180 --> 00:23:02,810 đi để lưu trữ "David Malan" bên trong các giáo sư chuỗi. 529 00:23:02,810 --> 00:23:05,912 Nếu số lượng lớp không bằng 50, "không phải David Malan" 530 00:23:05,912 --> 00:23:07,120 là có được các giáo sư. 531 00:23:07,120 --> 00:23:08,630 >> DAVID Malan: Cảm ơn bạn. 532 00:23:08,630 --> 00:23:12,110 Và do đó, điều này dường như tương đương với những gì, bạn sẽ nói, ở cái nhìn đầu tiên? 533 00:23:12,110 --> 00:23:17,930 534 00:23:17,930 --> 00:23:19,960 >> MARIA: Để tôi nó có vẻ if-else như báo cáo. 535 00:23:19,960 --> 00:23:20,709 >> DAVID Malan: Yeah. 536 00:23:20,709 --> 00:23:24,020 Và trên thực tế, đây là loại của một khá lót, 537 00:23:24,020 --> 00:23:27,520 vậy để nói chuyện, để thực hiện chính xác logic của if-else 538 00:23:27,520 --> 00:23:29,010 nhưng làm tất cả mọi thứ trong một bước. 539 00:23:29,010 --> 00:23:29,860 >> MARIA: Chính xác. 540 00:23:29,860 --> 00:23:30,360 Yeah. 541 00:23:30,360 --> 00:23:33,520 Vì vậy, nếu báo cáo khác có thể- mất rất nhiều không gian. 542 00:23:33,520 --> 00:23:36,283 Họ có thể là quá dài cho một cái gì đó đơn giản như này. 543 00:23:36,283 --> 00:23:38,350 Vì vậy, đây có thể rất gọn gàng và rất đẹp. 544 00:23:38,350 --> 00:23:40,880 545 00:23:40,880 --> 00:23:46,820 Vì vậy, bây giờ chúng ta đang đi vào nhìn thực hiện một cái gì đó một lần nữa và một lần nữa, 546 00:23:46,820 --> 00:23:50,060 để kiểm tra cho một điều kiện nhiều lần 547 00:23:50,060 --> 00:23:53,510 và sau đó tiếp tục làm một cái gì đó trong khi điều kiện đó là sự thật. 548 00:23:53,510 --> 00:23:56,740 Vì vậy, điều này mang lại cho chúng tôi độc đáo vào vòng trong khi. 549 00:23:56,740 --> 00:23:59,270 >> Ở bên trái, chúng ta có vòng lặp trong khi đầu của chúng tôi. 550 00:23:59,270 --> 00:24:03,840 Vì vậy, trong khi một cái gì đó là sự thật, làm điều gì đó một lần nữa và một lần nữa. 551 00:24:03,840 --> 00:24:08,850 Vì vậy, hãy chắc chắn để nhận thấy rằng chúng tôi điều kiện ở đây được xác nhận ở đầu trang. 552 00:24:08,850 --> 00:24:14,150 Trong khi với loop-- thứ hai của chúng tôi, chúng tôi gọi rằng một do-while loop-- chúng tôi làm điều gì đó, 553 00:24:14,150 --> 00:24:15,890 sau đó chúng tôi kiểm tra một điều kiện. 554 00:24:15,890 --> 00:24:17,980 Và nếu điều kiện tiếp tục là sự thật, 555 00:24:17,980 --> 00:24:20,150 chúng tôi quay trở lại và làm điều nữa. 556 00:24:20,150 --> 00:24:23,360 Vì vậy, sự khác biệt chính là nơi điều kiện được kiểm tra. 557 00:24:23,360 --> 00:24:29,260 Và các mã có thể không bao giờ có thực thi nếu điều kiện không phải là 558 00:24:29,260 --> 00:24:30,430 đúng với các vòng lặp while. 559 00:24:30,430 --> 00:24:33,050 Trong khi với các do-while vòng lặp, chúng ta có mã 560 00:24:33,050 --> 00:24:35,380 mà luôn luôn được thực hiện ít nhất một lần. 561 00:24:35,380 --> 00:24:37,470 Và sau đó trong khi điều kiện tiếp tục là sự thật, 562 00:24:37,470 --> 00:24:39,960 chúng ta có thể quay trở lại và lặp lại bên trong. 563 00:24:39,960 --> 00:24:43,625 Vậy tại sao bạn nghĩ rằng chúng ta sẽ sử dụng một do-while lặp trên một vòng lặp trong khi? 564 00:24:43,625 --> 00:24:48,221 565 00:24:48,221 --> 00:24:48,720 Bên phải. 566 00:24:48,720 --> 00:24:52,600 Vì vậy, nếu chúng ta muốn nhắc nhở người sử dụng cho một số loại đầu vào, 567 00:24:52,600 --> 00:24:55,400 nếu chúng ta muốn hỏi họ để nhập tên của họ, 568 00:24:55,400 --> 00:24:57,342 chúng tôi muốn ít nhất là yêu cầu họ một lần. 569 00:24:57,342 --> 00:24:59,050 Và nếu họ nhập tên đó, chúng tôi không 570 00:24:59,050 --> 00:25:00,740 sẽ yêu cầu họ một lần nữa bởi vì chúng tôi đã biết nó. 571 00:25:00,740 --> 00:25:02,656 Nhưng nếu họ không nhập Tên của họ, hoặc nếu họ 572 00:25:02,656 --> 00:25:05,787 nhập một cái gì đó rõ ràng không phải là một tên, 573 00:25:05,787 --> 00:25:08,120 chúng tôi vẫn muốn tiếp tục yêu cầu họ về tên của chúng. 574 00:25:08,120 --> 00:25:10,710 >> DAVID Malan: Và trong bài giảng của chúng tôi đã có một như thế này với các chiều hướng tích cực int 575 00:25:10,710 --> 00:25:13,550 Ví dụ, nếu không có gì để kiểm tra lúc đầu bởi vì bạn có thậm chí không 576 00:25:13,550 --> 00:25:14,190 nhận một int. 577 00:25:14,190 --> 00:25:16,680 Vì vậy, chúng tôi muốn làm this-- nhận được một int từ user-- 578 00:25:16,680 --> 00:25:18,860 sau đó kiểm tra xem nó, có lẽ, một lần nữa và một lần nữa và một lần nữa. 579 00:25:18,860 --> 00:25:21,030 >> MARIA: Chính xác. 580 00:25:21,030 --> 00:25:22,060 Đối với loops-- OK. 581 00:25:22,060 --> 00:25:25,842 Đối với các vòng lặp có thể cho phép chúng ta làm hầu như chính xác những điều tương tự, là tốt. 582 00:25:25,842 --> 00:25:27,300 Nó thực sự là một điều chính xác. 583 00:25:27,300 --> 00:25:30,190 Vì vậy, không có gì mà bạn có thể làm với cho vòng 584 00:25:30,190 --> 00:25:32,840 rằng bạn sẽ không thể để làm với các vòng trong khi. 585 00:25:32,840 --> 00:25:36,900 Nhưng đối với các vòng lặp có thể có vẻ một chút chút phức tạp hơn cú pháp 586 00:25:36,900 --> 00:25:39,730 bởi vì họ có ba bộ phận bên trong những gì 587 00:25:39,730 --> 00:25:42,990 là trước khi chỉ điều kiện với các vòng trong khi. 588 00:25:42,990 --> 00:25:48,260 Vì vậy, phần đầu tiên mà bạn biển, trái nhất, chúng tôi có "int lùn = 0." 589 00:25:48,260 --> 00:25:51,490 Vì vậy, đây là nơi mà chúng ta khởi tạo biến của chúng tôi. 590 00:25:51,490 --> 00:25:55,210 >> Sau đó, chúng ta có một dấu chấm phẩy và "người lùn <7." 591 00:25:55,210 --> 00:25:57,100 Vì vậy, đây là nơi ra điều kiện thực tế. 592 00:25:57,100 --> 00:26:00,170 Vì vậy, đó là những gì chúng ta sẽ có đặt chỉ trong khi loop-- 593 00:26:00,170 --> 00:26:01,880 "trong khi người lùn <7." 594 00:26:01,880 --> 00:26:05,380 Ở đây, mà đi trong giữa cho chúng tôi loop. 595 00:26:05,380 --> 00:26:07,190 Vì vậy, "dwaves <7." 596 00:26:07,190 --> 00:26:11,350 Và sau đó phần cuối cùng của chúng tôi là "người lùn ++" đó là nơi mà chúng tôi cập nhật biến của chúng tôi. 597 00:26:11,350 --> 00:26:15,470 Vì vậy, điều quan trọng để nhận ra được rằng điều này 598 00:26:15,470 --> 00:26:22,010 sẽ đi qua này cho vòng lặp bảy lần và thực hiện bảy lần. 599 00:26:22,010 --> 00:26:24,020 Vì vậy, chúng tôi có bảy người lùn, và tất cả chúng 600 00:26:24,020 --> 00:26:26,020 sẽ nói, "Tôi ở đây để giúp bạn, Bạch Tuyết " 601 00:26:26,020 --> 00:26:28,860 bởi vì họ đã sẵn sàng để giúp đỡ Bạch Tuyết. 602 00:26:28,860 --> 00:26:33,600 >> Với các vòng lặp while, chúng tôi đã có thể làm việc khởi tạo và cập nhật 603 00:26:33,600 --> 00:26:37,490 không phải bên trong tình trạng này, một lần nữa, nhưng trước hoặc bên trong vòng lặp while 604 00:26:37,490 --> 00:26:40,210 để đảm bảo rằng we-- vì chúng ta luôn cần những bộ phận. 605 00:26:40,210 --> 00:26:42,835 Vì vậy, để đảm bảo rằng chúng tôi có họ, chúng tôi sẽ vẫn đã thêm họ 606 00:26:42,835 --> 00:26:44,580 trên, chỉ cần không phải bên trong dấu ngoặc đơn. 607 00:26:44,580 --> 00:26:47,288 >> DAVID Malan: Và như vậy có vẻ like-- trong bài giảng, ví dụ, 608 00:26:47,288 --> 00:26:50,250 Tôi gần như luôn luôn sử dụng, như thế, tôi và n và các biến khá nhàm chán. 609 00:26:50,250 --> 00:26:53,050 Dường như bạn có thể sử dụng nhiều hơn khéo léo đặt tên biến, quá. 610 00:26:53,050 --> 00:26:56,300 >> MARIA: Yeah, nó thực sự rất đẹp sử dụng các biến mô tả nhiều hơn một chút 611 00:26:56,300 --> 00:26:59,400 vì đặc biệt là nếu một người nào khác là đọc code-- của bạn có thể bạn đang học lớp 612 00:26:59,400 --> 00:27:00,940 hoặc nếu bạn đang cộng tác với ai đó-- 613 00:27:00,940 --> 00:27:03,481 bạn muốn chắc chắn rằng họ hiểu những gì bạn đang làm. 614 00:27:03,481 --> 00:27:05,750 615 00:27:05,750 --> 00:27:06,400 >> ĐƯỢC. 616 00:27:06,400 --> 00:27:11,435 Vì vậy, đây là một cái gì đó rất funky-- cho vòng lặp bên trong một vòng lặp for. 617 00:27:11,435 --> 00:27:13,060 Tôi không biết nếu chúng tôi đã nhìn thấy điều này trước khi. 618 00:27:13,060 --> 00:27:13,830 Chắc là không. 619 00:27:13,830 --> 00:27:17,750 Nhưng chúng tôi thực sự có thể có this-- vì vậy thay vì vòng vòng. 620 00:27:17,750 --> 00:27:25,130 Vì vậy, không ai muốn có thể đi bộ tôi qua những gì đang xảy ra ở đây? 621 00:27:25,130 --> 00:27:28,240 622 00:27:28,240 --> 00:27:29,490 DAVID Malan: Tôi sẽ lấy một đâm. 623 00:27:29,490 --> 00:27:29,970 MARIA: Cool. 624 00:27:29,970 --> 00:27:30,636 DAVID Malan: OK. 625 00:27:30,636 --> 00:27:34,690 Vì vậy, spoiler-- chúng ta muốn in những thứ đó là ở góc phải bên dưới 626 00:27:34,690 --> 00:27:35,190 chỗ đó. 627 00:27:35,190 --> 00:27:35,450 >> MARIA: Đúng vậy. 628 00:27:35,450 --> 00:27:35,710 Yeah, yeah. 629 00:27:35,710 --> 00:27:38,043 >> DAVID Malan: Vì vậy, chúng tôi đã chỉ đặt mà đầu ra mẫu đó. 630 00:27:38,043 --> 00:27:42,590 Vì vậy, tôi có thể suy ra từ vòng lặp trên cùng mà bạn 631 00:27:42,590 --> 00:27:45,680 iterating trên các hàng vòng ngoài cùng, vậy để nói chuyện. 632 00:27:45,680 --> 00:27:48,107 Và bạn đang iterating trên cột với các vòng lặp trong cùng. 633 00:27:48,107 --> 00:27:50,190 Và trực giác, điều này nên hy vọng làm cho tinh thần 634 00:27:50,190 --> 00:27:52,070 bởi vì theo tính chất của mỗi chương trình chúng tôi đã nhìn thấy 635 00:27:52,070 --> 00:27:55,570 trước, printf, đó là chức năng, chúng tôi đang sử dụng, cuối cùng, 636 00:27:55,570 --> 00:27:58,190 có khả năng in các công cụ ra về cơ bản theo từng dòng. 637 00:27:58,190 --> 00:27:59,960 Giống như, một khi bạn đã xuất ra một dòng mới, có 638 00:27:59,960 --> 00:28:02,876 không tăng gấp đôi lại và in ấn một cái gì đó cao hơn trong màn hình, ít nhất 639 00:28:02,876 --> 00:28:04,530 không sử dụng printf như thế này. 640 00:28:04,530 --> 00:28:07,750 >> Và như vậy trong vấn đề đó, nó làm cho cảm giác rằng các vòng ngoài cùng 641 00:28:07,750 --> 00:28:10,930 nên đề cập đến các hàng bởi vì đối với từng đưa hàng, 642 00:28:10,930 --> 00:28:13,650 bạn sẽ muốn in ra XXXXX, và sau đó 643 00:28:13,650 --> 00:28:15,520 chuyển sang dòng kế tiếp, XXXXX. 644 00:28:15,520 --> 00:28:17,317 Vì vậy, hàng đến trước. 645 00:28:17,317 --> 00:28:19,150 Và sau đó trong mỗi hàng, bạn in các cột. 646 00:28:19,150 --> 00:28:21,160 Nếu bạn đã cố gắng để làm điều đó ngược lại, nó có lẽ sẽ không 647 00:28:21,160 --> 00:28:21,690 đi ra như bạn có ý định. 648 00:28:21,690 --> 00:28:22,190 >> MARIA: Yeah. 649 00:28:22,190 --> 00:28:24,950 Chúng tôi chỉ có thể không quay trở lại các dòng trước đó với printf. 650 00:28:24,950 --> 00:28:27,658 >> DAVID Malan: Và điều thú vị mỗi trò chuyện hôm nay về phạm vi, 651 00:28:27,658 --> 00:28:31,600 thực sự, là hàng là một int đó là tuyên bố trong vòng lặp trên cùng. 652 00:28:31,600 --> 00:28:34,030 Nhưng nhận thấy rằng nó vẫn là bên trong, có thể nói, 653 00:28:34,030 --> 00:28:35,982 các dấu ngoặc nhọn mà ngay lập tức làm theo, 654 00:28:35,982 --> 00:28:38,440 mặc dù nó không phải kỹ thuật trong những dấu ngoặc nhọn. 655 00:28:38,440 --> 00:28:41,750 Vì vậy, hàng nằm trong phạm vi cho toàn bộ các đoạn mã, 656 00:28:41,750 --> 00:28:44,690 cả bên trong bên ngoài cho vòng lặp và bên trong của các bên trong vòng lặp for. 657 00:28:44,690 --> 00:28:48,050 Nhưng ngược lại, ở đâu là cột trong phạm vi? 658 00:28:48,050 --> 00:28:49,810 Cột biến? 659 00:28:49,810 --> 00:28:51,310 Yeah, chỉ trong vòng lặp bên trong. 660 00:28:51,310 --> 00:28:54,280 Và đó là OK, vì chúng ta không truy cập nó bên ngoài dấu ngoặc nhọn của nó. 661 00:28:54,280 --> 00:28:57,280 Tất cả chúng tôi làm là in ra một mới dòng ở cuối rất có. 662 00:28:57,280 --> 00:28:58,670 Vì vậy mà trong thực tế là OK. 663 00:28:58,670 --> 00:29:03,740 >> Vì vậy, điều này có tác, có vẻ như, làm ba hàng và bốn cột. 664 00:29:03,740 --> 00:29:04,370 >> MARIA: Đúng vậy. 665 00:29:04,370 --> 00:29:06,270 Vì vậy, đầu tiên chúng tôi đi qua hàng đầu tiên của chúng tôi. 666 00:29:06,270 --> 00:29:10,520 Và chỉ trong hàng đầu tiên của chúng tôi, chúng tôi làm việc bốn cột bên trong hàng đầu tiên. 667 00:29:10,520 --> 00:29:11,980 Vì vậy, chúng tôi in ra bốn của X. 668 00:29:11,980 --> 00:29:15,800 Và sau đó chúng ta có thể thoát khỏi vòng lặp for, kể từ chúng tôi đã in ra bốn của X. 669 00:29:15,800 --> 00:29:17,100 Và chúng tôi in một dòng mới. 670 00:29:17,100 --> 00:29:19,920 Và sau đó chúng tôi đi qua cùng một quá trình cho hai hàng hơn 671 00:29:19,920 --> 00:29:21,170 để thực hiện tổng cộng ba. 672 00:29:21,170 --> 00:29:23,530 >> DAVID Malan: Và nó đáng chú ý đó là chỉ là một tạo tác của font, thực tế 673 00:29:23,530 --> 00:29:25,680 rằng sản lượng mẫu dường như cao hơn rất nhiều, 674 00:29:25,680 --> 00:29:27,520 như thể có nhiều hơn hàng hơn cột. 675 00:29:27,520 --> 00:29:29,824 Nhưng đó chỉ là vì X là cao hơn nó là rộng. 676 00:29:29,824 --> 00:29:32,740 Đó là tất cả những gì xảy ra ở đó, cộng với những khoảng trắng giữa các dòng. 677 00:29:32,740 --> 00:29:33,281 >> MARIA: Đúng vậy. 678 00:29:33,281 --> 00:29:34,792 Mát. 679 00:29:34,792 --> 00:29:35,750 DAVID Malan: Tất cả các quyền. 680 00:29:35,750 --> 00:29:39,830 Vì vậy, một cái nhìn nhanh chóng vào vấn đề thiết lập một, có bất kỳ câu hỏi, và sau đó hoãn? 681 00:29:39,830 --> 00:29:40,330 Được rồi. 682 00:29:40,330 --> 00:29:43,164 Vì vậy, trong vấn đề thiết lập một trong, có ba thách thức chính, cuối cùng. 683 00:29:43,164 --> 00:29:44,955 Nhưng trước tiên, bạn sẽ tìm thấy rằng vấn đề đặt 684 00:29:44,955 --> 00:29:47,900 đặc điểm kỹ thuật, như với nhiều người psets vào mùa thu này, sẽ hướng dẫn bạn 685 00:29:47,900 --> 00:29:50,691 thông qua một vài bài tập khởi động, chỉ cho bạn ra một vài tài nguyên 686 00:29:50,691 --> 00:29:52,440 mà bạn có thể hoặc có thể không đã thấy rồi. 687 00:29:52,440 --> 00:29:54,440 Ví dụ, CS50 có một bộ quần short, 688 00:29:54,440 --> 00:29:56,481 đó là những đoạn video ngắn, không giống như này, nhưng điều đó 689 00:29:56,481 --> 00:29:58,460 là specific-- rất chủ đề có lẽ khoảng năm phút, 690 00:29:58,460 --> 00:30:02,360 10 phút trong chiều dài trên các vòng hoặc về điều kiện hoặc trên các thuật toán 691 00:30:02,360 --> 00:30:04,125 hoặc sau này hơn chủ đề nâng cao, là tốt. 692 00:30:04,125 --> 00:30:06,000 Và chúng ta thường nhúng những thành vấn đề 693 00:30:06,000 --> 00:30:07,950 bộ để sinh viên có một nguồn lực mà 694 00:30:07,950 --> 00:30:10,840 để xem xét liệu có thể có đã đưa ra trong bài giảng hay phần. 695 00:30:10,840 --> 00:30:13,220 Nhưng cách này đó là tập trung hơn và nhiều hơn nữa trong tầm tay của họ. 696 00:30:13,220 --> 00:30:15,928 >> Chúng tôi cũng có xu hướng để nhúng vào vấn đề đặt điều được gọi là walkthrough. 697 00:30:15,928 --> 00:30:20,790 Vì vậy, gần như tất cả các ví dụ tôi làm trong bài giảng, trên sân khấu ở đây, chúng tôi cũng 698 00:30:20,790 --> 00:30:24,565 đã bắn vào máy ảnh trong tiến chậm hơn một nhiều hơn, 699 00:30:24,565 --> 00:30:28,760 một hướng thân mật hơn bởi tôi trên máy tính xách tay của tôi về code đó, từng dòng 700 00:30:28,760 --> 00:30:31,427 vì vậy mà trong lớp, chúng ta thường sẽ thấy đọc lướt qua một cái gì đó hoặc ai đó 701 00:30:31,427 --> 00:30:33,260 sẽ xen vào với một trả lời cho một câu hỏi. 702 00:30:33,260 --> 00:30:35,820 Nhưng nó không nhất thiết phải chìm ở cho mọi người trong khán giả. 703 00:30:35,820 --> 00:30:38,230 Vì vậy, bạn sẽ tìm thấy mã walkthroughs cho hầu hết các ví dụ 704 00:30:38,230 --> 00:30:40,950 rằng chúng ta làm ở đây trong bài giảng để bạn có thể đi bộ qua nó ở tốc độ của riêng của bạn 705 00:30:40,950 --> 00:30:43,580 và tua lại hoặc nhanh chóng chuyển tiếp hoặc bỏ qua hoàn toàn, nếu bạn muốn. 706 00:30:43,580 --> 00:30:45,356 >> Thường có một vài câu hỏi ấm-up 707 00:30:45,356 --> 00:30:47,105 yêu cầu bạn sắp xếp của củng cố tài liệu này 708 00:30:47,105 --> 00:30:50,250 và chắc chắn rằng bạn đang thoải mái trước bạn tiến hành với phần còn lại của pset. 709 00:30:50,250 --> 00:30:51,700 Và sau đó, tất nhiên, có các pset chính nó. 710 00:30:51,700 --> 00:30:53,450 Và một trong những điều chúng tôi rất cố tình 711 00:30:53,450 --> 00:30:57,202 làm trong CS50 là hầu hết không thú hay lý trí không thú 712 00:30:57,202 --> 00:30:58,910 bước cơ khí bạn có thể phải làm 713 00:30:58,910 --> 00:31:00,519 hầu như luôn luôn rất tốt tài liệu. 714 00:31:00,519 --> 00:31:03,560 Trong suốt nhiệm kỳ, chúng tôi sẽ bắt đầu đặt câu hỏi tu từ hơn 715 00:31:03,560 --> 00:31:06,187 như nhớ làm thế nào để làm điều này hay không? 716 00:31:06,187 --> 00:31:08,520 Nhưng nói chung, bạn sẽ tìm thấy rằng các bài tập giúp bạn 717 00:31:08,520 --> 00:31:10,269 thông qua các cơ chế của một cái gì đó để 718 00:31:10,269 --> 00:31:14,160 những thách thức về trí tuệ thú vị được cuối cùng để cho các bạn học sinh. 719 00:31:14,160 --> 00:31:17,390 >> Với mà nói, Zamyla, người mà chúng tôi giữ đề cập ngày hôm nay trong bài giảng, 720 00:31:17,390 --> 00:31:20,190 là một trong những nhân viên lâu năm của chúng tôi thành viên cũng là người nắm giữ walkthroughs 721 00:31:20,190 --> 00:31:24,520 về các vấn đề cụ thể như pset mario và tham lam, mặc dù không phải tưới nước trong năm nay. 722 00:31:24,520 --> 00:31:26,540 Và đó là trong những walkthroughs rằng cô thường xuyên 723 00:31:26,540 --> 00:31:29,450 cung cấp một số mẹo và thủ thuật cho cách thức tiến hành, không bao giờ nói với bạn 724 00:31:29,450 --> 00:31:31,810 chính xác phải làm gì, nhưng rather-- như một điều kiện, 725 00:31:31,810 --> 00:31:35,200 nếu bạn will-- đem lại cho bạn ít nhất một vài ý tưởng để nó vào bạn, 726 00:31:35,200 --> 00:31:37,830 cuối cùng, quyết định làm thế nào để tiếp cận họ. 727 00:31:37,830 --> 00:31:41,200 >> MARIA: Phân loại các giống như một cấp cao hiểu biết về logic của những gì 728 00:31:41,200 --> 00:31:42,220 chúng tôi đang yêu cầu bạn phải làm. 729 00:31:42,220 --> 00:31:42,485 >> DAVID Malan: Chính xác. 730 00:31:42,485 --> 00:31:44,190 Và, trên thực tế, Zamyla của walkthrough có nghĩa là 731 00:31:44,190 --> 00:31:46,190 để trả lời thường xuyên hỏi câu hỏi về nơi 732 00:31:46,190 --> 00:31:48,610 làm tôi bắt đầu, đặc biệt là khi các thông số kỹ thuật dài là 733 00:31:48,610 --> 00:31:51,960 một ít khó khăn cho tất cả các văn bản và hình ảnh mà họ có trong chúng. 734 00:31:51,960 --> 00:31:54,890 >> Vì vậy water.c, bạn sẽ tìm thấy sau khi bạn đã hoàn thành nó, 735 00:31:54,890 --> 00:31:56,920 thực sự là tương đối đơn giản. 736 00:31:56,920 --> 00:31:58,882 Hoàn toàn là một bó của bạn sẽ đập 737 00:31:58,882 --> 00:32:01,840 đầu của bạn chống lại các bức tường cố gắng để tìm ra lý do tại sao nó không phải biên dịch 738 00:32:01,840 --> 00:32:03,450 hoặc lý do tại sao nó không chạy một cách chính xác. 739 00:32:03,450 --> 00:32:05,040 Nhưng một khi bạn đã hoàn tất với nó và một khi bạn đã 740 00:32:05,040 --> 00:32:07,620 đã dành một số thời gian vật lộn với bất kỳ các lỗi mà bạn có thể có, 741 00:32:07,620 --> 00:32:09,490 bạn sẽ thấy rằng nó là một chương trình rất ngắn. 742 00:32:09,490 --> 00:32:11,770 Nó có thể được thực hiện chỉ trong một vài dòng mã, hầu hết trong số đó 743 00:32:11,770 --> 00:32:15,030 chúng tôi đã nhìn thấy ở đây trong bài giảng đã có, nếu bạn lắp ráp các khối xây dựng ngay. 744 00:32:15,030 --> 00:32:16,810 >> Và như chúng tôi đề nghị ở đây, nó sẽ hỏi 745 00:32:16,810 --> 00:32:22,250 bạn xác định có bao nhiêu phút một người nào đó đang tắm trong khuôn viên trường. 746 00:32:22,250 --> 00:32:24,779 Chúng tôi xác định trong các vấn đề thiết lập tốc độ của dòng chảy của nước 747 00:32:24,779 --> 00:32:27,320 trong, giống như, một buồng tắm vòi sen với dòng chảy thấp đầu, giống như các clip Seinfeld 748 00:32:27,320 --> 00:32:29,180 chúng ta thấy ngày hôm qua hay ngược lại chúng. 749 00:32:29,180 --> 00:32:30,971 Và sau đó bạn chỉ cần có để làm một chút về toán học, 750 00:32:30,971 --> 00:32:34,710 really-- số học sử dụng C để nói chúng ta có bao nhiêu, khoảng, chai nước 751 00:32:34,710 --> 00:32:37,720 là tương đương nếu chúng tôi lấy vòi hoa sen n phút. 752 00:32:37,720 --> 00:32:41,389 >> Bây giờ, trong mario.c, điều này sẽ là một chương trình dài hơn một chút. 753 00:32:41,389 --> 00:32:42,930 Nó vẫn không có được điều này từ lâu. 754 00:32:42,930 --> 00:32:45,130 Chỉ cần một vài dòng dài hơn water.c. 755 00:32:45,130 --> 00:32:48,230 Nhưng nó sẽ là cơ hội để tái tạo các trường học cũ Mario 756 00:32:48,230 --> 00:32:50,670 kim tự tháp từ Super Mario Brothers hoặc một số ngày tiếp theo. 757 00:32:50,670 --> 00:32:53,510 Nó sẽ không nhìn như đẹp hơn hoặc như nhiều màu sắc như ai ở đó. 758 00:32:53,510 --> 00:32:56,468 Chúng tôi sẽ chỉ sử dụng hashtags chút như chúng tôi có ở đây trên màn hình 759 00:32:56,468 --> 00:32:58,120 sử dụng văn bản ASCII. 760 00:32:58,120 --> 00:33:00,362 Nhưng nó sẽ gần bằng ý tưởng tương tự. 761 00:33:00,362 --> 00:33:02,570 Và nó sẽ là một tập thể dục mà ở cái nhìn đầu tiên 762 00:33:02,570 --> 00:33:04,720 có vẻ khá simple-- chỉ in một kim tự tháp đơn giản. 763 00:33:04,720 --> 00:33:07,345 Nhưng có một vài đặc điểm đây mà là thú vị. 764 00:33:07,345 --> 00:33:12,400 Chú ý rằng các cạnh ngoài cùng bên phải của kim tự tháp thực sự có chiều rộng hai. 765 00:33:12,400 --> 00:33:14,570 Vì vậy, có hai bằng cột chiều cao, mà 766 00:33:14,570 --> 00:33:16,804 làm cho nó đòi hỏi một chút chút suy nghĩ để làm cho 767 00:33:16,804 --> 00:33:19,720 chắc chắn bạn sẽ có được đó chính xác, như trái ngược với chỉ một góc hoàn hảo 768 00:33:19,720 --> 00:33:20,220 dòng. 769 00:33:20,220 --> 00:33:23,340 Vì vậy, đó là một chút của một trường hợp góc nhưng phù hợp với trò chơi thực tế. 770 00:33:23,340 --> 00:33:27,610 >> Và nó cũng không rõ ràng lúc đầu nhìn như thế nào để in các khoảng trắng. 771 00:33:27,610 --> 00:33:29,430 Vì vậy, khi tôi nhìn vào mẫu đầu ra here-- 772 00:33:29,430 --> 00:33:32,440 và nó cũng có trong spec-- nó loại trông giống như một hình chữ nhật, 773 00:33:32,440 --> 00:33:35,120 nhưng một đường chéo của hình chữ nhật đã được cắt nhỏ ra, 774 00:33:35,120 --> 00:33:37,320 và nó chỉ là không gian màu trắng, vậy để nói chuyện. 775 00:33:37,320 --> 00:33:40,100 Và do đó, một hỏi thường gặp Câu hỏi ở đây là luôn luôn, tốt, 776 00:33:40,100 --> 00:33:43,302 làm thế nào để di chuyển các hashtags qua bên phải? 777 00:33:43,302 --> 00:33:44,760 Hoặc làm thế nào để tôi in các chỗ trống? 778 00:33:44,760 --> 00:33:46,860 Và nó thực sự dễ dàng hơn so với hầu hết học sinh suy nghĩ. 779 00:33:46,860 --> 00:33:47,360 Bên phải? 780 00:33:47,360 --> 00:33:51,620 Bạn có thể gần nó trực quan bằng cách chỉ nhấn thanh không gian một lần hoặc hai lần 781 00:33:51,620 --> 00:33:52,700 hoặc ba lần. 782 00:33:52,700 --> 00:33:56,260 >> Và do đó, mặc dù với printf chúng tôi gần như luôn luôn in ra một chuỗi hoặc một int 783 00:33:56,260 --> 00:33:59,950 hoặc một từ như "hello, thế giới "hay một loạt các từ ngữ, 784 00:33:59,950 --> 00:34:03,560 bạn cũng có thể chỉ cần in quote, không gian, unquote. 785 00:34:03,560 --> 00:34:06,320 Và đó sẽ thực sự cung cấp bạn một không gian trắng đó. 786 00:34:06,320 --> 00:34:08,330 Vì vậy, giữ cho rằng trong tâm trí và không overthink này. 787 00:34:08,330 --> 00:34:10,570 Bạn thực sự phải quyết định từng hàng của hàng, 788 00:34:10,570 --> 00:34:14,280 không giống như ví dụ của bạn một thời điểm trước đây, bao nhiêu người 789 00:34:14,280 --> 00:34:18,420 cột này phải là không gian màu trắng và bao nhiêu người trong số họ phải được hashtags. 790 00:34:18,420 --> 00:34:21,560 Nó sẽ mất một chút thời gian, nhưng nó cuối cùng là một câu đố logic của các loại. 791 00:34:21,560 --> 00:34:22,060 >> MARIA: Yeah. 792 00:34:22,060 --> 00:34:25,060 Nhưng logic đi từng hàng sẽ là rất hữu ích ở đây. 793 00:34:25,060 --> 00:34:25,810 DAVID Malan: Yeah. 794 00:34:25,810 --> 00:34:28,976 Tôi nghĩ rằng các mẫu mã bạn gave-- thậm chí mặc dù nó không phải là một chương trình hoàn chỉnh. 795 00:34:28,976 --> 00:34:34,247 Bạn vẫn cần int và chính hiệu và #include stdio.h, 796 00:34:34,247 --> 00:34:35,580 rất nhiều các công cụ từ bài giảng. 797 00:34:35,580 --> 00:34:37,629 Nhưng các khối xây dựng dường như là có. 798 00:34:37,629 --> 00:34:39,920 Và rồi cuối cùng là một cái gì đó nhiều hơn một chút thuật toán. 799 00:34:39,920 --> 00:34:43,210 Vì vậy, nó chỉ ra rằng bất cứ lúc nào bạn đi vào CVS hoặc bất kỳ cửa hàng tiện lợi 800 00:34:43,210 --> 00:34:47,810 và ai đó đưa cho bạn tại hóa đơn thu ngân hoặc tiền xu khi thay đổi, 801 00:34:47,810 --> 00:34:50,620 nó quay ra rằng họ, con người, dù có hoặc không có biết hay không, 802 00:34:50,620 --> 00:34:53,300 được thể sử dụng những gì được gọi là một thuật toán tham lam, 803 00:34:53,300 --> 00:34:58,170 theo đó, nếu bạn đang còn nợ, nói, $ 21 trong sự thay đổi vì một số lý do 804 00:34:58,170 --> 00:35:01,580 bạn mua một cái gì đó rất rẻ tiền với một hóa đơn rất lớn tại CVS, 805 00:35:01,580 --> 00:35:05,910 nó sẽ thực sự gây phiền nhiễu nếu thu ngân đưa cho bạn 21 đĩa đơn hay tồi tệ hơn 806 00:35:05,910 --> 00:35:07,629 nào, một toàn bộ rất nhiều tiền xu. 807 00:35:07,629 --> 00:35:10,670 Thay vào đó, những gì một người là hợp lý có lẽ sẽ làm là họ đang đi 808 00:35:10,670 --> 00:35:14,224 để lấy một $ 20 và sau đó là một $ 1 hóa đơn, và tay bạn chỉ là hai hóa đơn trong trường hợp đó. 809 00:35:14,224 --> 00:35:17,390 MARIA: Vì vậy, họ đang tìm cách giảm thiểu sự thay đổi mà họ cung cấp lại cho bạn. 810 00:35:17,390 --> 00:35:17,850 DAVID Malan: Chính xác. 811 00:35:17,850 --> 00:35:19,540 Và cùng thỏa thuận với tiền xu, là tốt. 812 00:35:19,540 --> 00:35:23,040 Nếu bạn đang nợ, nói, $ 0.50, hy vọng bạn không muốn 50 đồng xu. 813 00:35:23,040 --> 00:35:25,500 Thay vào đó bạn muốn hai quý, ví dụ. 814 00:35:25,500 --> 00:35:27,540 Bây giờ, điều này giả định mà thủ quỹ có 815 00:35:27,540 --> 00:35:29,940 đủ của tất cả các tôn giáo đó anh hoặc cô ấy có thể muốn cung cấp cho bạn. 816 00:35:29,940 --> 00:35:32,148 Nhưng chúng tôi cho phép bạn giả càng nhiều trong các vấn đề. 817 00:35:32,148 --> 00:35:35,590 Và mục tiêu cuối cùng, là để thực hiện trong mã C một thuật toán tham lam. 818 00:35:35,590 --> 00:35:37,344 Vì vậy, người dùng được phép gõ vào bao nhiêu 819 00:35:37,344 --> 00:35:40,510 thay đổi anh ta hoặc cô ấy đang còn nợ với USD và xu, một số loại điểm nổi 820 00:35:40,510 --> 00:35:41,590 giá trị có thể. 821 00:35:41,590 --> 00:35:45,530 Và sau đó bạn phải làm toán và tìm ra thuật toán, tốt, 822 00:35:45,530 --> 00:35:49,020 bao nhiêu đồng tiền tôi có thể cung cấp bạn tối thiểu để cung cấp cho bạn 823 00:35:49,020 --> 00:35:50,270 chính xác rằng số lượng thay đổi. 824 00:35:50,270 --> 00:35:53,470 Nhưng có sẽ là một vài phần khó hiểu ở đây, phải không? 825 00:35:53,470 --> 00:35:56,236 Giống như có cả vấn đề không rõ ràng. 826 00:35:56,236 --> 00:35:56,860 MARIA: Chính xác. 827 00:35:56,860 --> 00:35:59,114 Vì vậy, điểm nổi giá trị có tính thiếu chính xác. 828 00:35:59,114 --> 00:36:00,780 Chúng ta đã nói về điều này trong bài giảng hôm nay? 829 00:36:00,780 --> 00:36:02,340 >> DAVID Malan: Chúng tôi đã làm việc lần cuối cùng trong bài giảng. 830 00:36:02,340 --> 00:36:03,506 Chúng tôi nói về sự thiếu chính xác. 831 00:36:03,506 --> 00:36:08,840 Và bạn không muốn để lừa người sử dụng bao nhiêu sự thay đổi người đó được nợ. 832 00:36:08,840 --> 00:36:11,290 Và như vậy các hương, trong các vấn đề thiết lập đặc điểm kỹ thuật, 833 00:36:11,290 --> 00:36:15,990 đưa ra một số suy nghĩ, cuối cùng, như để làm thế nào bạn có thể giảm thiểu những sự thiếu chính xác 834 00:36:15,990 --> 00:36:17,280 lỗi, có khả năng. 835 00:36:17,280 --> 00:36:21,050 Nó có thể tránh được, chắc chắn, cho các yếu tố đầu vào, chúng tôi đang nói về. 836 00:36:21,050 --> 00:36:23,590 Và, trên thực tế, pennies-- có lẽ chúng ta sẽ hoãn đến Zamyla, 837 00:36:23,590 --> 00:36:25,136 Tôi nghĩ rằng, đối với các thủ đoạn đó. 838 00:36:25,136 --> 00:36:27,760 Vì vậy, cuối cùng, bạn sẽ tìm thấy một sự tiến triển của các vấn đề trong tuần này, 839 00:36:27,760 --> 00:36:30,700 người đầu tiên trong số đó là khá nhỏ, sau đó trung bình, lớn hơn sau đó một chút. 840 00:36:30,700 --> 00:36:33,200 Nhưng tất cả chúng sử dụng các tòa nhà khối so với tuần vừa qua, 841 00:36:33,200 --> 00:36:35,280 từ supersection này, vấn đề thiết lập đặc điểm kỹ thuật 842 00:36:35,280 --> 00:36:36,710 đặt bạn vào vô số tài nguyên. 843 00:36:36,710 --> 00:36:41,000 Nhưng vẫn còn, nếu ở tất cả đấu tranh, đặc biệt là trong số những người ít thoải mái 844 00:36:41,000 --> 00:36:42,917 không có nền trước, đến giờ văn phòng 845 00:36:42,917 --> 00:36:44,958 vào thứ hai, thứ ba và Thứ tư và thứ năm. 846 00:36:44,958 --> 00:36:46,950 Tới CS50 Thảo luận thông qua website của khóa học, 847 00:36:46,950 --> 00:36:49,080 thông qua đó bạn có thể trò chuyện với đội ngũ nhân viên và các bạn cùng lớp. 848 00:36:49,080 --> 00:36:51,670 >> Nhưng cuối cùng, tôi nghĩ rằng Lời khuyên tốt nhất là chỉ cần bắt đầu sớm. 849 00:36:51,670 --> 00:36:54,711 Nó không phải là loại của lớp đó bạn nên được bắt đầu vào ngày thứ Tư psets 850 00:36:54,711 --> 00:36:56,640 ban đêm, hoặc tệ hơn đêm thứ năm. 851 00:36:56,640 --> 00:36:59,067 >> MARIA: lời khuyên tốt nhất của tôi là đã bắt đầu vào ngày thứ Hai. 852 00:36:59,067 --> 00:36:59,900 DAVID Malan: Thứ Hai. 853 00:36:59,900 --> 00:37:02,490 Vì vậy, nếu bạn không bắt đầu already-- không. 854 00:37:02,490 --> 00:37:04,732 Nhưng thậm chí nếu không thứ hai, sau đó thứ ba. 855 00:37:04,732 --> 00:37:05,690 Càng sớm càng tốt. 856 00:37:05,690 --> 00:37:08,605 Và đó là lý do các Tất nhiên có rất nhiều ngày cuối là 857 00:37:08,605 --> 00:37:10,535 để cung cấp cho bạn một chút của một áp lực tâm lý 858 00:37:10,535 --> 00:37:13,684 để bắt đầu sớm hơn, nhưng vẫn để cho điều trượt khi mọi thứ mất nhiều thời gian 859 00:37:13,684 --> 00:37:14,350 hơn bạn mong đợi. 860 00:37:14,350 --> 00:37:17,950 >> MARIA: Và bạn muốn sử dụng giờ làm việc nhiều như bạn có thể, quá. 861 00:37:17,950 --> 00:37:20,291 >> DAVID Malan: Bất kỳ câu hỏi? 862 00:37:20,291 --> 00:37:20,790 Được rồi. 863 00:37:20,790 --> 00:37:22,930 Vâng, tại sao chúng ta không hoãn lại ở đây? 864 00:37:22,930 --> 00:37:23,487